SPNU151V January 1998 – February 2020
The ARM C/C++ compiler uses a variety of optimization techniques to improve the execution speed of your C/C++ programs and to reduce their size.
Following are some of the optimizations performed by the compiler:
| Optimization | See |
|---|---|
| Cost-based register allocation | Section 3.13.1 |
| Alias disambiguation | Section 3.13.1 |
| Branch optimizations and control-flow simplification | Section 3.13.3 |
Data flow optimizations
|
Section 3.13.4 |
| Expression simplification | Section 3.13.5 |
| Inline expansion of functions | Section 3.13.6 |
| Function Symbol Aliasing | Section 3.13.7 |
| Induction variable optimizations and strength reduction | Section 3.13.8 |
| Loop-invariant code motion | Section 3.13.9 |
| Loop rotation | Section 3.13.10 |
| Instruction scheduling | Section 3.13.11 |
| ARM-Specific Optimization | See |
|---|---|
| Tail merging | Section 3.13.12 |
| Autoincrement addressing | Section 3.13.13 |
| Block conditionalizing | Section 3.13.14 |
| Epilog inlining | Section 3.13.15 |
| Removing comparisons to zero | Section 3.13.16 |
| Integer division with constant divisor | Section 3.13.17 |
| Branch chaining | Section 3.13.18 |