comparison gcc/testsuite/gcc.c-torture/execute/pr87290.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
1 /* PR middle-end/87290 */
2
3 int c;
4
5 __attribute__((noipa)) void
6 f0 (void)
7 {
8 c++;
9 }
10
11 __attribute__((noipa)) int
12 f1 (int x)
13 {
14 return x % 16 == 13;
15 }
16
17 __attribute__((noipa)) int
18 f2 (int x)
19 {
20 return x % 16 == -13;
21 }
22
23 __attribute__((noipa)) void
24 f3 (int x)
25 {
26 if (x % 16 == 13)
27 f0 ();
28 }
29
30 __attribute__((noipa)) void
31 f4 (int x)
32 {
33 if (x % 16 == -13)
34 f0 ();
35 }
36
37 int
38 main ()
39 {
40 int i, j;
41 for (i = -30; i < 30; i++)
42 {
43 if (f1 (13 + i * 16) != (i >= 0) || f2 (-13 + i * 16) != (i <= 0))
44 __builtin_abort ();
45 f3 (13 + i * 16);
46 if (c != (i >= 0))
47 __builtin_abort ();
48 f4 (-13 + i * 16);
49 if (c != 1 + (i == 0))
50 __builtin_abort ();
51 for (j = 1; j < 16; j++)
52 {
53 if (f1 (13 + i * 16 + j) || f2 (-13 + i * 16 + j))
54 __builtin_abort ();
55 f3 (13 + i * 16 + j);
56 f4 (-13 + i * 16 + j);
57 }
58 if (c != 1 + (i == 0))
59 __builtin_abort ();
60 c = 0;
61 }
62 return 0;
63 }