annotate gcc/testsuite/gcc.c-torture/execute/pr84478.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 tree-optimization/84478 */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 long poolptr;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 unsigned char *strpool;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 static const char *poolfilearr[] = {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 "mu",
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 "",
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 #define A "x",
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 #define B A "xx", A A "xxx", A A A A A
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 #define C B B B B B B B B B B
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 #define D C C C C C C C C C C
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 D C C C C C C C B B B
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 ((void *)0)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 __attribute__((noipa)) long
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 makestring (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 return 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 __attribute__((noipa)) long
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 loadpoolstrings (long spare_size)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 const char *s;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 long g = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 int i = 0, j = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 while ((s = poolfilearr[j++]))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 int l = __builtin_strlen (s);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 i += l;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 if (i >= spare_size) return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 while (l-- > 0) strpool[poolptr++] = *s++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 g = makestring ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 return g;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 main ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 strpool = __builtin_malloc (4000);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 if (!strpool)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 asm volatile ("" : : : "memory");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 volatile int r = loadpoolstrings (4000);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 __builtin_free (strpool);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 }