mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-18 01:17:46 +00:00
[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:
parent
bfa4a373f4
commit
41bda9f201
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
13
test/CodeGen/X86/large-code-model-isel.ll
Normal file
13
test/CodeGen/X86/large-code-model-isel.ll
Normal 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
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user