C: a language for high-level, efficient, and machine-independent dynamic code generation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Tempo: specializing systems applications and beyond
ACM Computing Surveys (CSUR) - Special issue: electronic supplement to the September 1998 issue
DyC: an expressive annotation-directed dynamic compiler for C
Theoretical Computer Science - Partial evaluation and semantics-based program manipulation
LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
A tour of tempo: a program specializer for the C language
Science of Computer Programming - Special issue on program transformation
Hi-index | 0.00 |
Program specialization is a common way to improve program performance. From a generic implementation of an algorithm, a derived implementation is generated by fixing some inputs. Many tools and languages enable this optimization at compile time, like C++, or at run-time, like Tempo. However, most of those tools are tied to a language (mostly C) and extensions made to it. In the case of runtime specializers, most of them manipulate an intermediate representation during code generation, that can lead to a waste of resources. In this paper, we introduce an LLVM extension that aims to generate low-overhead runtime program specializers. Given a program in an annotated LLVM IR, we use dedicated passes and a modified back-end to generate a specialized code generator. This approach removes the need to manipulate any IR at run-time. We also present some experiment performed on an ARM processor.