[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224901 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Keno Fischer 2014-12-28 15:20:57 +00:00
parent bfa4a373f4
commit 41bda9f201
3 changed files with 17 additions and 5 deletions

View File

@ -2709,15 +2709,15 @@ bool X86FastISel::fastLowerCall(CallLoweringInfo &CLI) {
ResultReg = ResultReg =
fastEmit_ri(VT, VT, ISD::AND, ResultReg, hasTrivialKill(PrevVal), 1); fastEmit_ri(VT, VT, ISD::AND, ResultReg, hasTrivialKill(PrevVal), 1);
if (!ResultReg)
return false;
} else { } else {
if (!isTypeLegal(Val->getType(), VT)) if (!isTypeLegal(Val->getType(), VT))
return false; return false;
ResultReg = getRegForValue(Val); ResultReg = getRegForValue(Val);
} }
if (!ResultReg)
return false;
ArgRegs.push_back(ResultReg); ArgRegs.push_back(ResultReg);
OutVTs.push_back(VT); OutVTs.push_back(VT);
} }

View File

@ -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 ; See PR21557
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 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) declare i64 @bar(i1)

View File

@ -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"
@.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
}