diff options
author | Richard Guenther <rguenther@suse.de> | 2009-02-02 10:39:12 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-02-02 10:39:12 +0000 |
commit | ab05897240fb27993741138f137dd096d003058e (patch) | |
tree | c781b405cdfc8824dcdde9e62128ca1e411c785d | |
parent | b5bde9fffe38e45c22389867b3b76bd103263d13 (diff) | |
download | gcc-ab05897240fb27993741138f137dd096d003058e.zip gcc-ab05897240fb27993741138f137dd096d003058e.tar.gz gcc-ab05897240fb27993741138f137dd096d003058e.tar.bz2 |
re PR tree-optimization/38937 (dereferencing pointer '<anonymous>' does break strict-aliasing)
2009-02-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/38937
* g++.dg/warn/Wstrict-aliasing-bogus-escape.C: New testcase.
From-SVN: r143864
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C | 30 |
2 files changed, 35 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d504006..249f717 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-02-02 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/38937 + * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: New testcase. + 2009-02-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/39053 diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C new file mode 100644 index 0000000..9ea6198 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C @@ -0,0 +1,30 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -Wstrict-aliasing" } */ + +#include <string> +#include <list> + +class A; + +class B { +public: + void foo(A&); + std::string s; +}; + +class A { +public: + A& qaz() { + l.push_back( new A() ); + return *l.back(); + } + std::list<A*> l; +}; + +void bar() +{ + A a; + B b; + b.foo(a.qaz()); +} + |