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.

Reply via email to