Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
DAGON: Technology binding and local optimization by DAG matching
25 years of DAC Papers on Twenty-five years of electronic design automation
Engineering a simple, efficient code-generator generator
ACM Letters on Programming Languages and Systems (LOPLAS)
Ordered and Unordered Tree Inclusion
SIAM Journal on Computing
Advanced compiler design and implementation
Advanced compiler design and implementation
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
Algorithms on Trees and Graphs
Algorithms on Trees and Graphs
Alogtime Algorithms for Tree Isomorphism, Comparison, and Canonization
KGC '97 Proceedings of the 5th Kurt Gödel Colloquium on Computational Logic and Proof Theory
Automatic application-specific instruction-set extensions under microarchitectural constraints
Proceedings of the 40th annual Design Automation Conference
Code generation for expressions with common subexpressions (Extended Abstract)
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
ISTCS '97 Proceedings of the Fifth Israel Symposium on the Theory of Computing Systems (ISTCS '97)
Mining Closed and Maximal Frequent Subtrees from Databases of Labeled Rooted Trees
IEEE Transactions on Knowledge and Data Engineering
Frequent Subtree Mining - An Overview
Fundamenta Informaticae - Advances in Mining Graphs, Trees and Sequences
Pattern-based behavior synthesis for FPGA resource reduction
Proceedings of the 16th international ACM/SIGDA symposium on Field programmable gate arrays
Perfdiff: a framework for performance difference analysis in a virtual machine environment
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
Instruction selection by graph transformation
CASES '10 Proceedings of the 2010 international conference on Compilers, architectures and synthesis for embedded systems
Hi-index | 0.00 |
A fundamental problem in program analysis and optimization concerns the discovery of structural similarities between different sections of a given program and/or across different programs. Specifically, there is a need to find topologically identical segments within compiler intermediate representations (IRs). Such topological isomorphism has many applications. For example, finding isomorphic sub-trees within different expression trees points to common computational resources that can be shared when targeting application-specific hardware. Isomorphism in the controlflow graph can be used to discovery of custom instructions for customizable processors. Discovering isomorphism in context call trees during program execution is invaluable to several JIT compiler optimizations. Thus, all these different applications rely on the fundamental ability to find topologically identical segments within a given tree or graph representation. In this paper, we present a generic formulation of the subtree isomorphism problem that is more powerful than previous proposals. We prove that an optimal quadratic time solution exists for this problem. We employ a dynamic programming based algorithm to efficiently enumerate all isomorphic sub-trees within given reference trees and also demonstrate its efficacy in a production compiler.