From ab05897240fb27993741138f137dd096d003058e Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Mon, 2 Feb 2009 10:39:12 +0000 Subject: [PATCH] re PR tree-optimization/38937 (dereferencing pointer '' does break strict-aliasing) 2009-02-02 Richard Guenther PR tree-optimization/38937 * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: New testcase. From-SVN: r143864 --- gcc/testsuite/ChangeLog | 5 ++++ .../warn/Wstrict-aliasing-bogus-escape.C | 30 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d5040061715..249f717fd4d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-02-02 Richard Guenther + + PR tree-optimization/38937 + * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: New testcase. + 2009-02-01 Paolo Carlini 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 00000000000..9ea61987705 --- /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 +#include + +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 l; +}; + +void bar() +{ + A a; + B b; + b.foo(a.qaz()); +} + -- 2.30.2