annotate gcc/testsuite/gcc.c-torture/execute/pr84524.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/84524 */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 __attribute__((noipa)) void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 foo (unsigned short *x)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 unsigned short i, v;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 unsigned char j;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 for (i = 0; i < 256; i++)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 v = i << 8;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 for (j = 0; j < 8; j++)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 if (v & 0x8000)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 v = (v << 1) ^ 0x1021;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 else
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 v = v << 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 x[i] = v;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 main ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 unsigned short a[256];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 foo (a);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 for (int i = 0; i < 256; i++)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 unsigned short v = i << 8;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 for (int j = 0; j < 8; j++)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 asm volatile ("" : "+r" (v));
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 if (v & 0x8000)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 v = (v << 1) ^ 0x1021;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 else
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 v = v << 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 if (a[i] != v)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 }