Документация GCC не является особенно подробным. Что он говорит:
-fexpensive-оптимизации:
Perform a number of minor optimizations that are relatively expensive.
Какая из этих оптимизаций? Любой пример?
Документация GCC не является особенно подробным. Что он говорит:
-fexpensive-оптимизации:
Perform a number of minor optimizations that are relatively expensive.
Какая из этих оптимизаций? Любой пример?
Мне не хватает специалиста по компилятору H ^ H ^ H, чтобы иметь возможность сделать многое из этого, но, возможно, кто-то может его построить...
Соответствующие биты gcc могут быть получены достаточно легко (если вы не попробуете проверить все это) с помощью
svn co --depth=immediates svn://gcc.gnu.org/svn/gcc/trunk/gcc gcc
cd gcc
svn --set-depth infinity update config c cp
(по крайней мере, что подмножество, которое, по-видимому, имело отношение к C/С++, которое я нашел, добавляет другие каталоги, если вы заинтересованы в других языках gcc поддерживает)
И затем
grep -R flag_expensive_optimizations . | grep -v .svn
выводит экран (35 строк) хитов на небольшое количество файлов. Я оставлю его кому-то другому, чтобы опубликовать более подробный анализ (если кто-то действительно заботится о себе).
Несколько из них привлекли мое внимание. Я упомяну, что (на момент написания):
Единственное упоминание flag_expensive_optimizations
в cp/
(С++
поддержка) находится в разделе кода, прокомментированном /* Handle ordinary C++
destructors. */
и, по-видимому, влияет на настройку
LOOKUP_NONVIRTUAL
, с соответствующим комментарием /* Optimize for
space over speed here. */
В конфигурации/каталоге конфигурации (sparc, alpha, sh, i386) имеется несколько обращений. Единственный i386 применяется для TARGET_AVX
, когда не оптимизируется для размера и прокомментирован /* When not optimize for size, enable vzeroupper optimization for TARGET_AVX with -fexpensive-optimizations and split 32-byte AVX unaligned load/store. */
Взгляд на несколько других хитов убедил меня, что я должен просто быть доволен, чтобы оставить свои знания об этой функции на уровне документации gcc.