diff options
author | Owen Anderson <resistor@mac.com> | 2008-08-04 23:54:43 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2008-08-04 23:54:43 +0000 |
commit | bd3ba461eb5578a81ba09ff7bd7eb271d1130196 (patch) | |
tree | f97e9269835f2a482c4f28f14e48de796079d007 /include | |
parent | b42a6261225e5a1b9a75b9aa11732944046d7999 (diff) | |
download | external_llvm-bd3ba461eb5578a81ba09ff7bd7eb271d1130196.tar.gz external_llvm-bd3ba461eb5578a81ba09ff7bd7eb271d1130196.tar.bz2 external_llvm-bd3ba461eb5578a81ba09ff7bd7eb271d1130196.zip |
- Fix SelectionDAG to generate correct CFGs.
- Add a basic machine-level dead block eliminator.
These two have to go together, since many other parts of the code generator are unable to handle the unreachable blocks otherwise created.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54333 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/CodeGen/LiveVariables.h | 6 | ||||
-rw-r--r-- | include/llvm/CodeGen/Passes.h | 4 | ||||
-rw-r--r-- | include/llvm/Target/TargetOptions.h | 5 |
3 files changed, 11 insertions, 4 deletions
diff --git a/include/llvm/CodeGen/LiveVariables.h b/include/llvm/CodeGen/LiveVariables.h index d02cfa645d..e2bed5c2ef 100644 --- a/include/llvm/CodeGen/LiveVariables.h +++ b/include/llvm/CodeGen/LiveVariables.h @@ -247,10 +247,8 @@ public: assert(Removed && "Register is not defined by this instruction!"); return true; } - - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.setPreservesAll(); - } + + void getAnalysisUsage(AnalysisUsage &AU) const; virtual void releaseMemory() { VirtRegInfo.clear(); diff --git a/include/llvm/CodeGen/Passes.h b/include/llvm/CodeGen/Passes.h index dd677fa5b1..412e9e3ad8 100644 --- a/include/llvm/CodeGen/Passes.h +++ b/include/llvm/CodeGen/Passes.h @@ -71,6 +71,10 @@ namespace llvm { /// register allocators. extern const PassInfo *const TwoAddressInstructionPassID; + /// UnreachableMachineBlockElimination pass - This pass removes unreachable + /// machine basic blocks. + extern const PassInfo *const UnreachableMachineBlockElimID; + /// Creates a register allocator as the user specified on the command line. /// FunctionPass *createRegisterAllocator(); diff --git a/include/llvm/Target/TargetOptions.h b/include/llvm/Target/TargetOptions.h index fa739507db..6c3d88a43c 100644 --- a/include/llvm/Target/TargetOptions.h +++ b/include/llvm/Target/TargetOptions.h @@ -101,6 +101,11 @@ namespace llvm { /// DisableJumpTables - This flag indicates jump tables should not be /// generated. extern bool DisableJumpTables; + + /// DisableCorrectBranchFolding - This flag indicates whether the instruction + /// selector should take care to update the CFG properly when + /// folding branches. + extern bool DisableCorrectBranchFolding; } // End llvm namespace #endif |