gcc を使用する場合、-O レベルを指定せずに個々の最適化フラグを有効にできますか?
gcc -ffasst-math foo.c
また
gcc -O1 -ffast-math foo.c
どちらが機能しますか?ありがとう!
gcc を使用する場合、-O レベルを指定せずに個々の最適化フラグを有効にできますか?
gcc -ffasst-math foo.c
また
gcc -O1 -ffast-math foo.c
どちらが機能しますか?ありがとう!
はい、個々の最適化フラグを有効にすることができます。
gcc の man ページからの情報:
-O は、次の最適化フラグをオンにします。
-fauto-inc-dec -fcprop-registers -fdce -fdefer-pop -fdelayed-branch -fdse -fguess-branch-probability -fif-conversion2 -fif-conversion -finline-small-functions -fipa-pure-const -fipa -reference -fmerge-constants -fsplit-wide-types -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-fre -ftree-sra -ftree-ter -funit-at-a-time
-O は、デバッグの妨げにならないマシンで -fomit-frame-pointer もオンにします。
-fno-math-errno、-funsafe-math-optimizations、-ffinite-math-only、-fno-rounding-math、-fno-signaling-nans、および -fcx-limited-range を設定します。このオプションにより、プリプロセッサ マクロ " FAST_MATH " が定義されます。
このオプションは、-O オプションによってオンにされません。これは、数学関数の IEEE または ISO 規則/仕様の正確な実装に依存するプログラムの出力が正しくない可能性があるためです。ただし、これらの仕様の保証を必要としないプログラムでは、より高速なコードが生成される場合があります。