mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-25 05:27:15 +00:00
InstCombine: Don't assume DataLayout is always available
We tried to get the result of DataLayout::getLargestLegalIntTypeSize but we didn't have a DataLayout. This resulted in opt crashing. This fixes PR21651. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222645 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5deb1bf97f
commit
4a9d304d9d
@ -2095,7 +2095,8 @@ Instruction *InstCombiner::visitSwitchInst(SwitchInst &SI) {
|
||||
// the largest legal integer type. We need to be conservative here since
|
||||
// x86 generates redundant zero-extenstion instructions if the operand is
|
||||
// truncated to i8 or i16.
|
||||
if (BitWidth > NewWidth && NewWidth >= DL->getLargestLegalIntTypeSize()) {
|
||||
if (DL && BitWidth > NewWidth &&
|
||||
NewWidth >= DL->getLargestLegalIntTypeSize()) {
|
||||
IntegerType *Ty = IntegerType::get(SI.getContext(), NewWidth);
|
||||
Builder->SetInsertPoint(&SI);
|
||||
Value *NewCond = Builder->CreateTrunc(SI.getCondition(), Ty, "trunc");
|
||||
|
20
test/Transforms/InstCombine/pr21651.ll
Normal file
20
test/Transforms/InstCombine/pr21651.ll
Normal file
@ -0,0 +1,20 @@
|
||||
; RUN: opt < %s -instcombine -S | FileCheck %s
|
||||
|
||||
define void @PR21651() {
|
||||
switch i2 0, label %out [
|
||||
i2 0, label %out
|
||||
i2 1, label %out
|
||||
]
|
||||
|
||||
out:
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK-LABEL: define void @PR21651(
|
||||
; CHECK: switch i2 0, label %out [
|
||||
; CHECK: i2 0, label %out
|
||||
; CHECK: i2 1, label %out
|
||||
; CHECK: ]
|
||||
; CHECK: out: ; preds = %0, %0, %0
|
||||
; CHECK: ret void
|
||||
; CHECK: }
|
Loading…
Reference in New Issue
Block a user