gcccompiler-optimizationpgcc

equivalent of pgcc "-Minfo=" flag for gcc compiler?


I just discovered the nice "-Minfo=" flag in pgcc, which outputs all the optimizations that the compiler is making.

IE:

pgcc -c -pg -O3 -Minfo=all -Minline    -c -o example.o example.c
run:
 55, Memory zero idiom, loop replaced by call to __c_mzero8
 91, Memory zero idiom, loop replaced by call to __c_mzero8
pgcc -c -pg -O3 -Minfo=all -Minline    -c -o controller.o controller.c
main:
 82, second inlined, size=4, file controller.c (113)
 84, second inlined, size=4, file controller.c (113)

is there an equivalent compiler flag for GCC?


Solution

  • Yes there is. -fopt-info is what you are looking for.

    gcc -O3 -fopt-info example.c -o example
    

    Or equivalently you can do

    gcc -O3 -fopt-info-all=all.dat example.c -o example
    

    Will output all the optimization information to file all.dat. You can also be specific about which optimization information you want by specifying -fopt-info-options like so:

    -fopt-info-loop                 # info about all loop optimizations  
    -fopt-info-vec                  # info about auto-vectorization
    -fopt-info-inline               # info about function inlining
    -fopt-info-ipa                  # info about all interprocedural optimizations  
    

    You can get more specific if you want by telling gcc to dump information only about loops/inlinings/vectorizations that were optimized or were missed

    -fopt-info-inline-optimized     # info only about functions that were inlined
    -fopt-info-vec-missed           # info only about vectorizations that were missed
    -fopt-info-loop-note            # verbose info about loop optimization 
    

    For more details look at the online documentation.