mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-07 14:33:15 +00:00
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:
parent
7fe178681b
commit
bd1a90ecc7
@ -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
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user