forked from OSchip/llvm-project
SSI construction should just go ahead and ignore instructions in unreachable
blocks. llvm-svn: 79132
This commit is contained in:
parent
4c1b9b02c5
commit
dd0e74ceee
|
|
@ -39,7 +39,7 @@ STATISTIC(NumPhiInserted, "Number of phi functions inserted");
|
|||
void SSI::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.addRequired<DominanceFrontier>();
|
||||
AU.addRequired<DominatorTree>();
|
||||
AU.setPreservesAll();
|
||||
AU.setPreservesCFG();
|
||||
}
|
||||
|
||||
bool SSI::runOnFunction(Function &F) {
|
||||
|
|
@ -121,7 +121,7 @@ void SSI::insertPhiFunctions(SmallVectorImpl<Instruction *> &value) {
|
|||
// Test if there were any sigmas for this variable
|
||||
if (needConstruction[i]) {
|
||||
|
||||
SmallPtrSet<BasicBlock *, 1> BB_visited;
|
||||
SmallPtrSet<BasicBlock *, 16> BB_visited;
|
||||
|
||||
// Insert phi functions if there is any sigma function
|
||||
while (!defsites[i].empty()) {
|
||||
|
|
@ -131,6 +131,10 @@ void SSI::insertPhiFunctions(SmallVectorImpl<Instruction *> &value) {
|
|||
defsites[i].pop_back();
|
||||
DominanceFrontier::iterator DF_BB = DF->find(BB);
|
||||
|
||||
// The BB is unreachable. Skip it.
|
||||
if (DF_BB == DF->end())
|
||||
continue;
|
||||
|
||||
// Iterates through all the dominance frontier of BB
|
||||
for (std::set<BasicBlock *>::iterator DF_BB_begin =
|
||||
DF_BB->second.begin(), DF_BB_end = DF_BB->second.end();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
; RUN: llvm-as < %s | opt -ssi-everything -disable-output
|
||||
|
||||
declare fastcc i32 @ras_Empty(i8** nocapture) nounwind readonly
|
||||
|
||||
define i32 @cc_Tautology() nounwind {
|
||||
entry:
|
||||
unreachable
|
||||
|
||||
cc_InitData.exit: ; No predecessors!
|
||||
%0 = call fastcc i32 @ras_Empty(i8** undef) nounwind ; <i32> [#uses=1]
|
||||
%1 = icmp eq i32 %0, 0 ; <i1> [#uses=1]
|
||||
br i1 %1, label %bb2, label %bb6
|
||||
|
||||
bb2: ; preds = %cc_InitData.exit
|
||||
unreachable
|
||||
|
||||
bb6: ; preds = %cc_InitData.exit
|
||||
ret i32 undef
|
||||
}
|
||||
Loading…
Reference in New Issue