summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/opt/pr48302.C
blob: fd51ba412e18a78d05bb222247e9907c421764d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } }
// { dg-options "-O -fcrossjumping -fgcse -fschedule-insns2 -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops -fselective-scheduling2 --param lim-expensive=320 --param min-crossjump-insns=1" }

struct S
{
  int i, j;
  S *s;
  ~S();
};

S *gs;

void foo ()
{
restart:
  for (S *s = gs; s; s = s->s)
    if (s->j && s->j != (s->i & 1)) {
	    delete s;
	    goto restart;
      }
}