Query-directed adaptive heap cloning for optimizing compilers

  • Authors:
  • Yue Li;Jingling Xue;Yulei Sui

  • Affiliations:
  • Programming Languages and Compilers Group School of Computer Science and Engineering University of New South Wales, NSW 2052, Australia;Programming Languages and Compilers Group School of Computer Science and Engineering University of New South Wales, NSW 2052, Australia;Programming Languages and Compilers Group School of Computer Science and Engineering University of New South Wales, NSW 2052, Australia

  • Venue:
  • CGO '13 Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

Andersen's pointer analysis becomes more precise when applied with full heap cloning but unscalable for large, heap-intensive programs. In contrast, k-callsite-sensitive heap cloning can be faster but less precise for some programs. In this paper, we make one step forward by enhancing Andersen's analysis with QUery-Directed Adaptive (QUDA) heap cloning for optimizing compilers. The novelty of our analysis, called QUDA, lies in performing k-callsite-sensitive heap cloning iteratively, starting with k = 0 (without heap cloning), so that an abstract heap object is cloned at iteration k = i + 1 only if some mayalias queries that are not answered positively at iteration k = i may now be answered more precisely. QUDA, which is implemented in Open64, has the same precision as the state-of-the-art, FULCRA, a version of QUDA with exhaustive heap cloning, but is significantly more scalable. For 10 SPEC2000 C benchmarks and 5 C applications (totalling 840 KLOC) evaluated, QUDA takes only 4+ minutes but exhaustive heap cloning takes 42+ minutes to complete. QUDA takes only 75.1 % of the time that Open64 takes on average to compile these 15 programs under “-O2”.