diff options
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/cp-gimplify.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wuninitialized-8.C | 18 |
4 files changed, 29 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7ff2827..f98726e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2017-03-03 Richard Biener <rguenther@suse.de> + + PR c++/79825 + * cp-gimplify.c (simple_empty_class_p): Handle EMPTY_CLASS_EXPR. + 2017-03-03 Marek Polacek <polacek@redhat.com> PR c++/79791 diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index 3eec940..ebb5da9 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -549,6 +549,7 @@ simple_empty_class_p (tree type, tree op) return ((TREE_CODE (op) == COMPOUND_EXPR && simple_empty_class_p (type, TREE_OPERAND (op, 1))) + || TREE_CODE (op) == EMPTY_CLASS_EXPR || is_gimple_lvalue (op) || INDIRECT_REF_P (op) || (TREE_CODE (op) == CONSTRUCTOR diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 25450ea..b223ee2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-03-03 Richard Biener <rguenther@suse.de> + + PR c++/79825 + * g++.dg/warn/Wuninitialized-8.C: New testcase. + 2017-03-03 Jakub Jelinek <jakub@redhat.com> * gcc.dg/pr57134.c: Use empty inline asm string literal. diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-8.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-8.C new file mode 100644 index 0000000..cb9cfee --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-8.C @@ -0,0 +1,18 @@ +// { dg-do compile } +// { dg-options "-Wuninitialized" } + +struct A; +struct B +{ + B(A); +}; +struct C +{ + template <typename PassT> void m_fn1(PassT p1) { new B(p1); } // { dg-bogus "uninitialized" } +}; +struct A {}; +void fn1() +{ + C a; + a.m_fn1(A()); +} |