Abstract
For abstract data types (ADTs) there are many potential op- timizations of code that current compilers are unable to perform. These optimizations either depend on the functional specification of the com- putational task performed through an ADT or on the semantics of the objects defined. In either case the abstract properties on which optimiza- tions would have to be based cannot be automatically inferred by the compiler. In this paper our aim is to address this level-of-abstraction barrier by showing how a compiler can be organized so that it can make use of semantic information about an ADT at its natural abstract level, before type lowering, inlining, or other traditional compiler steps oblit- erate the chance. We present an extended case study of one component of a C++ compiler, the simplifier; discuss the design decisions of a new simplifier (simplifier generator) and its implementation in C++; and give performance measurements. The new simplifier is connected to the Gnu C++ compiler and currently performs optimizations at very high level in the front end. When tested with the Matrix Template Library, a library already highly fine-tuned by hand, we achieved run-time improvements of up to six percent.
Cite
CITATION STYLE
Schupp, S., Gregor, D., Musser, D., & Liu, S. M. (2001). User-extensible simplification—type–based optimizer generators. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 2027, pp. 86–101). Springer Verlag. https://doi.org/10.1007/3-540-45306-7_7
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.