11 citations found. Retrieving documents...
Vatsa Santhanam and Daryl Odnert. Register allocation across procedure and module boundaries. SIGPLAN Notices, 25(6):28--39, June 1990. Proceedings of the ACM SIGPLAN '90 Conference on Programming Language Design and Implementation.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:
Code Compression Techniques for Embedded Systems - Nyström, Runeson, Sjödin   (Correct)

....the number of register to register copies through coalescing [8] we expect that the overhead of procedure calls can be kept low. To reduce the overhead of saving and restoring registers at procedure calls, it will probably be worthwhile to consider an interprocedural register allocation technique [1,17,16,10]. An ambitious compiler for an embedded processor could of course apply code compression at both the intermediate code and machine code. Code compression applied to intermediate code can recognize repeated occurrences of large program fragments, will not miss opportunities due to the effects of ....

Vatsa Santhanam and Daryl Odnert. Register allocation across procedure and module boundaries. SIGPLAN Notices, 25(6):28--39, June 1990. Proceedings of the ACM SIGPLAN '90 Conference on Programming Language Design and Implementation.


Systems for Late Code Modification - Wall (1992)   (26 citations)  (Correct)

....being linked to reflect this choice. Register allocation is a fairly high level optimization, however, and other approaches have been taken, such as monolithic compilation of source modules or intermediate language modules [3,10,20] or compilation with reference to program summary databases [19]. Optimization removes unnecessary operations; instrumentation adds them. A common form of machine level instrumentation is basic block counting. We transform a program into an equivalent program that also counts each basic block as it is executed. Running the instrumented program gives us an ....

Vatsa Santhanam and Daryl Odnert. Register allocation across procedure and module boundaries. Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, pp. 28-39. Published as SIGPLAN Notices 25 (6), June 1990.


Predicting Program Behavior Using Real or Estimated Profiles - Wall (1990)   (58 citations)  (Correct)

....a profile is unrealistic, and can lead to inflated expectations of a profile driven optimization. i 1. Introduction Many people have built or speculated on systems that use a run time profile to guide code optimization. Applications include the selection of variables to promote to registers [7,8], placement of code sequences to improve cache behavior [3,6] and prediction of common control paths for optimizations across basic block boundaries [2,5] When such work is presented, two questions are often asked but seldom adequately answered. How well does a profile from one run predict the ....

Vatsa Santhanam and Daryl Odnert. Register allocation across procedure and module boundaries. Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, pp. 28-39. Published as SIGPLAN Notices 25 (6), June 1990.


Experience with a Software-Defined Machine Architecture - Wall (1991)   (6 citations)  (Correct)

....a more complete picture of the program than is usually available to a compiler in an environment of separately compiled modules. We might approach this problem by compiling all the modules in one monolithic compilation. More recently, some compilers have maintained persistent program databases [34], triggering recompilation of modules when new information shows this to be necessary. In either case, it is awkward to include library routines in the process, since users don t want to worry about what library modules are included. Our solution is to wait until link time to select the variables ....

....greatest success was the technique of link time code modification. By itself, register allocation at link time may be overkill; very global optimization by monolithic compilation of source files or of intermediate code files [12,21,36,45] or perhaps by reference to persistent program data bases [34] could still turn out to be a better tradeoff. But our machinery for code modification led us to develop a wide variety of tools for performance analysis at the source and machine levels. Most of these tools actually require very little of the machinery we implemented, but their advantage is ....

Vatsa Santhanam and Daryl Odnert. Register allocation across procedure and module boundaries. Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, pp. 28-39. Published as SIGPLAN Notices 25 (6), June 1990.


Systems for Late Code Modification - Wall (1991)   (26 citations)  (Correct)

....modules being linked to reflect this choice. Register allocation is a fairly high level optimization, however, and other approaches have been taken, such as monolithic compilation of source modules or intermediate language modules [15] or compilation with reference to program summary databases [14]. Optimization removes unnecessary operations; instrumentation adds them. A common form of machine level instrumentation is basic block counting. We transform a program into an equivalent program that also counts each basic block as it is executed. Running the instrumented program gives us an ....

Vatsa Santhanam and Daryl Odnert. Register allocation across procedure and module boundaries. Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, pp. 28-39. Published as SIGPLAN Notices 25 (6), June 1990.


Minimum Cost Interprocedural Register Allocation - Kurlander, Fischer (1996)   (6 citations)  (Correct)

....registers are exhausted, they switch to an intraprocedural allocation. This approach may introduce register spilling around calls in frequently executed procedures near the top of a call graph. The approach we propose avoids register spilling across frequently executed calls. Santhanam and Odnert [SO90] perform interprocedural register allocation over clusters of frequently executed procedures. Their heuristic aims to move spill code to the root node of a cluster. The approach we propose examines the entire call graph to generate a minimum cost allocation spilling registers as inexpensively as ....

Vatsa Santhanam and Daryl Odnert. Register allocation across procedure and module boundaries. In Proceedings of SIGPLAN '90 Conference on Programming Language Design and Implementation, pages 28--39, June 1990.


A Comprehensive Approach to Parallel Data Flow Analysis - Lee, Ryder (1992)   (1 citation)  (Correct)

....Lack of precise data flow information limits the tools that use it to ensure the correctness of program transformations. For example, an optimizing compiler cannot perform aggressive optimizations such as interprocedural constant propagation [CCKT86] and interprocedural register allocation [SO90] A parallel programming tool cannot aid users as effectively in parallelizing their programs because of too many spurious data dependences [HHLS90] Furthermore, without such information a debugger cannot focus one s attention on a reasonably small portion of code where errors may exist, ....

Vatsa Santhanam and Daryl Odnert. Register allocation across procedure and module boundaries. In Proceedings of the SIGPLAN '90 Conference on Programming Languages Design and Implementation, pages 28--39, June 1990.


Zero-cost Range Splitting - Kurlander, Fischer (1994)   (3 citations)  (Correct)

....registers The more register candidates a program has, the greater is the potential to take advantage of extra registers generated by our live range splitting. Loop unrolling, software pipelining, scalar replacement [CCK90] code inlining, and interprocedural register allocation [Wal86] Cho88] SO90] significantly increase the demand for registers. A greater competition for registers can lead to an increase in register spilling and false register dependencies between instructions. The following is a (non exhaustive) list of optimizations that are possible as part of a final pass over the ....

....callee saved register to the live range. 4. Applying interprocedural register allocation, a freed register around a call can allow the called procedure and its descendants in the call graph (assuming the current procedure dominates these procedures in the call graph) to make use of the register [SO90] In this paper we will use live range splitting to remove false register dependencies. 4 Live Range Splitting We aim for Chaitin s style of live range splitting, that is, we try to insert a load for each use of a live range and a store after each definition. Since the loads can be close to the ....

Vatsa Santhanam and Daryl Odnert. Register allocation across procedure and module boundaries. In Proceedings of SIGPLAN '90 Conference on Programming Language Design and Implementation, pages 28--39, June 1990.


Register Allocation via Graph Coloring - Briggs (1992)   (72 citations)  (Correct)

....allocator operates at this level. Other examples include work by Chow and Hennessy and work by Callahan and Koblenz [26, 16] ffl Interprocedural register allocation works over a collection of routines, usually an entire program. Examples include work by Wall and work by Santhanam and Odnert [63, 58]. We believe that global register allocation is required to support global optimization. 1.3 Register Allocation and Graph Coloring Unfortunately, good register allocation is difficult. Idiosyncratic machine details complicate even the simplest allocators. Robust allocators must also deal ....

Vatsa Santhanam and Daryl Odnert. Register allocation across procedure and module boundaries. SIGPLAN Notices, 25(6):28--39, June 1990. 143 Proceedings of the ACM SIGPLAN '90 Conference on Programming Language Design and Implementation.


Whole-Program Optimization for Time and Space Efficient Threads - Grunwald, Neves (1996)   (11 citations)  (Correct)

....for functional languages, but less common for imperative languages. Wall and Powell describe the Mahler [23] system, which allowed link time optimizations. Benitez and Davidson [5] describe VPO, the very portable optimizer, which was capable of some link time optimizations. Santhanam and Odnert [16] described an interprocedural register allocation algorithm constructed using the compilers on the HP PA RISC. More recently, Srivastiva and Wall [20] describe OM, a system for intermodule code optimization. The program analysis system we use ATOM, is based on this technique, and we used this ....

Vatsa Santhanamand Daryl Odnert. Register allocation across procedureand module boundaries. In Proceedingsof the ACM SIGPLAN '90 Conferenceon Programming LanguageDesign and Implementation, pages 28--39, June 1990.


Adaptive Compilation for Complex Uniprocessor Hardware - Daumueller, Stefanovic (1994)   (Correct)

....approximate solutions. We want to find out if it is possible to determine this structure exploratively. In particular, adaptive search techniques (also known as learning) may be used to this end. 2 Related Work In the literature, some approaches deal with register allocation [Cha82, BCKT89, CH90, San90, Project Description 7 CK91] some with instruction scheduling [GM86, GR90, War90, BR91] and some try to perform register allocation and instruction scheduling simultaneously or try to integrate it best [Kar84, Mor91, BEH91, PF91, BHE91] Two approaches were found where the machine was ....

....are singled out in each tile. Final spill decisions are made according to control flow information (e.g. where along the tile tree should the variable be spilled) and using statistics. The algorithm claims to have superior performance with inline expansion and procedure calls. Santhaman [San90] describes a method for compiling programs using interprocedural register allocation. A strategy for handling programs built from multiple modules is presented, as well as algorithms for global variable promotion and register spill code motion. The approach uses profiling information. Most of ....

Vatsa Santhaman. Register allocation across procedure and module boundaries. In Proceedings of the ACM SIGPLAN 90 Conference on Programming Language Design and Implementation., 1990.

Online articles have much greater impact   More about CiteSeer.IST   Add search form to your site   Submit documents   Feedback  

CiteSeer.IST - Copyright Penn State and NEC