Один из вопросов, которые я задал некоторое время назад, имел поведение undefined, поэтому оптимизация компилятора фактически вызывала разрыв программы.
Но если в коде отсутствует поведение undefined, тогда есть ли причина не использовать оптимизацию компилятора? Я понимаю, что иногда для целей отладки, возможно, не нужен оптимизированный код (пожалуйста, поправьте меня, если я ошибаюсь). Кроме этого, по производственному коду, почему бы не всегда использовать оптимизацию компилятора?
Кроме того, существует ли когда-либо причина использовать, скажем, -O
вместо -O2
или -O3
?