[llvm] r224901 - [X86][ISel] Fix a regression I introduced in r224884

Keno Fischer kfischer at college.harvard.edu
Sun Dec 28 07:20:58 PST 2014


Author: kfischer
Date: Sun Dec 28 09:20:57 2014
New Revision: 224901

URL: http://llvm.org/viewvc/llvm-project?rev=224901&view=rev
Log:
[X86][ISel] Fix a regression I introduced in r224884

The else case ResultReg was not checked for validity.
To my surprise, this case was not hit in any of the
existing test cases. This includes a new test cases
that tests this path.

Also drop the `target triple` declaration from the
original test as suggested by H.J. Lu, because
apparently with it the test won't be run on Linux

Added:
    llvm/trunk/test/CodeGen/X86/large-code-model-isel.ll
Modified:
    llvm/trunk/lib/Target/X86/X86FastISel.cpp
    llvm/trunk/test/CodeGen/X86/fast-isel-call-bool.ll

Modified: llvm/trunk/lib/Target/X86/X86FastISel.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FastISel.cpp?rev=224901&r1=224900&r2=224901&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86FastISel.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86FastISel.cpp Sun Dec 28 09:20:57 2014
@@ -2709,15 +2709,15 @@ bool X86FastISel::fastLowerCall(CallLowe
 
       ResultReg =
         fastEmit_ri(VT, VT, ISD::AND, ResultReg, hasTrivialKill(PrevVal), 1);
-
-      if (!ResultReg)
-        return false;
     } else {
       if (!isTypeLegal(Val->getType(), VT))
         return false;
       ResultReg = getRegForValue(Val);
     }
 
+    if (!ResultReg)
+      return false;
+
     ArgRegs.push_back(ResultReg);
     OutVTs.push_back(VT);
   }

Modified: llvm/trunk/test/CodeGen/X86/fast-isel-call-bool.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fast-isel-call-bool.ll?rev=224901&r1=224900&r2=224901&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/fast-isel-call-bool.ll (original)
+++ llvm/trunk/test/CodeGen/X86/fast-isel-call-bool.ll Sun Dec 28 09:20:57 2014
@@ -1,8 +1,7 @@
-; RUN: llc < %s -fast-isel -mcpu=core2 -O1 | FileCheck %s
+; RUN: llc < %s -fast-isel -mcpu=core2 -march=x86-64 -O1 | FileCheck %s
 ; See PR21557
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-apple-darwin14.0.0"
 
 declare i64 @bar(i1)
 

Added: llvm/trunk/test/CodeGen/X86/large-code-model-isel.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/large-code-model-isel.ll?rev=224901&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/large-code-model-isel.ll (added)
+++ llvm/trunk/test/CodeGen/X86/large-code-model-isel.ll Sun Dec 28 09:20:57 2014
@@ -0,0 +1,13 @@
+; RUN: llc < %s -code-model=large -mcpu=core2 -march=x86-64 -O0 | FileCheck %s
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
+ at .str10 = external unnamed_addr constant [2 x i8], align 1
+
+define void @foo() {
+; CHECK-LABEL: foo:
+entry:
+; CHECK: callq
+  %call = call i64* undef(i64* undef, i8* getelementptr inbounds ([2 x i8]* @.str10, i32 0, i32 0))
+  ret void
+}





More information about the llvm-commits mailing list