The complementary relationship of interprocedural register allocation and inlining
Journal
International Journal of Parallel Programming
Journal Volume
22
Journal Issue
4
Pages
409-434
Date Issued
1994
Author(s)
Abstract
Inline expansion and interprocedural register allocation are two general approaches used for interprocedural optimization. However, there are certain situations which prevent either of them from being applied smoothly to procedure calls. Especially, interactions between inlining and register allocation can cause an inlined version of a program to run more slowly than its noninlined counterpart. This paper describes a method of integrating inlining and interprocedural register allocation to reduce the procedure call overhead without this negative effect. We use profile information to identify the heavy called procedures regions and the register usage information of each code site to optimize the placement of the register save/restore code. This method also takes full advantage of free-use registers at each procedure call site. The average performance improvement is 1.21 compared with the previous schemes that performed either of them independently. © 1994 Plenum Publishing Corporation.
Subjects
Inline expansion; interprocedural register allocation; profile information; register pressure; register upthrust
Other Subjects
Data processing; Optimization; Response time (computer systems); Shift registers; Inline expansion; Interprocedural register allocation; Profile information; Computer operating procedures
Type
journal article