7 Optimizing HP aC++ Programs
HP C/HP aC++ provides options to the aCC command and pragmas to control optimization. The following sections introduce the basic concepts of optimizing your HP aC++ code for improved efficiency:
•“Requesting Optimization” (page 156)
•“Setting Basic Optimization Levels” (page 156)
•“Additional Options for Finer Control” (page 157)
•
•“Pragmas That Control Optimization” (page 160)
Requesting Optimization
By default, the compiler performs constant folding and simple register assignment. There are several ways to increase and control the level of optimization performed on your program.
Setting Basic Optimization Levels
HP aC++ provides four basic levels of optimization, the higher the level the more optimization performed and the longer the optimization takes.
You can specify an option on the aCC command line or in the CXXOPTS environment variable.
Example:
aCC
Compiles prog.C and optimizes the program at the default level 1.
Level 1 Optimization
Level 1 optimization includes branch optimization, dead code elimination, faster register allocation, instruction scheduling, and peephole
Level 1 optimization produces faster programs than without optimization and compiles faster than level 2 optimization. Programs compiled at level 1 can be used with the HP Distributed Debugging Environment (DDE) debugger. Use the debugger option
Level 2 Optimization
Level 2 optimization includes level 1 optimization, along with optimizations performed over entire functions in a single file. Level 2 optimizes loops in order to reduce pipeline stalls and analyzes
Specifically, level 2 provides the following:
•Coloring register allocation.
•Induction variable elimination and strength reduction.
•Local and global common subexpression elimination.
•Advanced constant folding and propagation. (Simple constant folding is done by default.)
•Loop invariant code motion.
•Store/copy optimization.
•Unused definition elimination.
156 Optimizing HP aC++ Programs