A study of a C function inliner
Software—Practice & Experience
Compile-Time Program Restructuring in Multiprogrammed Virtual Memory Systems
IEEE Transactions on Software Engineering
Inline function expansion for compiling C programs
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Achieving high instruction cache performance with an optimizing compiler
ISCA '89 Proceedings of the 16th annual international symposium on Computer architecture
Termination proofs for logic programs based on predicate inequalities
Logic programming
Procedure merging with instruction caches
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Graphs: theory and algorithms
Profile-guided automatic inline expansion for C programs
Software—Practice & Experience
Fast parallel implementation of lazy languages—the EQUALS experience
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Compiler optimization by detecting recursive subprograms
ACM '85 Proceedings of the 1985 ACM annual conference on The range of computing : mid-80's perspective: mid-80's perspective
An analysis of inline substitution for a structured programming language
Communications of the ACM
Recursion analysis for compiler optimization
Communications of the ACM
Inlining to Reduce Stack Space
PLILP '93 Proceedings of the 5th International Symposium on Programming Language Implementation and Logic Programming
Program improvement by the selective integration of procedure calls
Program improvement by the selective integration of procedure calls
A note on “On the conversion of indirect to direct recursion”
ACM Transactions on Programming Languages and Systems (TOPLAS)
Recursive function data allocation to scratch-pad memory
CASES '07 Proceedings of the 2007 international conference on Compilers, architecture, and synthesis for embedded systems
Calculating polynomial runtime properties
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Regression verification for multi-threaded programs
VMCAI'12 Proceedings of the 13th international conference on Verification, Model Checking, and Abstract Interpretation
Evaluating inlining techniques
Computer Languages
Hi-index | 0.00 |
Procedure inlining can be used to convert mutual recursion to direct recursion. This allows use of optimization techniques that are most easily applied to directly recursive procedures, in addition to the well-known benefits of inlining. We present tight (necessary and sufficient) conditions under which inlining can transform all mutual recursion to direct recursion, and those under which heuristics to eliminate mutual recursion always terminate. We also present a technique to eliminate mutually recursive circuits that consist of only tail calls. From this, we conclude that tail recursion elimination should be interleaved with inlining.