Bidirectional liveness analysis, or how less than half of the Alpha's registers are used

  • De Sutter B
  • De Bus B
  • De Bosschere K
  • 5


    Mendeley users who have this article in their library.
  • 2


    Citations of this article.


Interprocedural data flow analyses of executable programs suffer from the conservative assumptions that need to be made because no precise control flow graph is available and because registers are spilled onto the stack. This paper discusses the exploitation of calling-conventions in executable code data flow analyses to avoid the propagation of the conservative assumptions throughout a program. Based on this exploitation, the existing backward liveness analyses are improved, and a complementary forward liveness analysis is proposed. For the SPECint2000 programs compiled for the Alpha architecture, the combined forward and improved backward analysis on average finds 62% more free registers than the existing state-of-the-art liveness analysis. With the improved analysis, we are able to show that on an average less than half of the registers of the RISC Alpha architecture are used. This contradicts the common wisdom that compilers can exploit large, uniform register files as found on RISC architectures. © 2006 Elsevier B.V. All rights reserved.

Author-supplied keywords

  • Data flow analysis
  • Link-time
  • Liveness analysis
  • Registers

Get free article suggestions today

Mendeley saves you time finding and organizing research

Sign up here
Already have an account ?Sign in

Find this document


  • Bjorn De Sutter

  • Bruno De Bus

  • Koen De Bosschere

Cite this document

Choose a citation style from the tabs below

Save time finding and organizing research with Mendeley

Sign up for free