Wybór flag optymalizacji gcc odpowiadających -O1

Mam mały program, który działa lepiej, gdy jest skompilowany-O1 w przeciwieństwie do braku optymalizacji. Jestem zainteresowany wiedzą, jakie optymalizacje wykonane przez kompilator prowadzą do tego przyspieszenia.

Myślałem, że zrobię to, aby wziąć listę flag optymalizacji, które-O1 jest równoważny (uzyskany zarówno ze strony man, jak izgcc -Q -v), a następnie odbierz na liście, aby zobaczyć, jak zmienia się wydajność.

Odkryłem, że nawet uwzględnienie całej listy optymalizacji nadal nie daje mi programu, który działa tak dobrze jak zoptymalizowany -O1.

Innymi słowy

gcc -O0 -fcprop-registers -fdefer-pop -fforward-propagate -fguess-branch-probability \
    -fif-conversion -fif-conversion2 -finline -fipa-pure-const -fipa-reference \
    -fmerge-constants -fsplit-wide-types -ftoplevel-reorder -ftree-ccp -ftree-ch \
    -ftree-copy-prop -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse \
    -ftree-fre -ftree-sink -ftree-sra -ftree-ter myprogram.c

nie jest taki sam jak

gcc -O1 myprogram.c

Używam gcc w wersji 4.5.3

Czy jest coś jeszcze-O1 to nie jest uwzględnione na liście flag optymalizacji powiązanych z-O1 w instrukcji?

questionAnswers(2)

yourAnswerToTheQuestion