Abstract

Interprocedural memory SSA form, which provides a sparse data-flow representation for indirect memory operations, paves the way for many advanced program analyses. Any performance improvement for memory SSA construction benefits for a wide range of clients (e.g., bug detection and compiler optimisations). However, its construction is much more expensive than that for scalar-based SSA form. The memory objects distinguished at a pointer dereference significantly increases the number of variables that need to be put on SSA form, resulting in considerable analysis overhead when analyzing large programs (e.g., millions of lines of code).This paper presents ParSSA, a fully parameterised approach for parallel construction of interprocedural memory SSA form by utilising multi-core computing resources. ParSSA partitions whole-program memory objects into uniquely identified memory regions. The indirect memory accesses in a function are fully parameterised using partitioned memory regions, so that the memory SSA construction of a parameterised function is readily parallelised. We implemented ParSSA in LLVM using Intel Threading Building Block (TBB) for creating parallel tasks. We evaluated ParSSA using 15 large applications. ParSSA achieves up to 6.9 × speedup against the sequential version on an 8-core machine.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call