Poolalloc code that implements runtime mapping between pointers and pools.

Hi Fellows,

I’ve started to study the parts of the poolalloc code related to runtime pool tracking. AFAIU, Poolalloc uses extra variables/tags for each pointer to encode which pool the pointer was allocated from. Could you point me to which parts of the poolalloc code implement that functionality (i.e., related to tracking pools at runtime)?

Also, of all the examples that I’ve tried, none of them actually shows the pools being allocated. E.g., I tried a few sample programs (e.g. figure 1 of the pldi’2005 paper, and a DFS graph traversal using adjacency list etc) … but none of them demonstrates that any pool actually gets allocated for the program. The message I got is always something like:

Pool allocating 0 global nodes!
[main] 1 nodes pool allocatable

The command I am using is opt -S -load ./LLVMDataStructure.so -load ./poolalloc.so -paheur-AllHeapNodes -poolalloc < test.ll > test-pa.ll.

I wonder if anyone could post an example program that has been verified to get pool-allocated under their environment … or the options to opt are not sufficient enough for the task. Thanks so very much in advance.

Best Regards,