mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-11 21:38:19 +00:00
SSI construction should just go ahead and ignore instructions in unreachable
blocks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79132 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -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();
|
||||
|
Reference in New Issue
Block a user