diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e543df5d392163058e8ee5f3d424d2d5ef02708d..6b4225351b6d64a29e65ea5a53dca38ddbd2c45d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-09-24 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimzation/17517 + * g++.dg/tree-ssa/pr17517.C: New Test. + 2004-08-24 Nathan Sidwell <nathan@codesourcery.com> PR c++/16889 diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr17517.C b/gcc/testsuite/g++.dg/tree-ssa/pr17517.C new file mode 100644 index 0000000000000000000000000000000000000000..bcd5e91dbae880fbb48936b9a58e0377d129f682 --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/pr17517.C @@ -0,0 +1,32 @@ +// Test PR 17517. Test case provided by Serge Belyshev. + + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + + +extern void foo (); + +struct Ptr { + int * ptr; + Ptr () { ptr = 0; } + ~Ptr() { delete ptr; } + Ptr &operator= (int * p) { ptr = p; return *this; } +}; + +int *new_checker () { foo (); return 0; } + +void pipe (int c) +{ + Ptr checker; + + foo (); + for (;;) + { + switch (c) + { + case '-': + checker = new_checker (); + break; + } + } +}