mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-03 22:01:56 +00:00
[fast-isel] HandlePHINodesInSuccessorBlocks() can promite i8 and i16 types too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149730 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
08e8db423d
commit
2f2d1d7ec0
@ -1365,8 +1365,8 @@ bool FastISel::HandlePHINodesInSuccessorBlocks(const BasicBlock *LLVMBB) {
|
||||
// exactly one register for each non-void instruction.
|
||||
EVT VT = TLI.getValueType(PN->getType(), /*AllowUnknown=*/true);
|
||||
if (VT == MVT::Other || !TLI.isTypeLegal(VT)) {
|
||||
// Promote MVT::i1.
|
||||
if (VT == MVT::i1)
|
||||
// Handle integer promotions, though, because they're common and easy.
|
||||
if (VT == MVT::i1 || VT == MVT::i8 || VT == MVT::i16)
|
||||
VT = TLI.getTypeToTransformTo(LLVMBB->getContext(), VT);
|
||||
else {
|
||||
FuncInfo.PHINodesToUpdate.resize(OrigNumPHINodesToUpdate);
|
||||
|
44
test/CodeGen/ARM/fast-isel-br-phi.ll
Normal file
44
test/CodeGen/ARM/fast-isel-br-phi.ll
Normal file
@ -0,0 +1,44 @@
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios
|
||||
|
||||
; This test ensures HandlePHINodesInSuccessorBlocks() is able to promote basic
|
||||
; non-legal integer types (i.e., i1, i8, i16).
|
||||
|
||||
declare void @fooi8(i8)
|
||||
declare void @fooi16(i16)
|
||||
|
||||
define void @foo(i1 %cmp) nounwind ssp {
|
||||
entry:
|
||||
br i1 %cmp, label %cond.true, label %cond.false
|
||||
|
||||
cond.true: ; preds = %entry
|
||||
br label %cond.end
|
||||
|
||||
cond.false: ; preds = %entry
|
||||
br label %cond.end
|
||||
|
||||
cond.end: ; preds = %cond.false, %cond.true
|
||||
%cond = phi i1 [ 0, %cond.true ], [ 1, %cond.false ]
|
||||
br i1 %cond, label %cond.true8, label %cond.false8
|
||||
|
||||
cond.true8: ; preds = %cond.end
|
||||
br label %cond.end8
|
||||
|
||||
cond.false8: ; preds = %cond.end
|
||||
br label %cond.end8
|
||||
|
||||
cond.end8: ; preds = %cond.false8, %cond.true8
|
||||
%cond8 = phi i8 [ 0, %cond.true8 ], [ 1, %cond.false8 ]
|
||||
call void @fooi8(i8 %cond8)
|
||||
br i1 0, label %cond.true16, label %cond.false16
|
||||
|
||||
cond.true16: ; preds = %cond.end8
|
||||
br label %cond.end16
|
||||
|
||||
cond.false16: ; preds = %cond.end8
|
||||
br label %cond.end16
|
||||
|
||||
cond.end16: ; preds = %cond.false16, %cond.true16
|
||||
%cond16 = phi i16 [ 0, %cond.true16 ], [ 1, %cond.false16 ]
|
||||
call void @fooi16(i16 %cond16)
|
||||
ret void
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user