diff options
author | Richard Biener <rguenther@suse.de> | 2017-03-03 11:30:32 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-03-03 11:30:32 +0000 |
commit | 30d309aaf14343dc0e9f00c9cf37075afdfba905 (patch) | |
tree | d0b6d6c4ff3fbb2224944760ac5c1b3cf5a6f9f1 /gcc | |
parent | 38801de50fdae55232d402838e1fb56842ca6582 (diff) | |
download | gcc-30d309aaf14343dc0e9f00c9cf37075afdfba905.zip gcc-30d309aaf14343dc0e9f00c9cf37075afdfba905.tar.gz gcc-30d309aaf14343dc0e9f00c9cf37075afdfba905.tar.bz2 |
re PR c++/79825 (Uninitialized uses in aggregate copies of empty structs (missed DCE in C++ gimplify))
2017-03-03 Richard Biener <rguenther@suse.de>
PR c++/79825
* cp-gimplify.c (simple_empty_class_p): Handle EMPTY_CLASS_EXPR.
* g++.dg/warn/Wuninitialized-8.C: New testcase.
From-SVN: r245866
Diffstat (limited to 'gcc')
-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()); +} |