Compiler Design

  1. Code Optimization
    1. Optimization Principles
      1. Optimization Goals
        1. Safety Requirements
          1. Profitability Analysis
            1. Optimization Phases
            2. Program Analysis Foundations
              1. Data Flow Analysis Framework
                1. Control Flow Analysis
                  1. Alias Analysis
                    1. Dependence Analysis
                    2. Local Optimizations
                      1. Basic Block Optimizations
                        1. Common Subexpression Elimination
                          1. Constant Folding
                            1. Constant Propagation
                              1. Copy Propagation
                                1. Dead Code Elimination
                                  1. Algebraic Simplification
                                    1. Strength Reduction
                                    2. Global Optimizations
                                      1. Global Data Flow Analysis
                                        1. Reaching Definitions Analysis
                                          1. Live Variable Analysis
                                            1. Available Expressions Analysis
                                              1. Very Busy Expressions Analysis
                                              2. Global Common Subexpression Elimination
                                                1. Global Constant Propagation
                                                  1. Global Copy Propagation
                                                    1. Global Dead Code Elimination
                                                    2. Loop Optimizations
                                                      1. Loop Analysis
                                                        1. Natural Loops
                                                          1. Loop Nesting
                                                            1. Induction Variables
                                                            2. Loop-Invariant Code Motion
                                                              1. Induction Variable Optimization
                                                                1. Loop Unrolling
                                                                  1. Loop Fusion
                                                                    1. Loop Distribution
                                                                      1. Loop Interchange
                                                                        1. Loop Peeling
                                                                          1. Loop Tiling
                                                                          2. Interprocedural Optimization
                                                                            1. Call Graph Construction
                                                                              1. Interprocedural Data Flow Analysis
                                                                                1. Procedure Inlining
                                                                                  1. Interprocedural Constant Propagation
                                                                                    1. Whole Program Optimization
                                                                                    2. Advanced Optimization Techniques
                                                                                      1. Partial Redundancy Elimination
                                                                                        1. Lazy Code Motion
                                                                                          1. Profile-Guided Optimization
                                                                                            1. Feedback-Directed Optimization
                                                                                            2. Optimization for Specific Constructs
                                                                                              1. Object-Oriented Optimizations
                                                                                                1. Functional Language Optimizations
                                                                                                  1. Parallel Code Optimizations