Optimization and tuning options
You can control the optimization and tuning process, which can improve the performance of your application at run time, using the options in Table 1. Remember that not all options benefit all applications. Trade-offs sometimes occur between an increase in compile time, a reduction in debugging capability, and the improvements that optimization can provide.
Option | Description | C Compile | C++ Compile | IPA Link | More Information |
---|---|---|---|---|---|
AGGRCOPY | Enables destructive copy operations for structures and unions, which can improve performance. | ✓ | ✓ | ✓ | See detail |
ANSIALIAS | Indicates to the compiler that the code strictly follows the type-based aliasing rule in the ISO C and C++ standards, and can therefore be compiled with higher performance optimization of the generated code. | ✓ | ✓ | ✓ | See detail |
ARCHITECTURE | Specifies the machine architecture for which the executable program instructions are to be generated. | ✓ | ✓ | ✓ | See detail |
ASSERT(RESTRICT) | Enables optimizations for restrict qualified pointers. | ✓ | ✓ | ✓ | See detail |
COMPACT | Avoids optimizations that increase object file size. | ✓ | ✓ | ✓ | See detail |
HGPR | Enables the compiler to exploit 64-bit general purpose registers (GPRs) in 32-bit programs targeting z/Architecture® hardware. | ✓ | ✓ | ✓ | See detail |
HOT | Performs high-order loop analysis and transformations (HOT) during optimization. | ✓ | ✓ | See detail | |
IGNERRNO | Allows the compiler to perform optimizations
that assume errno is not modified by system calls. |
✓ | ✓ | ✓ | See detail |
INLINE | Attempts to inline functions instead of generating calls to those functions, for improved performance. | ✓ | ✓ | ✓ | See detail |
IPA | Enables or customizes a class of optimizations known as interprocedural analysis (IPA). | ✓ | ✓ | ✓ | See detail |
LIBANSI | Indicates whether or not functions with the name of an ANSI C library function are in fact ANSI C library functions and behave as described in the ANSI standard. | ✓ | ✓ | ✓ | See detail |
MAXMEM | Limits the amount of memory used for local tables, and that the compiler allocates while performing specific, memory-intensive optimizations, to the specified number of kilobytes. | ✓ | ✓ | ✓ | See detail |
OPTIMIZE | Specifies whether to optimize code during compilation and, if so, at which level. | ✓ | ✓ | ✓ | See detail |
PREFETCH | Inserts prefetch instructions automatically where there are opportunities to improve code performance. | ✓ | ✓ | See detail | |
RESTRICT | Indicates to the compiler that all pointer parameters in some or all functions are disjoint. | ✓ | ✓ | ✓ | See detail |
SMP | Enables parallelization of program code. | ✓ | ✓ | ✓ | See detail |
STRICT | Used to prevent optimizations done by default at optimization levels OPT(3), and, optionally at OPT(2), from re-ordering instructions that could introduce rounding errors. | ✓ | ✓ | ✓ | See detail |
STRICT_INDUCTION | Prevents the compiler from performing induction (loop counter) variable optimizations. These optimizations may be unsafe (may alter the semantics of your program) when there are integer overflow operations involving the induction variables. | ✓ | ✓ | ✓ | See detail |
THREADED | Indicates to the compiler whether it must generate threadsafe code. | ✓ | ✓ | ✓ | See detail |
TUNE | Tunes instruction selection, scheduling, and other implementation-dependent performance enhancements for a specific implementation of a hardware architecture. | ✓ | ✓ | ✓ | See detail |
UNROLL | Controls loop unrolling, for improved performance. | ✓ | ✓ | ✓ | See detail |