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?