annotate gcc/testsuite/gcc.dg/pr83393.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 rtl-optimization/83393 */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 /* { dg-do run } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 /* { dg-options "-O2 -fno-forward-propagate -fno-tree-bit-ccp" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 typedef unsigned char u8;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 typedef unsigned short u16;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 typedef unsigned int u32;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 typedef unsigned long long u64;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 u32 a, d;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 u64 b;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 u8 c;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 static u64 __attribute__ ((noinline, noclone))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 foo (u16 f, u64 g)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 f <<= 15;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 f *= d;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 f -= g %= 44;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 f <<= f <= g;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 c = 255;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 c >>= (u8) f == 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 f *= g;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 c -= ~c;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 return f + a + b + f;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 main (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 #if (__SIZEOF_LONG_LONG__ == 8 && __SIZEOF_INT__ == 4 \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 && __SIZEOF_SHORT__ == 2 && __CHAR_BIT__ == 8)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 u64 x = foo (3, 0xE6C0011BBA6DBD7LL);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 if (x != 0x1f66e)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 #endif
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 }