Next:
Goals and Motivation
Up:
Infrastructure for Profile Driven
Previous:
Contents
 
Contents
Introduction
Subsections
Goals and Motivation
Installation
User Visible Changes
GCC Design Overview and Our Modifications
Intermediate Languages
Trees
Register Transfer Language
Control Flow Graph
Optimization Passes
The Profiler Changes
Thread Safe Profiling
Branch Predictions
Infrastructure
Implementing and Verifying Heuristics
High Level Heuristics Support
Combining heuristics
Heuristics implemented
High level heuristics
goto
Continue
Negative value return
NULL
return
Constant return
User supplied
Loop Based Heuristics
Loop Branch
Loop Exit
Loop Iterations
Nonloop heuristics
Loop header
Pointer
Positive
Opcode nonequal
Floating point opcode
Call
Early Return
Estimating profile
Mid-level RTL
Optimization passes
CFG Cleanup Pass
Edge Forwarding
Jump Threading
Cross Jumping
Unreachable Code Removal
Unnecessary Code Labels Removal
Conditional Jump around Jump Simplification
Basic Block Merging
Liveness, CFG and Profile Maintenance
Loop Optimizer Rewrite
Loop Data Structure Changes
Natural Loop Discovery Changes
Loop Optimizer
Loop Unrolling
Unrolling Loop With Known Number Of Iterations
Unrolling Loop With Number Of Iterations Known At Runtime
Loop Peeling
Loop Unswitching
ET-Trees
Implementation of of tree operations
Register Coalescing Pass
Webizer
Software Trace Cache
Theory
Implementation
Tracer
Code Alignment
Miscellaneous Changes to Existing Optimizers
Double test conversion pass
Variable tracking
Introduction
Implementation
Dwarf2
Jan Hubicka 2003-05-04