Обычно мы компилируем с помощью -O2
, потому что -O3
будет "запускать тонкие ошибки".
Для нашей версии GCC -O3
допускается более агрессивная инкрустация, которая на самом деле обнаруживает ошибки, которые были бы незаметны (например, использование неинициализированных значений из функций, принимающих их в качестве эталонных аргументов или внеочередного доступа для массивов). Мне кажется, что эта агрессивная вставка также позволяет более выразительный способ кодирования с меньшими функциями, а -funswitch-loops
помогает сохранять определения переменных более локальными в циклах.
Учитывая, что ошибки в нашем коде на порядок более вероятны, чем ошибки компилятора, и что мы используем -Wall -Wextra
без каких-либо проблем, какие ошибки мы должны искать?
Если это имеет значение, мы используем gcc-4.3.2
. Время компиляции для нас не является серьезной проблемой.