[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