diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-08-16 21:02:59 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-08-16 21:02:59 +0000 |
| commit | 3ca95b020283db6244cab92ede73c969253b6a31 (patch) | |
| tree | d16e791e58694facd8f68d3e2797a1eaa8018afc /contrib/llvm/lib/CodeGen/MachineFunctionPass.cpp | |
| parent | 27067774dce3388702a4cf744d7096c6fb71b688 (diff) | |
| parent | c3aee98e721333f265a88d6bf348e6e468f027d4 (diff) | |
Notes
Diffstat (limited to 'contrib/llvm/lib/CodeGen/MachineFunctionPass.cpp')
| -rw-r--r-- | contrib/llvm/lib/CodeGen/MachineFunctionPass.cpp | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/contrib/llvm/lib/CodeGen/MachineFunctionPass.cpp b/contrib/llvm/lib/CodeGen/MachineFunctionPass.cpp index 05463fc6a1ef..228fe170ab46 100644 --- a/contrib/llvm/lib/CodeGen/MachineFunctionPass.cpp +++ b/contrib/llvm/lib/CodeGen/MachineFunctionPass.cpp @@ -21,11 +21,13 @@ #include "llvm/Analysis/MemoryDependenceAnalysis.h" #include "llvm/Analysis/ScalarEvolution.h" #include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h" +#include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineFunctionAnalysis.h" #include "llvm/CodeGen/Passes.h" #include "llvm/CodeGen/StackProtector.h" #include "llvm/IR/Dominators.h" #include "llvm/IR/Function.h" + using namespace llvm; Pass *MachineFunctionPass::createPrinterPass(raw_ostream &O, @@ -40,7 +42,26 @@ bool MachineFunctionPass::runOnFunction(Function &F) { return false; MachineFunction &MF = getAnalysis<MachineFunctionAnalysis>().getMF(); - return runOnMachineFunction(MF); + MachineFunctionProperties &MFProps = MF.getProperties(); + +#ifndef NDEBUG + if (!MFProps.verifyRequiredProperties(RequiredProperties)) { + errs() << "MachineFunctionProperties required by " << getPassName() + << " pass are not met by function " << F.getName() << ".\n" + << "Required properties: "; + RequiredProperties.print(errs(), /*OnlySet=*/true); + errs() << "\nCurrent properties: "; + MFProps.print(errs()); + errs() << "\n"; + llvm_unreachable("MachineFunctionProperties check failed"); + } +#endif + + bool RV = runOnMachineFunction(MF); + + MFProps.set(SetProperties); + MFProps.clear(ClearedProperties); + return RV; } void MachineFunctionPass::getAnalysisUsage(AnalysisUsage &AU) const { @@ -53,13 +74,13 @@ void MachineFunctionPass::getAnalysisUsage(AnalysisUsage &AU) const { // because CodeGen overloads that to mean preserving the MachineBasicBlock // CFG in addition to the LLVM IR CFG. AU.addPreserved<BasicAAWrapperPass>(); - AU.addPreserved<DominanceFrontier>(); + AU.addPreserved<DominanceFrontierWrapperPass>(); AU.addPreserved<DominatorTreeWrapperPass>(); AU.addPreserved<AAResultsWrapperPass>(); AU.addPreserved<GlobalsAAWrapperPass>(); - AU.addPreserved<IVUsers>(); + AU.addPreserved<IVUsersWrapperPass>(); AU.addPreserved<LoopInfoWrapperPass>(); - AU.addPreserved<MemoryDependenceAnalysis>(); + AU.addPreserved<MemoryDependenceWrapperPass>(); AU.addPreserved<ScalarEvolutionWrapperPass>(); AU.addPreserved<SCEVAAWrapperPass>(); AU.addPreserved<StackProtector>(); |
