1/* PR target/44575 */ 2 3#include <stdarg.h> 4 5int fails = 0; 6struct S { float a[3]; }; 7struct S a[5]; 8 9void 10check (int z, ...) 11{ 12 struct S arg, *p; 13 va_list ap; 14 int j = 0, k = 0; 15 int i; 16 va_start (ap, z); 17 for (i = 2; i < 4; ++i) 18 { 19 p = 0; 20 j++; 21 k += 2; 22 switch ((z << 4) | i) 23 { 24 case 0x12: 25 case 0x13: 26 p = &a[2]; 27 arg = va_arg (ap, struct S); 28 break; 29 default: 30 ++fails; 31 break; 32 } 33 if (p && p->a[2] != arg.a[2]) 34 ++fails; 35 if (fails) 36 break; 37 } 38 va_end (ap); 39} 40 41int 42main () 43{ 44 a[2].a[2] = -49026; 45 check (1, a[2], a[2]); 46 if (fails) 47 abort (); 48 return 0; 49} 50