4.6 KiB
4.6 KiB
1 | ID | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 |
---|---|---|---|---|---|---|---|---|---|---|
2 | P1 | Kildall, Gary A. | 1973 | A unified approach to global program optimization | Allows straight-line optimization techniques for branch structure | General Techniques | None | Constant Propagation, Common Subexpression Elimination, Register Optimization | ||
3 | P2 | Rastislav Bodik; Rajiv Gupta; Mary Lou Soffa | 1997 | Interprocedural conditional branch elimination | Reduction of instruction count | Exponential/Polynomial worst-case time complexity | ICC | C | Conditional Branch Elimination, Elimination of correlated conditionals and operations | |
4 | P3 | Ramsey, Norman; Dias, João; Peyton Jones, Simon | 2010 | Hoopl: a modular, reusable library for dataflow analysis and transformation | Reusable library for DFA | DFA typically entangled with compiler, Algorithms complicated and hard to understand | Library, used by GHC | Custom | Interleaved analysis and rewriting, speculative rewriting, computing fixed points, dynamic fault isolation | Only usable from Haskell |
5 | P4 | Edvinsson, Marcus; Lowe, Welf | 2010 | A multi-threaded approach for data-flow analysis | Accuracy more important than speed since at compile time | Low usability for JIT because of time consumption, DFA is computation intense, DFA often implemented sequentially | Custom | SSA, Java | High speed-up for analysis, for benchmarks without benefit max loss of 13% speed | Only speed-up of 1.78 on 8 cores |
6 | P5 | Joisha, Pramod G.; Schreiber, Robert S.; Banerjee, Prithviraj; Boehm, Hans J.; Chakrabarti, Dhruva R. | 2011 | A technique for the effective and automatic reuse of classical compiler optimizations on multithreaded code | Sequential transformations can not be applied to parallel code, Need to watch out for data races and data synchronization | GCC | C | Bidirectional DFA across synchronizations in well-synchronized programs, Can reuse existing optimizations, Value numbering, Copy propagation | ||
7 | P6 | Edvinsson, Marcus; Lundberg, Jonas; Löwe, Welf | 2011 | Parallel points-to analysis for multi-core machines | Points-To Analysis analyses whole program | SSA nodes in Points-to SSA are sequentially dependent | Custom | SSA, Java | Parallel Points-to Analysis | |
8 | P7 | Tang, Xiaolong; Järvi, Jaakko | 2012 | Summary-based data-flow analysis that understands regular composite objects and iterators | Hard to make assumptions about user-defined types | LLVM | LLVM IR | Common Sub-expression elimination, Copy propagation, Equational reasoning | ||
9 | P8 | Urban, Bernhard; Steinlechner, Harald | 2013 | Implementing a Java JIT compiler in Haskell: case study | Custom JIT | Java Bytecode | Liveness Analysis | |||
10 | P9 | Duboscq, Gilles; Stadler, Lukas; Würthinger, Thomas; Simon, Doug; Wimmer, Christian; Mössenböck, Hanspeter | 2013 | Graal IR: An Extensible Declarative Intermediate Representation | Easier optimization implementation with Graph-IR | GraalVM, uses P3 | Java Bytecode | IR which is simple to run optimizations on | Not implemented: commutative edges on nodes for better congruent detection | |
11 | P10 | Zaidi, Ali Mustafa; Greaves, David | 2015 | Value State Flow Graph: A Dataflow Compiler IR for Accelerating Control-Intensive Code in Spatial Hardware | Performance improvement through execution of dataflow graph | Custom LLVM Backend | LLVM IR | Structs, Multidimensional-Arrays not supported | ||
12 | P11 | Ginsbach, Philip; Crawford, Lewis; O'Boyle, Michael F. P. | 2018 | CAnDL: a domain specific language for compiler analysis | DSL for optimization implementation makes implementation simpler and iterations quicker | Optimizations are hard to implement in LLVM, Simple peephole optimization is 30000 LOC | DSL to LLVM Pass | LLVM IR | Moderate compile time increase, no formal verification | |
13 | P12 | Pathade, Komal; Khedker, Uday P. | 2019 | Path sensitive MFP solutions in presence of intersecting infeasible control flow path segments | Path insensitive solutions overapproximate data flow values | TCS Embedded Code Analyzer | C | Reaching Definition, Def-Use Pairs, Unitialized Variables, 300% precision increase | 100% analysis time increase | |
14 | P13 | Reissmann, Nico; Meyer, Jan Christian; Bahmann, Helge; Själander, Magnus | 2020 | RVSDG: An Intermediate Representation for Optimizing Compilers | Structures like loops not encoded in SSA | Custom | LLVM IR | Common Node Elimination, Dead Node Elimination | ||
15 | P14 | Shi, Qingkai; Zhang, Charles | 2020 | Pipelining bottom-up data flow analysis | Calling dependence limit parallelism of bottom-up DFA | Custom based on LLVM | LLVM IR | 2x to 3x speedup by relaxing calling dependence | Inline assembly and c++ stl not modeled | |
16 | P15 | Aigner, Christoph; Barany, Gergö; Mössenböck, Hanspeter | 2024 | Lazy Sparse Conditional Constant Propagation in the Sea of Nodes | Detecting all compile time constant is undecidable problem | GraalVM | Sea of Nodes / Graal IR | Lazy iteration to reduce portion of necessary graph |