About the High-Level Optimizer (HLO)

HLO optimizes for maximum speed.

  • Using HLO may cause the compiler to rewrite your algorithm, and it may not improve performance for some programs.

  • On IA-32, using HLO in conjunction with the vectorization options (-Qax[K|W|N|B|P] and -Qx[K|W|N|B|P]) causes the compiler to perform more aggressive data dependency analysis than for -O2, which may result in longer compilation times.

    On both the IA-32 and Itanium® architectures, -O3 invokes the the High Level Optimizer (HLO), which enables the -O2 option plus more aggressive optimizations, such as loop transformation and prefetching. HLO optimizes for maximum speed, and may actually rewrite your algorithm to get the most cache hits possible.

    As with the vectorizer, loops must meet the following criteria to qualify for HLO:

    • iteration independence
    • memory disambiguation—all memory references within the loop are unique.
    • high loop count