Index: src/IceCfgNode.h |
diff --git a/src/IceCfgNode.h b/src/IceCfgNode.h |
index bf96aefc23731c42777d901f0dfd6f5f874f2e7e..645dc573a8d281ed45d037918dbc697bc02fc6a4 100644 |
--- a/src/IceCfgNode.h |
+++ b/src/IceCfgNode.h |
@@ -29,6 +29,14 @@ public: |
// Access the label number and name for this node. |
SizeT getIndex() const { return Number; } |
IceString getName() const; |
+ IceString getAsmName() const { |
+ return ".L" + Func->getFunctionName() + "$" + getName(); |
+ } |
+ |
+ // The HasReturn flag indicates that this node contains a return |
+ // instruction and therefore needs an epilog. |
+ void setHasReturn() { HasReturn = true; } |
+ bool getHasReturn() const { return HasReturn; } |
// Access predecessor and successor edge lists. |
const NodeList &getInEdges() const { return InEdges; } |
@@ -42,6 +50,11 @@ public: |
// node's successors. |
void computePredecessors(); |
+ void placePhiLoads(); |
+ void placePhiStores(); |
+ void deletePhis(); |
+ void genCode(); |
+ void emit(Cfg *Func) const; |
void dump(Cfg *Func) const; |
private: |
@@ -51,6 +64,7 @@ private: |
Cfg *const Func; |
const SizeT Number; // label index |
IceString Name; // for dumping only |
+ bool HasReturn; // does this block need an epilog? |
NodeList InEdges; // in no particular order |
NodeList OutEdges; // in no particular order |
PhiList Phis; // unordered set of phi instructions |