| Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software - Practice and Experience (SPE), 18(8):775--790, 1989. |
....concerning miss rates to be answered relatively easily and with reasonable accuracy. It is ideally suited for evaluating the relative difference between two designs. For example, our model can predict the effect on the miss rate of changing the program size, say, due to procedure inlining [5] [8] 9] or due to compression [17] The numbers gathered by the gap model provide insight into why various misses are occurring. In particular, our model clearly indicates whether cache misses are compulsory, conflict and capacity [6] 7] Our model also shows which basic blocks are likely to ....
Jack W. Davidson and Anne M. Holler. A Study of a C Function Inliner. Software Practice and Experience, 18(8):775--790, August 1988.
.... programs, considering not only the increased code size as the cost of inline substitution of a call site, but also the size of the control stack during execution [HC89] Davidson and Holler also implemented source to source inlining for C programs, giving results for 4 different target compilers [DH88] They report an average execution time improvement of 12 percent on 13 programs. However, the improvements range from a 60 percent improvement to a 9 percent degradation. They attribute the cases of increased execution time to be caused primarily by register pressure. The only variables ....
....input data. 83 ffl Hwu and Chang use a similar approach, considering not only the increased code size as the cost of inlining, but also the size of the control stack during execution [HC89] ffl Davidson and Holler substitute called procedures when their caller appears in the same source file [DH88] They avoid inlining for recursion and when register declarations would exceed the number available to the compiler. In her dissertation, a model for predicting the improvement to a call site due to inlining is presented [Hol91] The model considers the following costs: saving and restoring ....
[Article contains additional citation context not shown here]
J. W. Davidson and A. M. Holler. A study of a C function inliner. Software---Practice and Experience, 18(8):775--790, August 1988.
....parts in the unrolled code. Finally, for all our benchmarks, the combined effects of conditional fusion and recursion re rolling always improves the running times as compared with the programs with recursion unrolling alone. 6 Related Work Procedure inlining is a classical compiler optimization [3, 2, 4, 6, 12, 7, 11]. The usual goal is to eliminate procedure call and return overhead and to enable further optimizations by exposing the combined code of the caller and callee to the intraprocedural optimizer. Some researchers have reported a variety of performance improvements from procedure inlining; others have ....
J. W. Davidson and A. M. Holler. A study of a C function inliner. Software---Practice and Experience, 18(8):775--790, August 1988.
.... compilers, optimization Additional Keywords and Phrases: inline substitution, interprocedural analysis, interprocedural optimization 1 Introduction In recent years, many articles dealing with issues of interprocedural analysis and interprocedural optimization have appeared in the literature [1, 2, 5, 6, 7, 10, 12, 14, 17, 18, 19, 20, 21]. Several of these articles have attempted to assess the practical value of interprocedural data flow information or of specific cross procedural transformations. Ganapathi and Richardson point out that inline substitution can be viewed as an upper limit on the improvement available through use of ....
J. W. Davidson and A. M. Holler. A study of a C function inliner. Software -- Practice and Experience, 18(8):775--790, Aug. 1988.
.... Work Profile driven function inlining and cloning have been shown to have a large to moderate positive impact on performance of C codes depending on the use of profile information and heuristics [1, 3, 6, 16] Others have had positive, but less dramatic speedups for C without the use of profiling [8]. A study of inlining on Fortran codes indicated that there exists potential for performance degradation due to such secondary effects as increased register pressure, and that inlining should be considered primarily when it can be shown to enable high payoff optimizations [13] All of these ....
J. W. Davidson and A. M. Holler. A study of a C function inliner. Software Practice and Experience, 18(8):775--790, Aug. 1988.
....been developed to modularize the interprocedural data flow analysis problem [52, 64] Results of research in a demand driven approach to interprocedural data flow analysis [26, 27, 45] have shown that overhead can be reduced compared to more exhaustive methods. 2.3. 2 Inlining Procedure inlining [2, 4, 5, 12, 16, 21, 22, 23, 46, 49, 56] is a widely researched and accepted means to enable whole program optimization. In procedure inlining, procedure calls are physically replaced with the complete body of the procedure being called. This reduces hidden memory aliasing behavior, and exposes more sequential code to the compiler for ....
.... Profile driven function inlining and cloning has been shown to have a large to moderate positive impact on the performance of C codes depending on the use of profile information and heuristics [5, 16, 46] Others have had positive, but less dramatic speedups for C without the use of profiling [21]. A study of inlining on Fortran codes indicated that there exists potential for performance degradation due to such secondary effects as increased register pressure, and that inlining should be considered primarily when it can be shown to enable high payoff optimizations [36] All of these ....
J. W. Davidson and A. M. Holler. A study of a C function inliner. Software Practice and Experience, 18(8):775--790, Aug. 1988.
....the body of that procedure. In addition to reducing procedure call overheads, inlining also allows the body of an inlined procedure to be analyzed and optimized specific to its called context [200] One disadvantage of inlining is that it increases the size of the executable although a study in [83] concludes that this size increase is not a problem in practice. 84] is another reference that discusses various factors that influence the speedup of inlined code. Inlining is a useful optimization technique in an object oriented language because there often exist short but often called ....
Jack W. Davidson and Anne M. Holler. A Study of a C Function Inliner. Software -- Practice and Experience, 18(8):775--790, August 1988.
....and today it is part of many research systems (e.g. CM 92] Hl94] G 95] as well as production compilers. Studies of inlining for procedural languages like C or Fortran have found that it often does not significantly increase execution speed but tends to significantly increase code size (e.g. [DH88], HwC89] CHT91] CM 92] Hall91] Our results indicate that these previous results do not apply to C programs. In implementations of dynamic or object oriented languages, profiling information has often been used to identify (and optimize for) common cases. For example, Lisp systems ....
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software---Practice and Experience 18(8): 775-90, August 1988.
....They showed that the primary gain from procedure merging is primarily from removal of calls and returns. The savings from merging is largely orthogonal to optimization savings. Using this fact, they propose optimizing before merging to reduce the execution time of optimization. Davidson and Holler [DH88, DH89] implemented a source to source procedure inliner for the language C. Deeply nested calls are inlined first. Inlining stops when there are no more registers available to hold the variables assigned to registers by the programmer. If user assignments are ignored, inlining can slow the program down ....
....effort just calculating the degree inlining procedures with constant parameters enables additional optimization. However, for the MIPS X architecture [HCe87] the removal of call and return code tends to dominate the other factors. Richardson and Ganapathi [RG89b] along with Davidson and Holler [DH88] found similar results for other architectures. Thus, a simple estimate can be used based on the typical number of instructions eliminated for each removed call. More complex estimates would produce better results, but this simple method is sufficient to demonstrate the usefulness of considering ....
J. W. Davidson and A. M. Holler. A study of a C function inliner. Software-- Practice and Experience, 18(8):775--790, 1988.
....to adjust the amount of inlining dynamically for development (recompiling) or shrink wrapping mode. But the automatic cross module inlining schemes used to date have not treated free variables, nested scopes, higherorder functions, or link time side e#ects from module level initializers [DH88, CHT91, CMCH92] They cannot move a function body from module A to module B if the function has a free variable that is not exported from A and cannot be copied into B. This limits the generality of existing approaches, especially when applied to higher order functional languages. One might ....
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software---Practice and Experience, 18(8):775--790, August 1988.
....would result in larger basic blocks that could be exploited e ectively by instruction scheduling. The main source of the function calls remaining after inline expansion are system calls to the operating system and they express the need for further research in that area. Davidson and Holler [20] described INLINER, an implementation of a C source to source automatic inliner and achieve a mean speedup of 12 with a maximum speedup of about 35 . Their main observation was that the increased register pressure as a result of inlining can have detrimental e ects on performance. They do not ....
....improvement in performance as a result of performing our optimization on a set of benchmarks in Chapter 4. This optimization has been implemented on the Jimple intermediate representation and the Soot framework is used to produce optimized class les. 44 3. 1 Method Inlining Method inlining [14, 11, 31, 16, 20, 21, 18, 19, 17, 34, 28, 10] is an optimization technique that has been used by optimizing compilers traditionally for both procedural and object oriented languages. The basic idea in method inlining is to statically replace a method invocation instruction by the code representing the body of the method that is the target of ....
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software Practice and Experience, 18(8):775-790, August 1988. 107
....in complete form to the analysis, the inliner, and the rest of the compiler. Hence the compiler was able to treat procedures that would have been bound in the top level environment as lexically bound procedures. As a result, our speedups and code growth are comparable to those reported by others [10, 13]. Static analyses have been used to reduce method dispatch overhead in object oriented languages by either inlining calls or converting them to static dispatches [1, 14, 20, 21, 22] Agesen and Holze obtain good speedups for Cecil as well, averaging about 10 improvement. Plevyak and Chien obtain ....
....improve if it did. While the simplification pass is able to use the inlining results to perform more constant folding, copy propagation, and useless binding elimination, the register allocator [8] does not take advantage of the larger procedure bodies introduced by inlining. As Davidson and Holler [13] indicate, it can even be detrimental to inline without cooperation from the register allocator. Acknowledgments: We thank Suresh Jagannathan, Andrew Wright, and Marc Feeley for making their benchmarks available. ....
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software -- Practice and Experience, 18(8):775--790, August 1988.
....in complete form to the analysis, the inliner, and the rest of the compiler. Hence the compiler was able to treat procedures that would have been bound in the top level environment as lexically bound procedures. As a result, our speedups and code growth are comparable to those reported by others [10, 13]. Static analyses have been used to reduce method dispatch overhead in object oriented languages by either inlining calls or converting them to static dispatches [1, 14, 20, 21, 22] Agesen and Holze obtain good speedups for Cecil as well, averaging about 10 improvement. Plevyak and Chien obtain ....
....improve if it did. While the simplification pass is able to use the inlining results to perform more constant folding, copy propagation, and useless binding elimination, the register allocator [8] does not take advantage of the larger procedure bodies introduced by inlining. As Davidson and Holler [13] indicate, it can even be detrimental to inline without cooperation from the register allocator. Acknowledgments: We thank Suresh Jagannathan, Andrew Wright, and Marc Feeley for making their benchmarks available. ....
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software -- Practice and Experience, 18(8):775--790, August 1988.
....to adjust the amount of inlining dynamically for development (recompiling) or shrink wrapping mode. But the automatic cross module inlining schemes used to date have not treated free variables, nested scopes, higher order functions, or link time side effects from module level initializers [DH88, CHT91, CMCH92] They cannot move a function body from module A to module B if the function has a free variable that is not exported from A and cannot be copied into B. This limits the generality of existing approaches, especially when applied to higher order functional languages. Our new ....
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software--- Practice and Experience, 18(8):775--790, August 1988.
....optimizations. I developed # splitting as a technique for automatic cross module optimizations that is able to treat free variables, nested scopes, higher order functions, and link time side effects from module level initialization code. The automatic cross module inlining schemes used to date [DH88, CHT91, CMCH92] were unable to do so, or they failed to preserve efficient separate compilation [Sch77, CHT91] Example: Abstract data types. The symbol type of a compiler is a good showcase example for abstract data types. Appel [App97] uses a definition close to the following: signature ....
....to adjust the amount of inlining dynamically for development (recompiling) or shrink wrapping mode. But the automatic cross module inlining schemes used to date have not treated free variables, nested scopes, higher order functions, or link time side effects from module level initializers [DH88, CHT91, CMCH92] They cannot move a function body from compilation unit A to compilation unit B if the function has a free variable that is not exported from A and cannot be copied into B. This limits the generality of existing approaches, especially when applied to higher order functional ....
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software---Practice and Experience, 18(8):775--790, August 1988.
....feedback information rather than performing a global type flow analysis. In other words, it remains to be seen if global (whole program) analyses can significantly improve performance over a type feedback based system. 5.8. 4 Inlining Inlining has been studied extensively for procedural languages [29, 36, 39, 62, 74]. For these languages, inlining is simpler since they do not (or only rarely) use dynamic dispatch. Furthermore, inlining candidates are easier to analyze because the space and time cost of most language constructs is known. In contrast, the source reveals almost no 45 implementation information ....
..... 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 execution time ratio SELF 93 SELF 93 nofeedback call frequency ratio SELF 93 SELF 93 nofeedback DeltaBlue PrimMaker Richards CecilComp CecilInt Mango Typeinf UI1 UI3 Geom. mean 73 was found to have only small benefits, if any [29, 36, 39, 62, 74]. We attribute this discrepancy to a number of significant differences between SELF and conventional languages: 1. In SELF, procedures (methods) are much smaller on average than in C or Fortran because every operation (including very simple ones, like integer arithmetic and array accesses) ....
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software---Practice and Experience 18(8): 775-90.
....therefore to more optimisations. But inlining must be done carefully, since excessive inlining can easily lead to a large increase in code size as one is in fact duplicating code. In imperative languages compilers inlining has been reported to improve programs execution time by 18 [RG89] 12 [DH88] and 10 [Cho83] DH92] presents a comprehensive analysis on the effect of inlining in imperative languages. In the functional framework, function definitions can also be inlined at their call sites. There is the same risk of code explosion due to excessive code duplication, but, done in a ....
J. W. Davidson and A. M. Holler. A study of a C function inliner. Software Practice and Experience, 18:775--790, 1988.
....above. 3. 3 Inlining and Loop Unrolling Inlining and loop unrolling are valuable optimizations in conventional compilers because they yield increased opportunities for optimization, eliminate the overhead of function calls, and improve the amortization of computations such as range checks [DH88]. The extent to which these optimizations may be performed at compile time is rather limited, however. Loop bounds are usually unknown, and a loop can only be unrolled a fixed number of times. Special case code containing numerous branches is required when unrolling a 0 10 20 30 40 50 60 70 80 ....
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software --- Practice and Experience, 18(8):775--790, 1988.
No context found.
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software - Practice and Experience (SPE), 18(8):775--790, 1989.
No context found.
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software - Practice and Experience (SPE), 18(8):775{ 790, 1989.
No context found.
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software---Practice and Experience 18(8): 775-90, August 1988.
No context found.
Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software--- Practice and Experience 18(8): 775-90, August 1988.
No context found.
J. W. Davidson and A. M. Holler, A Study of a C Function Inliner, Software---Practice and Experience, 18(8), August 1988, 775-790.
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