annotate gcc/testsuite/gcc.c-torture/execute/pr84524.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
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 }