This patch fixes a couple of failures of the form:
error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial
type 'struct quadratic_test'; use assignment or value-initialization
instead [-Werror=class-memaccess]
note: 'struct quadratic_test' declared here
cc1plus: all warnings being treated as errors
seen within the jit testsuite, by using zero-initialization instead
of memset.
(presumably introduced by r249234 aka a324786b4ded9047d05463b4bce9d238b6c6b3ef)
Successfully tested on x86_64-pc-linux-gnu; takes jit.sum from:
# of expected passes 9211
# of unexpected failures 2
to:
# of expected passes 9349
Martin: it's unclear to me what the benefit of the warning is for these
cases. AIUI, it's complaining because the code is calling
the default ctor for struct quadratic_test, and then that object is
being clobbered by the memset.
But if I'm reading things right, the default ctor for this struct
zero-initializes all fields. Can't the compiler simply optimize away
the redundant memset, and not issue a warning?
gcc/testsuite/ChangeLog:
PR jit/81144
* jit.dg/test-operator-overloading.cc (make_test_quadratic): Replace
memset call with zero-initialization.
* jit.dg/test-quadratic.cc (make_test_quadratic): Likewise.
---
gcc/testsuite/jit.dg/test-operator-overloading.cc | 3 +--
gcc/testsuite/jit.dg/test-quadratic.cc | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/gcc/testsuite/jit.dg/test-operator-overloading.cc
b/gcc/testsuite/jit.dg/test-operator-overloading.cc
index cbb1e98..f57b3fc 100644
--- a/gcc/testsuite/jit.dg/test-operator-overloading.cc
+++ b/gcc/testsuite/jit.dg/test-operator-overloading.cc
@@ -272,8 +272,7 @@ make_test_quadratic (quadratic_test &testcase)
void
create_code (gcc_jit_context *ctxt, void *user_data)
{
- struct quadratic_test testcase;
- memset (&testcase, 0, sizeof (testcase));
+ struct quadratic_test testcase = {};
testcase.ctxt = ctxt;
make_types (testcase);
make_sqrt (testcase);
diff --git a/gcc/testsuite/jit.dg/test-quadratic.cc
b/gcc/testsuite/jit.dg/test-quadratic.cc
index f347669..61b5cdd 100644
--- a/gcc/testsuite/jit.dg/test-quadratic.cc
+++ b/gcc/testsuite/jit.dg/test-quadratic.cc
@@ -328,8 +328,7 @@ make_test_quadratic (quadratic_test &testcase)
void
create_code (gcc_jit_context *ctxt, void *user_data)
{
- struct quadratic_test testcase;
- memset (&testcase, 0, sizeof (testcase));
+ struct quadratic_test testcase = {};
testcase.ctxt = ctxt;
make_types (testcase);
make_sqrt (testcase);
--
1.8.5.3