On Mon, Jul 13, 2009 at 10:31 AM, Dave Korn<dave.korn.cyg...@googlemail.com> wrote: > Richard Guenther wrote: >> On Mon, Jul 13, 2009 at 5:39 AM, Jack Howarth<howa...@bromo.med.uc.edu> >> wrote: >>> On Mon, Jul 13, 2009 at 01:52:51AM +0100, Dave Korn wrote: > >>>>> __complex__ long long f () >>>>> { >>>>> int i[99]; >>>>> __complex__ long long v; >>>>> >>>>> v += f (); >>>> Undefined behaviour, no? >>>> >>>> cheers, >>>> DaveK >>> So then the testcase is flawed and should have the darwin line corrected >>> to... >>> >>> /* { dg-skip-if "PIC default" { { i?86-*-darwin* x86_64-*-darwin* } && >>> ilp32 } { "*" } { "" } } */ >> >> Probably yes. The testcase invokes undefined behavior because >> v is used uninitialized - but that may be the trigger for the original >> ICE, so better preserve that. > > It would be useful as an experiment to try initialising it and see if that's > also what's triggering the reload failure in this particular case, because if > not then there's still a real bug to find on darwin.
I don't think so. On 32bit asm("": "+r" (v) : "r" (0), "r" (1)); needs too many registers (4 for the v, 1 for constant 0 and 1 for constant 1). That's not possible with a frame-pointer and a PIC register. Richard.