From: Alexandre Oliva Date: Mon, 8 Oct 2007 23:57:20 +0000 (+0000) Subject: re PR tree-optimization/33572 (wrong code with -O) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=90834304e999d7d758dc74849b78b31939478bf8;p=gcc.git re PR tree-optimization/33572 (wrong code with -O) PR tree-optimization/33572 * g++.dg/torture/pr33572.C: Replace with complete test. From-SVN: r129144 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 17060ee1f99..0b1e91610d6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-10-08 Alexandre Oliva + + PR tree-optimization/33572 + * g++.dg/torture/pr33572.C: Replace with complete test. + 2007-10-08 Tobias Schlüter PR fortran/33689 diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C index 27557cd13b8..096db08ff4b 100644 --- a/gcc/testsuite/g++.dg/torture/pr33572.C +++ b/gcc/testsuite/g++.dg/torture/pr33572.C @@ -1,36 +1,16 @@ // { dg-do run } -namespace __gnu_cxx { - template struct __pool { - void _M_reclaim_block(char* p, unsigned long bytes); - }; -} - -struct vector { - ~vector() { deallocate(0); } - void deallocate(int* p) { - if (p) { - static __gnu_cxx::__pool pool; - pool._M_reclaim_block((char*)0, 0); - } - } -}; - -struct Foo { virtual void f() { } }; +#include +#include -struct auto_ptr { - Foo* ptr; - auto_ptr() : ptr(0) { } - ~auto_ptr() { delete ptr; } - Foo* release() { Foo* tmp = ptr; ptr = 0; return tmp; } - void reset(Foo* p) { ptr = p; } -}; +struct Foo { virtual void f() {} }; -int main(int argc, char**) { - auto_ptr foo; +int main(int argc, char**) +{ + std::auto_ptr foo; if (argc) { foo.reset(new Foo()); } else { - vector v; + std::vector v; } Foo* p = foo.release(); p->f();