annotate gcc/testsuite/gcc.c-torture/execute/pr85756.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* PR target/85756 */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 #if __CHAR_BIT__ == 8 && __SIZEOF_SHORT__ == 2 && __SIZEOF_INT__ == 4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 int a, c, *e, f, h = 10;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 short b;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 unsigned int p;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 __attribute__((noipa)) void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 bar (int a)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 asm volatile ("" : : "r" (a) : "memory");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 foo ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 unsigned j = 1, m = 430523;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 int k, n = 1, *l = &h;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 lab:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 p = m;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 m = -((~65535U | j) - n);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 f = b << ~(n - 8);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 n = (m || b) ^ f;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 j = p;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 if (p < m)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 *l = k < 3;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 if (!n)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 l = &k;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 if (c)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 bar (a);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 goto lab;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 if (!*l)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 *e = 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 main ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 foo ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 #else
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 main ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 #endif