| /* { dg-do run { target fpic } } */ |
| /* { dg-options "-O2 -fpic" } */ |
| /* { dg-require-effective-target alloca } */ |
| |
| extern void abort (void); |
| extern void exit (int); |
| |
| void foo (char *x, const char *y, ...) |
| { |
| } |
| |
| double bar (const char *x, long y) |
| { |
| return 0.0; |
| } |
| |
| typedef __SIZE_TYPE__ size_t; |
| extern size_t strlen (const char *); |
| |
| double baz (const char *x) |
| { |
| if (x[0] != '\0') |
| { |
| char y[6 + strlen (x)]; |
| foo (y, "FOO", x); |
| return bar (y, 0); |
| } |
| |
| return (__extension__ ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) { __l: 0x3f800000UL }).__d); |
| } |
| |
| int |
| main () |
| { |
| if (baz("") != 1.0) |
| abort (); |
| exit (0); |
| } |