| /* PR middle-end/101170 */ | |
| /* { dg-do compile } */ | |
| /* { dg-options "-O2 -g" } */ | |
| #include <stdarg.h> | |
| struct S { int a; int b[4]; } s; | |
| va_list ap; | |
| int i; | |
| long long l; | |
| struct S | |
| foo (int x) | |
| { | |
| struct S a = {}; | |
| do | |
| if (x) | |
| return a; | |
| while (1); | |
| } | |
| __attribute__((noipa)) void | |
| bar (void) | |
| { | |
| for (; i; i++) | |
| l |= va_arg (ap, long long) << s.b[i]; | |
| if (l) | |
| foo (l); | |
| } | |
| void | |
| baz (int v, ...) | |
| { | |
| va_start (ap, v); | |
| bar (); | |
| va_end (ap); | |
| } |