aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr101223.c
blob: 6d5a247fa6c71bb28065db37a48602c60cbc73f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* PR tree-optimization/101223 */
/* { dg-do run } */
/* { dg-options "-O2 " } */

struct {
  int a : 1;
} b;
int c = 1, d;
int foo1() {
  for (; d < 2; d++) {
    int e = ~c, f = 0, g;
    if (e) {
      f = c;
      g = b.a;
      b.a = f;
      if (b.a >= g)
        __builtin_abort();
    }
    c = f;
    b.a = g;
  }
  return 0;
}

int foo2() {
  for (; d < 2; d++) {
    int e = ~c, f = 0, g;
    if (e) {
      f = c;
      g = b.a;
      b.a = f;
      if (g <= b.a)
        __builtin_abort();
    }
    c = f;
    b.a = g;
  }
  return 0;
}
int main ()
{
  return foo1() + foo2();
}