HyperLink   Aggressive Code Improving Techniqures Based on Control Flow Analysis
Publication Year:
  Pohua P. Chang
  Coordinated Science Laboratory Report no. UILU-ENG-89-2228 (1989).

The IMPACT-I C compiler obtains, analyzes, and applies program control flow information to guide various code improving techniques. To obtain program control flow information, a system independent profiler has been integrated into the compiler front end. The control flow information obtained is converted into a data structure called a weighted control graph. Function inline expansion, trace based optimizations, software branch prediction technique, and instruction memory layout optimization can be applied to the weighted control graph. Function inline expansion drastically reduces the number of function calls in the program execution. The software branch prediction technique greatly reduces the cost of branch instructions for highly pipelined processors. Trace selection heuristics group basic blocks which tend to execute in a sequence into a trace. Conventional global code compaction techniques can be applied on traces. Finally, we show that instruction placement can lead to better instruction cache performance.