Index: src/IceCfgNode.h |
diff --git a/src/IceCfgNode.h b/src/IceCfgNode.h |
index 031c76cf3bc1ebcbf1009db19fc08bc5a3eec6e3..aa836c09b28a5a5f6f5c6d149691db83ad67f030 100644 |
--- a/src/IceCfgNode.h |
+++ b/src/IceCfgNode.h |
@@ -46,6 +46,9 @@ public: |
void setHasReturn() { HasReturn = true; } |
bool getHasReturn() const { return HasReturn; } |
+ void setNeedsPlacement(bool Value) { NeedsPlacement = Value; } |
+ bool needsPlacement() const { return NeedsPlacement; } |
+ |
// Access predecessor and successor edge lists. |
const NodeList &getInEdges() const { return InEdges; } |
const NodeList &getOutEdges() const { return OutEdges; } |
@@ -64,16 +67,19 @@ public: |
// Add a predecessor edge to the InEdges list for each of this |
// node's successors. |
void computePredecessors(); |
+ CfgNode *splitIncomingEdge(CfgNode *Pred, SizeT InEdgeIndex); |
void placePhiLoads(); |
void placePhiStores(); |
void deletePhis(); |
+ void advancedPhiLowering(); |
void doAddressOpt(); |
void doNopInsertion(); |
void genCode(); |
void livenessLightweight(); |
bool liveness(Liveness *Liveness); |
void livenessPostprocess(LivenessMode Mode, Liveness *Liveness); |
+ void contractIfEmpty(); |
void doBranchOpt(const CfgNode *NextNode); |
void emit(Cfg *Func) const; |
void dump(Cfg *Func) const; |
@@ -84,6 +90,7 @@ private: |
const SizeT Number; // label index |
IceString Name; // for dumping only |
bool HasReturn; // does this block need an epilog? |
+ bool NeedsPlacement; |
InstNumberT InstCountEstimate; // rough instruction count estimate |
NodeList InEdges; // in no particular order |
NodeList OutEdges; // in no particular order |