Ответ 1
Мне не хватает специалиста по компилятору 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.