diff options
| author | Dan Gohman <gohman@apple.com> | 2010-08-17 17:07:02 +0000 | 
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2010-08-17 17:07:02 +0000 | 
| commit | 941020ed729cdd37592caaf361939665491cd443 (patch) | |
| tree | 07f49cac0c2eafffe9fd12ac508caf5f078bbede /llvm/lib/Transforms/Utils | |
| parent | 896bd7e932e550d0eb8d11a56176e260027ec7f1 (diff) | |
| download | bcm5719-llvm-941020ed729cdd37592caaf361939665491cd443.tar.gz bcm5719-llvm-941020ed729cdd37592caaf361939665491cd443.zip  | |
Use the getUniquePredecessor() utility function, instead of doing
what it does manually.
llvm-svn: 111248
Diffstat (limited to 'llvm/lib/Transforms/Utils')
| -rw-r--r-- | llvm/lib/Transforms/Utils/BasicBlockUtils.cpp | 20 | 
1 files changed, 5 insertions, 15 deletions
diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp index ec625b4cbb2..c28b0275567 100644 --- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp @@ -97,23 +97,13 @@ bool llvm::DeleteDeadPHIs(BasicBlock *BB) {  /// MergeBlockIntoPredecessor - Attempts to merge a block into its predecessor,  /// if possible.  The return value indicates success or failure.  bool llvm::MergeBlockIntoPredecessor(BasicBlock *BB, Pass *P) { -  pred_iterator PI(pred_begin(BB)), PE(pred_end(BB)); -  // Can't merge the entry block.  Don't merge away blocks who have their -  // address taken: this is a bug if the predecessor block is the entry node -  // (because we'd end up taking the address of the entry) and undesirable in -  // any case. -  if (pred_begin(BB) == pred_end(BB) || -      BB->hasAddressTaken()) return false; +  // Don't merge away blocks who have their address taken. +  if (BB->hasAddressTaken()) return false; -  BasicBlock *PredBB = *PI++; -  for (; PI != PE; ++PI)  // Search all predecessors, see if they are all same -    if (*PI != PredBB) { -      PredBB = 0;       // There are multiple different predecessors... -      break; -    } -   -  // Can't merge if there are multiple predecessors. +  // Can't merge if there are multiple predecessors, or no predecessors. +  BasicBlock *PredBB = BB->getUniquePredecessor();    if (!PredBB) return false; +    // Don't break self-loops.    if (PredBB == BB) return false;    // Don't break invokes.  | 

