libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / pr107115.c
blob5f7b6ff01e19f8914f3b45cb1d40dd1f52ca943b
1 /* { dg-do run } */
2 /* PR/107115 */
3 /* { dg-additional-options "-fno-schedule-insns -fno-schedule-insns2" } */
5 #include <stdlib.h>
7 void test1(long *p1)
9 p1[0] = 1;
11 long test2(long long *p2, int index1, int index2)
13 p2[index1] = 2;
14 return p2[index2];
16 long test3(long *p3, int index2, long value)
18 p3[index2] = 3;
19 p3[index2] = value;
20 return p3[0];
22 long test4(void *p4, int index1, int index2)
24 test1(p4);
25 long temp = test2(p4, index1, index2);
26 return test3(p4, index2, temp);
28 long (*volatile vtest)(void *, int, int) = test4;
29 int main(void)
31 void *pp = malloc(sizeof (long) + sizeof(long long));
32 if (!pp) abort();
33 long result = vtest(pp, 0, 0);
34 if (*(long *)pp != 2 || result != 2)
35 __builtin_abort ();
36 return 0;