[llvm-commits] CVS: poolalloc/lib/PoolAllocate/PointerCompress.cpp

Chris Lattner lattner at cs.uiuc.edu
Thu Feb 10 12:47:37 PST 2005



Changes in directory poolalloc/lib/PoolAllocate:

PointerCompress.cpp updated: 1.3 -> 1.4

---
Log message:

Add support for PHI nodes, we can now build RECURSIVE data structures with
LOOPS *gasp* :)


---
Diffs of the changes:  (+14 -0)

Index: poolalloc/lib/PoolAllocate/PointerCompress.cpp
diff -u poolalloc/lib/PoolAllocate/PointerCompress.cpp:1.3 poolalloc/lib/PoolAllocate/PointerCompress.cpp:1.4
--- poolalloc/lib/PoolAllocate/PointerCompress.cpp:1.3	Thu Feb 10 14:39:11 2005
+++ poolalloc/lib/PoolAllocate/PointerCompress.cpp	Thu Feb 10 14:47:27 2005
@@ -295,6 +295,7 @@
     // cases we have to handle.
 
     void visitCastInst(CastInst &CI);
+    void visitPHINode(PHINode &PN);
     void visitStoreInst(StoreInst &SI);
 
     void visitCallInst(CallInst &CI);
@@ -348,6 +349,19 @@
   setTransformedValue(CI, getTransformedValue(CI.getOperand(0)));
 }
 
+void InstructionRewriter::visitPHINode(PHINode &PN) {
+  const CompressedPoolInfo *DestPI = getPoolInfo(&PN);
+  if (DestPI == 0) return;
+
+  PHINode *New = new PHINode(Type::UIntTy, PN.getName(), &PN);
+  New->reserveOperandSpace(PN.getNumIncomingValues());
+
+  for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i)
+    New->addIncoming(getTransformedValue(PN.getIncomingValue(i)),
+                     PN.getIncomingBlock(i));
+  setTransformedValue(PN, New);
+}
+
 void InstructionRewriter::visitStoreInst(StoreInst &SI) {
   const CompressedPoolInfo *DestPI = getPoolInfo(SI.getOperand(1));
   if (DestPI == 0) {





More information about the llvm-commits mailing list