summaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/FunctionLoweringInfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/CodeGen/FunctionLoweringInfo.h')
-rw-r--r--include/llvm/CodeGen/FunctionLoweringInfo.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/include/llvm/CodeGen/FunctionLoweringInfo.h b/include/llvm/CodeGen/FunctionLoweringInfo.h
index 27631b7ea1..6bc10dfaa3 100644
--- a/include/llvm/CodeGen/FunctionLoweringInfo.h
+++ b/include/llvm/CodeGen/FunctionLoweringInfo.h
@@ -101,14 +101,30 @@ public:
#endif
struct LiveOutInfo {
- unsigned NumSignBits;
+ unsigned NumSignBits : 31;
+ bool IsValid : 1;
APInt KnownOne, KnownZero;
- LiveOutInfo() : NumSignBits(0), KnownOne(1, 0), KnownZero(1, 0) {}
+ LiveOutInfo() : NumSignBits(0), IsValid(false), KnownOne(1, 0),
+ KnownZero(1, 0) {}
};
/// LiveOutRegInfo - Information about live out vregs.
IndexedMap<LiveOutInfo, VirtReg2IndexFunctor> LiveOutRegInfo;
+ /// VisitedBBs - Basic blocks that have been visited by reverse postorder.
+ DenseSet<const BasicBlock*> VisitedBBs;
+
+ /// AllPredsVisited - Tracks whether all predecessors of the current basic
+ /// block have already been visited.
+ bool AllPredsVisited;
+
+ /// PHIDestRegs - Virtual registers that are the destinations of PHIs.
+ DenseSet<unsigned> PHIDestRegs;
+
+ /// PHISrcToDestMap - Maps the virtual register defining a PHI's source to the
+ /// virtual register defining its destination.
+ DenseMap<unsigned, unsigned> PHISrcToDestMap;
+
/// PHINodesToUpdate - A list of phi instructions whose operand list will
/// be updated after processing the current basic block.
/// TODO: This isn't per-function state, it's per-basic-block state. But