Ich habe einige Legacy-Code, der mit beiden -02 und -03 gesetzt kompiliert. Von der GCC man-Datei erhalte ich die Garantie, dass:
-O3 schaltet alle Optimierungen ein, die mit -O2 angegeben wurden, und schaltet außerdem die Funktionen -finline-functions, -funswitch-loops, -fpredictive-commoning, -fgcse-after-reload und -ftree-vectorize ein Optionen.
Auf den ersten Blick scheint es also wahrscheinlich, dass das Aktivieren beider Flags dasselbe ist wie nur -O3. Das hat mich jedoch zum Nachdenken gebracht, ob es richtig ist, in diesem Fall -O2 zu aktivieren, da dies wahrscheinlich die "sicherere" Option ist. Natürlich ist es eine einfache Angelegenheit, etwas Code mit allen Permutationen zu kompilieren und zu sehen, was in jedem Fall passiert, aber ich frage mich, ob jemand weiß, ob es eine bestimmte Richtlinie gibt, die GCC in Bezug auf die Angabe mehrerer Optimierungsstufen hat, und wenn ja, was ist die Begründung dafür?