zmniejszyć precyzję obliczeń zmiennoprzecinkowych); -O3 – najwyższy poziom optymalizacji, , i spowodować znaczny wzrost objętości kodu maszynowego programu; -Os – kod optymalizowany w celu minimalizacji rozmiaru pliku wykonywalnego; -Og – stosuje optymalizacje, które przyspieszają pracę programu, nie spowalniają znacząco kompilacji ale zapewniają możliwość debugowania kodu aplikacji;
Wbrew pozorom najwyższy poziom optymalizacji (-O3) nie musi przekładać się na szybsze działanie programu. Dłuższy kod wynikowy sprawia, że stosunkowo niewielka jego część da się zmieścić w szybkiej pamięci podręcznej procesora.
Kompilator może również wykonać wiele optymalizacji, aby program lepiej działał na konkretnej maszynie. Jest to związane z pewnymi charakterystycznymi cechami procesora, takimi jak: ilość i rodzaje rejestrów (np. procesory PowerPC mają więcej rejestrów ogólnego przeznaczenia niż Pentium), ilość i algorytmy zarządzające pamięcią cache (aby zmaksymalizować jej użycie). Rodzaje instrukcji (z naciskiem na instrukcje wyspecjalizowane do obróbki pewnych typów