1// Test PR 17517.  Test case provided by Serge Belyshev.
2
3 /* { dg-do compile } */
4 /* { dg-options "-O2" } */
5
6
7extern void foo ();
8
9struct Ptr {
10  int * ptr;
11  Ptr () { ptr = 0; }
12  ~Ptr() { delete ptr; }
13  Ptr &operator= (int * p) { ptr = p; return *this; }
14};
15
16int *new_checker () { foo (); return 0; }
17
18void pipe (int c)
19{
20  Ptr checker;
21
22  foo ();
23  for (;;)
24    {
25    switch (c)
26      {
27    case '-':
28      checker = new_checker ();
29      break;
30      }
31    }
32}
33