The Ada Generic Library linear list processing packages
The Ada Generic Library linear list processing packages
BURG: fast optimal instruction selection and tree parsing
ACM SIGPLAN Notices
Engineering a simple, efficient code-generator generator
ACM Letters on Programming Languages and Systems (LOPLAS)
An overview of the Tecton proof system
Theoretical Computer Science - Special issue on formal methods in databases and software engineering
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
C++ gems
Generic programming and the STL: using and extending the C++ Standard Template Library
Generic programming and the STL: using and extending the C++ Standard Template Library
Efficient support for complex numbers in Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
The generic graph component library
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Optimal Code Generation for Expression Trees
Journal of the ACM (JACM)
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
From flop to megaflops: Java for technical computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns
Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns
The STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library
The STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library
ISCOPE '98 Proceedings of the Second International Symposium on Computing in Object-Oriented Parallel Environments
Requirement Oriented Programming
Selected Papers from the International Seminar on Generic Programming
C++ Expression Templates Performance Issues in Scientific Computing
IPPS '98 Proceedings of the 12th. International Parallel Processing Symposium on International Parallel Processing Symposium
An annotation language for optimizing software libraries
DSL'99 Proceedings of the 2nd conference on Conference on Domain-Specific Languages - Volume 2
Computer
Concept-Based Component Libraries and Optimizing Compilers
IPDPS '02 Proceedings of the 16th International Parallel and Distributed Processing Symposium
Annotating user-defined abstractions for optimization
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
Hi-index | 0.00 |
For abstract data types (ADTs) there are many potential optimizations of code that current compilers are unable to perform. These optimizations either depend on the functional specification of the computational task performed through an ADT or on the semantics of the objects defined. In either case the abstract properties on which optimizations 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 obliterate 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.