diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C')
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C | 30 |
1 files changed, 30 insertions, 0 deletions
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 000000000..9ea619877 --- /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()); +} + |