mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-27 21:50:40 +00:00
[CodeGenPrepare][AArch64] Fix a TLI legality check on iPTR to use a lowered instead.
Fixes PR21548. Related to PR20474. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221820 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dab91bcc3a
commit
b990a25d5a
@ -682,8 +682,8 @@ SinkShiftAndTruncate(BinaryOperator *ShiftI, Instruction *User, ConstantInt *CI,
|
||||
// FIXME: always querying the result type is just an
|
||||
// approximation; some nodes' legality is determined by the
|
||||
// operand or other means. There's no good way to find out though.
|
||||
if (TLI.isOperationLegalOrCustom(ISDOpcode,
|
||||
EVT::getEVT(TruncUser->getType(), true)))
|
||||
if (TLI.isOperationLegalOrCustom(
|
||||
ISDOpcode, TLI.getValueType(TruncUser->getType(), true)))
|
||||
continue;
|
||||
|
||||
// Don't bother for PHI nodes.
|
||||
|
@ -15,3 +15,22 @@ define %foo @test_merge(i32 %in) {
|
||||
%struct = insertvalue %foo undef, i8 %byte, 0
|
||||
ret %"foo" %struct
|
||||
}
|
||||
|
||||
define i64* @test_merge_PR21548(i32 %a, i64* %p1, i64* %p2, i64* %p3) {
|
||||
; CHECK-LABEL: @test_merge_PR21548
|
||||
%as = lshr i32 %a, 3
|
||||
%Tr = trunc i32 %as to i1
|
||||
br i1 %Tr, label %BB2, label %BB3
|
||||
|
||||
BB2:
|
||||
; Similarly to above:
|
||||
; CodeGenPrepare was requesting the EVT for i8* to determine
|
||||
; whether the select user of the trunc was legal. This asserted.
|
||||
|
||||
; CHECK: select i1 {{%.*}}, i64* %p1, i64* %p2
|
||||
%p = select i1 %Tr, i64* %p1, i64* %p2
|
||||
ret i64* %p
|
||||
|
||||
BB3:
|
||||
ret i64* %p3
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user