[llvm-commits] [llvm] r156622 - /llvm/trunk/lib/Target/ARM/ARMFastISel.cpp

Chad Rosier mcrosier at apple.com
Fri May 11 10:54:18 PDT 2012


On May 11, 2012, at 10:50 AM, Eli Friedman wrote:

> On Fri, May 11, 2012 at 10:41 AM, Chad Rosier <mcrosier at apple.com> wrote:
>> Author: mcrosier
>> Date: Fri May 11 12:41:06 2012
>> New Revision: 156622
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=156622&view=rev
>> Log:
>> [fast-isel] Rather then assert (or segfault in a non-asserts build), fall back
>> to selection DAG isel if we're unable to handle a non-double multi-reg retval.
>> rdar://11430407
>> PR12796
>> 
>> Modified:
>>    llvm/trunk/lib/Target/ARM/ARMFastISel.cpp
>> 
>> Modified: llvm/trunk/lib/Target/ARM/ARMFastISel.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMFastISel.cpp?rev=156622&r1=156621&r2=156622&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMFastISel.cpp (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMFastISel.cpp Fri May 11 12:41:06 2012
>> @@ -2014,8 +2014,7 @@
>> 
>>       // Finally update the result.
>>       UpdateValueMap(I, ResultReg);
>> -    } else {
>> -      assert(RVLocs.size() == 1 &&"Can't handle non-double multi-reg retvals!");
>> +    } else if (RVLocs.size() == 1) {
>>       EVT CopyVT = RVLocs[0].getValVT();
>> 
>>       // Special handling for extended integers.
>> @@ -2031,6 +2030,9 @@
>> 
>>       // Finally update the result.
>>       UpdateValueMap(I, ResultReg);
>> +    } else {
>> +      // Can't handle non-double multi-reg retvals.
>> +      return false;
> 
> Are you sure you don't need to handle this before generating the
> actual call instruction?

Fairly sure the fast-isel "dead-code" removal logic I added will clean this up, so I believe it's safe.  I'll double check, however.

> Also, missing test case.

I'll add one shortly.

 Chad

> 
> -Eli




More information about the llvm-commits mailing list