Sue
Sue

Reputation: 113

GCC, compare the effect of using -O2 and using all the optimization flags it turns on

From gcc5.4 documentation, it says

-O2 turns on all optimization flags specified by -O. It also turns on the following optimization flags:

-fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps, etc

It seems that using -O2 has the same effect of using all the 83 optimization flags turned on by -O2 in gcc 5.4.0 on the performance of the test programs.

However, I compare the running time of the executable files test1 and test2 obtained by

gcc-5.4 -O2 test.c -o test1

and

gcc-5.4 -fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim ... -fthread-jumps -falign-functions ...(all the 83 flags) test.c -o test2

I tested on 20 random generated c programs and running each test case 100000 times to make sure the measurement of running time is accurate enough. But the result is that using -O2 is averagely about 60% faster than using all the 83 flags.

I am really confused why the effect of using -O2 is not equivalent to using all the optimization flags it turns on.

I must misunderstood something, but I couldn't find any explanation yet. I'd appreciate any help. Thanks a lot.

Upvotes: 2

Views: 554

Answers (2)

Kyrill
Kyrill

Reputation: 3829

The optimisation level affects decisions in other parts of the compiler besides determining which passes get run. These can be during mandatory processes like transforming between internal representations of the code, register allocation etc, so the optimisation level is not exactly equivalent to a set of switches enabling every compiler pass. Look at this thread for some discussion on this topic.

Upvotes: 0

Mikhail Maltsev
Mikhail Maltsev

Reputation: 1678

It is a common gotcha. In order to enable (or disable) specific optimizations, you must first enable the optimizer in general, i.e. use one of -O... flags, except -O0 (or just -O, which is equivalent to -O1).

Upvotes: 1

Related Questions