> The struct-layout-1 failures in 64-bit mode are IMHO more annoying, but > these tests are easy to break so I'm not really worried either.
Huh, I was wrong, they are quite problematic. Testcase attached. We have as initial RTL: (insn 35 34 36 1 (set (mem/i:TF (plus:DI (reg/f:DI 103 virtual-stack-vars) (const_int -5120 [0xffffffffffffec00])) [0 S16 A128]) (reg:TF 110 [ D.1221 ])) -1 (nil) (nil)) and instantiate_virtual_regs_in_insn invokes extract_insn on it. Previously the instantiate_virtual_regs machinery (instantiate_virtual_regs_1) would have detected that the insn is not valid. -- Eric Botcazou
struct S1132 { struct{ unsigned long int b; struct{void * d[7];}c[30]; }a[3]; char e:((((8) - 1) & 7) + 1); struct{}f; }; extern int fails; void check1132va (int z, ...) { struct S1132 arg; long double ld; __builtin_va_list ap; __builtin_va_start (ap, z); if (__builtin_va_arg (ap, long double) != 2.0L) ++fails; __builtin_va_end (ap); }