mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-16 08:08:01 +00:00
Minor bug in SCCP found by inspection. (I don't think it's possible to hit this with a normal pass pipeline, but fixing for completeness.)
llvm-svn: 137755
This commit is contained in:
parent
192f298228
commit
e0095e4339
@ -582,6 +582,10 @@ void SCCPSolver::getFeasibleSuccessors(TerminatorInst &TI,
|
||||
}
|
||||
|
||||
if (SwitchInst *SI = dyn_cast<SwitchInst>(&TI)) {
|
||||
if (TI.getNumSuccessors() < 2) {
|
||||
Succs[0] = true;
|
||||
return;
|
||||
}
|
||||
LatticeVal SCValue = getValueState(SI->getCondition());
|
||||
ConstantInt *CI = SCValue.getConstantInt();
|
||||
|
||||
@ -642,6 +646,9 @@ bool SCCPSolver::isEdgeFeasible(BasicBlock *From, BasicBlock *To) {
|
||||
return true;
|
||||
|
||||
if (SwitchInst *SI = dyn_cast<SwitchInst>(TI)) {
|
||||
if (SI->getNumSuccessors() < 2)
|
||||
return true;
|
||||
|
||||
LatticeVal SCValue = getValueState(SI->getCondition());
|
||||
ConstantInt *CI = SCValue.getConstantInt();
|
||||
|
||||
|
13
test/Transforms/SCCP/switch.ll
Normal file
13
test/Transforms/SCCP/switch.ll
Normal file
@ -0,0 +1,13 @@
|
||||
; RUN: opt -S -sccp < %s | FileCheck %s
|
||||
|
||||
; Make sure we always consider the default edge executable for a switch
|
||||
; with no cases.
|
||||
declare void @foo()
|
||||
define void @test1() {
|
||||
; CHECK: define void @test1
|
||||
; CHECK: call void @foo()
|
||||
switch i32 undef, label %d []
|
||||
d:
|
||||
call void @foo()
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user