При компиляции некоторого кода я заметил большие различия в ассемблере, созданном между -O0 и -O1. Я хотел запустить оптимизацию с включением/отключением, пока не узнаю, что вызвало определенные изменения в ассемблере.
Если я использую -fverbose-asm, чтобы выяснить, какие флаги O1 разрешены по сравнению с O0, а затем отключить их вручную, почему ассемблер все еще так сильно отличается? Даже если я запустил gcc с помощью O0 и вручную добавлю все флаги, которые fverbose-asm сказали, были включены с O1, я не получаю тот же ассемблер, что и у меня, используя O1.
Есть ли что-нибудь помимо "-f..." и "-m...", которое можно изменить?
Или это просто, что "O1" имеет некоторую магию по сравнению с "O0", которую нельзя отключить.
Извините за загадочность - это было связано с Сокращение использования стека во время рекурсии с помощью GCC + ARM, однако упоминание об этом делало вопрос немного трудным для понимания.