Fix ADCE/2003-12-19-MergeReturn.llx

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10539 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-12-19 09:08:34 +00:00
parent 7fe178681b
commit bd1a90ecc7

View File

@ -14,21 +14,21 @@
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "llvm/Transforms/Scalar.h" #include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Type.h" #include "llvm/Type.h"
#include "llvm/Analysis/PostDominators.h" #include "llvm/Analysis/PostDominators.h"
#include "llvm/iTerminators.h" #include "llvm/iTerminators.h"
#include "llvm/iPHINode.h" #include "llvm/iPHINode.h"
#include "llvm/Constant.h" #include "llvm/Constant.h"
#include "llvm/Support/CFG.h" #include "llvm/Support/CFG.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
#include "Support/Debug.h" #include "Support/Debug.h"
#include "Support/DepthFirstIterator.h" #include "Support/DepthFirstIterator.h"
#include "Support/Statistic.h" #include "Support/Statistic.h"
#include "Support/STLExtras.h" #include "Support/STLExtras.h"
#include <algorithm> #include <algorithm>
using namespace llvm;
namespace llvm {
namespace { namespace {
Statistic<> NumBlockRemoved("adce", "Number of basic blocks removed"); Statistic<> NumBlockRemoved("adce", "Number of basic blocks removed");
@ -61,6 +61,9 @@ public:
// getAnalysisUsage - We require post dominance frontiers (aka Control // getAnalysisUsage - We require post dominance frontiers (aka Control
// Dependence Graph) // Dependence Graph)
virtual void getAnalysisUsage(AnalysisUsage &AU) const { virtual void getAnalysisUsage(AnalysisUsage &AU) const {
// We require that all function nodes are unified, because otherwise code
// can be marked live that wouldn't necessarily be otherwise.
AU.addRequired<UnifyFunctionExitNodes>();
AU.addRequired<PostDominatorTree>(); AU.addRequired<PostDominatorTree>();
AU.addRequired<PostDominanceFrontier>(); AU.addRequired<PostDominanceFrontier>();
} }
@ -101,7 +104,7 @@ private:
RegisterOpt<ADCE> X("adce", "Aggressive Dead Code Elimination"); RegisterOpt<ADCE> X("adce", "Aggressive Dead Code Elimination");
} // End of anonymous namespace } // End of anonymous namespace
Pass *createAggressiveDCEPass() { return new ADCE(); } Pass *llvm::createAggressiveDCEPass() { return new ADCE(); }
void ADCE::markBlockAlive(BasicBlock *BB) { void ADCE::markBlockAlive(BasicBlock *BB) {
// Mark the basic block as being newly ALIVE... and mark all branches that // Mark the basic block as being newly ALIVE... and mark all branches that
@ -474,5 +477,3 @@ bool ADCE::doADCE() {
return MadeChanges; return MadeChanges;
} }
} // End llvm namespace