[llvm] r175853 - Fix isa<> check which could never be true.

Pete Cooper peter_cooper at apple.com
Fri Feb 22 10:17:37 PST 2013


Ah, thanks for pointing that out.  I’d copied this from another test and forgot to remove them.

Fixed in r175905.

Thanks,
Pete
On Feb 22, 2013, at 12:04 AM, Dmitri Gribenko <gribozavr at gmail.com> wrote:

> On Fri, Feb 22, 2013 at 3:50 AM, Pete Cooper <peter_cooper at apple.com> wrote:
>> Author: pete
>> Date: Thu Feb 21 19:50:38 2013
>> New Revision: 175853
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=175853&view=rev
>> Log:
>> Fix isa<> check which could never be true.
>> 
>> It was incorrectly checking a Function* being an IntrinsicInst* which
>> isn't possible.  It should always have been checking the CallInst* instead.
>> 
>> Added test case for x86 which ensures we only get one constant load.
>> It was 2 before this change.
>> 
>> rdar://problem/13267920
>> 
>> Added:
>>    llvm/trunk/test/CodeGen/X86/fast-isel-constant.ll
>> Modified:
>>    llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp
>> 
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp?rev=175853&r1=175852&r2=175853&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp Thu Feb 21 19:50:38 2013
>> @@ -705,7 +705,7 @@ bool FastISel::SelectCall(const User *I)
>>   // all the values which have already been materialized,
>>   // appear after the call. It also makes sense to skip intrinsics
>>   // since they tend to be inlined.
>> -  if (!isa<IntrinsicInst>(F))
>> +  if (!isa<IntrinsicInst>(Call))
>>     flushLocalValueMap();
>> 
>>   // An arbitrary call. Bail.
>> 
>> Added: llvm/trunk/test/CodeGen/X86/fast-isel-constant.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fast-isel-constant.ll?rev=175853&view=auto
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/fast-isel-constant.ll (added)
>> +++ llvm/trunk/test/CodeGen/X86/fast-isel-constant.ll Thu Feb 21 19:50:38 2013
>> @@ -0,0 +1,32 @@
>> +; RUN: llc < %s -march=x86-64 -O0 | FileCheck %s
>> +; Make sure fast-isel doesn't reset the materialised constant map
>> +; across an intrinsic call.
>> +
>> +; CHECK: movl  $100000
>> +; CHECK-NOT: movl      $100000
>> +define i1 @test1(i32 %v1, i32 %v2, i32* %X) nounwind {
>> +entry:
>> +  %a = shl i32 100000, %v1
>> +  %t = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %a, i32 %v2)
>> +  %ext = extractvalue {i32, i1} %t, 0
>> +  %sum = shl i32 100000, %ext
>> +  %obit = extractvalue {i32, i1} %t, 1
>> +  br i1 %obit, label %overflow, label %normal
>> +
>> +normal:
>> +  store i32 %sum, i32* %X
>> +  br label %overflow
>> +
>> +overflow:
>> +  ret i1 false
>> +
>> +; X32: test4:
>> +; X32: addl
>> +; X32-NEXT: jo
>> +
>> +; X64:        test4:
>> +; X64:          addl   %e[[A1:si|dx]], %e[[A0:di|cx]]
>> +; X64-NEXT:    jo
> 
> These X32 and X64 lines look unused; did you mean to delete them?
> 
> Dmitri
> 
> -- 
> main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
> (j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/





More information about the llvm-commits mailing list