Merge the enhancements from LoopUnroll's FoldBlockIntoPredecessor into

MergeBlockIntoPredecessor. This makes SimplifyCFG slightly more aggressive,
and makes it unnecessary for LoopUnroll to have its own copy of this code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85667 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman
2009-10-31 16:08:00 +00:00
parent 4c7279ac72
commit f230d8ad15
4 changed files with 31 additions and 97 deletions

View File

@ -43,9 +43,11 @@ void FoldSingleEntryPHINodes(BasicBlock *BB);
/// it is ultimately unused or if it reaches an unused cycle.
void DeleteDeadPHIs(BasicBlock *BB);
/// MergeBlockIntoPredecessor - Attempts to merge a block into its predecessor,
/// if possible. The return value indicates success or failure.
bool MergeBlockIntoPredecessor(BasicBlock* BB, Pass* P = 0);
/// MergeBlockIntoPredecessor - Folds a basic block into its predecessor if it
/// only has one predecessor, and that predecessor only has one successor.
/// If a Pass is given, the LoopInfo and DominatorTree analyses will be kept
/// current. Returns the combined block, or null if no merging was performed.
BasicBlock *MergeBlockIntoPredecessor(BasicBlock* BB, Pass* P = 0);
// ReplaceInstWithValue - Replace all uses of an instruction (specified by BI)
// with a value, then remove and delete the original instruction.