This commit merges the latest LLVM sources from the vendor space. It also updates the build glue to match the new sources. Clang's version number is changed to match LLVM's, which means /usr/include/clang/2.0 has been renamed to /usr/include/clang/2.8. Obtained from: projects/clangbsd
59 lines
1.6 KiB
C++
59 lines
1.6 KiB
C++
//===- MachineDominators.cpp - Machine Dominator Calculation --------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file implements simple dominator construction algorithms for finding
|
|
// forward dominators on machine functions.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/CodeGen/MachineDominators.h"
|
|
#include "llvm/CodeGen/Passes.h"
|
|
|
|
using namespace llvm;
|
|
|
|
namespace llvm {
|
|
TEMPLATE_INSTANTIATION(class DomTreeNodeBase<MachineBasicBlock>);
|
|
TEMPLATE_INSTANTIATION(class DominatorTreeBase<MachineBasicBlock>);
|
|
}
|
|
|
|
char MachineDominatorTree::ID = 0;
|
|
|
|
static RegisterPass<MachineDominatorTree>
|
|
E("machinedomtree", "MachineDominator Tree Construction", true);
|
|
|
|
const PassInfo *const llvm::MachineDominatorsID = &E;
|
|
|
|
void MachineDominatorTree::getAnalysisUsage(AnalysisUsage &AU) const {
|
|
AU.setPreservesAll();
|
|
MachineFunctionPass::getAnalysisUsage(AU);
|
|
}
|
|
|
|
bool MachineDominatorTree::runOnMachineFunction(MachineFunction &F) {
|
|
DT->recalculate(F);
|
|
|
|
return false;
|
|
}
|
|
|
|
MachineDominatorTree::MachineDominatorTree()
|
|
: MachineFunctionPass(&ID) {
|
|
DT = new DominatorTreeBase<MachineBasicBlock>(false);
|
|
}
|
|
|
|
MachineDominatorTree::~MachineDominatorTree() {
|
|
delete DT;
|
|
}
|
|
|
|
void MachineDominatorTree::releaseMemory() {
|
|
DT->releaseMemory();
|
|
}
|
|
|
|
void MachineDominatorTree::print(raw_ostream &OS, const Module*) const {
|
|
DT->print(OS);
|
|
}
|