Next:
Introduction
Up:
Infrastructure for Profile Driven
Previous:
Infrastructure for Profile Driven
Contents
Introduction
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
Loop Based Heuristics
Nonloop heuristics
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
Loop Peeling
Loop Unswitching
ET-Trees
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
Results
Branch Predictors
Methodology
Results
Performance measurements
Methodology
Results
Summary
Future Plans
Project Documentation
Organization
Credits
Documentation
Sources
Timeline
Control Flow Graph
Basic Blocks
Edges
The Profile
Structure of profile output file
Maintaining CFG up to Date
Maintaining Profile up to Date
Liveness Information
Loop Tree
Bibliography
About this document ...
Jan Hubicka 2003-05-04