How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Combining analyses, combining optimizations
ACM Transactions on Programming Languages and Systems (TOPLAS)
A flexible architecture for building data flow analyzers
Proceedings of the 18th international conference on Software engineering
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
MetaML and multi-stage programming with explicit annotations
Theoretical Computer Science - Partial evaluation and semantics-based program manipulation
Impact of economics on compiler optimization
Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande
The boost graph library: user guide and reference manual
The boost graph library: user guide and reference manual
FIAT: A Framework for Interprocedural Analysis and Transfomation
Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing
Data Flow Analysis as Model Checking
TACS '91 Proceedings of the International Conference on Theoretical Aspects of Computer Software
Proceedings of the IFIP TC2/WG2.1 Working Conference on Generic Programming
Automatically proving the correctness of compiler optimizations
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Automated soundness proofs for dataflow analyses and transformations via local rules
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Organizing Numerical Theories Using Axiomatic Type Classes
Journal of Automated Reasoning
Integration of generic program analysis tools into a software development environment
ACSC '05 Proceedings of the Twenty-eighth Australasian conference on Computer Science - Volume 38
Finding application errors and security flaws using PQL: a program query language
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Representation-independent program analysis
PASTE '05 Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
STLlint: lifting static checking from languages to libraries
Software—Practice & Experience
A language for generic programming
A language for generic programming
Generic programming and high-performance libraries
International Journal of Parallel Programming - Special issue: The next generation software program
An extended comparative study of language support for generic programming
Journal of Functional Programming
Code-carrying theory
A language for specifying compiler optimizations for generic software
A language for specifying compiler optimizations for generic software
Testing with concepts and axioms in C++
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
A semantics-based approach to optimizing unstructured mesh abstractions
A semantics-based approach to optimizing unstructured mesh abstractions
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
Generic flow-sensitive optimizing transformations in C++ with concepts
Proceedings of the 2010 ACM Symposium on Applied Computing
Exploiting regularity of user-defined types to improve precision of program analyses
Proceedings of the 27th Annual ACM Symposium on Applied Computing
Faster program adaptation through reward attribution inference
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
Summary-based data-flow analysis that understands regular composite objects and iterators
ACM SIGAPP Applied Computing Review
Exploiting domain knowledge to optimize parallel computational mechanics codes
Proceedings of the 27th international ACM conference on International conference on supercomputing
Hi-index | 0.00 |
The optimizations in modern compilers are constructed for a predetermined set of primitive types. As a result, programmers are unable to exploit optimizations for user-defined types where these optimizations would be correct and beneficial. Moreover, because the set of optimizations is also fixed, programmers are unable to incorporate new optimizations into the compiler. To address these limitations, we apply the reuse methodologies from generic programming to compiler analyses and optimizations. To enable compilers to apply optimizations to classes of types rather than particular types, we define optimizations in terms of generic interface descriptions (similar to C++ concepts or Haskell type classes). By extending these interface descriptions to include associated program analysis and transformation fragments, we enable compilers to incorporate user-defined transformations and analyses. Since these transformations are explicitly associated with interface descriptions, they can be applied in generic fashion by the compiler. We demonstrate that classical compiler optimizations, when generalized using this framework, can apply to a broad range of types, both built-in and user-defined. Finally, we present an initial implementation, the principles of which are generalizable to other compilers.