diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7ff2827e5025..f98726eaf598 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2017-03-03 Richard Biener + + PR c++/79825 + * cp-gimplify.c (simple_empty_class_p): Handle EMPTY_CLASS_EXPR. + 2017-03-03 Marek Polacek PR c++/79791 diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index 3eec9400fb04..ebb5da96f0ab 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 25450eaeb2b0..b223ee24d44d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-03-03 Richard Biener + + PR c++/79825 + * g++.dg/warn/Wuninitialized-8.C: New testcase. + 2017-03-03 Jakub Jelinek * 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 000000000000..cb9cfee6cabc --- /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 void m_fn1(PassT p1) { new B(p1); } // { dg-bogus "uninitialized" } +}; +struct A {}; +void fn1() +{ + C a; + a.m_fn1(A()); +}