libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / pr71598-2.c
blob8b57a50cb47fc7b06a507dd8a400791488aab471
1 /* { dg-do run } */
2 /* { dg-prune-output "use of enum values across objects may fail" } */
3 /* { dg-additional-options "-fshort-enums" } */
4 /* { dg-skip-if "" short_eq_int } */
6 enum e1 { c1 = -__INT_MAX__ };
8 __attribute__((noinline,noclone))
9 int f(enum e1 *p, signed int *q)
11 *p = c1;
12 *q = 2;
13 return *p;
16 enum e2 { c2 = __SHRT_MAX__ + 1};
18 __attribute__((noinline,noclone))
19 int g(enum e2 *p, unsigned short *q)
21 *p = c2;
22 *q = 2;
23 return *p;
26 enum e3 { c3 = __SCHAR_MAX__ };
28 __attribute__((noinline,noclone))
29 int h(enum e3 *p, unsigned char *q)
31 *p = c3;
32 *q = 2;
33 return *p;
36 int main()
38 signed x;
39 unsigned short y;
40 unsigned char z;
42 if (f(&x, &x) != 2)
43 __builtin_abort();
44 if (g(&y, &y) != 2)
45 __builtin_abort();
46 if (h(&z, &z) != 2)
47 __builtin_abort();
48 return 0;