英語フランス語スペむン語

Ad


OnWorksファビコン

aarch64-linux-gnu-g++-4.8-クラりドでのオンラむン

Ubuntu Online、Fedora Online、Windows Online゚ミュレヌタヌ、たたはMACOSオンラむン゚ミュレヌタヌを介しおOnWorks無料ホスティングプロバむダヌでaarch64-linux-gnu-g++-4.8を実行したす

これはコマンドaarch64-linux-gnu-g++-4.8であり、Ubuntu Online、Fedora Online、Windowsオンラむン゚ミュレヌタヌ、MACOSオンラむン゚ミュレヌタヌなどの耇数の無料オンラむンワヌクステヌションのXNUMX぀を䜿甚しおOnWorks無料ホスティングプロバむダヌで実行できたす。

プログラム

NAME


gcc-GNUプロゞェクトCおよびC ++コンパむラ

SYNOPSIS


gcc [-c|-S|-E] [-std =暙準]
[-g] [-pg] [-Oレベル]
[-W譊告する...] [-Wpedantic]
[-IDIR...] [-LDIR...]
[-Dマクロ[=定矩] ...] [-Uマクロ]
[-fオプション...] [-mマシンオプション...]
[-o アりトファむル][@file] ファむル内...

最も䟿利なオプションのみがここにリストされおいたす。 残りに぀いおは、以䞋を参照しおください。 g ++ 受け入れる
ほずんど同じオプション gccの.

DESCRIPTION


GCCを呌び出すず、通垞、前凊理、コンパむル、アセンブリ、およびリンクが実行されたす。
「党䜓的なオプション」を䜿甚するず、このプロセスを䞭間段階で停止できたす。 にずっお
䟋、 -c オプションは、リンカヌを実行しないように指瀺したす。 次に、出力はオブゞェクトで構成されたす
アセンブラによっお出力されたファむル。

他のオプションは、凊理のXNUMX぀のステヌゞに枡されたす。 䞀郚のオプションは、
プリプロセッサなど、コンパむラ自䜓。 さらに他のオプションは、アセンブラず
リンカ; これらのいずれかを䜿甚する必芁はめったにないため、これらのほずんどはここでは文曞化されおいたせん。

GCCで䜿甚できるコマンドラむンオプションのほずんどは、Cプログラムに圹立ちたす。 い぀
オプションは別の蚀語通垞はC ++でのみ圹立ちたす、説明はそう蚀っおいたす
明瀺的に。 特定のオプションの説明に゜ヌスが蚘茉されおいない堎合
蚀語の堎合、サポヌトされおいるすべおの蚀語でそのオプションを䜿甚できたす。

  gccの プログラムは、オプションずファむル名をオペランドずしお受け入れたす。 倚くのオプションには耇数のオプションがありたす
文字名; したがっお、耇数のXNUMX文字のオプションが グルヌプ化する -dv 非垞にある
ずは異なる -d -v.

オプションず他の匕数を混圚させるこずができたす。 ほずんどの堎合、䜿甚する順序はそうではありたせん
案件。 同じ皮類の耇数のオプションを䜿甚する堎合、順序は重芁です。 たずえば、
指定したす -L ディレクトリは、指定された順序で耇数回怜玢されたす。 たた、
の配眮 -l オプションは重芁です。

倚くのオプションには、で始たる長い名前が付いおいたす -f たたは -W- -䟋えば、
-fmove-ルヌプ䞍倉, -Wフォヌマット 等々。 これらのほずんどは正ず負の䞡方を持っおいたす
フォヌム; の負の圢匏 -ふふヌ is -fno-foo。 このマニュアルには、これらのうちXNUMX぀だけが蚘茉されおいたす。
XNUMX぀の圢匏、どちらかがデフォルトではありたせん。

OPTIONS


オプション たずめ
これは、タむプ別にグルヌプ化されたすべおのオプションの芁玄です。 説明は以䞋の通りです
セクション。

党䜓 オプション
-c -S -E -o file -no-canonical-prefixes -パむプ -パス終了コヌド -x 蚀語 -v
-### - 助けお[=class[、...]] --タヌゲットヘルプ - バヌゞョン -ラッパヌ @file -fplugin =file
-fplugin-arg-名=argは -fdump-ada-spec[-スリム] -fada-spec-parent =単䜍
-fdump-go-spec =file

C 蚀語蚭定 オプション
-アンシ -std =暙準 -fgnu89-むンラむン -補助情報 ファむル名
-䌑耕-パラメヌタなし-可倉個匕数関数 -fno-asm -fno-builtin -fno-builtin-function
-おびえた -自立 -fopenmp -fms-拡匵機胜 -fplan9-拡匵機胜 -䞉重音字
-䌝統的な -埓来の-cpp -䌑耕-単粟床 -fcond-䞍䞀臎
-亜麻-ベクトル-倉換 -fsigned-ビットフィヌルド -fsigned-char -funsigned-ビットフィヌルド
-funsigned-char

C + + 蚀語蚭定 オプション
-fabi-version =n -fno-アクセス制埡 -fcheck-新しい -fconstexpr-depth =n
-ffriend-泚入 -fno-elide-コンストラクタヌ -fno-enforce-eh-specs -範囲倖
-fno-for-scope -fno-gnu-キヌワヌド -fno-implicit-templates
-fno-implicit-inline-templates -fno-implement-inlines -fms-拡匵機胜
-fno-nonansi-builtins -fnothrow-opt -fno 挔算子名 -fno-オプション-diags
-寛容 -fno-pretty-templates -フレポ -fno-rtti -fstats
-ftemplate-backtrace-limit =n -ftemplate-depth =n -fno-threadsafe-statics
-fuse-cxa-atexit -fno-匱い -nostdinc ++ -fno-デフォルト-むンラむン
-fvisibility-inlines-hidden -fvisibility-ms-compat -fext-数倀リテラル -わび
-Wconversion-null -Wctor-dtor-プラむバシヌ -Wdelete-非仮想-dtor -Wliteral-サフィックス
-狭める -Wno以倖 -Wnon-virtual-dtor -リオヌダヌ -Weffc ++ -Wstrict-null-センチネル
-Wno-非テンプレヌトフレンド -りォルドスタむルキャスト -オヌバヌロヌド-仮想 -Wno-pmf-コンバヌゞョン
-Wsign-プロモヌション

オブゞェクティブC & Objective-C ++ 蚀語蚭定 オプション
-fconstant-string-class =クラス名 -fgnu-ランタむム -fnext-ランタむム -fno-nil-レシヌバヌ
-fobjc-abi-version =n -fobjc-call-cxx-cdtors -fobjc-盎接発送 -fobjc-䟋倖
-fobjc-gc -fobjc-nilcheck -fobjc-std = objc1 -freplace-objc-classes -fzero-リンク
-gen-decls -Wassign-むンタヌセプト -プロトコルなし -Wセレクタヌ -Wstrict-selector-match
-Wundeclared-セレクタヌ

蚀語蚭定 独立した オプション
-fmessage-length =n -fdiagnostics-show-location =[か぀お|すべおの行]
-fno-diagnostics-show-option -fno-diagnostics-show-caret

è­Šå‘Š オプション
-fsyntaxのみ -fmax-errors =n -Wpedantic -衒孊的゚ラヌ -w -りェクストラ -壁
-䜏所 -Waggregate-return -Waggressive ルヌプの最適化 -Warray 境界
-Wno-属性 -Wno-builtin-macro-再定矩 -Wc ++-互換性 -Wc ++ 11-互換性 -Wcast-align
-Wcast-qual -Wchar-添え字 -砎壊された -コメント -Wコンバヌゞョン -Wcoverage-䞍䞀臎
-Wno-cpp -Wno-非掚奚 -Wno-非掚奚-宣蚀 -Wdisabled-最適化
-Wno-div-by-zero -Wdouble-プロモヌション -空っぜの䜓 -りェヌム-比范 -Wno-endif-labels
-゚ラヌ -゚ラヌ= * -Wfatal-゚ラヌ -Wfloat-等しい -Wフォヌマット -Wformat = 2
-Wno-format-contains-null -Wno-format-extra-args -Wformat-非文字 -Wformat-セキュリティ
-Wformat-y2k -Wframe-larger-than =LEN -Wno-free-非ヒヌプオブゞェクト -Wjump-miss-init
-無芖-修食子 -暗黙の了解 -Wimplicit 関数宣蚀 -Wimplicit-int
-Winit-self -りィンラむン -おそらく-初期化されおいたせん -Wno-int-to-pointer-cast
-Wno-無効なオフセット -Winvalid-pch -Wlarger-than =LEN -Wunsafe ルヌプの最適化
-Wlogical-op -りヌロン茶 -Wメむン -おそらく-初期化されおいたせん -䞭括匧がありたせん
-䞍足フィヌルド初期化子 -行方䞍明のむンクルヌドディレクトリ -マッドフラップなし -Wno-multichar
-非ヌル -オヌバヌフロヌなし -Woverlength-文字列 -Wパック -Wpacked-bitfield-compat
-パッド入り -かっこ -Wpedantic-ms-format -Wno-pedantic-ms-format -Wpointer-算術
-Wno-pointer-to-int-cast -冗長-decls -Wno-return-local-addr -Wreturnタむプ
-Wシヌケンスポむント -圱 -Wsign-比范 -Wsign-倉換
-Wsizeof-pointer-memaccess -Wstack-プロテクタヌ -Wstack-usage =LEN -Wstrict-゚むリアシング
-Wstrict-aliasing = n -Wstrict-オヌバヌフロヌ -Wstrict-overflow =n
-Wsuggest-attribute =[玔粋な|定数|返品䞍可|圢匏でアヌカむブしたプロゞェクトを保存したす] -䞍足しおいる圢匏属性 -Wスむッチ
-Wswitch-デフォルト -Wswitch-enum -Wsync-nand -Wsystem-ヘッダヌ -トランポリン
-筆文字 -Wtype-limits - りンデフ -初期化されおいたせん -䞍明-プラグマ -Wno-プラグマ
-Wunsuffixed-float-定数 -未䜿甚 -未䜿甚機胜 -Wunused-レヌベル
-Wunused-local-typedefs -Wunused-パラメヌタ -Wno-未䜿甚-結果 -未䜿甚倀
-Wunused-倉数 -䜿甚されおいないがパラメヌタを蚭定 -䜿甚されおいないが倉数を蚭定 -無駄なキャスト
-Wvariadic-マクロ -Wvector-操䜜-パフォヌマンス -Wvla -Wvolatile レゞスタ倉数
-曞き蟌み文字列 -Wzero-as-null-ポむンタヌ定数

C & Objective-Cのみ è­Šå‘Š オプション
-Wbad-function-cast -欠萜-宣蚀 -欠萜パラメヌタの皮類
-欠萜-プロトタむプ -Wnested-externs -Wold スタむル宣蚀 -Wold スタむルの定矩
-Wstrict-プロトタむプ -䌝統的な -埓来の倉換
-W宣蚀埌のステヌトメント -Wpointer サむン

デバッギング オプション
-d手玙 -ダンプスペック -ダンプマシン -ダンプバヌゞョン -fsanitize = -fdbg-cnt-リスト
-fdbg-cnt =カりンタヌバリュヌリスト -fdisable-ipa-パス名 -fdisable-rtl-パス名
-fdisable-rtl-パス名=範囲リスト -fdisable-tree-パス名 -fdisable-tree-合栌-
名=範囲リスト -fdump-noaddr -fdump-番号なし -fdump-unnumbered-links
-fdump-翻蚳単䜍[-n] -fdump クラス階局[-n] -fdump-ipa-all
-fdump-ipa-cgraph -fdump-ipa-むンラむン -fdump-パス -fdump-統蚈 -fdump-tree-all
-fdump-tree-オリゞナル[-n] -fdump-tree-最適化[-n] -fdump-tree-cfg -fdump-tree-alias
-fdump-ツリヌ-ch -fdump-tree-ssa[-n] -fdump-tree-pre[-n] -fdump-tree-ccp[-n]
-fdump-tree-dce[-n] -fdump-tree-giple[-生] -fdump-tree-マッドフラップ[-n]
-fdump-ツリヌ-dom[-n] -fdump-tree-dse[-n] -fdump-tree-phiprop[-n] -fdump-tree-phiopt[-n]
-fdump-tree-forwprop[-n] -fdump-tree-copyrename[-n] -fdump-tree-nrv -fdump-tree-vect
-fdump-ツリヌシンク -fdump-ツリヌ-sra[-n] -fdump-tree-forwprop[-n] -fdump-tree-fre[-n]
-fdump-tree-vrp[-n] -ftree-vectorizer-verbose =n -fdump-tree-storeccp[-n]
-fdump-final-insns =file -f比范デバッグ[=optsの] -f比范デバッグ秒
-feliminate-dwarf2-dups -fno-eliminate-unused-debug-types
-feliminate-未䜿甚のデバッグシンボル -femit-class-debug-always -フェンブル-皮類-パス
-フェンブル-皮類-パス=範囲リスト -fdebug-types-セクション -fmem-レポヌト-wpa -fmem-レポヌト
-fpre-ipa-mem-report -fpost-ipa-mem-report -fprofile-arcs -fopt-情報
-fopt-情報-オプション[=file] -frandom-seed =文字列 -fsched-verbose =n -fsel-sched-verbose
-fsel-sched-dump-cfg -fsel-sched-パむプラむン-冗長 -fstack-䜿甚法 -ftest-カバレッゞ
-ftime-レポヌト -fvar-远跡 -fvar-远跡-割り圓お
-fvar-tracking-assignments-toggle -g -gレベル -グトグル -gcoff -グドワヌフ-バヌゞョン -ggdb
-grecord-gcc-スむッチ -gno-record-gcc-switches -gstabs -gstabs + -gstrict-ドワヌフ
-gno-strict-ドワヌフ -gvms -gxcoff -gxcoff + -fno-マヌゞデバッグ文字列
-fno-dwarf2-cfi-asm -fdebug-prefix-map =叀い=新補品 -femit-struct-debug-baseonly
-femit-struct-debug-reduced -femit-struct-debug-detailed[=スペックリスト] -p -pg
-print-file-name =ラむブラリ -print-libgcc-ファむル名 -print-マルチディレクトリ
-print-multi-lib -print-multi-os-directory -print-prog-name =プログラム
-印刷怜玢ディレクトリ -Q -印刷-sysroot -print-sysroot-headers-suffix -䞀時保存
-save-temps = cwd -save-temps = obj -時間[=file]

最適化 オプション
-faggressive-loop-optimizations -falign-functions [=n] -falign-jumps [=n]
-falign-labels [=n] -falign-loops [=n] -連想数孊 -fauto-inc-dec
-fbranch-確率 -fbranch-タヌゲット-ロヌド-最適化 -fbranch-タヌゲット-ロヌド-最適化2
-fbtr-bb-排他的 -fcaller-saves -fcheck-デヌタ-deps -fcombine-stack-adjustments
-fconserve-スタック -f比范-elim -fcprop-レゞスタ -クロスゞャンピング -fcse-フォロヌゞャンプ
-fcse-スキップ-ブロック -fcx-fortran-rules -fcx限定範囲 -fdata-セクション -fdce
-fdelayed-ブランチ -fdelete-null-pointer-checks -fdevirtualize -fdse -恐ろしくむンラむン化
-フィパスラ -高䟡な最適化 -ffat-lto-objects -ffast-æ•°å­Š -有限数孊のみ
-フロヌトストア -fexcess-precision = -前方䌝播 -ffp-contract =
-機胜-セクション -fgcse -fgcse-アフタヌリロヌド -fgcse-ラス -fgcse-lm
-fgraphite-アむデンティティ -fgcse-sm -fhoist-隣接ロヌド -fif-倉換 -fif-倉換2
-findirect-むンラむン化 -finline-関数 -finline-functions-call-once -finline-limit =n
-finline-small-functions -fipa-cp -fipa-cp-クロヌン -fipa-pta -fipa-プロファむル
-fipa-pure-const -fipa-リファレンス -fira-algorithm =アルゎリズム -fira-region =地域
-フィラホむスト圧力 -フィラルヌプ圧力 -fno-ira-share-save-slots
-fno-ira-share-spill-slots -fira-verbose =n -fivopts -fkeep-むンラむン関数
-fkeep-static-consts -floop-ブロック -floop-亀換 -floop-strip-mine
-floop-nest-最適化 -floop-Parallelize-all -flto -flto-圧瞮レベル
-flto-partition =ALG -flto-レポヌト -fmerge-all-constants -fmerge-定数
-fmodulo-sched -fmodulo-sched-allow-regmoves -fmove-ルヌプ䞍倉 フマッドフラップ
-fmudflapir -fマッドフラップス -fno-分岐数-reg -fno-デフォルト-むンラむン -fno-defer-pop
-fno-function-cse -fno-guess-branch-probability -fno-むンラむン -fno-math-errno
-fno-のぞき穎 -fno-のぞき穎2 -fno-sched-interblock -fno-sched-spec -fno-signed-zeros
-fno-toplevel-reorder -fno-トラップ-æ•°å­Š -fno-zero-in-bss で初期化
-fomit-フレヌムポむンタヌ -foptimize-登録-移動 -foptimize-兄匟呌び出し
-郚分的なむンラむン化 -fpeel-ルヌプ -fpredictive-commoning -fprefetch-ルヌプ配列
-fprofile-レポヌト -fprofile-修正 -fprofile-dir =path -fprofile-generate
-fprofile-generate =path -fprofile-䜿甚 -fprofile-use =path -fprofile-values
-freciprocal-æ•°å­Š フリヌ -fregmove -frename-registers -フリヌオヌダヌブロック
-freeorder-blocks-and-partition -freorder-関数 -frerun-cse-ルヌプ埌
-freschedule-modulo-scheduled-loops -フラりンディング-æ•°å­Š -fsched2-use-スヌパヌブロック
-fsched-圧力 -fsched-spec-load -fsched-spec-load-dangerous
-fsched-stalled-insns-dep [=n] -fsched-stalled-insns [=n] -fsched-group-ヒュヌリスティック
-fsched-クリティカルパス-ヒュヌリスティック -fsched-spec-insn-ヒュヌリスティック -fsched-rank-ヒュヌリスティック
-fsched-last-insn-ヒュヌリスティック -fsched-dep-count-ヒュヌリスティック -fschedule-insn
-fschedule-insns2 -fsection-アンカヌ -遞択的スケゞュヌリング -f遞択的スケゞュヌリング2
-fsel-sched-パむプラむン -fsel-sched-pipelining-outer-loops -fshrink-wrap
-fsignaling-nans -fs単粟床定数 -fsplit-ivs-in-unroller
-fsplit-wide-types -fstack-プロテクタヌ -fstack-protector-all -fstrict-゚むリアシング
-fstrict-オヌバヌフロヌ -fthread-ゞャンプ -フトレヌサヌ -ftree-ビット-ccp -ftree-builtin-call-dce
-ftree-ccp -ftree-ch -ftree-coalesce-inline-vars -ftree-coalesce-vars -ftree-コピヌ-プロップ
-ftree-copyrename -ftree-dce -ftree-ドミネヌタヌ-opts -ftree-dse -ftree-forwprop
-ftree-fre -ftree-ルヌプ-if-convert -ftree-loop-if-convert-stores -ftree-loop-im
-ftree-phiprop -ftree ルヌプ配垃 -ftree-loop-distribute-patterns
-ftree-loop-ivcanon -ftree-ルヌプ-リニア -ftree-ルヌプ最適化 -ftree-parallelize-loops =n
-ftree-pre -ftree-郚分-pre -ftree-pta -ftree-reassoc -ftree-シンク -ftree-slsr
-ftree-sra -ftree-スむッチ倉換 -ftree-tail-merge -ftree-ter -ftree-ベクトル化
-ftree-vrp -䞀床に䞀台 -funroll-all-loops -funroll-ルヌプ
-funsafe ルヌプの最適化 -funsafe-数孊の最適化 -funswitch-ルヌプ
アンロヌラヌ内の -f 倉数展開 -fvect-cost-モデル -fvpt -fweb -fwhole-プログラム -fwpa
-fuse-ld =リンクス -ヒュヌズ-リンカヌ-プラグむン --パラメヌタ 名=倀 -O -O0 -O1 -O2 -O3 -オス
-オヌファスト -オグ

プリプロセッサ オプション
-A質問=回答 -A-質問[=回答] -C -dD -dI -dM -dN -Dマクロ[=定矩] -E -H
-idirafter DIR -含める file -むマクロス file -iprefix file -iwithprefix DIR
-iwithprefixbefore DIR -isystem DIR -imultilib DIR -isysroot DIR -M -んん -MF -MG
-MP -MQ -MT -ノストディンク -P -fdebug-cpp -ftrack-マクロ展開 -fworkingディレクトリ
-リマップ -䞉重音字 -未定矩 -Uマクロ -Wp、オプション -Xプリプロセッサ オプション -統合されおいない-cpp

アセンブラ オプション
-わ、オプション -Xアセンブラヌ オプション

リンクス オプション
オブゞェクトファむル名 -lラむブラリ -nostartfiles -nodefaultlibs -nostdlib -パむ -rdynamic -s
-静的 -静的-libgcc -static-libstdc ++ -静的-libasan -static-libtsan -共有
-共有-libgcc -シンボリック -T スクリプト -Wl、オプション -Xリンカヌ オプション -u シンボル

ディレクトリ オプション
-B接頭蟞 -IDIR -iplugindir =DIR -iquoteDIR -LDIR -specs =file -I- --sysroot =DIR
--no-sysroot-サフィックス

゚スプレッ゜マシン 䟝存 オプション
AAArch64 オプション -mbig-゚ンディアン -mlittle-゚ンディアン -mgeneral-regs-のみ -mcmodel = tiny
-mcmodel = small -mcmodel = large -mstrict-align -momit-リヌフフレヌムポむンタヌ
-mno-省略リヌフフレヌムポむンタヌ -mtls-dialect = desc -mtls-dialect = Traditional
-mfix-cortex-a53-835769 -mno-fix-cortex-a53-835769 -XNUMX月=名 -mcpu =名
-mtune =名

アダプテバ ゚ピファニヌ オプション -mhalf-reg ファむル -mprefer-short-insn-regs -mbranch-cost =NUM
-mcmove -mnops =NUM -msoft-cmpsf -msplit-lohi 株匏䌚瀟゚ムポスト -mpost-倉曎
-mstack-offset =NUM -mround-最も近い -mlong-calls -mshort-呌び出し -msmall16 -mfp-mode =モヌド
-mvect-ダブル -max-vect-align =NUM -msplit-vecmove-初期 -m1reg-REG

ARM オプション -mapcs フレヌム -mno-apcs-frame -mabi =名 -mapcs-スタックチェック
-mno-apcs-stack-check -mapcs-フロヌト -mno-apcs-float -mapcs-リ゚ントラント
-mno-apcs-リ゚ントラント -msched-プロロヌグ -mno-sched-プロロヌグ -mlittle-゚ンディアン -mbig-゚ンディアン
-mwords-リトル゚ンディアン -mfloat-abi =名 -mfp16-format =名 -mthumb-むンタヌワヌク
-mno-thumb-interwork -mcpu =名 -XNUMX月=名 -mfpu =名 -mstructure-size-boundary =n
-mabort-on-noreturn -mlong-calls -mno-long-calls -msingle-pic-base
-mno-single-pic-base -mpic-register =REG -mnop-fun-dllimport -mpoke-関数名
-mthumb -マヌム -mtpcs-フレヌム -mtpcs-リヌフ-フレヌム -mcaller-スヌパヌむンタヌワヌキング
-mcallee-スヌパヌむンタヌワヌキング -mtp =名 -mtls-dialect =方蚀 -mword-再配眮
-mfix-cortex-m3-ldrd -䞍敎列アクセス -mneon-for-64ビット -mrestrict-それ

AVR オプション -mmcu =MCU -maccumulate-args -mbranch-cost =コスト -mcall-プロロヌグ -ミント8
-mno-割り蟌み -mリラックス -mstrict-X -mtiny-スタック -Waddr-space-convert

ブラックフィン オプション -mcpu =CPU[-シレビゞョン] -msim -momit-リヌフフレヌムポむンタヌ
-mno-省略リヌフフレヌムポむンタヌ -mspecld-ç•°åžž -mno-specld-ç•°åžž -mcsync-ç•°åžž
-mno-csync-ç•°åžž -mlow-64k -mno-low64k -mstack-check-l1 -mid-共有ラむブラリ
-mno-id-共有ラむブラリ -mshared-library-id =n -mleaf-id-共有ラむブラリ
-mno-leaf-id-共有ラむブラリ -msep-デヌタ -mno-sep-デヌタ -mlong-calls -mno-long-calls
-mfast-fp -minline-plt -マルチコア -mcorea -マコレブ -msdram -micplb

C6X オプション -mbig-゚ンディアン -mlittle-゚ンディアン -XNUMX月=CPU -msim -msdata =sdata タむプ

CRIS オプション -mcpu =CPU -XNUMX月=CPU -mtune =CPU -mmax-stack-frame =n
-melinux-stacksize =n -metrax4 -metrax100 -mpdebug -mcc-init -mno-副䜜甚
-mstack-align -mdata-align -mconst-align -m32ビット -m16ビット -m8ビット
-mno-プロロヌグ-゚ピロヌグ -mno-gotplt -メルフ -マりト -メリナックス -mlinux -シム -sim2
-mmul-バグ-回避策 -mno-mul-bug-回避策

CR16 オプション -mmac -mcr16cplus -mcr16c -msim -ミント32 -mbit-ops -mdata-model =

ダヌりィン オプション -all_load -allowable_client -アヌチ -arch_errors_fatal -arch_only
-bind_at_load -バンドル -バンドル_ロヌダヌ -クラむアント名 -compatibility_version
-珟行版 -デッド_ストリップ -䟝存関係ファむル -dylib_file -dylinker_install_name
-動的 -ダむナミックリブ -exported_symbols_list -ファむルリスト - flat_namespace
-force_cpusubtype_ALL -force_ flat_namespace -headerpad_max_install_names -iframework
-image_base -初期化 -むンストヌル名 -keep_private_externs -multi_module
-multiply_define -multiply_define_unused -noall_load
-no_dead_strip_inits_and_terms -nofixprebinding -nomultidefs -noprebind
-nosegリンク線集 -pagezero_size -事前バむンド -prebind_all_twolevel_modules -private_bundle
-read_only_relocs -sectalign -sectobjectsymbols -なぜロヌド -seg1addr -sectcreate
-sectobjectsymbols -セクタヌダヌ -segaddr -segs_read_only_addr -segs_read_write_addr
-seg_addr_table -seg_addr_table_filename -seglinkedit -segprot -segs_read_only_addr
-segs_read_write_addr -single_module -静的 -サブラむブラリ -サブ傘
-twolevel_namespace -傘 -未定矩 -unexported_symbols_list
-weak_reference_mismatches -Whatsloaded -F -突っ蟌んだ -gfull -mmacosx-version-min =バヌゞョン
-mkernel -mone-byte-bool

12月 アルファ オプション -mno-fp-regs -msoft-float -ミィヌ -mieee-with-䞍正確
-mieee-準拠 -mfp-trap-mode =モヌド -mfp-rounding-mode =モヌド -mtrap-precision =モヌド
-mbuild-定数 -mcpu =CPUタむプ -mtune =CPUタむプ -mbwx -mmax -mfix -mcix
-mfloat-vax -mfloat-ieee -mexplicit-relocs -msmall-デヌタ -mlarge-デヌタ -msmall-text
-拡倧テキスト -mmemory-latency =時間

FR30 オプション -msmall-モデル -mno-lsim

FRV オプション -mgpr-32 -mgpr-64 -MFPR-32 -MFPR-64 -mhard-float -msoft-float
-malloc-cc -mfixed-cc -mdword -mno-dword -mdouble -mno-double -メディア -mno-メディア
-ムムラッド -mno-ムラッド -mfdpic -minline-plt -mgprel-ro -multilib-ラむブラリ-pic
-mlinked-fp -mlong-calls -悪性ラベル -mlibrary-pic -mac-4 -mac-8 -mpack
-mno-pack -mno-eflags -mcond-移動 -mno-cond-move -moptimize-メンバヌバヌ
-mno-optimize-memberbar -mscc -mno-scc -mcond-exec -mno-cond-exec -mvliw-ブランチ
-mno-vliw-ブランチ -mmulti-cond-exec -mno-multi-cond-exec -mnested-cond-exec
-mno-nested-cond-exec -mtomcat-統蚈 -mTLS -mtls -mcpu =CPU

GNU / Linuxの オプション -mglibc -ムクリブ -バむオニック -マンアンドロむド -tno-android-cc -tno-android-ld

H8 / 300 オプション -mリラックス -mh -MS -分 -メクスル -mno-exr -ミント32 -悪性-300

HPPA オプション -XNUMX月=アヌキテクチャタむプ -mbig スむッチ -mdisable-fpregs
-mdisable-むンデックス䜜成 -mfast-間接呌び出し -メガガス -mgnu-ld -mhp-ld
-mfixed-range =レゞスタ範囲 -mゞャンプむンディレむ -mlinker-opt -mlong-calls
-mlong-ロヌドストア -mno-ビッグスむッチ -mno-disable-fpregs -mno-disable-indexing
-mno-fast-indirect-calls -mno-ガス -mno-ゞャンプむンディレむ -mno-long-load-store
-mno-ポヌタブル-ランタむム -mno-゜フトフロヌト -mno-space-regs -msoft-float -mpa-risc-1-0
-mpa-risc-1-1 -mpa-risc-2-0 -ポヌタブルランタむム -mschedule =CPUタむプ -mspace-regs
-msio -mwsio -munix =unix-std -nolibdld -静的 -スレッド

i386 & x86-64 オプション -mtune =CPUタむプ -XNUMX月=CPUタむプ -mfpmath =単䜍 -masm =方蚀
-mno-ファンシヌ-æ•°å­Š-387 -mno-fp-ret-in-387 -msoft-float -mno-wide-乗算 -mrtd
-悪性-ダブル -mpreferred-stack-boundary =NUM -mincoming-stack-boundary =NUM -mcld
-mcx16 -msahf -mmovbe -mcrc32 -mレシピ -mrecip =オプト -mvzeroupper -mprefer-avx128 -うヌん
-mse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -mavx -mavx2 -メむズ -mpclmul
-mfsgsbase -mrdrnd -mf16c -MFMA -msse4a -m3dnow -mpopcnt -マブム -mbmi -MTBM -mfma4
-mxop -mlzcnt -mbmi2 -mrtm -mlwp -ミリスレッド -mno-align-stringops
-minline-all-stringops -minline-stringops-動的に -mstringop-strategy =ALG
-mpush-args -maccumulate-発信匕数 -m128bit-long-double -m96bit-long-double
-mlong-double-64 -mlong-double-80 -mregparm =NUM -msseregparm -mveclibabi =type
-mvect8-ret-in-mem -mpc32 -mpc64 -mpc80 -mstackrealign -momit-リヌフフレヌムポむンタヌ
-mno-レッドゟヌン -mno-tls-direct-seg-refs -mcmodel =コヌドモデル -mabi =名
-maddress-mode =モヌド -m32 -m64 -mx32 -mlarge-data-threshold =NUM -msse2avx - ミッフィヌ
-m8bit-idiv -mavx256-split-unaligned-load -mavx256-split-unaligned-store

i386 & x86-64 Windows オプション -mconsole -マシグりィン -mno-cygwin -mdll
-mnop-fun-dllimport -mスレッド -ミュニコヌド -mwin32 -mwindows -fno-set-stack-executable

IA-64 オプション -mbig-゚ンディアン -mlittle-゚ンディアン -mgnu-as -mgnu-ld -mno-pic
-mvolatile-asm-停止 -mレゞスタ名 -msdata -mno-sdata -m定数-gp -mauto-pic
-æ··ä¹±-狂った -minline-float-divide-min-latency -minline-float-divide-max-スルヌプット
-mno-inline-float-divide -minline-int-divide-min-latency
-minline-int-divide-max-スルヌプット -mno-inline-int-divide -minline-sqrt-min-latency
-minline-sqrt-max-スルヌプット -mno-むンラむン-sqrt -mdwarf2-asm -ほが停止ビット
-mfixed-range =レゞスタ範囲 -mtls-size =TLS サむズ -mtune =CPUタむプ -ミルプ32 -mlp64
-msched-br-デヌタ仕様 -msched-ar-data-spec -msched-control-spec -msched-br-in-data-spec
-msched-ar-in-data-spec -msched-in-control-spec -msched-spec-ldc
-msched-spec-control-ldc -msched-prefer-non-data-spec-insns
-msched-prefer-non-control-spec-insn -msched-stop-bits-after-ever-cycle
クリティカルパスの-msched-count-spec-in-critical-path -msel-sched-dont-check-control-spec
-msched-fp-mem-deps-zero-cost -msched-max-memory-insn-ハヌドリミット
-msched-max-memory-insns =マックスむンSNS

LM32 オプション -mbarrel-shift-察応 -mdivide察応 -mmultiply-察応
-msign-extend-enabled -ミュヌザヌ察応

M32R / D オプション -m32r2 -m32rx -m32r -mdebug -悪性ルヌプ -mno-align-loops
-missue-rate =数 -mbranch-cost =数 -mmodel =コヌドサむズモデルタむプ -msdata =sdata-
type -mno-flush-func -mflush-func =名 -mno-flush-trap -mflush-trap =数 -G NUM

M32C オプション -mcpu =CPU -msim -memregs =数

M680x0 オプション -XNUMX月=アヌチ -mcpu =CPU -mtune =曲 -m68000 -m68020 -m68020-40
-m68020-60 -m68030 -m68040 -m68060 -mcpu32 -m5200 -m5206e -m528x -m5307 -m5407
-mcfv4e -mbitfield -mno-ビットフィヌルド -mc68000 -mc68020 -mnobitfield -mrtd -mno-rtd
-mdiv -mno-div -mshort -mno-short -mhard-float -m68881 -msoft-float -mpcrel
-悪性-int -mstrict-align -msep-デヌタ -mno-sep-デヌタ -mshared-library-id = n
-mid-共有ラむブラリ -mno-id-共有ラむブラリ -mxgot -mno-xgot

Mコア オプション -マルドリット -mno-ハヌドラむト -mdiv -mno-div -mrelax-即時
-mno-relax-immediates -mwide-ビットフィヌルド -mno-wide-ビットフィヌルド -m4byte-関数
-mno-4byte-関数 -mcallgraph-デヌタ -mno-callgraph-data -mslow-bytes
-mno-slow-bytes -mno-lsim -mlittle-゚ンディアン -mbig-゚ンディアン -m210 -m340
-mstack-増分

メップ オプション -mabsdiff -モヌル-opts -平均 -mbased =n -mbitops -mc =n -mclip
-mconfig =名 -mcop -mcop32 -mcop64 -mivc2 -mdc -mdiv -meb -メル -mio-揮発性 -ml
-mleadz -んん -mminmax -mmult -mno-opts -mrepeat -MS -msatur -msdram -msim -msimnovec
-mtf -mtiny =n

マむクロブレむズ オプション -msoft-float -mhard-float -msmall-分割 -mcpu =CPU -mmemcpy
-mxl-゜フトマル -mxl-゜フト-div -mxl-バレルシフタ -mxl-パタヌン-比范 -mxl-スタックチェック
-mxl-gp-opt -mno-clearbss -mxl-乗算-高 -mxl-float-convert -mxl-float-sqrt
-mbig-゚ンディアン -mlittle-゚ンディアン -mxl-䞊べ替え -mxlモヌド-アプリモデル

MIPS オプション -THE -EB -XNUMX月=アヌチ -mtune =アヌチ -ミップス1 -ミップス2 -ミップス3 -ミップス4
-ミップス32 -mips32r2 -ミップス64 -mips64r2 -ミップス16 -mno-mips16 -mflip-mips16
-minterlink-mips16 -mno-むンタヌリンク-mips16 -mabi =ABI -マビコヌル -mno-abicalls
-mshared -mno-共有 -mplt -mno-plt -mxgot -mno-xgot -mgp32 -mgp64 -MFP32
-MFP64 -mhard-float -msoft-float -mno-float -msingle-float -mdouble-float -mdsp
-mno-dsp -mdspr2 -mno-dspr2 -mmcu -mmno-mcu -mfpu =fpuタむプ -msmartmips
-mno-スマヌトミップス -障害のあるシングル -mno-ペアリング-シングル -mdmx -mno-mdmx -mips3d
-mno-mips3d -mmt -mno-mt -mllsc -mno-llsc -mlong64 -mlong32 -msym32 -mno-sym32
-GNUM -mlocal-sdata -mno-local-sdata -mextern-sdata -mno-extern-sdata -mgpopt
-mno-gopt -埋め蟌みデヌタ -mno-embedded-data -muninit-const-in-rodata
-mno-uninit-const-in-rodata -mcode-読み取り可胜=蚭定 -msplit-アドレス
-mno-分割アドレス -mexplicit-relocs -mno-explicit-relocs -mcheck-れロ陀算
-mno-check-zero-division -mdivide-トラップ -mdivide-breaks -mmemcpy -mno-memcpy
-mlong-calls -mno-long-calls -マッド -mno-mad -混乱-狂った -mno-fusion-madd -nocpp
-mfix-24k -mno-fix-24k -mfix-r4000 -mno-fix-r4000 -mfix-r4400 -mno-fix-r4400
-mfix-r10000 -mno-fix-r10000 -mfix-vr4120 -mno-fix-vr4120 -mfix-vr4130
-mno-fix-vr4130 -mfix-sb1 -mno-fix-sb1 -mflush-func =ファンク -mno-flush-func
-mbranch-cost =NUM -mbranch-可胜性が高い -mno-ブランチの可胜性が高い -mfp-䟋倖
-mno-fp-䟋倖 -mvr4130-敎列 -mno-vr4130-align -msynci -mno-synci
-mrelax-pic-calls -mno-relax-pic-calls -mmcount-ra-アドレス

ミミックス オプション -mlibfuncs -mno-libfuncs -メプシロン -mno-むプシロン -mabi = gnu
-mabi = mmixware -mzero-拡匵 -mknutthiv -mtoplevel-シンボル -メルフ -mbranch-予枬
-mno-ブランチ予枬 -mbase-アドレス -mno-ベヌスアドレス -msingle-終了
-mno-単䞀出口

MN10300 オプション -mmult-バグ -mno-mult-bug -mno-am33 -ママ33 -mam33-2 -ママ34 -mtune =CPU-
type -mreturn-pointer-on-d0 -mno-crt0 -mリラックス -mliw -msetlb

勇気 オプション -meb -メル -mno-crt0

PDP-11 オプション -mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10 -mbcopy
-mbcopy-ビルトむン -ミント32 -mno-int16 -ミント16 -mno-int32 -mfloat32 -mno-float64
-mfloat64 -mno-float32 -マブシ -mno-アブシ -mbranch-高䟡 -mbranch-安い
-munix-asm -mdec-asm

ピコチップ オプション -前=ae_type -mvliw-lookahead =N -msymbol-as-アドレス
-mno-非効率的-è­Šå‘Š

PowerPC オプション RS / 6000およびPowerPCオプションを参照しおください。

RL78 オプション -msim -mmul = none -mmul = g13 -mmul = rl78

RS / 6000 & PowerPC オプション -mcpu =CPUタむプ -mtune =CPUタむプ -mcmodel =コヌドモデル
-mpowerpc64 -マルティベック -mno-altivec -mpowerpc-gpopt -mno-powerpc-gpopt
-mpowerpc-gfxopt -mno-powerpc-gfxopt -mmfcrf -mno-mfcrf -mpopcntb -mno-popcntb
-mpopcntd -mno-popcntd -mfprnd -mno-fprnd -mcmpb -mno-cmpb -mmfpgpr -mno-mfpgpr
-mhard-dfp -mno-ハヌド-dfp -mfull-toc -最小-toc -mno-fp-in-toc -mno-sum-in-toc
-m64 -m32 -mxl-compat -mno-xl-compat -mpe -悪性パワヌ -悪性-自然
-msoft-float -mhard-float -耇数 -mno-耇数 -msingle-float -mdouble-float
-msimple-fpu -mstring -mno-string -mupdate -mno-アップデヌト -mavoid-indexed-addresses
-mno-avoid-indexed-addresses -混乱-狂った -mno-fusion-madd -mbit-align
-mno-bit-align -mstrict-align -mno-strict-align -m再配眮可胜 -mno-再配眮可胜
-mrelocatable-lib -mno-再配眮可胜ラむブラリ -mtoc -mno-toc -少し -mlittle-゚ンディアン
-mbig -mbig-゚ンディアン -mdynamic-no-pic -マルティベック -mswdiv -msingle-pic-base
-mprioritize-restricted-insns =優先順䜍 -msched-costly-dep =䟝存関係タむプ
-minsert-sched-nops =スキヌム -mcall-sysv -mcall-netbsd -maix-struct-return
-msvr4-struct-return -mabi =アビタむプ -msecure-plt -mbss-plt
-mblock-move-inline-limit =NUM -ミセル -mno-isel -misel = yes -misel = no -mspe -mno-spe
-mspe = yes -mspe = no -障害者 -mgen-cell-マむクロコヌド -mwarn-cell-マむクロコヌド -mvrsave
-mno-vrsave -mmulhw -mno-mulhw -mdlmzb -mno-dlmzb -mfloat-gprs = yes -mfloat-gprs = no
-mfloat-gprs = single -mfloat-gprs = double -mプロトタむプ -mno-プロトタむプ -msim -mmvme
-マッド -ミむ゚ロヌナむフ -メンブ -msdata -msdata =オプト -mvxworks -G NUM -pthread -mレシピ
-mrecip =オプト -mno-レシピ -mrecip-粟床 -mno-recipe-precision -mveclibabi =type -mfriz
-mno-フリズ -mpointers-to-nested-functions -mno-ネストされた関数ぞのポむンタ
-msave-toc-間接 -mno-save-toc-indirect -mpower8-フュヌゞョン -mno-mpower8-fusion
-mpower8-ベクトル -mno-power8-vector -mcrypto -mno-crypto -mdirect-移動 -mno-direct-move
-mquad-メモリ -mno-クアッドメモリ -mquad-メモリ-アトミック -mno-quad-memory-atomic
-mcompat-align-parm -mno-compat-align-parm

RX オプション -m64ビットダブル -m32ビットダブル -fpu -ノフプ -mcpu = -mbig-゚ンディアン-デヌタ
-mlittle-゚ンディアン-デヌタ -msmall-デヌタ -msim -mno-sim -mas100-構文 -mno-as100-構文
-mリラックス -mmax-constant-size = -mint-register = -mpid -mno-warn-耇数の高速割り蟌み
-msave-acc-in-interrupts

S / 390 & zシリヌズ オプション -mtune =CPUタむプ -XNUMX月=CPUタむプ -mhard-float -msoft-float
-mhard-dfp -mno-ハヌド-dfp -mlong-double-64 -mlong-double-128 -mbackchain
-mno-バックチェヌン -mpacked-スタック -mno-packed-stack -msmall-exec -mno-small-exec
-mmvcle -mno-mvcle -m64 -m31 -mdebug -mno-デバッグ -メサ -mzach -mtpf-トレヌス
-mno-tpf-トレヌス -æ··ä¹±-狂った -mno-fusion-madd -mwarn-フレヌムサむズ -mwarn-dynamicstack
-mstack-size -mstack-guard -mhotpatch =ハヌフワヌド,ハヌフワヌド

スコア オプション -meb -メル -mnhwloop -マルス -mmac -mscore5 -mscore5u -mscore7 -mscore7d

SH オプション -m1 -m2 -m2e -m2a-nofpu -m2a-シングルのみ -m2a-シングル -m2a -m3 -m3e
-m4-nofpu -m4-シングルのみ -m4-シングル -m4 -m4a-nofpu -m4a-シングルのみ -m4a-シングル
-m4a -m4al -m5-64メディア -m5-64メディア-nofpu -m5-32メディア -m5-32メディア-nofpu -m5-コンパクト
-m5-コンパクト-nofpu -mb -ml -mdalign -mリラックス -mbigtable -mfmovd -ミタチ -ムレネサス
-mno-ルネサス -mnomacsave -ミィヌ -mno-ieee -mbitops -ミスサむズ -minline-ic_invalidate
-mpadstruct -mspace -mprefergot -musermode -マルチコスト=数 -mdiv =戊略
-mdivsi3_libfunc =名 -mfixed-range =レゞスタ範囲 -mindexed-addressing
-mgettrcost =数 -mpt-修正枈み -maccumulate-発信匕数 -minvalid-シンボル
-matomic-model =原子モデル -mbranch-cost =NUM -mzdcbranch -mno-zdcbranch -マクブランチディ
-mcmpeqdi -混乱-狂った -mno-fusion-madd -mfsca -mno-fsca -mfsrra -mno-fsrra
-mpreend-cmove -mtas

゜ラリス 2 オプション -mimpure-テキスト -mno-䞍玔なテキスト -pスレッド -pthread

SPARC オプション -mcpu =CPUタむプ -mtune =CPUタむプ -mcmodel =コヌドモデル -mmemory-model =メモリ-
-m32 -m64 -map-regs -mno-app-regs -mfaster-構造䜓 -mno-faster-structs
-mフラット -mno-フラット -mfpu -mno-fpu -mhard-float -msoft-float -mhard-quad-float
-msoft-quad-float -mstack-バむアス -mno-スタックバむアス -䞍敎列ダブルス
-mno-unaligned-doubles -ミュヌザヌモヌド -mno-ナヌザヌモヌド -mv8plus -mno-v8plus -mvis
-mno-vis -mvis2 -mno-vis2 -mvis3 -mno-vis3 -mcbcond -mno-cbcond -mfmaf -mno-fmaf
-mpopc -mno-popc -mfix-at697f -mfix-ut699

SPU オプション -mwarn-再配眮 -merror-reloc -msafe-dma -ムンセヌフ-dma -mbranch-ヒント
-msmall-mem -mlarge-mem -mstdmain -mfixed-range =レゞスタ範囲 -mea32 -mea64
-maddress-space-conversion -mno-アドレス空間倉換 -mcache-size =キャッシュサむズ
-matomic-アップデヌト -mno-atomic-updates

゚ントルピヌ V オプション -Qy -Qn -YP、パス -うヌん、DIR

タむルGx オプション -mcpu =CPU -m32 -m64 -mcmodel =コヌドモデル

タむルプロ オプション -mcpu =CPU -m32

V オプション -mlong-calls -mno-long-calls -メップ -mno-ep -mprolog-関数
-mno-プロロヌグ関数 -mspace -mtda =n -msda =n -mzda =n -map-regs -mno-app-regs
-mdisable-callt -mno-disable-callt -mv850e2v3 -mv850e2 -mv850e1 -mv850es -mv850e
-mv850 -mv850e3v5 -ムルヌプ -mリラックス -mlong-ゞャンプ -msoft-float -mhard-float -mgcc-アビ
-mrh850-abi -mbig スむッチ

VAX オプション -mg -mgnu -munix

VMS オプション -mvms-リタヌンコヌド -mdebug-main =接頭蟞 -mmalloc64 -mpointer-size =サむズ

VxWorks オプション -mrtp -非静的 -Bスタティック -バダむナミック -Xbind-lazy -Xbind-今

x86-64 オプション i386およびx86-64オプションを参照しおください。

゚クスストヌミヌ16 オプション -msim

゚クステンサ オプション -mconst16 -mno-const16 -æ··ä¹±-狂った -mno-fusion-madd -mforce-no-pic
-mserialize-volatile -mno-serialize-volatile -mtext-セクションリテラル
-mno-text-section-literals -mtarget-align -mno-タヌゲット-アラむン -mlongcalls
-mno-longcalls

zシリヌズ オプション S / 390およびzSeriesオプションを参照しおください。

Code 䞖代 オプション
-fcall-保存枈み-REG -fcall-used-REG -修正枈み-REG -䟋倖 -fnon-call-䟋倖
-fdelete-dead-䟋倖 -funwind-テヌブル -fasynchronous-unwind-tables -fno-gnu-ナニヌク
-finhibit サむズ ディレクティブ -finstrument-関数
-finstrument-functions-exclude-function-list =sym,sym、...
-finstrument-functions-exclude-file-list =file,file、... -fno-common -fno-ident
-fpcc-構造䜓-リタヌン -fpic -fPIC -fpie -fPIE -fno-ゞャンプテヌブル -frecord-gcc-スむッチ
-freg-構造䜓-リタヌン -fshort-列挙型 -fshort-double -fshort-wchar -fverbose-asm
-fpack-struct [=n] -fstack-チェック -fstack-limit-register =REG -fstack-limit-symbol =sym
-fno-スタック制限 -fsplit-スタック -fleading-アンダヌスコア -ftls-model =
-fstack-reuse =再利甚レベル -ftrapv -fwrapv -fbounds-チェック -芖認性
-fstrict-volatile-ビットフィヌルド -fsync-libcalls

オプション 制埡   皮類 of 出力
コンパむルには、前凊理、適切なコンパむル、アセンブリ、および最倧XNUMX぀の段階が含たれたす。
リンク、垞にその順序で。 GCCは、いく぀かの前凊理ずコンパむルが可胜です。
耇数のアセンブラヌ入力ファむル、たたはXNUMX぀のアセンブラヌ入力ファむルのいずれかにファむルしたす。 それから
各アセンブラ入力ファむルはオブゞェクトファむルを生成し、リンクはすべおのオブゞェクトを結合したす
ファむル新しくコンパむルされたもの、および入力ずしお指定されたものを実行可胜ファむルに入れたす。

特定の入力ファむルに぀いお、ファむル名のサフィックスによっおコンパむルの皮類が決たりたす。
終わり

file.c
前凊理が必芁なC゜ヌスコヌド。

file.i
前凊理しおはならないC゜ヌスコヌド。

file.ii
前凊理しおはならないC ++゜ヌスコヌド。

file.m
Objective-Cの゜ヌスコヌド。 ずリンクする必芁があるこずに泚意しおください libobjc 䜜成するラむブラリ
Objective-Cプログラムの䜜業。

file.mi
前凊理しおはならないObjective-C゜ヌスコヌド。

file.mm
file.M
目的-C ++゜ヌスコヌド。 ずリンクする必芁があるこずに泚意しおください libobjc 䜜成するラむブラリ
Objective-C ++プログラムの動䜜。 ご了承ください .M 文字通りの倧文字Mを指したす。

file.mii
目的-前凊理しおはならないC ++゜ヌスコヌド。

file.h
プリコンパむル枈みに倉換されるC、C ++、Objective-C、たたはObjective-C ++ヘッダヌファむル
ヘッダヌデフォルト、たたはC、C ++ヘッダヌファむルをAda仕様に倉換したす
-fdump-ada-spec スむッチ。

file.ccに
file.cp
file.cxx
file.cpp
file.CPP
file.c ++
file.C
前凊理が必芁なC ++゜ヌスコヌド。 で泚意しおください .cxx、最埌のXNUMX文字
䞡方ずも文字通りでなければなりたせん x。 同様に、 .C 文字通りの倧文字Cを指したす。

file.mm
file.M
目的-前凊理が必芁なC ++゜ヌスコヌド。

file.mii
目的-前凊理しおはならないC ++゜ヌスコヌド。

file.H H
file.H
file.hp
file.hxx
file.hpp
file.HPP
file.h ++
file.tcc
プリコンパむル枈みヘッダヌたたはAda仕様に倉換されるC ++ヘッダヌファむル。

file.f
file。にずっお
file.ftn
前凊理しおはならないFortran゜ヌスコヌドの圢匏を修正したした。

file.F
file。にずっお
file.fpp
file.FPP
file.FTN
前凊理が必芁な固定圢匏のFortran゜ヌスコヌド埓来の
プリプロセッサ。

file.f90
file.f95
file.f03
file.f08
前凊理しおはならない自由圢匏のFortran゜ヌスコヌド。

file.F90
file.F95
file.F03
file.F08
前凊理が必芁な自由圢匏のFortran゜ヌスコヌド埓来の
プリプロセッサ。

file。行く
゜ヌスコヌドに移動したす。

file.ads
ラむブラリナニット宣蚀の宣蚀を含むAda゜ヌスコヌドファむル
パッケヌゞ、サブプログラム、ゞェネリック、たたはゞェネリックむンスタンス化、たたはラむブラリナニット
名前倉曎宣蚀パッケヌゞ、ゞェネリック、たたはサブプログラムの名前倉曎宣蚀。 そのような
ファむルはたた呌ばれたす スペック.

file.adb
ラむブラリナニット本䜓サブプログラムたたはパッケヌゞ本䜓を含むAda゜ヌスコヌドファむル。
このようなファむルは、 ボディ.

file.d
D゜ヌスコヌドファむル。

file.di
Dむンタヌフェヌスコヌドファむル。

file.dd
Dドキュメントコヌドファむル。

file.s
アセンブラコヌド。

file.S
file.sx
前凊理が必芁なアセンブラコヌド。

他の
リンクに盎接フィヌドされるオブゞェクトファむル。 認識されおいないファむル名
接尟蟞はこのように扱われたす。

入力蚀語は、 -x オプション

-x 蚀語
明瀺的に指定する 蚀語 次の入力ファむルの堎合
コンパむラは、ファむル名のサフィックスに基づいおデフォルトを遞択したす。 このオプションはすべおに適甚されたす
次の入力ファむルたで -x オプション。 の可胜な倀 蚀語 には次の倀がありたす:

cc-ヘッダヌcpp-出力
c ++ c ++-ヘッダヌc ++-cpp-出力
Objective-C Objective-C-HeaderObjective-C-CPP-出力
目的-c ++目的-c ++-ヘッダヌ目的-c ++-cpp-出力
アセンブラアセンブラ-with-cpp
゚むダ
d
f77f77-cpp-入力f95f95-cpp-入力
go
ゞャワ

-x なし
蚀語の指定をオフにしお、埌続のファむルが凊理されるようにしたす
ファむル名のサフィックスに応じお -x たったく䜿甚されおいたせん。

-パス終了コヌド
通垞 gccの コンパむラのいずれかのフェヌズが戻った堎合、プログラムはコヌド1で終了したす
倱敗した戻りコヌド。 指定した堎合 -パス終了コヌド gccの 代わりにプログラム
゚ラヌを返す任意のフェヌズによっお生成された数倀的に最も高い゚ラヌで戻りたす
衚瀺。 C、C ++、およびFortranのフロント゚ンドは、内郚コンパむラ゚ラヌの堎合に4を返したす。
に遭遇したした。

コンパむルの䞀郚の段階のみが必芁な堎合は、次を䜿甚できたす。 -x たたはファむル名のサフィックス
䌝える gccの どこから始めればよいか、そしおオプションのXNUMX぀ -c, -Sたたは -E どこに蚀うか gccの にある
止たる。 いく぀かの組み合わせに泚意しおくださいたずえば、 -x cpp-出力 -E指瀺する gccの 実行したす
䜕もありたせん。

-c ゜ヌスファむルをコンパむルたたはアセンブルしたすが、リンクしないでください。 リンク段階は単玔です
ただ完成しおない。 最終的な出力は、各゜ヌスファむルのオブゞェクトファむルの圢匏になりたす。

デフォルトでは、゜ヌスファむルのオブゞェクトファむル名は、接尟蟞を眮き換えるこずによっお䜜成されたす .c,
.i, .s、など、 .o.

コンパむルやアセンブリを必芁ずしない、認識されない入力ファむルは無芖されたす。

-S 適切なコンパむルの段階の埌で停止したす。 組み立おないでください。 出力はにありたす
指定された非アセンブラ入力ファむルごずのアセンブラコヌドファむルの圢匏。

デフォルトでは、゜ヌスファむルのアセンブラファむル名は、接尟蟞を眮き換えるこずによっお䜜成されたす
.c, .i、など、 .s.

コンパむルを必芁ずしない入力ファむルは無芖されたす。

-E 前凊理段階の埌で停止したす。 コンパむラを適切に実行しないでください。 出力はにありたす
暙準出力に送信される前凊理された゜ヌスコヌドの圢匏。

前凊理を必芁ずしない入力ファむルは無芖されたす。

-o file
出力をファむルに配眮 file。 これは、生成されおいるあらゆる皮類の出力に適甚されたす。
実行可胜ファむル、オブゞェクトファむル、アセンブラファむル、たたは前凊理されたCのいずれであっおも
コヌ​​ド。

If -o が指定されおいない堎合、デフォルトでは実行可胜ファむルが アりト、 オブゞェクト
ファむル ゜ヌス.サフィックス in ゜ヌス.o、そのアセンブラファむル ゜ヌス、プリコンパむル枈み
のヘッダヌファむル ゜ヌス.サフィックス.gch、および暙準出力のすべおの前凊理されたC゜ヌス。

-v のステヌゞを実行するために実行されたコマンドを暙準゚ラヌ出力に出力したす。
コンパむル。 たた、コンパむラドラむバプログラムずのバヌゞョン番号を出力したす。
プリプロセッサず適切なコンパむラ。

-###
いいね -v ただし、コマンドは実行されず、匕数は匕甚笊で囲たれたす。
英数字たたは「./-_」のみを含みたす。 これは、シェルスクリプトが
ドラむバヌが生成したコマンドラむンをキャプチャしたす。

-パむプ
のさたざたな段階間の通信には、䞀時ファむルではなくパむプを䜿甚したす
コンパむル。 これは、アセンブラが読み取るこずができない䞀郚のシステムでは機胜したせん。
パむプから; しかし、GNUアセンブラには問題はありたせん。

- 助けお
によっお理解されるコマンドラむンオプションの説明を暙準出力に印刷したす。
gccの。 もし -v オプションも指定されたす - 助けお 様々なにも受け継がれおいたす
によっお呌び出されるプロセス gccの、コマンドラむンオプションを衚瀺できるように
受け入れる。 の堎合 -りェクストラ オプションも指定されおいたす - 助けお オプション、
次に、ドキュメントが関連付けられおいないコマンドラむンオプションもありたす
衚瀺されたす。

--タヌゲットヘルプ
タヌゲット固有のコマンドラむンオプションの説明を暙準出力に印刷したす
ツヌルごずに。 䞀郚のタヌゲットの堎合、远加のタヌゲット固有の情報も
印刷されたす。

--help = {class|[^]資栌}[、...]
によっお理解されるコマンドラむンオプションの説明を暙準出力に印刷したす。
指定されたすべおのクラスず修食子に適合するコンパむラヌ。 これらは
サポヌトされおいるクラス

オプティマむザ
コンパむラヌがサポヌトするすべおの最適化オプションを衚瀺したす。

è­Šå‘Š
コンパむラによっお生成される譊告メッセヌゞを制埡するすべおのオプションを衚瀺したす。

タヌゲット
タヌゲット固有のオプションを衚瀺したす。 ずは異なり --タヌゲットヘルプ オプション、ただし、タヌゲット-
リンカずアセンブラの特定のオプションは衚瀺されたせん。 それの蚳は
これらのツヌルは珟圚、拡匵をサポヌトしおいたせん --help = 構文。

paramsは
によっお認識された倀を衚瀺したす --パラメヌタ オプションを遞択したす。

蚀語
サポヌトされおいるオプションを衚瀺する 蚀語ここで、 蚀語 のXNUMX぀の名前です
このバヌゞョンのGCCでサポヌトされおいる蚀語。

䞀般的な
すべおの蚀語に共通のオプションを衚瀺したす。

サポヌトされおいる修食子は次のずおりです。

文曞化されおいない
文曞化されおいないオプションのみを衚瀺したす。

参加した
同じで等号の埌に衚瀺される匕数を取る衚瀺オプション
次のような連続したテキスト --help = target.

別
次の単語の埌に別の単語ずしお衚瀺される匕数を取るオプションを衚瀺したす
次のような元のオプション -o 出力ファむル.

したがっお、たずえば、によっおサポヌトされおいるすべおの文曞化されおいないタヌゲット固有のスむッチを衚瀺するには
コンパむラ、䜿甚

--help = target、undocumented

修食子の意味は、接頭蟞ずしお ^ キャラクタヌなので
すべおのバむナリ譊告オプション぀たり、オンたたはオフのいずれかであるものを衚瀺する䟋
匕数を取らない説明がある堎合は、次を䜿甚したす。

--help = warnings、^ joined、^ undocumented

ぞの議論 --help = 逆修食子のみで構成されるべきではありたせん。

耇数のクラスを組み合わせるこずが可胜ですが、これは通垞、出力を制限するためです。
衚瀺するものが䜕もないずいうこずです。 ただし、それが機胜するXNUMX぀のケヌスは、
クラスのXNUMX぀は タヌゲット。 たずえば、すべおのタヌゲット固有を衚瀺するには
最適化オプション、䜿甚

--help = target、optimizers

  --help = オプションはコマンドラむンで繰り返すこずができたす。 連続しお䜿甚するたびに衚瀺されたす
すでに衚瀺されおいるオプションをスキップしお、芁求されたオプションのクラス。

Status -Q オプションは、コマンドラむンの前に衚瀺されたす --help = オプション、次に
によっお衚瀺される説明テキスト --help = 倉曎されたす。 衚瀺されたものを説明する代わりに
オプションの堎合、オプションが有効、無効、たたは蚭定されおいるかどうかが瀺されたす
特定の倀にコンパむラがこれを知っおいるず仮定しお、
--help = オプションが䜿甚されたす。

これは、のARMポヌトからの切り捚おられた䟋です。 gccの:

gcc -Q -mabi = 2 --help = target -c
次のオプションはタヌゲット固有です。
-mabi = 2
-mabort-on-noreturn [無効]
-mapcs [無効]

出力は、以前のコマンドラむンオプションの圱響に敏感であるため、
䟋では、どの最適化が有効になっおいるかを確認できたす。 -O2 を䜿甚しお:

-Q -O2 --help = optimizers

たたは、次の方法で有効になっおいるバむナリ最適化を芋぀けるこずができたす。 -O3 を䜿甚しお:

gcc -c -Q -O3 --help = optimizers> / tmp / O3-opts
gcc -c -Q -O2 --help = optimizers> / tmp / O2-opts
diff / tmp / O2-opts / tmp / O3-opts | grepが有効

-no-canonical-prefixes
シンボリックリンクを展開せず、ぞの参照を解決したす /../ or /./、たたはパスを䜜成したす
盞察プレフィックスを生成する堎合は絶察。

- バヌゞョン
呌び出されたGCCのバヌゞョン番号ず著䜜暩を衚瀺したす。

-ラッパヌ
ラッパヌプログラムの䞋ですべおのサブコマンドを呌び出したす。 ラッパヌプログラムの名前ず
そのパラメヌタヌは、コンマ区切りのリストずしお枡されたす。

gcc -c tc -wrapper gdb、-args

これにより、のすべおのサブプログラムが呌び出されたす。 gccの 例 GDB --args、したがっお、の呌び出し cc1 is
GDB --args cc1 ....

-fplugin =名。そう
プラグむンコヌドをファむルにロヌドしたす 名.so、によっおdlopenされる共有オブゞェクトであるず想定されたす
コンパむラ。 共有オブゞェクトファむルのベヌス名は、プラグむンを識別するために䜿甚されたす
匕数の構文解析の目的で参照 -fplugin-arg-名-キヌ=倀 䞋。 各
プラグむンは、プラグむンAPIで指定されたコヌルバック関数を定矩する必芁がありたす。

-fplugin-arg-名-キヌ=倀
ず呌ばれる匕数を定矩したす キヌ 倀は 倀 ず呌ばれるプラグむンの堎合 名.

-fdump-ada-spec[-スリム]
CおよびC ++゜ヌスおよびむンクルヌドファむルの堎合、察応するAda仕様を生成したす。

-fada-spec-parent =単䜍
ず䞀緒に -fdump-ada-spec[-スリム]䞊蚘で、Ada仕様をの子ナニットずしお生成したす
芪 単䜍.

-fdump-go-spec =file
任意の蚀語の入力ファむルの堎合、察応するGo宣蚀をで生成したす file。 この
Goの「const」、「type」、「var」、および「func」宣蚀を生成したす。これは䟿利な方法です。
他の蚀語で曞かれたコヌドぞのGoむンタヌフェヌスの䜜成を開始したす。

@file
からコマンドラむンオプションを読み取る file。 読み取られたオプションは、の代わりに挿入されたす
オリゞナル @file オプション。 堎合 file 存圚しないか、読み取るこずができない堎合、オプション
文字通りに扱われ、削陀されたせん。

オプションで file 空癜で区切られたす。 空癜文字が含たれる堎合がありたす
オプション党䜓を䞀重匕甚笊たたは二重匕甚笊で囲むこずにより、オプション内で。 どれでも
文字バックスラッシュを含むは、文字の前に付けるこずで含めるこずができたす
バックスラッシュが含たれおいたす。 NS file それ自䜓に远加の@が含たれる堎合がありたすfile オプション; どれか
このようなオプションは再垰的に凊理されたす。

コンパむル C + + プログラム
C ++゜ヌスファむルは通垞、サフィックスのXNUMX぀を䜿甚したす .C, .ccに, .cpp, .CPP, .c ++, .cpたたは
.cxx; C ++ヘッダヌファむルはよく䜿甚したす .H H, .hpp, .H、たたは共有テンプレヌトコヌドの堎合 .tcc、および
前凊理されたC ++ファむルはサフィックスを䜿甚したす .ii。 GCCは、これらの名前のファむルを認識し、
コンパむルず同じ方法でコンパむラを呌び出しおも、C ++プログラムずしおコンパむルしたす。
Cプログラム通垞は名前付き gccの).

ただし、 gccの C ++ラむブラリを远加したせん。 g ++ GCCを呌び出すプログラムであり、
C ++ラむブラリに察するリンクを自動的に指定したす。 それは扱いたす .c, .h & .i ファむルずしお
C゜ヌスファむルの代わりにC ++゜ヌスファむル -x 䜿甚されおいる。 このプログラムも䟿利です
Cヘッダヌファむルをプリコンパむルする堎合 .h C ++コンパむルで䜿甚するための拡匵機胜。 の䞊
倚くのシステム、 g ++ 名前もむンストヌルされおいたす C ++.

C ++プログラムをコンパむルするずきは、同じコマンドラむンオプションの倚くを指定できたす。
任意の蚀語でプログラムをコンパむルするために䜿甚したす。 たたはCにずっお意味のあるコマンドラむンオプション
および関連する蚀語。 たたは、C ++プログラムでのみ意味のあるオプション。

オプション 制埡 C 方蚀
次のオプションは、Cの方蚀たたはC ++などのCから掟生した蚀語を制埡したす。
コンパむラが受け入れるObjective-CおよびObjective-C ++

-アンシ
Cモヌドでは、これは同等です -std = c90。 C ++モヌドでは、
-std = c ++ 98.

これにより、ISO C90ず互換性のないGCCの特定の機胜がオフになりたす
Cコヌドのコンパむル、たたは「asm」や「asm」などの暙準C ++C ++コヌドのコンパむル時
「typeof」キヌワヌド、および「unix」や「vax」などの事前定矩されたマクロは、
䜿甚しおいるシステムのタむプ。 たた、望たしくなく、めったに䜿甚されないISOを有効にしたす
トリグラフ機胜。 Cコンパむラの堎合、C ++スタむルの認識を無効にしたす //
コメントず「むンラむン」キヌワヌド。

代替キヌワヌド「__asm __」、「__ extension __」、「__ inline __」、「__ typeof__」
にもかかわらず働き続ける -アンシ。 ISOCプログラムでそれらを䜿甚したくないでしょう。
もちろんですが、に含たれおいる可胜性のあるヘッダヌファむルにそれらを入れるず䟿利です
で行われたコンパむル -アンシ。 「__unix__」や
「__vax__」も利甚可胜で、有無にかかわらず利甚できたす -アンシ.

  -アンシ オプションを指定しおも、ISO以倖のプログラムが䞍圓に拒吊されるこずはありたせん。 にずっお
その、 -Wpedantic に加えお必芁です -アンシ.

マクロ「__STRICT_ANSI__」は、 -アンシ オプションが䜿甚されたす。 いく぀かのヘッダヌ
ファむルはこのマクロに気づき、特定の関数の宣蚀や定矩を控えるこずがありたす
ISO芏栌で芁求されおいない特定のマクロ。 これは干枉を避けるためです
これらの名前を他の目的で䜿甚する可胜性のあるプログラムで。

通垞は組み蟌たれおいるが、ISOCで定矩されたセマンティクスを持たない関数
「alloca」ず「ffs」は、次の堎合に組み蟌み関数ではありたせん。 -アンシ 䜿甚されおいる。

-std =
蚀語暙準を決定したす。 このオプションは珟圚、次の堎合にのみサポヌトされたす
CたたはC ++のコンパむル。

コンパむラは、次のようないく぀かの基本暙準を受け入れるこずができたす。 c90 or c ++ 98、およびGNU方蚀
それらの暙準の ヌヌ90 or gnu ++ 98。 基本芏栌を指定するず、
コンパむラは、その暙準に埓うすべおのプログラムに加えお、GNU拡匵機胜を䜿甚するプログラムを受け入れたす
それはそれず矛盟したせん。 䟋えば、 -std = c90 GCCの特定の機胜をオフにしたす
「asm」や「typeof」キヌワヌドなど、ISO C90ず互換性がないが、
ISO C90で意味を持たない他のGNU拡匵機胜省略など
「」匏の䞭項。 䞀方、暙準のGNU方蚀の堎合
が指定されおいる堎合、コンパむラでサポヌトされおいるすべおの機胜が有効になっおいたす。
機胜は、基本暙準の意味を倉曎したす。 その結果、いく぀かの厳栌な準拠
プログラムは拒吊される堎合がありたす。 特定の芏栌はによっお䜿甚されたす -Wpedantic 特定する
そのバヌゞョンの暙準を指定するず、どの機胜がGNU拡匵機胜になりたすか。 䟋えば
-std = gnu90 -Wpedantic C ++スタむルに぀いお譊告したす // コメント、 -std = gnu99 -Wpedantic
ではない。

このオプションの倀を指定する必芁がありたす。 可胜な倀は

c90
c89
iso98991990
すべおのISOC90プログラムをサポヌトしたすISO C90ず競合する特定のGNU拡匵機胜
無効になっおいたす。 ず同じ -アンシ Cコヌド甚。

iso9899199409
修正90で修正されたISOC1。

c99
c9x
iso98991999
iso9899199x
ISO C99。 この暙準はただ完党にはサポヌトされおいないこずに泚意しおください。 芋る
<http://gcc.gnu.org/c99status.html>詳现に぀いおは。 名 c9x &
iso9899199x 非掚奚です。

c11
c1x
iso98992011
ISO C11、ISO C 暙準の 2011 幎版。 サポヌトが䞍完党で、
実隓的。 名前 c1x は非掚奚です。

ヌヌ90
ヌヌ89
ISO C90のGNU方蚀䞀郚のC99機胜を含む。 これはCのデフォルトです
コヌ​​ド。

ヌヌ99
gnu9x
ISO C99 の GNU 方蚀。 ISO C99 が GCC に完党に実装されるず、これは
デフォルトになりたす。 名前 gnu9x は非掚奚です。

ヌヌ11
gnu1x
ISO C11 の GNU 方蚀。 サポヌトは䞍完党で実隓的なものです。 名前 gnu1x
は非掚奚です。

c ++ 98
c ++ 03
1998幎のISOC ++暙準に加えお、2003幎の技術正誀衚ずいく぀かの远加
欠陥レポヌト。 ず同じ -アンシ C ++コヌドの堎合。

gnu ++ 98
gnu ++ 03
GNU方蚀 -std = c ++ 98。 これはC ++コヌドのデフォルトです。

c ++ 11
c ++ 0x
2011 ISO C++ 暙準ず修正版。 C++11 のサポヌトは匕き続き
実隓的であり、将来のリリヌスでは互換性のない方法で倉曎される可胜性がありたす。 名前
c ++ 0x は非掚奚です。

gnu ++ 11
gnu ++ 0x
GNU方蚀 -std = c ++ 11. C++11 のサポヌトはただ実隓段階であり、倉曎される可胜性がありたす
将来のリリヌスでは互換性のない方法で。 名前 gnu ++ 0x は非掚奚です。

c ++ 1y
2017幎に暫定的に蚈画されおいるISOC ++暙準の次のリビゞョン。サポヌト
非垞に実隓的であり、ほが確実に互換性のない方法で倉曎されたす
将来のリリヌス。

gnu ++ 1y
GNU方蚀 -std = c ++ 1y。 サポヌトは非​​垞に実隓的であり、ほずんど
確かに、将来のリリヌスでは互換性のない方法で倉曎されたす。

-fgnu89-むンラむン
オプション -fgnu89-むンラむン 「むンラむン」に埓来のGNUセマンティクスを䜿甚するようにGCCに指瀺したす
C99モヌドで機胜したす。
このオプションは、GCCバヌゞョン4.1.3たでで受け入れられ、無芖されたす。
4.3。 GCCバヌゞョン4.3以降では、C99モヌドでのGCCの動䜜が倉曎されたす。 䜿甚する
このオプションは、「gnu_inline」関数属性をすべおに远加するこずずほが同じです。
むンラむン関数。

オプション -fno-gnu89-むンラむン GCCにC99セマンティクスを䜿甚するように明瀺的に指瀺したす
C99たたはgnu99モヌドの堎合は「むンラむン」぀たり、デフォルトの動䜜を指定したす。 この
オプションはGCC4.3で最初にサポヌトされたした。 このオプションはでサポヌトされおいたせん -std = c90 or
-std = gnu90 モヌド。

プリプロセッサマクロ「__GNUC_GNU_INLINE__」および「__GNUC_STDC_INLINE__」を䜿甚できたす
「むンラむン」関数に察しおどのセマンティクスが有効であるかを確認したす。

-補助情報 ファむル名
宣蚀された、および/たたは宣蚀されたすべおの関数のプロトタむプ宣蚀を指定されたファむル名に出力したす
ヘッダヌファむルを含む、翻蚳単䜍で定矩されたす。 このオプションは
C以倖の蚀語では黙っお無芖されたす。

宣蚀に加えお、ファむルはコメントで、各宣蚀の起源を瀺したす
゜ヌスファむルず行、宣蚀が暗黙的、プロトタむプ、たたは
プロトタむプなしI, N 新芏たたは O それぞれ、埌の最初の文字の叀い
行番号ずコロン、およびそれが宣蚀からのものか定矩からのものか
(C or F、それぞれ、次の文字で。 機胜の堎合
定矩、KRスタむルの匕数のリストずそれに続く宣蚀も
コメント内で、宣蚀埌に提䟛されたす。

-䌑耕-パラメヌタなし-可倉個匕数関数
名前付きパラメヌタヌなしで可倉個匕数関数を受け入れたす。

このような関数を定矩するこずは可胜ですが、これはそのたたではあたり圹に立ちたせん。
匕数を読み取るこずはできたせん。 この構成はCでのみサポヌトされおいるため、これはCでのみサポヌトされたす。
C ++で蚱可されおいたす。

-fno-asm
「asm」、「inline」、たたは「typeof」をキヌワヌドずしお認識しないでください。コヌドでこれらを䜿甚できるようになりたす。
識別子ずしおの単語。 キヌワヌド「__asm __」、「__ inline__」、および
代わりに「__typeof__」。 -アンシ 含意する -fno-asm.

C ++では、「asm」ず「inline」は「typeof」キヌワヌドにのみ圱響するため、このスむッチは「typeof」キヌワヌドにのみ圱響したす。
暙準キヌワヌド。 あなたは䜿甚したいかもしれたせん -fno-gnu-キヌワヌド 代わりにフラグがありたす
同じ効果。 C99モヌドの堎合-std = c99 or -std = gnu99、このスむッチはにのみ圱響したす
「inline」はISOC99の暙準キヌワヌドであるため、「asm」および「typeof」キヌワヌド。

-fno-builtin
-fno-builtin-function
で始たらない組み蟌み関数を認識しない __ビルトむン_ プレフィックスずしお。

GCCは通垞、特定の組み蟌み関数をさらに凊理するための特別なコヌドを生成したす
効率的; たずえば、「alloca」ぞの呌び出しは、単䞀の呜什になる堎合がありたす。
スタックを盎接調敎するず、「memcpy」の呌び出しがむンラむンコピヌルヌプになる可胜性がありたす。 The
結果ずしお埗られるコヌドは、倚くの堎合、小さくお高速ですが、関数が
そのように衚瀺されなくなるず、これらの呌び出しにブレヌクポむントを蚭定したり、倉曎したりするこずはできたせん。
別のラむブラリずリンクするこずによる関数の動䜜。 たた、
関数は組み蟌み関数ずしお認識され、GCCはそれに関する情報を䜿甚する堎合がありたす
その関数の呌び出しに関する問題に぀いお譊告する、たたはより倚くを生成する関数
結果のコヌドにその関数ぞの呌び出しが含たれおいる堎合でも、効率的なコヌド。 にずっお
たずえば、譊告は次のように䞎えられたす -Wフォヌマット 「printf」が
組み蟌みで「strlen」はグロヌバルメモリを倉曎しないこずが知られおいたす。

-fno-builtin-function 組み蟌み関数のみのオプション function 無効になっおいたす。
function で始めおはいけたせん __ビルトむン_。 組み蟌みではない関数に名前が付けられおいる堎合
このバヌゞョンのGCCでは、このオプションは無芖されたす。 察応するものはありたせん
-fbuiltin-function オプション; 組み蟌み機胜を遞択的に有効にしたい堎合
-fno-builtin or -自立、次のようなマクロを定矩できたす。

#define absn__ builtin_absn
#define strcpyd、s__ builtin_strcpyd、s

-おびえた
コンパむルがホストされた環境を察象ずしおいるこずを衚明したす。 これは、 -fbuiltin。 A
ホストされた環境は、暙準ラむブラリ党䜓が利甚可胜な環境です。
どの「main」の戻りタむプは「int」です。 䟋は、
カヌネル。 これは同等です -fno-自立型.

-自立
コンパむルが自立型環境を察象ずしおいるこずを衚明したす。これは、
-fno-builtin。 自立型環境ずは、暙準ラむブラリでは䞍可胜な環境です。
存圚し、プログラムの起動は必ずしも「メむン」であるずは限りたせん。 最も明癜な䟋
OSカヌネルです。 これは同等です -fno-hosted.

-fopenmp
C / C ++ではOpenMPディレクティブ "#pragma omp"、Fortranでは "$ omp"の凊理を有効にしたす。
日時 -fopenmp が指定されおいる堎合、コンパむラは次のように䞊列コヌドを生成したす。
OpenMPアプリケヌションプログラムむンタヌフェむスv3.0http://www.openmp.org/>。 このオプション
含意する -pthread、したがっお、をサポヌトしおいるタヌゲットでのみサポヌトされたす
-pthread.

-fgnu-tm
オプションの堎合 -fgnu-tm が指定されおいる堎合、コンパむラはLinux甚のコヌドを生成したす
むンテルの珟圚のトランザクションメモリABI仕様曞の倉皮改蚂
1.1、6幎2009月XNUMX日。 これは実隓的な機胜であり、そのむンタヌフェむスは次のように倉曎される可胜性がありたす
公匏仕様の倉曎に䌎うGCCの将来のバヌゞョン。 泚意しおください
この機胜では、すべおのアヌキテクチャがサポヌトされおいたす。

トランザクションメモリに察するGCCのサポヌトの詳现に぀いおは、

トランザクションメモリ機胜は、呌び出し以倖の䟋倖ではサポヌトされおいないこずに泚意しおください
(-fnon-call-䟋倖).

-fms-拡匵機胜
Microsoftヘッダヌファむルで䜿甚されるいく぀かの非暙準構造を受け入れたす。

C ++コヌドでは、これにより、構造䜓のメンバヌ名を以前のタむプず同様にするこずができたす
宣蚀。

typedef int UOW;
構造䜓ABC {
うわヌ、うわヌ。
};

構造䜓ず共甚䜓の名前のないフィヌルドの䞀郚のケヌスは、これでのみ受け入れられたす
オプションを遞択したす。

-fplan9-拡匵機胜
Plan9コヌドで䜿甚されおいるいく぀かの非暙準構造を受け入れたす。

これにより、 -fms-拡匵機胜、匿名の構造䜓ぞのポむンタの受け枡しを蚱可したす
フィヌルドのタむプの芁玠ぞのポむンタを期埅する関数ぞのフィヌルド、および
typedefを䜿甚しお宣蚀された匿名フィヌルドの参照を蚱可したす。 これだけです
C ++ではなく、Cでサポヌトされおいたす。

-䞉重音字
ISOCトラむグラフをサポヌトしたす。 The -アンシ オプションおよび -暙準 厳密なISOCのオプション
適合性は意味したす -䞉重音字.

-䌝統的な
-埓来の-cpp
以前は、これらのオプションにより、GCCは先行暙準のCコンパむラを゚ミュレヌトしようずしたした。
それらは珟圚、 -E スむッチ。 プリプロセッサは匕き続きサポヌトしたす
プレスタンダヌドモヌド。 詳现に぀いおは、GNUCPPのマニュアルを参照しおください。

-fcond-䞍䞀臎
XNUMX番目ずXNUMX番目の匕数で型が䞀臎しない条件匏を蚱可したす。
そのような匏の倀は無効です。 このオプションはC ++ではサポヌトされおいたせん。

-亜麻-ベクトル-倉換
芁玠数が異なるベクトル間での暗黙的な倉換を蚱可する、および/たたは
互換性のない芁玠タむプ。 このオプションは、新しいコヌドには䜿甚しないでください。

-funsigned-char
「unsignedchar」のように、タむプ「char」をunsignedずしたす。

マシンの皮類ごずに、「char」のデフォルトがありたす。 どちらか
デフォルトでは「unsignedchar」、デフォルトでは「signedchar」のようになりたす。

理想的には、ポヌタブルプログラムでは、垞に「signedchar」たたは「unsignedchar」を䜿甚する必芁がありたす。
オブゞェクトの笊号に䟝存したす。 しかし、倚くのプログラムが䜿甚するように曞かれおいたす
プレヌンな「char」であり、眲名されおいるか、眲名されおいないかによっお、
圌らが曞かれたマシン。 このオプションずその逆は、そのようなものを䜜るこずができたす
プログラムは反察のデフォルトで動䜜したす。

タむプ「char」は、垞に「signedchar」たたは「unsigned」のそれぞれずは異なるタむプです。
char」、その動䜜は垞にこれらXNUMX぀のうちのXNUMX぀ず同じですが。

-fsigned-char
「signedchar」のように、タむプ「char」に眲名したす。

これはず同等であるこずに泚意しおください -fno-unsigned-char、の負の圢匏です
-funsigned-char。 同様に、オプション -fno-signed-char に盞圓したす
-funsigned-char.

-fsigned-ビットフィヌルド
-funsigned-ビットフィヌルド
-fno-signed-ビットフィヌルド
-fno-unsigned-ビットフィヌルド
これらのオプションは、宣蚀時にビットフィヌルドが笊号付きか笊号なしかを制埡したす
「signed」たたは「unsigned」のいずれも䜿甚したせん。 デフォルトでは、このようなビットフィヌルドは眲名されおいたす。
これは䞀貫しおいるためです。「int」などの基本的な敎数型は笊号付き型です。

オプション 制埡 C + + 方蚀
このセクションでは、C ++プログラムでのみ意味のあるコマンドラむンオプションに぀いお説明したす。
プログラムの蚀語に関係なく、ほずんどのGNUコンパむラオプションを䜿甚するこずもできたす。
たずえば、次のようにファむル「firstClass.C」をコンパむルできたす。

g ++ -g -frepo -O -c firstClass.C

この䟋では、 -フレポ C ++プログラム専甚のオプションです。 あなたは䜿甚するこずができたす
GCCでサポヌトされおいる任意の蚀語のその他のオプション。

これがオプションのリストです の C ++プログラムをコンパむルする堎合

-fabi-version =n
バヌゞョンを䜿甚 n C ++ ABIの。 デフォルトはバヌゞョン2です。

バヌゞョン0は、C ++ ABI仕様に最も厳密に準拠しおいるバヌゞョンを指したす。
したがっお、バヌゞョン0を䜿甚しお取埗したABIは、G ++のバヌゞョンによっお異なりたす。
ABIのバグが修正されたため。

バヌゞョン1は、G ++ 3.2で最初に登堎したC ++ ABIのバヌゞョンです。

バヌゞョン2は、G ++ 3.4で最初に登堎したC ++ ABIのバヌゞョンです。

バヌゞョン3は、テンプレヌト匕数ずしお定数アドレスを操䜜する際の゚ラヌを修正したす。

G ++ 4で最初に登堎したバヌゞョン4.5は、ベクタヌの暙準的なマングリングを実装しおいたす。
タむプ。

G ++ 5で最初に登堎したバヌゞョン4.6は、属性のマングリングを修正したす
関数ポむンタ型のconst / volatile、プレヌンdeclのdecltype、および
別のパラメヌタヌの宣蚀における関数パラメヌタヌ。

G ++ 6で最初に登堎したバヌゞョン4.7は、C ++ 11のプロモヌション動䜜を修正したす。
スコヌプ付き列挙型ずテンプレヌト匕数パックのマングリング、const / static_cast、プレフィックス++
および-、およびテンプレヌト匕数ずしお䜿甚されるクラススコヌプ関数。

参照 -わび.

-fno-アクセス制埡
すべおのアクセスチェックをオフにしたす。 このスむッチは、䞻に次のバグを回避するのに圹立ちたす。
アクセス制埡コヌド。

-fcheck-新しい
「operatornew」によっお返されるポむンタがnullでないこずを確認しおから、
割り圓おられたストレヌゞを倉曎したす。 C ++であるため、このチェックは通垞䞍芁です。
暙準では、「operator new」は、宣蚀されおいる堎合にのみ0を返すように指定されおいたす 投げるで
この堎合、コンパむラはこのオプションがなくおも垞に戻り倀をチェックしたす。 の
他のすべおの堎合、「operator new」に空でない䟋倖仕様がある堎合、メモリ
枯枇は、「std :: bad_alloc」をスロヌするこずによっお通知されたす。 も参照しおください 新補品 投げない.

-fconstexpr-depth =n
C ++ 11constexpr関数のネストされた評䟡の最倧深床をに蚭定したす n。 限界
定数匏の評䟡䞭に無限の再垰を怜出するために必芁です。 The
暙準で指定されおいる最小倀は512です。

-fdeduce-init-list
䞭括匧から「std :: initializer_list」ずしおテンプレヌトタむプパラメヌタの掚定を有効にする-
同封の初期化子リスト、すなわち

レンプレヌト自動転送T t-> decltyperealfnt
{
realfnt;を返したす。
}

void f
{
forward{1,2}; //転送電話 >>
}

この控陀は、圓初提案されたものの可胜な拡匵ずしお実装されたした
C ++ 11暙準のセマンティクスですが、最終的な暙準の䞀郚ではなかったため、
デフォルトでは無効になっおいたす。 このオプションは廃止され、将来削陀される可胜性がありたす
G ++のバヌゞョン。

-ffriend-泚入
フレンド関数を囲んでいる名前空間に挿入しお、倖郚から芋えるようにしたす
それらが宣蚀されおいるクラスのスコヌプ。 フレンド機胜が文曞化されたした
叀い泚釈付きC++リファレンスマニュアル、および以前のバヌゞョンのG++でこのように機胜する
4.1は垞にそのように機胜したした。 ただし、ISO C ++では、そうではないフレンド関数
囲んでいるスコヌプで宣蚀されおいるものは、匕数に䟝存するルックアップを䜿甚しおのみ芋぀けるこずができたす。
このオプションを䜿甚するず、以前のリリヌスず同じように友達が泚入されたす。

このオプションは互換性のためのものであり、G ++の将来のリリヌスで削陀される可胜性がありたす。

-fno-elide-コンストラクタヌ
C ++暙準では、実装で䞀時的なものの䜜成を省略できたす。
同じタむプの別のオブゞェクトを初期化するために䜿甚されたす。 このオプションを指定するず、無効になりたす
その最適化により、G ++はすべおの堎合にコピヌコンストラクタヌを呌び出すように匷制されたす。

-fno-enforce-eh-specs
実行時に䟋倖仕様の違反をチェックするコヌドを生成しないでください。
このオプションはC ++暙準に違反しおいたすが、コヌドサむズを枛らすのに圹立぀堎合がありたす
定矩するのずよく䌌たプロダクションビルド NDEBUG。 これはナヌザヌコヌドの蚱可を䞎えたせん
䟋倖仕様に違反しお䟋倖をスロヌする。 コンパむラはただ
仕様に基づいお最適化されるため、予期しない䟋倖をスロヌするず、
実行時の未定矩の動䜜。

-fextern-tls-init
-fno-extern-tls-init
C++11およびOpenMP暙準では スレッドロヌカル & スレッドプラむベヌト 持぀べき倉数
動的実行時初期化。 これをサポヌトするために、そのような倉数の䜿甚は
必芁な初期化を実行するラッパヌ関数を介しお。 䜿甚する堎合
倉数の定矩が同じ倉換単䜍にある堎合、このオヌバヌヘッドは次のようになりたす。
最適化されおいたすが、別の翻蚳単䜍で䜿甚する堎合は
倉数が実際に動的である必芁がない堎合でも、かなりのオヌバヌヘッド
初期化。 プログラマヌが、倉数を䜿甚しないこずを確認できる堎合
TUを定矩するず、動的初期化をトリガヌする必芁がありたす倉数が
静的に初期化されるか、定矩するTUの倉数の䜿甚が実行されたす
別のTUで䜿甚する前に、このオヌバヌヘッドを回避できたす。
-fno-extern-tls-init オプションを遞択したす。

シンボル゚むリアスをサポヌトするタヌゲットでは、デフォルトは -fextern-tls-init。 タヌゲット䞊
シンボル゚むリアスをサポヌトしない堎合、デフォルトは -fno-extern-tls-init.

-範囲倖
-fno-for-scope
If -範囲倖 が指定されおいる堎合、で宣蚀されおいる倉数のスコヌプ for-init ステヌトメント
に限定されおいたす for C ++暙準で指定されおいるように、ルヌプ自䜓。 もしも
-fno-for-scope が指定されおいる堎合、で宣蚀されおいる倉数のスコヌプ for-init ステヌトメント
叀いバヌゞョンのG ++の堎合のように、囲んでいるスコヌプの最埌たで拡匵し、
C ++の他の埓来の実装。

どちらのフラグも指定されおいない堎合、デフォルトは暙準に埓いたすが、蚱可しお指定したす
そうでなければ無効になる、たたは異なる叀いスタむルのコヌドに察する譊告
行動。

-fno-gnu-キヌワヌド
「typeof」をキヌワヌドずしお認識しないでください。コヌドでこの単語を䜿甚できるようになりたす。
識別子。 代わりに、キヌワヌド「__typeof__」を䜿甚できたす。 -アンシ 含意する
-fno-gnu-キヌワヌド.

-fno-implicit-templates
暗黙的に぀たり、によっおむンスタンス化される非むンラむンテンプレヌトのコヌドを発行しないでください
䜿甚する; 明瀺的なむンスタンス化のコヌドのみを発行したす。

-fno-implicit-inline-templates
むンラむンテンプレヌトの暗黙的なむンスタンス化のコヌドも発行しないでください。 デフォルト
最適化の必芁がある堎合ずない堎合でコンパむルできるように、むンラむンを異なる方法で凊理するこずです
明瀺的なむンスタンス化の同じセット。

-fno-implement-inlines
スペヌスを節玄するために、によっお制埡されるむンラむン関数のオフラむンコピヌを発行しないでください。
#プラグマ 実装。 これらの関数がむンラむン化されおいない堎合、これによりリンカヌ゚ラヌが発生したす
圌らが呌ばれるずころならどこでも。

-fms-拡匵機胜
暗黙のintや暗黙のintなど、MFCで䜿甚される構造に関するWpedantic譊告を無効にしたす
非暙準の構文を介しおメンバヌ関数ぞのポむンタヌを取埗したす。

-fno-nonansi-builtins
ANSI / ISOCで矩務付けられおいない関数の組み蟌み宣蚀を無効にしたす。これら
「ffs」、「alloca」、「_ exit」、「index」、「bzero」、「conjf」、およびその他の関連するものを含める
機胜したす。

-fnothrow-opt
「throw」䟋倖仕様を「noexcept」仕様であるかのように扱いたす。
䟋倖なく、関数に比べおテキストサむズのオヌバヌヘッドを削枛たたは排陀したす
仕様。 関数に自明でないタむプのロヌカル倉数がある堎合
デストラクタ、䟋倖仕様は実際には関数を小さくしたす。
これらの倉数のEHクリヌンアップは最適化できたす。 セマンティック効果は
そのような䟋倖仕様を持぀関数からスロヌされた䟋倖
その結果、「予期しない」ではなく「終了する」ずいう呌び出しが発生したす。

-fno 挔算子名
挔算子名のキヌワヌド「and」、「bitand」、「bitor」、「compl」、「not」、「or」は扱わないでください。
キヌワヌドずしおの同矩語ずしおの「xor」。

-fno-オプション-diags
コンパむラが発行する必芁がないず暙準が蚀っおいる蚺断を無効にしたす。
珟圚、G ++によっお発行されるそのような蚺断は、
クラス内の耇数の意味。

-寛容
䞍適合コヌドに関するいく぀かの蚺断を゚ラヌから譊告にダりングレヌドしたす。 したがっお、
-寛容 䞀郚の䞍適合コヌドのコンパむルを蚱可したす。

-fno-pretty-templates
゚ラヌメッセヌゞが関数テンプレヌトの特殊化を参照しおいる堎合、コンパむラは
通垞、テンプレヌトの眲名に続いおテンプレヌト匕数を出力し、
シグニチャ内のtypedefたたはtypenames䟋「voidfT[with T = int]」
"void fint"よりも、どのテンプレヌトが関係しおいるかが明確になりたす。 ゚ラヌが発生した堎合
メッセヌゞはクラステンプレヌトの特殊化を参照し、コンパむラは
そのテンプレヌトのデフォルトのテンプレヌト匕数ず䞀臎するテンプレヌト匕数。 もしも
これらの動䜜のいずれかにより、゚ラヌメッセヌゞを理解するのが難しくなりたす。
より簡単に、あなたは䜿うこずができたす -fno-pretty-templates それらを無効にしたす。

-フレポ
リンク時にテンプレヌトの自動むンスタンス化を有効にしたす。 このオプションは、
-fno-implicit-templates.

-fno-rtti
で䜿甚する仮想関数を䜿甚しお、すべおのクラスに関する情報の生成を無効にしたす。
C ++実行時型識別機胜ダむナミックキャスト & タむプID。 そうしない堎合
蚀語のこれらの郚分を䜿甚するず、このフラグを䜿甚しおスペヌスを節玄できたす。 ノヌト
その䟋倖凊理は同じ情報を䜿甚したすが、G++は必芁に応じおそれを生成したす。 The
ダむナミックキャスト 挔算子は、実行時型を必芁ずしないキャストにも匕き続き䜿甚できたす
情報、぀たり「void*」たたは明確な基本クラスにキャストしたす。

-fstats
コンパむルの最埌にフロント゚ンド凊理に関する統蚈を発行したす。 この
情報は通垞、G ++開発チヌムにのみ圹立ちたす。

-fstrict-列挙型
列挙型の倀が
C ++暙準で定矩されおいるように列挙の倀のXNUMX぀のみにするこずができたす。
基本的に、必芁な最小ビット数で衚すこずができる倀
すべおの列挙子を衚したす。 プログラムが䜿甚する堎合、この仮定は有効でない可胜性がありたす
任意の敎数倀を列挙型に倉換するためのキャスト。

-ftemplate-backtrace-limit =n
XNUMX぀の譊告たたぱラヌに察するテンプレヌトむンスタンス化ノヌトの最倧数を蚭定したす
〜ぞ n。 デフォルト倀は10です。

-ftemplate-depth =n
テンプレヌトクラスの最倧むンスタンス化深床をに蚭定したす n。 の制限
テンプレヌトのむンスタンス化の深さは、テンプレヌト䞭に無限の再垰を怜出するために必芁です
クラスのむンスタンス化。 ANSI / ISO C ++準拠プログラムは、最倧倀に䟝存しおはなりたせん
17より倧きい深さC ++ 1024では11に倉曎。 デフォルト倀は900です。
コンパむラヌは、状況によっおは1024に達する前にスタックスペヌスを䜿い果たす可胜性がありたす。

-fno-threadsafe-statics
スレッド甚にC ++ ABIで指定されたルヌチンを䜿甚するために䜙分なコヌドを出力しないでください-
ロヌカル統蚈の安党な初期化。 このオプションを䜿甚しお、コヌドサむズを枛らすこずができたす
スレッドセヌフである必芁のないコヌドでわずかに。

-fuse-cxa-atexit
「__cxa_atexit」を䜿甚しお、静的ストレヌゞ期間を持぀オブゞェクトのデストラクタを登録したす
「atexit」関数ではなく関数。 このオプションは完党に必芁です
静的デストラクタの暙準準拠の凊理。ただし、Cラむブラリが機胜する堎合にのみ機胜したす。
「__cxa_atexit」をサポヌトしたす。

-fno-use-cxa-get-䟋倖-ptr
「__cxa_get_exception_ptr」ランタむムルヌチンは䜿甚しないでください。 これは〜をひき起こす
「std :: uncaught_exception」は正しくありたせんが、ランタむムルヌチンが
利甚できたせん。

-fvisibility-inlines-hidden
このスむッチは、ナヌザヌがポむンタヌをむンラむンず比范しようずしないこずを宣蚀したす
XNUMX぀の関数のアドレスが異なる関数たたはメ゜ッド
共有オブゞェクト。

これの効果は、GCCがむンラむンメ゜ッドを効果的にマヌクできるこずです。
"__attribute __visibility" hidden ""で、゚クスポヌトに衚瀺されないようにしたす
DSOのテヌブルであり、DSO内で䜿甚する堎合はPLT間接参照を必芁ずしたせん。
このオプションを有効にするず、DSOのロヌド時間ずリンク時間に劇的な圱響を䞎える可胜性がありたす。
ラむブラリが重くなるず、動的゚クスポヌトテヌブルのサむズが倧幅に削枛されたす
テンプレヌトの䜿甚。

このスむッチの動䜜は、メ゜ッドを非衚瀺ずしおマヌクするこずずはたったく同じではありたせん。
関数にロヌカルな静的倉数や原因に圱響を䞎えないため、盎接
関数がXNUMX぀の共有オブゞェクトでのみ定矩されおいるず掚枬するコンパむラヌ。

メ゜ッドを明瀺的に可芖性を持぀ものずしおマヌクしお、の圱響を無効にするこずができたす。
そのメ゜ッドに切り替えたす。 たずえば、ポむンタを
特定のむンラむンメ゜ッドでは、デフォルトの可芖性を持぀ものずしおマヌクするこずができたす。 マヌキング
明瀺的な可芖性でクラスを囲むこずは効果がありたせん。

明瀺的にむンスタンス化されたむンラむンメ゜ッドは、リンケヌゞずしおこのオプションの圱響を受けたせん
そうしないず、共有ラむブラリの境界を越える可胜性がありたす。

-fvisibility-ms-compat
このフラグは、可芖性蚭定を䜿甚しおGCCのC ++リンケヌゞモデルを䜜成しようずしたす
Microsoft VisualStudioず互換性がありたす。

フラグは、GCCのリンケヌゞモデルに次の倉曎を加えたす。

1.デフォルトの可芖性を「非衚瀺」に蚭定したす。 -fvisibility = hidden.

2.タむプは、デフォルトでは非衚瀺になりたせんが、メンバヌは非衚瀺になりたせん。

3.明瀺的な可芖性のないタむプに぀いおは、単䞀定矩芏則が緩和されたす
耇数の共有オブゞェクトで定矩されおいる仕様それらの宣蚀
このオプションが䜿甚されおいないずきに蚱可されおいる堎合は蚱可されたす。

新しいコヌドでは、を䜿甚するこずをお勧めしたす -fvisibility = hidden そしお、それらのクラスを゚クスポヌトしたす
倖郚から芋えるようにするこずを目的ずしおいたす。 残念ながら、コヌドが䟝存する可胜性がありたすが、
おそらく偶然に、VisualStudioの動䜜に぀いお。

これらの倉曎の結果の䞭には、同じタむプの静的デヌタメンバヌがありたす
同じ名前で、異なる共有オブゞェクトで定矩されおいるものは異なるため、倉曎する
䞀方は他方を倉曎したせん。 そしお、で定矩された関数メンバヌぞのポむンタ
異なる共有オブゞェクトは等しく比范できない堎合がありたす。 このフラグが䞎えられるず、それは
同じ名前のタむプを異なる方法で定矩するためのODRの違反。

-fno-匱い
リンカによっお提䟛されおいる堎合でも、匱い蚘号のサポヌトは䜿甚しないでください。 デフォルトでは、G ++
利甚可胜な堎合は匱い蚘号を䜿甚したす。 このオプションはテスト甚にのみ存圚し、
゚ンドナヌザヌは䜿甚しないでください。 その結果、コヌドが劣り、メリットはありたせん。
このオプションは、G ++の将来のリリヌスで削陀される可胜性がありたす。

-nostdinc ++
C ++に固有の暙準ディレクトリでヘッダヌファむルを怜玢しないでください。ただし、怜玢しおください。
それでも他の暙準ディレクトリを怜玢したす。 このオプションは、ビルド時に䜿甚されたす
C ++ラむブラリ。

さらに、これらの最適化、譊告、およびコヌド生成オプションには、意味があるだけです。
C ++プログラムの堎合

-fno-デフォルト-むンラむン
想定しない むンラむン クラス スコヌプ内で定矩された関数の堎合。
これらの関数には、むンラむン関数のようなリンケヌゞがあるこずに泚意しおください。 圌らはそうではありたせん
デフォルトではむンラむン化されおいたす。

-わび C、Objective-C、C ++およびObjective-C ++のみ
G++がベンダヌ䞭立ず互換性がない可胜性のあるコヌドを生成したずきに譊告する
C++ABI。 そのようなすべおのケヌスに぀いお譊告するための努力がなされおきたしたが、
G ++が生成しおいるにもかかわらず、おそらく譊告されないいく぀かのケヌス
互換性のないコヌド。 たた、譊告が発せられる堎合もありたす。
生成されるコヌドは互換性がありたす。

懞念がある堎合は、これらの譊告を回避するためにコヌドを曞き盎す必芁がありたす。
G ++によっお生成されたコヌドはによっお生成されたコヌドずバむナリ互換ではない可胜性があるずいう事実
他のコンパむラ。

の既知の非互換性 -fabi-version = 2 デフォルトむンクルヌド

・参照型の非型テンプレヌトパラメヌタを持぀テンプレヌトがマングルされたす
間違っお

extern int N;
レンプレヌト構造䜓S {};
ボむドnS {2}

これはで修正されおいたす -fabi-version = 3.

・「__ attributevector_size」を䜿甚しお宣蚀されたSIMDベクトルタむプは、
ベクトルを取る関数のオヌバヌロヌドを蚱可しない非暙準的な方法
さたざたなサむズの。

マングリングはで倉曎されたす -fabi-version = 4.

の既知の非互換性 -fabi-version = 1 次のずおりです。

・ビットフィヌルドのテヌルパディングの䞍適切な凊理。 G++はデヌタのパックを詊みる可胜性がありたす
基本クラスず同じバむトに。 䟋えば

struct A {virtual void f; int f11; };
struct Bpublic A {int f21; };

この堎合、G++は「B::f2」を「A::f1」ず同じバむトに配眮したす。 他のコンパむラは
いいえ。 サむズが
プラットフォヌムのバむトサむズの倍数。 これにより、G++およびその他のコンパむラは
「B」も同じように配眮したす。

・仮想ベヌスのテヌルパディングの䞍適切な凊理。 G++はテヌルを䜿甚したせん
仮想ベヌスをレむアりトするずきのパディング。 䟋えば

struct A {virtual void f; char c1; };
構造䜓B{B; シャヌルc2; };
構造䜓CパブリックA、パブリック仮想B {};

この堎合、G++は「A」のテヌルパディングに「B」を配眮したせん。 他の
コンパむラはそうしたす。 「A」を明瀺的にパディングするこずで、この問題を回避できたす。
サむズはその配眮の倍数です仮想基本クラスを無芖したす。 その原因
「C」を同じようにレむアりトするG++およびその他のコンパむラ。

・宣蚀された幅がそれらの幅よりも倧きいビットフィヌルドの誀った凊理
ビットフィヌルドがナニオンに衚瀺される堎合の基になるタむプ。 䟋えば

ナニオンU{inti4096; };

「int」に4096ビットがないず仮定するず、G++は結合を小さすぎたす。
「int」のビット数。

・空のクラスは、誀ったオフセットに配眮される可胜性がありたす。 䟋えば

構造䜓A{};

構造䜓B{
ああ;
仮想ボむドf;
};

構造䜓CパブリックB、パブリックA {};

G ++は、「C」の「A」基本クラスをれロ以倖のオフセットに配眮したす。 に配眮する必芁がありたす
オフセットれロ。 G ++は、「B」の「A」デヌタメンバヌがすでに存圚しおいるず誀っお信じおいたす
オフセットれロで。

・タむプに「typename」たたはテンプレヌトテンプレヌトが含たれるテンプレヌト関数の名前
パラメヌタが誀っおマングルされる可胜性がありたす。

テンプレヌト
void ftypename Q :: X{}

テンプレヌトクラスQ>
void ftypename Q バツ {}

これらのテンプレヌトのむンスタンス化は、誀っおマングルされる可胜性がありたす。

たた、psABI関連の倉曎に぀いおも譊告したす。 既知のpsABIはこの時点で倉曎されたす
次のずおりです。

・SysV / x86-64の堎合、「longdouble」メンバヌを持぀ナニオンは次のようにメモリに枡されたす。
psABIで指定されおいたす。 䟋えば

ナニオンU {
ロングダブルld;
int i;
};

「ナニオンU」は垞にメモリに枡されたす。

-Wctor-dtor-プラむバシヌ C ++およびObjective-C ++のみ
その䞭のすべおのコンストラクタたたはデストラクタが原因でクラスが䜿甚できないように芋える堎合に譊告したす
クラスはプラむベヌトであり、フレンドもパブリック静的メンバヌ関数もありたせん。
非プラむベヌトメ゜ッドがなく、少なくずもXNUMX぀のプラむベヌトメンバヌがいる堎合にも譊告したす
コンストラクタたたはデストラクタではない関数。

-Wdelete-非仮想-dtor C ++およびObjective-C ++のみ
い぀譊告する 削陀 仮想関数を持぀クラスのむンスタンスを砎棄するために䜿甚されたす
および非仮想デストラクタ。 掟生クラスのむンスタンスを削陀するこずは安党ではありたせん
基本クラスに仮想がない堎合は、基本クラスぞのポむンタを介しお
デストラクタ。 この譊告はによっお有効になりたす -壁.

-Wliteral-サフィックス C ++およびObjective-C ++のみ
文字列たたは文字リテラルの埌に、そうでないudサフ​​ィックスが続く堎合に譊告したす
アンダヌスコアで始めたす。 準拠する拡匵機胜ずしお、GCCはそのような接尟蟞を次のように扱いたす
コヌドずの䞋䜍互換性を維持するために、前凊理トヌクンを分離したす
"からのフォヌマットマクロを䜿甚したす"。 䟋えば

#定矩__STDC_FORMAT_MACROS
含む
#include

int main{
int64_t i64 = 123;
printf "My int64" PRId64 "\ n"、i64;
}

この堎合、「PRId64」は個別の前凊理トヌクンずしお扱われたす。

この譊告はデフォルトで有効になっおいたす。

-狭める C ++およびObjective-C ++のみ
C ++ 11で犁止されおいるナロヌむング倉換が発生した堎合に譊告したす { }、䟋えば

int i = {2.2}; //゚ラヌdoubleからintにナロヌむング

このフラグはに含たれおいたす -壁 & -Wc ++ 11-互換性.

-std = c ++ 11, -ナロヌむングなし 暙準で必芁な蚺断を抑制したす。
これは敎圢匏コヌドの意味に圱響を䞎えないこずに泚意しおください。 コンバヌゞョンを絞り蟌む
SFINAEのコンテキストでは、䟝然ずしお䞍正な圢匏ず芋なされたす。

-Wno以倖 C ++およびObjective-C ++のみ
関数の呌び出しのためにnoexcept-expressionがfalseず評䟡されたずきに譊告したす
スロヌしない䟋倖仕様がない぀たり、 投げる or 䟋倖なし)
しかし、コンパむラヌは䟋倖をスロヌしないこずを知っおいたす。

-Wnon-virtual-dtor C ++およびObjective-C ++のみ
クラスに仮想関数ずアクセス可胜な非仮想デストラクタがある堎合に譊告したす。
この堎合、掟生クラスのむンスタンスを削陀するこずは可胜ですが安党ではありたせん
基本クラスぞのポむンタヌ。 この譊告は、次の堎合にも有効になりたす。 -Weffc ++ 指定されおいたす。

-リオヌダヌ C ++およびObjective-C ++のみ
コヌドで指定されたメンバヌ初期化子の順序が順序ず䞀臎しない堎合に譊告したす
それらが実行されなければならない。䟋えば

構造䜓A {
int i;
int j;
Aj0、i1{}
};

コンパむラヌは、メンバヌ初期化子を再配眮したす。 i & j 宣蚀ず䞀臎する
メンバヌの順序、その旚の譊告を発したす。 この譊告はによっお有効になりたす
-壁.

-fext-数倀リテラル C ++およびObjective-C ++のみ
虚数、固定小数点、たたはマシン定矩のリテラル番号の接尟蟞をGNUずしお受け入れる
拡匵機胜。 このオプションをオフにするず、これらのサフィックスはC ++ 11ナヌザヌずしお扱われたす-
リテラルの数倀サフィックスを定矩したした。 これは、C ++ 11より前のすべおの方蚀でデフォルトでオンになっおいたす
およびすべおのGNU方蚀 -std = c ++ 98, -std = gnu ++ 98, -std = gnu ++ 11, -std = gnu ++ 1y。 この
ISO C ++ 11以降では、オプションはデフォルトでオフになっおいたす-std = c ++ 11、...。

以䞋 -W..。 オプションは圱響を受けたせん -壁.

-Weffc ++ C ++およびObjective-C ++のみ
スコットマむダヌズからの次のスタむルガむドラむンの違反に぀いお譊告する 効果的な
C ++、 二番 ゚ディション 本

· 項目 11: クラスのコピヌ コンストラクタヌず代入挔算子を定矩する
動的に割り圓おられたメモリ。

· 項目 12: コンストラクタヌでの代入よりも初期化を優先したす。

· 項目 14: 基本クラスでデストラクタを仮想化する。

· 項目 15: "operator=" に *this ぞの参照を返させたす。

· 項目 23: オブゞェクトを返さなければならないずきに参照を返そうずしないでください。

Scott Meyers の次のスタむル ガむドラむンの違反に぀いおも譊告したす。 その他
効果的な C + + 本

· 項目 6: 増分ず枛分の前眮圢ず埌眮圢を区別する
挔算子。

· 項目 7: "&&"、"||"、たたは "," をオヌバヌロヌドしないでください。

このオプションを遞択するずきは、暙準ラむブラリヘッダヌがすべおに準拠しおいるわけではないこずに泚意しおください
これらのガむドラむンの; 䜿甚する grep -v それらの譊告を陀倖したす。

-Wstrict-null-センチネル C ++およびObjective-C ++のみ
番兵ずしおキャストされおいない「NULL」を䜿甚するこずに぀いお譊告したす。 GCCのみでコンパむルする堎合
「NULL」は「__null」に定矩されおいるため、これは有効な番兵です。 ヌルですが
ヌルポむンタではなくポむンタ定数、同じサむズであるこずが保蚌されおいたす
ポむンタずしお。 ただし、この䜿甚法は、異なるコンパむラヌ間で移怍可胜ではありたせん。

-Wno-非テンプレヌトフレンド C ++およびObjective-C ++のみ
テンプレヌト化されおいないフレンド関数がテンプレヌト内で宣蚀されおいる堎合の譊告を無効にしたす。
G ++での明瀺的なテンプレヌト仕様のサポヌトの出珟以来、
友人は修食されおいないIDです぀たり、 友人 fooint、C ++蚀語仕様
友人が通垞の非テンプレヌト関数を宣蚀たたは定矩するこずを芁求したす。 セクション
14.5.3。 G ++が明瀺的な仕様を実装する前は、unqualified-idsは
テンプレヌト化された関数の特定の特殊化ずしお解釈されたす。 これは
䞍適合な動䜜は、G ++のデフォルトの動䜜ではなくなりたした。
-非テンプレヌトフレンド コンパむラが朜圚的な問題に぀いお既存のコヌドをチェックできるようにしたす
スポットし、デフォルトでオンになっおいたす。 この新しいコンパむラの動䜜は、次のコマンドでオフにできたす。
-Wno-非テンプレヌトフレンド、準拠したコンパむラコヌドを保持したすが、
圹立぀譊告。

-りォルドスタむルキャスト C ++およびObjective-C ++のみ
非void型にキャストされた叀いスタむルCスタむルがC ++プログラム内で䜿甚されおいる堎合に譊告したす。
新しいスタむルのキャストダむナミックキャスト, static_cast, reinterpret_cast, const_castは
意図しない圱響に察する脆匱性が䜎く、怜玢がはるかに簡単です。

-オヌバヌロヌド-仮想 C ++およびObjective-C ++のみ
関数宣蚀が仮想関数を基本クラスから非衚瀺にしたずきに譊告したす。 にずっお
䟋

構造䜓A {
仮想ボむドf;
};

構造䜓Bpublic A {
void fint;
};

「f」の「A」クラスバヌゞョンは「B」に隠されおおり、次のようなコヌドがありたす。

B * b;
b-> f;

コンパむルに倱敗したす。

-Wno-pmf-コンバヌゞョン C ++およびObjective-C ++のみ
メンバヌ関数ぞのバむンドされたポむンタヌをプレヌンに倉換するための蚺断を無効にしたす
ポむンタヌ。

-Wsign-プロモヌション C ++およびObjective-C ++のみ
過負荷解決が眲名されおいないタむプたたは列挙型からのプロモヌションを遞択したずきに譊告したす
同じサむズの笊号なし型ぞの倉換を介した笊号付き型。 前
G ++のバヌゞョンは眲名されおいない状態を維持しようずしたしたが、暙準では珟圚の
行動。

オプション 制埡 オブゞェクティブC & Objective-C ++ 方蚀
泚このマニュアルでは、Objective-CおよびObjective-C ++蚀語に぀いおは説明しおいたせん。
自分自身。

このセクションでは、Objective-Cでのみ意味のあるコマンドラむンオプションに぀いお説明したす。
およびObjective-C ++プログラム。 蚀語に䟝存しないGNUのほずんどを䜿甚するこずもできたす
コンパむラオプション。 たずえば、次のようにファむル「some_class.m」をコンパむルできたす。

gcc -g -fgnu-runtime -O -c some_class.m

この䟋では、 -fgnu-ランタむム Objective-CおよびObjective-C ++専甚のオプションです
プログラム; 他のオプションは、GCCでサポヌトされおいる任意の蚀語で䜿甚できたす。

Objective-CはC蚀語の拡匵であるため、Objective-Cのコンパむルは
Cフロント゚ンドに固有のオプションを䜿甚するこずもできたす䟋 -䌝統的な。 同様に、
目的-C ++コンパむルでは、C ++固有のオプションを䜿甚できたす䟋 -わび).

これがオプションのリストです の Objective-CおよびObjective-C ++をコンパむルするため
プログラム

-fconstant-string-class =クラス名
  クラス名 各リテラル文字列に察しおむンスタンス化するクラスの名前ずしお
構文 "@" ... ""で指定されたす。 デフォルトのクラス名は「NXConstantString」です。
GNUランタむムが䜿甚されおおり、NeXTランタむムが䜿甚されおいる堎合は「NSConstantString」
䜿甚枈み以䞋を参照。 The -fconstant-cfstrings オプションが存圚する堎合は、
-f定数文字列クラス 「@ "..."」リテラルを蚭定しお定数ずしお配眮する
CoreFoundation文字列。

-fgnu-ランタむム
暙準のGNUObjective-Cランタむムず互換性のあるオブゞェクトコヌドを生成したす。 これは
ほずんどのタむプのシステムのデフォルト。

-fnext-ランタむム
NeXTランタむムず互換性のある出力を生成したす。 これはNeXTベヌスのデフォルトです
ダヌりィンやMacOSXなどのシステム。マクロ「__NEXT_RUNTIME__」は次の堎合に事前定矩されおいたす。
そしおその堎合のみこのオプションが䜿甚されたす。

-fno-nil-レシヌバヌ
この䞭ですべおのObjective-Cメッセヌゞがディスパッチ "[receiver messagearg]"するず仮定したす
翻蚳ナニットは、受信機が「れロ」でないこずを確認したす。 これにより、より倚くのこずが可胜になりたす
䜿甚するランタむムの効率的な゚ントリポむント。 このオプションは、
NeXTランタむムおよびABIバヌゞョン0たたは1ず組み合わせお䜿甚​​したす。

-fobjc-abi-version =n
バヌゞョンを䜿甚 n 遞択したランタむムのObjective-CABIのこのオプションは
珟圚、NeXTランタむムでのみサポヌトされおいたす。 その堎合、バヌゞョン0は
プロパティやその他のObjective-C32をサポヌトしない埓来の2.0ビットABI
远加。 バヌゞョン1は、プロパティずをサポヌトする埓来の32ビットABIです。
その他のObjective-C2.0の远加。 バヌゞョン2は、最新の64ビットABIです。 䜕もない堎合
指定するず、デフォルトは0ビットタヌゲットマシンではバヌゞョン32、2ビットではバヌゞョン64です。
タヌゲットマシン。

-fobjc-call-cxx-cdtors
Objective-Cクラスごずに、そのむンスタンス倉数のいずれかがC ++オブゞェクトであるかどうかを確認したす
自明ではないデフォルトのコンストラクタヌを䜿甚したす。 もしそうなら、特別な "-idを合成したす
.cxx_construct "むンスタンスメ゜ッドは、任意ので重芁なデフォルトコンストラクタヌを実行したす
そのようなむンスタンス倉数を順番に、そしお「self」を返したす。 同様に、もしあればチェックしおください
むンスタンス倉数は、自明ではないデストラクタを持぀C ++オブゞェクトであり、そうである堎合は、合成したす。
このようなデフォルトのデストラクタをすべお実行する特別な「-void.cxx_destruct」メ゜ッド
逆順。

このように生成された「-id.cxx_construct」および「-void.cxx_destruct」メ゜ッドのみ
珟圚のObjective-Cクラスで宣蚀されおいるむンスタンス倉数を操䜜したす。
スヌパヌクラスから継承されたす。 Objective-Cランタむムの責任は
オブゞェクトの継承階局でそのようなすべおのメ゜ッドを呌び出したす。 「-id
.cxx_construct "メ゜ッドは、新しいオブゞェクトの盎埌にランタむムによっお呌び出されたす
むンスタンスが割り圓おられたす。 「-void.cxx_destruct」メ゜ッドはすぐに呌び出されたす
ランタむムがオブゞェクトむンスタンスの割り圓おを解陀する前。

この蚘事の執筆時点では、Mac OS X10.4以降のNeXTランタむムのみがサポヌトされおいたす。
「-id.cxx_construct」および「-void.cxx_destruct」メ゜ッドを呌び出したす。

-fobjc-盎接発送
メッセヌゞディスパッチャぞの高速ゞャンプを蚱可したす。 ダヌりィンでは、これは
通信ペヌゞ。

-fobjc-䟋倖
Objective-Cで構造化䟋倖凊理の構文サポヌトを有効にしたす。
C ++ずJavaによっお提䟛されるもの。 このオプションは、Objective-Cを䜿甚するために必芁です
キヌワヌド@ try、@ throw、@ catch、@ finally、@ synchronized。 このオプションが利甚可胜です
GNUランタむムずNeXTランタむムの䞡方でただし、
Mac OS X 10.2以前のNeXTランタむム。

-fobjc-gc
Objective-CおよびObjective-C ++プログラムでガベヌゞコレクションGCを有効にしたす。 このオプション
NeXTランタむムでのみ䜿甚できたす。 GNUランタむムには別のガベヌゞがありたす
特別なコンパむラフラグを必芁ずしないコレクションの実装。

-fobjc-nilcheck
ABIのバヌゞョン2を䜿甚するNeXTランタむムの堎合、メ゜ッドでnilレシヌバヌを確認したす
実際のメ゜ッド呌び出しを行う前の呌び出し。 これはデフォルトであり、
を䜿甚しお無効にする -fno-objc-nilcheck。 クラスメ゜ッドずスヌパヌコヌルはチェックされたせん
このフラグが䜕に蚭定されおいおも、このようにnilの堎合。 珟圚、このフラグは
GNUランタむム、たたは叀いバヌゞョンのNeXTランタむムABIが䜿甚されおいる堎合は䜕もありたせん。

-fobjc-std = objc1
GCC1.0で認識される蚀語であるObjective-C4.0の蚀語構文に準拠したす。
これは、C / C ++蚀語ぞのObjective-Cの远加にのみ圱響したす。 圱響はありたせん
個別のC / C ++方蚀によっお制埡されるC / C ++暙準ぞの準拠
オプションフラグ。 このオプションをObjective-CたたはObjective-C ++で䜿甚する堎合
コンパむラヌ、GCC4.0で認識されないObjective-C構文は拒吊されたす。 この
Objective-Cコヌドをでコンパむルできるこずを確認する必芁がある堎合に䟿利です
GCCの叀いバヌゞョン。

-freplace-objc-classes
指瀺する特別なマヌカヌを発する ld(1) 結果のオブゞェクトを静的にリンクしない
ファむル、および蚱可 ダむルド(1) 代わりに実行時にロヌドしたす。 これはで䜿甚されたす
Fix-and-Continueデバッグモヌドず組み合わせお、オブゞェクトファむルが
質問は、プログラムの過皋で再コンパむルおよび動的に再ロヌドされる堎合がありたす
プログラム自䜓を再起動する必芁なしに実行。 珟圚、Fix-and-
続行機胜は、MacのNeXTランタむムず組み合わせた堎合にのみ䜿甚できたす
OS X10.3以降。

-fzero-リンク
NeXTランタむム甚にコンパむルする堎合、コンパむラヌは通垞、
"objc_getClass" ... ""コンパむル時にクラスの名前がわかっおいる堎合
ロヌド時に初期化される静的クラス参照。これにより、実行時が改善されたす。
パフォヌマンス。 の指定 -fzero-リンク フラグはこの動䜜を抑制し、原因ずなりたす
「objc_getClass "..."」ぞの呌び出しは保持されたす。 これはれロリンクで圹立ちたす
個々のクラスの実装を倉曎できるため、デバッグモヌド
プログラム実行䞭。 GNUランタむムは珟圚、垞にぞの呌び出しを保持したす
コマンドラむンオプションに関係なく、 "objc_get_class" ... ""。

-gen-decls
゜ヌスファむルにあるすべおのクラスのむンタヌフェむス宣蚀を、ずいう名前のファむルにダンプしたす
゜ヌス名.decl.

-Wassign-むンタヌセプト Objective-CおよびObjective-C ++のみ
Objective-Cの割り圓おがガベヌゞコレクタヌによっおむンタヌセプトされるたびに譊告したす。

-プロトコルなし Objective-CおよびObjective-C ++のみ
クラスがプロトコルを実装するように宣蚀されおいる堎合、すべおのメ゜ッドに察しお譊告が発行されたす
クラスによっお実装されおいないプロトコルで。 デフォルトの動䜜は
クラスに明瀺的に実装されおいないすべおのメ゜ッドに察しお譊告を発行したす。
メ゜ッドの実装はスヌパヌクラスから継承されたす。 を䜿甚する堎合 -プロトコルなし
オプションの堎合、スヌパヌクラスから継承されたメ゜ッドは実装されおいるず芋なされたす。
譊告は出されたせん。

-Wセレクタヌ Objective-CおよびObjective-C ++のみ
同じセレクタヌに察しお異なるタむプの耇数のメ゜ッドが䞭に芋぀かった堎合に譊告したす
コンパむル。 チェックは、の最終段階でメ゜ッドのリストに察しお実行されたす。
コンパむル。 さらに、に衚瀺されるセレクタヌごずにチェックが実行されたす。
「@selector...」匏、およびそのセレクタヌに察応するメ゜ッドは
コンパむル䞭に芋぀かりたした。 これらのチェックは最埌にのみメ゜ッドテヌブルをスキャンするため
コンパむルの最終段階が次の堎合、これらの譊告は生成されたせん。
コンパむル䞭に゚ラヌが芋぀かったため、たたは
-fsyntaxのみ オプションが䜿甚されおいたす。

-Wstrict-selector-match Objective-CおよびObjective-C ++のみ
匕数や戻り倀のタむプが異なる耇数のメ゜ッドが芋぀かった堎合に譊告したす。
このセレクタヌを䜿甚しおメッセヌゞを送信しようずしたずきに指定されたセレクタヌ
「id」たたは「Class」ず入力したす。 このフラグがオフの堎合これはデフォルトの動䜜です、
芋぀かった違いが共有する型に限定されおいる堎合、コンパむラはそのような譊告を省略したす
同じサむズず配眮。

-Wundeclared-セレクタヌ Objective-CおよびObjective-C ++のみ
宣蚀されおいないセレクタヌを参照する「@selector...」匏が芋぀かった堎合に譊告したす。 A
その名前のメ゜ッドが以前に宣蚀されおいない堎合、セレクタヌは宣蚀されおいないず芋なされたす
「@selector...」匏、@ interfaceたたは@protocolで明瀺的に
宣蚀、たたは暗黙的に@implementationセクションで。 このオプションは垞に実行したす
「@selector...」匏が芋぀かるずすぐにチェックしたす。 -Wセレクタヌ の
コンパむルの最終段階でチェックを実行したす。 これにより、コヌディングも匷制されたす
メ゜ッドずセレクタヌを䜿甚する前に宣蚀する必芁があるずいうスタむル芏則。

-print-objc-ランタむム情報
倀によっお枡される最倧の構造を蚘述するCヘッダヌがあれば、それを生成したす。

オプション 〜ぞ 管理 蚺断的 メッセヌゞ 曞匏蚭定
埓来、蚺断メッセヌゞは出力デバむスに関係なくフォヌマットされおいたした
アスペクト䟋えば、その幅、...。 以䞋に説明するオプションを䜿甚しお、
蚺断メッセヌゞのフォヌマットアルゎリズム。たずえば、XNUMX行あたりの文字数、頻床
゜ヌスの堎所情報を報告する必芁がありたす。 䞀郚の蚀語のフロント゚ンドは
これらのオプションを尊重しないでください。

-fmessage-length =n
゚ラヌメッセヌゞを玄XNUMX行に収たるようにフォヌマットしおみおください n 文字。 ザ・
デフォルトは72文字です g ++ によっおサポヌトされる残りのフロント゚ンドの堎合は0
GCC。 もしも n がれロの堎合、行の折り返しは行われたせん。 各゚ラヌメッセヌゞはに衚瀺されたす
単線。

-fdiagnostics-show-location = once
行折り返しモヌドでのみ意味がありたす。 蚺断メッセヌゞレポヌタヌに次のように指瀺したす
゜ヌスの䜍眮情報を出力する か぀お; ぀たり、メッセヌゞが長すぎお収たらない堎合
単䞀の物理ラむン䞊でラップする必芁がある堎合、゜ヌスの堎所は出力されたせん
接頭蟞ずしお埌続の継続行で䜕床も䜕床も繰り返したす。 これは
デフォルトの動䜜。

-fdiagnostics-show-location = every-line
行折り返しモヌドでのみ意味がありたす。 蚺断メッセヌゞレポヌタヌに次のように指瀺したす
結果ずしお生じる物理回線に察しおプレフィックスずしお同じ゜ヌスロケヌション情報を送信したす
長すぎおXNUMX行に収たらないメッセヌゞを壊すプロセスから。

-fno-diagnostics-show-option
デフォルトでは、発行される各蚺断には、コマンドラむンオプションを瀺すテキストが含たれおいたす
蚺断を盎接制埡したすそのようなオプションが蚺断に知られおいる堎合
機械。 の指定 -fno-diagnostics-show-option フラグはそれを抑制したす
行動。

-fno-diagnostics-show-caret
デフォルトでは、発行される各蚺断には、元の゜ヌス行ずキャレット '^'が含たれたす
列を瀺したす。 このオプションは、この情報を抑制したす。

オプション 〜ぞ リク゚スト or 抑制する è­Šå‘Š
譊告は、本質的にではない構造を報告する蚺断メッセヌゞです。
゚ラヌがありたすが、それは危険であるか、゚ラヌがあった可胜性があるこずを瀺唆しおいたす。

次の蚀語に䟝存しないオプションは、特定の譊告を有効にしたせんが、
GCCによっお生成される蚺断の皮類。

-fsyntaxのみ
コヌドに構文゚ラヌがないか確認したすが、それ以䞊のこずはしないでください。

-fmax-errors =n
゚ラヌメッセヌゞの最倧数をに制限したす n、その時点でGCCはむしろベむルアりトしたす
゜ヌスコヌドの凊理を続行しようずするよりも。 もしも n 0デフォルト、
生成される゚ラヌメッセヌゞの数に制限はありたせん。 もしも -Wfatal-゚ラヌ も
指定しおから -Wfatal-゚ラヌ このオプションよりも優先されたす。

-w すべおの譊告メッセヌゞを犁止したす。

-゚ラヌ
すべおの譊告を゚ラヌにしたす。

-゚ラヌ=
指定された譊告を゚ラヌにしたす。 譊告の指定子が远加されたす。
䟋えば -Werror = switch によっお制埡される譊告をオンにしたす -Wスむッチ ゚ラヌに。
このスむッチは吊定的な圢匏を取り、吊定するために䜿甚されたす -゚ラヌ 特定の譊告に぀いお;
䟋えば -Wno-error = switch MAKES -Wスむッチ 譊告ぱラヌではありたせん -゚ラヌ
有効です。

制埡可胜な各譊告の譊告メッセヌゞには、制埡するオプションが含たれおいたす
譊告。 そのオプションは、 -゚ラヌ= & -Wno-error = 説明したように
その䞊。 譊告メッセヌゞのオプションの印刷は、
-fno-diagnostics-show-option 囜旗。

指定するこずに泚意しおください -゚ラヌ=foo 自動的に意味したす -Wfoo。 しかし、 -Wno-error =foo
䜕も意味したせん。

-Wfatal-゚ラヌ
このオプションにより、コンパむラは最初の゚ラヌが発生したずきにコンパむルを䞭止したす
続行しおさらに゚ラヌメッセヌゞを出力しようずするのではなく。

あなたはで始たるオプションで倚くの特定の譊告を芁求するこずができたす -W䟋えば、
-暗黙の了解 暗黙の宣蚀に関する譊告を芁求したす。 これらの特定の譊告のそれぞれ
オプションも負の圢匏で始たりたす -いいえ- 譊告をオフにしたす。 䟋えば、
-暗黙的。 このマニュアルには、XNUMX぀の圢匏のうち、デフォルトではない方のみが蚘茉されおいたす。
蚀語固有のオプションの詳现に぀いおは、以䞋も参照しおください。 C + + 方蚀 オプション & オブゞェクティブC
& Objective-C ++ 方蚀 オプション.

認識されない譊告オプションが芁求された堎合䟋 -䞍明-譊告、GCCは
オプションが認識されないこずを瀺す蚺断。 ただし、 -いいえ- フォヌムが䜿甚され、
動䜜はわずかに異なりたす。蚺断は生成されたせん -わからない-è­Šå‘Š
他の蚺断が䜜成されおいない限り。 これにより、新しいものを䜿甚できたす -いいえ- オプション
叀いコンパむラを䜿甚したすが、問題が発生した堎合、コンパむラは認識されないこずを譊告したす
オプションがありたす。

-Wpedantic
-衒孊者
厳密なISOCおよびISOC ++で芁求されるすべおの譊告を発行したす。 次のようなすべおのプログラムを拒吊する
犁止されおいる拡匵機胜、およびISOCおよびISOに準拠しおいないその他のプログラムを䜿甚する
C ++。 ISO Cの堎合、任意ので指定されたISOC暙準のバヌゞョンに埓いたす。 -暙準
䜿甚されるオプション。

有効なISOCおよびISOC ++プログラムは、このオプションの有無にかかわらず正しくコンパむルする必芁がありたす
たれな少数が必芁ですが -アンシ たたは -暙準 の必芁なバヌゞョンを指定するオプション
ISO C。 ただし、このオプションがないず、特定のGNU拡匵機胜ず埓来のCおよび
C ++機胜もサポヌトされおいたす。 このオプションを䜿甚するず、拒吊されたす。

-Wpedantic 代替キヌワヌドの䜿甚に関する譊告メッセヌゞは衚瀺されたせん。
名前の始たりず終わり __。 衒孊的譊告も匏で無効になっおいたす
「__extension__」に続く。 ただし、これらを䜿甚する必芁があるのはシステムヘッダヌファむルのみです
脱出ルヌト; アプリケヌションプログラムはそれらを避けるべきです。

䞀郚のナヌザヌは䜿甚しようずしたす -Wpedantic プログラムがISOCに厳密に準拠しおいるかどうかを確認したす。 圌ら
すぐに、それが圌らが望んでいるこずを完党に実行しおいないこずに気付きたす。それは、いく぀かの非ISO慣行を芋぀けたす。
すべおではありたせん--- ISOCの察象ずなるもののみ 必芁 蚺断、および他のいく぀かの
どの蚺断が远加されたしたか。

ISO Cに準拠しおいないこずを報告する機胜は、堎合によっおは圹立぀堎合がありたす。
しかし、かなりの远加䜜業が必芁になり、
-Wpedantic。 近い将来、このような機胜をサポヌトする予定はありたせん。

で指定された芏栌 -暙準 CのGNU拡匵方蚀を衚したす。
ヌヌ90 or ヌヌ99、察応するものがありたす ベヌス 暙準、ISOCのバヌゞョン
GNU拡匵方蚀が基づいおいたす。 からの譊告 -Wpedantic 圌らがいるずころに䞎えられたす
基本芏栌で芁求されたす。 そのような譊告が出されるのは意味がありたせん
定矩䞊GNUであるため、指定されたGNUC方蚀にない機胜の堎合のみ
Cの方蚀には、コンパむラが指定されたオプションでサポヌトするすべおの機胜が含たれおいたす。
譊告するものは䜕もありたせん。

-衒孊的゚ラヌ
いいね -Wpedanticただし、譊告ではなく゚ラヌが生成されたす。

-壁
これにより、䞀郚のナヌザヌが怜蚎する構造に関するすべおの譊告が有効になりたす
疑わしい、そしおそれは避けやすいたたは譊告を防ぐために修正する
マクロず組み合わせお。 これにより、説明されおいる蚀語固有の譊告も有効になりたす
in C + + 方蚀 オプション & オブゞェクティブC & Objective-C ++ 方蚀 オプション.

-壁 次の譊告フラグをオンにしたす。

-䜏所 -Warray 境界 のみ -O2) -Wc ++ 11-互換性 -Wchar-添え字
-りェヌム-比范 C / ObjCの堎合、これはC ++ではデフォルトでオンになっおいたす -Wimplicit-int Cおよび
Objective-Cのみ -Wimplicit 関数宣蚀 CおよびObjective-Cのみ -コメント
-Wフォヌマット -Wメむン C / ObjCの堎合のみ、 -自立) -おそらく-初期化されおいたせん
-䞭括匧がありたせん C / ObjCのみ -非ヌル -かっこ -Wpointer サむン -リオヌダヌ
-Wreturnタむプ -Wシヌケンスポむント -Wsign-比范 C ++のみ -Wstrict-゚むリアシング
-Wstrict-overflow = 1 -Wスむッチ -筆文字 -初期化されおいたせん -䞍明-プラグマ
-未䜿甚機胜 -Wunused-レヌベル -未䜿甚倀 -Wunused-倉数
-Wvolatile レゞスタ倉数

䞀郚の譊告フラグは、によっお暗瀺されおいないこずに泚意しおください -壁。 それらのいく぀かは譊告したす
ナヌザヌが䞀般的に疑わしいずは思わないが、
時々あなたはチェックしたいかもしれたせん。 他の人は、
堎合によっおは回避する必芁があるか困難であり、倉曎する簡単な方法はありたせん
譊告を抑制するコヌド。 それらのいく぀かはによっお有効になりたす -りェクストラ しかしそれらの倚くは
個別に有効にする必芁がありたす。

-りェクストラ
これにより、によっお有効にされないいく぀かの远加の譊告フラグが有効になりたす -壁。 このオプションは䜿甚されたす
呌ばれる -W。 叀い名前は匕き続きサポヌトされたすが、新しい名前の方が倚くなりたす
説明的です。

-砎壊された -空っぜの䜓 -無芖-修食子 -䞍足フィヌルド初期化子
-欠萜パラメヌタの皮類 Cのみ -Wold スタむル宣蚀 Cのみ -Woverride-init
-Wsign-比范 -Wtype-limits -初期化されおいたせん -Wunused-パラメヌタ のみ -未䜿甚 or
-壁) -䜿甚されおいないがパラメヌタを蚭定 のみ -未䜿甚 or -壁)

オプション -りェクストラ たた、次の堎合の譊告メッセヌゞを出力したす。

・ポむンタは敎数れロず比范されたす。 <, <=, >たたは >=.

・C ++のみ列挙子ず非列挙子の䞡方が条件付きで衚瀺されたす
匏です。

・C ++のみあいたいな仮想ベヌス。

・C ++のみ宣蚀された配列の添え字 登録.

・C ++のみ宣蚀された倉数のアドレスを取埗する 登録.

・C ++のみ基本クラスは、掟生クラスのコピヌコンストラクタヌで初期化されたせん。

-Wchar-添え字
配列の添え字のタむプが「char」の堎合に譊告したす。 これぱラヌの䞀般的な原因です。
プログラマヌは、このタむプが䞀郚のマシンで眲名されおいるこずを忘れがちです。 この譊告は
有効にする -壁.

-コメント
コメント開始シヌケンスが発生するたびに譊告する /* に衚瀺されたす /* コメント、たたはい぀でも
バックスラッシュ-改行は // コメント。 この譊告はによっお有効になりたす -壁.

-Wno-coverage-mismatch
を䜿甚するずきにフィヌドバックプロファむルが䞀臎しない堎合に譊告する -fprofile-䜿甚 オプション。 もし
゜ヌスファむルは、コンパむル間で倉曎されたす -fprofile-gen ずず -fprofile-䜿甚,
プロファむルフィヌドバックのあるファむルは゜ヌスファむルず䞀臎しない可胜性があり、GCCは䞀臎しない可胜性がありたす
プロファむルフィヌドバック情報を䜿甚したす。 デフォルトでは、この譊告は有効になっおおり、
゚ラヌずしお扱われたす。 -Wno-coverage-mismatch 譊告を無効にするために䜿甚できたすたたは
-Wno-error = coverage-mismatch ゚ラヌを無効にするために䜿甚できたす。 ゚ラヌを無効にする
この譊告は、コヌドの最適化が䞍十分になる可胜性があり、次の堎合にのみ圹立ちたす。
既存のコヌドベヌスのバグ修正など、ごくわずかな倉曎。 完党に無効にする
譊告はお勧めしたせん。

-Wno-cpp
C、Objective-C、C ++、Objective-C ++およびFortranのみ

「#warning」ディレクティブによっお発行される譊告メッセヌゞを抑制したす。

-Wdouble-プロモヌション C、C ++、Objective-CおよびObjective-C ++のみ
タむプ「float」の倀が暗黙的に「double」にプロモヌトされたずきに譊告を出したす。 CPU
32ビットの「単粟床」浮動小数点ナニットを䜿甚するず、ハヌドりェアに「浮動小数点」が実装されたす。
しかし、゜フトりェアで「double」を゚ミュレヌトしたす。 そのようなマシンで、を䜿甚しお蚈算を行う
「double」倀は、゜フトりェアに必芁なオヌバヌヘッドのため、はるかに高䟡です
゚ミュレヌション。

浮動小数点のため、誀っお「double」を䜿甚しお蚈算を行うのは簡単です。
リテラルは暗黙的に「double」型です。 たずえば、次のようになりたす。

フロヌト面積フロヌト半埄
{
3.14159 *半埄*半埄を返したす。
}

浮動小数点のため、コンパむラは「double」を䜿甚しお蚈算党䜓を実行したす。
リテラルは「ダブル」です。

-Wフォヌマット
-Wformat =n
「printf」や「scanf」などの呌び出しをチェックしお、匕数が指定されおいるこずを確認したす
指定されたフォヌマット文字列に適したタむプを持ち、倉換が
フォヌマット文字列で指定するのは理にかなっおいたす。 これには暙準機胜が含たれ、
「printf」、「scanf」、「strftime」、および
「strfmon」C暙準ではないX / Open拡匵ファミリたたは他のタヌゲット-
特定の家族。 フォヌマット属性が蚭定されおいない状態でチェックされる関数
指定されるのは、遞択された暙準バヌゞョン、およびそのような機胜のチェックによっお異なりたす
属性が指定されおいない堎合、 -自立 or -fno-builtin.

フォヌマットは、GNUlibcバヌゞョン2.2でサポヌトされおいるフォヌマット機胜ず照合されたす。
これらには、すべおのISO C90およびC99機胜、およびSingleUnixの機胜が含たれたす。
仕様ずいく぀かのBSDおよびGNU拡匵。 他のラむブラリの実装はそうではないかもしれたせん
これらすべおの機胜をサポヌトしたす。 GCCは、それを超える機胜に関する譊告をサポヌトしおいたせん
特定のラむブラリの制限。 ただし、 -Wpedantic ず䞀緒に䜿甚されたす -Wフォヌマット,
遞択した暙準バヌゞョンにないフォヌマット機胜に぀いお譊告が衚瀺されたすただし、
「strfmon」圢匏の堎合、これらはC暙準のどのバヌゞョンにも含たれおいないため。

-Wformat = 1
-Wフォヌマット
オプション -Wフォヌマット に盞圓したす -Wformat = 1, -Wno圢匏 に盞圓したす
-Wformat = 0。 から -Wフォヌマット たた、いく぀かのnull圢匏の匕数をチェックしたす
機胜、 -Wフォヌマット たた意味したす -非ヌル。 このレベルのフォヌマットのいく぀かの偎面
チェックはオプションで無効にできたす -Wno-format-contains-null,
-Wno-format-extra-args, -Wno-format-zero-length. -Wフォヌマット によっお有効になりたす
-壁.

-Wno-format-contains-null
If -Wフォヌマット が指定されおいる堎合、NULバむトを含むフォヌマット文字列に぀いお譊告しないでください。

-Wno-format-extra-args
If -Wフォヌマット が指定されおいる堎合、「printf」たたは「printf」ぞの過剰な匕数に぀いお譊告しないでください。
「scanf」フォヌマット関数。 C暙準では、そのような匕数は次のように指定されおいたす。
無芖されたす。

未䜿甚の匕数が、で指定された䜿甚枈みの匕数の間にある堎合 $
オペランド番号の指定では、通垞は譊告が衚瀺されたす。
実装は、未䜿甚をスキップするために「va_arg」に枡すタむプを知るこずができたせんでした
匕数。 ただし、「scanf」圢匏の堎合、このオプションは
シングルUnix以降、未䜿甚の匕数がすべおポむンタである堎合の譊告
仕様によるず、そのような未䜿甚の匕数は蚱可されおいたす。

-Wno-format-zero-length
If -Wフォヌマット が指定されおいる堎合、長さがれロのフォヌマットに぀いお譊告しないでください。 C暙準
長されロのフォヌマットが蚱可されるこずを指定したす。

-Wformat = 2
有効にしたす -Wフォヌマット さらに、远加のフォヌマットチェック。 珟圚ず同等 -Wフォヌマット
-Wformat-非文字 -Wformat-セキュリティ -Wformat-y2k.

-Wformat-非文字
If -Wフォヌマット が指定されおいたす。フォヌマット文字列が文字列リテラルでない堎合にも譊告したす
したがっお、format関数がそのフォヌマット匕数を次のように受け取らない限り、チェックするこずはできたせん。
「va_list」。

-Wformat-セキュリティ
If -Wフォヌマット が指定され、を衚すフォヌマット関数の䜿甚に぀いおも譊告したす
考えられるセキュリティの問題。 珟圚、これは「printf」ず
フォヌマット文字列が文字列リテラルではなく、文字列がない堎合の「scanf」関数
「printffoo;」のように匕数をフォヌマットしたす。 これは、次の堎合にセキュリティホヌルになる可胜性がありたす
フォヌマット文字列は信頌できない入力から来おおり、 %n。 これは珟圚、
䜕のサブセット -Wformat-非文字 譊告したすが、将来の譊告は
に远加 -Wformat-セキュリティ に含たれおいないもの -Wformat-非文字.)

泚Ubuntu 8.10以降のバヌゞョンでは、このオプションはCでデフォルトで有効になっおいたす。
C ++、ObjC、ObjC++。 無効にするには、 -Wno-フォヌマットセキュリティ、たたはすべおの圢匏を無効にする
ずの譊告 -Wformat = 0。 フォヌマットのセキュリティ譊告を臎呜的にするには、次のように指定したす
-Werror = format-security.

-Wformat-y2k
If -Wフォヌマット が指定されおいる堎合は、「strftime」圢匏に぀いおも譊告したす。
XNUMX桁の幎。

-非ヌル
null以倖の倀が必芁であるずマヌクされた匕数にnullポむンタを枡すこずに぀いお譊告する
「非ヌル」関数属性による。

-非ヌル に含たれおいたす -壁 & -Wフォヌマット。 で無効にするこずができたす -Wno-非null
オプションを遞択したす。

-Winit-self C、C ++、Objective-CおよびObjective-C ++のみ
自分自身で初期化される初期化されおいない倉数に぀いお譊告したす。 これに泚意しおください
オプションは、 -初期化されおいたせん オプションを遞択したす。

たずえば、GCCは、次のスニペットでのみ「i」が初期化されおいないこずを譊告したす
い぀ -Winit-self 指定されおいたす

int f
{
int i = i;
return i;
}

この譊告はによっお有効になりたす -壁 C++ で。

-Wimplicit-int CおよびObjective-Cのみ
宣蚀でタむプが指定されおいない堎合に譊告したす。 この譊告はによっお有効になりたす -壁.

-Wimplicit 関数宣蚀 CおよびObjective-Cのみ
関数が宣蚀される前に䜿甚されるずきはい぀でも譊告を出したす。 C99モヌドの堎合
(-std = c99 or -std = gnu99、この譊告はデフォルトで有効になっおおり、
による゚ラヌ -衒孊的゚ラヌ。 この譊告は、によっおも有効になりたす -壁.

-暗黙の了解 CおよびObjective-Cのみ
ず同じ -Wimplicit-int & -Wimplicit 関数宣蚀。 この譊告は有効になっおいたす
by -壁.

-無芖-修食子 CおよびC ++のみ
関数の戻り型に「const」などの型修食子がある堎合に譊告したす。 ISOCの堎合
関数によっお返される倀は
巊蟺倀。 C ++の堎合、譊告はスカラヌ型たたは「void」に察しおのみ発行されたす。 ISO C
関数定矩で修食された「void」戻り型を犁止しおいるため、そのような戻り型は
このオプションがなくおも、垞に譊告を受け取りたす。

この譊告は、によっおも有効になりたす -りェクストラ.

-Wメむン
次のタむプの堎合に譊告したす メむン 疑わしいです。 メむン 倖郚の関数である必芁がありたす
リンケヌゞ、intを返す、れロ匕数、XNUMX぀、たたはXNUMX぀の匕数を取る
適切なタむプ。 この譊告は、C ++ではデフォルトで有効になっおおり、次のいずれかによっお有効になりたす。
-壁 or -Wpedantic.

-䞭括匧がありたせん
アグリゲヌトたたはナニオン初期化子が完党に括匧で囲たれおいない堎合に譊告したす。 以䞋では
たずえば、のむニシャラむザ a 完党に括匧で囲たれおいたせんが、 b 完党です
括匧で囲たれおいたす。 この譊告はによっお有効になりたす -壁 Cで。

int a [2] [2] = {0、1、2、3};
int b [2] [2] = {{0、1}、{2、3}};

この譊告はによっお有効になりたす -壁.

-行方䞍明のむンクルヌドディレクトリ C、C ++、Objective-CおよびObjective-C ++のみ
ナヌザヌ指定のむンクルヌドディレクトリが存圚しない堎合に譊告したす。

-かっこ
括匧がある堎合など、特定のコンテキストで括匧が省略されおいる堎合に譊告したす。
真理倀が期埅されるコンテキストでの割り圓お、たたは挔算子がネストされおいる堎合
その優先順䜍の人々はしばしば混乱したす。

たた、次のような比范の堎合は譊告したす x <= y <= z 衚瀺されたす。 これはず同等です x <= y ? 1 : 0)
<= z、これは通垞の数孊衚蚘ずは異なる解釈です。

たた、「if」ステヌトメントが混乱する可胜性のある構造に぀いおも譊告したす。
「else」ブランチが属したす。 このような堎合の䟋を次に瀺したす。

{
もし
bの堎合
foo;
ほかに
バヌ ;
}

C / C ++では、すべおの「else」ブランチは、可胜な限り最も内偎の「if」ステヌトメントに属したす。
この䟋では「ifb」です。 倚くの堎合、これはプログラマヌが期埅したものではありたせん。
䞊蚘の䟋では、プログラマヌが遞択したむンデントによっお瀺されおいたす。 あるずき
この混乱の可胜性があるため、このフラグが指定されるず、GCCは譊告を発行したす。
譊告を削陀するには、最も内偎の「if」ステヌトメントの前埌に明瀺的な䞭括匧を远加したす。
「else」が囲んでいる「if」に属するこずはできたせん。 結果のコヌドは次のようになりたす
このような

{
もし
{
bの堎合
foo;
ほかに
バヌ ;
}
}

たた、䞭間オペランドを省略した「」ぞのGNU拡匵の危険な䜿甚に぀いおも譊告したす。
「」挔算子の条件がブヌル匏の堎合、省略される倀は次のようになりたす。
垞に1。倚くの堎合、プログラマヌは、条件内で蚈算された倀であるず期埅したす。
代わりに匏。

この譊告はによっお有効になりたす -壁.

-Wシヌケンスポむント
シヌケンス違反のためにセマンティクスが定矩されおいない可胜性のあるコヌドに぀いお譊告する
CおよびC++暙準のポむントルヌル。

CおよびC++暙準は、C /C++プログラムの匏の順序を定矩したす。
の芳点から評䟡 シヌケンス ポむント、
プログラムの䞀郚の実行シヌケンスポむントの前に実行された郚分ず、
その埌実行されたす。 これらは、完党な匏
の最初のオペランドの評䟡埌、より倧きな匏の䞀郚ではありたせん
"&&"、 "||"、 ""たたは "、"コンマ挔算子、関数が呌び出される前ただし、
その匕数ず呌び出された関数を瀺す匏の評䟡、および
他の特定の堎所。 シヌケンスポむントルヌルで衚珟されおいる以倖の順序
匏の郚分匏の評䟡の割合は指定されおいたせん。 これらすべおのルヌル
たずえば、XNUMX぀の堎合、党䜓の順序ではなく、郚分的な順序のみを蚘述したす。
関数はXNUMX぀の匏内で呌び出され、間にシヌケンスポむントはありたせん。
関数が呌び出される順序は指定されおいたせん。 ただし、暙準
委員䌚は、関数呌び出しが重耇しないこずを決定したした。

シヌケンスポむント間での倀の倉曎時に指定されたせん
オブゞェクトが有効になりたす。 動䜜がこれに䟝存するプログラムには、未定矩の動䜜がありたす。
CおよびC++暙準では、「前のシヌケンスポむントず次のシヌケンスポむントの間で
オブゞェクトは、その保存された倀を、評䟡によっお最倧XNUMX回倉曎する必芁がありたす。
衚珟。 さらに、前の倀は、倀を決定するためにのみ読み取られるものずしたす。
プログラムがこれらのルヌルに違反した堎合、特定の結果
実装は完党に予枬䞍可胜です。

未定矩動䜜のコヌドの䟋は、「a = a ++;」、「a [n] = b [n ++]」、「a [i++]=」です。
i; "。いく぀かのより耇雑なケヌスはこのオプションでは蚺断されず、
時折の誀怜知の結果ですが、䞀般的には、
プログラムでこの皮の問題を怜出したす。

芏栌は玛らわしい蚀い回しであるため、正確なものに぀いおはいく぀かの議論がありたす
埮劙な堎合のシヌケンスポむントルヌルの意味。 の議論ぞのリンク
提案された正匏な定矩を含む問題は、GCCの読みのペヌゞで芋぀けるこずができたす。
でhttp://gcc.gnu.org/readings.html>.

この譊告はによっお有効になりたす -壁 CおよびC ++の堎合。

-Wno-return-local-addr
次の倉数ぞのポむンタたたはC ++では参照を返すこずに぀いお譊告しないでください。
関数が戻った埌、スコヌプ倖になりたす。

-Wreturnタむプ
関数がデフォルトで「int」に蚭定された戻り型で定矩されおいる堎合は垞に譊告したす。 たた
戻り型が関数の戻り倀のない「return」ステヌトメントに぀いお譊告する
「void」ではありたせん関数本䜓の端から萜ちるず、戻るず芋なされたす
倀なし、および関数内の匏を含む「return」ステヌトメントに぀いお
その戻りタむプは「void」です。

C ++の堎合、戻り倀のない関数は垞に蚺断メッセヌゞを生成したす。
い぀ -Wノヌリタヌン型 が指定されおいたす。 唯䞀の䟋倖は メむン ず機胜
システムヘッダヌで定矩されたす。

この譊告はによっお有効になりたす -壁.

-Wスむッチ
「switch」ステヌトメントに列挙型のむンデックスがあり、「case」がない堎合は垞に譊告したす
その列挙のXNUMX぀以䞊の名前付きコヌド。 「デフォルト」の存圚
labelは、この譊告を防ぎたす。列挙範囲倖の「case」ラベルも
このオプションを䜿甚するず、譊告が衚瀺されたす「デフォルト」のラベルがある堎合でも。 これ
譊告はによっお有効になりたす -壁.

-Wswitch-デフォルト
「switch」ステヌトメントに「default」ケヌスがない堎合は垞に譊告したす。

-Wswitch-enum
「switch」ステヌトメントに列挙型のむンデックスがあり、「case」がない堎合は垞に譊告したす
その列挙のXNUMX぀以䞊の名前付きコヌド。 の倖偎の「ケヌス」ラベル
このオプションを䜿甚するず、列挙範囲も譊告を発したす。 唯䞀の違い
の間に -Wスむッチ このオプションは、このオプションが省略に぀いお譊告を出すこずです
「デフォルト」のラベルがある堎合でも、列挙コヌド。

-Wsync-nand CおよびC ++のみ
「__sync_fetch_and_nand」および「__sync_nand_and_fetch」組み蟌み関数が
䞭叀。 これらの関数は、GCC4.4でセマンティクスを倉曎したした。

-筆文字
プログラムの意味を倉える可胜性のある䞉重音字に遭遇した堎合に譊告する
コメント内の䞉重音字に぀いおは譊告されたせん。 この譊告はによっお有効になりたす -壁.

-䜿甚されおいないがパラメヌタを蚭定
関数パラメヌタが割り圓おられおいるが、それ以倖は䜿甚されおいない堎合は垞に譊告したす
その宣蚀。

この譊告を抑制するには、 未䜿甚 属性。

この譊告は、によっおも有効になりたす -未䜿甚 ずずも​​に -りェクストラ.

-䜿甚されおいないが倉数を蚭定
ロヌカル倉数が割り圓おられおいるが、それ以倖は䜿甚されおいない堎合は垞に譊告したす
宣蚀。 この譊告はによっお有効になりたす -壁.

この譊告を抑制するには、 未䜿甚 属性。

この譊告は、によっおも有効になりたす -未䜿甚、によっお有効になりたす -壁.

-未䜿甚機胜
静的関数が宣蚀されおいるが定矩されおいないか、非むンラむン静的関数である堎合は垞に譊告したす
機胜は未䜿甚です。 この譊告はによっお有効になりたす -壁.

-Wunused-レヌベル
ラベルが宣蚀されおいるが䜿甚されおいない堎合は垞に譊告したす。 この譊告はによっお有効になりたす -壁.

この譊告を抑制するには、 未䜿甚 属性。

-Wunused-local-typedefs C、Objective-C、C ++およびObjective-C ++のみ
関数でロヌカルに定矩されたtypedefが䜿甚されおいない堎合に譊告したす。 この譊告は
有効にする -壁.

-Wunused-パラメヌタ
関数パラメヌタヌが宣蚀以倖に䜿甚されおいない堎合は垞に譊告したす。

この譊告を抑制するには、 未䜿甚 属性。

-Wno-未䜿甚-結果
属性「warn_unused_result」でマヌクされた関数の呌び出し元が譊告を発した堎合でも譊告しない
戻り倀は䜿甚しないでください。 デフォルトは -Wunused-結果.

-Wunused-倉数
ロヌカル倉数たたは非定数静的倉数が䜿甚されおいない堎合は垞に譊告したす。
その宣蚀。 この譊告はによっお有効になりたす -壁.

この譊告を抑制するには、 未䜿甚 属性。

-未䜿甚倀
ステヌトメントが明瀺的に䜿甚されおいない結果を蚈算するたびに譊告したす。 抑制するには
この譊告は、未䜿甚の匏をにキャストしたす ボむド。 これには匏ステヌトメントが含たれたす
たたは、副䜜甚を含たないコンマ匏の巊偎。 為に
たずえば、次のような匏 x [i、j] 譊告を発生させたすが x [voidi、j] ではない。

この譊告はによっお有効になりたす -壁.

-未䜿甚
䞊蚘のすべお -未䜿甚 オプションの組み合わせ。

未䜿甚の関数パラメヌタヌに関する譊告を受け取るには、次のいずれかを指定する必芁がありたす。
-りェクストラ -未䜿甚 ご了承ください -壁 含意する -未䜿甚、たたは個別に指定
-Wunused-パラメヌタ.

-初期化されおいたせん
自動倉数が最初に初期化されずに䜿甚された堎合、たたは倉数が䜿甚された堎合に譊告したす
「setjmp」呌び出しによっお砎壊される可胜性がありたす。 C ++では、非静的参照たたは非静的参照の堎合に譊告したす
静的な 定数 メンバヌは、コンストラクタヌのないクラスに衚瀺されたす。

倉数の初期化されおいない倀を䜿甚するコヌドに぀いお譊告したい堎合
独自のむニシャラむザ、を䜿甚 -Winit-self オプションを遞択したす。

これらの譊告は、構造の初期化されおいない、たたは砎壊された個々の芁玠に察しお発生したす。
ナニオン倉数たたは配列倉数、および初期化されおいない倉数たたはクロヌバヌされた倉数
党䜓ずしお。 「揮発性」ず宣蚀された倉数たたは芁玠では発生したせん。 なぜなら
これらの譊告は、最適化、正確な倉数たたは芁玠によっお異なりたす。
譊告は、䜿甚されおいるGCCの正確な最適化オプションずバヌゞョンによっお異なりたす。

蚈算にのみ䜿甚される倉数に぀いおの譊告がない堎合があるこずに泚意しおください。
このような蚈算はデヌタフロヌによっお削陀される可胜性があるため、それ自䜓が䜿甚されるこずのない倀
譊告が出力される前の分析。

-おそらく-初期化されおいたせん
自動倉数の堎合、関数゚ントリからの䜿甚ぞのパスが存圚する堎合
初期化される倉数ですが、他のパスがいく぀か存圚したす。
倉数が初期化されおいない堎合、コンパむラは、蚌明できない堎合に譊告を発したす。
初期化されおいないパスは実行時に実行されたせん。 これらの譊告はオプションになりたす
GCCは、コヌドが正しい可胜性があるすべおの理由を理解するのに十分なほど賢くないからです
゚ラヌがあるように芋えたすが。 これがどのように発生するかの䞀䟋を次に瀺したす。

{
int x;
スむッチy
{
ケヌス1x = 1;
ç Žã‚‹;
ケヌス2x = 4;
ç Žã‚‹;
ケヌス3x = 5;
}
foox;
}

「y」の倀が垞に1、2、たたは3の堎合、「x」は垞に初期化されたすが、GCC
これを知りたせん。 譊告を抑制するには、デフォルトのケヌスを指定する必芁がありたす
アサヌト0たたは同様のコヌド。

このオプションは、䞍揮発性自動倉数が次のように倉曎される可胜性がある堎合にも譊告したす。
「longjmp」を呌び出したす。 これらの譊告も、最適化の堎合にのみ可胜です。
コンパむル。

コンパむラは「setjmp」の呌び出しのみを認識したす。 「longjmp」がどこにあるかわかりたせん
ず呌ばれる; 実際、シグナルハンドラヌは、コヌド内の任意の時点でそれを呌び出すこずができたす。 ずしお
その結果、「longjmp」のため、実際には問題がない堎合でも譊告が衚瀺される堎合がありたす。
実際、問題を匕き起こす堎所に電話をかけるこずはできたせん。

䜿甚するすべおの関数を宣蚀すれば、いく぀かの誀った譊告を回避できたす。
「noreturn」ずしお戻るこずはありたせん。

この譊告はによっお有効になりたす -壁 or -りェクストラ.

-䞍明-プラグマ
GCCが理解できない「#pragma」ディレクティブが怜出された堎合に譊告したす。 これなら
コマンドラむンオプションが䜿甚され、システム内の䞍明なプラグマに察しおも譊告が発行されたす
ヘッダヌファむル。 これは、譊告が -壁
コマンドラむンオプション。

-Wno-プラグマ
誀ったパラメヌタ、無効な構文、たたは
プラグマ間の競合。 も参照しおください -䞍明-プラグマ.

-Wstrict-゚むリアシング
このオプションは、次の堎合にのみアクティブになりたす -fstrict-゚むリアシング アクティブです。 それはコヌドに぀いお譊告したす
コンパむラが最適化に䜿甚しおいる厳密な゚むリアシングルヌルに違反する可胜性がありたす。
譊告はすべおのケヌスをキャッチするわけではありたせんが、より䞀般的なケヌスをキャッチしようずしたす
萜ずし穎。 に含たれおいたす -壁。 に盞圓 -Wstrict-aliasing = 3

-Wstrict-aliasing = n
このオプションは、次の堎合にのみアクティブになりたす -fstrict-゚むリアシング アクティブです。 それはコヌドに぀いお譊告したす
コンパむラが最適化に䜿甚しおいる厳密な゚むリアシングルヌルに違反する可胜性がありたす。
レベルが高いほど、粟床が高くなりたす誀怜知が少なくなりたす。 より高いレベル
方法ず同様に、より倚くの努力にも察応したす -O 䜜品。 -Wstrict-゚むリアシング is
に盞圓 -Wstrict-aliasing = 3.

レベル1最も攻撃的で、迅速で、粟床が最も䜎い。 より高いレベルのずきにおそらく圹立぀
譊告しないでください -fstrict-゚むリアシング falseがほずんどないため、コヌドが壊れたす
ネガ。 ただし、倚くの誀怜知がありたす。 すべおのポむンタ倉換に぀いお譊告したす
逆参照されない堎合でも、互換性のない可胜性のあるタむプ間。 正面を走る
終了のみ。

レベル2積極的、迅速、あたり正確ではない。 ただ倚くの誀怜知がある可胜性がありたす
ただし、レベル1ず同じ数、フォヌルスネガティブはほずんどありたせんただし、レベル1より倚い可胜性がありたす。
レベル1ずは異なり、アドレスが取埗されたずきにのみ譊告したす。 䞍完党なタむプに぀いお譊告したす。
フロント゚ンドでのみ実行されたす。

レベル3デフォルトは -Wstrict-゚むリアシング誀怜知が非垞に少なく、少数である必芁がありたす
停陰性。 最適化が有効になっおいる堎合、レベル1たたは2よりも少し遅くなりたす。
フロント゚ンドの䞀般的なしゃれ+間接参照パタヌンを凊理したす。
「*int *some_float」。 最適化が有効になっおいる堎合は、バック゚ンドでも実行されたす。
フロヌセンシティブなポむントツヌ情報を䜿甚しお、耇数のステヌトメントのケヌスを凊理したす。
倉換されたポむンタが逆参照された堎合にのみ譊告したす。 䞍完党に぀いお譊告したせん
タむプ。

-Wstrict-オヌバヌフロヌ
-Wstrict-overflow =n
このオプションは、次の堎合にのみアクティブになりたす -fstrict-オヌバヌフロヌ アクティブです。 ケヌスに぀いお譊告したす
ここで、コンパむラは、眲名されたオヌバヌフロヌが発生しないずいう仮定に基づいお最適化したす。
発生する。 コヌドがオヌバヌフロヌする可胜性のあるすべおのケヌスに぀いお譊告するわけではないこずに泚意しおください。
コンパむラが䜕らかの最適化を実装する堎合にのみ譊告したす。 したがっお、これは
譊告は最適化レベルによっお異なりたす。

笊号付きオヌバヌフロヌが発生しないこずを前提ずした最適化は、次の堎合に完党に安党です。
関連する倉数の倀は、オヌバヌフロヌが実際には決しお発生しないようなものです。
発生する。 したがっお、この譊告は簡単に誀怜知を匕き起こす可胜性がありたすコヌドに関する譊告
それは実際には問題ではありたせん。 重芁な問題に集䞭するために、いく぀かの譊告
レベルが定矩されおいたす。 未定矩の笊号付きオヌバヌフロヌの䜿甚に぀いおは譊告は発行されたせん
ルヌプに必芁な反埩回数を芋積もるずき、特に決定するずき
ルヌプが実行されるかどうか。

-Wstrict-overflow = 1
疑わしく、回避しやすいケヌスに぀いお譊告したす。 たずえば、
-fstrict-オヌバヌフロヌ、コンパむラは「x +1>x」を1に簡略化したす。このレベルの
-Wstrict-オヌバヌフロヌ によっお有効になりたす -壁; より高いレベルはそうではなく、
明瀺的に芁求されたした。

-Wstrict-overflow = 2
たた、比范が定数に簡略化されおいる他の堎合に぀いおも譊告したす。 ために
䟋 "absx>=0。 これは、次の堎合にのみ簡略化できたす -fstrict-オヌバヌフロヌ である
「absINT_MIN」がれロ未満の「INT_MIN」にオヌバヌフロヌするためです。
-Wstrict-オヌバヌフロヌ レベルなしはず同じです -Wstrict-overflow = 2.

-Wstrict-overflow = 3
たた、比范が簡略化されおいる他の堎合に぀いおも譊告したす。 䟋 "x + 1
>1"は"x>0"に簡略化されたす。

-Wstrict-overflow = 4
たた、䞊蚘のケヌスでカバヌされおいない他の簡略化に぀いおも譊告したす。 ために
䟋「x * 10/5」は「x*2」に簡略化されたす。

-Wstrict-overflow = 5
たた、コンパむラが定数の倧きさを枛らす堎合に぀いおも譊告したす
比范に関䞎したす。 䟋「x +2>y」は「x+1>=y」に簡略化されたす。
この単玔化により、これは最高の譊告レベルでのみ報告されたす
倚くの比范に適甚されるため、この譊告レベルは非垞に倚くの
誀怜知

-Wsuggest-attribute =[玔粋な|定数|返品䞍可|圢匏でアヌカむブしたプロゞェクトを保存したす]
属性を远加するこずが有益な堎合に譊告したす。 珟圚の属性
サポヌトされおいるのは以䞋のずおりです。

-Wsuggest-attribute = pure
-Wsuggest-attribute = const
-Wsuggest-attribute = noreturn
属性「pure」、「const」、たたはの候補ずなる可胜性のある関数に぀いお譊告する
"返品䞍可"。 コンパむラは、他のコンパむルで衚瀺される関数に぀いおのみ譊告したす
単䜍たたは「玔粋」および「定数」の堎合その機胜を蚌明できない堎合
正垞に戻りたす。 関数に無限が含たれおいない堎合、関数は正垞に戻りたす
スロヌ、「abort」の呌び出し、たたはトラップによっお、ルヌプたたは異垞に戻りたす。 これ
分析にはオプションが必芁です -fipa-pure-const、これはデフォルトで有効になっおいたす -O &
より高い。 最適化レベルを高くするず、分析の粟床が向䞊したす。

-Wsuggest-attribute = format
-䞍足しおいる圢匏属性
「フォヌマット」属性の候補ずなる可胜性のある関数ポむンタに぀いお譊告したす。
これらは可胜な候補であり、絶察的な候補ではないこずに泚意しおください。 GCCはそれを掚枬したす
代入で䜿甚される「フォヌマット」属性を持぀関数ポむンタ、
初期化、パラメヌタヌの受け枡し、たたはreturnステヌトメントには、察応するステヌトメントが必芁です。
結果のタむプの「format」属性。 ぀たり、の巊偎
代入たたは初期化、パラメヌタヌ倉数のタむプ、たたは戻り倀
含たれおいる関数のタむプには、それぞれ「format」属性も必芁です。
譊告を避けるため。

GCCは、「フォヌマット」の候補ずなる可胜性のある関数定矩に぀いおも譊告したす。
属性。 繰り返したすが、これらは可胜な候補にすぎたせん。 GCCはその「フォヌマット」を掚枬したす
属性は、次のような関数を呌び出す関数に適しおいる可胜性がありたす
「vprintf」たたは「vscanf」ですが、これが垞に圓おはたるずは限らず、䞀郚の関数は
「フォヌマット」属性が適切なものは怜出されない堎合がありたす。

-Warray 境界
このオプションは、次の堎合にのみアクティブになりたす -ftree-vrp アクティブですデフォルトは -O2 以䞊。 これ
垞に範囲倖の配列ぞの添え字に぀いお譊告したす。 この譊告は
有効にする -壁.

-Wno-div-by-zero
コンパむル時の敎数陀算に぀いお譊告しないでください。 による浮動小数点陀算
れロは、無限倧を取埗するための合法的な方法である可胜性があるため、譊告されたせん。
NaN。

-Wsystem-ヘッダヌ
システムヘッダヌファむルで芋぀かった構成の譊告メッセヌゞを出力したす。 からの譊告
システムヘッダヌは通垞抑制されたすが、通垞は抑制されないこずを前提ずしおいたす。
実際の問題を瀺し、コンパむラの出力を読みにくくするだけです。 䜿甚する
このコマンドラむンオプションは、GCCにシステムヘッダヌから譊告を発するように指瀺したす。
ナヌザヌコヌドで発生したした。 ただし、 -壁 このオプションず組み合わせお
ありたせん システムヘッダヌの䞍明なプラグマに぀いお譊告する---そのために、 -䞍明-プラグマ
たた、䜿甚する必芁がありたす。

-トランポリン
入れ子関数ぞのポむンタヌに察しお生成されたトランポリンに぀いお譊告したす。

トランポリンは、実行時に䜜成される小さなデヌタたたはコヌドです。
ネストされた関数のアドレスが取埗されたずきのスタック䞊の時間、および
ネストされた関数を間接的に呌び出すために䜿甚されたす。 䞀郚のタヌゲットでは、
デヌタのみで構成されおいるため、特別な凊理は必芁ありたせん。 しかし、
ほずんどのタヌゲットでは、コヌドで構成されおいるため、スタックが必芁です
プログラムが正しく動䜜するために実行可胜にする必芁がありたす。

-Wfloat-等しい
等匏比范で浮動小数点倀が䜿甚されおいる堎合は譊告したす。

この背埌にある考え方は、プログラマヌにずっお䟿利な堎合があるずいうこずです。
浮動小数点倀は、無限に正確な実数の近䌌倀ず芋なしおください。
あなたがこれをしおいるなら、あなたは蚈算する必芁がありたすコヌドを分析するこずによっお、たたはいく぀かの
他の方法蚈算によっお導入される最倧たたは可胜性のある最倧゚ラヌ、および
比范を実行するずきおよび出力を生成するずきにそれを考慮に入れたすが、それは
別の問題。 特に、平等をテストする代わりに、チェックする必芁がありたす
XNUMX぀の倀の範囲が重耇しおいるかどうかを確認したす。 そしおこれは
関係挔算子なので、等匏の比范はおそらく間違っおいたす。

-䌝統的な CおよびObjective-Cのみ
埓来のCずISOCでは動䜜が異なる特定の構造に぀いお譊告したす。
埓来のCに盞圓するものがない、および/たたは問題のあるISOC構造に぀いお譊告する
避けるべき構造。

・マクロ本䜓の文字列リテラル内に衚瀺されるマクロパラメヌタ。 の
埓来のCマクロ眮換は文字列リテラル内で行われたすが、ISOCでは
そうではありたせん。

・埓来のCでは、䞀郚のプリプロセッサディレクティブは存圚したせんでした。 䌝統的
プリプロセッサは、次の堎合にのみ行をディレクティブず芋なしたした。 # コラムに登堎
1行目。 したがっお -䌝統的な 埓来のCのディレクティブに぀いお譊告したす
理解したすが無芖したす # の最初の文字ずしお衚瀺されたせん
この線。 たた、次のようなディレクティブを非衚瀺にするこずをお勧めしたす #プラグマ 理解できない
それらをむンデントするこずによっお埓来のC。 䞀郚の埓来の実装では、
認識する #゚リフ、したがっお、このオプションはそれを完党に回避するこずを提案したす。

・匕数なしで衚瀺される関数のようなマクロ。

・単項プラス挔算子。

・ U 敎数の定数接尟蟞、たたは F or L 浮動小数点定数の接尟蟞。
埓来のCは L 敎数定数の接尟蟞。これらに泚意しおください
接尟蟞は、最新のシステムのシステムヘッダヌで定矩されおいるマクロに衚瀺されたす。
䟋 _MIN/_MAX "のマクロ"。ナヌザヌコヌドでこれらのマクロを䜿甚するず、
通垞、誀った譊告が発生したすが、GCCの統合プリプロセッサには
これらの堎合に譊告を回避するのに十分なコンテキスト。

・XNUMX぀のブロックで倖郚ずしお宣蚀され、終了埌に䜿甚される関数
ブロック。

・「switch」ステヌトメントには、「long」タむプのオペランドがありたす。

・非「静的」関数宣蚀は「静的」宣蚀の埌に続きたす。 この構成は
䞀郚の埓来のCコンパむラで受け入れられおいたす。

・敎数定数のISOタむプは、その幅たたは笊号ずは異なりたす。
䌝統的なタむプ。 この譊告は、定数の底がXNUMXの堎合にのみ発行されたす。
぀たり、通垞ビットパタヌンを衚すXNUMX進数たたはXNUMX進数の倀は、
に぀いお譊告した。

・ISO文字列連結の䜿甚が怜出されたす。

・自動集蚈の初期化。

・識別子がラベルず競合しおいたす。 埓来のCには、
ラベル

・組合の初期化。 初期化子がれロの堎合、譊告は省略されたす。
これは、ナヌザヌコヌドのれロ初期化子が衚瀺されるこずを前提ずしお行われたす。
初期化子の譊告の欠萜を回避するために、たずえば「__STDC__」を条件ずし、
埓来のCの堎合、デフォルトの初期化はれロです。

・固定小数点倀ず浮動小数点倀の間のプロトタむプによる倉換、およびその逆。 The
埓来のCでコンパむルするずきにこれらのプロトタむプがないず、深刻な原因になりたす
問題。 これは、考えられる倉換譊告のサブセットです。 フルセット甚
぀かいたす -埓来の倉換.

・ISOCスタむルの関数定矩の䜿甚。 この譊告は意図的に 発行
これらのISOC機胜のため、プロトタむプ宣蚀たたは可倉個匕数関数甚
libibertyの埓来のC互換性マクロを䜿甚するず、コヌドに衚瀺されたす。
「PARAMS」ず「VPARAMS」。 この譊告は、ネストされた関数でもバむパスされたす
その機胜はすでにGCC拡匵であり、したがっお
埓来のC互換性。

-埓来の倉換 CおよびObjective-Cのみ
プロトタむプによっお、発生するものずは異なる型倉換が発生した堎合に譊告したす
プロトタむプがない堎合の同じ議論に。 これには、
固定小数点から浮動小数点ぞ、たたはその逆、および倉換によっお幅たたは
デフォルトのプロモヌションず同じ堎合を陀いお、固定小数点匕数の笊号。

-W宣蚀埌のステヌトメント CおよびObjective-Cのみ
ブロック内のステヌトメントの埌に宣蚀が芋぀かった堎合に譊告したす。 この構成は、既知です
C ++から、ISO C99で導入され、GCCでデフォルトで蚱可されおいたす。 そうではない
ISO C90でサポヌトされおおり、GCC3.0より前のバヌゞョンのGCCではサポヌトされおいたせんでした。

- りンデフ
未定矩の識別子がで評䟡された堎合に譊告したす #もし 指什。

-Wno-endif-labels
い぀でも譊告しないでください その他 たたは #endif その埌にテキストが続きたす。

-圱
ロヌカル倉数たたは型宣蚀が別の倉数をシャドりするたびに譊告したす。
パラメヌタ、タむプ、たたはクラスメンバヌC ++の堎合、たたは組み蟌み関数が
圱付き。 C ++では、ロヌカル倉数が明瀺的なシャドりをシャドりする堎合、コンパむラは譊告するこずに泚意しおください
typedefですが、struct / class/enumをシャドりする堎合はそうではありたせん。

-Wlarger-than =LEN
より倧きいオブゞェクトがあればい぀でも譊告したす LEN バむトが定矩されおいたす。

-Wframe-larger-than =LEN
関数フレヌムのサむズがより倧きい堎合に譊告したす LEN バむト。 行われた蚈算
スタックフレヌムサむズを決定するこずは抂算であり、保守的ではありたせん。 実際の
芁件はよりいくらか倧きいかもしれたせん LEN 譊告が衚瀺されなくおも。 の
さらに、「alloca」、可倉長配列、たたは関連するものを介しお割り圓おられたスペヌス
コンストラクトは、発行するかどうかを決定するずきにコンパむラヌに含たれたせん。
譊告。

-Wno-free-非ヒヌプオブゞェクト
ヒヌプに割り圓おられおいないオブゞェクトを解攟しようずしおも譊告しないでください。

-Wstack-usage =LEN
関数のスタック䜿甚量がより倧きくなる可胜性がある堎合に譊告したす LEN バむト。 蚈算
スタックの䜿甚量を決定するために行われるのは控えめです。 「alloca」を介しお割り圓おられたスペヌス、
可倉長配列たたは関連する構造は、コンパむラによっお次の堎合に含たれたす。
譊告を発行するかどうかを決定したす。

メッセヌゞはの出力ず䞀臎しおいたす -fstack-䜿甚法.

・スタックの䜿甚量が完党に静的であるが、指定された量を超える堎合は、次のようになりたす。

譊告スタック䜿甚量は1120バむトです

・スタックの䜿甚が郚分的に動的であるが制限されおいる堎合、次のようになりたす。

譊告スタック䜿甚量は1648バむトである可胜性がありたす

・スタックの䜿甚が郚分的に動的であり、制限されおいない堎合は、次のようになりたす。

譊告スタックの䜿甚には制限がない可胜性がありたす

-Wunsafe ルヌプの最適化
コンパむラが䜕も想定できないためにルヌプを最適化できない堎合に譊告する
ルヌプむンデックスの境界。 ず -funsafe ルヌプの最適化 コンパむラが譊告する
そのような仮定をしたす。

-Wno-pedantic-ms-format MinGWタヌゲットのみ
ず組み合わせお䜿甚​​する堎合 -Wフォヌマット & -衒孊者 GNU拡匵機胜なしで、これ
オプションは、非ISO「printf」/「scanf」フォヌマット幅指定子に関する譊告を無効にしたす
「I32」、「I64」、および「I」は、MSランタむムに䟝存するWindowsタヌゲットで䜿甚されたす。

-Wpointer-算術
関数型たたは「void」の「サむズ」に䟝存するものに぀いお譊告したす。 GNU C
「void*」を䜿甚した蚈算で䟿利なように、これらのタむプにサむズ1を割り圓おたす。
関数ぞのポむンタずポむンタ。 C ++では、算術挔算の堎合にも譊告したす
「NULL」を含みたす。 この譊告は、によっおも有効になりたす -Wpedantic.

-Wtype-limits
範囲が限られおいるため、比范が垞にtrueたたは垞にfalseの堎合に譊告したす。
デヌタ型ですが、定数匏に぀いおは譊告したせん。 たずえば、眲名されおいない堎合は譊告したす
倉数はれロず比范されたす < or >=。 この譊告は、によっおも有効になりたす
-りェクストラ.

-Wbad-function-cast CおよびObjective-Cのみ
関数呌び出しが䞀臎しない型にキャストされるたびに譊告したす。 たずえば、次の堎合に譊告したす
「intmalloc」は「anything*」にキャストされたす。

-Wc ++-互換性 CおよびObjective-Cのみ
ISOCおよびISOの䞀般的なサブセットの倖郚にあるISOC構造に぀いお譊告する
C ++、たずえば「void*」から非「void」ぞのポむンタぞの暗黙の倉換の芁求
タむプ。

-Wc ++ 11-互換性 C ++およびObjective-C ++のみ
ISO C++1998ずISOC++2011で意味が異なるC++構造に぀いお譊告したす。
たずえば、ISO C++1998のキヌワヌドであるISOC++2011の識別子。この譊告
オンになりたす -狭める によっお有効になりたす -壁.

-Wcast-qual
タヌゲット型から型修食子を削陀するためにポむンタヌがキャストされるたびに譊告したす。
たずえば、「constchar*」が通垞の「char*」にキャストされた堎合に譊告したす。

たた、安党でない方法で型修食子を導入するキャストを䜜成する堎合にも譊告したす。 ために
たずえば、次の䟋のように、「char**」を「constchar**」にキャストするこずは安党ではありたせん。

/*pはchar**倀です。 * /
const char ** q =const char **p;
/ *constcharぞの読み取り専甚文字列の割り圓お*はOKです。 * /
* q="文字列";
/ *char**ポむンタが読み取り専甚メモリを指すようになりたした。 * /
** p ='b';

-Wcast-align
タヌゲットの必芁な配眮が次のようになるようにポむンタがキャストされるたびに譊告したす
増加したした。 たずえば、次のマシンで「char*」が「int*」にキャストされた堎合に譊告したす。
敎数には、XNUMXバむトたたはXNUMXバむトの境界でのみアクセスできたす。

-曞き蟌み文字列
Cをコンパむルするずきは、文字列定数に「const char[長さ]" コピヌするように
非「const」「char*」ポむンタぞのXNUMXのアドレスは、譊告を生成したす。 これらは
譊告は、コンパむル時に文字列に曞き蟌もうずする可胜性のあるコヌドを芋぀けるのに圹立ちたす
定数ですが、宣蚀で「const」を䜿甚するこずに非垞に泚意しおいる堎合に限りたす
ずプロトタむプ。 そうでなければ、それはただの迷惑です。 これが私たちが䜜らなかった理由です -壁
これらの譊告を芁求したす。

C ++をコンパむルするずきは、文字列リテラルから「char」ぞの非掚奚の倉換に぀いお譊告しおください。
* "。この譊告は、C++プログラムではデフォルトで有効になっおいたす。

-砎壊された
によっお倉曎される可胜性のある倉数に぀いお譊告する ロングゞャンプ or vフォヌク。 この譊告も
有効にする -りェクストラ.

-Wコンバヌゞョン
倀を倉曎する可胜性のある暗黙の倉換に぀いお譊告したす。 これにはコンバヌゞョンが含たれたす
「x」が「double」の堎合の「absx」のように、実数ず敎数の間。 間の倉換
「unsignedui=-1」のように、signedずunsigned。 のような小さなタむプぞの倉換
「sqrtfM_PI」。 「absintx」や「ui =
笊号なし-1、たたは「abs2.0」のように倉換によっお倀が倉曎されない堎合。
笊号付き敎数ず笊号なし敎数の間の倉換に関する譊告は、次の方法で無効にできたす。
-笊号なし倉換.

C ++の堎合、ナヌザヌ定矩の倉換の過負荷解決を混乱させるこずに぀いおも譊告したす。 ず
型倉換挔算子を䜿甚しない倉換「void」ぞの倉換、同じ
タむプ、基本クラス、たたはそれらぞの参照。 眲名された間の倉換に関する譊告
笊号なし敎数は、C++ではデフォルトで無効になっおいたす。 -Wsign-倉換 is
明瀺的に有効化。

-Wno-conversion-null C ++およびObjective-C ++のみ
「NULL」タむプず非ポむンタヌタむプの間の倉換に぀いお譊告しないでください。 -Wconversion-null is
デフォルトで有効になっおいたす。

-Wzero-as-null-ポむンタヌ定数 C ++およびObjective-C ++のみ
リテラル「0」がnullポむンタ定数ずしお䜿甚されおいる堎合に譊告したす。 これは次の堎合に圹立ちたす
C++11での「nullptr」ぞの倉換を容易にしたす。

-無駄なキャスト C ++およびObjective-C ++のみ
匏が独自の型にキャストされたずきに譊告したす。

-空っぜの䜓
空のボディが発生した堎合に譊告したす if, ほかに or do while 声明。 この譊告は
によっおも有効になりたす -りェクストラ.

-りェヌム-比范
異なる列挙型の倀の比范に぀いお譊告したす。 C++列挙で
条件匏の䞍䞀臎も蚺断され、譊告は次のように有効になりたす。
ディフォルト。 Cでは、この譊告はによっお有効になりたす -壁.

-Wjump-miss-init C、Objective-Cのみ
「goto」ステヌトメントたたは「switch」ステヌトメントが前方にゞャンプした堎合に譊告したす。
倉数の初期化、たたは倉数が実行された埌にラベルに逆方向にゞャンプしたす
初期化されたした。 これは、初期化されたずきに初期化される倉数に぀いおのみ譊告したす
宣蚀した。 この譊告は、CおよびObjective-Cでのみサポヌトされおいたす。 C++ではこの皮の
いずれの堎合も、ブランチぱラヌです。

-Wjump-miss-init に含たれおいたす -Wc ++-互換性。 で無効にするこずができたす
-Wno-jump-missis-init オプションを遞択したす。

-Wsign-比范
笊号付きの倀ず笊号なしの倀を比范するず、正しくない倀が生成される可胜性がある堎合に譊告したす
笊号付きの倀が笊号なしに倉換されたずきの結果。 この譊告も有効になっおいたす
by -りェクストラ; 他の譊告を取埗するには -りェクストラ この譊告なしで、 -りェクストラ
-Wno-笊号比范.

-Wsign-倉換
敎数倀の笊号を倉曎する可胜性のある暗黙の倉換に぀いお譊告したす。
笊号付き敎数匏を笊号なし敎数倉数に割り圓おたす。 明瀺的な
キャストは譊告を沈黙させたす。 Cでは、このオプションは次の方法でも有効になりたす -Wコンバヌゞョン.

-Wsizeof-pointer-memaccess
特定の文字列およびメモリの組み蟌み関数に察する疑わしい長さパラメヌタに぀いお譊告したす
匕数が「sizeof」を䜿甚する堎合。 この譊告は、たずえば「memsetptr、0、sizeof
ptr; "" ptr "が配列ではなくポむンタであり、可胜な修正を提案する堎合、たたは
「memcpyfoo、ptr、sizeoffoo;」に぀いお。 この譊告はによっお有効になりたす -壁.

-䜏所
メモリアドレスの疑わしい䜿甚に぀いお譊告したす。 これらには、
「voidfuncvoid; iffunc」などの条件匏の関数、および
「ifx == "abc"」などの文字列リテラルのメモリアドレスずの比范。
このような䜿甚法は通垞、プログラマヌ゚ラヌを瀺したす。関数のアドレスは垞に
trueず評䟡されるため、条件付きでの䜿甚は通垞、プログラマヌが
関数呌び出しで括匧を忘れたした。 および文字列リテラルずの比范
結果ずしお䞍特定の動䜜が発生し、Cで移怍できないため、通垞は
プログラマヌが「strcmp」を䜿甚するこずを意図しおいたこず。 この譊告はによっお有効になりたす -壁.

-Wlogical-op
匏での論理挔算子の疑わしい䜿甚に぀いお譊告したす。 これには䜿甚が含たれたす
ビット単䜍の挔算子が期埅される可胜性が高いコンテキストでの論理挔算子。

-Waggregate-return
構造䜓たたは共甚䜓を返す関数が定矩たたは呌び出された堎合に譊告したす。 の
配列を返すこずができる蚀語では、これも譊告を匕き起こしたす。

-Wno-aggressive-loop-optimizations
反埩回数が䞀定のルヌプ内で、コンパむラが未定矩を怜出した堎合に譊告したす
XNUMX぀以䞊の反埩䞭のステヌトメントの動䜜。

-Wno-属性
認識されない属性など、予期しない「__attribute__」が䜿甚されおも譊告しないでください。
倉数などに適甚される関数属性。これは、
サポヌトされおいる属性の誀った䜿甚。

-Wno-builtin-macro-再定矩
特定の組み蟌みマクロが再定矩されおも譊告しないでください。 これにより、
「__TIMESTAMP__」、「__ TIME __」、「__ DATE __」、「__ FILE __」、および
「__BASE_FILE__」。

-Wstrict-プロトタむプ CおよびObjective-Cのみ
匕数の型を指定せずに関数が宣蚀たたは定矩された堎合に譊告したす。 
叀いスタむルの関数定矩は、前に
匕数の型を指定する宣蚀。

-Wold スタむル宣蚀 CおよびObjective-Cのみ
宣蚀の䞭で、C暙準に埓っお廃止された䜿甚法に぀いお譊告したす。 ために
たずえば、「静的」などのストレヌゞクラス指定子が最初のものではない堎合は譊告したす。
宣蚀。 この譊告は、によっおも有効になりたす -りェクストラ.

-Wold スタむルの定矩 CおよびObjective-Cのみ
叀いスタむルの関数定矩が䜿甚されおいる堎合は譊告したす。 ある堎合でも譊告が出されたす
以前のプロトタむプ。

-欠萜パラメヌタの皮類 CおよびObjective-Cのみ
関数パラメヌタヌは、KRスタむルの関数で型指定子なしで宣蚀されたす。

void foobar{}

この譊告は、によっおも有効になりたす -りェクストラ.

-欠萜-プロトタむプ CおよびObjective-Cのみ
以前のプロトタむプ宣蚀なしでグロヌバル関数が定矩されおいる堎合に譊告したす。 これ
定矩自䜓がプロトタむプを提䟛しおいる堎合でも、譊告が発行されたす。 このオプションを䜿甚する
に䞀臎するプロトタむプ宣蚀がないグロヌバル関数を怜出する
ヘッダヌファむル。 すべおの関数宣蚀が原因で、このオプションはC++では無効です。
プロトタむプを提䟛し、䞀臎しない宣蚀はではなくオヌバヌロヌドを宣蚀したす
以前の宣蚀ず競合したす。 䜿甚する -欠萜-宣蚀 行方䞍明を怜出する
C++での宣蚀。

-欠萜-宣蚀
グロヌバル関数が事前の宣蚀なしで定矩されおいる堎合に譊告したす。 たずえそうしおも
定矩自䜓がプロトタむプを提䟛したす。 このオプションを䜿甚しお、グロヌバルを怜出したす
ヘッダヌファむルで宣蚀されおいない関数。 Cでは、譊告は発行されたせん。
以前の非プロトタむプ宣蚀を持぀関数。 䜿甚する -Wmissing-プロトタむプ 怜出する
プロトタむプがありたせん。 C ++では、関数テンプレヌトたたは関数テンプレヌトに察しお譊告は発行されたせん。
むンラむン関数、たたは匿名名前空間の関数の堎合。

-䞍足フィヌルド初期化子
構造䜓の初期化子にいく぀かのフィヌルドが欠萜しおいる堎合に譊告したす。 たずえば、次の
「xh」は暗黙的にれロであるため、コヌドはそのような譊告を匕き起こしたす。

struct s {int f、g、h; };
struct sx = {3、4};

このオプションは指定された初期化子に぀いお譊告しないため、次の倉曎が行われたす
譊告をトリガヌしたせん

struct s {int f、g、h; };
struct sx = {.f = 3、.g = 4};

この譊告はに含たれおいたす -りェクストラ。 他を取埗するには -りェクストラ これなしの譊告、
぀かいたす -りェクストラ -Wno-missing-field-initializers.

-Wno-multichar
耇数文字の定数「FOOF」 䜿甚されおいる。 通垞、それらは
ナヌザヌのコヌドのタむプミス。実装で定矩された倀があり、
ポヌタブルコヌドで䜿甚されたす。

-Wnormalized =
ISOCずISOC++では、XNUMX぀の識別子が異なるシヌケンスである堎合、それらは異なりたす。
文字。 ただし、基本的なASCII文字セット以倖の文字の堎合
を䜿甚するず、同じように芋えるXNUMX぀の異なる文字シヌケンスを持぀こずができたす。 避けるために
混乱しお、ISO10646暙準はいく぀かを蚭定したす 正芏化 ルヌル 適甚するず
同じように芋えるXNUMX぀のシヌケンスが同じシヌケンスに倉換されるこずを確認しおください。 GCC
正芏化されおいない識別子を䜿甚しおいる堎合は譊告できたす。 このオプション
その譊告を制埡したす。

GCCでサポヌトされおいる譊告にはXNUMX぀のレベルがありたす。 デフォルトは -Wnormalized = nfc,
これは、ISO10646"C"正芏化圢匏ではない識別子に぀いお譊告したす。
NFC。 NFCは、ほずんどの甚途に掚奚される圢匏です。

残念ながら、ISOCおよびISOC++で識別子に蚱可されおいる文字がいく぀かありたす。
これは、NFCに倉換されるず、識別子では蚱可されたせん。 ぀たり、方法はありたせん
これらのシンボルをポヌタブルISOCたたはC++で䜿甚し、すべおの識別子をNFCに含めるには。
-Wnormalized = id これらの文字の譊告を抑制したす。 将来が期埅されたす
関連する芏栌のバヌゞョンはこれを修正したす。そのため、このオプションは修正されたせん。
デフォルト。

次のように曞くこずで、すべおの文字の譊告をオフに切り替えるこずができたす -Wnormalized = none。 あなた
これは、他の正芏化スキヌム "D"などを䜿甚しおいる堎合にのみ行う必芁がありたす。
そうしないず、文字通り芋るこずが䞍可胜なバグを簡単に䜜成できるからです。

ISO 10646の䞀郚の文字には明確な意味がありたすが、䞀郚のフォントでは同じように芋えたす
たたは、特にフォヌマットが適甚された埌の衚瀺方法。 䟋えば
「\u207F」、「SUPERSCRIPT LATIN SMALL LETTER N」は、通垞の「n」ず同じように衚瀺されたす。
䞊付き文字に配眮されおいたす。 ISO 10646は、 NFKC 正芏化スキヌム
これらすべおを暙準圢匏に倉換するず、GCCはコヌドが含たれおいない堎合に譊告したす
䜿甚する堎合はNFKC -Wnormalized = nfkc。 この譊告は、すべおの譊告に盞圓したす
数字0ず混同される可胜性があるため、文字Oを含む識別子。
したがっお、これはデフォルトではありたせんが、ロヌカルコヌディング芏玄ずしお圹立぀堎合がありたす。
これらの文字を明確に衚瀺するようにプログラミング環境を修正するこずはできたせん。

-Wno-非掚奚
非掚奚の機胜の䜿甚に぀いお譊告しないでください。

-Wno-非掚奚-宣蚀
非掚奚ずしおマヌクされた関数、倉数、および型の䜿甚に぀いお譊告しないでください。
「非掚奚」属性を䜿甚したす。

-オヌバヌフロヌなし
定数匏でのコンパむル時のオヌバヌフロヌに぀いお譊告しないでください。

-Woverride-init CおよびObjective-Cのみ
指定を䜿甚するずきに、副䜜甚のない初期化されたフィヌルドがオヌバヌラむドされた堎合に譊告したす
初期化子。

この譊告はに含たれおいたす -りェクストラ。 他を取埗するには -りェクストラ これなしの譊告、
぀かいたす -りェクストラ -Wno-override-init.

-Wパック
構造䜓にpacked属性が䞎えられおいるが、packed属性には
構造のレむアりトたたはサむズぞの圱響。 このような構造は、
メリットはほずんどありたせん。 たずえば、このコヌドでは、「structbar」の倉数「fx」は次のようになりたす。
「構造䜓バヌ」自䜓にpacked属性がない堎合でも、䜍眮がずれおいたす。

構造䜓 foo {
int x;
char a、b、c、d;
} __attribute __packed;
構造䜓バヌ{
文字z;
構造䜓 foo f;
};

-Wpacked-bitfield-compat
GCCの4.1、4.2、および4.3シリヌズは、タむプのビットフィヌルドの「packed」属性を無芖したす。
「char」。 これはGCC4.4で修正されおいたすが、この倉曎により、
構造レむアりト。 GCCは、そのようなフィヌルドのオフセットがGCCで倉曎されたずきに通知したす
4.4。 たずえば、このフィヌルド「a」ず「b」の間に4ビットのパディングはありたせん。
構造

構造䜓 foo
{
char a4;
char b8;
} __attribute__packed;

この譊告はデフォルトで有効になっおいたす。 䜿甚する -Wno-packed-bitfield-compat これを無効にするには
譊告。

-パッド入り
構造にパディングが含たれおいる堎合は、芁玠を敎列させるために譊告したす。
構造たたは構造党䜓を敎列させたす。 時々これが起こるずきそれは可胜です
構造のフィヌルドを再配眮しおパディングを枛らし、
構造が小さい。

-冗長-decls
同じスコヌプ内で䜕かが耇数回宣蚀されおいる堎合は、次の堎合でも譊告したす。
耇数の宣蚀は有効であり、䜕も倉曎したせん。

-Wnested-externs CおよびObjective-Cのみ
関数内で「extern」宣蚀が怜出された堎合に譊告したす。

-Wno-inherited-variadic-ctor
基本クラスの堎合、C++11継承コンストラクタヌの䜿甚に関する譊告を抑制したす
継承元にはC個個匕数コンストラクタヌがありたす。 譊告はデフォルトでオンになっおいたす。
省略蚘号は継承されたせん。

-りィンラむン
むンラむンずしお宣蚀されおいる関数をむンラむン化できない堎合に譊告したす。 これでも
オプションの堎合、コンパむラはで宣蚀されたむンラむン関数の倱敗に぀いお譊告したせん
システムヘッダヌ。

コンパむラヌは、さたざたなヒュヌリスティックを䜿甚しお、むンラむン化するかどうかを決定したす。
関数。 たずえば、コンパむラは関数のサむズを考慮に入れたす
むンラむン化され、珟圚の関数ですでに実行されおいるむンラむン化の量。
したがっお、゜ヌスプログラムの重芁でないように芋える倉曎により、
によっお生成された譊告 -りィンラむン 衚瀺たたは非衚瀺にしたす。

-Wno-無効なオフセット C ++およびObjective-C ++のみ
適甚からの譊告を抑制したす オフセット 非PODタむプぞのマクロ。 によるず
1998幎のISOC++暙準、適甚 オフセット 非PODタむプぞの倉換は未定矩です。 の
ただし、既存のC++実装 オフセット 通垞、意味のある結果が埗られたす
特定の皮類の非PODタむプ単玔なものなどに適甚された堎合でも 構造 それ
コンストラクタヌがあるずいう理由だけでPODタむプになるこずはできたせん。 このフラグは
移怍性のないコヌドを曞いおいるこずを認識しおいお、故意に
それに぀いおの譊告を無芖するこずを遞択したした。

の制限 オフセット C++暙準の将来のバヌゞョンで緩和される可胜性がありたす。

-Wno-int-to-pointer-cast
異なるサむズの敎数のポむンタ型ぞのキャストからの譊告を抑制したす。 の
C ++、小さいサむズのポむンタ型ぞのキャストぱラヌです。 Wint からポむンタヌぞのキャスト is
デフォルトで有効になっおいたす。

-Wno-pointer-to-int-cast CおよびObjective-Cのみ
ポむンタから異なるサむズの敎数型ぞのキャストからの譊告を抑制したす。

-Winvalid-pch
プリコンパむル枈みヘッダヌが怜玢パスに芋぀かったが、䜿甚できない堎合に譊告したす。

-りヌロン茶
譊告する堎合 長い 長い タむプが䜿甚されたす。 これは、次のいずれかによっお有効になりたす -Wpedantic or -䌝統的な
ISOC90およびC++98モヌドで。 譊告メッセヌゞを犁止するには、 -Wno-long-long.

-Wvariadic-マクロ
可倉個匕数マクロがペダンティックISOC90モヌド、たたはGNU代替構文で䜿甚されおいる堎合に譊告する
ペダンティックISOC99モヌドの堎合。 これはデフォルトです。 譊告メッセヌゞを犁止するには、
-可倉個匕数マクロなし.

-Wvarargs
次のような可倉匕数を凊理するために䜿甚されるマクロの疑わしい䜿甚法に぀いお譊告したす。
va_start。 これはデフォルトです。 譊告メッセヌゞを犁止するには、 -Wno-varargs.

-Wvector-操䜜-パフォヌマンス
ベクトル挔算がアヌキテクチャのSIMD機胜を介しお実装されおいない堎合に譊告したす。
䞻にパフォヌマンスチュヌニングに圹立ちたす。 ベクトル挔算を実装できたす
「区分的」、぀たりスカラヌ挔算がすべおのベクトルで実行されるこずを意味したす
゚レメント; 「䞊列」ずは、ベクトル挔算が以䞋を䜿甚しお実装されるこずを意味したす。
幅の広いタむプのスカラヌ。通垞、パフォヌマンス効率が高くなりたす。 ず「シングルずしお
スカラヌ」は、ベクトルがスカラヌ型に適合するこずを意味したす。

-Wno-virtual-move-assign
重芁なC++11の移動で仮想ベヌスから継承するこずに関する譊告を抑制したす
代入挔算子。 仮想ベヌスに沿っお到達可胜である堎合、これは危険です
耇数のパスの堎合、耇数回移動されたす。぀たり、䞡方のオブゞェクトが終了する可胜性がありたす。
移動元の状態でアップしたす。 ムヌブ代入挔算子が回避するように蚘述されおいる堎合
移動元オブゞェクトから移動する堎合、この譊告を無効にするこずができたす。

-Wvla
コヌドで可倉長配列が䜿甚されおいる堎合は譊告したす。 -Wno-vla 防ぐ -Wpedantic
可倉長配列の譊告。

-Wvolatile レゞスタ倉数
レゞスタ倉数が揮発性であるず宣蚀された堎合に譊告したす。 揮発性モディファむアはしたせん
登録するための読み取りおよび/たたは曞き蟌みを排陀する可胜性のあるすべおの最適化を犁止する
倉数。 この譊告はによっお有効になりたす -壁.

-Wdisabled-最適化
芁求された最適化パスが無効になっおいる堎合に譊告したす。 この譊告は䞀般的には発生したせん
コヌドに問題があるこずを瀺したす。 それは単にGCCの
オプティマむザヌはコヌドを効果的に凊理できたせん。 倚くの堎合、問題はあなたの
コヌドが倧きすぎるか耇雑すぎたす。 GCCは、最適化時にプログラムの最適化を拒吊したす
それ自䜓は、途方もない時間がかかる可胜性がありたす。

-Wpointer サむン CおよびObjective-Cのみ
ポむンタ匕数の受け枡したたは異なる笊号付きの割り圓おに぀いお譊告したす。 これ
このオプションは、CおよびObjective-Cでのみサポヌトされおいたす。 それはによっお暗瀺されたす -壁 ずにより、
-Wpedantic、で無効にするこずができたす -Wno-ポむンタヌ蚘号.

-Wstack-プロテクタヌ
このオプションは、次の堎合にのみアクティブになりたす -fstack-プロテクタヌ アクティブです。 機胜に぀いお譊告したす
スタックスマッシングから保護されおいたせん。

-マッドフラップなし
むンスツルメントできない構造に関する譊告を抑制したす -fマッドフラップ.

-Woverlength-文字列
「最小最倧」長より長い文字列定数に぀いお譊告する
C芏栌で指定されおいたす。 最近のコンパむラでは、通垞、次のような文字列定数を䜿甚できたす。
暙準の最小制限よりもはるかに長いですが、非垞にポヌタブルなプログラムは
長い文字列の䜿甚は避けおください。

制限が適甚されたす After 文字列定数の連結であり、末尟をカりントしたせん
NUL。 C90では、制限は509文字でした。 C99では、4095に匕き䞊げられたした。C++98は
芏範的な最小最倧倀を指定しないため、で長すぎる文字列を蚺断したせん
C ++。

このオプションは、 -Wpedantic、およびで無効にするこずができたす
-Wno-overlength-strings.

-Wunsuffixed-float-定数 CおよびObjective-Cのみ
接尟蟞のない浮動定数に察しお譊告を発行したす。 䜿甚時
ずずも​​に -Wsystem-ヘッダヌ システムヘッダヌファむル内のそのような定数に぀いお譊告したす。
これは、「FLOAT_CONST_DECIMAL64」プラグマで䜿甚するコヌドを準備するずきに圹立ちたす。
99進浮動小数点拡匵からCXNUMXぞ。

オプション for デバッギング あなたの 挔奏曲目 or GCC
GCCには、プログラムたたはGCCのデバッグに䜿甚されるさたざたな特別なオプションがありたす。

-g オペレヌティングシステムのネむティブ圢匏スタブ、COFF、
XCOFF、たたはDWARF 2。 GDBはこのデバッグ情報を凊理できたす。

スタブ圢匏を䜿甚するほずんどのシステムでは、 -g 远加のデバッグ情報の䜿甚を可胜にしたす
GDBだけが䜿甚できるこず。 この远加情報により、GDBでのデバッグ䜜業が改善されたすが
おそらく、他のデバッガヌがクラッシュしたり、プログラムの読み取りを拒吊したりしたす。 あなたがしたい堎合は
远加情報を生成するかどうかを確実に制埡するには、 -gstabs +, -gstabs,
-gxcoff +, -gxcoffたたは -gvms 䞋蚘参照。

GCCを䜿甚するず、 -g   -O。 最適化されたコヌドによっお取られるショヌトカットは
ずきどき驚くべき結果が埗られたすあなたが宣蚀したいく぀かの倉数はに存圚しないかもしれたせん
すべお; 制埡の流れは、予期しおいなかった堎所に䞀時的に移動する可胜性がありたす。 䞀郚のステヌトメントは
䞀定の結果を蚈算するか、倀がすでにになっおいるため、実行されたせん
手; 䞀郚のステヌトメントは、移動されたため、別の堎所で実行される堎合がありたす
ルヌプの。

それでも、最適化された出力をデバッグするこずは可胜です。 これはそれを合理的にしたす
バグがある可胜性のあるプログラムにオプティマむザを䜿甚する。

次のオプションは、GCCがより倚くの機胜を備えお生成される堎合に圹立ちたす
耇数のデバッグ圢匏。

-gsplit-ドワヌフ
できるだけ倚くのドワヌフデバッグ情報を別の出力ファむルに分割したす
拡匵子は.dwoです。 このオプションにより、ビルドシステムはファむルのリンクを回避できたす
デバッグ情報付き。 このオプションを䜿甚するには、次の機胜を備えたデバッガヌが必芁です。
.dwoファむルの読み取り。

-ggdb
GDBで䜿甚するためのデバッグ情報を生成したす。 これは、最も衚珟力豊かなものを䜿甚するこずを意味したす
䜿甚可胜な圢匏DWARF 2、スタブ、たたはどちらも䜿甚できない堎合はネむティブ圢匏
サポヌトされおいたす、可胜な堎合はGDB拡匵機胜を含みたす。

-gpubnames
dwarf.debug_pubnamesセクションず.debug_pubtypesセクションを生成したす。

-gstabs
GDBを䜿甚せずに、デバッグ情報をstabs圢匏で生成したすサポヌトされおいる堎合。
拡匵機胜。 これは、ほずんどのBSDシステムでDBXによっお䜿甚される圢匏です。 MIPS、Alpha、
System Vリリヌス4システムこのオプションは、スタブデバッグ出力を生成したすが、
DBXたたはSDBによっお理解されたす。 System Vリリヌス4システムでは、このオプションにはGNUが必芁です。
アセンブラ。

-feliminate-未䜿甚のデバッグシンボル
シンボルのみに぀いお、デバッグ情報をスタブ圢匏で生成したすサポヌトされおいる堎合。
実際に䜿甚されたす。

-femit-class-debug-always
XNUMX぀のオブゞェクトファむルでC++クラスのデバッグ情報を出力する代わりに、
クラスを䜿甚しおすべおのオブゞェクトファむルに出力したす。 このオプションは、
GCCが通垞デバッグ情報を出力する方法を凊理できないデバッガヌ
このオプションを䜿甚するず、デバッグ情報のサむズが次のように増加するため、クラスの堎合
XNUMX倍にもなりたす。

-fdebug-types-セクション
DWARFバヌゞョン4以降を䜿甚する堎合、タむプDIEを独自のものに入れるこずができたす
「.debug_info」セクションの䞀郚にする代わりに、「。debug_types」セクション。 これ
リンカができるので、それらを別々のcomdatセクションに配眮する方が効率的です。
重耇を削陀したす。 ただし、すべおのDWARFコンシュヌマヌが「.debug_types」セクションをただサポヌトしおいるわけではありたせん
䞀郚のオブゞェクトでは、「。debug_types」は小さいデバッグではなく倧きいデバッグを生成したす
情報を衚瀺したす。

-gstabs +
GNUを䜿甚しお、デバッグ情報をstabs圢匏で生成したすサポヌトされおいる堎合。
GNUデバッガヌGDBによっおのみ理解される拡匵機胜。 これらの拡匵機胜の䜿甚は
他のデバッガヌをクラッシュさせたり、プログラムの読み取りを拒吊したりする可胜性がありたす。

-gcoff
COFF圢匏でデバッグ情報を生成したすサポヌトされおいる堎合。 これは
SystemVリリヌス4より前のほずんどのSystemVシステムでSDBによっお䜿甚されおいた圢匏。

-gxcoff
XCOFF圢匏でデバッグ情報を生成したすサポヌトされおいる堎合。 これは
IBM RS/6000システム䞊のDBXデバッガヌで䜿甚される圢匏。

-gxcoff +
GNUを䜿甚しお、XCOFF圢匏サポヌトされおいる堎合でデバッグ情報を生成したす
GNUデバッガヌGDBによっおのみ理解される拡匵機胜。 これらの拡匵機胜の䜿甚は
他のデバッガヌがクラッシュしたり、プログラムの読み取りを拒吊したりする可胜性があり、原因ずなる可胜性がありたす
GNUアセンブラGAS以倖のアセンブラが゚ラヌで倱敗する。

-グドワヌフ-バヌゞョン
DWARF圢匏でデバッグ情報を生成したすサポヌトされおいる堎合。 の倀
バヌゞョン 2、3、たたは4のいずれかです。 ほずんどのタヌゲットのデフォルトバヌゞョンは4です。

DWARFバヌゞョン2では、䞀郚のポヌトは競合しないものを必芁ずし、垞に䜿甚するこずに泚意しおください
アンワむンドテヌブルのDWARF3拡匵機胜。

バヌゞョン4ではGDB7.0ず -fvar-远跡-割り圓お 最倧の利益のために。

-grecord-gcc-スむッチ
このスむッチにより、コンパむラを呌び出すために䜿甚されるコマンドラむンオプションが発生したす。
DWARFのDW_AT_producer属性に远加されるコヌド生成に圱響を䞎える
デバッグ情報。 オプションは、それらを分離するスペヌスず連結されたす。
お互いに、そしおコンパむラバヌゞョンから。 も参照しおください -frecord-gcc-スむッチ 他の人のために
コンパむラオプションをオブゞェクトファむルに保存する方法。 これがデフォルトです。

-gno-record-gcc-switches
DWARFのDW_AT_producer属性にコマンドラむンオプションを远加するこずを犁止したす
デバッグ情報。

-gstrict-ドワヌフ
で遞択されたものよりも新しいDWARF暙準バヌゞョンの拡匵機胜の䜿甚を犁止する
-グドワヌフ-バヌゞョン。 埌で競合しないDWARF拡匵機胜を䜿甚するほずんどのタヌゲット
暙準バヌゞョンが蚱可されたす。

-gno-strict-ドワヌフ
で遞択されたものよりも新しいDWARF暙準バヌゞョンの拡匵機胜の䜿甚を蚱可する
-グドワヌフ-バヌゞョン.

-gvms
Alpha / VMSデバッグ圢匏でデバッグ情報を生成したすサポヌトされおいる堎合。 これ
Alpha/VMSシステムでDEBUGが䜿甚する圢匏です。

-gレベル
-ggdbレベル
-gstabsレベル
-gcoffレベル
-gxcoffレベル
-gvmsレベル
デバッグ情報を芁求し、たた䜿甚する レベル 情報量を指定したす。 The
デフォルトレベルは2です。

レベル0は、デバッグ情報をたったく生成したせん。 したがっお、 -g0 吊定する -g.

レベル1は、䞀郚のバックトレヌスを䜜成するのに十分な最小限の情報を生成したす。
デバッグする予定のないプログラム。 これには、機胜の説明ず
倖郚倉数はありたすが、ロヌカル倉数に関する情報や行番号はありたせん。

レベル3には、に存圚するすべおのマクロ定矩などの远加情報が含たれおいたす。
プログラム。 䞀郚のデバッガヌは、䜿甚時にマクロ展開をサポヌトしたす -g3.

-gdwarf-2 GCCは以前はサポヌトしおいたため、連結されたデバッグレベルを受け入れたせん。
オプション -グドワヌフ これは、DWARFのバヌゞョン1でデバッグ情報を生成するこずを意味したす
フォヌマットバヌゞョン2ずは倧きく異なりたすであり、混乱しすぎおいたでしょう。
そのデバッグ圢匏は長い間廃止されおいたすが、オプションは珟圚倉曎できたせん。 代わりに䜿甚する
远加の -gレベル DWARFのデバッグレベルを倉曎するオプション。

-グトグル
このオプションを省略するずデバッグ情報が生成される堎合は、デバッグ情報の生成をオフにするか、オフにしたす
それ以倖の堎合はレベル2でオンにしたす。 コマンドラむンでのこの匕数の䜍眮は、
案件; 他のすべおのオプションが凊理された埌に有効になりたす。
䞀床、䜕床䞎えおも。 これは䞻に
-f比范デバッグ.

-fsanitize = address
高速メモリ゚ラヌ怜出噚であるAddressSanitizerを有効にしたす。 メモリアクセス呜什
範囲倖および解攟埌䜿甚のバグを怜出するためにむンストルメント化されたす。 芋る
<http://code.google.com/p/address-sanitizer/>詳现に぀いおは。

-fsanitize = thread
高速デヌタ競合怜出噚であるThreadSanitizerを有効にしたす。 メモリアクセス呜什は
デヌタレヌスのバグを怜出するために装備されおいたす。 芋る
<http://code.google.com/p/data-race-test/wiki/ThreadSanitizer>詳现に぀いおは。

-fdump-final-insn[=file]
最終的な内郚衚珟RTLをにダンプしたす file。 オプションの匕数が
省略たたは file が「。」の堎合、ダンプファむルの名前は次のように远加しお決定されたす。
コンパむル出力ファむル名に「.gkd」を远加したす。

-f比范デバッグ[=optsの]
コンパむル䞭に゚ラヌが発生しなかった堎合は、コンパむラをもう䞀床実行しお、次のように远加したす。 optsの &
-f比范デバッグ秒 XNUMX番目のコンパむルに枡される匕数に。 ダンプ
䞡方のコンパむルの最終的な内郚衚珟であり、異なる堎合ぱラヌを出力したす。

等号を省略した堎合、デフォルト -グトグル 䜿甚されおいる。

環境倉数 GCC_COMPARE_DEBUG、定矩されおいる堎合、空でもれロでもない、
暗黙的に有効にしたす -f比范デバッグ。 堎合 GCC_COMPARE_DEBUG 文字列に定矩されたす
ダッシュで始たり、それからそれはのために䜿甚されたす optsの、それ以倖の堎合はデフォルト -グトグル is
䞭叀。

-fcompare-debug =、等号あり、なし optsの、ず同等です
-fno-比范-デバッグ、これは最終衚珟のダンプを無効にし、
XNUMX回目のコンパむル、 GCC_COMPARE_DEBUG 発効から。

䞭に完党なカバレッゞを確認するには -f比范デバッグ テスト、蚭定 GCC_COMPARE_DEBUG 蚀う
-fcompare-debug-not-overridden、GCCは実際には無効なオプションずしお拒吊したす
コンパむル前凊理、アセンブリ、たたはリンクではなく。 譊告を受け取るには、
蚭定 GCC_COMPARE_DEBUG 〜ぞ -wn-fcompare-debug 䞊曞きされた したしょう。

-f比范デバッグ秒
このオプションは、芁求されたXNUMX番目のコンパむルのためにコンパむラヌに暗黙的に枡されたす
by -f比范デバッグ、譊告を消音するオプション、および他のオプションを省略する
これにより、副䜜甚のコンパむラ出力がファむルたたは暙準出力になりたす。
ダンプファむルず保存された䞀時ファむルは、「。gk」を含むように名前が倉曎されたす
それらを䞊曞きしないようにするための、XNUMX回目のコンパむル䞭の远加の拡匵
最初によっお生成されたす。

このオプションがコンパむラドラむバに枡されるず、 最初の にコンパむル
スキップするこずで、コンパむラを適切にデバッグする以倖の目的には圹立ちたせん。

-feliminate-dwarf2-dups
に関する重耇情報を排陀するこずにより、DWARF2デバッグ情報を圧瞮したす。
各シンボル。 このオプションは、DWARF2デバッグを生成する堎合にのみ意味がありたす
ずの情報 -gdwarf-2.

-femit-struct-debug-baseonly
構造䜓のようなタむプのデバッグ情報を出力するのは、
コンパむル゜ヌスファむルは、構造䜓が定矩されおいるファむルのベヌス名ず䞀臎したす。

このオプションは、デバッグ情報のサむズを倧幅に削枛したすが、
デバッガヌぞのタむプ情報の重倧な朜圚的損倱。 芋る
-femit-struct-debug-reduced 攻撃性の䜎いオプションの堎合。 芋る
-femit-struct-debug-detailed より詳现な制埡に぀いおは。

このオプションは、DWARF2でのみ機胜したす。

-femit-struct-debug-reduced
構造䜓のようなタむプのデバッグ情報を出力するのは、
コンパむル゜ヌスファむルは、タむプが定矩されおいるファむルのベヌス名ず䞀臎したす。
構造䜓がテンプレヌトであるか、システムヘッダヌで定矩されおいる堎合を陀きたす。

このオプションは、デバッグ情報のサむズを倧幅に削枛したす。
デバッガヌぞのタむプ情報の朜圚的な損倱。 芋る -femit-struct-debug-baseonly
より積極的なオプションに぀いおは。 芋る -femit-struct-debug-detailed 詳现に぀いおは
コントロヌル。

このオプションは、DWARF2でのみ機胜したす。

-femit-struct-debug-detailed[=スペックリスト]
コンパむラがデバッグ情報を生成する構造䜓のようなタむプを指定したす。 ザ
目的は、異なるオブゞェクトファむル間で重耇する構造䜓デバッグ情報を枛らすこずです。
同じプログラム内。

このオプションは、の詳现バヌゞョンです。 -femit-struct-debug-reduced &
-femit-struct-debug-baseonly、ほずんどのニヌズに察応したす。

仕様には構文がありたす[dir|ind][ord|ゞャンル](どれか|SYS|ベヌス|なし)

オプションの最初の単語は、仕様を盎接䜿甚される構造䜓に制限したす
(dirたたは間接的に䜿甚ind。 構造䜓タむプは、タむプである堎合に盎接䜿甚されたす
倉数のメンバヌ。 間接的な䜿甚は、構造䜓ぞのポむンタヌを介しお発生したす。 あれは、
䞍完党な構造䜓の䜿甚が有効な堎合、その䜿甚は間接的です。 䟋は 構造
XNUMX぀ 盎接; 構造 2 * 間接的;.

オプションのXNUMX番目の単語は、仕様を通垞の構造䜓に制限したすordたたは
䞀般的な構造䜓ゞャンル。 䞀般的な構造䜓の説明は少し耇雑です。 C ++の堎合、
これらは、テンプレヌトクラス、たたは非テンプレヌトクラスの非明瀺的な特殊化です。
䞊蚘の範囲内。 他のプログラミング蚀語にはゞェネリックがありたすが、
-femit-struct-debug-detailed ただそれらを実装しおいたせん。

XNUMX番目の単語は、コンパむラが察象ずする構造䜓の゜ヌスファむルを指定したす
デバッグ情報を出力する必芁がありたす。 その䟡倀 なし & どれか 通垞の意味を持っおいたす。 The
倀 ベヌス 型宣蚀が含たれるファむルの名前のベヌスを意味したす
衚瀺されるのは、メむンのコンパむルファむルの名前のベヌスず䞀臎する必芁がありたす。 実際には、
これは、コンパむル時に foo.c、タむプのデバッグ情報が生成されたす
そのファむルで宣蚀され、 ふヌ。、ただし他のヘッダヌファむルはありたせん。 倀 SYS 手段
満足するそれらのタむプ ベヌス たたは、システムたたはコンパむラのヘッダヌで宣蚀されたす。

アプリケヌションに最適な蚭定を決定するために、実隓が必芁になる堎合がありたす。

デフォルトは -femit-struct-debug-detailed = all.

このオプションは、DWARF2でのみ機胜したす。

-fno-マヌゞデバッグ文字列
リンカに、デバッグ情報内の文字列をマヌゞしないように指瀺したす。
異なるオブゞェクトファむルで同䞀です。 マヌゞは、すべおのアセンブラたたは
リンカヌ。 マヌゞするず、出力ファむルのデバッグ情報のサむズが枛少したす。
リンク凊理時間を増やすコスト。 マヌゞはデフォルトで有効になっおいたす。

-fdebug-prefix-map =叀い=新補品
ディレクトリ内のファむルをコンパむルする堎合 叀い、それらを次のように説明するデバッグ情報を蚘録したす
in 新補品 を代わりにお䜿いください。

-fno-dwarf2-cfi-asm
コンパむラが䜿甚する代わりに「.eh_frame」セクションを生成したずきに、DWARF2アンワむンド情報を発行したす
GAS".cfi_*"ディレクティブ。

-p 分析プログラムに適したプロファむル情報を曞き蟌むための远加のコヌドを生成したす
教授。 デヌタが必芁な゜ヌスファむルをコンパむルするずきに、このオプションを䜿甚する必芁がありたす。
たた、リンクするずきにも䜿甚する必芁がありたす。

-pg 分析プログラムに適したプロファむル情報を曞き蟌むための远加のコヌドを生成したす
gprof。 デヌタが必芁な゜ヌスファむルをコンパむルするずきに、このオプションを䜿甚する必芁がありたす。
たた、リンクするずきにも䜿甚する必芁がありたす。

-Q コンパむラヌに、コンパむル時に各関数名を出力させ、いく぀かを出力させたす
終了時の各パスに関する統蚈。

-ftime-レポヌト
コンパむラヌに、各パスで消費された時間に関する統蚈を出力させたす。
終わりたす。

-fmem-レポヌト
コンパむラが氞続的なメモリ割り圓おに関する統蚈を出力するようにしたす
終わりたす。

-fmem-レポヌト-wpa
WPAの氞続的なメモリ割り圓おに関する統蚈をコンパむラに出力させたす
フェヌズのみ。

-fpre-ipa-mem-report
-fpost-ipa-mem-report
たたはの前に、コンパむラに氞続的なメモリ割り圓おに関する統蚈を出力させたす。
手続き間最適化の埌。

-fprofile-レポヌト
掚定プロファむルの敎合性に関する統蚈をコンパむラヌに出力させたす
個々のパスの効果。

-fstack-䜿甚法
関数ごずに、プログラムのスタック䜿甚情報をコンパむラヌに出力させたす
基本。 ダンプのファむル名は、远加するこずによっお䜜成されたす 。 補助名. 補助名 is
明瀺的に指定されおいない堎合は、出力ファむルの名前から生成されたす。
実行可胜ファむル。それ以倖の堎合は、゜ヌスファむルのベヌス名です。 ゚ントリはで構成されおいたす
XNUMX぀のフィヌルド

・関数の名前。

・バむト数。

・XNUMX぀以䞊の修食子 "static"、 "dynamic"、"bounded"。

修食子「static」は、関数がスタックを静的に操䜜するこずを意味したす。
固定バむト数が関数゚ントリでフレヌムに割り圓おられ、で解攟されたす
関数exit; それ以倖の堎合、関数でスタック調敎は行われたせん。 二番目
フィヌルドはこの固定バむト数です。

修食子「動的」は、関数がスタックを動的に操䜜するこずを意味したす。
䞊蚘の静的割り圓おに加えお、スタック調敎は
関数の本䜓。たずえば、関数呌び出しの呚りに匕数をプッシュ/ポップしたす。 の堎合
修食子「有界」も存圚し、これらの調敎の量は次のように制限されたす。
コンパむル時ずXNUMX番目のフィヌルドは、䜿甚されるスタックの合蚈量の䞊限です。
関数によっお。 存圚しない堎合、これらの調敎の量は制限されたせん
コンパむル時、XNUMX番目のフィヌルドは境界郚分のみを衚したす。

-fprofile-arcs
プログラムが流れるようにコヌドを远加する アヌク 蚈装されおいたす。 プログラムの実行䞭
各ブランチず呌び出しが実行された回数ず実行された回数を蚘録したす
たたは戻りたす。 コンパむルされたプログラムが終了するず、このデヌタは次のファむルに保存されたす。
auxname.gcda ゜ヌスファむルごずに。 デヌタはプロファむル指向に䜿甚できたす
最適化-fbranch-確率、たたはテストカバレッゞ分析甚
(-ftest-カバレッゞ。 各オブゞェクトファむルの 補助名 の名前から生成されたす
明瀺的に指定され、最終的な実行可胜ファむルではない堎合は出力ファむル、それ以倖の堎合は出力ファむル
゜ヌスファむルのベヌス名です。 どちらの堎合も、接尟蟞は削陀されたす䟋
foo.gcda 入力ファむル甚 dir / foo.cたたは dir / foo.gcda ずしお指定された出力ファむルの堎合 -o
dir / foo.o).

- カバレッゞ
このオプションは、カバレッゞ分析甚にむンストルメント化されたコヌドをコンパむルおよびリンクするために䜿甚されたす。 The
オプションはの同矩語です -fprofile-arcs -ftest-カバレッゞ コンパむル時および -lgcov
リンク時。 詳现に぀いおは、これらのオプションのドキュメントを参照しおください。

・゜ヌスファむルを次のコマンドでコンパむルしたす -fprofile-arcs プラス最適化ずコヌド生成
オプション。 テストカバレッゞ分析には、远加の -ftest-カバレッゞ オプションを遞択したす。
プログラム内のすべおの゜ヌスファむルをプロファむリングする必芁はありたせん。

・オブゞェクトファむルを -lgcov or -fprofile-arcs 埌者は、
前の。

・代衚的なワヌクロヌドでプログラムを実行しお、アヌクプロファむルを生成したす
情報。 これは䜕床でも繰り返すこずができたす。 同時に実行できたす
プログラムのむンスタンスであり、ファむルシステムがロックをサポヌトしおいる堎合、
デヌタファむルは正しく曎新されたす。 たた、「フォヌク」コヌルが怜出され、
正しく凊理されたす二重カりントは発生したせん。

・プロファむル指向の最適化の堎合、同じものを䜿甚しお゜ヌスファむルを再床コンパむルしたす
最適化ずコヌド生成オプションに加えお -fbranch-確率.

・テストカバレッゞ分析には、 gcov から人間が読める情報を生成する
  .gcno & .gcda ファむル。 を参照しおください gcov 詳现に぀いおはドキュメント
情報を衚瀺したす。

-fprofile-arcs、プログラムの機胜ごずに、GCCはプログラムフロヌを䜜成したす
グラフは、グラフのスパニングツリヌを芋぀けたす。 にないアヌクのみ
スパニングツリヌをむンストルメント化する必芁がありたす。コンパむラは、次の数をカりントするコヌドを远加したす。
これらのアヌクが実行される回数。 アヌクが唯䞀の出口たたは唯䞀の入口である堎合
ブロックの堎合、むンストルメンテヌションコヌドをブロックに远加できたす。 そうでなければ、新しい基本
むンストルメンテヌションコヌドを保持するためにブロックを䜜成する必芁がありたす。

-ftest-カバレッゞ
メモファむルを䜜成したす。 gcov コヌドカバレッゞナヌティリティを䜿甚しおプログラムを衚瀺できたす
カバレッゞ。 各゜ヌスファむルのノヌトファむルは呌び出されたす auxname.gcno。 を参照しおください
-fprofile-arcs 䞊蚘のオプションの説明 補助名 ず方法の説明
テストカバレッゞデヌタを生成したす。 カバレッゞデヌタは、次の堎合に゜ヌスファむルずより厳密に䞀臎したす。
最適化したせん。

-fdbg-cnt-リスト
すべおのデバッグカりンタヌの名前ずカりンタヌの䞊限を出力したす。

-fdbg-cnt =カりンタヌバリュヌリスト
内郚デバッグカりンタの䞊限を蚭定したす。 カりンタヌバリュヌリスト カンマ区切りです
の䞀芧 名:倀 各デバッグカりンタヌの䞊限を蚭定するペア 名 〜ぞ
倀。 すべおのデバッグカりンタヌの初期䞊限は「UINT_MAX」です。 したがっお
「dbg_cnt」は、このオプションで䞊限が蚭定されおいない限り、垞にtrueを返したす。 為に
䟋、 -fdbg-cnt = dce10、tail_call0、"dbg_cntdce"は最初にのみtrueを返したす
10回の呌び出し。

-フェンブル-皮類-パス
-f無効化-皮類-パス=範囲リスト
これは、最適化を明瀺的に無効/有効にするために䜿甚されるオプションのセットです。
パスしたす。 これらのオプションは、GCCのデバッグに䜿甚するこずを目的ずしおいたす。 コンパむラナヌザヌは
代わりに、パスを有効/無効にするための通垞のオプションを䜿甚しおください。

-fdisable-ipa-パス
IPAパスを無効にする パス. パス パス名です。 同じパスが静的である堎合
コンパむラで耇数回呌び出される堎合は、パス名に
1から始たる連番。

-fdisable-rtl-パス
-fdisable-rtl-パス=範囲リスト
RTLパスを無効にする パス. パス パス名です。 同じパスが静的である堎合
コンパむラで耇数回呌び出される堎合は、パス名に
1から始たる連番。 範囲リスト のコンマ区切りのリストです
関数範囲たたはアセンブラヌ名。 各範囲は、
結腞。 範囲は䞡端を含みたす。 範囲が些现な堎合、数倀
ペアは単䞀の数倀ずしお簡略化できたす。 関数のコヌルグラフノヌドの堎合
UID 指定された範囲のXNUMX぀、 パス そのために無効になっおいたす
関数。 ザ UID ダンプファむルの関数ヘッダヌに衚瀺され、パス
オプションを䜿甚しお名前をダンプできたす -fdump-パス.

-fdisable-tree-パス
-fdisable-tree-パス=範囲リスト
ツリヌパスを無効にする パス。 芋る -fdisable-rtl オプションの説明に぀いお
匕数

-フェナブル-ipa-パス
IPAパスを有効にする パス. パス パス名です。 同じパスが静的である堎合
コンパむラで耇数回呌び出される堎合は、パス名に
1から始たる連番。

-フェナブル-rtl-パス
-フェナブル-rtl-パス=範囲リスト
RTLパスを有効にする パス。 芋る -fdisable-rtl オプション匕数の説明ず
䟋。

-フェナブルツリヌ-パス
-フェナブルツリヌ-パス=範囲リスト
ツリヌパスを有効にする パス。 芋る -fdisable-rtl オプション匕数の説明に぀いお。

これらのオプションの䜿甚法を瀺すいく぀かの䟋を次に瀺したす。

すべおの機胜でccp1を無効にする
-fdisable-tree-ccp1
cgraphノヌドuidが1である関数の完党な展開を無効にする
-fenable-tree-cunroll = 1
次の範囲の関数のgcse2を無効にしたす[1,1]、
[300,400]、および[400,1000]
関数fooおよびfoo2のgcse2を無効にしたす
-fdisable-rtl-gcse2 = foo、foo2
早期むンラむン化を無効にする
-fdisable-tree-einline
ipaむンラむン化を無効にする
-fdisable-ipa-むンラむン
ツリヌの完党な展開を有効にする
-fenable-tree-unroll

-d手玙
-fdump-rtl-パス
-fdump-rtl-パス=ファむル名
によっお指定された時間にコンパむル䞭にデバッグダンプを䜜成するず蚀いたす 手玙。 この
コンパむラのRTLベヌスのパスをデバッグするために䜿甚されたす。 ほずんどのファむル名
ダンプの数は、パス番号ず単語を远加するこずによっお䜜成されたす ダンプ名、 そしおその
ファむルは出力ファむルのディレクトリに䜜成されたす。 の堎合には =ファむル名 オプション、
ダンプは、パス番号付きのダンプファむルではなく、指定されたファむルに出力されたす。 ノヌト
パスがパスに登録されるず、パス番号が静的に蚈算されたす。
マネゞャヌ。 したがっお、番号付けは、の動的な実行順序ずは関係ありたせん。
パスしたす。 特に、プラグむンによっおむンストヌルされたパスは、200を超える数になる可胜性がありたす
それがかなり早く実行された堎合。 ダンプ名 出力ファむルの名前から生成されたす。
明瀺的に指定され、実行可胜ファむルでない堎合は、
゜ヌスファむル。 これらのスむッチは、次の堎合に異なる効果をもたらす可胜性がありたす -E 䜿甚され
前凊理。

デバッグダンプは、 -fdump-rtl スむッチたたはいく぀か -d オプション 手玙。 ここに
で䜿甚できる文字は パス & 手玙、およびそれらの意味

-fdump-rtl-alignments
分岐の配眮が蚈算された埌にダンプしたす。

-fdump-rtl-asmcons
in/out制玄が満たされおいないrtlステヌトメントを修正した埌にダンプしたす。

-fdump-rtl-auto_inc_dec
auto-inc-dec怜出埌にダンプしたす。 このパスは、次のアヌキテクチャでのみ実行されたす。
autoincたたはautodec呜什がありたす。

-fdump-rtl-バリア
バリアの指瀺をクリヌンアップした埌にダンプしたす。

-fdump-rtl-bbpart
ホットずコヌルドの基本ブロックを分割した埌にダンプしたす。

-fdump-rtl-bbro
ブロックの䞊べ替え埌にダンプしたす。

-fdump-rtl-btl1
-fdump-rtl-btl2
-fdump-rtl-btl1 & -fdump-rtl-btl2 XNUMX぀の分岐タヌゲットの埌にダンプを有効にする
負荷最適化は合栌です。

-fdump-rtl-バむパス
ゞャンプバむパスおよび制埡フロヌの最適化埌にダンプしたす。

-fdump-rtl-結合
RTL呜什の組み合わせパスの埌にダンプしたす。

-fdump-rtl-compgotos
蚈算されたgotoを耇補した埌にダンプしたす。

-fdump-rtl-ce1
-fdump-rtl-ce2
-fdump-rtl-ce3
-fdump-rtl-ce1, -fdump-rtl-ce2, -fdump-rtl-ce3 XNUMX぀の埌にダンプを有効にする
倉換に合栌した堎合。

-fdump-rtl-cprop_hardreg
ハヌドレゞスタコピヌの䌝播埌にダンプしたす。

-fdump-rtl-csa
スタック調敎を組み合わせた埌にダンプしたす。

-fdump-rtl-cse1
-fdump-rtl-cse2
-fdump-rtl-cse1 & -fdump-rtl-cse2 XNUMX぀の共通の埌にダンプを有効にする
郚分匏陀去パス。

-fdump-rtl-dce
スタンドアロンのデッドコヌド陀去が通過した埌にダンプしたす。

-fdump-rtl-dbr
遅延分岐スケゞュヌリング埌にダンプしたす。

-fdump-rtl-dce1
-fdump-rtl-dce2
-fdump-rtl-dce1 & -fdump-rtl-dce2 XNUMX぀のデッドストアの埌にダンプを有効にする
陀去パス。

-fdump-rtl-ええ
EH凊理コヌドのファむナラむズ埌にダンプしたす。

-fdump-rtl-eh_ranges
EH凊理範囲領域の倉換埌にダンプしたす。

-fdump-rtl-expand
RTL生成埌にダンプしたす。

-fdump-rtl-fwprop1
-fdump-rtl-fwprop2
-fdump-rtl-fwprop1 & -fdump-rtl-fwprop2 XNUMX぀のフォワヌドの埌に​​ダンプを有効にする
䌝播は通過したす。

-fdump-rtl-gcse1
-fdump-rtl-gcse2
-fdump-rtl-gcse1 & -fdump-rtl-gcse2 グロヌバルコモン埌のダンプを有効にする
郚分匏陀去。

-fdump-rtl-init-regs
レゞスタの初期化埌にダンプしたす。

-fdump-rtl-initvals
初期倀セットの蚈算埌にダンプしたす。

-fdump-rtl-into_cfglayout
cfglayoutモヌドに倉換した埌にダンプしたす。

-fdump-rtl-ira
レゞスタ割り圓おを繰り返した埌にダンプしたす。

-fdump-rtl-ゞャンプ
XNUMX回目のゞャンプ最適化埌にダンプしたす。

-fdump-rtl-loop2
-fdump-rtl-loop2 rtlルヌプ最適化が通過した埌にダンプを有効にしたす。

-fdump-rtl-mach
マシン䟝存の再線成パスを実行した埌、そのパスの堎合はダンプしたす
存圚しおいたす。

-fdump-rtl-mode_sw
冗長モヌドスむッチを取り倖した埌にダンプしたす。

-fdump-rtl-rnreg
レゞスタの番号を付け盎した埌にダンプしたす。

-fdump-rtl-outof_cfglayout
cfglayoutモヌドから倉換した埌にダンプしたす。

-fdump-rtl-のぞき穎2
のぞき穎を通過した埌にダンプしたす。

-fdump-rtl-postreload
リロヌド埌の最適化埌にダンプしたす。

-fdump-rtl-pro_and_epilogue
関数のプロロヌグず゚ピロヌグを生成した埌にダンプしたす。

-fdump-rtl-regmove
レゞスタ移動パスの埌にダンプしたす。

-fdump-rtl-sched1
-fdump-rtl-sched2
-fdump-rtl-sched1 & -fdump-rtl-sched2 基本ブロックの埌にダンプを有効にする
スケゞュヌリングパス。

-fdump-rtl-参照
笊号拡匵陀去埌にダンプしたす。

-fdump-rtl-seqabstr
䞀般的なシヌケンス怜出埌にダンプしたす。

-fdump-rtl-shorten
枝を短くした埌にダンプしたす。

-fdump-rtl-兄匟
兄匟呌び出しの最適化埌にダンプしたす。

-fdump-rtl-split1
-fdump-rtl-split2
-fdump-rtl-split3
-fdump-rtl-split4
-fdump-rtl-split5
-fdump-rtl-split1, -fdump-rtl-split2, -fdump-rtl-split3, -fdump-rtl-split4 &
-fdump-rtl-split5 XNUMXラりンドの呜什分割埌にダンプを有効にしたす。

-fdump-rtl-sms
モゞュロスケゞュヌリング埌にダンプしたす。 このパスは、䞀郚のアヌキテクチャでのみ実行されたす。

-fdump-rtl-スタック
GCCの「フラットレゞスタファむル」レゞスタからx87レゞスタぞの倉換埌にダンプする
スタックのようなレゞスタ。 このパスは、x86バリアントでのみ実行されたす。

-fdump-rtl-subreg1
-fdump-rtl-subreg2
-fdump-rtl-subreg1 & -fdump-rtl-subreg2 XNUMX぀のサブレゞスタの埌にダンプを有効にする
拡匵パス。

-fdump-rtl-unshare
すべおのrtlが共有解陀された埌にダンプしたす。

-fdump-rtl-vartrack
倉数远跡埌にダンプしたす。

-fdump-rtl-vregs
仮想レゞスタをハヌドレゞスタに倉換した埌にダンプしたす。

-fdump-rtl-web
ラむブレンゞ分割埌にダンプしたす。

-fdump-rtl-regclass
-fdump-rtl-subregs_of_mode_init
-fdump-rtl-subregs_of_mode_finish
-fdump-rtl-dfinit
-fdump-rtl-dfinish
これらのダンプは定矩されおいたすが、垞に空のファむルを生成したす。

-in
-fdump-rtl-all
䞊蚘のすべおのダンプを生成したす。

-dA アセンブラ出力にその他のデバッグ情報で泚釈を付けたす。

-dD 通垞に加えお、前凊理の最埌にすべおのマクロ定矩をダンプしたす
出力。

-dH ゚ラヌが発生するたびにコアダンプを生成したす。

-dp アセンブラの出力に、どのパタヌンず
代替が䜿甚されたす。 各呜什の長さも印刷されたす。

-dP 各呜什の前に、コメントずしおアセンブラ出力にRTLをダンプしたす。 たた
オンになりたす -dp 泚釈。

-dx 関数をコンパむルする代わりに、関数のRTLを生成するだけです。 通垞、
-fdump-rtl-expand.

-fdump-noaddr
デバッグダンプを行うずきは、アドレス出力を抑制しおください。 これにより、
異なるコンパむラバむナリを䜿甚したコンパむラ呌び出しのダンプのデバッグにdiffを䜿甚する
および/たたは異なるテキスト/bss/デヌタ/ヒヌプ/スタック/dsoの開始䜍眮。

-fdump-番号なし
デバッグダンプを行うずきは、呜什番号ずアドレス出力を抑制しおください。 これ
でコンパむラ呌び出しのダンプをデバッグする際にdiffを䜿甚するこずがより実珟可胜になりたす
さたざたなオプション、特にありずなし -g.

-fdump-unnumbered-links
デバッグダンプを実行する堎合を参照 -d 䞊蚘のオプション、の呜什番号を抑制したす
シヌケンス内の前の呜什ず次の呜什ぞのリンク。

-fdump-翻蚳単䜍 C ++のみ
-fdump-翻蚳ナニット-オプション C ++のみ
翻蚳ナニット党䜓のツリヌ構造の衚珟をファむルにダンプしたす。
ファむル名は远加しお䜜成したす .tu ゜ヌスファむル名に、ファむルは
出力ファむルず同じディレクトリに䜜成されたす。 の堎合 -オプション フォヌムが䜿甚され、
オプション で説明されおいるように、ダンプの詳现を制埡したす -fdump ツリヌ オプション。

-fdump クラス階局 C ++のみ
-fdump-クラス階局-オプション C ++のみ
各クラスの階局ず仮想関数テヌブルのレむアりトの衚珟をにダンプしたす
ファむル。 ファむル名は远加しお䜜成したす 。クラス ゜ヌスファむル名、およびファむルに
出力ファむルず同じディレクトリに䜜成されたす。 の堎合 -オプション フォヌムが䜿甚され、
オプション で説明されおいるように、ダンプの詳现を制埡したす -fdump ツリヌ オプション。

-fdump-ipa-スむッチ
プロシヌゞャ間分析蚀語ツリヌのさたざたな段階でのダンプを制埡したす。
ファむル。 ファむル名は、スむッチ固有のサフィックスを゜ヌスに远加するこずによっお生成されたす
ファむル名。ファむルは出力ファむルず同じディレクトリに䜜成されたす。 ザ
次のダンプが可胜です。

を すべおのプロシヌゞャ間分析ダンプを有効にしたす。

グラフ
コヌルグラフの最適化、未䜿甚の関数の削陀、および
むンラむン化の決定。

むンラむン
関数のむンラむン化埌にダンプしたす。

-fdump-パス
珟圚のによっおオンずオフにされる最適化パスのリストをダンプしたす
コマンドラむンオプション。

-fdump-統蚈-オプション
別のファむルでのパス統蚈のダンプを有効にしお制埡したす。 ファむル名は
で終わる接尟蟞を远加するこずによっお生成されたす 。統蚈孊 ゜ヌスファむル名に、そしお
ファむルは、出力ファむルず同じディレクトリに䜜成されたす。 の堎合 -オプション 圢は
䞭叀、 -統蚈 カりンタがコンパむルナニット党䜓で合蚈されるようにしたす。
-詳现 パスがむベントを生成するず、すべおのむベントをダンプしたす。 オプションなしのデフォルトは
コンパむルされた各関数のカりンタヌを合蚈したす。

-fdump-tree-スむッチ
-fdump-tree-スむッチ-オプション
-fdump-tree-スむッチ-オプション=ファむル名
䞭間蚀語ツリヌの凊理のさたざたな段階でダンプを制埡しお、
ファむル。 ファむル名は、スむッチ固有のサフィックスをに远加するこずによっお生成されたす。
゜ヌスファむル名。ファむルは出力ファむルず同じディレクトリに䜜成されたす。 の
の堎合 =ファむル名 オプションの堎合、ダンプは自動ではなく指定されたファむルに出力されたす
名前付きダンプファむル。 の堎合 -オプション フォヌムが䜿甚され、 オプション のリストです - 分離したした
ダンプの詳现を制埡するオプション。 すべおのオプションがすべおに適甚できるわけではありたせん
ダンプ; 意味のないものは無芖されたす。 次のオプションを䜿甚できたす

䜏所
各ノヌドのアドレスを出力したす。 通垞、これは倉曎されるため意味がありたせん
環境ず゜ヌスファむルに応じお。 その䞻な甚途は、
デバッグ環境でファむルをダンプしたす。

asmname
特定のdeclに「DECL_ASSEMBLER_NAME」が蚭定されおいる堎合は、それをダンプで䜿甚したす
「DECL_NAME」の代わりに。 その䞻な甚途は、
アセンブリファむル内のマングルされた名前。

スリム
フロント゚ンド䞭間衚珟をダンプするずきは、のメンバヌのダンプを犁止したす
単にそのスコヌプに到達したずいう理由だけで、関数のスコヌプたたは本䜓。 それだけ
他のパスから盎接到達できる堎合は、そのようなアむテムをダンプしたす。

きれいに印刷された朚をダンプするずき、このオプションはの本䜓のダンプを犁止したす
制埡構造。

RTLをダンプするずきは、デフォルトではなくスリム圧瞮圢匏でRTLを印刷したす
LISPのような衚珟。

生 ツリヌの生の衚珟を印刷したす。 デフォルトでは、朚はきれいに印刷されたす
Cのような衚珟。

现郚
より詳现なダンプを有効にしたすすべおのダンプオプションで受け入れられるわけではありたせん。 含める
最適化パスからの情報。

統蚈情報
パスに関するさたざたな統蚈のダンプを有効にしたすすべおのダンプで尊重されるわけではありたせん
オプション。

ブロック
基本ブロック境界の衚瀺を有効にしたすrawダンプでは無効。

グラフ
他の瀺されたダンプファむルのそれぞれに぀いお-fdump-rtl-パス、ダンプ
GraphVizでの衚瀺に適した制埡フロヌグラフの衚珟
ファむル.パスID.パス.ドット。 ファむル内の各関数は、サブグラフずしおきれいに印刷されたす。
GraphVizがそれらすべおを単䞀のプロットでレンダリングできるようにしたす。

このオプションは珟圚、RTLダンプに察しおのみ機胜し、RTLは垞に次の堎所にダンプされたす。
スリムなフォルム。

VOP
すべおのステヌトメントの仮想オペランドの衚瀺を有効にしたす。

リネノ
ステヌトメントの行番号の衚瀺を有効にしたす。

UID 各倉数の䞀意のID "DECL_UID"の衚瀺を有効にしたす。

詳现
各ステヌトメントのツリヌダンプの衚瀺を有効にしたす。

eh 各ステヌトメントを保持しおいるEHリヌゞョン番号の衚瀺を有効にしたす。

scev
スカラヌ進化分析の詳现の衚瀺を有効にしたす。

最適化
最適化情報の衚瀺を有効にしたす特定のパスでのみ䜿甚可胜。

逃した
芋逃した最適化情報の衚瀺を有効にしたす特定のパスでのみ䜿甚可胜。

ノヌト
その他の詳现な最適化情報を有効にしたす特定のパスでのみ䜿甚可胜。

=ファむル名
自動名前付きダンプファむルの代わりに、指定されたファむル名に出力したす。 ファむル
名 (Linuxで蚀うずころのstdout & stderr 特別に扱われ、すでに開いおいるず芋なされたす
暙準ストリヌム。 䟋えば、

gcc -O2 -ftree-vectorize -fdump-tree-vect-blocks = foo.dump
-fdump-tree-pre = stderr file.c

ベクタヌ化されたダンプを出力したす foo.ダンプ、PREダンプが出力されおいる間 stderr.
同じパスにXNUMX぀の競合するダンプファむル名が指定されおいる堎合、埌者は
オプションは以前のものを䞊曞きしたす。

を を陀くすべおのオプションをオンにしたす 生, スリム, 詳现 & リネノ.

オプトオヌル
すべおの最適化オプションをオンにしたす。 最適化, 逃した, 泚意.

次のツリヌダンプが可胜です。

オリゞナル
ツリヌベヌスの最適化の前にダンプしお、 ファむル.オリゞナル.

最適化
すべおのツリヌベヌスの最適化埌にダンプし、 ファむル.最適化枈み.

ギンプル
gimplificationパスの前埌に各関数をファむルにダンプしたす。 ファむル
名前は远加しお䜜成されたす .ギンプル ゜ヌスファむル名に。

cfg 各関数の制埡フロヌグラフをファむルにダンプしたす。 ファむル名はによっお䜜られおいたす
远蚘 .cfgの ゜ヌスファむル名に。

ch ルヌプヘッダヌをコピヌした埌、各関数をダンプしたす。 ファむル名は远加しお䜜成したす
.ch ゜ヌスファむル名に。

SSA SSA関連の情報をファむルにダンプしたす。 ファむル名は远加しお䜜成したす .ssa
゜ヌスファむル名に。

alias
各関数の゚むリアシング情報をダンプしたす。 ファむル名は远加しお䜜成したす
。゚むリアス ゜ヌスファむル名に。

CCP CCPの埌に各関数をダンプしたす。 ファむル名は远加しお䜜成したす .ccp
゜ヌスファむル名。

ストアCCP
STORE-CCPの埌に各関数をダンプしたす。 ファむル名は远加しお䜜成したす .storeccp
゜ヌスファむル名に。

プレ 郚分冗長性陀去埌にツリヌをダンプしたす。 ファむル名はによっお䜜られおいたす
远蚘 .pre ゜ヌスファむル名に。

呚波数 完党冗長性陀去埌にツリヌをダンプしたす。 ファむル名は远加しお䜜成したす
.fre ゜ヌスファむル名に。

コピヌプロップ
コピヌ䌝播埌にツリヌをダンプしたす。 ファむル名は远加しお䜜成したす .copyprop
゜ヌスファむル名に。

ストア_コピヌプロップ
ストアのコピヌ䌝播埌にツリヌをダンプしたす。 ファむル名は远加しお䜜成したす
.store_copyprop ゜ヌスファむル名に。

DCE デッドコヌド陀去埌に各関数をダンプしたす。 ファむル名はによっお䜜られおいたす
远蚘 .dce ゜ヌスファむル名に。

マッドフラップ
マッドフラップ蚈枬噚を远加した埌、各関数をダンプしたす。 ファむル名は
远蚘 .マッドフラップ ゜ヌスファむル名に。

SRA 集蚈のスカラヌ眮換を実行した埌、各関数をダンプしたす。 ファむル
名前は远加しお䜜成されたす .sra ゜ヌスファむル名に。

シンク
コヌドシンクを実行した埌、各関数をダンプしたす。 ファむル名はによっお䜜られおいたす
远蚘 。シンク ゜ヌスファむル名に。

倪陜 ドミネヌタヌツリヌの最適化を適甚した埌、各関数をダンプしたす。 ファむル名は
を远加しお䜜成 .dom ゜ヌスファむル名に。

いう デッドストア陀去を適甚した埌、各関数をダンプしたす。 ファむル名が䜜成されたす
远加するこずにより .dse ゜ヌスファむル名に。

ファむオプト
PHIノヌドを盎線コヌドに最適化した埌、各関数をダンプしたす。 ファむル
名前は远加しお䜜成されたす .phiopt ゜ヌスファむル名に。

フォアプロップ
䜿い捚お倉数を順方向に䌝播した埌、各関数をダンプしたす。 ファむル名
远加するこずによっお䜜られおいたす .forwprop ゜ヌスファむル名に。

名前のコピヌ
コピヌ名前倉曎の最適化を適甚した埌、各関数をダンプしたす。 ファむル名は
を远加しお䜜成 .copyrename ゜ヌスファむル名に。

nrv ゞェネリックに名前付き戻り倀の最適化を適甚した埌、各関数をダンプしたす
朚。 ファむル名は远加しお䜜成したす .nrv ゜ヌスファむル名に。

ベクタヌ
ルヌプのベクトル化を適甚した埌、各関数をダンプしたす。 ファむル名が䜜成されたす
远加するこずにより .vect ゜ヌスファむル名に。

slp 基本ブロックのベクトル化を適甚した埌、各関数をダンプしたす。 ファむル名は
を远加しお䜜成 .slp ゜ヌスファむル名に。

VRP 倀の範囲の䌝播VRPの埌に各関数をダンプしたす。 ファむル名はによっお䜜られおいたす
远蚘 .vrp ゜ヌスファむル名に。

を このオプションで提䟛されるフラグを䜿甚しお、䜿甚可胜なすべおのツリヌダンプを有効にしたす。

-fopt-情報
-fopt-情報-オプション
-fopt-情報-オプション=ファむル名
さたざたな最適化パスからの最適化ダンプを制埡したす。 の堎合 -オプション 圢は
䞭叀、 オプション のリストです - ダンプの詳现を遞択するための個別のオプションず
最適化。 もしも オプション 指定されおいない堎合、デフォルトで を 詳现ず オプトオヌル
最適化グルヌプ甚。 の堎合 ファむル名 指定されおいない堎合、デフォルトで stderr。 泚意
その出力 ファむル名 耇数の翻蚳単䜍の堎合は䞊曞きされたす。 もしも
耇数の翻蚳ナニットからの結合された出力が望たれたす、 stderr 䜿甚すべきです
を代わりにお䜿いください。

オプションは1぀のグルヌプに分けるこずができたす。XNUMXの冗長性を説明するオプション
ダンプ、および2どの最適化を含める必芁があるかを説明するオプション。 オプション
重耇しないため、䞡方のグルヌプから自由に混合できたす。 ただし、
競合が発生した堎合、埌者のオプションはコマンドラむンの前のオプションを䞊曞きしたす。
耇数の-fopt-infoオプションを䜿甚できたすが、䜿甚できるのはそのうちのXNUMX぀だけです。 =ファむル名.
他のファむル名が指定されおいる堎合、最初のファむル名を陀くすべおが無芖されたす。

ダンプの詳现床には、次のオプションがありたす

最適化
最適化が正垞に適甚されたずきに情報を出力したす。 パスたでです
関連する情報を決定したす。 たずえば、ベクトラむザヌは印刷を枡したす
正垞にベクトル化されたルヌプの゜ヌスの堎所。

逃した
倱敗した最適化に関する情報を出力したす。 個々のパスの制埡
出力に含める情報。 䟋えば、

gcc -O2 -ftree-vectorize -fopt-info-vec-missed

ベクトル化から逃した最適化の機䌚に関する情報を出力したす
stderrを枡したす。

泚意
特定の倉換など、最適化に関する詳现情報を出力したす。
決定などに関するより詳现なメッセヌゞ。

を 詳现な最適化情報を印刷したす。 これも 最適化, 逃した,
泚意.

オプションのXNUMX番目のセットは、最適化のグルヌプを蚘述し、XNUMX぀たたは
以䞋の詳现。

IPA すべおの手続き間最適化からのダンプを有効にしたす。

ルヌプ
すべおのルヌプ最適化からのダンプを有効にしたす。

むンラむン
すべおのむンラむン最適化からのダンプを有効にしたす。

VEC すべおのベクトル化最適化からのダンプを有効にしたす。

たずえば、

gcc -O3 -fopt-info-missed = missed.all

にすべおのパスから逃した最適化レポヌトを出力したす 芋逃した。.

別の䟋ずしお、

gcc -O3 -fopt-info-inline-optimized-missed = inline.txt

逃した最適化ず最適化された堎所に関する情報をから出力したす
すべおのむンラむン化パス むンラむン.txt.

Status ファむル名 が提䟛されるず、適甚可胜なすべおの最適化からのダンプは次のようになりたす。
に連結されたす ファむル名。 それ以倖の堎合、ダンプはに出力されたす stderr。 堎合 オプション
省略され、デフォルトで 党最適、これは利甚可胜なすべおの最適化をダンプするこずを意味したす
すべおのパスからの情報。 次の䟋では、すべおの最適化情報がに出力されたす
〜ぞ stderr.

gcc -O3 -fopt-info

泚意しおください -fopt-info-vec-missed ず同じように動䜜したす -fopt-info-missed-vec.

別の䟋ずしお、

gcc -fopt-info-vec-missed = vec.miss -fopt-info-loop-optimized = loop.opt

ここにXNUMX぀の出力ファむル名がありたす vec.miss & ルヌプ.オプト XNUMX぀だけなので競合しおいたす
出力ファむルが蚱可されたす。 この堎合、最初のオプションのみが有効になり、
以降のオプションは無芖されたす。 したがっお、 vec.miss が生成されたす。
逃した機䌚に぀いおのベクトラむザヌからのダンプ。

-ftree-vectorizer-verbose =n
このオプションは掚奚されおおらず、次の芳点から実装されおいたす。 -fopt-情報。 䜿っおください
-fopt-情報-皮類 代わりに、フォヌム 皮類 有効な opt-info オプションの XNUMX ぀です。 これ
远加の最適化情報を出力したす。 為に n=0 蚺断情報はありたせん
報告。 もしも n=1 ベクトラむザヌは、ベクトル化された各ルヌプず合蚈を報告したす。
ベクトル化されたルヌプの数。 もしも n=2 ベクトラむザヌは䜍眮を報告したす。
ベクトル化できなかったものずその理由。 冗長レベルが高い堎合は、すべお
ベクトラむザヌからの分析および倉換情報がレポヌトされたす。

によっお出力される情報に泚意しおください。 -ftree-vectorizer-verbose オプションが送信されたす
stderr. 同等の圢匏の堎合 -fopt-情報-オプション=ファむル名 が䜿甚されるず、出力は
送り蟌たれた ファむル名 を代わりにお䜿いください。

-frandom-seed =文字列
このオプションは、生成時に乱数の代わりにGCCが䜿甚するシヌドを提䟛したす
コンパむルされたファむルごずに異なる必芁がある特定のシンボル名。 それも
カバレッゞデヌタファむルず生成するオブゞェクトファむルに䞀意のスタンプを配眮するために䜿甚されたす
圌ら。 あなたは䜿甚するこずができたす -frandom-シヌド 再珟可胜に同䞀のオブゞェクトを生成するオプション
ファむル。

  文字列 コンパむルするファむルごずに異なる必芁がありたす。

-fsched-verbose =n
呜什スケゞュヌリングを䜿甚するタヌゲットでは、このオプションは
スケゞュヌラヌが出力するデバッグ出力。 この情報は暙準゚ラヌに曞き蟌たれたすが、
ない限り、 -fdump-rtl-sched1 or -fdump-rtl-sched2 が指定されおいる堎合、出力されたす
通垞のダンプリストファむルに、 .sched1 or .sched2 それぞれ。 ただし、 n
XNUMXより倧きい堎合、出力は垞に暙準゚ラヌで出力されたす。

n れロより倧きい、 -fsched-verbose ず同じ情報を出力したす
-fdump-rtl-sched1 & -fdump-rtl-sched2。 のために n XNUMXより倧きい堎合は、基本的な出力も行いたす
ブロック確率、詳现な準備リスト情報、およびナニット/insn情報。 ために n
XNUMXより倧きい堎合、アボヌトポむントでのRTL、制埡フロヌ、およびリヌゞョン情報が含たれたす。 ず
for n XNUMX぀以䞊、 -fsched-verbose 䟝存関係情報も含たれたす。

-䞀時保存
-save-temps = cwd
通垞の「䞀時的な」䞭間ファむルを氞続的に保存したす。 それらを珟圚に配眮したす
ディレクトリを䜜成し、゜ヌスファむルに基づいお名前を付けたす。 したがっお、コンパむル foo.c   -c
-䞀時保存 ファむルを生成したす フヌ・アむ & foo.s、 ず同様 ふヌ。。 これにより、
前凊理 フヌ・アむ コンパむラが通垞䜿甚しおいるにもかかわらず、出力ファむル
統合プリプロセッサ。

ず組み合わせお䜿甚​​する堎合 -x コマンドラむンオプション、 -䞀時保存 賢明です
ず同じ拡匵子を持぀入力゜ヌスファむルの䞊曞きを回避するのに十分
䞭間ファむル。 察応する䞭間ファむルは、名前を倉曎するこずで取埗できたす
䜿甚する前の゜ヌスファむル -䞀時保存.

GCCを䞊行しお呌び出す堎合は、共有するいく぀かの異なる゜ヌスファむルをコンパむルしたす。
異なるサブディレクトリの共通ベヌス名たたはコンパむルされた同じ゜ヌスファむル
耇数の出力先の堎合、異なる䞊列コンパむラヌは
互いに干枉し、䞀時ファむルを䞊曞きしたす。 䟋えば

gcc -save-temps -o outdir1 / foo.o indir1 / foo.c
gcc -save-temps -o outdir2 / foo.o indir2 / foo.c

結果ずしお フヌ・アむ & ふヌ。 䞡方のコンパむラによっお同時に曞き蟌たれたす。

-save-temps = obj
通垞の「䞀時的な」䞭間ファむルを氞続的に保存したす。 の堎合 -o オプションが䜿甚されたす、
䞀時ファむルはオブゞェクトファむルに基づいおいたす。 の堎合 -o オプションは䜿甚されたせん、
-save-temps = obj スむッチは次のように動䜜したす -䞀時保存.

䟋

gcc -save-temps = obj -c foo.c
gcc -save-temps = obj -c bar.c -o dir / xbar.o
gcc -save-temps = obj foobar.c -o dir2 / yfoobar

䜜成したす。 フヌ・アむ, foo.s, dir / xbar.i, dir / xbar.s, dir2 / yfoobar.i, dir2 / yfoobar.s,
dir2 / yfoobar.o.

-時間[=file]
コンパむルシヌケンスの各サブプロセスにかかったCPU時間を報告したす。 Cの堎合
゜ヌスファむル、これは適切なコンパむラずアセンブラですさらに、リンクが
終わり。

出力ファむルを指定しない堎合、出力は次のようになりたす。

cc1 0.12 0.01
0.00ずしお

各行の最初の数字は「ナヌザヌ時間」、぀たり実行に費やされた時間です。
プログラム自䜓。 XNUMX番目の数倀は「システム時間」であり、操䜜の実行に費やされた時間です。
プログラムに代わっおシステムルヌチン。 䞡方の数倀は秒単䜍です。

出力ファむルの指定により、出力は指定されたファむルに远加されたす。
そしおそれはこのように芋えたす

0.12 0.01 cc1
0.00 0.01 as

「ナヌザヌ時間」ず「システム時間」はプログラム名の前に移動され、
プログラムに枡されたオプションが衚瀺されるので、埌でどのファむルがあったかを知るこずができたす
コンパむルされ、どのオプションで。

-fvar-远跡
倉数トラッキングパスを実行したす。 倉数が各䜍眮に栌玍されおいる堎所を蚈算したす
コヌドで。 次に、より適切なデバッグ情報が生成されたすデバッグ情報が
フォヌマットはこの情報をサポヌトしたす。

最適化を䜿甚しおコンパむルするず、デフォルトで有効になりたす-オス, -O, -O2、...、
デバッグ情報-gおよびデバッグ情報圢匏はそれをサポヌトしたす。

-fvar-远跡-割り圓お
コンパむルの早い段階でナヌザヌ倉数ぞの割り圓おに泚釈を付け、実行を詊みたす
泚釈は、コンパむルの最埌たで、詊行されたす
最適化しながらデバッグ情報を改善したす。 の䜿甚 -gdwarf-4 に沿っお掚奚されたす
それず。

var-trackingが無効になっおいる堎合でも有効にできたす。その堎合、泚釈は
䜜成および保守されたしたが、最埌に砎棄されたした。

-fvar-tracking-assignments-toggle
トグル -fvar-远跡-割り圓お、同じ方法で -グトグル トグル -g.

-print-file-name =ラむブラリ
ラむブラリファむルの完党な絶察名を出力したす ラむブラリ それは次の堎合に䜿甚されたす
リンク---そしお他に䜕もしたせん。 このオプションを䜿甚するず、GCCはコンパむルたたはリンクしたせん
なんでも; ファむル名を出力するだけです。

-print-マルチディレクトリ
他のスむッチで遞択されたmultilibに察応するディレクトリ名を出力したす
コマンドラむンに存圚したす。 このディレクトリはに存圚するこずになっおいたす GCC_EXEC_PREFIX.

-print-multi-lib
multilibディレクトリ名からそれらを有効にするコンパむラスむッチぞのマッピングを出力したす。
ディレクトリ名は、スむッチから次のように区切られおいたす。 ;、および各スむッチはで始たりたす
@ その代わりに -、耇数のスむッチの間にスペヌスを入れないでください。 これは
シェル凊理を容易にしたす。

-print-multi-os-directory
遞択したmultilibのOSラむブラリぞのパスをいく぀かの盞察的なものずしお出力したす リブ
サブディレクトリ。 OSラむブラリがに存圚する堎合 リブ サブディレクトリがあり、multilibはありたせん
䜿甚されたす、これは通垞ちょうどです .、OSラむブラリがに存圚する堎合 ラむブラリサフィックス 兄匟
これが印刷するディレクトリ䟋 ../ lib64, ../ lib or ../ lib32、たたはOSラむブラリが
に存圚する lib / subdir 印刷するサブディレクトリ䟋 amd64, spacv9 or ev6.

-print-multiarch
遞択したマルチアヌチのOSラむブラリぞのパスをいく぀かの盞察的なものずしお出力したす リブ
サブディレクトリ。

-print-prog-name =プログラム
いいね -印刷ファむル名、ただし、などのプログラムを怜玢したす cpp.

-print-libgcc-ファむル名
ず同じ -print-file-name = libgcc.a.

これは、䜿甚するずきに䟿利です -nostdlib or -nodefaultlibs しかし、あなたはずリンクしたいです
libgcc.a. できるよ

gcc -nostdlib ... `gcc -print-libgcc-file-name`

-印刷怜玢ディレクトリ
構成されたむンストヌルディレクトリの名前ずプログラムのリストを印刷し、
ラむブラリディレクトリ gccの 怜玢---そしお他に䜕もしたせん。

これは次の堎合に䟿利です gccの ゚ラヌメッセヌゞを出力したす むンストヌル 問題、 exec
cpp0 いいえ そのような file or ディレクトリにゞョブを開始したす。。 これを解決するには、どちらかを眮く必芁がありたす cpp0 ず
他のコンパむラコンポヌネント gccの それらを芋぀けるこずを期埅したす、たたはあなたは蚭定するこずができたす
環境倉数 GCC_EXEC_PREFIX それらをむンストヌルしたディレクトリに移動したす。 しないでください
末尟を忘れる /.

-印刷-sysroot
コンパむル䞭に䜿甚されるタヌゲットsysrootディレクトリを出力したす。 これは
構成時に、たたはを䜿甚しお指定されたタヌゲットsysroot --sysroot オプション、
コンパむルオプションに䟝存する远加のサフィックスが付いおいる可胜性がありたす。 タヌゲットがない堎合
sysrootが指定されおいる堎合、オプションは䜕も出力したせん。

-print-sysroot-headers-suffix
ヘッダヌを怜玢するずきにタヌゲットsysrootに远加されたサフィックスを出力するか、
コンパむラがそのようなサフィックスで構成されおいない堎合ぱラヌ---そしお䜕もしたせん
else。

-ダンプマシン
コンパむラのタヌゲットマシンを印刷したすたずえば、 i686-pc-linux-gnu---そしおしないでください
他に䜕か。

-ダンプバヌゞョン
コンパむラのバヌゞョンを出力したすたずえば、 3.0---そしお他に䜕もしないでください。

-ダンプスペック
コンパむラの組み蟌み仕様を印刷したす---そしお他には䜕もしたせん。 これは次の堎合に䜿甚されたす
GCC自䜓が構築されおいたす。

-fno-eliminate-unused-debug-types
通垞、DWARF 2出力を生成する堎合、GCCは次のデバッグシンボル出力の生成を回避したす。
コンパむル䞭の゜ヌスファむルで䜿甚されおいないタむプ。 時々それは圹に立ちたす
コンパむルナニットで宣蚀されたすべおのタむプのデバッグ情報をGCCに出力させるには、
それらがそのコンパむルナニットで実際に䜿甚されおいるかどうかに関係なく、
たずえば、デバッガヌで、実際にはないタむプに倀をキャストする堎合
プログラムで䜿甚されたすただし、宣蚀されおいたす。 ただし、倚くの堎合、これにより
かなりの量の無駄なスペヌス。

オプション それ 管理 最適化
これらのオプションは、さたざたな皮類の最適化を制埡したす。

最適化オプションがない堎合、コンパむラの目暙はコンパむルのコストを削枛するこずです
デバッグで期埅どおりの結果が埗られるようにしたす。 ステヌトメントは独立しおいたすあなたが
ステヌトメント間のブレヌクポむントでプログラムを停止するず、新しい倀をに割り圓おるこずができたす
倉数を指定するか、プログラムカりンタヌを関数内の他のステヌトメントに倉曎しお、
たさにあなたが゜ヌスコヌドから期埅する結果。

最適化フラグをオンにするず、コンパむラはパフォヌマンスの向䞊やパフォヌマンスの向䞊を詊みたす。
コンパむル時間ず、堎合によっおはデバッグ機胜を犠牲にしおコヌドサむズ
プログラム。

コンパむラヌは、プログラムに関する知識に基づいお最適化を実行したす。
耇数のファむルを䞀床に単䞀の出力ファむルモヌドにコンパむルするず、コンパむラは次のように䜿甚できたす。
各ファむルをコンパむルするずきにすべおのファむルから取埗した情報。

すべおの最適化がフラグによっお盎接制埡されるわけではありたせん。 を持っおいる最適化のみ
フラグはこのセクションにリストされおいたす。

ほずんどの最適化は、次の堎合にのみ有効になりたす。 -O レベルはコマンドラむンで蚭定されたす。 さもないず
個々の最適化フラグが指定されおいる堎合でも、これらは無効になりたす。

タヌゲットずGCCの構成方法に応じお、わずかに異なるセット
最適化はそれぞれで有効にするこずができたす -O ここにリストされおいるものよりもレベル。 GCCを呌び出すこずができたす
  -Q --help =optimizers で有効になっおいる最適化の正確なセットを芋぀けるには
各レベル。

-O
-O1 最適化。 コンパむルの最適化には倚少時間がかかり、
倧きな関数。

-O、コンパむラは、実行せずにコヌドサむズず実行時間を削枛しようずしたす
コンパむルに倚倧な時間を芁する最適化。

-O 次の最適化フラグをオンにしたす。

-fauto-inc-dec -f比范-elim -fcprop-レゞスタ -fdce -fdefer-pop -fdelayed-ブランチ
-fdse -fguess-分岐確率 -fif-倉換2 -fif-倉換 -fipa-pure-const
-fipa-プロファむル -fipa-リファレンス -fmerge-定数 -fsplit-wide-types -ftree-ビット-ccp
-ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copyrename -ftree-dce
-ftree-ドミネヌタヌ-opts -ftree-dse -ftree-forwprop -ftree-fre -ftree-phiprop -ftree-slsr
-ftree-sra -ftree-pta -ftree-ter -䞀床に䞀台

-O たたオンになりたす -fomit-フレヌムポむンタヌ そうするこずが干枉しないマシンで
デバッグあり。

-O2 さらに最適化したす。 GCCは、サポヌトされおいるほがすべおの最適化を実行したすが、実行したせん
宇宙ず速床のトレヌドオフが䌎いたす。 ず比范しお -O、このオプションは䞡方を増やしたす
コンパむル時間ず生成されたコヌドのパフォヌマンス。

-O2 で指定されたすべおの最適化フラグをオンにしたす -O。 たた、次をオンにしたす
最適化フラグ -fthread-ゞャンプ -falign-関数 -falign-ゞャンプ -falign-ルヌプ
-falign-ラベル -fcaller-saves -クロスゞャンピング -fcse-フォロヌゞャンプ -fcse-スキップ-ブロック
-fdelete-null-pointer-checks -fdevirtualize -高䟡な最適化 -fgcse
-fgcse-lm -fhoist-隣接ロヌド -finline-small-functions -findirect-むンラむン化
-フィパスラ -foptimize-兄匟呌び出し -郚分的なむンラむン化 -fのぞき穎2 -fregmove
-フリヌオヌダヌブロック -freorder-関数 -frerun-cse-ルヌプ埌 -fsched-むンタヌブロック
-fsched-spec -fschedule-insn -fschedule-insns2 -fstrict-゚むリアシング -fstrict-オヌバヌフロヌ
-ftree-スむッチ倉換 -ftree-tail-merge -ftree-pre -ftree-vrp

䞋の譊告に泚意しおください -fgcse 呌び出しに぀いお -O2 蚈算を䜿甚するプログラム
ゎトス。

泚Ubuntu 8.10以降のバヌゞョンでは、 -D_FORTIFY_SOURCE = 2 デフォルトで蚭定されおおり、
起動するず -O 2以䞊に蚭定されおいたす。 これにより、远加のコンパむル時ず
いく぀かのlibc関数の実行時チェック。 無効にするには、次のいずれかを指定したす
-U_FORTIFY_SOURCE or -D_FORTIFY_SOURCE = 0.

-O3 さらに最適化したす。 -O3 で指定されたすべおの最適化をオンにしたす -O2 たた、オンになりたす
  -finline-関数, -funswitch-ルヌプ, -fpredictive-commoning, -fgcse-アフタヌリロヌド,
-ftree-ベクトル化, -fvect-cost-モデル, -ftree-郚分-pre & -fipa-cp-クロヌン オプション。

-O0 コンパむル時間を短瞮し、デバッグで期埅どおりの結果が埗られるようにしたす。 これは
デフォルト。

-オス サむズを最適化したす。 -オス すべおを有効にしたす -O2 通垞は増加しない最適化
コヌドサむズ。 たた、コヌドサむズを削枛するように蚭蚈されたさらなる最適化も実行したす。

-オス 次の最適化フラグを無効にしたす。 -falign-関数 -falign-ゞャンプ
-falign-ルヌプ -falign-ラベル -フリヌオヌダヌブロック -freeorder-blocks-and-partition
-fprefetch-ルヌプ配列

-オヌファスト
厳栌な芏栌ぞの準拠は無芖しおください。 -オヌファスト すべおを有効にしたす -O3 最適化。 たた
すべおの暙準準拠プログラムに有効ではない最適化を有効にしたす。 それ
オンになりたす -ffast-æ•°å­Š およびFortran固有 -fno-protect-parens & -fstack-配列.

-オグ デバッグ゚クスペリ゚ンスを最適化したす。 -オグ 干枉しない最適化を可胜にしたす
デバッグ。 これは、暙準線集で遞択する最適化レベルである必芁がありたす-
コンパむル-デバッグサむクル、維持しながら劥圓なレベルの最適化を提䟛
高速コンパむルず優れたデバッグ゚クスペリ゚ンス。

耇数䜿甚する堎合 -O オプション、レベル番号の有無にかかわらず、最埌のそのようなオプションは
効果的なもの。

フォヌムのオプション -fフラグ マシンに䟝存しないフラグを指定したす。 ほずんどのフラグには䞡方がありたす
ポゞティブフォヌムずネガティブフォヌム。 の負の圢匏 -ふふヌ is -fno-foo。 䞋の衚では、
フォヌムのXNUMX぀だけがリストされおいたす---あなたが通垞䜿甚するもの。 あなたは他を理解するこずができたす
削陀するこずによっお圢成する NO- たたはそれを远加したす。

次のオプションは、特定の最適化を制埡したす。 それらはどちらかによっおアクティブ化されたす -O
オプションたたはあるものに関連しおいたす。 たれに次のフラグを䜿甚できたす
実行する最適化の「埮調敎」が必芁な堎合。

-fno-デフォルト-むンラむン
内郚で定矩されおいるずいう理由だけで、メンバヌ関数をデフォルトでむンラむン化しないでください
クラス スコヌプ (C++ のみ)。 それ以倖の堎合は、指定するずきに -O、メンバヌ関数の定矩
クラススコヌプ内では、デフォルトでむンラむンでコンパむルされたす。 ぀たり、远加する必芁はありたせん むンラむン
メンバヌ関数名の前に。

-fno-defer-pop
その関数が戻るずすぐに、垞に各関数呌び出しの匕数をポップしたす。 にずっお
関数呌び出しの埌に匕数をポップする必芁があるマシンでは、コンパむラは通垞、
匕数は、いく぀かの関数呌び出しのためにスタックに蓄積され、それらすべおを次の堎所にポップしたす。
䞀床。

レベルで無効 -O, -O2, -O3, -オス.

-前方䌝播
RTLで順方向䌝搬パスを実行したす。 パスはXNUMX぀の呜什を組み合わせようずしたす
結果を簡略化できるかどうかを確認したす。 ルヌプ展開がアクティブな堎合、XNUMX぀のパス
が実行され、XNUMX番目はルヌプ展開埌にスケゞュヌルされたす。

このオプションは、最適化レベルでデフォルトで有効になっおいたす -O, -O2, -O3, -オス.

-ffp-contract =
-ffp-contract = off 浮動小数点匏の瞮小を無効にしたす。 -ffp-contract = fast
融合乗算加算の圢成などの浮動小数点匏の瞮小を可胜にしたす
タヌゲットがネむティブサポヌトを持っおいる堎合の操䜜。 -ffp-contract = on 可胜
蚀語暙準で蚱可されおいる堎合は、浮動小数点匏の瞮小。 これは
珟圚実装されおおらず、同等に扱われおいたす -ffp-contract = off.

デフォルトは -ffp-contract = fast.

-fomit-フレヌムポむンタヌ
フレヌムポむンタを必芁ずしない関数のレゞスタにフレヌムポむンタを保持しないでください。 これ
フレヌムポむンタを保存、蚭定、埩元する手順を回避したす。 それはたた
倚くの機胜で利甚可胜な远加のレゞスタ。 It たた MAKES デバッギング 䞍可胜 on
侀郹 マシン。

VAXなどの䞀郚のマシンでは、暙準であるため、このフラグは効果がありたせん。
呌び出しシヌケンスは自動的にフレヌムポむンタを凊理し、䜕も保存されたせん
存圚しないふりをしたす。 マシン蚘述マクロ「FRAME_POINTER_REQUIRED」
タヌゲットマシンがこのフラグをサポヌトするかどうかを制埡したす。

GCCバヌゞョン4.6以降、デフォルト蚭定サむズを最適化しおいない堎合
32ビットGNU/Linuxx86および32ビットDarwinx86タヌゲットがに倉曎されたした
-fomit-フレヌムポむンタヌ。 デフォルトに戻すこずができたす -fno-省略フレヌムポむンタ by
でGCCを構成する --有効フレヌムポむンタ オプションを構成したす。

レベルで有効 -O, -O2, -O3, -オス.

-foptimize-兄匟呌び出し
兄匟呌び出しず末尟再垰呌び出しを最適化したす。

レベルで有効 -O2, -O3, -オス.

-fno-むンラむン
「always_inline」でマヌクされた関数以倖の関数をむンラむン展開しないでください
属性。 これは、最適化しない堎合のデフォルトです。

単䞀の関数を「noinline」でマヌクするこずにより、むンラむン化を免陀できたす。
属性。

-finline-small-functions
䜓が予想よりも小さい堎合は、呌び出し元に関数を統合したす
関数呌び出しコヌドしたがっお、プログラムの党䜓的なサむズは小さくなりたす。 コンパむラ
統合する䟡倀があるほど単玔な関数をヒュヌリスティックに決定したす
こちらです。 このむンラむン化は、むンラむンで宣蚀されおいない関数も含め、すべおの関数に適甚されたす。

レベルで有効 -O2.

-findirect-むンラむン化
むンラむンも、コンパむル時に既知であるこずが刀明した間接呌び出しのおかげで
前のむンラむン化。 このオプションは、むンラむン化自䜓がオンになっおいる堎合にのみ効果がありたす
を通じお、タンピングされたコヌヒヌベッドの䞊から均䞀にフィルタヌバスケットの内の粉に浞透しおいきたす。 -finline-関数 or -finline-small-functions オプション。

レベルで有効 -O2.

-finline-関数
むンラむンずしお宣蚀されおいない堎合でも、むンラむン化するためのすべおの関数を怜蚎しおください。 The
コンパむラヌは、この方法で統合する䟡倀のある関数をヒュヌリスティックに決定したす。

特定の関数ぞのすべおの呌び出しが統合され、関数が宣蚀されおいる堎合
「静的」の堎合、関数は通垞、それ自䜓でアセンブラコヌドずしお出力されたせん。

レベルで有効 -O3.

-finline-functions-call-once
呌び出し元にむンラむン化するために䞀床呌び出されるすべおの「静的」関数を考慮しおください。
それらは「むンラむン」ずマヌクされおいたせん。 特定の関数の呌び出しが統合されおいる堎合、
関数は、それ自䜓ではアセンブラコヌドずしお出力されたせん。

レベルで有効 -O1, -O2, -O3 & -オス.

-恐ろしくむンラむン化
「always_inline」でマヌクされたむンラむン関数ず、本䜓が
実行する前の早い段階で関数呌び出しのオヌバヌヘッド -fprofile-generate 蚈装ず
実際のむンラむンパス。 そうするこずで、プロファむリングが倧幅に安くなり、通垞は
ネストされたラッパヌ関数の倧きなチェヌンを持぀プログラムでは、より高速にむンラむン化できたす。

デフォルトで有効になっおいたす。

-フィパスラ
集蚈の手続き間スカラヌ眮換、未䜿甚のパラメヌタヌの削陀を実行したす
参照によっお枡されたパラメヌタヌを倀によっお枡されたパラメヌタヌに眮き換える。

レベルで有効 -O2, -O3 & -オス.

-finline-limit =n
デフォルトでは、GCCはむンラむン化できる関数のサむズを制限したす。 このフラグにより​​、
この制限の倧たかな制埡。 n むンラむン化できる関数のサむズです
疑䌌呜什の数。

むンラむン化は、実際には、指定できるいく぀かのパラメヌタヌによっお制埡されたす。
を䜿甚しお個別に --パラメヌタ 名=倀を遞択したす。 -finline-limit =n オプションはいく぀かを蚭定したす
これらのパラメヌタは次のずおりです。

max-inline-insn-single
に蚭定されおいたす n/ 2。

max-inline-insns-auto
に蚭定されおいたす n/ 2。

むンラむン化ずむンラむン化を制埡する個々のパラメヌタヌのドキュメントに぀いおは、以䞋を参照しおください。
これらのパラメヌタのデフォルトに぀いお。

泚 䟡倀がないかもしれたせん -finline 制限 その結果、デフォルトの動䜜になりたす。

泚 疑䌌呜什は、この特定のコンテキストでは、抜象を衚したす
関数のサむズの枬定。 決しおアセンブリの数を衚すものではありたせん
指瀺など、その正確な意味はXNUMX぀のリリヌスから
別。

-fno-keep-inline-dllexport
これは、よりきめ现かいバヌゞョンです。 -fkeep-むンラむン関数、これはにのみ適甚されたす
「dllexport」属性たたはdeclspecを䜿甚しお宣蚀された関数

-fkeep-むンラむン関数
Cでは、「むンラむン」ず宣蚀された「静的」関数をオブゞェクトファむルに出力したす。
関数はすべおの呌び出し元にむンラむン化されおいたす。 このスむッチは圱響したせん
GNUC90の「externinline」拡匵を䜿甚する関数。 C ++では、すべおを攟出したす
オブゞェクトファむルぞのむンラむン関数。

-fkeep-static-consts
最適化がオンになっおいない堎合でも、「staticconst」ず宣蚀された倉数を出力したす。
倉数は参照されたせん。

GCCは、このオプションをデフォルトで有効にしたす。 コンパむラに次のこずを確認させる堎合
最適化がオンになっおいるかどうかに関係なく、倉数が参照されたす。
  -fno-keep-static-consts オプションを遞択したす。

-fmerge-定数
同䞀の定数文字列定数ず浮動小数点定数のマヌゞを詊みたす
コンパむルナニット間。

このオプションは、アセンブラヌずリンカヌが最適化されたコンパむルのデフォルトです。
それをサポヌトしたす。 䜿甚する -fno-merge-定数 この動䜜を犁止したす。

レベルで有効 -O, -O2, -O3, -オス.

-fmerge-all-constants
同䞀の定数ず同䞀の倉数をマヌゞしおみおください。

このオプションは、 -fmerge-定数。 に加えお -fmerge-定数 この
たずえば、定数で初期化された配列たたは初期化された定数倉数でさえ考慮したす
敎数型たたは浮動小数点型。 CやC++のような蚀語には、各倉数が必芁です。
再垰呌び出しに同じ倉数の耇数のむンスタンスを含めお、区別する
そのため、このオプションを䜿甚するず、動䜜が䞍適合になりたす。

-fmodulo-sched
最初のスケゞュヌリングパスの盎前にスむングモゞュロスケゞュヌリングを実行したす。 これ
passは最も内偎のルヌプを調べ、異なるものをオヌバヌラップさせるこずによっおそれらの呜什を䞊べ替えたす
反埩。

-fmodulo-sched-allow-regmoves
レゞスタの移動を蚱可しお、より積極的なSMSベヌスのモゞュロスケゞュヌリングを実行したす。 に
このフラグを蚭定するず、特定の䟝存関係のない゚ッゞが削陀され、
ラむフレンゞ分析に基づくreg-movesの生成。 このオプションは効果的です
ずのみ -fmodulo-sched 有効になりたした。

-fno-分岐数-reg
カりントレゞスタで「デクリメントず分岐」呜什を䜿甚せず、代わりに
レゞスタをデクリメントする䞀連の呜什を生成し、それず比范したす
れロの堎合、結果に基づいお分岐したす。 このオプションは、
x86、PowerPC、IA-64、および
S / 390。

デフォルトは -fbranch-count-reg.

-fno-function-cse
関数アドレスをレゞスタに入れないでください。 を呌び出す各呜什を䜜成したす
定数関数には、関数のアドレスが明瀺的に含たれおいたす。

このオプションを䜿甚するず、コヌドの効率が䜎䞋したすが、
アセンブラの出力は、このオプションが次の堎合に実行される最適化によっお混乱する可胜性がありたす。
䜿甚されおいない。

デフォルトは -ffunction-cse

-fno-zero-in-bss で初期化
タヌゲットがBSSセクションをサポヌトしおいる堎合、GCCはデフォルトで次の倉数を配眮したす。
BSSにれロに初期化されたす。 これにより、結果のコヌドのスペヌスを節玄できたす。

䞀郚のプログラムは倉数に明瀺的に䟝存しおいるため、このオプションはこの動䜜をオフにしたす
デヌタセクションに移動---たずえば、結果の実行可胜ファむルが
そのセクションの始たりおよび/たたはそれに基づいお仮定を立おたす。

デフォルトは -fzero-bss で初期化.

-fマッドフラップ -fマッドフラップス -fmudflapir
それをサポヌトするフロント゚ンド (C および C++) の堎合、すべおの危険なポむンタヌ/配列をむンストルメント化したす。
逆参照操䜜、䞀郚の暙準ラむブラリ文字列/ヒヌプ関数、およびその他の䞀郚
範囲/有効性テストに関連する構造。 そのようにむンストルメント化されたモゞュヌルは、
バッファ オヌバヌフロヌ、無効なヒヌプの䜿甚、その他の C/C++ クラスの圱響を受けない
プログラミング ゚ラヌ。 むンストルメンテヌションは別のランタむム ラむブラリに䟝存しおいたす
(リブマッドフラップ)、堎合にプログラムにリンクされたす -fマッドフラップ リンク時に提䟛されたす。 走る-
むンストルメント化されたプログラムの時間動䜜は、によっお制埡されたす。 マッドフラップ_オプション
環境倉数。 オプションに぀いおは、「env MUDFLAP_OPTIONS=-help a.out」を参照しおください。

  -fマッドフラップス -fマッドフラップ プログラムが耇数の堎合にコンパむルおよびリンクする
ねじ蟌みたす。 䜿甚する -fmudflapir、 に加えお -fマッドフラップ or -fマッドフラップス、もし
むンストルメンテヌションはポむンタヌ読み取りを無芖する必芁がありたす。 これにより、むンストルメンテヌションが少なくなりたす (そしお
したがっお、実行が高速になりたす、完党なメモリに察する保護を提䟛したす
曞き蟌みを砎損したすが、誀っお読み取られたデヌタがプログラム内で䌝播するこずを蚱可したす。

-fthread-ゞャンプ
ゞャンプが別の堎所に分岐するかどうかを確認する最適化を実行したす
最初のものに含たれる比范が芋぀かりたす。 その堎合、最初のブランチはにリダむレクトされたす
XNUMX番目のブランチの宛先、たたはその盎埌のポむントのいずれか、
条件が真であるか停であるかによっお異なりたす。

レベルで有効 -O2, -O3, -オス.

-fsplit-wide-types
32ビットの「longlong」など、耇数のレゞスタを占有するタむプを䜿甚する堎合
システムでは、レゞスタを分割しお個別に割り圓おたす。 これは通垞
これらのタむプに察しおより適切なコヌドを生成したすが、デバッグがより困難になる可胜性がありたす。

レベルで有効 -O, -O2, -O3, -オス.

-fcse-フォロヌゞャンプ
共通郚分匏陀去CSEでは、次の堎合にゞャンプ呜什をスキャンしたす。
ゞャンプのタヌゲットは、他のパスでは到達したせん。 たずえば、CSEが遭遇したずき
「else」句を含む「if」ステヌトメントの堎合、CSEは条件が発生したずきにゞャンプの埌に続きたす
テスト枈みはfalseです。

レベルで有効 -O2, -O3, -オス.

-fcse-スキップ-ブロック
これは -fcse-フォロヌゞャンプ、ただし、CSEはゞャンプを远跡したす。
条件付きでブロックをスキップしたす。 CSEが単玔な「if」ステヌトメントに遭遇したずき
else節、 -fcse-スキップ-ブロック CSEが本䜓の呚りのゞャンプを远跡するようにしたす
"もしも"。

レベルで有効 -O2, -O3, -オス.

-frerun-cse-ルヌプ埌
ルヌプ最適化が実行された埌、共通郚分匏陀去を再実行したす。

レベルで有効 -O2, -O3, -オス.

-fgcse
グロヌバル共通郚分匏陀去パスを実行したす。 このパスも実行したす
グロヌバル定数ずコピヌ䌝播。

泚 GCC拡匵機胜である蚈算されたgotoを䜿甚しおプログラムをコンパむルするず、次のようになりたす。
グロヌバル共通郚分匏陀去を無効にするず、実行時のパフォヌマンスが向䞊したす
远加しお枡す -fno-gcse コマンドラむンに。

レベルで有効 -O2, -O3, -オス.

-fgcse-lm
日時 -fgcse-lm が有効になっおいる堎合、グロヌバル共通郚分匏陀去は移動を詊みたす
店舗によっおのみ殺される負荷。 これにより、
ルヌプ倖のロヌドに倉曎されるロヌド/ストアシヌケンス、およびルヌプ内のコピヌ/ストア
ルヌプ

デフォルトで有効になっおいる堎合 -fgcse 有効になっおいたす。

-fgcse-sm
日時 -fgcse-sm が有効になっおいる堎合、ストアモヌションパスはグロヌバルコモンの埌に実行されたす
郚分匏陀去。 このパスは、ストアをルヌプの倖に移動しようずしたす。 䜿甚時
ず䞀緒に -fgcse-lm、ロヌド/ストアシヌケンスを含むルヌプを倉曎できたす
ルヌプの前にロヌドし、ルヌプの埌にストアしたす。

どの最適化レベルでも有効になっおいたせん。

-fgcse-ラス
日時 -fgcse-ラス が有効になっおいる堎合、グロヌバル共通郚分匏陀去パス
同じメモリ䜍眮䞡方に栌玍された埌に発生する冗長な負荷を排陀したす
郚分的および完党な冗長性。

どの最適化レベルでも有効になっおいたせん。

-fgcse-アフタヌリロヌド
日時 -fgcse-アフタヌリロヌド が有効になっおいる堎合、冗長負荷陀去パスが実行されたす
リロヌド埌。 このパスの目的は、冗長な流出をクリヌンアップするこずです。

-faggressive-loop-optimizations
このオプションは、蚀語制玄を䜿甚しお次の境界を導出するようにルヌプオプティマむザに指瀺したす。
ルヌプの反埩回数。 これは、ルヌプコヌドが呌び出さないこずを前提ずしおいたす
たずえば、笊号付き敎数のオヌバヌフロヌたたは範囲倖を匕き起こすこずによる未定矩の動䜜
配列アクセス。 ルヌプの反埩回数の範囲は、ガむドに䜿甚されたす
ルヌプの展開ずピヌリング、およびルヌプ終了テストの最適化。 このオプションは有効です
デフォルトでは

-funsafe ルヌプの最適化
このオプションは、ルヌプオプティマむザに、ルヌプむンデックスがオヌバヌフロヌしないず想定するように指瀺したす。
重芁な終了条件を持぀ルヌプは無限ではありたせん。 これにより、より広い
ルヌプオプティマむザ自䜓がこれらを蚌明できない堎合でも、ルヌプ最適化の範囲
仮定は有効です。 䜿甚する堎合 -Wunsafe ルヌプの最適化、コンパむラは譊告したす
この皮のルヌプが芋぀かった堎合。

-クロスゞャンピング
クロスゞャンプ倉換を実行したす。 この倉換により、同等のコヌドず
コヌドサむズを節玄したす。 結果のコヌドは、クロスなしの堎合よりもパフォヌマンスが向䞊する堎合ずそうでない堎合がありたす。
ゞャンピング。

レベルで有効 -O2, -O3, -オス.

-fauto-inc-dec
アドレスの増分たたは枛分をメモリアクセスず組み合わせたす。 このパスは
これをサポヌトするための指瀺がないアヌキテクチャでは垞にスキップされたす。
デフォルトで有効になっおいたす -O これをサポヌトするアヌキテクチャではそれ以䞊です。

-fdce
RTLでデッドコヌド陀去DCEを実行したす。 デフォルトで有効になっおいたす -O そしおより高い。

-fdse
RTLでデッドストア陀去DSEを実行したす。 デフォルトで有効になっおいたす -O そしおより高い。

-fif-倉換
条件付きゞャンプをブランチのない同等のものに倉換しようずしたす。 これも
条件付き移動、最小、最倧、フラグずabs呜什の蚭定、およびいく぀かのトリックの䜿甚
暙準の算術挔算で実行できたす。 チップ䞊での条件付き実行の䜿甚
利甚可胜は「if-conversion2」によっお制埡されたす。

レベルで有効 -O, -O2, -O3, -オス.

-fif-倉換2
条件付き実行利甚可胜な堎合を䜿甚しお、条件付きゞャンプをに倉換したす
ブランチレスの同等物。

レベルで有効 -O, -O2, -O3, -オス.

-fdelete-null-pointer-checks
プログラムがnullポむンタヌを安党に逆参照できず、コヌドやデヌタがないず仮定したす。
芁玠はそこにありたす。 これにより、単玔な定数畳み蟌みの最適化が可胜になりたす。
最適化レベル。 さらに、GCCの他の最適化パスは、このフラグを䜿甚しお
nullポむンタの無駄なチェックを排陀するグロヌバルデヌタフロヌ分析を制埡したす。
これらは、ポむンタがすでに逆参照された埌にチェックされた堎合、
nullにするこずはできたせん。

ただし、䞀郚の環境では、この仮定は正しくないこずに泚意しおください。 䜿甚する
-fno-delete-null-pointer-checks 䟝存するプログラムに察しおこの最適化を無効にする
その振る舞いに぀いお。

䞀郚のタヌゲット、特に埋め蟌みタヌゲットでは、すべおのレベルでこのオプションが無効になっおいたす。 さもないず
すべおのレベルで有効になっおいたす。 -O0, -O1, -O2, -O3, -オス。 情報を䜿甚するパス
さたざたな最適化レベルで個別に有効になりたす。

-fdevirtualize
呌び出しを仮想関数から盎接呌び出しに倉換しおみおください。 これは䞡方で行われたす
プロシヌゞャ内および間接むンラむン化の䞀郚ずしおのプロシヌゞャ間
"-findirect-inlining"および手続き間定数䌝播-fipa-cp。 有効
レベルで -O2, -O3, -オス.

-高䟡な最適化
比范的費甚のかかるいく぀かのマむナヌな最適化を実行したす。

レベルで有効 -O2, -O3, -オス.

フリヌ
冗長な拡匵呜什を削陀しおみおください。 これは特に圹立ちたす
x86-64アヌキテクチャは、64ビットレゞスタで暗黙的にれロ拡匵したす。
䞋半分の32ビットに曞き蟌みたす。

レベルでx86に察しお有効 -O2, -O3.

-foptimize-登録-移動
-fregmove
移動呜什で、および他の呜什のオペランドずしお、レゞスタ番号を再割り圓おしようずしおいたす。
レゞスタ結合の量を最倧化するための簡単な呜什。 これは
XNUMX オペランド呜什のマシンで特に圹立ちたす。

Note -fregmove & -foptimize-登録-移動 同じ最適化です。

レベルで有効 -O2, -O3, -オス.

-fira-algorithm =アルゎリズム
統合レゞスタアロケヌタに指定されたカラヌリングアルゎリズムを䜿甚したす。 The
アルゎリズム 匕数は 優先順䜍、Chowの優先色付けを指定する、たたは CB,
Chaitin-Briggsのカラヌリングを指定したす。 Chaitin-Briggsのカラヌリングは実装されおいたせん
すべおのアヌキテクチャで、ただしそれをサポヌトするタヌゲットでは、これがデフォルトです
より良いコヌドを生成するからです。

-fira-region =地域
統合レゞスタアロケヌタに指定された領域を䜿甚したす。 The 地域 匕数
次のいずれかになりたす。

を すべおのルヌプをレゞスタ割り圓お領域ずしお䜿甚したす。 これにより、次の堎合に最良の結果が埗られたす。
小さなおよび/たたは䞍芏則なレゞスタセットを備えたマシン。

混合
領域ずしおレゞスタ圧力が小さいルヌプを陀くすべおのルヌプを䜿甚したす。 これ
倀は通垞、ほずんどの堎合、ほずんどのアヌキテクチャで最良の結果をもたらしたす。
速床の最適化を䜿甚しおコンパむルする堎合、デフォルトで有効になっおいたす-O, -O2、...。

XNUMX぀ すべおの機胜を単䞀の領域ずしお䜿甚したす。 これにより、通垞、コヌドが最小になりたす
サむズであり、デフォルトで有効になっおいたす -オス or -O0.

-フィラホむスト圧力
IRAを䜿甚しお、巻き䞊げを決定するためのコヌド巻き䞊げパスのレゞスタ圧力を評䟡したす
匏。 このオプションを䜿甚するず、通垞、コヌドが小さくなりたすが、速床が䜎䞋する可胜性がありたす。
コンパむラがダりンしおいたす。

このオプションはレベルで有効になっおいたす -オス すべおのタヌゲットに察しお。

-フィラルヌプ圧力
IRAを䜿甚しお、ルヌプ䞍倉条件を移動する決定のためにルヌプ内のレゞスタ圧力を評䟡したす。
このオプションを䜿甚するず、通垞、次のマシンでより高速で小さなコヌドが生成されたす。
倧きなレゞスタファむル> = 32レゞスタですが、コンパむラの速床が䜎䞋する可胜性がありたす。

このオプションはレベルで有効になっおいたす -O3 䞀郚のタヌゲットの堎合。

-fno-ira-share-save-slots
通話で䜿甚されるハヌドレゞスタを保存するために䜿甚されるスタックスロットの共有を無効にしたす。
呌び出し。 各ハヌドレゞスタは個別のスタックスロットを取埗し、その結果、関数スタックを取埗したす
フレヌムが倧きくなりたす。

-fno-ira-share-spill-slots
疑䌌レゞスタに割り圓おられたスタックスロットの共有を無効にしたす。 各疑䌌レゞスタ
ハヌドレゞスタを取埗しない堎合は、別のスタックスロットを取埗し、その結果、関数
スタックフレヌムが倧きくなりたす。

-fira-verbose =n
統合レゞスタアロケヌタのダンプファむルの詳现床を制埡したす。 ザ
デフォルト倀は5です。倀が n 10以䞊の堎合、ダンプ出力が送信されたす
ず同じ圢匏を䜿甚しおstderrに n マむナス10。

-fdelayed-ブランチ
タヌゲットマシンでサポヌトされおいる堎合は、悪甚する呜什を䞊べ替えおみおください
遅延分岐呜什の埌に䜿甚可胜な呜什スロット。

レベルで有効 -O, -O2, -O3, -オス.

-fschedule-insn
タヌゲットマシンでサポヌトされおいる堎合は、呜什を䞊べ替えお削陀しおみおください
必芁なデヌタが利甚できないため、実行が停止したす。 これは、
他の呜什に次のこずを蚱可するこずにより、浮動小数点たたはメモリロヌド呜什が遅くなりたす
ロヌドたたは浮動小数点呜什の結果が必芁になるたで発行されたす。

レベルで有効 -O2, -O3.

-fschedule-insns2
そしお -fschedule-insn、ただし、呜什スケゞュヌリングの远加パスを芁求したす
レゞスタ割り圓おが行われた埌。 これは、
レゞスタの数が比范的少なく、メモリロヌド呜什が
XNUMXサむクル。

レベルで有効 -O2, -O3, -オス.

-fno-sched-interblock
基本ブロック党䜓で呜什をスケゞュヌルしないでください。 これは通垞、デフォルトで有効になっおいたす
レゞスタ割り圓おの前にスケゞュヌリングする堎合、぀たり -fschedule-insn たたはで -O2 or
高いです。

-fno-sched-spec
非ロヌド呜什の投機的な動きを蚱可しないでください。 これは通垞、によっお有効になりたす
レゞスタ割り圓おの前にスケゞュヌリングするずきのデフォルト、぀たり -fschedule-insn たたはで
-O2 以䞊です。

-fsched-圧力
レゞスタ割り圓おの前に、レゞスタ圧力に敏感なinsnスケゞュヌリングを有効にしたす。 これ
レゞスタ割り圓おが有効になる前にスケゞュヌリングする堎合にのみ意味がありたす。
-fschedule-insn たたはで -O2 以䞊。 このオプションを䜿甚するず、生成されたものを改善できたす
レゞスタ圧力が数倀を超えお増加するのを防ぐこずにより、コヌドを䜜成しおサむズを小さくしたす
利甚可胜なハヌドレゞスタずそれに続くレゞスタ割り圓おの流出の数。

-fsched-spec-load
䞀郚のロヌド呜什の投機的な動きを蚱可したす。 これは、次の堎合にのみ意味がありたす
レゞスタ割り圓お前のスケゞュヌリング、぀たり -fschedule-insn たたはで -O2 以䞊です。

-fsched-spec-load-dangerous
より倚くのロヌド呜什の投機的な動きを蚱可したす。 これは、次の堎合にのみ意味がありたす
レゞスタ割り圓お前のスケゞュヌリング、぀たり -fschedule-insn たたはで -O2 以䞊です。

-fsched-stalled-insn
-fsched-stalled-insns =n
停止したキュヌから時期尚早に移動できるinsn存圚する堎合の数を定矩したす
XNUMX番目のスケゞュヌリングパス䞭に準備完了リストに挿入したす。 -fno-sched-stalled-insn
時期尚早に移動されるinsnがないこずを意味したす。 -fsched-stalled-insns = 0 ないこずを意味したす
キュヌに入れられたinsnを時期尚早に移動できる数の制限。 -fsched-stalled-insn
倀なしはず同等です -fsched-stalled-insns = 1.

-fsched-stalled-insns-dep
-fsched-stalled-insns-dep =n
停止したinsnぞの䟝存関係に぀いお怜査されるinsnグルヌプサむクルの数を定矩したす
これは、停止したinsnのキュヌからの時期尚早な削陀の候補です。 これは持っおいたす
XNUMX番目のスケゞュヌリングパス䞭にのみ効果があり、次の堎合にのみ効果がありたす。 -fsched-stalled-insn is
䞭叀。 -fno-sched-stalled-insns-dep に盞圓したす -fsched-stalled-insns-dep = 0.
-fsched-stalled-insns-dep 倀なしはず同等です
-fsched-stalled-insns-dep = 1.

-fsched2-use-スヌパヌブロック
レゞスタ割り圓お埌にスケゞュヌリングする堎合は、スヌパヌブロックスケゞュヌリングを䜿甚しおください。 これにより、
基本ブロックの境界を越えた動きにより、スケゞュヌルが速くなりたす。 このオプションは
GCCで䜿甚されるすべおのマシン蚘述がCPUを十分に厳密にモデル化しおいるわけではないため、実隓的です
アルゎリズムからの信頌できない結果を回避するため。

これは、レゞスタ割り圓お埌にスケゞュヌリングする堎合にのみ意味がありたす。
-fschedule-insns2 たたはで -O2 以䞊です。

-fsched-group-ヒュヌリスティック
スケゞュヌラでグルヌプヒュヌリスティックを有効にしたす。 このヒュヌリスティックは呜什を支持したす
スケゞュヌルグルヌプに属したす。 スケゞュヌリングが次の堎合、これはデフォルトで有効になっおいたす
有効、぀たり -fschedule-insn or -fschedule-insns2 たたはで -O2 以䞊です。

-fsched-クリティカルパス-ヒュヌリスティック
スケゞュヌラでクリティカルパスヒュヌリスティックを有効にしたす。 このヒュヌリスティックな奜意
クリティカルパスに関する指瀺。 スケゞュヌリングが次の堎合、これはデフォルトで有効になっおいたす
有効、぀たり -fschedule-insn or -fschedule-insns2 たたはで -O2 以䞊です。

-fsched-spec-insn-ヒュヌリスティック
スケゞュヌラで投機的呜什ヒュヌリスティックを有効にしたす。 このヒュヌリスティックな奜意
䟝存関係の匱点が倧きい投機的呜什。 これはデフォルトで有効になっおいたす
スケゞュヌリングが有効になっおいる堎合、぀たり -fschedule-insn or -fschedule-insns2 たたはで -O2
以䞊です。

-fsched-rank-ヒュヌリスティック
スケゞュヌラでランクヒュヌリスティックを有効にしたす。 このヒュヌリスティックは呜什を支持したす
より倧きなサむズたたは頻床の基本ブロックに属したす。 これはデフォルトで有効になっおいたす
スケゞュヌリングが有効になっおいる堎合、぀たり -fschedule-insn or -fschedule-insns2 たたはで -O2
以䞊です。

-fsched-last-insn-ヒュヌリスティック
スケゞュヌラヌで最埌の呜什のヒュヌリスティックを有効にしたす。 このヒュヌリスティックは
スケゞュヌルされた最埌の呜什にあたり䟝存しない呜什。 これは有効です
デフォルトでは、スケゞュヌリングが有効になっおいる堎合、぀たり -fschedule-insn or -fschedule-insns2
たたはで -O2 以䞊です。

-fsched-dep-count-ヒュヌリスティック
スケゞュヌラヌで埓属カりントヒュヌリスティックを有効にしたす。 このヒュヌリスティックは
それに応じおより倚くの呜什がある呜什。 これはデフォルトで有効になっおいたす
スケゞュヌリングが有効になっおいる堎合、぀たり -fschedule-insn or -fschedule-insns2 たたはで -O2
以䞊です。

-freschedule-modulo-scheduled-loops
モゞュロスケゞュヌリングは、埓来のスケゞュヌリングの前に実行されたす。 ルヌプがモゞュロの堎合
スケゞュヌルされた埌のスケゞュヌルパスは、スケゞュヌルを倉曎する堎合がありたす。 このオプションを䜿甚しお
その動䜜を制埡したす。

-遞択的スケゞュヌリング
遞択的スケゞュヌリングアルゎリズムを䜿甚しお呜什をスケゞュヌルしたす。 遞択的スケゞュヌリングの実行
最初のスケゞュヌラパスの代わりに。

-f遞択的スケゞュヌリング2
遞択的スケゞュヌリングアルゎリズムを䜿甚しお呜什をスケゞュヌルしたす。 遞択的スケゞュヌリングの実行
XNUMX番目のスケゞュヌラパスの代わりに。

-fsel-sched-パむプラむン
遞択的スケゞュヌリング䞭に最も内偎のルヌプの゜フトりェアパむプラむンを有効にしたす。 これ
オプションのいずれかがない限り、効果はありたせん -遞択的スケゞュヌリング or -f遞択的スケゞュヌリング2
オンになっおいたす。

-fsel-sched-pipelining-outer-loops
遞択的スケゞュヌリング䞭にルヌプをパむプラむン化する堎合は、倖郚ルヌプもパむプラむン化したす。 これ
オプションは、 -fsel-sched-パむプラむン オンになっおいたす。

-fshrink-wrap
関数プロロヌグを必芁ずする関数の郚分の前でのみ、関数プロロヌグを発行したす。
関数の䞊郚。 このフラグは、デフォルトで有効になっおいたす。 -O そしおより高い。

-fcaller-saves
関数呌び出しによっお砎壊されたレゞスタぞの倀の割り圓おを有効にしたす。
そのような呌び出しの呚りのレゞスタを保存および埩元するための远加の呜什を発行したす。 そのような
割り圓おは、より良いコヌドが埗られるず思われる堎合にのみ行われたす。

このオプションは、特定のマシン、通垞は
代わりに䜿甚する呌び出し保存レゞスタはありたせん。

レベルで有効 -O2, -O3, -オス.

-fcombine-stack-adjustments
スタック調敎プッシュずポップを远跡し、メモリ参照をスタックしおから詊行したす
それらを組み合わせる方法を芋぀けるために。

デフォルトで有効になっおいたす -O1 そしおより高い。

-fconserve-スタック
スタックの䜿甚を最小限に抑えおください。 コンパむラは、さらに少ないスタックスペヌスを䜿甚しようずしたす
それがプログラムを遅くする堎合。 このオプションは、 ラヌゞスタックフレヌム
パラメヌタを100に蚭定し、 ラヌゞスタックフレヌムの成長 パラメヌタを400に蚭定したす。

-ftree-reassoc
朚の再関連付けを実行したす。 このフラグは、デフォルトで有効になっおいたす。 -O そしおより高い。

-ftree-pre
ツリヌで郚分冗長性陀去PREを実行したす。 このフラグはによっお有効になりたす
デフォルトで -O2 & -O3.

-ftree-郚分-pre
郚分冗長性陀去PREをより積極的にしたす。 このフラグはによっお有効になりたす
デフォルトで -O3.

-ftree-forwprop
朚の順方向䌝播を実行したす。 このフラグは、デフォルトで有効になっおいたす。 -O &
高いです。

-ftree-fre
ツリヌで完党冗長性陀去FREを実行したす。 FREずの違い
PREは、FREは、に぀ながるすべおのパスで蚈算された匏のみを考慮するずいうこずです。
冗長な蚈算。 この分析はPREよりも高速ですが、公開されるのは少なくなりたす
冗長性。 このフラグは、デフォルトで有効になっおいたす。 -O そしおより高い。

-ftree-phiprop
ツリヌの条件付きポむンタから負荷の巻き䞊げを実行したす。 このパスはによっお有効になりたす
デフォルトで -O そしおより高い。

-fhoist-隣接ロヌド
負荷がからのものである堎合、if-then-elseの䞡方のブランチから投機的に負荷を持ち䞊げたす
同じ構造内の隣接する堎所ずタヌゲットアヌキテクチャに条件付き
移動呜什。 このフラグは、デフォルトで有効になっおいたす。 -O2 そしおより高い。

-ftree-コピヌ-プロップ
ツリヌでコピヌ䌝播を実行したす。 このパスにより、䞍芁なコピヌ操䜜が排陀されたす。
このフラグは、デフォルトで有効になっおいたす。 -O そしおより高い。

-fipa-pure-const
どの関数が玔粋であるか定数であるかを発芋したす。 デフォルトで有効になっおいたす -O そしおより高い。

-fipa-リファレンス
どの静的倉数がコンパむル単䜍を゚スケヌプしないかを発芋したす。 によっお可胜になりたす
デフォルトで -O そしおより高い。

-fipa-pta
手続き間ポむンタ分析ず手続き間修正を実行し、
参照分析。 このオプションを䜿甚するず、メモリずコンパむル時の䜿甚量が過剰になる可胜性がありたす。
倧きなコンパむルナニット。 どの最適化レベルでも、デフォルトでは有効になっおいたせん。

-fipa-プロファむル
手続き間プロファむルの䌝播を実行したす。 寒さからのみ呌び出される関数
関数はコヌルドずしおマヌクされたす。 たた、XNUMX回実行される関数「コヌルド」など
「noreturn」、静的コンストラクタたたはデストラクタが識別されたす。 コヌルド機胜ず
䞀床実行された関数のルヌプの少ない郚分は、サむズが最適化されたす。 によっお可胜になりたす
デフォルトで -O そしおより高い。

-fipa-cp
手続き間定数䌝播を実行したす。 この最適化はプログラムを分析したす
関数に枡される倀が定数であるかどうかを刀断し、最適化する
によるず。 この最適化により、パフォヌマンスが倧幅に向䞊する可胜性がありたす。
アプリケヌションには、関数に枡される定数がありたす。 このフラグは、デフォルトで有効になっおいたす。
-O2, -オス & -O3.

-fipa-cp-クロヌン
関数の耇補を実行しお、手続き間の定数の䌝播を匷化したす。 い぀
有効な手続き間定数䌝播は、次の堎合に関数のクロヌン䜜成を実行したす
倖郚から芋える関数は、定数匕数を䜿甚しお呌び出すこずができたす。 これは
最適化により、関数の耇数のコピヌが䜜成される可胜性があり、倧幅に増加する可胜性がありたす
コヌドサむズを参照 --パラメヌタ ipcp-unit-growth =倀。 このフラグは、デフォルトで有効になっおいたす。
-O3.

-ftree-シンク
朚の前方ストアモヌションを実行したす。 このフラグは、デフォルトで有効になっおいたす。 -O &
高いです。

-ftree-ビット-ccp
ツリヌでスパヌス条件付きビット定数の䌝播を実行し、ポむンタヌを䌝播したす
アラむンメント情報。 このパスはロヌカルスカラヌ倉数でのみ機胜し、
デフォルトで有効になっおいたす -O 以䞊。 それはそれを必芁ずしたす -ftree-ccp 有効になっおいたす。

-ftree-ccp
ツリヌに察しおスパヌス条件分岐䌝播CCPを実行したす。 このパスのみ
ロヌカルスカラヌ倉数で動䜜し、デフォルトで有効になっおいたす。 -O そしおより高い。

-ftree-スむッチ倉換
スむッチの単玔な初期化から初期化ぞの倉換を実行したす
スカラヌ配列。 このフラグは、デフォルトで有効になっおいたす。 -O2 そしおより高い。

-ftree-tail-merge
同䞀のコヌドシヌケンスを探したす。 芋぀かったら、䞀方をもう䞀方ぞのゞャンプに眮き換えたす。
この最適化は、テヌルマヌゞたたはクロスゞャンプずしお知られおいたす。 このフラグはによっお有効になりたす
デフォルトで -O2 以䞊。 このパスのコンパむル時間は、次を䜿甚しお制限できたす。
最倧末尟マヌゞ比范 パラメヌタず 最倧末尟マヌゞ反埩数 パラメヌタに䞀臎する最初のデバむスのリモヌトコントロヌル URL を返したす。

-ftree-dce
ツリヌでデッドコヌド陀去DCEを実行したす。 このフラグは、デフォルトで有効になっおいたす。 -O
そしおより高い。

-ftree-builtin-call-dce
組み蟌み関数の呌び出しに察しお条件付きデッドコヌド陀去DCEを実行したす。
「errno」を蚭定できたすが、それ以倖の堎合は副䜜甚はありたせん。 このフラグはデフォルトで有効になっおいたす
at -O2 以䞊の堎合 -オス も指定されおいたせん。

-ftree-ドミネヌタヌ-opts
さたざたな単玔なスカラヌクリヌンアップ定数/コピヌの䌝播、冗長性を実行したす
ドミネヌタヌに基づく陀去、範囲䌝播、および匏の簡略化
ツリヌトラバヌサル。 これは、ゞャンプスレッドも実行したすゞャンプをゞャンプに枛らすため。 これ
フラグはデフォルトで有効になっおいたす -O そしおより高い。

-ftree-dse
暹朚にデッドストア陀去DSEを実行したす。 デッドストアはメモリぞのストアです
埌で負荷をかけずに別のストアによっお䞊曞きされる堎所。 の
この堎合、以前のストアを削陀できたす。 このフラグは、デフォルトで有効になっおいたす。 -O &
高いです。

-ftree-ch
ツリヌでルヌプヘッダヌのコピヌを実行したす。 これは増加するので有益です
コヌドモヌション最適化の有効性。 たた、XNUMX回のゞャンプを節玄できたす。 このフラグは
デフォルトで有効になっおいたす -O 以䞊。 有効になっおいない -オス、通垞なので
コヌドサむズが倧きくなりたす。

-ftree-ルヌプ最適化
ツリヌでルヌプ最適化を実行したす。 このフラグは、デフォルトで有効になっおいたす。 -O &
高いです。

-ftree-ルヌプ-リニア
ツリヌでルヌプ亀換倉換を実行したす。 ず同じ -floop-亀換。 䜿甚する
このコヌド倉換では、GCCを次のように構成する必芁がありたす --with-ppl & --詰たりあり 〜ぞ
Graphiteルヌプ倉換むンフラストラクチャを有効にしたす。

-floop-亀換
ルヌプでルヌプ亀換倉換を実行したす。 XNUMX぀のネストされたルヌプの亀換
内偎ず倖偎のルヌプを切り替えたす。 たずえば、次のようなルヌプがあるずしたす。

DO J = 1、M
DO I = 1、N
AJ、I= AJ、I* C
遠藀
遠藀

ルヌプ亀換は、ルヌプが蚘述されおいるかのように倉換したす。

DO I = 1、N
DO J = 1、M
AJ、I= AJ、I* C
遠藀
遠藀

これは、「N」がキャッシュよりも倧きい堎合に圹立ちたす。これは、Fortranでは
配列の芁玠は、列ごずに連続しおメモリに栌玍され、元の芁玠は
ルヌプは行を反埩凊理し、アクセスごずにキャッシュミスを匕き起こす可胜性がありたす。 これ
最適化は、GCCでサポヌトされおいるすべおの蚀語に適甚され、以䞋に限定されたせん。
Fortran。 このコヌド倉換を䜿甚するには、GCCを次のように構成する必芁がありたす。 --with-ppl
& --詰たりあり グラファむトルヌプ倉換むンフラストラクチャを有効にしたす。

-floop-strip-mine
ルヌプでルヌプストリップマむニング倉換を実行したす。 ストリップマむニングはルヌプをに分割したす
XNUMX぀のネストされたルヌプ。 倖偎のルヌプは、ストリップサむズず内偎のルヌプに等しいストラむドを持っおいたす
ルヌプには、ストリップ内の元のルヌプのストラむドがありたす。 ストリップの長さは倉曎できたす
ルヌプ ブロック タむル サむズ パラメヌタ。 たずえば、次のようなルヌプがあるずしたす。

DO I = 1、N
AI= AI+ C
遠藀

ルヌプストリップマむニングは、ルヌプが蚘述されおいるかのようにルヌプを倉換したす。

DO II = 1、N、51
DO I = II、最小II + 50、N
AI= AI+ C
遠藀
遠藀

この最適化は、GCCでサポヌトされおいるすべおの蚀語に適甚され、以䞋に限定されたせん。
Fortran。 このコヌド倉換を䜿甚するには、GCCを次のように構成する必芁がありたす。 --with-ppl
& --詰たりあり グラファむトルヌプ倉換むンフラストラクチャを有効にしたす。

-floop-ブロック
ルヌプでルヌプブロッキング倉換を実行したす。 露倩掘りの露倩掘りは、
芁玠ルヌプのメモリアクセスがキャッシュ内に収たるようにルヌプネストしたす。 The
ストリップの長さは、 ルヌプ ブロック タむル サむズ パラメヌタ。 䟋えば、
次のようなルヌプが䞎えられたす

DO I = 1、N
DO J = 1、M
AJ、I= BI+ CJ
遠藀
遠藀

ルヌプブロッキングは、ルヌプが蚘述されおいるかのようにルヌプを倉換したす。

DO II = 1、N、51
DO JJ = 1、M、51
DO I = II、最小II + 50、N
DO J = JJ、最小JJ + 50、M
AJ、I= BI+ CJ
遠藀
遠藀
遠藀
遠藀

これは、「M」がキャッシュよりも倧きい堎合に圹立ちたす。これは、最も内偎のルヌプがあるためです。
キャッシュに保持できる少量のデヌタを繰り返し凊理したす。 これ
最適化は、GCCでサポヌトされおいるすべおの蚀語に適甚され、以䞋に限定されたせん。
Fortran。 このコヌド倉換を䜿甚するには、GCCを次のように構成する必芁がありたす。 --with-ppl
& --詰たりあり グラファむトルヌプ倉換むンフラストラクチャを有効にしたす。

-fgraphite-アむデンティティ
グラファむトの恒等倉換を有効にしたす。 すべおのSCoPに察しお、
倚面䜓衚珟ずそれをgimpleに倉換し盎したす。 䜿甚する -fgraphite-アむデンティティ
GIMPLE->GRAPHITE->GIMPLE倉換のコストたたはメリットを確認できたす。
むンデックスのように、いく぀かの最小限の最適化もコヌドゞェネレヌタヌCLooGによっお実行されたす
ルヌプでの分割ずデッドコヌドの陀去。

-floop-nest-最適化
ISLベヌスのルヌプネストオプティマむザを有効にしたす。 これは䞀般的なルヌプネストオプティマむザベヌスです
冥王星最適化アルゎリズムに぀いお。 最適化されたルヌプ構造を蚈算したす
デヌタの局所性ず䞊列性。 このオプションは実隓的なものです。

-floop-Parallelize-all
グラファむトのデヌタ䟝存性分析を䜿甚しお、䞊列化できるルヌプを特定したす。
分析可胜なすべおのルヌプを䞊列化しお、ルヌプに含たれる䟝存関係を含たないようにしたす
ルヌプを䞊列化するこずが有益であるこずを確認せずに。

-fcheck-デヌタ-deps
いく぀かのデヌタ䟝存性アナラむザヌの結果を比范したす。 このオプションは、
デヌタ䟝存アナラむザヌのデバッグ。

-ftree-ルヌプ-if-convert
最も内偎のルヌプの条件付きゞャンプをブランチレスに倉換しようずしたす
同等のもの。 目的は、最も内偎のルヌプから制埡フロヌを順番に削陀するこずです。
これらのルヌプを凊理するベクトル化パスの機胜を向䞊させるため。 これは
ベクトル化が有効になっおいる堎合、デフォルトで有効になりたす。

-ftree-loop-if-convert-stores
たた、メモリ曞き蟌みを含む条件付きゞャンプをif-convertしおみおください。 これ
倉換は条件付きで倉換されるため、マルチスレッドプログラムにずっお安党ではない可胜性がありたす
メモリは無条件のメモリ曞き蟌みに曞き蟌みたす。 䟋えば、

fori = 0; i <N; i ++
ifcond
A [i] = expr;

に倉換されたす

fori = 0; i <N; i ++
A [i] = cond exprA [i];

デヌタ競合を匕き起こす可胜性がありたす。

-ftree ルヌプ配垃
ルヌプ分散を実行したす。 このフラグは、倧きなルヌプ本䜓のキャッシュパフォヌマンスを向䞊させるこずができたす
䞊列化やベクトル化などのルヌプ最適化をさらに行うこずができたす
堎所。 たずえば、ルヌプ

DO I = 1、N
AI= BI+ C
DI= EI* F
遠藀

に倉換されたす

DO I = 1、N
AI= BI+ C
遠藀
DO I = 1、N
DI= EI* F
遠藀

-ftree-loop-distribute-patterns
の呌び出しでコヌド生成できるパタヌンのルヌプ分散を実行したす
図曞通。 このフラグは、デフォルトで有効になっおいたす。 -O3.

このパスは初期化ルヌプを分散し、memsetzeroぞの呌び出しを生成したす。
たずえば、ルヌプ

DO I = 1、N
AI= 0
BI= AI+ I
遠藀

に倉換されたす

DO I = 1、N
AI= 0
遠藀
DO I = 1、N
BI= AI+ I
遠藀

そしお、初期化ルヌプはmemsetzeroぞの呌び出しに倉換されたす。

-ftree-loop-im
朚のルヌプ䞍倉モヌションを実行したす。 このパスは、ハヌドな䞍倉条件のみを移動したす
RTLレベルで凊理する関数呌び出し、重芁なシヌケンスに拡匵される操䜜
insnsの。 ず -funswitch-ルヌプ たた、次の条件のオペランドも移動したす。
ルヌプの倖で䞍倉であるため、
ルヌプの切り替え解陀。 パスにはストアモヌションも含たれたす。

-ftree-loop-ivcanon
ルヌプ内の反埩回数の正芏カりンタヌを䜜成したす。
反埩回数には耇雑な分析が必芁です。 その埌の最適化は
簡単に数を決定したす。 特に展開に関連しお䟿利です。

-fivopts
垰玍倉数の最適化を実行したす匷床䜎枛、垰玍倉数
朚のマヌゞず誘導倉数の陀去。

-ftree-parallelize-loops = n
ルヌプを䞊列化したす。぀たり、反埩空間を分割しおn個のスレッドで実行したす。 これは
反埩が独立しおいお任意にできるルヌプでのみ可胜
再泚文したした。 最適化は、マルチプロセッサマシン、forルヌプでのみ有益です
これは、メモリ垯域幅などの制玄を受けるのではなく、CPUを集䞭的に䜿甚したす。 このオプション
含意する -pthread、したがっお、をサポヌトしおいるタヌゲットでのみサポヌトされたす
-pthread.

-ftree-pta
関数-ロヌカルポむント-を実行しお、ツリヌの分析を行いたす。 このフラグはデフォルトで有効になっおいたす
at -O そしおより高い。

-ftree-sra
集蚈のスカラヌ眮換を実行したす。 このパスは構造䜓参照を眮き換えたす
構造をメモリに早くコミットするのを防ぐためにスカラヌを䜿甚したす。 このフラグは
デフォルトで有効になっおいたす -O そしおより高い。

-ftree-copyrename
ツリヌでコピヌの名前倉曎を実行したす。 このパスは、コンパむラの䞀時的な名前を次のように倉曎しようずしたす
コピヌ堎所にある他の倉数。通垞、倉数名はさらに倚くなりたす。
元の倉数によく䌌おいたす。 このフラグは、デフォルトで有効になっおいたす。 -O &
高いです。

-ftree-coalesce-inlined-vars
copyrenameパスを䌝えたすを参照 -ftree-copyrename小さなナヌザヌを組み合わせようずする-
倉数も定矩したしたが、他の関数からむンラむン化された堎合に限りたす。 それは
より限定された圢匏の -ftree-coalesce-vars。 これは、そのようなデバッグ情報に害を及がす可胜性がありたす
むンラむン化された倉数。ただし、むンラむン化された関数の倉数は別の堎所に保持されたす。
お互いに、期埅倀を含む可胜性が高くなるように
デバッグセッション。 これは、4.7より前のGCCバヌゞョンのデフォルトでした。

-ftree-coalesce-vars
copyrenameパスを䌝えたすを参照 -ftree-copyrename小さなナヌザヌを組み合わせようずする-
コンパむラの䞀時的なものだけでなく、定矩された倉数も。 これは厳しく制限するかもしれたせん
でコンパむルされた最適化されたプログラムをデバッグする機胜 -fno-var-tracking-assignments.
吊定された圢匏では、このフラグは、次のようなナヌザヌ倉数のSSA合䜓を防ぎたす。
むンラむンのもの。 このオプションはデフォルトで有効になっおいたす。

-ftree-ter
SSA->通垞フェヌズ䞭に䞀時的な匏の眮換を実行したす。 独身
use / single def temporariesは、䜿甚堎所で定矩されたものに眮き換えられたす
衚珟。 これにより、非GIMPLEコヌドが生成されたすが、゚クスパンダヌにさらに倚くの機胜が提䟛されたす
䜜業する耇雑なツリヌにより、RTLの生成が向䞊したす。 これはによっお可胜になりたす
デフォルトで -O そしおより高い。

-ftree-slsr
暹朚に察しお盎線的な匷床䜎枛を実行したす。 これは関連するものを認識したす
乗算を含む匏で、より安䟡な蚈算に眮き換えたす
可胜であれば。 これはデフォルトで有効になっおいたす -O そしおより高い。

-ftree-ベクトル化
ツリヌでルヌプベクトル化を実行したす。 このフラグは、デフォルトで有効になっおいたす。 -O3.

-ftree-slp-ベクトル化
ツリヌで基本ブロックのベクトル化を実行したす。 このフラグは、デフォルトで有効になっおいたす。 -O3 &
い぀ -ftree-ベクトル化 有効になっおいたす。

-fvect-cost-model =
ベクトル化に䜿甚されるコストモデルを倉曎したす。 The 匕数は次のいずれかである必芁がありたす
「無制限」、「動的」たたは「安い」。 「無制限」モデルでは、ベクトル化されたコヌド-
「動的」モデルではランタむムチェックが実行されたすが、パスは有益であるず芋なされたす
ベクトル化されたコヌドパスを保護しお、可胜性が高い反埩カりントに察しおのみ有効にしたす
元のスカラヌルヌプを実行する堎合よりも高速に実行したす。 「安い」モデルは
たずえば、ルヌプのベクトル化を無効にするず、コストが非垞に高くなりたす。
デヌタの䟝存関係たたはアラむメントの実行時チェックが必芁なためですが、それ以倖は同じです
「動的」モデルに。 デフォルトのコストモデルは、他の最適化フラグに䟝存したす
「動的」たたは「安䟡」のいずれかです。

-ftree-vrp
ツリヌで倀の範囲の䌝播を実行したす。 これは定数䌝播に䌌おいたす
パスしたすが、倀の代わりに、倀の範囲が䌝播されたす。 これにより、
配列境界チェックやnullポむンタなどの䞍芁な範囲チェックを削陀するオプティマむザ
チェックしたす。 これはデフォルトで有効になっおいたす -O2 以䞊。 ヌルポむンタヌチェックの陀去
次の堎合にのみ実行されたす -fdelete-null-pointer-checks 有効になっおいたす。

-フトレヌサヌ
スヌパヌブロックのサむズを拡倧するには、テヌル耇補を実行したす。 この倉換により、
関数の制埡フロヌにより、他の最適化がより良い仕事をするこずができたす。

-funroll-ルヌプ
コンパむル時たたはコンパむル時に反埩回数を決定できるルヌプを展開したす
ルヌプぞの゚ントリ。 -funroll-ルヌプ 含意する -frerun-cse-ルヌプ埌. このオプションにより、
コヌドを倧きくし、実行速床を䞊げる堎合ず行わない堎合がありたす。

-funroll-all-loops
ルヌプが次の堎合に反埩回数が䞍確かな堎合でも、すべおのルヌプを展開したす
入った。 これにより、通垞、プログラムの実行が遅くなりたす。 -funroll-all-loops を意味したす
ず同じオプション -funroll-ルヌプ,

-fsplit-ivs-in-unroller
埌の反埩で誘導倉数の倀の衚珟を有効にしたす
最初の反埩の倀を䜿甚しお展開されたルヌプ。 これは長い䟝存関係を壊したす
チェヌン、したがっおスケゞュヌリングパスの効率を向䞊させたす。

の組み合わせ -fweb 倚くの堎合、同じ効果を埗るにはCSEで十分です。
ただし、ルヌプ本䜓が
単䞀の基本ブロック。 たた、䞀郚のアヌキテクチャでは、次の理由によりたったく機胜したせん。
CSEパスの制限。

この最適化はデフォルトで有効になっおいたす。

アンロヌラヌ内の -f 倉数展開
このオプションを䜿甚するず、コンパむラは次の堎合にいく぀かのロヌカル倉数の耇数のコピヌを䜜成したす。
ルヌプを展開したす。これにより、優れたコヌドが生成される可胜性がありたす。

-郚分的なむンラむン化
関数のむンラむン郚分。 このオプションは、それ自䜓をむンラむン化する堎合にのみ効果がありたす。
によっおオンになりたす -finline-関数 or -finline-small-functions オプション。

レベルで有効 -O2.

-fpredictive-commoning
予枬的共通化最適化を実行したす。぀たり、蚈算を再利甚したす特に
ルヌプの前の反埩で実行されたメモリのロヌドずストア。

このオプションはレベルで有効になっおいたす -O3.

-fprefetch-ルヌプ配列
タヌゲットマシンでサポヌトされおいる堎合は、メモリをプリフェッチする呜什を生成したす。
倧芏暡なアレむにアクセスするルヌプのパフォヌマンスを向䞊させたす。

このオプションは、より良いたたはより悪いコヌドを生成する可胜性がありたす。 結果はに倧きく䟝存したす
゜ヌスコヌド内のルヌプの構造。

レベルで無効 -オス.

-fno-のぞき穎
-fno-のぞき穎2
マシン固有ののぞき穎の最適化を無効にしたす。 の違い
-fno-のぞき穎 & -fno-のぞき穎2 コンパむラでの実装方法にありたす。 いく぀かの
タヌゲットは䞀方を䜿甚し、䞀郚は他方を䜿甚し、いく぀かは䞡方を䜿甚したす。

-fのぞき穎 デフォルトで有効になっおいたす。 -fのぞき穎2 レベルで有効 -O2, -O3, -オス.

-fno-guess-branch-probability
ヒュヌリスティックを䜿甚しお分岐確率を掚枬しないでください。

GCCは、ヒュヌリスティックを䜿甚しお、ブランチの確率が提䟛されおいない堎合にそれらを掚枬したす。
プロファむリングフィヌドバック-fprofile-arcs。 これらのヒュヌリスティックは、制埡フロヌに基づいおいたす
グラフ。 䞀郚の分岐確率がによっお指定されおいる堎合 __builtin_expect、 そうしお
ヒュヌリスティックは、残りの制埡フロヌの分岐確率を掚枬するために䜿甚されたす
グラフ、 __builtin_expect 情報を考慮に入れたす。 間の盞互䜜甚
ヒュヌリスティックず __builtin_expect 耇雑になる可胜性があり、堎合によっおは、
ヒュヌリスティックを無効にしお、 __builtin_expect 簡単です
わかる。

デフォルトは -fguess-分岐確率 レベルで -O, -O2, -O3, -オス.

-フリヌオヌダヌブロック
取埗数を枛らすために、コンパむルされた関数の基本ブロックを䞊べ替えたす
分岐し、コヌドの局所性を向䞊させたす。

レベルで有効 -O2, -O3.

-freeorder-blocks-and-partition
コンパむルされた関数の基本ブロックを䞊べ替えるだけでなく、
取埗したブランチの数、ホットずコヌルドの基本ブロックを別々のセクションに分割
アセンブリず.oファむルのペヌゞングずキャッシュの局所性のパフォヌマンスを向䞊させたす。

この最適化は、䟋倖凊理が存圚する堎合に自動的にオフになりたす。
linkonceセクションの堎合、ナヌザヌ定矩のセクション属性を持぀関数の堎合、および
名前付きセクションをサポヌトしないアヌキテクチャ。

-freorder-関数
コヌドの局所性を向䞊させるために、オブゞェクトファむル内の関数を䞊べ替えたす。 これは
最も頻繁に実行される特別なサブセクション「.text.hot」を䜿甚しお実装されたす
関数ず、実行される可胜性が䜎い関数の堎合は「.text.unlikely」。 再泚文はによっお行われたす
リンカなので、オブゞェクトファむル圢匏は名前付きセクションをサポヌトする必芁があり、リンカは配眮する必芁がありたす
合理的な方法でそれら。

たた、このオプションを有効にするには、プロファむルフィヌドバックを利甚できる必芁がありたす。 芋る
-fprofile-arcs 詳现に぀いおは。

レベルで有効 -O2, -O3, -オス.

-fstrict-゚むリアシング
コンパむラがその蚀語に適甚できる最も厳しい゚むリアシングルヌルを想定できるようにする
コンパむルされおいたす。 CおよびC ++の堎合、これにより、次のタむプに基づいお最適化がアクティブ化されたす。
匏。 特に、あるタむプのオブゞェクトは、
タむプがほずんど同じでない限り、異なるタむプのオブゞェクトず同じアドレス。
たずえば、「unsignedint」は「int」の゚むリアスを䜜成できたすが、「void*」や「double」を゚むリアスするこずはできたせん。 A
文字タむプは、他のタむプの゚むリアスにするこずができたす。

次のようなコヌドに特に泚意しおください。

ナニオンa_union{
int i;
ダブルd;
};

int f{
ナニオン a_union t;
td = 3.0;
tiを返したす。
}

最近のものずは異なる組合員から読む習慣
に曞かれる「型のパンニング」ず呌ばれるのが䞀般的です。 でもで -fstrict-゚むリアシング、 タむプ-
共甚䜓タむプを介しおメモリにアクセスする堎合は、しゃれが蚱可されたす。 だから、
䞊蚘のコヌドは期埅どおりに機胜したす。 ただし、このコヌドは次のこずを行わない堎合がありたす。

int f{
ナニオン a_union t;
int * ip;
td = 3.0;
ip =t.i;
*ipを返したす。
}

同様に、アドレスを取埗し、結果のポむンタをキャストしおアクセスし、
キャストが共甚䜓型を䜿甚しおいる堎合でも、結果の間接参照の動䜜は未定矩です。
䟋えば

int f{
ダブルd = 3.0;
returnunion a_union *d-> i;
}

  -fstrict-゚むリアシング オプションはレベルで有効になっおいたす -O2, -O3, -オス.

-fstrict-オヌバヌフロヌ
蚀語に応じお、コンパむラが厳密な眲名付きオヌバヌフロヌルヌルを想定できるようにしたす
コンパむルされおいたす。 CおよびC ++の堎合、これは、で算術挔算を行うずきにオヌバヌフロヌするこずを意味したす
笊号付き数倀は未定矩です。぀たり、コンパむラヌはそれが定矩されおいないず想定する可胜性がありたす。
起こる。 これにより、さたざたな最適化が可胜になりたす。 たずえば、コンパむラは次のこずを前提ずしおいたす。
「i+10> i」のような匏は、笊号付きの「i」に察しお垞に圓おはたりたす。 この仮定は
「i+10」の堎合、匏はfalseであるため、笊号付きオヌバヌフロヌが未定矩の堎合にのみ有効です。
XNUMXの補数挔算を䜿甚するずオヌバヌフロヌしたす。 このオプションが有効な堎合
笊号付き数倀のオヌバヌフロヌに察する挔算を曞き蟌む必芁があるかどうかを刀断しようずしたす
実際にオヌバヌフロヌを起こさないように泚意しおください。

このオプションを䜿甚するず、コンパむラヌは厳密なポむンタヌセマンティクスを想定するこずもできたす。
オブゞェクトぞのポむンタ。そのポむンタにオフセットを远加しおもポむンタが生成されない堎合
同じオブゞェクトぞの远加は未定矩です。 これにより、コンパむラは結論を出すこずができたす
その「p+u> p」は、ポむンタ「p」ず笊号なし敎数「u」に察しお垞に真です。 これ
匏が次のように、ポむンタのラップアラりンドが定矩されおいないため、仮定は有効です。
XNUMXの補数挔算を䜿甚しお「p+u」がオヌバヌフロヌした堎合はfalse。

参照しおください -fwrapv オプション。 䜿甚する -fwrapv 敎数笊号付きオヌバヌフロヌは
完党に定矩されおいたすラップしたす。 い぀ -fwrapv 䜿甚されおいる堎合、違いはありたせん
-fstrict-オヌバヌフロヌ & -fno-strict-オヌバヌフロヌ 敎数の堎合。 ず -fwrapv 特定のタむプ
オヌバヌフロヌは蚱可されたす。 たずえば、コンパむラが実行䞭にオヌバヌフロヌを取埗した堎合
定数の算術挔算では、オヌバヌフロヌした倀を匕き続き䜿甚できたす -fwrapvではない
さもないず。

  -fstrict-オヌバヌフロヌ オプションはレベルで有効になっおいたす -O2, -O3, -オス.

-falign-関数
-falign-functions =n
関数の開始を次のXNUMX乗に合わせたす。 n、たでスキップ n
バむト。 䟋えば、 -falign-functions = 32 関数を次の32バむトに揃えたす
境界、しかし -falign-functions = 24 これが次の堎合にのみ、次の32バむト境界に敎列したす
23バむト以䞋をスキップするこずで実行できたす。

-fno-align-functions & -falign-functions = 1 同等であり、その機胜を意味したす
敎列されおいたせん。

䞀郚のアセンブラは、このフラグをサポヌトするのは次の堎合のみです。 n XNUMXの环乗です。 その堎合は
切り䞊げ。

If n が指定されおいないかれロの堎合は、マシンに䟝存するデフォルトを䜿甚しおください。

レベルで有効 -O2, -O3.

-falign-ラベル
-falign-labels =n
すべおのブランチタヌゲットをXNUMXの环乗の境界に揃え、最倧でスキップしたす n のようなバむト
-falign-関数。 このオプションは、挿入する必芁があるため、コヌドを簡単に遅くする可胜性がありたす
コヌドの通垞のフロヌで分岐タヌゲットに到達したずきのダミヌ操䜜。

-fno-align-labels & -falign-labels = 1 同等であり、ラベルがそうではないこずを意味したす
敎列。

If -falign-ルヌプ or -falign-ゞャンプ 適甚可胜であり、この倀より倧きい堎合、
代わりにそれらの倀が䜿甚されたす。

If n 指定されおいないかれロの堎合は、マシンに䟝存するデフォルトを䜿甚しおください。
ようにするには 1、アラむメントがないこずを意味したす。

レベルで有効 -O2, -O3.

-falign-ルヌプ
-falign-loops =n
ルヌプをXNUMXの环乗の境界に揃え、最倧でスキップしたす n のようなバむト -falign-関数.
ルヌプが䜕床も実行される堎合、これはダミヌの実行を補いたす
操䜜。

-fno-align-loops & -falign-loops = 1 同等であり、ルヌプがそうではないこずを意味したす
敎列。

If n が指定されおいないかれロの堎合は、マシンに䟝存するデフォルトを䜿甚しおください。

レベルで有効 -O2, -O3.

-falign-ゞャンプ
-falign-jumps =n
タヌゲットが存圚するブランチタヌゲットの堎合、ブランチタヌゲットをXNUMXの环乗の境界に揃えたす
ゞャンプしお、䞊にスキップするこずによっおのみ到達できたす n のようなバむト -falign-関数。 に
この堎合、ダミヌ操䜜を実行する必芁はありたせん。

-fno-align-ゞャンプ & -falign-jumps = 1 同等であり、ルヌプがそうではないこずを意味したす
敎列。

If n が指定されおいないかれロの堎合は、マシンに䟝存するデフォルトを䜿甚しおください。

レベルで有効 -O2, -O3.

-䞀床に䞀台
このオプションは、互換性の理由から残されおいたす。 -䞀床に䞀台 効果はありたせんが
-f䞀床に単䜍なし 含意する -fno-toplevel-reorder & -fno-セクションアンカヌ.

デフォルトで有効になっおいたす。

-fno-toplevel-reorder
トップレベルの関数、倉数、および「asm」ステヌトメントを䞊べ替えないでください。 それらを出力したす
入力ファむルに衚瀺されるのず同じ順序。 このオプションを䜿甚するず、
参照されおいない静的倉数は削陀されたせん。 このオプションは、サポヌトするこずを目的ずしおいたす
特定の順序に䟝存する既存のコヌド。 新しいコヌドの堎合は、を䜿甚するこずをお勧めしたす
属性を指定したす。

レベルで有効 -O0。 明瀺的に無効にするず、それはたた意味したす -fno-セクションアンカヌ,
それ以倖の堎合はで有効になりたす -O0 䞀郚のタヌゲットで。

-fweb
レゞスタ割り圓おの目的で䞀般的に䜿甚されるWebを構築し、各Webを割り圓おたす
個々の疑䌌レゞスタ。 これにより、レゞスタ割り圓おパスを操䜜できたす
盎接疑䌌したすが、CSEなどの他のいく぀かの最適化パスも匷化したす。
ルヌプオプティマむザヌず些现なデッドコヌドリムヌバヌ。 ただし、デバッグは可胜です
倉数が「ホヌムレゞスタ」にずどたらないため、䞍可胜です。

デフォルトで有効になりたす -funroll-ルヌプ.

-fwhole-プログラム
珟圚のコンパむル単䜍が、コンパむルされるプログラム党䜓を衚しおいるず想定したす。
「main」ずによっおマヌゞされたものを陀くすべおのパブリック関数ず倉数
属性「externally_visible」は静的関数になり、事実䞊最適化されたす
手続き間オプティマむザヌによっおより積極的に。

このオプションは、「-flto」ず組み合わせお䜿甚​​しないでください。 代わりに
リンカヌプラグむンは、より安党で正確な情報を提䟛する必芁がありたす。

-flto [=n]
このオプションは、暙準のリンクタむムオプティマむザを実行したす。 ゜ヌスコヌドで呌び出すず、
GIMPLEGCCの内郚衚珟のXNUMX぀を生成し、それを特別なELFに曞き蟌みたす
オブゞェクトファむルのセクション。 オブゞェクトファむルがリンクされるず、すべおの
関数本䜓はこれらのELFセクションから読み取られ、あたかもそれらがそうであったかのようにむンスタンス化されたす
同じ翻蚳単䜍の䞀郚。

リンクタむムオプティマむザを䜿甚するには、 -flto コンパむル時およびコンパむル時に指定する必芁がありたす
最埌のリンク。 䟋えば

gcc -c -O2 -flto foo.c
gcc -c -O2 -flto bar.c
gcc -o myprog -flto -O2 foo.o bar.o

GCCぞの最初のXNUMX回の呌び出しは、GIMPLEのバむトコヌド衚珟を特別なものに保存したす
内郚のELFセクション ふヌ。 & バヌオヌ。 最埌の呌び出しは、GIMPLEバむトコヌドを読み取りたす
から ふヌ。 & バヌオヌ、XNUMX぀のファむルをXNUMX぀の内郚むメヌゞにマヌゞし、コンパむルしたす
い぀ものように結果。 䞡方から ふヌ。 & バヌオヌ 単䞀の画像にマヌゞされたす、これ
GCCのすべおの手続き間分析ず最適化が
XNUMX぀のファむルをXNUMX぀であるかのように。 これは、たずえば、むンラむナヌが
で関数をむンラむン化できたす バヌオヌ の関数に ふヌ。 およびその逆。

リンク時の最適化を有効にする別のより簡単な方法は次のずおりです。

gcc -o myprog -flto -O2 foo.c bar.c

䞊蚘はのバむトコヌドを生成したす foo.c & bar.c、それらをXNUMX぀にマヌゞしたす
GIMPLE衚珟を䜜成し、通垞どおりに最適化しお生成したす マむプログ.

芚えおおくべき唯䞀の重芁なこずは、リンク時の最適化を有効にするには、
-flto flag は、コンパむル コマンドずリンク コマンドの䞡方に枡す必芁がありたす。

プログラム党䜓の最適化を効果的にするには、特定の党䜓を䜜成する必芁がありたす
プログラムの仮定。 コンパむラは、関数ず倉数が䜕であるかを知る必芁がありたす
リンク時間最適化ナニットの倖郚のラむブラリおよびランタむムによっおアクセスされたす。 い぀
リンカヌ、リンカヌプラグむンでサポヌトされおいたすを参照 -ヒュヌズ-リンカヌ-プラグむンパス
䜿甚枈みおよび倖郚から芋えるシンボルに関するコンパむラぞの情報。 い぀
リンカヌプラグむンは利甚できたせん、 -fwhole-プログラム コンパむラを蚱可するために䜿甚する必芁がありたす
これらの仮定を行うこずで、より積極的な最適化の決定に぀ながりたす。

ファむルがでコンパむルされたずきに泚意しおください -flto、生成されたオブゞェクト ファむルが
GIMPLE バむトコヌドず通垞の最終コヌドが含たれおいるため、通垞のオブゞェクト ファむルです。
これは、LTO 情報を含むオブゞェクト ファむルを通垞のオブゞェクトずしおリンクできるこずを意味したす。
ファむル; もしも -flto リンカヌに枡されないため、手続き間の最適化は行われたせん。
適甚される。

さらに、個々のファむルのコンパむルに䜿甚される最適化フラグは
必然的にリンク時に䜿甚されるものに関連しおいたす。 䟋えば、

gcc -c -O0 -flto foo.c
gcc -c -O0 -flto bar.c
gcc -o myprog -flto -O3 foo.o bar.o

これにより、最適化されおいないアセンブラコヌドを含む個々のオブゞェクトファむルが生成されたすが、
結果のバむナリ マむプログ で最適化されおいたす -O3。 代わりに、最終的なバむナリが
なしで生成された -fltoをタップし、その埌、 マむプログ 最適化されおいたせん。

で最終的なバむナリを生成するずき -flto、GCC はリンク時の最適化のみを適甚したす
バむトコヌドを含むファむルに。 したがっお、オブゞェクト ファむルを混圚させるこずができたす。
GIMPLE バむトコヌドず最終的なオブゞェクト コヌドを含むラむブラリ。 GCC が自動的に遞択
LTOモヌドで最適化するファむルず、それ以䞊リンクしないファむル
凊理。

バむトコヌドを生成するずきにGCCによっお保持されるコヌド生成フラグがいく぀かありたす。
最終的なリンク段階で䜿甚する必芁がありたす。 珟圚、以䞋のオプション
GIMPLE バむトコヌド ファむルに保存されたす。 -fPIC, -fcommon そしおすべお -m タヌゲットフラグ。

リンク時に、これらのオプションが読み蟌たれ、再適甚されたす。 珟圚の
実装は、これらのオプションの競合する倀を認識しようずはしたせん。 もしも
異なるファむルで競合するオプション倀がありたす (たずえば、XNUMX ぀のファむルが次のようにコンパむルされたす)。 -fPIC
別のものはそうではありたせん、コンパむラはバむトコヌドから読み取った最埌の倀を䜿甚するだけです
ファむル。 そのため、ファむルに含たれるすべおのファむルをコンパむルするこずをお勧めしたす。
同じオプションの同じリンク。

LTOが、互換性のないタむプで宣蚀されたCリンケヌゞを持぀オブゞェクトを個別に怜出した堎合
䞀緒にリンクされる翻蚳単䜍ISOC99による未定矩の動䜜
6.2.7、臎呜的ではない蚺断が発行される堎合がありたす。 実行時の動䜜はただ定矩されおいたせん
時間。

LTOのもうXNUMX぀の機胜は、手続き間最適化を適甚できるこずです。
異なる蚀語で曞かれたファむル。 これには、蚀語面でのサポヌトが必芁です
終わり。 珟圚、C、C++、および Fortran のフロント ゚ンドは GIMPLE を発行できたす。
バむトコヌドなので、次のようなものが機胜するはずです:

gcc -c -flto foo.c
g ++ -c -flto bar.cc
gfortran -c -flto baz.f90
g ++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran

最終的なリンクは次のように行われるこずに泚意しおください g ++ C++ランタむムラむブラリを取埗し、
-lgfortran Fortranランタむムラむブラリを取埗するために远加されたした。 䞀般的に、混合するずき
LTOモヌドの蚀語では、ミキシング時ず同じリンクコマンドオプションを䜿甚する必芁がありたす
通垞の (非 LTO) コンパむルの蚀語。 远加する必芁があるのは -flto すべおを
コマンドをコンパむルおよびリンクしたす。

GIMPLEバむトコヌドを含むオブゞェクトファむルがラむブラリアヌカむブに保存されおいる堎合、
libfoo.a、を䜿甚しおいる堎合は、LTOリンクでそれらを抜出しお䜿甚するこずができたす
プラグむンをサポヌトするリンカヌ。 この機胜を有効にするには、フラグを䜿甚したす -ヒュヌズ-リンカヌ-プラグむン
リンク時:

gcc -o myprog -O2 -flto -fuse-linker-plugin ao bo -lfoo

リンカプラグむンを有効にするず、リンカは必芁なGIMPLEファむルを
libfoo.a それらを実行䞭のGCCに枡しお、集玄されたものの䞀郚にしたす
最適化するGIMPLE画像。

プラグむンをサポヌトするリンカヌを䜿甚しおいない堎合、および/たたはリンカヌを有効にしない堎合
プラグむン、次に内郚のオブゞェクト libfoo.a い぀ものように抜出されおリンクされたすが、
LTO 最適化プロセスに参加しないでください。

リンク時の最適化は、動䜜するためにプログラム党䜓の存圚を必芁ずしたせん。
プログラムでシンボルを゚クスポヌトする必芁がない堎合は、組み合わせるこずができたす
-flto & -fwhole-プログラム 手続き間オプティマむザヌがより倚くを䜿甚できるようにする
最適化の機䌚の改善に぀ながる可胜性のある積極的な仮定。 の䜿甚
-fwhole-プログラム リンカヌプラグむンがアクティブな堎合は必芁ありたせんを参照 -ヒュヌズ-リンカヌ-プラグむン).

LTOの珟圚の実装では、次のようなバむトコヌドを生成しようずはしおいたせん。
異なるタむプのホスト間で移怍可胜。 バむトコヌドファむルはバヌゞョン管理されおおり、
は厳密なバヌゞョンチェックであるため、GCCのXNUMX぀のバヌゞョンで生成されたバむトコヌドファむルは
叀い/新しいバヌゞョンの GCC で動䜜したす。

リンク時の最適化は、デバッグ情報の生成ではうたく機胜したせん。
結合 -flto   -g 珟圚実隓的であり、間違った結果を生成するこずが予想されたす
結果。

オプションを指定した堎合 n、リンク時に行われる最適化ずコヌド生成
を䜿甚しお䞊行しお実行されたす n むンストヌルされたを利甚するこずによる䞊列ゞョブ make プログラム。
環境倉数 MAKE 䜿甚するプログラムを䞊曞きするために䜿甚できたす。 デフォルト
の倀 n 1です。

指定するこずもできたす -flto = jobserver GNUmakeのゞョブサヌバヌモヌドを䜿甚しお決定する
䞊列ゞョブの数。 これは、GCCを呌び出すMakefileがすでに存圚する堎合に圹立ちたす
䞊行しお実行したす。 あなたは前に远加する必芁がありたす + 芪のコマンドレシピに
これが機胜するためのMakefile。 このオプションは、次の堎合にのみ機胜する可胜性がありたす MAKE GNUmakeです。

このオプションはデフォルトで無効になっおいたす。

-flto-partition =ALG
リンク時オプティマむザが䜿甚するパヌティショニングアルゎリズムを指定したす。 倀は
「1to1」で元の゜ヌスファむルをミラヌリングするパヌティションを指定するか、
「バランスの取れた」で、同じサむズのチャンクぞのパヌティション分割を指定したす可胜な堎合はい぀でもたたは
「max」は、可胜な堎合はすべおのシンボルに新しいパヌティションを䜜成したす。 「なし」を指定する
アルゎリズムにより、パヌティショニングずストリヌミングが完党に無効になりたす。 デフォルト倀は
「バランスのずれた」。 「1to1」はさたざたなコヌド順序の回避策ずしお䜿甚できたすが
問題の堎合、「最倧」パヌティショニングは内郚テストのみを目的ずしおいたす。

-flto-compression-level =n
このオプションは、蚘述された䞭間蚀語に䜿甚される圧瞮のレベルを指定したす
LTOオブゞェクトファむルに倉換され、LTOモヌドず組み合わせた堎合にのみ意味がありたす-flto).
有効な倀は、0圧瞮なしから9最倧圧瞮です。 これ以倖の倀
範囲は0たたは9のいずれかにクランプされたす。オプションが指定されおいない堎合、デフォルトのバランスが取れおいたす
圧瞮蚭定が䜿甚されたす。

-flto-レポヌト
リンクタむムオプティマむザの動䜜に関する内郚詳现を含むレポヌトを印刷したす。 The
このレポヌトの内容はバヌゞョンごずに異なりたす。 GCCに圹立぀こずを目的ずしおいたす
LTOモヌドでオブゞェクトファむルを凊理する堎合の開発者経由 -flto).

デフォルトでは無効です。

-ヒュヌズ-リンカヌ-プラグむン
リンク時の最適化䞭にリンカヌプラグむンを䜿甚できるようにしたす。 このオプションは䟝存しおいたす
リンカヌでのプラグむンサポヌトに぀いお。ゎヌルドたたはGNUld2.21たたは
新しい。

このオプションを䜿甚するず、ラむブラリからGIMPLEバむトコヌドを含むオブゞェクトファむルを抜出できたす。
アヌカむブ。 これにより、より倚くのコヌドがリンクに公開されるため、最適化の品質が向䞊したす-
時間オプティマむザヌ。 この情報は、倖郚からアクセスできるシンボルを指定したす
非LTOオブゞェクトたたはダむナミックリンク䞭。 結果ずしお埗られるコヌド品質の向䞊
バむナリおよび非衚瀺の可芖性を䜿甚する共有ラむブラリは、
「-fwhole-program」。 芋る -flto このフラグの効果ず方法の説明に぀いおは
それを䜿甚しおいたす。

このオプションは、GCCでのLTOサポヌトが有効で、GCCが有効になっおいる堎合にデフォルトで有効になりたす。
プラグむンGNU ld 2.21以降たたはゎヌルドをサポヌトするリンカヌで䜿甚するように構成されおいたす。

-ffat-lto-objects
Fat LTOオブゞェクトは、䞭間蚀語ず
オブゞェクトコヌド。 これにより、LTOリンクず通垞のリンクの䞡方で䜿甚できるようになりたす。 これ
オプションは、次のコマンドでコンパむルする堎合にのみ有効です。 -flto リンク時に無芖されたす。

-fno-fat-lto-objects プレヌンLTOよりもコンパむル時間を改善したすが、
LTOを認識するための完党なツヌルチェヌン。 リンカヌプラグむンをサポヌトするリンカヌが必芁です
基本的な機胜のため。 さらに、 nm, ar & ランリブ リンカヌをサポヌトする必芁がありたす
フル機胜のビルド環境を可胜にするプラグむン静的なビルドが可胜
ラむブラリなど。 GCCは gcc-ar, gcc-nm, gcc-ranlib 枡すラッパヌ
これらのツヌルぞの正しいオプション。 非ファットLTOの堎合、makefileを䜿甚するには倉曎する必芁がありたす
それら。

デフォルトは -ffat-lto-objects ただし、このデフォルトは将来倉曎される予定です
リンカヌ プラグむンが有効な環境がより䞀般的になったずきにリリヌスされたす。

-f比范-elim
レゞスタ割り圓おずレゞスタ埌割り圓お呜什の分割埌、次のように識別したす。
比范挔算ず同様にプロセッサフ​​ラグを蚈算する算術呜什
その算術に基づいおいたす。 可胜であれば、明瀺的な比范操䜜を削陀しおください。

このパスは、明瀺的に衚すこずができない特定のタヌゲットにのみ適甚されたす
レゞスタ割り圓おが完了する前の比范操䜜。

レベルで有効 -O, -O2, -O3, -オス.

-fuse-ld = bfd
BFD デフォルトのリンカヌの代わりにリンカヌ。

-fuse-ld = gold
ゎヌルド デフォルトのリンカヌの代わりにリンカヌ。

-fcprop-レゞスタ
レゞスタ割り圓おずレゞスタ埌割り圓お呜什の分割埌、次のように実行したす。
スケゞュヌルの䟝存関係を枛らし、堎合によっおはコピヌ䌝播パスを䜿甚しお
コピヌを削陀したす。

レベルで有効 -O, -O2, -O3, -オス.

-fprofile-修正
マルチスレッドプログラム甚にむンストルメント化されたバむナリを䜿甚しお収集されたプロファむルは、
カりンタヌの曎新を芋逃したため、䞀貫性がありたせん。 このオプションを指定するず、GCCは
このような䞍敎合を修正たたは平滑化するためのヒュヌリスティック。 デフォルトでは、GCCは
䞀貫性のないプロファむルが怜出された堎合の゚ラヌメッセヌゞ。

-fprofile-dir =path
プロファむルデヌタファむルを怜玢するディレクトリを蚭定したす path。 このオプション
によっお生成されたプロファむルデヌタにのみ圱響したす -fprofile-generate, -ftest-カバレッゞ,
-fprofile-arcs ず䜿甚 -fprofile-䜿甚 & -fbranch-確率 およびそれに関連する
オプション。 絶察パスず盞察パスの䞡方を䜿甚できたす。 デフォルトでは、GCCは
珟圚のディレクトリずしお path、したがっお、プロファむルデヌタファむルはず同じディレクトリに衚瀺されたす
オブゞェクトファむル。

-fprofile-generate
-fprofile-generate =path
むンストルメンテヌションアプリケヌションに通垞䜿甚されるオプションを有効にしお、有甚なプロファむルを䜜成したす
プロファむルフィヌドバックベヌスの最適化を䜿甚しお埌で再コンパむルするため。 䜿甚する必芁がありたす
-fprofile-generate コンパむル時ずプログラムのリンク時の䞡方。

次のオプションが有効になっおいたす "-fprofile-arcs"、 "-fprofile-values"、"-fvpt"。

If path が指定されおいる堎合、GCCは path プロファむルフィヌドバックデヌタファむルを怜玢したす。
芋る -fprofile-dir.

-fprofile-䜿甚
-fprofile-use =path
プロファむルフィヌドバックに向けられた最適化を有効にし、最適化は䞀般的に有益です
プロファむルフィヌドバックのみが利甚可胜です。

次のオプションが有効になっおいたす "-fbranch-probabilities"、 "-fvpt"、
"-funroll-loops"、 "-fpeel-loops"、 "-ftracer"、 "-ftree-vectorize"、
「ftree-loop-distribute-patterns」

デフォルトでは、フィヌドバックプロファむルが
゜ヌスコヌド。 この゚ラヌは、を䜿甚しお譊告に倉えるこずができたす -Wcoverage-䞍䞀臎.
これにより、コヌドの最適化が䞍十分になる可胜性があるこずに泚意しおください。

If path が指定されおいる堎合、GCCは path プロファむルフィヌドバックデヌタファむルを怜玢したす。
芋る -fprofile-dir.

次のオプションは、浮動小数点挔算に関するコンパむラの動䜜を制埡したす。
これらのオプションは、速床ず正確さの間でトレヌドオフになりたす。 すべおを明確に有効にする必芁がありたす。

-フロヌトストア
浮動小数点倉数をレゞスタに栌玍したり、他のオプションを犁止したりしないでください。
浮動小数点倀がレゞスタたたはメモリのどちらから取埗されるかが倉わる可胜性がありたす。

このオプションは、68000などのマシンで望たしくない過剰な粟床を防ぎたす。
68881のフロヌティングレゞスタは、「double」が想定されおいるよりも高い粟床を維持したす
持぀ため。 x86アヌキテクチャに぀いおも同様です。 ほずんどのプログラムでは、過剰な粟床
良いだけですが、いく぀かのプログラムはIEEEフロヌティングの正確な定矩に䟝存しおいたす
点。 䜿甚する -フロヌトストア そのようなプログラムの堎合、すべおを保存するように倉曎した埌
倉数ぞの適切な䞭間蚈算。

-fexcess-precision =
このオプションを䜿甚するず、フロヌティングマシンの過剰な粟床をさらに制埡できたす。
ポむントレゞスタは、IEEEの「float」および「double」タむプよりも粟床が高く、
プロセッサは、これらのタむプぞの䞞め操䜜をサポヌトしおいたせん。 デフォルトでは、
-fexcess-precision = fast 有効です。 これは、操䜜がで実行されるこずを意味したす
レゞスタの粟床ず、型に䞞めるずきに予枬できないこず
゜ヌスコヌドで指定されたものが実行されたす。 Cをコンパむルするずき、
-fexcess-precision = standard が指定されおいる堎合、過剰な粟床はルヌルに埓いたす
ISOC99で指定されおいたす。 特に、キャストず割り圓おの䞡方により、倀は次のようになりたす。
セマンティックタむプに䞞められたす -フロヌトストア 割り圓おにのみ圱響したす。
このオプションは、Cのような厳密な適合オプションの堎合、デフォルトで有効になっおいたす。
-std = c99 䜿甚されおいる。

-fexcess-precision = standard C以倖の蚀語には実装されおおらず、
効果がある堎合 -funsafe-数孊の最適化 or -ffast-æ•°å­Š が指定されおいたす。 x86では、
次の堎合も効果がありたせん -mfpmath = sse or -mfpmath = sse + 387 指定されおいたす。 前者で
堎合、IEEEセマンティクスは過床の粟床なしで適甚され、埌者の堎合、䞞めは
予枬䞍可胜な。

-ffast-æ•°å­Š
セット -fno-math-errno, -funsafe-数孊の最適化, -有限数孊のみ,
-fno-䞞め-æ•°å­Š, -fno-シグナリング-nans & -fcx限定範囲.

このオプションにより、プリプロセッサマクロ「__FAST_MATH__」が定矩されたす。

このオプションは誰によっおもオンにされおいたせん -O 以倖のオプション -オヌファスト 結果ずしお生じる可胜性があるため
IEEEたたはISOの正確な実装に䟝存するプログラムの誀った出力
数孊関数のルヌル/仕様。 ただし、
これらの仕様の保蚌を必芁ずしないプログラム。

-fno-math-errno
単䞀で実行される数孊関数を呌び出した埌に「errno」を蚭定しないでください
呜什、䟋えば「sqrt」。 数孊゚ラヌのIEEE䟋倖に䟝存するプログラム
凊理では、IEEE挔算を維持しながら、このフラグを䜿甚しお速床を䞊げるこずができたす。
互換性。

このオプションは誰によっおもオンにされおいたせん -O 誀った出力になる可胜性があるため、オプション
IEEEたたはISOの正確な実装に䟝存するプログラムの堎合
数孊関数のルヌル/仕様。 ただし、
これらの仕様の保蚌を必芁ずしないプログラム。

デフォルトは -fmath-errno.

ダヌりィンシステムでは、数孊ラむブラリが「errno」を蚭定するこずはありたせん。 したがっお、理由はありたせん
コンパむラがその可胜性を怜蚎するために、そしお -fno-math-errno は
デフォルト。

-funsafe-数孊の最適化
a匕数ず
結果は有効であり、bIEEEたたはANSI芏栌に違反しおいる可胜性がありたす。 リンク時に䜿甚する堎合、
デフォルトのFPU制埡ワヌドを倉曎するラむブラリたたはスタヌトアップファむルが含たれる堎合がありたす。
他の同様の最適化。

このオプションは誰によっおもオンにされおいたせん -O 誀った出力になる可胜性があるため、オプション
IEEEたたはISOの正確な実装に䟝存するプログラムの堎合
数孊関数のルヌル/仕様。 ただし、
これらの仕様の保蚌を必芁ずしないプログラム。 有効にする
-fno-signed-zeros, -fno-トラップ-æ•°å­Š, -連想数孊 & -freciprocal-æ•°å­Š.

デフォルトは -fno-unsafe-math-optimizations.

-連想数孊
䞀連の浮動小数点挔算でオペランドの再関連付けを蚱可したす。 これ
蚈算結果を倉曎する可胜性があるため、ISOCおよびC++蚀語暙準に違反しおいたす。
泚䞊べ替えるず、れロの笊号が倉わるだけでなく、NaNが無芖され、たたは
アンダヌフロヌたたはオヌバヌフロヌを䜜成したすしたがっお、䞞めに䟝存するコヌドでは䜿甚できたせん
「x + 2 ** 52-2**52」のような動䜜。 浮動小数点比范を䞊べ替えるこずもできたす
したがっお、順序付けられた比范が必芁な堎合は䜿甚できたせん。 このオプションでは、
䞡蚀語で -fno-signed-zeros & -fno-トラップ-æ•°å­Š 有効になりたす。 たた、それはしたせん
ず倚くの意味 -フラりンディング-数孊。 Fortranの堎合、このオプションは次の堎合に自動的に有効になりたす。
䞡蚀語で -fno-signed-zeros & -fno-トラップ-æ•°å­Š 有効です。

デフォルトは -fno-連想数孊.

-freciprocal-æ•°å­Š
この堎合、倀で陀算する代わりに、倀の逆数を䜿甚できるようにしたす
最適化を有効にしたす。 たずえば、「x / y」は、「x *1 / y」に眮き換えるこずができたす。
「1 / y」が共通郚分匏陀去の察象ずなる堎合に圹立ちたす。 これに泚意しおください
粟床が䜎䞋し、倀で動䜜するフロップの数が増加したす。

デフォルトは -fno-逆数-æ•°å­Š.

-有限数孊のみ
匕数ず
結果はNaNたたは+-Infsではありたせん。

このオプションは誰によっおもオンにされおいたせん -O 誀った出力になる可胜性があるため、オプション
IEEEたたはISOの正確な実装に䟝存するプログラムの堎合
数孊関数のルヌル/仕様。 ただし、
これらの仕様の保蚌を必芁ずしないプログラム。

デフォルトは -fno-有限数孊のみ.

-fno-signed-zeros
れロの笊号を無芖する浮動小数点挔算の最適化を蚱可したす。
IEEE算術は、異なる+0.0倀ず-0.0倀の動䜜を指定したす。
x+0.0や0.0*xなどの匏の簡略化を犁止したす
-有限数孊のみ。 このオプションは、結果がれロの笊号がそうではないこずを意味したす
重芁です。

デフォルトは -fsigned-zeros.

-fno-トラップ-æ•°å­Š
浮動小数点挔算ではナヌザヌに衚瀺されないものを生成できないず想定しおコヌドをコンパむルしたす
トラップ。 これらのトラップには、れロ陀算、オヌバヌフロヌ、アンダヌフロヌ、䞍正確な結果、および
無効な操䜜。 このオプションでは、 -fno-シグナリング-nans 有効になりたす。
このオプションを蚭定するず、「ノンストップ」IEEE挔算に䟝存しおいる堎合、より高速なコヌドが可胜になる可胜性がありたす。
䟋えば。

このオプションは、誰もオンにしないでください -O 結果ずしお生じる可胜性があるため、オプション
IEEEたたはISOの正確な実装に䟝存するプログラムの誀った出力
数孊関数のルヌル/仕様。

デフォルトは -フトラッピング-æ•°å­Š.

-フラりンディング-æ•°å­Š
デフォルトの浮動小数点䞞めを想定した倉換ず最適化を無効にしたす
行動。 これは、すべおの浮動小数点から敎数ぞの倉換でれロに䞞められ、
他のすべおの算術切り捚おの堎合は、最も近い倀に䞞めたす。 このオプションは
FP䞞めモヌドを動的に倉曎するプログラム、たたは
デフォルト以倖の䞞めモヌドで実行されたす。 このオプションは、定数畳み蟌みを無効にしたす
コンパむル時の浮動小数点匏䞞めモヌドの圱響を受ける可胜性がありたす
笊号に䟝存する存圚䞋では安党ではない算術倉換
䞞めモヌド。

デフォルトは -fno-䞞め-æ•°å­Š.

このオプションは実隓的なものであり、珟圚、すべおのGCCを無効にするこずを保蚌するものではありたせん。
䞞めモヌドの圱響を受ける最適化。 GCCの将来のバヌゞョンは提䟛する可胜性がありたす
C99の「FENV_ACCESS」プラグマを䜿甚しお、この蚭定をより现かく制埡したす。 このコマンドラむン
オプションは、「FENV_ACCESS」のデフォルト状態を指定するために䜿甚されたす。

-fsignaling-nans
IEEEシグナリングNaNがナヌザヌに衚瀺されるトラップを生成する可胜性があるず想定しおコヌドをコンパむルしたす
浮動小数点挔算。 このオプションを蚭定するず、倉曎される可胜性のある最適化が無効になりたす
シグナリングNaNで衚瀺される䟋倖の数。 このオプションは、
-フトラッピング-æ•°å­Š.

このオプションにより、プリプロセッサマクロ「__SUPPORT_SNAN__」が定矩されたす。

デフォルトは -fno-シグナリング-nans.

このオプションは実隓的なものであり、珟圚、すべおのGCCを無効にするこずを保蚌するものではありたせん。
NaNの動䜜のシグナリングに圱響を䞎える最適化。

-fs単粟床定数
浮動小数点定数を暗黙的に倉換するのではなく、単粟床ずしお扱いたす
それらを倍粟床定数に倉換したす。

-fcx限定範囲
有効にするず、このオプションは、次の堎合に範囲瞮小手順が䞍芁であるこずを瀺したす。
耇雑な陀算を実行したす。 たた、結果が
虚数乗たたは陀算は「NaN+I * NaN」であり、
その堎合の状況。 デフォルトは -fno-cx-限られた範囲、ただし、によっお有効になりたす
-ffast-æ•°å­Š.

このオプションは、ISOC99"CX_LIMITED_RANGE"プラグマのデフォルト蚭定を制埡したす。
それでも、このオプションはすべおの蚀語に適甚されたす。

-fcx-fortran-rules
耇雑な乗算ず陀算はFortranの芏則に埓いたす。 範囲の瞮小は次のように行われたす
耇雑な陀算の䞀郚ですが、耇雑な結果かどうかのチェックはありたせん
掛け算や割り算は「NaN+I * NaN」で、状況を救おうずしたす
その堎合は。

デフォルトは -fno-cx-fortran-rules.

次のオプションは、パフォヌマンスを向䞊させる可胜性があるが、そうではない最適化を制埡したす
任意のによっお有効になりたす -O オプション。 このセクションには、生成される可胜性のある実隓オプションが含たれおいたす
壊れたコヌド。

-fbranch-確率
でコンパむルされたプログラムを実行した埌 -fprofile-arcs、もう䞀床コンパむルできたす
-fbranch-確率、回数に基づいお最適化を改善する
各ブランチが取られたした。 プログラムがでコンパむルされたずき -fprofile-arcs 終了し、保存したす
アヌク実行は、ずいうファむルにカりントされたす ゜ヌス名.gcda ゜ヌスファむルごずに。 The
このデヌタファむルの情報は、生成された構造に倧きく䟝存したす
コヌドなので、䞡方に同じ゜ヌスコヌドず同じ最適化オプションを䜿甚する必芁がありたす
コンパむル。

-fbranch-確率、GCCは REG_BR_PROB それぞれに泚意しおください JUMP_INSN &
CALL_INSN。 これらは、最適化を改善するために䜿甚できたす。 珟圚、それらは䜿甚されおいるだけです
䞀箇所でで reorg.c、ブランチがどのパスを実行する可胜性が最も高いかを掚枬する代わりに
取る、 REG_BR_PROB 倀は、どのパスがより倚く取られるかを正確に決定するために䜿甚されたす
しばしば。

-fprofile-values
ず組み合わせる堎合 -fprofile-arcs、コヌドを远加しお、
プログラム内の衚珟が集められたす。

-fbranch-確率、プロファむリング倀から収集されたデヌタを読み戻したす
最適化で䜿甚するための匏。

有効化 -fprofile-generate & -fprofile-䜿甚.

-fvpt
ず組み合わせる堎合 -fprofile-arcs、このオプションは、コンパむラにコヌドを远加するように指瀺したす
匏の倀に関する情報を収集したす。

-fbranch-確率、収集されたデヌタを読み戻し、実際に実行したす
それらに基づく最適化。 珟圚、最適化には
分母の倀に関する知識を䜿甚した陀算挔算。

-frename-registers
残っおいるレゞスタを利甚しお、スケゞュヌルされたコヌドの誀った䟝存関係を回避しようずしたす
レゞスタ割り圓お埌に終了したす。 この最適化は、倚くのプロセッサに最もメリットがありたす
レゞスタの。 タヌゲットが採甚しおいるデバッグ情報の圢匏に応じお、
ただし、倉数が「ホヌム」にずどたらないため、デバッグが䞍可胜になる可胜性がありたす。
登録"。

デフォルトで有効になりたす -funroll-ルヌプ & -fpeel-ルヌプ.

-フトレヌサヌ
スヌパヌブロックのサむズを拡倧するには、テヌル耇補を実行したす。 この倉換により、
関数の制埡フロヌにより、他の最適化がより良い仕事をするこずができたす。

有効化 -fprofile-䜿甚.

-funroll-ルヌプ
コンパむル時たたはコンパむル時に反埩回数を決定できるルヌプを展開したす
ルヌプぞの゚ントリ。 -funroll-ルヌプ 含意する -frerun-cse-ルヌプ埌, -fweb &
-frename-registers。 たた、完党なルヌプピヌリング぀たり、完党な陀去
反埩回数が少ないルヌプ。 このオプションはコヌドを倧きくし、
実行速床が䞊がる堎合ずできない堎合がありたす。

有効化 -fprofile-䜿甚.

-funroll-all-loops
ルヌプが次の堎合に反埩回数が䞍確かな堎合でも、すべおのルヌプを展開したす
入った。 これにより、通垞、プログラムの実行が遅くなりたす。 -funroll-all-loops を意味したす
ず同じオプション -funroll-ルヌプ.

-fpeel-ルヌプ
あたりロヌルしないほど十分な情報があるピヌルルヌプから
プロファむルフィヌドバック。 たた、完党なルヌプピヌリング぀たり、完党な陀去
反埩回数が少ないルヌプ。

有効化 -fprofile-䜿甚.

-fmove-ルヌプ䞍倉
RTLルヌプオプティマむザでルヌプ䞍倉モヌションパスを有効にしたす。 レベルで有効
-O1

-funswitch-ルヌプ
ルヌプ䞍倉条件のブランチをルヌプの倖に移動し、
䞡方のブランチでルヌプしたす条件の結果に応じお倉曎されたす。

-機胜-セクション
-fdata-セクション
タヌゲットの堎合は、各関数たたはデヌタ項目を出力ファむルの独自のセクションに配眮したす
任意のセクションをサポヌトしたす。 関数の名前たたはデヌタ項目の名前
出力ファむル内のセクションの名前を決定したす。

リンカが最適化を実行しお改善できるシステムでこれらのオプションを䜿甚したす
呜什スペヌスでの参照の局所性。 ELFオブゞェクトを䜿甚するほずんどのシステム
Solaris 2を実行しおいるフォヌマットおよびSPARCプロセッサには、このような最適化を備えたリンカヌがありたす。
AIXは、将来これらの最適化を行う可胜性がありたす。

これらのオプションは、そうするこずで倧きなメリットがある堎合にのみ䜿甚しおください。 あなたが
これらのオプションを指定するず、アセンブラずリンカがより倧きなオブゞェクトず実行可胜ファむルを䜜成したす
ファむルずたた遅いです。 これを指定した堎合、すべおのシステムで「gprof」を䜿甚するこずはできたせん
オプションであり、このオプションずオプションの䞡方を指定するず、デバッグで問題が発生する可胜性がありたす。
-g.

-fbranch-タヌゲット-ロヌド-最適化
プロロヌグ/゚ピロヌグスレッドの前に分岐タヌゲットレゞスタの負荷最適化を実行したす。
タヌゲットレゞスタの䜿甚は、通垞、リロヌド䞭にのみ公開されるため、巻き䞊げが行われたす。
ルヌプからロヌドし、ブロック間スケゞュヌリングを行うには、個別の最適化が必芁です
パス。

-fbranch-タヌゲット-ロヌド-最適化2
プロロヌグ/゚ピロヌグスレッドの埌に分岐タヌゲットレゞスタの負荷最適化を実行したす。

-fbtr-bb-排他的
分岐タヌゲットレゞスタの負荷最適化を実行するずきは、分岐タヌゲットを再利甚しないでください
基本ブロック内のレゞスタ。

-fstack-プロテクタヌ
スタックスマッシング攻撃などのバッファオヌバヌフロヌをチェックするために、远加のコヌドを発行したす。 これ
脆匱なオブゞェクトを持぀関数にガヌド倉数を远加するこずによっお行われたす。 これ
「alloca」を呌び出す関数ず、8バむトを超えるバッファヌを持぀関数が含たれたす。
ガヌドは、関数が入力されたずきに初期化され、関数が入力されたずきにチェックされたす。
関数が終了したす。 ガヌドチェックが倱敗した堎合、゚ラヌメッセヌゞが出力され、プログラムが出力されたす
終了したす。

泚: Ubuntu 6.10 以降のバヌゞョンでは、このオプションはデフォルトで C、C++、
ObjC、ObjC++、いずれでもない堎合 -fno-スタックプロテクタヌ, -nostdlib、たたは -自立  
発芋した。

-fstack-protector-all
いいね -fstack-プロテクタヌ すべおの機胜が保護されおいるこずを陀いお。

-fsection-アンカヌ
共有「アンカヌ」を䜿甚しお、シンボリックアドレス蚈算の数を枛らしおみおください
近くのオブゞェクトをアドレス指定するための蚘号。 この倉換は、数を枛らすのに圹立ちたす
いく぀かのタヌゲットでのGOT゚ントリずGOTアクセスの数。

たずえば、次の関数「foo」の実装

static int a、b、c;
int foovoid{return a + b + c; }

通垞、XNUMX぀の倉数すべおのアドレスを蚈算したすが、
-fsection-アンカヌ、代わりに、共通のアンカヌポむントから倉数にアクセスしたす。 The
効果は次の擬䌌コヌドに䌌おいたすこれは有効なCではありたせん。

int foovoid
{
レゞスタint*xr =x;
xr [a-x] + xr [b-x] + xr [c-x];を返したす。
}

すべおのタヌゲットがこのオプションをサポヌトしおいるわけではありたせん。

--パラメヌタ 名=倀
䞀郚の堎所では、GCCはさたざたな定数を䜿甚しお、最適化の量を制埡したす。
終わらせる。 たずえば、GCCは、特定を超える関数を含む関数をむンラむン化したせん。
呜什の数。 これらの定数の䞀郚は、コマンドラむンで制埡できたす
--パラメヌタ オプションを遞択したす。

特定のパラメヌタヌの名前、および倀の意味は、
コンパむラの内郚であり、将来予告なしに倉曎される可胜性がありたす
リリヌス。

いずれの堎合も、 倀 は敎数です。 の蚱容される遞択肢 名 には次の倀がありたす:

予枬可胜なブランチの結果
このしきい倀よりも䜎い確率で分岐が行われるず予枬される堎合
パヌセントの堎合、それは十分に予枬可胜であるず芋なされたす。 デフォルトは10です。

最倧クロスゞャンプ゚ッゞ
クロスゞャンプの察象ずなる入力゚ッゞの最倧数。 アルゎリズム
によっお䜿甚される -クロスゞャンピング 各ブロックに入る゚ッゞの数のON ^ 2です。
倀を倧きくするず、より積極的な最適化が行われ、コンパむル時間が長くなりたす。
実行可胜ファむルのサむズがわずかに改善されるず、増加したす。

min-crossjump-insn
XNUMX぀のブロックの終わりで䞀臎しなければならない呜什の最小数
それらにクロスゞャンプが実行される前に。 この堎合、この倀は無芖されたす
クロスゞャンプ元のブロック内のすべおの呜什が䞀臎したす。 The
デフォルト倀は5です。

max-grow-copy-bb-insn
代わりに基本ブロックをコピヌする堎合の最倧コヌドサむズ拡匵係数
ゞャンピング。 展開はゞャンプ呜什に関連しおいたす。 デフォルト倀は
8.

max-goto-duplication-insn
にゞャンプするブロックに耇補する呜什の最倧数
蚈算されたgoto。 倚数のパスでON ^ 2の動䜜を回避するために、GCCは
コンパむルプロセスの早い段階でgotosを蚈算し、遅くずもそれらをアンファクタリングしたす
可胜。 最倧以䞋の基本ブロックの終わりで蚈算されたゞャンプのみ-
goto-duplication-insnsはファクタリングされおいたせん。 デフォルト倀は8です。

最倧遅延スロット insn 怜玢
呜什を探すずきに考慮すべき呜什の最倧数
遅延スロットを埋めたす。 この任意の数を超える呜什が
怜玢された堎合、遅延スロットを埋めるこずによる時間の節玄は最小限であるため、停止したす
怜玢。 倀を倧きくするず、より積極的な最適化が行われ、
コンパむル時間は増加したすが、実行時間はおそらくわずかに改善されたす。

最倧遅延スロット ラむブ怜玢
遅延スロットを埋めようずするずき、考慮すべき呜什の最倧数
有効なラむブレゞスタ情報を持぀ブロックを怜玢する堎合。 これを増やす
任意に遞択された倀は、より積極的な最適化を意味し、
コンパむル時間。 遅延スロットコヌドが次の堎合、このパラメヌタを削陀する必芁がありたす
制埡フロヌグラフを維持するために曞き盎されたした。

最倧gcseメモリ
実行するために割り圓おるこずができるメモリのおおよその最倧量
グロヌバル共通郚分匏陀去の最適化。 より倚くのメモリがある堎合
指定が必芁な堎合、最適化は行われたせん。

max-gcse-挿入-比率
匏の挿入ず削陀の比率がこの倀よりも倧きい堎合
任意の匏の堎合、RTL PREは匏を挿入たたは削陀しお、そのたたにしたす
呜什ストリヌム内の郚分的に冗長な蚈算。 デフォルト倀は
20.

最倧保留リスト長
保留䞭の䟝存関係のスケゞュヌリングの最倧数は、フラッシュする前に蚱可されたす
珟圚の状態ず最初からやり盎したす。 ブランチや呌び出しが少ない倧きな関数は
メモリずリ゜ヌスを䞍必芁に消費する非垞に倧きなリストを䜜成したす。

最倧モゞュロバックトラック詊行回数
モゞュロの堎合にスケゞュヌラが実行する必芁があるバックトラック詊行の最倧数
ルヌプのスケゞュヌリング。 倀を倧きくするず、コンパむル時間が指数関数的に増加する可胜性がありたす。

max-inline-insn-single
いく぀かのパラメヌタヌは、GCCで䜿甚されるツリヌむンラむナヌを制埡したす。 この番号は、
内の呜什の最倧数GCCの内郚衚珟でカりント
ツリヌむンラむン化がむンラむン化のために考慮する単䞀の関数。 これは圱響するだけです
むンラむンで宣蚀された関数ずクラス宣蚀C ++で実装されたメ゜ッド。
デフォルト倀は400です。

max-inline-insns-auto
この方法で゚スプレッ゜の抜出を蚈量する堎合、゚スプレッ゜がスパりトから萜ちるタむミングずスケヌルが反応するタむミングに時間差が生じたす。゚スプレッ゜がスパりトから゚スプレッ゜カップに萜ち、スケヌルが蚈量するたで若干の時間差が生じるため、抜出ボタンを止めた埌、液量が玄g増加するこずを念頭に眮いお抜出を止めおください。 -finline-関数 に含たれる -O3、倚くの関数
それ以倖の堎合は、コンパむラによるむンラむン化は考慮されたせん。 に
それらの関数、関数ず比范しお異なるより制限的な制限
宣蚀されたむンラむンを適甚できたす。 デフォルト倀は40です。

むンラむン-最小-スピヌドアップ
発信者+着信者の実行時間の掚定パフォヌマンス改善がこれを超える堎合
しきい倀パヌセント、関数はの制限に関係なくむンラむン化できたす
--パラメヌタ max-inline-insn-single & --パラメヌタ max-inline-insns-auto.

倧機胜-insns
非垞に倧きな関数を指定する制限。 この制限より倧きい関数の堎合
むンラむン化埌、むンラむン化はによっお制玄されたす --パラメヌタ 倧機胜の成長。 この
パラメヌタは、䞻に非
バック゚ンドで䜿甚される線圢アルゎリズム。 デフォルト倀は2700です。

倧機胜の成長
むンラむン化によっお匕き起こされる倧きな関数の最倧成長をパヌセントで指定したす。 The
デフォルト倀は100で、倧芏暡な関数の拡匵を元の2.0倍に制限したす
サむズ。

ラヌゞナニットむン
倧きな倉換単䜍を指定する制限。 ナニットのむンラむン化によっお匕き起こされる成長
この制限よりも倧きい堎合は、 --パラメヌタ むンラむンナニット成長。 小さなナニットの堎合
これはき぀すぎるかもしれたせん。 たずえば、関数Aで構成されるナニットに぀いお考えおみたす。
これはむンラむンで、BはAをXNUMX回呌び出すだけです。 BがAに比べお小さい堎合、
ナニットの成長は300\ですが、そのようなむンラむン化は非垞に正垞です。 非垞に倧きい堎合
小さなむンラむン機胜で構成されるナニット、ただし、党䜓的なナニットの成長
コヌドサむズの急激な増加を避けるために制限が必芁です。 したがっお、小さい堎合
単䜍、サむズはに増加したす --パラメヌタ ラヌゞナニットむン 申し蟌む前に --パラメヌタ
むンラむンナニット成長。 デフォルトは10000です。

むンラむンナニット成長
むンラむン化によっお匕き起こされるコンパむル単䜍の最倧の党䜓的な成長を指定したす。 The
デフォルト倀は30で、ナニットの成長を元のサむズの1.3倍に制限したす。

ipcp ナニットの成長
手続き間によっお匕き起こされるコンパむル単䜍の最倧の党䜓的な成長を指定したす
䞀定の䌝播。 デフォルト倀は10で、ナニットの増加を1.1に制限したす。
元のサむズの倍。

ラヌゞスタックフレヌム
倧きなスタックフレヌムを指定する制限。 アルゎリズムのむンラむン化が詊行されおいる間
この限界を超えお成長しすぎないようにしたす。 デフォルト倀は256バむトです。

ラヌゞスタックフレヌムの成長
むンラむン化によっお匕き起こされる倧きなスタックフレヌムの最倧成長をパヌセントで指定したす。
デフォルト倀は1000で、倧きなスタックフレヌムの増加を11倍に制限したす。
オリゞナルサむズ。

max-inline-insns-recursive
max-inline-insns-recursive-auto
自己のアりトオブラむンコピヌである呜什の最倧数を指定したす。
再垰的むンラむン関数は、再垰的むンラむン化を実行するこずによっおに成長できたす。

むンラむンで宣蚀された関数の堎合、 --パラメヌタ max-inline-insns-recursive に取り蟌たれたす
アカりント。 むンラむンで宣蚀されおいない関数の堎合、再垰的なむンラむン化は次の堎合にのみ発生したす
-finline-関数 に含たれる -O3が有効になっおいお --パラメヌタ max-inline-insn-
再垰自動 䜿甚されおいる。 デフォルト倀は450です。

最倧むンラむン再垰深床
最倧むンラむン再垰深さ自動
再垰的なむンラむン化に䜿甚される最倧の再垰の深さを指定したす。

むンラむンで宣蚀された関数の堎合、 --パラメヌタ 最倧むンラむン再垰深床 に取り蟌たれたす
アカりント。 むンラむンで宣蚀されおいない関数の堎合、再垰的なむンラむン化は次の堎合にのみ発生したす
-finline-関数 に含たれる -O3が有効になっおいお --パラメヌタ max-inline-recursive-
デプスオヌト 䜿甚されおいる。 デフォルト倀は8です。

最小むンラむン再垰確率
再垰的なむンラむン化は、再垰が深い関数に察しおのみ有益です。
平均的であり、再垰の深さがほずんどない関数を増やすこずで、機胜を損なう可胜性がありたす。
他のオプティマむザに察する関数本䜓のプロロヌグサむズたたは耇雑さ。

プロファむルフィヌドバックが利甚可胜な堎合を参照 -fprofile-generate実際の再垰
深さは、関数が特定の呌び出しを介しお繰り返される確率から掚枬できたす
衚珟。 このパラメヌタヌは、むンラむン化を呌び出し匏のみに制限したす。
確率が指定されたしきい倀パヌセントを超えおいたす。 デフォルト倀は10です。

早期むンラむン化-insns
初期のむンラむナヌが䜜成できる成長を指定したす。 事実䞊、それは量を増やしたす
抜象化のペナルティが倧きいコヌドのむンラむン化。 デフォルト倀は10です。

max-early-inliner-むテレヌション
max-early-inliner-むテレヌション
初期のむンラむナヌの反埩の制限。 これは基本的に
初期のむンラむナヌが解決できるネストされた間接呌び出し。 より深いチェヌンはただです
遅いむンラむン化によっお凊理されたす。

comdat 共有確率
comdat 共有確率
comdatの可芖性を備えたC++むンラむン関数の確率パヌセント
耇数のコンパむルナニット間で共有されたす。 デフォルト倀は20です。

min-vect-loop-bound
ルヌプがベクトル化されない最小反埩回数
-ftree-ベクトル化 䜿甚されおいる。 ベクトル化埌の反埩回数は、
ベクトル化を可胜にするには、このオプションで指定された倀よりも倧きくしたす。 The
デフォルト倀は0です。

gcse コスト距離比
匏を移動できる最倧距離の蚈算におけるスケヌリング係数
GCSEの最適化。 これは珟圚、コヌド巻き䞊げパスでのみサポヌトされおいたす。
比率が倧きいほど、単玔なコヌドの巻き䞊げがより積極的になりたす。
匏、぀たり、コストが gcse-無制限-
コスト。 0を指定するず、単玔な匏の巻き䞊げが無効になりたす。 デフォルト倀は
10.

gcse-無制限のコスト
コストは、XNUMX぀の兞型的な機械呜什のコストずしお倧たかに枬定されたす。
どのGCSE最適化は、匏が移動できる距離を制玄したせん。
これは珟圚、コヌド巻き䞊げパスでのみサポヌトされおいたす。 コストが䜎いほど、
より積極的なコヌドホむストです。 0を指定するず、すべおの匏で次のこずが可胜になりたす。
無制限の距離を移動したす。 デフォルト倀は3です。

最倧ホむスト深床
ドミネヌタヌツリヌでの衚珟の怜玢の深さ。 これが䜿甚されたす
巻き䞊げアルゎリズムでの二次動䜜を回避するため。 0の倀は制限したせん
怜玢では、しかし巚倧な関数のコンパむルを遅くするかもしれたせん。 デフォルト倀
30です。

最倧末尟マヌゞ比范
bbを比范する類䌌のbbの最倧量。 これは回避するために䜿甚されたす
ツリヌテヌルのマヌゞにおける10次動䜜。 デフォルト倀はXNUMXです。

最倧末尟マヌゞ反埩数
関数のパスの最倧反埩回数。 これは
ツリヌテヌルのマヌゞでコンパむル時間を制限したす。 デフォルト倀は2です。

max-unrolled-insn
ルヌプを展開する必芁がある可胜性のある呜什の最倧数。 ルヌプの堎合
が展開されおいる堎合、このパラメヌタヌはルヌプコヌドの回数も決定したす
展開。

最倧平均アンロヌルドむンSNS
実行の確率によっおバむアスされる呜什の最倧数
ルヌプを展開する必芁がある堎合がありたす。 ルヌプが展開されおいる堎合、このパラメヌタヌも
ルヌプコヌドが展開される回数を決定したす。

最倧アンロヌル回数
単䞀ルヌプの展開の最倧数。

最倧皮をむいたinsns
ルヌプをピヌリングする必芁がある可胜性のある呜什の最倧数。 ルヌプの堎合
がピヌリングされる堎合、このパラメヌタヌはルヌプコヌドがピヌリングされる回数も決定したす。

最倧剥離時間
単䞀ルヌプの剥離の最倧数。

max-peel-branchs
ピヌリングされたシヌケンスを通るホットパス䞊のブランチの最倧数。

最倧完党に皮をむいたinsns
完党に剥がされたルヌプの最倧数。

最倧完党に剥がす回数
完党な剥離に適したルヌプの最倧反埩回数。

最倧完党ピヌルルヌプネスト深さ
完党な剥離に適したルヌプネストの最倧深さ。

max-unswitch-insn
切り替えられおいないルヌプのinsnsの最倧数。

最倧切り替えレベル
XNUMX぀のルヌプで切り替えられないブランチの最倧数。

リム高䟡
ルヌプ䞍倉条件での高䟡な匏の最小コスト。

iv-考慮-すべおの候補者-バむンド
誘導倉数の候補数に制限があり、それを䞋回るずすべおの候補が
誘導倉数の最適化での䜿甚ごずに考慮されたす。 ある堎合
これよりも倚くの候補者は、最も関連性の高いものだけを避けるず芋なされたす
二次時間蚈算量。

iv-max-怜蚎された甚途
誘導倉数の最適化は、より倚くの誘導を含むルヌプをあきらめたす
倉数の䜿甚。

iv-always-prune-cand-set-bound
セット内の候補の数がこの倀より少ない堎合は、垞に次のこずを詊みおください。
新しいivを远加するずきに、セットから䞍芁なivを削陀したす。

scev-max-expr-size
スカラヌ進化アナラむザヌで䜿甚される匏のサむズに制限されたす。 倧きい
匏はアナラむザヌを遅くしたす。

scev-max-expr-耇雑さ
スカラヌ進化アナラむザヌの匏の耇雑さに瞛られたす。
耇雑な匏はアナラむザヌを遅くしたす。

オメガ-最倧-倉数
オメガ制玄システムの倉数の最倧数。 デフォルト倀
128です。

オメガ-max-geqs
オメガ制玄システムにおける䞍等匏の最倧数。 デフォルト
倀は256です。

オメガ-max-eqs
オメガ制玄システムにおける等匏の最倧数。 デフォルト倀
128です。

オメガマックスワむルドカヌド
Omega゜ルバヌが挿入できるワむルドカヌド倉数の最倧数。
デフォルト倀は18です。

オメガハッシュテヌブルサむズ
オメガ゜ルバヌのハッシュテヌブルのサむズ。 デフォルト倀は550です。

オメガマックスキヌ
オメガ゜ルバヌが䜿甚するキヌの最倧数。 デフォルト倀は500です。

オメガ排陀冗長制玄
1に蚭定する堎合は、高䟡な方法を䜿甚しお、冗長な制玄をすべお排陀したす。 The
デフォルト倀は0です。

vect-max-version-for-alignment-checks
ルヌプを実行するずきに実行できる実行時チェックの最倧数
ベクタヌ化ツヌルでのアラむメントのバヌゞョン管理。

vect-max-version-for-alias-checks
ルヌプを実行するずきに実行できる実行時チェックの最倧数
ベクタヌ化ツヌルでの゚むリアスのバヌゞョン管理。

vect-max-pealing-for-alignment
ベクタヌ化機胜のアクセス調敎を匷化するためのルヌプピヌルの最倧数。 䟡倀
-1は「制限なし」を意味したす。

远跡する最倧反埩回数
分析のためのブルヌトフォヌスアルゎリズムのルヌプの最倧反埩回数
ルヌプの反埩回数の評䟡を詊みたす。

ホット bb カりント ws パヌミル
基本ブロックプロファむルカりントは、それが䞎えられたものに寄䞎する堎合、ホットであるず芋なされたす
プロファむルされた実行党䜓のpermillage぀たり0 ... 1000。

ホット bb 頻床分数
基本ブロックの実行の゚ントリブロック頻床の䞀郚を遞択したす
基本ブロックが䞎えられた堎合の機胜は、ホットず芋なす必芁がありたす。

最倧予枬反埩回数
静的に予枬するルヌプ反埩の最倧数。 これはで䟿利です
関数に既知の境界を持぀単䞀のルヌプず別のルヌプが含たれおいる堎合
未知の限界を持぀。 既知の反埩回数は正しく予枬されたすが、
未知の反埩回数は平均しお玄10回です。これはルヌプが
境界のないものは、他のものに比べお人為的に冷たく芋えたす。

調敎しきい倀
の基本ブロックの実行の最倧頻床の䞀郚を遞択したす
基本ブロックを敎列させる機胜。

敎列ルヌプ反埩
少なくずも遞択された反埩回数を繰り返すこずが期埅されるルヌプが敎列されたす。

トレヌサヌ-動的カバレッゞ
トレヌサヌ-動的カバレッゞフィヌドバック
この倀は、指定されたパヌセンテヌゞのスヌパヌブロックの圢成を制限するために䜿甚されたす。
実行された呜什がカバヌされたす。 これにより、䞍芁なコヌドサむズの拡匵が制限されたす。

  トレヌサヌ-動的カバレッゞフィヌドバック プロフィヌルのフィヌドバックが
利甚可胜。 実際のプロファむル (静的に掚定されたプロファむルずは察照的に) は、
バランスが悪く、しきい倀をより倧きな倀にするこずができたす。

トレヌサヌ-最倧-コヌド-成長
コヌドの増加が所定の割合に達したら、テヌルの重耇を停止したす。 これは
重耇のほずんどは埌でクロスで排陀されるため、かなり人工的な制限
ゞャンプするため、必芁なコヌドの増加よりもはるかに高い倀に蚭定される堎合がありたす。

トレヌサヌ-最小-分岐比
ベスト゚ッゞの逆確率がこれよりも小さい堎合は、逆成長を停止したす
しきい倀パヌセント。

トレヌサヌ-最小-分岐比
tracer-min-branch-ratio-フィヌドバック
最良の゚ッゞの確率がこのしきい倀よりも䜎い堎合は、前方成長を停止したす。

同様に トレヌサヌ-動的カバレッゞ XNUMX぀の倀が存圚したす。XNUMX぀はコンパむル甚です。
プロファむルフィヌドバック甚ずなしのコンパむル甚。 コンパむルの倀
プロファむルのフィヌドバックを䜜成するには、より保守的より高いにする必芁がありたす
トレヌサヌが効果的。

最倧 CSE パス長
CSEが考慮するパス䞊の基本ブロックの最倧数。 デフォルトは10です。

max-cse-insn
フラッシュする前にCSEが凊理する呜什の最倧数。 デフォルトは
1000.

ggc-min-expand
GCCは、ガベヌゞコレクタを䜿甚しお独自のメモリ割り圓おを管理したす。 このパラメヌタ
ガベヌゞコレクタヌのヒヌプの最小パヌセンテヌゞを指定したす
コレクション間で拡匵できたす。 これを調敎するず、コンパむル速床が向䞊する可胜性がありたす。
コヌド生成には圱響したせん。

デフォルトは30+ 70*RAM / 1GBで、RAM> = 100GBの堎合の䞊限は1です。
「getrlimit」が䜿甚可胜な堎合、「RAM」の抂念は実際のRAMの最小倀であり、
「RLIMIT_DATA」たたは「RLIMIT_AS」。 GCCが特定のRAMを蚈算できない堎合
プラットフォヌムでは、30の䞋限が䜿甚されたす。 このパラメヌタの蚭定ず ggc-min-
ヒヌプサむズ れロにするず、あらゆる機䌚に完党なコレクションが発生したす。 これは
非垞に遅いですが、デバッグに圹立぀堎合がありたす。

ggc-最小ヒヌプサむズ
ガベヌゞコレクタヌが収集を開始する前のヒヌプの最小サむズ
ごみ。 最初のコレクションは、ヒヌプが次のように拡匵された埌に発生したす ggc-min-expand%
越えお ggc-最小ヒヌプサむズ。 繰り返したすが、これを調敎するず、コンパむル速床が向䞊する可胜性がありたす。
コヌド生成には圱響したせん。

デフォルトは、RAM / 8、RLIMIT_RSS、たたは確実にしようずする制限の小さい方です。
RLIMIT_DATAたたはRLIMIT_ASを超えるこずはありたせんが、䞋限は4096です。
131072メガバむトおよび128XNUMXメガバむトの䞊限。 GCCができない堎合
特定のプラットフォヌムでRAMを蚈算するには、䞋限が䜿甚されたす。 これを蚭定する
パラメヌタが非垞に倧きいず、ガベヌゞコレクションが効果的に無効になりたす。 これを蚭定する
パラメヌタず ggc-min-expand れロにするず、すべおのコレクションが発生したす
機䌚。

マックスリロヌド怜玢むンSNS
呜什のリロヌドの最倧数は、同等のものを埌方に振り返る必芁がありたす
登録。 倀を倧きくするず、より積極的な最適化が行われ、
コンパむル時間が長くなり、パフォヌマンスがわずかに向䞊したす。 デフォルト
倀は100です。

max-cselib-memory-locations
cselibが考慮すべきメモリ䜍眮の最倧数。
倀を倧きくするず、より積極的な最適化が行われ、コンパむル時間が長くなりたす。
おそらくわずかにパフォヌマンスが向䞊したす。 デフォルト倀は500です。

䞊べ替えブロック耇補
䞊べ替えブロック重耇フィヌドバック
無条件で䜿甚するかどうかを決定するために、基本ブロック䞊べ替えパスで䜿甚されたす
宛先でコヌドを分岐たたは耇補したす。 コヌドが重耇しおいる堎合
掚定サむズは、この倀に掚定サむズを掛けた倀よりも小さい
プログラムのホットスポットで無条件にゞャンプしたす。

  䞊べ替えブロック重耇フィヌドバック プロフィヌルのフィヌドバックが
利甚可胜。 よりも高い倀に蚭定される堎合がありたす。 䞊べ替えブロック耇補 から
ホットスポットに関する情報はより正確です。

max-sched-ready-insn
スケゞュヌラヌが発行する準備ができおいる呜什の最倧数は
最初のスケゞュヌリングパス䞭の任意の時点で怜蚎しおください。 倀を増やす
より培底的な怜玢を意味し、おそらくコンパむル時間が長くなりたす
メリットはほずんどありたせん。 デフォルト倀は100です。

最倧スケゞュヌル領域ブロック数
ブロック間で考慮される領域内のブロックの最倧数
スケゞュヌリング。 デフォルト倀は10です。

最倧パむプラむン領域ブロック数
でパむプラむン化を怜蚎する領域内のブロックの最倧数
遞択的スケゞュヌラ。 デフォルト倀は15です。

最倧スケゞュヌル領域-insn
ブロック間で考慮される領域内のinsnの最倧数
スケゞュヌリング。 デフォルト倀は100です。

最倧パむプラむン領域-insn
パむプラむンの察象ずなる地域のinsnの最倧数
遞択的スケゞュヌラ。 デフォルト倀は200です。

最小スペック確率
ブロック間で゜ヌスブロックに到達する最小確率パヌセント
投機的スケゞュヌリング。 デフォルト倀は40です。

max-sched-extend-regions-iters
領域を拡匵するためのCFGの最倧反埩回数。 倀0
デフォルトリヌゞョン拡匵を無効にしたす。

最倧スケゞュヌル-INSN-競合遅延
投機的な動きの察象ずなるinsnの最倧競合遅延。
デフォルト倀は3です。

スケゞュヌルスペックプロブカットオフ
投機的成功の最小確率パヌセント、したがっお投機的
insnsが予定されおいたす。 デフォルト倀は40です。

sched-spec-state-edge-prob-cutoff
スケゞュヌラが状態を保存するために゚ッゞが持぀必芁のある最小確率
それを暪切っお。 デフォルト倀は10です。

sched-mem-true-dep-cost
同じメモリを察象ずするストアずロヌド間の最小距離CPUサむクル単䜍
堎所。 デフォルト倀は1です。

selsched-max-先読み
遞択的スケゞュヌリングの先読みりィンドりの最倧サむズ。 深みです
利甚可胜な指瀺の怜玢の。 デフォルト倀は50です。

selsched-max-sched-times
遞択䞭に呜什がスケゞュヌルされる最倧回数
スケゞュヌリング。 これは、反埩回数の制限です。
呜什はパむプラむン化される堎合がありたす。 デフォルト倀は2です。

selsched-max-insns-to-rename
準備リストで考慮される最良の呜什の最倧数
遞択スケゞュヌラで名前を倉曎したす。 デフォルト倀は2です。

sms-分-sc
スむングモゞュロスケゞュヌラが生成するステヌゞカりントの最小倀。 ザ
デフォルト倀は2です。

最倧最埌の倀-rtl
匏に蚘録できるRTLの数ずしお枬定される最倧サむズ
そのレゞスタの最埌の既知の倀ずしおの疑䌌レゞスタのコンバむナで。 The
デフォルトは10000です。

敎数共有制限
小さな敎数定数は共有デヌタ構造を䜿甚できるため、コンパむラの
メモリ䜿甚量ずその速床の向䞊。 これにより、共有の最倧倀が蚭定されたす
敎数定数。 デフォルト倀は256です。

ssp-バッファサむズ
スタックスマッシング保護を受けるバッファ぀たりアレむの最小サむズ
い぀ -fstack-保護 䜿甚されおいる。

Ubuntu10.10以前のこのデフォルトは「8」でした。 珟圚は「4」です。
スタックプロテクタヌによっお保護されおいる関数の数。

最倧ゞャンプスレッド重耇-stmts
ブロックで蚱可されるステヌトメントの最倧数。
スレッドゞャンプ。

フィヌルド䟝存の最倧フィヌルド数
䞭にフィヌルドセンシティブな方法で凊理される構造内のフィヌルドの最倧数
ポむンタ分析。 デフォルトはれロです -O0 & -O1、および100 -オス, -O2,
-O3.

プリフェッチレむテンシ
プリフェッチ前に実行される呜什の平均数を芋積もる
終了したす。 プリフェッチされる距離は、この定数に比䟋したす。
この数を増やすず、プリフェッチされるストリヌムが少なくなる可胜性もありたすを参照。
同時プリフェッチ).

同時プリフェッチ
同時に実行できるプリフェッチの最倧数。

l1-キャッシュラむンサむズ
L1キャッシュのキャッシュラむンのサむズバむト単䜍。

l1-キャッシュサむズ
L1キャッシュのサむズキロバむト単䜍。

l2-キャッシュサむズ
L2キャッシュのサむズキロバむト単䜍。

最小むンス察プリフェッチ比
呜什数ずプリフェッチ数の最小比率
ルヌプでのプリフェッチを有効にしたす。

プリフェッチ最小 insn 察 mem 比
呜什数ずメモリ数の最小比率
ルヌプでのプリフェッチを有効にするための参照。

䜿甚正芏型
コンパむラが「正芏」型システムを䜿甚する必芁があるかどうか。 デフォルトでは、これ
垞に1である必芁がありたす。これは、比范のためにより効率的な内郚メカニズムを䜿甚したす。
C++およびObjective-C++のタむプ。 ただし、正芏型システムのバグが
コンパむルが倱敗する堎合は、この倀を0に蚭定しお、正芏型を無効にしたす。

スむッチ倉換最倧分岐比
スむッチ初期化倉換は、より倧きい配列の䜜成を拒吊したす
スむッチ倉換最倧分岐比 スむッチのブランチ数の倍。

最倧郚分アンティック長
ツリヌパヌシャル䞭に蚈算されたパヌシャルアンティックセットの最倧長
冗長性陀去の最適化-ftree-preで最適化する堎合 -O3 以䞊。
ある皮の゜ヌスコヌドでは、郚分冗長性の排陀が匷化されおいたす
最適化が実行され、ホストで䜿甚可胜なすべおのメモリが消費される可胜性がありたす
機械。 このパラメヌタヌは、蚈算されるセットの長さに制限を蚭定したす。
暎走を防ぎたす。 このパラメヌタヌに倀0を蚭定する
無制限のセット長を蚱可したす。

sccvn-最倧-scc-サむズ
SCCVN凊理䞭の匷連結成分SCCの最倧サむズ。 もしも
この制限に達した堎合、関数党䜓のSCCVN凊理は実行されず、
それに応じた最適化は無効になりたす。 デフォルトの最倧SCCサむズは
10000.

sccvn-max-alias-queries-per-access
冗長性を探すずきに実行するalias-oracleク゚リの最倧数
ロヌドずストア甚。 この制限に達した堎合、怜玢は䞭止され、ロヌドたたは
ストアは冗長ずは芋なされたせん。 ク゚リの数はアルゎリズムによるものです
ロヌドから関数゚ントリたでのすべおのパスのストアの数に制限されたす。
ク゚リのデフォルトの最倧数は1000です。

ira 最倧ルヌプ数
IRAは、デフォルトで地域レゞスタ割り圓おを䜿甚したす。 関数にさらに含たれおいる堎合
このパラメヌタで指定された数よりも倚くの堎合、指定された数のルヌプのみ
最も頻繁に実行されるルヌプは、地域レゞスタ割り圓お甚の領域を圢成したす。
パラメヌタのデフォルト倀は100です。

ira-max-競合テヌブルサむズ
IRAは高床なアルゎリズムを䜿甚しお競合テヌブルを圧瞮したすが、
テヌブルは、巚倧な機胜のために䟝然ずしお過剰な量のメモリを必芁ずする可胜性がありたす。 の堎合
関数の競合テヌブルは、これによっお指定されたMB単䜍のサむズを超える可胜性がありたす
パラメヌタの堎合、レゞスタアロケヌタは代わりに、より速く、より単玔で、より䜎いものを䜿甚したす-
疑䌌レゞスタ競合テヌブルを䜜成する必芁のない高品質のアルゎリズム。
パラメヌタのデフォルト倀は2000です。

ira-loop-reserved-regs
IRAを䜿甚しお、決定のためのルヌプ内のより正確なレゞスタヌ圧力を評䟡できたす。
ルヌプ䞍倉条件を移動するにはを参照 -O3。 予玄されおいる䜿甚可胜なレゞスタの数
他のいく぀かの目的は、このパラメヌタヌによっお䞎えられたす。 のデフォルト倀
パラメヌタは2です。これは、通垞必芁なレゞスタの最小数です。
指瀺。 この倀は、倚くの実隓から最もよくわかりたす。

ルヌプ䞍倉の最倧BBSむンルヌプ
ルヌプ䞍倉モヌションは、コンパむル時間ずコンパむル時間の䞡方で非垞にコストがかかる可胜性がありたす
非垞に倧きなルヌプを䌎う、必芁なコンパむル時メモリの量。 より倚くのルヌプ
このパラメヌタよりも基本的なブロックには、ルヌプ䞍倉のモヌション最適化はありたせん
それらに実行されたす。 パラメヌタのデフォルト倀は1000です。 -O1 そしお、10000
for -O2 以䞊。

datadeps のルヌプ最倧デヌタ参照
非垞に倧きなルヌプの堎合、デヌタの䟝存関係を構築するにはコストがかかりたす。 このパラメヌタ
デヌタず芋なされるルヌプ内のデヌタ参照の数を制限したす
䟝存関係分析。 これらの倧きなルヌプは、を䜿甚した最適化では凊理されたせん
ルヌプデヌタの䟝存関係。 デフォルト倀は1000です。

最倧vartrackサむズ
可倉トラッキングデヌタフロヌ䞭に䜿甚するハッシュテヌブルスロットの最倧数を蚭定したす
任意の機胜の分析。 での可倉トラッキングでこの制限を超えた堎合
割り圓おが有効になっおいる堎合、その関数の分析は、割り圓おなしで再詊行されたす。
関数からすべおのデバッグむンを削陀したす。 なくおも制限を超えた堎合
デバッグinsns、倉数远跡分析は関数に察しお完党に無効になっおいたす。
パラメヌタをれロに蚭定するず、無制限になりたす。

max-vartrack-expr- Depth
倉数名をマップしようずしたずきの再垰レベルの最倧数を蚭定したす。
匏を評䟡するために䞀時をデバッグしたす。 これにより、コンパむル時間がさらに短瞮されたす
完党なデバッグ情報。 これを䜎く蚭定しすぎるず、次のような倀の匏になりたす。
利甚可胜であり、デバッグ情報で衚すこずができ、䜿甚されなくなる可胜性がありたす。
これを高く蚭定するず、コンパむラがより耇雑なデバッグを芋぀けるこずができる堎合がありたす
匏ですが、コンパむル時間ずメモリ䜿甚量が増える可胜性がありたす。 デフォルトは12です。

min-nondebug-insn-uid
非デバッグinsnsには、このパラメヌタヌで始たるuidを䜿甚したす。 以䞋の範囲
パラメヌタは、によっお䜜成されたデバッグinsns専甚に予玄されおいたす
-fvar-远跡-割り圓お、ただし、debug insnsは䞊蚘の重耇しないuidを取埗する堎合がありたす
予玄範囲を䜿い果たした堎合。

ipa-sra-ptr-成長因子
IPA-SRAは、アグリゲヌトぞのポむンタヌをXNUMX぀以䞊の新しいパラメヌタヌのみに眮き換えたす
环積サむズが以䞋の堎合 ipa-sra-ptr-成長因子 回
元のポむンタパラメヌタのサむズ。

tm-max-集蚈サむズ
トランザクションでスレッドロヌカル倉数のコピヌを䜜成する堎合、このパラメヌタヌ
倉数がロギングずずもに保存されるたでのサむズをバむト単䜍で指定したす
コヌドシヌケンスペアの保存/埩元ずは察照的に機胜したす。 このオプションのみ
䜿甚時に適甚されたす -fgnu-tm.

グラファむト-max-nb-scop-params
グラファむトルヌプ倉換での指数効果を回避するために、
静的制埡パヌツSCoPのパラメヌタヌには制限がありたす。 デフォルト倀は10です
パラメヌタヌ。 コンパむル時に倀が䞍明で定矩されおいる倉数
SCoPの倖偎は、SCoPのパラメヌタヌです。

関数ごずのgraphite-max-bbs
SCoPの怜出における指数関数的な圱響を回避するために、関数のサむズ
グラファむトによっお分析されたものには限界がありたす。 デフォルト倀は100基本ブロックです。

ルヌプ ブロック タむル サむズ
ルヌプブロッキングたたはストリップマむニング倉換。 -floop-ブロック or
-floop-strip-mine、ルヌプネスト内の各ルヌプを指定された数だけストリップマむニングしたす
反埩。 ストリップの長さは、 ルヌプ ブロック タむル サむズ
パラメヌタ。 デフォルト倀は51回の反埩です。

ipa-cp-倀リストのサむズ
IPA-CPは、関数に枡されるすべおの可胜な倀ずタむプを远跡しようずしたす
それらを䌝播し、仮想化解陀を実行するためのパラメヌタ。 ipa-cp-倀-
リストサむズ XNUMX぀のフォヌマルごずに栌玍する倀ずタむプの最倧数です
関数のパラメヌタ。

lto パヌティション
WHOPRのコンパむル䞭に生成されるパヌティションの必芁な数を指定したす。 The
パヌティションの数は、コンパむルに䜿甚されるCPUの数を超える必芁がありたす。 The
デフォルト倀は32です。

lto-minパヌティション
WHOPRの最小パヌティションのサむズ掚定呜什。 これは防止したす
非垞に小さなプログラムをあたりにも倚くのパヌティションに分割する費甚。

cxx-max-namespaces-for-diagnostic-help
C++の名前怜玢時に提案を参照するための名前空間の最倧数
識別子に倱敗したす。 デフォルトは1000です。

シンク-呚波数-しきい倀
タヌゲットブロックの最倧盞察実行頻床パヌセント
ステヌトメントの元のブロックず比范しお、ステヌトメントのシンクを可胜にしたす
声明。 数倀が倧きいほど、ステヌトメントの沈䞋がより積極的になりたす。 The
デフォルト倀は75です。小さな正の調敎が次のステヌトメントに適甚されたす。
メモリオペランドはさらに収益性が高いため、シンクしたす。

シンクたでの最倧ストア数
沈めるこずができる条件付きストアのペアの最倧数。 次の堎合は0に蚭定したす
いずれかのベクトル化-ftree-ベクトル化たたはif-conversion-ftree-ルヌプ-if-convert)
無効になっおいたす。 デフォルトは2です。

蚱可ロヌドデヌタレヌス
オプティマむザヌがロヌド時に新しいデヌタ競合を導入できるようにしたす。 蚱可するには 1 に蚭定したす。
それ以倖の堎合は 0 です。
-fmemory-モデル= オプションを遞択したす。

ストア デヌタ レヌスを蚱可したす。
オプティマむザがストアに新しいデヌタ競合を導入できるようにしたす。 蚱可するには1に蚭定したす。
それ以倖の堎合は 0 です。
-fmemory-モデル= オプションを遞択したす。

パックロヌドデヌタレヌスを蚱可する
オプティマむザヌがパックされたデヌタのロヌドで新しいデヌタ競合を導入できるようにしたす。 1  に蚭定
allow、それ以倖の堎合は 0。
  -fmemory-モデル= オプションを遞択したす。

パックストアデヌタレヌスの蚱可
オプティマむザヌがパックされたデヌタ ストアに新しいデヌタ競合を導入できるようにしたす。 1  に蚭定
allow、それ以倖の堎合は 0。
  -fmemory-モデル= オプションを遞択したす。

ケヌス倀-しきい倀
ゞャンプテヌブルを䜿甚するのに最適な異なる倀の最小数
条件付きブランチのツリヌの代わりに。 倀が0の堎合、デフォルトを䜿甚したす
この機械。 デフォルトは0です。

ツリヌ再結合幅
再関連付けされたツリヌで䞊行しお実行される呜什の最倧数を蚭定したす。
このパラメヌタは、デフォルトで䜿甚されるタヌゲット䟝存のヒュヌリスティックをオヌバヌラむドしたす。
れロ倀。

スケゞュヌル圧力アルゎリズム
のXNUMX぀の利甚可胜な実装から遞択したす -fsched-圧力。 アルゎリズム1
は元の実装であり、
再泚文されおいたす。 アルゎリズム2は、
アルゎリズム1によっお採甚された比范的保守的なアプロヌチず、かなり積極的なアプロヌチ
デフォルトのスケゞュヌラヌが採甚するアプロヌチ。 それはより倧きく䟝存しおいたす
通垞のレゞスタファむルず正確なレゞスタ圧力クラス。 芋る ハむファ-sched.c
詳现に぀いおは、GCC゜ヌスを参照しおください。

デフォルトの遞択はタヌゲットによっお異なりたす。

max-slsr-cand-scan
シヌク時に考慮される既存の候補の最倧数を蚭定したす
新しい盎線匷床削枛候補の基瀎。

オプション 制埡   プリプロセッサ
これらのオプションは、実際の前に各C゜ヌスファむルで実行されるCプリプロセッサを制埡したす
コンパむル。

あなたが䜿甚しおいる堎合 -E オプションの堎合、前凊理以倖は䜕も行われたせん。 これらのオプションのいく぀か
ず䞀緒にのみ意味をなす -E プリプロセッサの出力が
実際のコンパむルには適しおいたせん。

-Wp、オプション
あなたが䜿甚するこずができたす -Wp、オプション コンパむラドラむバをバむパスしお枡す オプション 盎接スルヌ
プリプロセッサに。 もしも オプション カンマが含たれ、で耇数のオプションに分割されたす
カンマ。 ただし、倚くのオプションは、によっお倉曎、翻蚳、たたは解釈されたす。
プリプロセッサに枡される前のコンパむラドラむバ、および -Wp 匷制的にバむパスする
このフェヌズ。 プリプロセッサの盎接むンタヌフェむスは文曞化されおおらず、
倉曎するので、可胜な限り䜿甚を避ける必芁がありたす -Wp ドラむバヌに凊理させたす
代わりにオプション。

-Xプリプロセッサ オプション
合栌 オプション プリプロセッサのオプションずしお。 これを䜿甚しおシステムを䟛絊するこずができたす-
GCCが認識しない特定のプリプロセッサオプション。

匕数を取るオプションを枡したい堎合は、次を䜿甚する必芁がありたす -Xプリプロセッサ
XNUMX回、オプション甚にXNUMX回、匕数甚にXNUMX回。

-統合されおいない-cpp
コンパむル前に、別のパスずしお前凊理を実行したす。 デフォルトでは、GCCは
入力トヌクン化ず解析の統合された郚分ずしおの前凊理。 このオプションの堎合
提䟛されおいる堎合、適切な蚀語のフロント゚ンドcc1, cc1プラスたたは cc1obj C、C ++の堎合、
およびObjective-Cは、代わりにXNUMX回呌び出されたす。XNUMX回は前凊理のみです。
前凊理された入力の実際のコンパむル甚にXNUMX回。 このオプションは䟿利かもしれたせん
ず䞀緒に -B or -ラッパヌ 代替プリプロセッサを指定するオプションたたは
通垞の前凊理ずの間にプログラム゜ヌスの远加凊理を実行したす
コンパむル。

-D 名
事前定矩 名 定矩1のマクロずしお。

-D 名=定矩
の内容 定矩 トヌクン化され、
翻蚳フェヌズXNUMX #定矩する 指什。 特に、定矩は次のようになりたす
埋め蟌たれた改行文字によっお切り捚おられたす。

シェルたたはシェルのようなプログラムからプリプロセッサを呌び出す堎合は、必芁になるこずがありたす
シェルの匕甚構文を䜿甚しお、スペヌスなどの文字を保護したす。
シェル構文での意味。

コマンドラむンで関数のようなマクロを定矩する堎合は、その匕数を蚘述したす
等号存圚する堎合の前に括匧を付けおリストしたす。 括匧は
ほずんどのシェルにずっお意味があるので、オプションを匕甚する必芁がありたす。 ず sh & CSH,
-NS'名(匕数..。)=定矩' 䜜品。

-D & -U オプションは、コマンドラむンで指定された順序で凊理されたす。 党お
-むマクロス file & -含める file オプションは結局凊理されたす -D & -U オプション。

-U 名
以前の定矩をキャンセルしたす 名、組み蟌みたたは付属のいずれか -D オプションを遞択したす。

-未定矩
システム固有たたはGCC固有のマクロを事前定矩しないでください。 事前定矩された暙準
マクロは定矩されたたたです。

-I DIR
ディレクトリを远加したす DIR ヘッダヌファむルを怜玢するディレクトリのリストに移動したす。
によっお名付けられたディレクトリ -I 暙準システムにディレクトリが含たれる前に怜玢されたす。
ディレクトリの堎合 DIR 暙準のシステムむンクルヌドディレクトリである堎合、このオプションは無芖されたす。
システムディレクトリのデフォルトの怜玢順序ず特別な凊理を確認しおください
システムヘッダヌの数は無効になりたせん。 もしも DIR 「=」で始たり、「=」は
sysrootプレフィックスに眮き換えられたした。 芋る --sysroot & -isysroot.

-o file
出力をに曞き蟌む file。 これは指定するのず同じです file XNUMX番目の非オプションずしお
ぞの議論 cpp. gccの XNUMX番目の非オプション匕数の解釈が異なりたす。
だからあなたは䜿甚する必芁がありたす -o 出力ファむルを指定したす。

-壁
通垞のコヌドに必芁なすべおのオプションの譊告をオンにしたす。 珟圚これ
is -コメント, -筆文字, -Wmultichar 敎数の昇栌に関する譊告が原因で
「#if」匏の笊号の倉曎。 プリプロセッサの譊告の倚くに泚意しおください
デフォルトでオンになっおおり、それらを制埡するオプションはありたせん。

-コメント
-コメント
コメント開始シヌケンスが発生するたびに譊告する /* に衚瀺されたす /* コメント、たたはい぀でも
バックスラッシュ-改行はに衚瀺されたす // コメント。 どちらの圢匏も同じ効果がありたす。

-筆文字
コメント内のほずんどのトリグラフは、プログラムの意味に圱響を䞎えるこずはできたせん。 ただし、
゚スケヌプされた改行を圢成するトリグラフ?? / 行の終わりにできたす、によっお
コメントの開始䜍眮たたは終了䜍眮を倉曎したす。 したがっお、圢成される䞉重音字のみ
゚スケヌプされた改行は、コメント内に譊告を生成したす。

このオプションは、 -壁。 堎合 -壁 が指定されおいない堎合、このオプションは匕き続き有効です
トリヌグラフが有効になっおいない限り。 譊告なしでトリグラフ倉換を取埗するには、
他の -壁 譊告、䜿甚 -䞉重音字 -壁 -Wno-トラむグラフ.

-䌝統的な
埓来のCずISOCでは動䜜が異なる特定の構造に぀いお譊告したす。
埓来のCに盞圓するものがなく、問題のあるISOC構造に぀いお譊告する
避けるべき構成。

- りンデフ
マクロではない識別子が #もし ディレクティブは、
の倖 定矩枈みの。 このような識別子はれロに眮き換えられたす。

-Wunused-マクロ
メむンファむルで定矩されおいる未䜿甚のマクロに぀いお譊告したす。 マクロは 䞭叀 もしそれが
少なくずもXNUMX回は拡匵たたは存圚のテストを行いたした。 プリプロセッサは、次の堎合にも譊告したす。
マクロは、再定矩たたは未定矩の時点では䜿甚されおいたせん。

組み蟌みマクロ、コマンドラむンで定矩されたマクロ、およびincludeで定矩されたマクロ
ファむルに぀いおは譊告されたせん。

泚 マクロが実際に䜿甚されおいるが、スキップされた条件ブロックでのみ䜿甚されおいる堎合、
CPPはそれを未䜿甚ずしお報告したす。 このような堎合の譊告を回避するには、改善する可胜性がありたす
たずえば、最初にスキップされたマクロに移動するこずによる、マクロの定矩の範囲
ブロック。 たたは、次のようなダミヌの䜿甚法を提䟛するこずもできたす。

#if定矩されたthe_macro_causing_the_warning
#endif

-りェンディフ-ラベル
い぀でも譊告する その他 たたは #endif テキストが続きたす。 これは通垞、
フォヌムのコヌド

#if FOO
...
#else FOO
...
#endif FOO

XNUMX番目ずXNUMX番目の「FOO」はコメントに含める必芁がありたすが、倚くの堎合、叀いプログラムには含たれおいたせん。
この譊告はデフォルトでオンになっおいたす。

-゚ラヌ
すべおの譊告をハヌド゚ラヌにしたす。 譊告をトリガヌする゜ヌスコヌドは次のようになりたす
拒吊されたした。

-Wsystem-ヘッダヌ
システムヘッダヌのコヌドに察しお譊告を発行したす。 これらは通垞、芋぀けるのに圹立ちたせん
したがっお、独自のコヌドのバグは抑制されたす。 あなたがシステムに責任がある堎合
ラむブラリ、あなたはそれらを芋たいかもしれたせん。

-w GNU CPPがデフォルトで発行する譊告を含め、すべおの譊告を抑制したす。

-衒孊者
C暙準にリストされおいるすべおの必須蚺断を発行したす。 それらのいく぀かは残っおいたす
無害なコヌドで頻繁にトリガヌされるため、デフォルトでアりトになりたす。

-衒孊的゚ラヌ
すべおの必須蚺断を発行し、すべおの必須蚺断を゚ラヌにしたす。
これには、GCCが発行せずに発行する必須の蚺断が含たれたす -衒孊者 しかし、ずしお扱いたす
譊告。

-M 前凊理の結果を出力する代わりに、次のようなルヌルを出力したす。 make
メむン゜ヌスファむルの䟝存関係を説明したす。 プリプロセッサはXNUMX぀を出力したす
make その゜ヌスファむルのオブゞェクトファむル名、コロン、および名前を含むルヌル
からのものを含む、含たれおいるすべおのファむルの -含める or -むマクロス command
ラむンオプション。

明瀺的に指定されおいない限り -MT or -MQ、オブゞェクトファむル名はで構成されたす
接尟蟞がオブゞェクトファむルの接尟蟞および任意の接尟蟞に眮き換えられた゜ヌスファむルの名前
䞻芁なディレクトリ郚分が削陀されたした。 含たれおいるファむルが倚い堎合、ルヌルは次のずおりです。
を䜿甚しおいく぀かの行に分割 \-改行。 ルヌルにはコマンドがありたせん。

このオプションは、次のようなプリプロセッサのデバッグ出力を抑制したせん。 -dM。 避けるために
このようなデバッグ出力を䟝存関係ルヌルず混合するには、明瀺的に指定する必芁がありたす
䟝存関係の出力ファむル -MF、たたは次のような環境倉数を䜿甚したす
DEPENDENCIES_OUTPUT。 デバッグ出力は、匕き続き通垞の出力ストリヌムに送信されたす。
ノヌマル。

通過 -M ドラむバヌに暗瀺する -E、および暗黙的な譊告を抑制したす -w.

-んん いいね -M ただし、システムヘッダヌディレクトリにあるヘッダヌファむルに぀いおは蚀及しないでください。
たた、そのようなヘッダヌから盎接的たたは間接的にむンクルヌドされるヘッダヌファむルもありたせん。

これは、山括匧たたは二重匕甚笊の遞択が #include
ディレクティブ自䜓は、そのヘッダヌがに衚瀺されるかどうかを決定したせん -んん
䟝存関係の出力。 これは、GCCバヌゞョン3.0および
早く

-MF file
ず䞀緒に䜿甚する堎合 -M or -んん、䟝存関係を曞き蟌むファむルを指定したす。 いいえの堎合 -MF
スむッチには、プリプロセッサが送信したのず同じ堎所にルヌルを送信するように指定されおいたす
前凊理された出力。

ドラむバヌオプションず䜵甚した堎合 -MD or -MMD, -MF デフォルトの䟝存関係を䞊曞きしたす
出力ファむル。

-MG 次のようなオプションず組み合わせお -M 䟝存関係の生成を芁求し、 -MG ず仮定する
欠萜しおいるヘッダヌファむルは生成されたファむルであり、それらを䟝存関係リストに远加したす。
゚ラヌが発生したす。 䟝存関係のファむル名は「#include」から盎接取埗されたす
パスを付加せずにディレクティブ。 -MG たた、前凊理された出力を抑制したす。
ヘッダヌファむルがないず、これは圹に立たなくなりたす。

この機胜は、makefileの自動曎新で䜿甚されたす。

-MP このオプションは、CPPに、䟝存関係以倖の䟝存関係ごずに停のタヌゲットを远加するように指瀺したす。
メむンファむル。それぞれが䜕にも䟝存しないようにしたす。 これらのダミヌルヌルぱラヌを回避したす
make を曎新せずにヘッダヌファむルを削陀するず、 メヌクファむル 合わせる。

これは兞型的な出力です

test.otest.c test.h

test.h

-MT タヌゲット
䟝存関係の生成によっお発行されるルヌルのタヌゲットを倉曎したす。 デフォルトでは、CPPは
メむン入力ファむルの名前、ディレクトリコンポヌネントずファむルサフィックスを削陀したす
など .c、およびプラットフォヌムの通垞のオブゞェクトサフィックスを远加したす。 結果が目暙です。

An -MT オプションは、タヌゲットを指定した文字列ずたったく同じになるように蚭定したす。 お望みならば
耇数のタヌゲットの堎合、それらを単䞀の匕数ずしお指定できたす。 -MT、たたは耇数を䜿甚する
-MT オプション。

たずえば、 -MT '$objpfxfoo.o' 䞎えるかもしれない

$objpfxfoo.ofoo.c

-MQ タヌゲット
ず同じ -MT、ただし、Makeに特別な文字を匕甚したす。
-MQ '$objpfxfoo.o' 䞎える

$$objpfxfoo.ofoo.c

デフォルトのタヌゲットは、で䞎えられたかのように自動的に匕甚されたす -MQ.

-MD -MD に盞圓したす -M -MF file、 それ以倖で -E 暗瀺されおいたせん。 ドラむバ
決定する file かどうかに基づいお -o オプションが䞎えられたす。 そうである堎合、ドラむバヌは
匕数ですが、接尟蟞は .d、それ以倖の堎合は、入力ファむルの名前を取りたす。
ディレクトリコンポヌネントずサフィックスを削陀し、 .d サフィックス。

If -MD ずずもに䜿甚されたす -E、 どれか -o スむッチは、
䟝存関係の出力ファむルですが、䜿甚しない堎合 -E、それぞれ -o 指定するこずは理解されたす
タヌゲットオブゞェクトファむル。

Since -E 暗瀺されおいたせん、 -MD 䟝存関係出力ファむルを次のように生成するために䜿甚できたす
コンパむルプロセスの副䜜甚。

-MMD
いいね -MD ただし、システムヘッダヌファむルではなく、ナヌザヌヘッダヌファむルのみに蚀及したす。

-fpch-deps
プリコンパむル枈みヘッダヌを䜿甚する堎合、このフラグにより​​、䟝存関係出力フラグが次のようになりたす。
たた、プリコンパむル枈みヘッダヌの䟝存関係からファむルを䞀芧衚瀺したす。 指定されおいない堎合のみ
プリコンパむル枈みヘッダヌが䞀芧衚瀺され、䜜成に䜿甚されたファむルは䞀芧衚瀺されたせん。
プリコンパむル枈みヘッダヌを䜿甚する堎合、これらのファむルは参照されないためです。

-fpch-前凊理
このオプションを䜿甚するず、プリコンパむル枈みヘッダヌを䞀緒に䜿甚できたす -E。 スペシャルを挿入したす
"#pragma"、 "pragma GCC pch_preprocess"ファむル名"" 堎所をマヌクするために出力で
プリコンパむル枈みヘッダヌが芋぀かった堎所ずその ファむル名。 時 -f前凊理枈み である
䜿甚するず、GCCはこの「#pragma」を認識しおPCHをロヌドしたす。

結果の前凊理された出力はのみであるため、このオプションはデフォルトでオフになっおいたす
GCCぞの入力ずしお非垞に適しおいたす。 によっおオンになりたす -䞀時保存.

この「#pragma」を独自のコヌドで蚘述しないでください。ただし、
PCHファむルが別の堎所にある堎合はファむル名。 ファむル名は次のようになりたす
絶察たたはGCCの珟圚のディレクトリに盞察的である可胜性がありたす。

-x c
-x C ++
-x Objective-c
-x アセンブラ-with-cpp
゜ヌス蚀語C、C ++、Objective-C、たたはアセンブリを指定したす。 これは䜕の関係もありたせん
暙準ぞの適合たたは拡匵。 それは単にどの基本構文を遞択するかを遞択するだけです
予想。 これらのオプションのいずれも指定しない堎合、cppはから蚀語を掚枬したす
゜ヌスファむルの拡匵子 .c, .ccに, .mたたは .S。 のその他の䞀般的な拡匵機胜
C ++ずアセンブリも認識されたす。 cppが拡匵子を認識しない堎合は、
ファむルをCずしお扱いたす。 これは最も䞀般的なモヌドです。

泚 以前のバヌゞョンのcppは -蚀語 䞡方を遞択したオプション
蚀語ず芏栌の適合レベル。 このオプションは削陀されたした。
それはず競合したす -l オプションを遞択したす。

-std =暙準
-アンシ
コヌドが準拠する暙準を指定したす。 珟圚、CPPはCに぀いお知っおいたす
およびC ++暙準。 その他は将来远加される可胜性がありたす。

暙準 次のいずれかである可胜性がありたす。

「c90」
「c89」
「iso98991990」
1990幎からのISOC暙準。 c90 このバヌゞョンの通垞の省略圢です
暙準。

  -アンシ オプションはず同等です -std = c90.

「iso9899199409」
1990幎に修正された1994C芏栌。

「iso98991999」
「c99」
「iso9899199x」
「c9x」
1999幎XNUMX月に公開された改蚂ISOC暙準。公開前は、
C9Xずしお知られおいたした。

「iso98992011」
「c11」
「c1x」
2011幎XNUMX月に公開された改蚂ISOC暙準。公開前は、
C1Xずしお知られおいたした。

「gnu90」
「gnu89」
1990C暙準ずGNU拡匵。 これがデフォルトです。

「gnu99」
「gnu9x」
1999C暙準ずGNU拡匵。

「gnu11」
「gnu1x」
2011C暙準ずGNU拡匵。

「c ++ 98」
1998幎のISOC ++暙準ず修正。

「gnu ++ 98」
ず同じ -std = c ++ 98 プラスGNU拡匵。 これはC ++コヌドのデフォルトです。

-I- むンクルヌドパスを分割したす。 で指定されたディレクトリ -I 前のオプション -I-  
「#include」でリク゚ストされたヘッダヌのみを怜玢ファむル""; それらは怜玢されたせん
"含むファむル> "。 远加のディレクトリがで指定されおいる堎合 -I 埌のオプション
-I-、それらのディレクトリはすべお怜玢されたす #include ディレクティブ

加えお、 -I- 珟圚のファむルディレクトリのディレクトリの䜿甚を犁止したす。
「#include」の最初の怜玢ディレクトリファむル""。 このオプションは非掚奚になりたした。

-ノストディンク
暙準のシステムディレクトリでヘッダヌファむルを怜玢しないでください。 ディレクトリのみ
あなたが指定した -I オプションおよび珟圚のファむルのディレクトリ堎合は
適切なが怜玢されたす。

-nostdinc ++
C ++固有の暙準ディレクトリでヘッダヌファむルを怜玢しないでください。ただし、それでも怜玢しおください。
他の暙準ディレクトリを怜玢したす。 このオプションは、C ++をビルドするずきに䜿甚されたす
図曞通。

-含める file
プロセス file 「#include "file"」が䞀次資料の最初の行ずしお衚瀺されたかのように
ファむル。 ただし、最初に怜玢されたディレクトリ file プリプロセッサの動䜜です
ディレクトリにゞョブを開始したす。 を取埗する必芁がある者 of メむン゜ヌスファむルを含むディレクトリ。 芋぀からない堎合
そこでは、「include "..."」怜玢チェヌンの残りの郚分で次のように怜玢されたす。
ノヌマル。

耇数の堎合 -含める オプションが䞎えられ、ファむルはそれらの順序で含たれたす
コマンドラむンに衚瀺されたす。

-むマクロス file
たさにそのように -含める、スキャンによっお生成された出力を陀く file スロヌされたす
あちらぞ。 それが定矩するマクロは定矩されたたたです。 これにより、すべおのマクロを取埗できたす
宣蚀も凊理せずにヘッダヌから。

によっお指定されたすべおのファむル -むマクロス によっお指定されたすべおのファむルの前に凊理されたす -含める.

-idirafter DIR
を怜玢 DIR ヘッダヌファむルの堎合ですが、実行しおください After で指定されたすべおのディレクトリ -I ず
暙準のシステムディレクトリが䜿い果たされたした。 DIR システムむンクルヌドずしお扱われたす
ディレクトリ。 もしも DIR 「=」で始たり、「=」はsysrootに眮き換えられたす
プレフィックス; 芋る --sysroot & -isysroot.

-iprefix 接頭蟞
指定 接頭蟞 埌続のプレフィックスずしお -iwithprefix オプション。 プレフィックスの堎合
ディレクトリを衚したす。最埌のファむルを含める必芁がありたす /.

-iwithprefix DIR
-iwithprefixbefore DIR
远加 DIR 以前に指定されたプレフィックスに -iprefix、結果を远加したす
むンクルヌド怜玢パスぞのディレクトリ。 -iwithprefixbefore 同じ堎所に眮きたす -I
NS; -iwithprefix どこに眮くか -idirafter 。

-isysroot DIR
このオプションは、 --sysroot オプションですが、ヘッダヌファむルにのみ適甚されたすただし
ダヌりィンタヌゲット。ヘッダヌファむルずラむブラリの䞡方に適甚されたす。 を参照しおください
--sysroot 詳现に぀いおは、オプションを参照しおください。

-imultilib DIR
  DIR タヌゲット固有のC ++ヘッダヌを含むディレクトリのサブディレクトリずしお。

-isystem DIR
を怜玢 DIR ヘッダヌファむルの堎合、によっお指定されたすべおのディレクトリの埌 -I しかし、前に
暙準のシステムディレクトリ。 同じになるように、システムディレクトリずしおマヌクしたす
暙準のシステムディレクトリに適甚される特別な凊理。 もしも DIR 始たりたす
「=」を䜿甚するず、「=」はsysrootプレフィックスに眮き換えられたす。 芋る --sysroot &
-isysroot.

-iquote DIR
を怜玢 DIR 「#include」でリク゚ストされたヘッダヌファむルのみファむル""; ではない
「#include」を怜玢ファむル> "、によっお指定されたすべおのディレクトリの前 -I ず前に
暙準のシステムディレクトリ。 もしも DIR 「=」で始たり、「=」はに眮き換えられたす
sysrootプレフィックス。 芋る --sysroot & -isysroot.

-fdirectives-のみ
前凊理するずきは、ディレクティブを凊理したすが、マクロは展開したせん。

オプションの動䜜は、 -E & -f前凊理枈み オプション。

-E、前凊理は「#define」などのディレクティブの凊理に制限されおいたす。
「#ifdef」、「error」。 マクロ展開や
トリグラフ倉換は実行されたせん。 加えお -dD オプションは暗黙的に
有効になりたした。

-f前凊理枈み、コマンドラむンずほずんどの組み蟌みマクロの事前定矩は
無効。 コンテキストに䟝存する「__LINE__」などのマクロが凊理されたす
通垞は。 これにより、以前に「-E」で前凊理されたファむルのコンパむルが可胜になりたす。
-fdirectives-only」。

䞡方ず -E & -f前凊理枈み、のルヌル -f前凊理枈み 優先したす。 この
以前に「-E」で前凊理されたファむルの完党な前凊理を有効にしたす
-fdirectives-only」。

-fdollars-in-identifiers
同意 $ 識別子で。

-拡匵識別子
識別子にナニバヌサル文字名を受け入れたす。 このオプションは実隓的なものです。 で
GCCの将来のバヌゞョンでは、C99およびC ++でデフォルトで有効になりたす。

-fno-canonical-system-headers
前凊理するずきは、正芏化しおシステムヘッダヌパスを短くしないでください。

-f前凊理枈み
入力ファむルがすでに前凊理されおいるこずをプリプロセッサヌに瀺したす。 この
マクロ展開、トリグラフ倉換、゚スケヌプされた改行スプラむシングなどを抑制したす。
ほずんどのディレクティブの凊理。 プリプロセッサは匕き続き認識しお削陀したす
コメント、前凊理されたファむルを枡すこずができるように -C なしでコンパむラに
問題。 このモヌドでは、統合されたプリプロセッサはトヌクナむザヌにすぎたせん。
フロント゚ンド甚。

-f前凊理枈み 入力ファむルに拡匵子のXNUMX぀がある堎合、暗黙的です .i, .ii or .mi.
これらは、GCCがによっお䜜成された前凊理枈みファむルに䜿甚する拡匵機胜です。 -䞀時保存.

-ftabstop =幅
タブストップ間の距離を蚭定したす。 これは、プリプロセッサが正しい列を報告するのに圹立ちたす
タブが行に衚瀺されおいる堎合でも、譊告たたぱラヌの番号。 倀が小さい堎合
1より倧きいか100より倧きい堎合、このオプションは無芖されたす。 デフォルトは8です。

-fdebug-cpp
このオプションは、GCCのデバッグにのみ圹立ちたす。 ず䞀緒に䜿甚する堎合 -E、デバッグをダンプしたす
ロケヌションマップに関する情報。 出力内のすべおのトヌクンの前に、
その堎所が属するマップ。 トヌクンの堎所を保持しおいるマップのダンプ
だろう

{"P"F ; "F"F ; "L" ;"NS" ;"NS" ;"NS" ; "E" 、 "loc" }

なしで䜿甚した堎合 -E、このオプションは効果がありたせん。

-ftrack-マクロ展開[=レベル]
マクロ展開党䜓でトヌクンの堎所を远跡したす。 これにより、コンパむラは
でコンパむル゚ラヌが発生したずきの珟圚のマクロ拡匵スタックに関する蚺断
マクロ展開。 このオプションを䜿甚するず、プリプロセッサずコンパむラが消費したす
より倚くのメモリ。 NS レベル パラメヌタを䜿甚しお、トヌクンの粟床のレベルを遞択できたす
したがっお、䜍眮远跡により、必芁に応じおメモリ消費量が削枛されたす。 䟡倀 0 of
レベル いいえのようにこのオプションを無効にしたす -ftrack-マクロ展開 に存圚しおいた
コマンドラむン。 䟡倀 1 のために劣化モヌドでトヌクンの堎所を远跡したす
最小限のメモリオヌバヌヘッド。 このモヌドでは、拡匵の結果ずしお生じるすべおのトヌクン
関数のようなマクロの匕数は同じ堎所にありたす。 䟡倀 2 トヌクンを远跡する
完党に堎所。 この倀は、最もメモリを消費したす。 このオプションが䞎えられたずき
匕数なし、デフォルトのパラメヌタ倀は 2.

-ftrack-macro-expansion = 2がデフォルトでアクティブになっおいるこずに泚意しおください。

-fexec-charset =文字セット
文字列および文字定数に䜿甚される実行文字セットを蚭定したす。 デフォルト
UTF-8です。 文字セット システムの「iconv」ラむブラリでサポヌトされおいる任意の゚ンコヌディングにするこずができたす
ルヌチン。

-fwide-exec-charset =文字セット
ワむド文字列および文字定数に䜿甚されるワむド実行文字セットを蚭定したす。
デフォルトは、「wchar_t」の幅に察応するUTF-32たたはUTF-16です。 NS
  -fexec-文字セット, 文字セット システムの「iconv」でサポヌトされおいる任意の゚ンコヌディングにするこずができたす
ラむブラリルヌチン; ただし、適合しない゚ンコヌディングでは問題が発生したす
正確には「wchar_t」にありたす。

-finput-charset =文字セット
入力の文字セットからの倉換に䜿甚される入力文字セットを蚭定したす
GCCで䜿甚される゜ヌス文字セットぞのファむル。 ロケヌルで指定されおいない堎合、たたはGCC
ロケヌルからこの情報を取埗するこずはできたせん。デフォルトはUTF-8です。 これは可胜性がありたす
ロケヌルたたはこのコマンドラむンオプションのいずれかによっお䞊曞きされたす。 珟圚、コマンド
競合がある堎合は、lineオプションが優先されたす。 文字セット 任意の゚ンコヌディングにするこずができたす
システムの「iconv」ラむブラリルヌチンでサポヌトされおいたす。

-fworkingディレクトリ
プリプロセッサ出力でラむンマヌカヌの生成を有効にしお、コンパむラを蚱可したす
前凊理時に珟圚の䜜業ディレクトリを知っおいる。 このオプションが
有効にするず、プリプロセッサは最初のラむンマヌカヌの埌にXNUMX番目のラむンマヌカヌを出力したす
珟圚の䜜業ディレクトリの埌にXNUMX぀のスラッシュが続きたす。 GCCはこれを䜿甚したす
前凊理された入力に存圚する堎合、ディレクトリは次のように発行されたす。
䞀郚のデバッグ情報圢匏の珟圚の䜜業ディレクトリ。 このオプションは
デバッグ情報が有効になっおいる堎合は暗黙的に有効になりたすが、これは次の方法で犁止できたす。
吊定された圢匏 -fno-䜜業ディレクトリ。 もし -P コマンドにフラグがありたす
lineの堎合、「line」ディレクティブはたったく発行されないため、このオプションは効果がありたせん。

-fno-show-column
蚺断で列番号を印刷しないでください。 これは、蚺断が
次のような列番号を理解しないプログラムによっおスキャンされおいる
デゞャグヌ.

-A 述語=回答
述語でアサヌションを䜜成したす 述語 そしお答える 回答。 このフォヌムは
叀い圢匏よりも優先 -A 述語(回答)、それはただサポヌトされおいるので、
シェルの特殊文字は䜿甚したせん。

-A -述語=回答
述郚を䜿甚しおアサヌションをキャンセルしたす 述語 そしお答える 回答.

-dCHARS
文字 次のXNUMX぀以䞊の文字のシヌケンスであり、次の文字であっおはなりたせん。
スペヌスが前に付きたす。 他の文字は、コンパむラヌによっお適切に解釈されたす。
GCCの将来のバヌゞョン甚に予玄されおいるため、黙っお無芖されたす。 指定した堎合
動䜜が競合する文字の堎合、結果は未定矩です。

M 通垞の出力の代わりに、次のリストを生成したす #定矩する すべおのディレクティブ
プリプロセッサの実行䞭に定矩されたマクロ事前定矩されたものを含む
マクロ。 これにより、のバヌゞョンで事前定矩されおいるものを芋぀ける方法が埗られたす。
プリプロセッサ。 ファむルがないず仮定したす ふヌ。、 コマンド

foo.hに觊れたす。 cpp -dM foo.h

事前定矩されたすべおのマクロが衚瀺されたす。

あなたが䜿甚しおいる堎合 -dM なしで -E オプション、 -dM の同矩語ずしお解釈されたす
-fdump-rtl-mach.

D いいね M XNUMX぀の点を陀いおそれはしたす 事前定矩されたマクロを含め、
outputs 䞡蚀語で   #定矩する ディレクティブず前凊理の結果。 䞡方の皮類
出力のは暙準出力ファむルに送られたす。

N いいね D、ただし、マクロ名のみを出力し、展開は出力したせん。

I 出力 #include 前凊理の結果に加えおディレクティブ。

U いいね D ただし、展開されたマクロ、たたは定矩がテストされたマクロのみ
プリプロセッサディレクティブでは、出力されたす。 出力は䜿甚するたで遅延したすたたは
マクロのテスト; ず #undef テストされたマクロのディレクティブも出力されたすが
圓時は未定矩。

-P プリプロセッサからの出力でのラむンマヌカヌの生成を犁止したす。 これは
Cコヌドではないものでプリプロセッサを実行するずきに圹立ち、送信されたす
ラむンマヌカヌによっお混乱する可胜性のあるプログラムに。

-C コメントを砎棄しないでください。 すべおのコメントは、出力ファむルに枡されたす。
ディレクティブずずもに削陀される、凊理されたディレクティブ内のコメントの堎合。

䜿甚するずきは副䜜甚に備える必芁がありたす -C; それはプリプロセッサに
コメントはそれ自䜓がトヌクンずしお扱いたす。 たずえば、に衚瀺されるコメント
ディレクティブラむンずなるものの開始は、そのラむンをに倉える効果がありたす
通垞の゜ヌス行。行の最初のトヌクンはもはや #.

-CC マクロ展開䞭も含め、コメントを砎棄しないでください。 これは -C陀きたす
マクロに含たれるコメントは、出力ファむルにも枡されたす。
マクロが展開されたす。

の副䜜甚に加えお -C オプション、 -CC オプションはすべおのC ++スタむルを匕き起こしたす
Cスタむルのコメントに倉換されるマクロ内のコメント。 これは埌で防ぐためです
゜ヌス行の残りの郚分を誀っおコメントアりトするこずによるそのマクロの䜿甚。

  -CC オプションは通垞、lintコメントをサポヌトするために䜿甚されたす。

-埓来の-cpp
ISO Cではなく、昔ながらのCプリプロセッサの動䜜を暡倣しおみおください
プリプロセッサ。

-䞉重音字
トリヌグラフシヌケンスを凊理したす。 これらはXNUMX文字のシヌケンスであり、すべお
??、単䞀文字を衚すためにISOCによっお定矩されおいたす。 䟋えば、 ?? / スタンド
for \ので、 '?? / n' 改行の文字定数です。 デフォルトでは、GCCは無芖したす
トリヌグラフですが、暙準準拠モヌドでは倉換されたす。 を参照しおください -暙準 & -アンシ
オプション。

XNUMX぀の䞉重音字ずその代替は

䞉重音字?????? <??> ?? = ?? / ?? ' ?? ??-
眮換[] {}\ ^ | 〜

-リマップ
非垞に短いファむルのみを蚱可するファむルシステムを回避するための特別なコヌドを有効にする
MS-DOSなどの名前。

- 助けお
--タヌゲットヘルプ
䜕も前凊理する代わりに、すべおのコマンドラむンオプションを説明するテキストを印刷したす。

-v 冗長モヌド。 実行開始時にGNUCPPのバヌゞョン番号を出力し、
むンクルヌドパスの最終圢匏を報告したす。

-H 他の通垞のアクティビティに加えお、䜿甚される各ヘッダヌファむルの名前を出力したす。 各
名前はむンデントされお、 #include スタックです。 プリコンパむル枈みヘッダヌ
無効であるこずが刀明した堎合でも、ファむルも印刷されたす。 無効なプリコンパむル枈み
ヘッダヌファむルは ...NS ず有効なもの ... .

-バヌゞョン
- バヌゞョン
GNUCPPのバヌゞョン番号を印刷したす。 ダッシュXNUMX぀で、通垞どおり前凊理に進みたす。
XNUMX぀のダッシュで、すぐに終了したす。

通過 オプション 〜ぞ   アセンブラ
オプションをアセンブラに枡すこずができたす。

-わ、オプション
合栌 オプション アセンブラのオプションずしお。 もしも オプション カンマが含たれ、分割されたす
カンマで耇数のオプションに。

-Xアセンブラヌ オプション
合栌 オプション アセンブラのオプションずしお。 これを䜿甚しお、システム固有の䟛絊を行うこずができたす
GCCが認識しないアセンブラオプション。

匕数を取るオプションを枡したい堎合は、次を䜿甚する必芁がありたす -Xアセンブラヌ 二床
オプション甚にXNUMX回、匕数甚にXNUMX回。

オプション for 連結
これらのオプションは、コンパむラがオブゞェクトファむルを実行可胜ファむルにリンクするずきに機胜したす
出力ファむル。 コンパむラがリンクステップを実行しおいない堎合、これらは無意味です。

オブゞェクトファむル名
特別に認識されたサフィックスで終わらないファむル名は、
オブゞェクトファむルたたはラむブラリ。 オブゞェクトファむルは、リンカヌによっおラむブラリず区別されたす
ファむルの内容に応じお。リンクが行われる堎合、これらのオブゞェクトファむルは次のように䜿甚されたす。
リンカぞの入力。

-c
-S
-E これらのオプションのいずれかが䜿甚されおいる堎合、リンカヌは実行されず、オブゞェクトファむル名
匕数ずしお䜿甚しないでください。

-lラむブラリ
-l ラむブラリ
ずいう名前のラむブラリを怜玢したす ラむブラリ リンクするずき。 XNUMX番目の遞択肢
個別の匕数ずしおのラむブラリは、POSIX準拠のみを目的ずしおおり、お勧めしたせん。

コマンドのどこにこのオプションを曞くかによっお違いが生じたす。 リンカヌ怜玢
ラむブラリずオブゞェクトファむルを指定された順序で凊理したす。 したがっお、 ふヌ。
-lz バヌオヌ ラむブラリを怜玢 z ファむル埌 ふヌ。 しかし、前に バヌオヌ。 堎合 バヌオヌ を指したす
の機胜 z、これらの関数はロヌドされない堎合がありたす。

リンカは、ディレクトリの暙準リストでラむブラリを怜玢したす。これは実際には
名前の付いたファむル ラむブラリ.a。 リンカは、このファむルを指定されおいるかのように䜿甚したす
正確には名前で。

怜玢されるディレクトリには、いく぀かの暙準システムディレクトリに加えお、
で指定する -L.

通垞、この方法で芋぀かったファむルはラむブラリファむルです---メンバヌが
オブゞェクトファむル。 リンカは、アヌカむブファむルをスキャンしおメンバヌを探すこずにより、アヌカむブファむルを凊理したす
これたでに参照されおいるが定矩されおいないシンボルを定矩したす。 しかし、
芋぀かったファむルは通垞のオブゞェクトファむルであり、通垞の方法でリンクされおいたす。 The
䜿甚の違いのみ -l オプションずファむル名の指定はそれです -l
サラりンド ラむブラリ   リブ & .a いく぀かのディレクトリを怜玢したす。

-lobjc
あなたはこの特別な堎合が必芁です -l Objective-Cたたはをリンクするためのオプション
目的-C++プログラム。

-nostartfiles
リンクするずきは、暙準のシステムスタヌトアップファむルを䜿甚しないでください。 暙準システム
ラむブラリは通垞䜿甚されたすが、 -nostdlib or -nodefaultlibs 䜿甚されおいる。

-nodefaultlibs
リンクするずきは、暙準のシステムラむブラリを䜿甚しないでください。 指定したラむブラリのみ
リンカに枡され、システムラむブラリのリンクを指定するオプションなど
「-static-libgcc」たたは「-shared-libgcc」などは無芖されたす。 暙準の起動ファむルは次のずおりです。
ない限り、通垞どおり䜿甚されたす。 -nostartfiles 䜿甚されおいる。

コンパむラは、「memcmp」、「memset」、「memcpy」、および「memmove」ぞの呌び出しを生成する堎合がありたす。 これらは
゚ントリは通垞、libcの゚ントリによっお解決されたす。 これらの゚ントリポむントは
このオプションが指定されおいる堎合、他のメカニズムを介しお提䟛されたす。

-nostdlib
リンクするずきは、暙準のシステムスタヌトアップファむルたたはラむブラリを䜿甚しないでください。 スタヌトアップなし
ファむルず指定したラむブラリのみがリンカずオプションに枡されたす
「-static-libgcc」などのシステム ラむブラリのリンケヌゞを指定するか、
「-shared-libgcc」は無芖されたす。

コンパむラは、「memcmp」、「memset」、「memcpy」、および「memmove」ぞの呌び出しを生成する堎合がありたす。 これらは
゚ントリは通垞、libcの゚ントリによっお解決されたす。 これらの゚ントリポむントは
このオプションが指定されおいる堎合、他のメカニズムを介しお提䟛されたす。

によっおバむパスされた暙準ラむブラリのXNUMX぀ -nostdlib & -nodefaultlibs is libgcc.a
特定の欠点を克服するためにGCCが䜿甚する内郚サブルヌチンのラむブラリ
マシン、たたはいく぀かの蚀語の特別なニヌズ。

ほずんどの堎合、 libgcc.a 他の暙準ラむブラリを避けたい堎合でも。
蚀い換えれば、あなたが指定するずき -nostdlib or -nodefaultlibs あなたは通垞すべきです
指定する -lgcc 同じように。 これにより、ぞの未解決の参照がないこずが保蚌されたす
内郚GCCラむブラリサブルヌチン。 このような内郚サブルヌチンの䟋は次のずおりです。
__䞻芁、C++ コンストラクタヌが確実に呌び出されるようにするために䜿甚されたす。)

-パむ
それをサポヌトするタヌゲット䞊で䜍眮に䟝存しない実行可胜ファむルを生成したす。 予枬可胜
結果ずしお、コンパむルに䜿甚したものず同じオプションのセットも指定する必芁がありたす-fpie,
-fPIE、たたはモデルサブオプションこのリンカヌオプションを指定する堎合。

-rdynamic
旗を枡す -゚クスポヌト-動的 ELFリンカヌに、それをサポヌトするタヌゲット䞊で。 これ
䜿甚枈みのシンボルだけでなく、すべおのシンボルを動的シンボルに远加するようにリンカに指瀺したす
テヌブル。 このオプションは、「dlopen」の䞀郚の䜿甚たたは取埗を可胜にするために必芁です。
プログラム内からのバックトレヌス。

-s 実行可胜ファむルからすべおのシンボルテヌブルず再配眮情報を削陀したす。

-静的
ダむナミックリンクをサポヌトするシステムでは、これにより共有リンクずのリンクが劚げられたす
ラむブラリ。 他のシステムでは、このオプションは効果がありたせん。

-共有
共有オブゞェクトを䜜成したす。このオブゞェクトを他のオブゞェクトずリンクしお、
実行可胜。 すべおのシステムがこのオプションをサポヌトしおいるわけではありたせん。 予枬可胜な結果を​​埗るには、
コンパむルに䜿甚したものず同じオプションのセットも指定したす-fpic, -fPIC、たたはモデル
サブオプションこのリンカヌオプションを指定する堎合。[1]

-共有-libgcc
-静的-libgcc
を提䟛するシステム䞊 libgcc 共有ラむブラリずしお、これらのオプションは
それぞれ、共有バヌゞョンたたは静的バヌゞョンのいずれか。 の共有バヌゞョンがない堎合 libgcc たした
コンパむラヌの構成時にビルドされた堎合、これらのオプションは効果がありたせん。

アプリケヌションが共有を䜿甚する必芁があるいく぀かの状況がありたす libgcc
静的バヌゞョンの代わりに。 これらの䞭で最も䞀般的なのは、アプリケヌションが
異なる共有ラむブラリ間で䟋倖をスロヌしおキャッチしたいず考えおいたす。 その堎合、
各ラむブラリずアプリケヌション自䜓は、共有を䜿甚する必芁がありたす libgcc.

したがっお、G++およびGCJドラむバヌは自動的に远加したす -共有-libgcc あなたが構築するずきはい぀でも
C ++およびJavaプログラムは通垞、共有ラむブラリたたはメむンの実行可胜ファむルを䜿甚するため、
䟋倖なので、これは正しいこずです。

代わりに、GCCドラむバヌを䜿甚しお共有ラむブラリヌを䜜成するず、それらが共有ラむブラリヌであるこずがわかりたす。
垞に共有ずリンクされおいるわけではありたせん libgcc。 GCCが怜出した堎合、その構成で
時間、オプションをサポヌトしおいない非GNUリンカヌたたはGNUリンカヌがあるこず
--ええ-フレヌム-hdr、それはの共有バヌゞョンをリンクしたす libgcc 共有ラむブラリに
デフォルト。 それ以倖の堎合は、リンカヌを利甚しおリンクを最適化したす
の共有バヌゞョンで libgcc、libgccの静的バヌゞョンずのリンク
デフォルト。 これにより、䟋倖がそのような共有ラむブラリを介しお䌝播するこずができたす。
ラむブラリのロヌド時に再配眮コストが発生したす。

ただし、ラむブラリたたはメむンの実行可胜ファむルが䟋倖をスロヌたたはキャッチするこずになっおいる堎合は、
で䜿甚される蚀語に応じお、G++たたはGCJドラむバヌを䜿甚しおリンクする必芁がありたす
プログラム、たたはオプションを䜿甚しお -共有-libgcc、共有ずリンクされるように
libgcc.

-静的-libasan
時 -fsanitize = address オプションは、プログラム、GCCドラむバヌをリンクするために䜿甚されたす
自動的にリンクしたす リバサン。 堎合 リバサン 共有ラむブラリずしお利甚可胜であり、
  -静的 オプションが䜿甚されおいない堎合、これは共有バヌゞョンに察しおリンクしたす リバサン.
  -静的-libasan オプションは、GCCドラむバヌにリンクを指瀺したす リバサン 静的に、なし
必然的に他のラむブラリを静的にリンクしたす。

-static-libtsan
時 -fsanitize = thread オプションは、プログラム、GCCドラむバヌをリンクするために䜿甚されたす
自動的にリンクしたす リブツァン。 堎合 リブツァン 共有ラむブラリずしお利甚可胜であり、
  -静的 オプションが䜿甚されおいない堎合、これは共有バヌゞョンに察しおリンクしたす リブツァン.
  -static-libtsan オプションは、GCCドラむバヌにリンクを指瀺したす リブツァン 静的に、なし
必然的に他のラむブラリを静的にリンクしたす。

-static-libstdc ++
時 g ++ プログラムはC++プログラムをリンクするために䜿甚され、通垞は自動的にリンクしたす
に察しお libstdc ++。 堎合 libstdc ++ 共有ラむブラリずしお利甚可胜であり、 -静的
オプションが䜿甚されおいない堎合、これは共有バヌゞョンに察しおリンクしたす libstdc ++。 あれは
通垞は問題ありたせん。 ただし、のバヌゞョンをフリヌズするず䟿利な堎合がありたす libstdc ++
完党に静的なリンクに到達するこずなく、プログラムによっお䜿甚されたす。 The
-static-libstdc ++ オプションは g ++ リンクするドラむバヌ libstdc ++ 静的に、なし
必然的に他のラむブラリを静的にリンクしたす。

-シンボリック
共有オブゞェクトを構築するずきに、参照をグロヌバルシンボルにバむンドしたす。 䜕かに぀いお譊告する
未解決の参照リンク゚ディタオプションで䞊曞きされない限り -Xリンカヌ -z
-Xリンカヌ 定矩。 このオプションをサポヌトしおいるシステムはごくわずかです。

-T スクリプト
  スクリプト リンカヌスクリプトずしお。 このオプションは、を䜿甚するほずんどのシステムでサポヌトされおいたす
GNUリンカヌ。 オペレヌティングシステムのないベアボヌドタヌゲットなど、䞀郚のタヌゲットでは、
  -T 未定矩のシンボルぞの参照を回避するために、リンク時にオプションが必芁になる堎合がありたす。

-Xリンカヌ オプション
合栌 オプション リンカのオプションずしお。 これを䜿甚しお、システム固有の䟛絊を行うこずができたす
GCCが認識しないリンカヌオプション。

別の匕数を取るオプションを枡したい堎合は、次を䜿甚する必芁がありたす -Xリンカヌ
XNUMX回、オプション甚にXNUMX回、匕数甚にXNUMX回。 たずえば、合栌するには -䞻匵する
定矩、あなたは曞く必芁がありたす -Xリンカヌ -䞻匵する -Xリンカヌ 定矩。 それは動䜜したせん
曞き蟌む -Xリンカヌ "-䞻匵する 定矩」、これは文字列党䜓を
単䞀の匕数。これは、リンカヌが期埅するものではありたせん。

GNUリンカを䜿甚する堎合、通垞、リンカに匕数を枡す方が䟿利です。
を䜿甚したオプション オプション=倀 個別の匕数ずしおよりも構文。 たずえば、あなたは
指定できたす -Xリンカヌ -Map = output.map ではなく -Xリンカヌ -地図 -Xリンカヌ 出力.マップ.
他のリンカは、コマンドラむンオプションでこの構文をサポヌトしおいない堎合がありたす。

-Wl、オプション
合栌 オプション リンカのオプションずしお。 もしも オプション カンマが含たれ、に分割されたす
カンマでの耇数のオプション。 この構文を䜿甚しお、匕数をに枡すこずができたす
オプション。 䟋えば、 -Wl、-Map、output.map パス -地図 出力.マップ リンカヌに。 い぀
GNUリンカヌを䜿甚するず、同じ効果を埗るこずができたす -Wl、-Map = output.map.

泚Ubuntu 8.10以降のバヌゞョンでは、LDFLAGSのオプション -Wl、-z、relro 䜿甚されおいる。
無効にするには、 -Wl、-z、norelro.

-u シンボル
シンボルのふりをする シンボル は未定矩であり、ラむブラリモゞュヌルのリンクを匷制的に定矩したす
それ。 䜿甚できたす -u の読み蟌みを匷制するために異なるシンボルで耇数回
远加のラむブラリモゞュヌル。

オプション for ディレクトリ を怜玢
これらのオプションは、ヘッダヌファむル、ラむブラリ、およびパヌツを怜玢するためのディレクトリを指定したす
コンパむラの

-IDIR
ディレクトリを远加したす DIR ヘッダヌを怜玢するディレクトリのリストの先頭に
ファむル。 これを䜿甚しお、システムヘッダヌファむルを䞊曞きし、独自のファむルに眮き換えるこずができたす
これらのディレクトリはシステムヘッダヌファむルの前に怜玢されるため、バヌゞョン
ディレクトリ。 ただし、このオプションを䜿甚しお、次を含むディレクトリを远加しないでください。
ベンダヌ提䟛のシステムヘッダヌファむル䜿甚 -isystem そのために。 耇数䜿甚する堎合
-I オプションの堎合、ディレクトリは巊から右の順序でスキャンされたす。 暙準システム
ディレクトリは埌に続きたす。

暙準システムにディレクトリが含たれおいる堎合、たたはで指定されたディレクトリ -isystemであり、
で指定されたす -I -I オプションは無芖されたす。 ディレクトリは匕き続き怜玢されたすが
システムむンクルヌドチェヌンの通垞の䜍眮にあるシステムディレクトリずしお。 これは
バグのあるシステムヘッダヌを修正するためのGCCの手順ず
「include_next」ディレクティブが誀っお倉曎されるこずはありたせん。 本圓に倉曎する必芁がある堎合
システムディレクトリの怜玢順序は、 -ノストディンク および -isystem オプション。

-iplugindir =DIR
枡されるプラグむンを怜玢するディレクトリを蚭定したす -fplugin =名
-fplugin =path/名。そう。 このオプションは、ナヌザヌが䜿甚するためのものではなく、
ドラむバヌによっお枡されたす。

-iquoteDIR
ディレクトリを远加したす DIR ヘッダヌを怜玢するディレクトリのリストの先頭に
の堎合のみのファむル #include "file"; それらは怜玢されたせん #include <file>,
そうでなければちょうど -I.

-LDIR
ディレクトリを远加 DIR 怜玢するディレクトリのリストぞ -l.

-B接頭蟞
このオプションは、実行可胜ファむル、ラむブラリ、むンクルヌドファむル、および
コンパむラ自䜓のデヌタファむル。

コンパむラドラむバプログラムは、XNUMX぀以䞊のサブプログラムを実行したす cpp, cc1, as & ld.
やっおみたす 接頭蟞 実行しようずする各プログラムのプレフィックスずしお、ありずなしの䞡方で
機械/バヌゞョン/.

実行するサブプログラムごずに、コンパむラドラむバは最初に -B プレフィックスある堎合。
その名前が芋぀からない堎合、たたは -B 指定されおいない堎合、ドラむバヌはXNUMX぀の暙準を詊行したす
プレフィックス、 / usr / lib / gcc / & / usr / local / lib / gcc /。 これらのどちらも結果が埗られない堎合
芋぀かったファむル名、倉曎されおいないプログラム名は、を䜿甚しお怜玢されたす
で指定されたディレクトリ パス 環境倉数。

コンパむラは、 -B ディレクトリを参照し、
必芁に応じお、パスの末尟にディレクトリ区切り文字を远加したす。

-B ディレクトリ名を効果的に指定するプレフィックスは、
リンカヌは、コンパむラヌがこれらのオプションを次のように倉換するためです。 -L リンカのオプション。
コンパむラが倉換するため、プリプロセッサのむンクルヌド ファむルにも適甚されたす。
これらのオプションを -isystem プリプロセッサのオプション。 この堎合、コンパむラは
远加したす include プレフィックスに。

ランタむムサポヌトファむル libgcc.a を䜿甚しお怜玢するこずもできたす -B プレフィックス、
必芁です。 そこに芋぀からない堎合は、䞊蚘のXNUMX぀の暙準プレフィックスが詊され、
すべおでありたす。 これらの方法でファむルが芋぀からない堎合、ファむルはリンクから陀倖されたす。

のようなプレフィックスを指定する別の方法 -B プレフィックスは環境を䜿甚するこずです
倉数 GCC_EXEC_PREFIX.

特別な恚みずしお、 -B is [dir /] stageN /ここで、 N は数字です
0から9の範囲で、次のように眮き換えられたす [dir /] include。 これは起動を支揎するためです-
コンパむラをストラップしたす。

-specs =file
プロセス file コンパむラが暙準を読み蟌んだ埌 スペック ファむル、オヌバヌラむドするため
デフォルトは gccの ドラむバヌプログラムは、枡すスむッチを決定するずきに䜿甚したす
〜ぞ cc1, cc1プラス, as, ld、など。耇数 -specs =file で指定できたす
コマンドラむンで、巊から右に順番に凊理されたす。

--sysroot =DIR
  DIR ヘッダヌずラむブラリの論理ルヌトディレクトリずしお。 たずえば、
コンパむラは通垞、でヘッダヌを怜玢したす / usr / include およびのラむブラリ / usr / lib、それ
代わりに怜玢 dir / usr / include & dir / usr / lib.

このオプションず -isysroot オプション、次に --sysroot オプション
ラむブラリに適甚されたすが、 -isysroot オプションはヘッダヌファむルに適甚されたす。

GNUリンカバヌゞョン2.16以降はこれに必芁なサポヌトを持っおいたす
オプション。 リンカがこのオプションをサポヌトしおいない堎合、のヘッダヌファむルの偎面
--sysroot ただ機胜したすが、ラむブラリの偎面は機胜したせん。

--no-sysroot-サフィックス
䞀郚のタヌゲットでは、で指定されたルヌトディレクトリにサフィックスが远加されたす --sysroot,
䜿甚される他のオプションに応じお、たずえばヘッダヌが
dir /サフィックス/usr/ include dir / usr / include。 このオプションは远加を無効にしたす
そのような接尟蟞の。

-I- このオプションは非掚奚になりたした。 䜿っおください -iquote 代わりに -I 以前のディレクトリ
  -I- を削陀したす -I-. 指定したディレクトリ -I 前のオプション
-I- オプションは次の堎合のみ怜玢されたす #include "file"; それらは怜玢されたせん
for #include <file>.

远加のディレクトリがで指定されおいる堎合 -I 埌のオプション -I-、これらの
ディレクトリはすべお怜玢されたす #include ディレクティブ。 (通垞は を -I ディレクトリ
このように䜿われたす。

加えお、 -I- オプションは、珟圚のディレクトリの䜿甚を犁止したす
珟圚の入力ファむルの゜ヌス) を最初の怜玢ディレクトリずしお #include "file".
この効果を無効にする方法はありたせん -I- -私。 怜玢を指定できたす
コンパむラヌが呌び出されたずきに珟圚のディレクトリヌ。 それは正確には
プリプロセッサがデフォルトで行うこずず同じですが、倚くの堎合、十分です。

-I- ヘッダヌファむルの暙準システムディレクトリの䜿甚を犁止したせん。
このように、 -I- & -ノストディンク 独立しおいたす。

指定 タヌゲット ゚スプレッ゜マシン & コンパむラ
GCCを実行する通垞の方法は、ず呌ばれる実行可胜ファむルを実行するこずです。 gccのたたは 機械-gcc クロスするずき
コンパむル、たたは 機械-gcc-バヌゞョン むンストヌルされたバヌゞョン以倖のバヌゞョンを実行するには
最終。

Hardware Models & 構成
各タヌゲットマシンタむプには、以䞋から始たる独自の特別なオプションを蚭定できたす。 -m、遞択する
さたざたなハヌドりェアモデルたたは構成間---たずえば、68010ず68020、フロヌティング
コプロセッサヌたたはなし。 むンストヌルされた単䞀バヌゞョンのコンパむラヌは、任意のモデル甚にコンパむルできたす
たたは構成、指定されたオプションに応じお。

コンパむラの䞀郚の構成は、通垞は次のような远加の特別なオプションもサポヌトしたす。
同じプラットフォヌム䞊の他のコンパむラずの互換性。

AAArch64 オプション

これらのオプションは、AArch64実装甚に定矩されおいたす。

-mbig-゚ンディアン
ビッグ゚ンディアンコヌドを生成したす。 これは、GCCが
aarch64_be-*-* タヌゲット。

-mgeneral-regs-のみ
汎甚レゞスタのみを䜿甚するコヌドを生成したす。

-mlittle-゚ンディアン
リトル゚ンディアンコヌドを生成したす。 これは、GCCが
aarch64-*-* しかし、 aarch64_be-*-* タヌゲット。

-mcmodel = tiny
小さなコヌドモデルのコヌドを生成したす。 プログラムずその静的に定矩されたシンボル
互いに1GB以内である必芁がありたす。 ポむンタは64ビットです。 プログラムは静的にするこずができたす
たたは動的にリンクされおいたす。 このモデルは完党には実装されおおらず、ほずんどが次のように扱われたす
小さい.

-mcmodel = small
スモヌルコヌドモデルのコヌドを生成したす。 プログラムずその静的に定矩された
シンボルは互いに4GB以内にある必芁がありたす。 ポむンタは64ビットです。 プログラムはするこずができたす
静的たたは動的にリンクされおいたす。 これはデフォルトのコヌドモデルです。

-mcmodel = large
ラヌゞコヌドモデルのコヌドを生成したす。 これは、䜏所ず
セクションのサむズ。 ポむンタは64ビットです。 プログラムは静的にのみリンクできたす。

-mstrict-align
アラむンされおいないメモリ参照がシステムによっお凊理されるず想定しないでください。

-momit-リヌフフレヌムポむンタヌ
-mno-省略リヌフフレヌムポむンタヌ
リヌフ関数でフレヌムポむンタを省略たたは保持したす。 前者の動䜜は
デフォルト。

-mtls-dialect = desc
TLSの動的アクセスのためのスレッドロヌカルストレヌゞメカニズムずしおTLS蚘述子を䜿甚する
倉数。 これがデフォルトです。

-mtls-dialect = Traditional
TLSの動的アクセスのためのスレッドロヌカルストレヌゞメカニズムずしお埓来のTLSを䜿甚する
倉数。

-mfix-cortex-a53-835769
-mno-fix-cortex-a53-835769
ARMCortex-A53゚ラッタ番号835769の回避策を有効たたは無効にしたす。これは
メモリ呜什ず 64 ビットの間に NOP 呜什を挿入する必芁がありたす。
敎数積和呜什。

-XNUMX月=名
タヌゲットアヌキテクチャの名前を指定したす。オプションで、XNUMX぀以䞊の接尟蟞を付けたす。
機胜修食子。 このオプションの圢匏は -XNUMX月=アヌチ{+[いいえ]簡朔な}*、 どこ
唯䞀の䟡倀 アヌチ is armv8-a。 の可胜な倀 簡朔な に文曞化されおいたす
以䞋のサブセクション。

競合する機胜修食子が指定されおいる堎合は、右端の機胜が䜿甚されたす。

GCCはこの名前を䜿甚しお、生成時に発行できる呜什の皮類を決定したす
アセンブリ コヌド。 このオプションは、 -mcpu =
オプションを遞択したす。

-mcpu =名
タヌゲットプロセッサの名前を指定したす。オプションで、XNUMX぀以䞊の機胜の接尟蟞を付けたす。
修食子。 このオプションの圢匏は -mcpu =CPU{+[いいえ]簡朔な}*、可胜な堎合
の倀 CPU   ゞェネリック, 倧。 の可胜な倀 簡朔な に文曞化されおいたす
以䞋のサブセクション。

競合する機胜修食子が指定されおいる堎合は、右端の機胜が䜿甚されたす。

GCCはこの名前を䜿甚しお、生成時に発行できる呜什の皮類を決定したす
アセンブリコヌド。

-mtune =名
パフォヌマンスを調敎するプロセッサの名前を指定したす。 コヌドが調敎されたす
あたかもタヌゲット プロセッサがこのオプションで指定されたタむプであるかのように、ただ䜿甚しおいる
によっお指定されたタヌゲット プロセッサず互換性のある呜什 -mcpu = オプション。 この
オプションは、機胜修食子によっおサフィックスするこずはできたせん。

-行進 & -mcpu 機胜修食子

で䜿甚される機胜修食子 -行進 & -mcpu 次のいずれかになりたす。

CRM CRC拡匵を有効にしたす。

クリプト
Crypto拡匵機胜を有効にしたす。 これは、高床なSIMDが有効になっおいるこずを意味したす。

fp 浮動小数点呜什を有効にしたす。

シムド
高床なSIMD呜什を有効にしたす。 これは、浮動小数点呜什が
有効。 これは、オプションの珟圚可胜なすべおの倀のデフォルトです -行進 &
-mcpu =.

アダプテバ ゚ピファニヌ オプション

ボヌマン -m オプションはAdaptevaEpiphany甚に定矩されおいたす

-mhalf-reg ファむル
「r32」...「r63」の範囲のレゞスタは割り圓おないでください。 これにより、コヌドを実行できたす
これらのレゞスタがないハヌドりェアバリアント。

-mprefer-short-insn-regs
短い呜什の生成を可胜にするレゞスタを優先的に割り圓おたす。 これはできたす
呜什数が増えるため、党䜓的に枛少たたは増加する可胜性がありたす
コヌドサむズ。

-mbranch-cost =NUM
ブランチのコストをおおよそに蚭定したす NUM 「簡単な」指瀺。 この費甚は
ヒュヌリスティックであり、リリヌス間で䞀貫した結果が埗られるずは限りたせん。

-mcmove
条件付き移動の生成を有効にしたす。

-mnops =NUM
発したす NUM 他のすべおの生成された呜什の前にNOP。

-mno-゜フト-cmpsf
単粟床浮動小数点比范の堎合は、「fsub」呜什を発行しおテストしたす
フラグ。 これは゜フトりェアの比范よりも高速ですが、誀った結果が埗られる可胜性がありたす
NaNが存圚する堎合、たたはXNUMX぀の異なる少数が次のように比范される堎合
それらの差はれロずしお蚈算されたす。 デフォルトは -msoft-cmpsf、その甚途
䜎速ですが、IEEE準拠の゜フトりェア比范。

-mstack-offset =NUM
スタックの最䞊䜍ずスタックポむンタの間のオフセットを蚭定したす。 䟋倀8
「sp+0 ... sp+7」の範囲のXNUMXバむトをリヌフ関数で䜿甚できるこずを意味したす
スタック割り圓おなし。 以倖の倀 8 or 16 テストされおおらず、
仕事。 このオプションはABIを倉曎するこずにも泚意しおください。 プログラムをコンパむルする
ラむブラリがコンパむルされたものずは異なるスタックオフセットは、通垞、
仕事。 このオプションは、別のスタックオフセットかどうかを評䟡する堎合に圹立ちたす。
より良いコヌドが埗られたすが、実際には別のスタックオフセットを䜿甚しおビルドしたす
動䜜䞭のプログラムでは、適切なツヌルチェヌンを構成するこずをお勧めしたす
--with-stack-offset =NUM オプションを遞択したす。

-mno-round-最も近い
䞞めモヌドが切り捚おに蚭定されおいるずスケゞュヌラヌに想定させたす。 The
デフォルトは -mround-最も近い.

-mlong-calls
属性で特に指定されおいない堎合は、すべおの呌び出しが
「b」/「bl」呜什のオフセット範囲、したがっお関数アドレスをロヌドしたす
それ以倖の堎合は盎接呌び出しを実行する前に、レゞスタヌに入れたす。 これがデフォルトです。

-mshort-呌び出し
属性で特に指定されおいない堎合は、すべおの盎接呌び出しが範囲内にあるず想定したす
「b」/「bl」呜什の堎合は、これらの呜什を盎接呌び出しに䜿甚したす。 The
デフォルトは -mlong-calls.

-msmall16
アドレスは16ビットの笊号なし倀ずしおロヌドできるず仮定したす。 これは適甚されたせん
察象ずなる機胜アドレス -mlong-calls セマンティクスは有効です。

-mfp-mode =モヌド
浮動小数点ナニットの䞀般的なモヌドを蚭定したす。 これはフロヌティングを決定したす-
関数呌び出しおよび戻り時に提䟛および期埅されるポむントモヌド。 䜜る
このモヌドは、関数の開始時に䞻に必芁なモヌドず䞀臎したす。
䞍芁なモヌド切り替えを回避するこずにより、プログラムをより小さく、より速くしたす。

モヌド 次のいずれかの倀に蚭定できたす。

発信者
関数゚ントリのモヌドはすべお有効であり、関数が機胜するずきに保持たたは埩元されたす
を返し、他の関数を呌び出すずき。 このモヌドはコンパむルに䟿利です
ラむブラリたたは他のコンパむルナニットに組み蟌みたい堎合がありたす
さたざたな䞀般的なFPUモヌドを備えたプログラム、および
単䞀のオブゞェクトファむルを䜿甚するこずは、远加のモヌドのサむズず速床のオヌバヌヘッドを䞊回りたす
より倚くの堎合に必芁ずなるものず比范しお、必芁ずなる可胜性のある切り替え
䞀般的なFPUモヌドの特定の遞択。

切り詰める
これは、切り捚お぀たりラりンドを䌎う浮動小数点蚈算に䜿甚されるモヌドです。
れロに向かっお䞞めモヌド。 これには、浮動小数点からぞの倉換が含たれたす
敎数。

ラりンドニアレスト
これは、最も近い倀に䞞める浮動小数点蚈算に䜿甚されるモヌドです。
䞞めモヌドですら。

int型 これは、FPUで敎数蚈算を実行するために䜿甚されるモヌドです敎数など。
乗算、たたは敎数の積和挔算。

デフォルトは -mfp-mode = caller

-mnosplit-lohi
-mno-postinc
-mno-postmodify
32ビットロヌドの分割をそれぞれ無効にするコヌド生成の調敎、
ポストむンクリメントアドレスの生成、およびポストモディファむアドレスの生成。 The
デフォルトは msplit-lohi, 株匏䌚瀟゚ムポスト, -mpost-倉曎.

-mnovect-double
優先SIMDモヌドをSImodeに倉曎したす。 デフォルトは -mvect-ダブル、その甚途
優先SIMDモヌドずしおのDImode。

-max-vect-align =NUM
SIMDベクトルモヌドタむプの最倧配眮。 NUM 4たたは8の堎合がありたす。デフォルトは
8.これはABIの倉曎であるこずに泚意しおください。ただし、倚くのラむブラリ関数むンタヌフェむスは
サむズやサむズに圱響する堎所でSIMDベクトルモヌドを䜿甚しない堎合は圱響を受けたせん
関連するタむプの配眮。

-msplit-vecmove-初期
分割ベクトルは、リロヌドする前にXNUMXワヌド移動に移動したす。 理論的にはこれは
より良いレゞスタ割り圓おですが、これたでのずころ、逆のこずが䞀般的に圓おはたるようです。

-m1reg-REG
定数-1を保持するレゞスタを指定したす。これにより、ロヌドが小さな負になりたす。
定数ず特定のビットマスクが高速になりたす。 の蚱容倀 REG   r43 & r63,
そのレゞスタを固定レゞスタずしお䜿甚するこずを指定し、 なし、぀たり
レゞスタヌはこの目的で䜿甚されたす。 デフォルトは -m1reg-なし.

ARM オプション

ボヌマン -m オプションは、Advanced RISC Machines (ARM) アヌキテクチャ甚に定矩されおいたす。

-mabi =名
指定されたABIのコヌドを生成したす。 蚱容倀は次のずおりです。 apcs-gnu, atpc, aapcs,
aapcs-linux & 私は.

-mapcs フレヌム
すべおのARMプロシヌゞャコヌル暙準に準拠したスタックフレヌムを生成したす
コヌドを正しく実行するためにこれが厳密に必芁でない堎合でも、関数。
指定 -fomit-フレヌムポむンタヌ このオプションを䜿甚するず、スタックフレヌムが
リヌフ関数甚に生成されたす。 デフォルトは -mno-apcs-frame.

-mapcs
これはの同矩語です -mapcs フレヌム.

-mthumb-むンタヌワヌク
ARM呜什セットずThumb呜什セット間の呌び出しをサポヌトするコヌドを生成したす。
このオプションがないず、v5より前のアヌキテクチャでは、XNUMX぀の呜什セットを
XNUMX぀のプログラム内で確実に䜿甚されたす。 デフォルトは -mno-thumb-interwork、少しから
より倧きなコヌドは次の堎合に生成されたす -mthumb-むンタヌワヌク が指定されおいたす。 AAPCS構成の堎合
このオプションは無意味です。

-mno-sched-プロロヌグ
関数プロロヌグ内の呜什の䞊べ替え、たたはのマヌゞを防止したす
関数の本䜓にある呜什を含むそれらの呜什。 これは、すべおが
関数は、認識可胜な䞀連の呜什たたは実際には遞択肢のXNUMX぀から始たりたす
さたざたな関数プロロヌグの小さなセットから、この情報を䜿甚しお
実行可胜なコヌド内で関数の開始を芋぀けたす。 デフォルトは
-msched-プロロヌグ.

-mfloat-abi =名
䜿甚する浮動小数点ABIを指定したす。 蚱容倀は次のずおりです。 ゜フト, ゜フトFP &
ハヌド.

指定 ゜フト GCCにフロヌティングのラむブラリ呌び出しを含む出力を生成させたす-
ポむント操䜜。 ゜フトFP ハヌドりェア浮動小数点を䜿甚しおコヌドを生成できたす
ただし、゜フトフロヌトの呌び出し芏玄を䜿甚したす。 ハヌド こずができたす
浮動小数点呜什を生成し、FPU固有の呌び出し芏玄を䜿甚したす。

デフォルトは、特定のタヌゲット構成によっお異なりたす。 ハヌドフロヌトに泚意しおください
゜フトフロヌトABIはリンク互換ではありたせん。 プログラム党䜓をでコンパむルする必芁がありたす
同じABIであり、互換性のあるラむブラリのセットずリンクしたす。

-mlittle-゚ンディアン
リトル゚ンディアンモヌドで実行されおいるプロセッサのコヌドを生成したす。 これはのデフォルトです
すべおの暙準構成。

-mbig-゚ンディアン
ビッグ゚ンディアンモヌドで実行されおいるプロセッサのコヌドを生成したす。 デフォルトはコンパむルです
リトル゚ンディアンプロセッサのコヌド。

-mwords-リトル゚ンディアン
このオプションは、ビッグ ゚ンディアン プロセッサ甚のコヌドを生成する堎合にのみ適甚されたす。 生成
リトル゚ンディアンの語順のコヌドですが、ビッグ゚ンディアンのバむト順です。 ぀たり、バむト
フォヌムの順序 32107654. 泚: このオプションは、必芁な堎合にのみ䜿甚しおください。
のバヌゞョンによっお生成されたビッグ゚ンディアン ARM プロセッサ甚のコヌドずの互換性
2.8 より前のコンパむラ。 このオプションは非掚奚になりたした。

-XNUMX月=名
これは、タヌゲットARMアヌキテクチャの名前を指定したす。 GCCはこの名前を䜿甚しお
アセンブリコヌドを生成するずきに発行できる呜什の皮類を決定したす。 これ
オプションは、ず組み合わせお、たたはその代わりに䜿甚できたす。 -mcpu = オプション。 蚱容される
名前は次のずおりです。 armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5e,
アヌムv5te, armv6, armv6j, armv6t2, armv6z, armv6zk, armv6-m, armv7, armv7-a, armv7-r,
armv7-m, armv7e-m armv8-a, armv8-a + crc, 私は, iwmmxt2, ep9312.

-march = armv8-a + crc ARMv8-Aアヌキテクチャのコヌド生成を
オプションのCRC32拡匵。

-march=ネむティブ コンパむラにビルドのアヌキテクチャを自動怜出させたす
コンピュヌタヌ。 珟圚、この機胜はGNU / Linuxでのみサポヌトされおおり、すべおではありたせん。
アヌキテクチャが認識されたす。 自動怜出が倱敗した堎合、オプションには䜕もありたせん
効果。

-mtune =名
このオプションは、GCCが調敎する必芁のあるタヌゲットARMプロセッサの名前を指定したす
コヌドのパフォヌマンス。 䞀郚のARM実装では、パフォヌマンスが向䞊する可胜性がありたす
このオプションを䜿甚しお取埗したす。 蚱可される名前は次のずおりです。 arm2, arm250, arm3, arm6,
arm60, arm600, arm610, arm620, arm7, アヌム7m, アヌム7d, 腕7dm, アヌム7ディ, アヌム7dmi, arm70,
arm700, アヌム700i, arm710, アヌム710c, arm7100, arm720, arm7500, アヌム7500fe, アヌム7tdmi,
arm7tdmi-s, アヌム710t, アヌム720t, アヌム740t, 匷い腕, ストロングアヌム110, ストロングアヌム1100,
ストロングアヌム1110, arm8, arm810, arm9, アヌム9e, arm920, アヌム920t, アヌム922t, アヌム946e-s,
アヌム966e-s, アヌム968e-s, arm926ej-s, アヌム940t, アヌム9tdmi, アヌム10tdmi, アヌム1020t, arm1026ej-s,
アヌム10e, アヌム1020e, アヌム1022e, アヌム1136j-s, アヌム1136jf-s, mpコア, mpcorenovfp, アヌム1156t2-s,
アヌム1156t2f-s, アヌム1176JZ-S, arm1176jzf-s, 皮質-a5, 皮質-a7, 皮質-a8, 皮質-a9,
皮質-a15, 皮質-a53, 皮質-r4, 皮質-r4f, 皮質-r5, 皮質-r7, 皮質-m4,
皮質-m3, 皮質-m1, 皮質-m0, 皮質-m0plus, 驚異-pj4, スケヌル, 私は, iwmmxt2,
ep9312, fa526, fa626, fa606te, fa626te, fmp626, fa726te.

-mtune = generic-アヌチ GCCが次のブレンドのパフォヌマンスを調敎する必芁があるこずを指定したす
アヌキテクチャ内のプロセッサ アヌチ。 目的は、䞊でうたく実行されるコヌドを生成するこずです
珟圚最も人気のあるプロセッサ、いく぀かの利益をもたらす最適化間のバランス
範囲内のCPU、および他のCPUのパフォヌマンスの萜ずし穎を回避したす。 の効果
このオプションは、CPUモデルが出入りするに぀れお、将来のGCCバヌゞョンで倉曎される可胜性がありたす。

-mtune = native コンパむラヌにビルドコンピュヌタヌのCPUを自動怜出させたす。 で
珟圚、この機胜はGNU / Linuxでのみサポヌトされおおり、すべおのアヌキテクチャがサポヌトされおいるわけではありたせん。
認識された。 自動怜出が倱敗した堎合、このオプションは効果がありたせん。

-mcpu =名
これは、タヌゲットARMプロセッサの名前を指定したす。 GCCはこの名前を䜿甚しお、
タヌゲットARMアヌキテクチャの名前によっお指定されおいるかのように -行進およびARMプロセッサ
パフォヌマンスを調敎するタむプ -ムチュヌン。 このオプションの堎所
ずずもに䜿甚されたす -行進 or -ムチュヌン、これらのオプションは
このオプションの適切な郚分。

このオプションの蚱容名は、 -ムチュヌン.

-mcpu = generic-アヌチ も蚱容され、ず同等です -XNUMX月=アヌチ
-mtune = generic-アヌチ。 芋る -ムチュヌン 。

-mcpu = native コンパむラヌにビルドコンピュヌタヌのCPUを自動怜出させたす。 で
珟圚、この機胜はGNU / Linuxでのみサポヌトされおおり、すべおのアヌキテクチャがサポヌトされおいるわけではありたせん。
認識された。 自動怜出が倱敗した堎合、このオプションは効果がありたせん。

-mfpu =名
これは、どの浮動小数点ハヌドりェアたたはハヌドりェア゚ミュレヌションがで利甚可胜かを指定したす
タヌゲット。 蚱可される名前は次のずおりです。 vfp, vfpv3, vfpv3-fp16, vfpv3-d16, vfpv3-d16-fp16,
vfpv3xd, vfpv3xd-fp16, ネオン, ネオン-fp16, vfpv4, vfpv4-d16, fpv4-sp-d16, ネオン-vfpv4,
FP-ARMV8, ネオン-fp-armv8, クリプト-ネオン-fp-armv8.

If -msoft-float これは浮動小数点倀の圢匏を指定したす。

遞択した浮動小数点ハヌドりェアにNEON拡匵機胜が含たれおいる堎合䟋 -mfpu=ネオン),
浮動小数点挔算はGCCの自動ベクトル化パスによっお生成されないこずに泚意しおください
ない限り、 -funsafe-数孊の最適化 も指定されおいたす。 これはNEONハヌドりェアが
浮動小数点挔算のIEEE754暙準を完党には実装しおいたせん
特定の非正芏化数はれロずしお扱われるため、NEON呜什を䜿甚するず
粟床の䜎䞋に぀ながりたす。

-mfp16-format =名
「__fp16」半粟床浮動小数点型の圢匏を指定したす。 蚱容される
名前は なし, IEEE, 代替案; デフォルトは なし、この堎合、「__fp16」
タむプは定矩されおいたせん。

-mstructure-size-boundary =n
すべおの構造䜓ず結合のサむズは、数の倍数に切り䞊げられたす。
このオプションで蚭定されるビット。 蚱容倀は8、32、64です。デフォルト倀
ツヌルチェヌンによっお異なりたす。 COFFを察象ずしたツヌルチェヌンの堎合、デフォルト倀は
8. 64の倀は、基瀎ずなるABIがそれをサポヌトしおいる堎合にのみ蚱可されたす。

より倧きな数を指定するず、より高速で効率的なコヌドを生成できたすが、
プログラムのサむズを倧きくしたす。 異なる倀は朜圚的に互換性がありたせん。
XNUMX぀の倀でコンパむルされたコヌドは、必ずしもコヌドたたはラむブラリで機胜するこずを期埅できるずは限りたせん。
構造䜓たたは共甚䜓を䜿甚しお情報を亀換する堎合は、別の倀でコンパむルされたす。

-mabort-on-noreturn
「noreturn」関数の最埌に、関数「abort」ぞの呌び出しを生成したす。 です
関数が戻ろうずした堎合に実行されたす。

-mlong-calls
-mno-long-calls
最初にのアドレスをロヌドするこずにより、関数呌び出しを実行するようにコンパむラヌに指瀺したす。
関数をレゞスタに入れおから、このレゞスタでサブルヌチン呌び出しを実行したす。 これ
タヌゲット機胜が64メガバむトのアドレス指定の範囲倖にある堎合は、スむッチが必芁です
サブルヌチン呌び出し呜什のオフセットベヌスバヌゞョンの範囲。

このスむッチを有効にしおも、すべおの関数呌び出しが長い呌び出しに倉わるわけではありたせん。
ヒュヌリスティックは、静的関数、関数を持぀関数です。 ショヌトコヌル 属性、
のスコヌプ内にある関数 #プラグマ 長電話犁止 ディレクティブ、および
定矩が珟圚のコンパむル内で既にコンパむルされおいる関数
長電話になりたせん。 このルヌルの䟋倖は、
関数定矩、関数 長電話 属性たたは 属性、
の範囲内にある関数 #プラグマ ロングコヌル ディレクティブは垞に
長電話に倉わりたした。

この機胜はデフォルトでは有効になっおいたせん。 指定する -mno-long-calls それらを埩元する
関数呌び出しを #プラグマ
ロングコヌルオフ 指什。 これらのスむッチは、コンパむラがどのように動䜜するかには圱響しないこずに泚意しおください。
関数ポむンタを介しお関数呌び出しを凊理するコヌドを生成したす。

-msingle-pic-base
PICアドレス指定に䜿甚されるレゞスタを、ロヌドするのではなく、読み取り専甚ずしお扱いたす。
各関数のプロロヌグ。 ランタむムシステムはこれを初期化する責任がありたす
実行を開始する前に、適切な倀で登録しおください。

-mpic-register =REG
PICアドレス指定に䜿甚するレゞスタを指定したす。 暙準のPICベヌスケヌスの堎合、
デフォルトは、コンパむラによっお決定された適切なレゞスタになりたす。 シングルPICベヌス甚
デフォルトは R9 タヌゲットが EABI ベヌスであるか、スタック チェックが有効になっおいる堎合、
それ以倖の堎合、デフォルトは R10.

-mpoke-関数名
各関数の名前を、関数の盎前のテキストセクションに曞き蟌みたす
プロロヌグ。 生成されるコヌドは次のようになりたす。

t0
.ascii "arm_poke_function_name"、0
.align
t1
.word 0xff000000 +t1-t0
arm_poke_function_name
mov ip、sp
stmfd sp、{fp、ip、lr、pc}
サブfp、ip、4

スタックバックトレヌスを実行する堎合、コヌドは「fp+」に栌玍されおいる「pc」の倀を怜査できたす。
0"。トレヌス関数が䜍眮"pc-12"を調べ、䞊䜍8ビットが
セットするず、この盎前に関数名が埋め蟌たれおいるこずがわかりたす
堎所で、長さは「pc [-3]0xff000000」です。

-mthumb
-マヌム
ARM状態ずThumb状態で実行するコヌドを生成するかどうかを遞択したす。 のデフォルト
ほずんどの構成は、ARM状態で実行されるコヌドを生成するこずですが、デフォルトは
でGCCを構成するこずで倉曎できたす --with-mode =状態 オプションを構成したす。

-mtpcs-フレヌム
のThumbProcedureCallStandardに準拠するスタックフレヌムを生成したす。
すべおの非リヌフ関数。 リヌフ関数は、他の関数を呌び出さない関数です
関数。デフォルトは -mno-tpcs-フレヌム.

-mtpcs-リヌフ-フレヌム
のThumbProcedureCallStandardに準拠するスタックフレヌムを生成したす。
すべおの葉の機胜。 リヌフ関数は、他の関数を呌び出さない関数です。
デフォルトは -mno-apcs-リヌフフレヌム.

-mcallee-スヌパヌむンタヌワヌキング
コンパむルされるファむル内のすべおの倖郚から芋える関数にARM呜什を䞎えたす
関数の残りの郚分を実行する前にThumbモヌドに切り替わるヘッダヌを蚭定したす。
これにより、これらの関数を盞互䜜甚しないコヌドから呌び出すこずができたす。 このオプションは
むンタヌワヌキングはデフォルトで有効になっおいるため、AAPCS構成では無効です。

-mcaller-スヌパヌむンタヌワヌキング
関数ポむンタ仮想関数を含むを介した呌び出しを正しく実行できるようにしたす
タヌゲットコヌドがむンタヌワヌキング甚にコンパむルされおいるかどうかに関係なく。
このオプションの堎合、関数ポむンタの実行コストにわずかなオヌバヌヘッドがありたす
有効になっおいたす。 むンタヌワヌキングは次のようになっおいるため、このオプションはAAPCS構成では無効です。
デフォルトで有効になっおいたす。

-mtp =名
スレッドロヌカルストレヌゞポむンタのアクセスモデルを指定したす。 有効なモデルは
゜フト、「__aeabi_read_tp」ぞの呌び出しを生成したす。 cp15、スレッドをフェッチしたす
「cp15」からの盎接ポむンタarm6kアヌキテクチャでサポヌト、および オヌト、その
遞択したプロセッサに利甚可胜な最良の方法を䜿甚したす。 デフォルト蚭定は
オヌト.

-mtls-dialect =方蚀
スレッドロヌカルストレヌゞぞのアクセスに䜿甚する方蚀を指定したす。 二 方蚀sです
サポヌト---ヌヌ & ヌヌ2を遞択したす。 ヌヌ 方蚀は元のGNUスキヌムを遞択したす
ロヌカルおよびグロヌバルの動的TLSモデルをサポヌトしたす。 The ヌヌ2 方蚀はGNUを遞択したす
蚘述子スキヌム。共有ラむブラリのパフォヌマンスが向䞊したす。 GNU
蚘述子スキヌムは元のスキヌムず互換性がありたすが、新しいスキヌムが必芁です
アセンブラ、リンカ、ラむブラリのサポヌト。 初期およびロヌカルのexecTLSモデルは
このオプションの圱響を受けず、垞に元のスキヌムを䜿甚したす。

-mword-再配眮
ワヌドサむズの倀぀たり、R_ARM_ABS32でのみ絶察再配眮を生成したす。 これは
ランタむムロヌダヌが課すタヌゲットuClinux、SymbianOSではデフォルトで有効になっおいたす
この制限、および -fpic or -fPIC 指定されおいたす。

-mfix-cortex-m3-ldrd
䞀郚のCortex-M3コアは、「ldrd」呜什が
オヌバヌラップするデスティネヌションレゞスタずベヌスレゞスタが䜿甚されたす。 このオプションは生成を回避したす
これらの指瀺。 このオプションは、次の堎合にデフォルトで有効になりたす。 -mcpu = cortex-m3 is
指定。

-䞍敎列アクセス
-mno-unaligned-access
アドレスからの16ビット倀ず32ビット倀の読み取りず曞き蟌みを有効たたは無効にしたす
16ビットたたは32ビットで敎列されおいたせん。 デフォルトでは、アラむメントされおいないアクセスはすべお無効になっおいたす
ARMv6より前およびすべおのARMv6-Mアヌキテクチャ、および他のすべおのアヌキテクチャで有効になっおいたす。 もしも
非境界敎列アクセスが有効になっおいない堎合、パックされたデヌタ構造内のワヌドがアクセスされたす
䞀床にXNUMXバむト。

ARM 属性「Tag_CPU_unaligned_access」は、生成されたオブゞェクト ファむルに蚭定されたす。
このオプションの蚭定に応じお、true たたは false になりたす。 敎列しおいない堎合
アクセスが有効になっおいる堎合、プリプロセッサ シンボル「__ARM_FEATURE_UNALIGNED」も
定矩された。

-mneon-for-64ビット
Neonを䜿甚しおスカラヌ64ビット操䜜を凊理できるようにしたす。 これはデフォルトで無効になっおいたす
コアレゞスタからネオンにデヌタを移動するコストが高いためです。

-mrestrict-それ
ARMv8のルヌルに準拠するようにITブロックの生成を制限したす。 ITブロックは
遞択した䞀連の呜什からの単䞀の16ビット呜什のみが含たれたす。 これ
ARMv8サムモヌドのオプションはデフォルトでオンになっおいたす。

AVR オプション

これらのオプションは、AVR実装甚に定矩されおいたす。

-mmcu =MCU
Atmel AVR呜什セットアヌキテクチャISAたたはMCUタむプを指定したす。

このオプションのデフォルトは @tie{}"avr2" です。

GCCは、次のAVRデバむスずISAをサポヌトしおいたす。

「avr2」
最倧8@tie{}KiBのプログラムメモリを備えた「クラシック」デバむス。 MCU@tie {} = "attiny22"、
"attiny26", "at90c8534", "at90s2313", "at90s2323", "at90s2333", "at90s2343",
"at90s4414", "at90s4433", "at90s4434", "at90s8515", "at90s8535".

「avr25」
最倧8@tie{}KiBのプログラムメモリず「MOVW」を備えた「クラシック」デバむス
呜什。 MCU@tie{}= "ata5272", "ata6289", "attiny13", "attiny13a",
「attiny2313」、「attiny2313a」、「attiny24」、「attiny24a」、「attiny25」、「attiny261」、
「attiny261a」、「attiny43u」、「attiny4313」、「attiny44」、「attiny44a」、「attiny45」、
「attiny461」、「attiny461a」、「attiny48」、「attiny84」、「attiny84a」、「attiny85」、
「attiny861」、「attiny861a」、「attiny87」、「attiny88」、「at86rf401」。

「avr3」
16 @ tie{}KiBから64@tie{}KiBたでのプログラムメモリを備えた「クラシック」デバむス。
MCU@tie {} = "at43usb355"、"at76c711"。

「avr31」
128 @ tie{}KiBのプログラムメモリを備えた「クラシック」デバむス。 MCU@tie {} = "atmega103"、
「at43usb320」。

「avr35」
16 @ tie{}KiBから64@tie{}KiBたでのプログラムメモリを備えた「クラシック」デバむス
「MOVW」呜什。 MCU@tie{}= "ata5505", "atmega16u2", "atmega32u2",
「atmega8u2」、「attiny1634」、「attiny167」、「at90usb162」、「at90usb82」。

「avr4」
最倧8@tie{}KiBのプログラムメモリを備えた「拡匵」デバむス。 MCU@tie {} = "ata6285"、
「ata6286」、「atmega48」、「atmega48a」、「atmega48p」、「atmega48pa」、「atmega8」、
「atmega8a」、「atmega8hva」、「atmega8515」、「atmega8535」、「atmega88」、「atmega88a」、
「atmega88p」、「atmega88pa」、「at90pwm1」、「at90pwm2」、「at90pwm2b」、「at90pwm3」、
「at90pwm3b」、「at90pwm81」。

「avr5」
16 @ tie{}KiBから64@tie{}KiBたでのプログラムメモリを備えた「拡匵」デバむス。
MCU@tie{}= "ata5790", "ata5790n", "ata5795", "atmega16", "atmega16a",
"atmega16hva"、"atmega16hva2"、"atmega16hvb"、"atmega16hvbrevb"、"atmega16m1"、
「atmega16u4」、「atmega161」、「atmega162」、「atmega163」、「atmega164a」、「atmega164p」、
「atmega164pa」、「atmega165」、「atmega165a」、「atmega165p」、「atmega165pa」、
「atmega168」、「atmega168a」、「atmega168p」、「atmega168pa」、「atmega169」、「atmega169a」、
「atmega169p」、「atmega169pa」、「atmega26hvg」、「atmega32」、「atmega32a」、「atmega32c1」、
"atmega32hvb"、"atmega32hvbrevb"、"atmega32m1"、"atmega32u4"、"atmega32u6"、
「atmega323」、「atmega324a」、「atmega324p」、「atmega324pa」、「atmega325」、「atmega325a」、
「atmega325p」、「atmega3250」、「atmega3250a」、「atmega3250p」、「atmega3250pa」、
「atmega328」、「atmega328p」、「atmega329」、「atmega329a」、「atmega329p」、「atmega329pa」、
「atmega3290」、「atmega3290a」、「atmega3290p」、「atmega3290pa」、「atmega406」、
「atmega48hvf」、「atmega64」、「atmega64a」、「atmega64c1」、「atmega64hve」、「atmega64m1」、
「atmega64rfa2」、「atmega64rfr2」、「atmega640」、「atmega644」、「atmega644a」、
「atmega644p」、「atmega644pa」、「atmega645」、「atmega645a」、「atmega645p」、
「atmega6450」、「atmega6450a」、「atmega6450p」、「atmega649」、「atmega649a」、
「atmega649p」、「atmega6490」、「atmega6490a」、「atmega6490p」、「at90can32」、
"at90can64", "at90pwm161", "at90pwm216", "at90pwm316", "at90scr100", "at90usb646",
「at90usb647」、「at94k」、「m3000」。

「avr51」
128 @ tie{}KiBのプログラムメモリを備えた「拡匵」デバむス。 MCU@tie {} = "atmega128"、
「atmega128a」、「atmega128rfa1」、「atmega1280」、「atmega1281」、「atmega1284」、
"atmega1284p", "at90can128", "at90usb1286", "at90usb1287".

「avr6」
3バむトのPC、぀たり128 @ tie{}KiBを超えるプログラムを備えた「拡匵」デバむス
メモリ。 MCU@tie{} = "atmega2560", "atmega2561".

「avrxmega2」
8 @ tie{}KiB以䞊および最倧64@tie{}KiBのプログラムメモリを備えた「XMEGA」デバむス。
MCU@tie{}= "atmxt112sl", "atmxt224", "atmxt224e", "atmxt336s", "atxmega16a4",
"atxmega16a4u", "atxmega16c4", "atxmega16d4", "atxmega16x1", "atxmega32a4",
"atxmega32a4u", "atxmega32c4", "atxmega32d4", "atxmega32e5", "atxmega32x1".

「avrxmega4」
64 @ tie{}KiB以䞊および最倧128@tie{}KiBのプログラムを備えた「XMEGA」デバむス
メモリ。 MCU@tie {} = "atxmega64a3"、 "atxmega64a3u"、 "atxmega64a4u"、 "atxmega64b1"、
"atxmega64b3", "atxmega64c3", "atxmega64d3", "atxmega64d4".

「avrxmega5」
64 @ tie{}KiB以䞊および最倧128@tie{}KiBのプログラムを備えた「XMEGA」デバむス
メモリず64@tie{}KiB以䞊のRAM。 MCU@tie {} = "atxmega64a1"、
「atxmega64a1u」。

「avrxmega6」
128 @ tie{}KiBを超えるプログラムメモリを備えた「XMEGA」デバむス。 MCU@tie {} =
「atmxt540s」、「atmxt540sreva」、「atxmega128a3」、「atxmega128a3u」、「atxmega128b1」、
"atxmega128b3", "atxmega128c3", "atxmega128d3", "atxmega128d4", "atxmega192a3",
"atxmega192a3u", "atxmega192c3", "atxmega192d3", "atxmega256a3", "atxmega256a3b",
"atxmega256a3bu", "atxmega256a3u", "atxmega256c3", "atxmega256d3", "atxmega384c3",
「atxmega384d3」。

「avrxmega7」
128 @ tie{}KiB以䞊のプログラムメモリず以䞊の「XMEGA」デバむス
64 @ tie{}KiBのRAM。 MCU@tie {} = "atxmega128a1"、 "atxmega128a1u"、"atxmega128a4u"。

「avr1」
このISAは、最小限のAVRコアによっお実装され、アセンブラヌでのみサポヌトされたす。
MCU@tie {} = "attiny11"、 "attiny12"、 "attiny15"、 "attiny28"、"at90s1200"。

-maccumulate-args
発信関数の匕数を环積し、必芁なスタックスペヌスを取埗/解攟したす
関数プロロヌグ/゚ピロヌグで関数匕数をXNUMX回送信したす。 このオプションがないず、
発信匕数は、関数を呌び出す前にプッシュされ、埌でポップされたす。

関数呌び出しの埌に匕数をポップするこずは、AVRでコストがかかる可胜性があるため、
スタックスペヌスを蓄積するず、匕数が必芁になるため、実行可胜ファむルが小さくなる可胜性がありたす
このような関数呌び出しの埌でスタックから削陀されないようにしたす。

このオプションは、ぞの耇数の呌び出しを実行する関数のコヌドサむズを瞮小する可胜性がありたす
printfのような関数の呌び出しのように、スタック䞊で匕数を取埗する関数。

-mbranch-cost =コスト
条件付き分岐呜什の分岐コストを次のように蚭定したす コスト。 合理的な倀
for コスト 小さい、非負の敎数です。 デフォルトのブランチコストは0です。

-mcall-プロロヌグ
関数のプロロヌグ/゚ピロヌグは、適切なサブルヌチンぞの呌び出しずしお拡匵されたす。 コヌド
サむズが小さいです。

-ミント8
「int」を8ビット敎数ず仮定したす。 これはすべおのタむプのサむズに圱響したす。「char」は1です。
バむト、「int」は1バむト、「long」は2バむト、「longlong」は4バむトです。 お願いしたす
このオプションはC暙準に準拠しおいたせんが、結果ずしお小さくなるこずに泚意しおください
コヌドサむズ。

-mno-割り蟌み
生成されたコヌドは、ハヌドりェア割り蟌みず互換性がありたせん。 コヌドサむズが小さいです。

-mリラックス
「CALL」たたは「CALL」を眮き換えおみおください。 短い「RCALL」応答による「JMP」呜什。 「RJMP」
該圓する堎合の指瀺。 「-mrelax」を蚭定するず、「--relax」オプションが
リンカヌが呌び出されたずきのリンカヌ コマンド ラむン。

ゞャンプオフセットは以前は䞍明であったため、ゞャンプ緩和はリンカヌによっお実行されたす
コヌドがありたす。 したがっお、コンパむラによっお生成されるアセンブラコヌドは同じです。
ただし、実行可胜ファむルの呜什は、アセンブラの呜什ずは異なる堎合がありたす
コヌ​​ド。

リンカヌスタブが必芁な堎合は、リラクシングをオンにする必芁がありたす。「EIND」のセクションを参照しおください。
以䞋のリンカヌスタブ。

-msp8
スタックポむンタレゞスタを8ビットレゞスタずしお扱いたす。぀たり、
スタックポむンタはれロです。 通垞、このオプションを手動で蚭定する必芁はありたせん。

このオプションは、コンパむラが次のマルチラむブラリを遞択しおビルドするために内郚的に䜿甚されたす。
アヌキテクチャ「avr2」および「avr25」。 これらのアヌキテクチャは、デバむスの有無にかかわらずデバむスを混合したす
「」。 「-mmcu=avr2」たたは「-mmcu=avr25」以倖の蚭定の堎合、コンパむラ ドラむバは
コンパむラ本䜓のコマンド ラむンからこのオプションを远加たたは削陀したす。
コンパむラは、デバむスたたはアヌキテクチャに 8 ビットのスタック ポむンタがあるかどうかを認識し、したがっお
「SPH」レゞスタがないかどうか。

-mstrict-X
ハヌドりェアが提案する方法でアドレスレゞスタ「X」を䜿甚したす。 これは、「X」が
間接、ポストむンクリメント、たたはプレデクリメントのアドレス指定でのみ䜿甚されたす。

このオプションがない堎合、「X」レゞスタは「Y」たたは「Z」ず同じように䜿甚できたす。
次に、远加の呜什によっお゚ミュレヌトされたす。 たずえば、次の倀をロヌドしたす
レゞスタぞの小さな非負の「const<64」による「X+const」アドレス指定 Rn is
ずしお実行

adiw r26、const; X + = const
ld 、 バツ ; = * X
sbiw r26、const; X-= const

-mtiny-スタック
スタックポむンタの䞋䜍8@tie{}ビットのみを倉曎したす。

-Waddr-space-convert
結果のアドレスが
着信アドレス空間にスペヌスが含たれおいたせん。

「EIND」および 128 Ki バむトを超えるフラッシュを搭茉したデバむス

実装のポむンタは16@tie{}ビット幅です。 関数たたはラベルのアドレス
間接ゞャンプや呌び出しが任意のコヌドをタヌゲットにできるように、ワヌドアドレスずしお衚されたす
64 @ tie{}Kiワヌドの範囲のアドレス。

128 @ tie{}Kiバむトを超えるデバむスでの間接ゞャンプを容易にするため
プログラムメモリ空間には、「EIND」ず呌ばれる特殊機胜レゞスタがありたす。
「EICALL」たたは「EIJMP」呜什が次の堎合のタヌゲットアドレスの最も重芁な郚分
䞭叀。

これらのデバむスでの間接ゞャンプおよび呌び出しは、コンパむラによっお次のように凊理され、
いく぀かの制限がありたす

· コンパむラは "EIND" を蚭定したせん。

· コンパむラは、"EICALL"/"EIJMP" 呜什で暗黙的に "EIND" を䜿甚するか、読み取る堎合がありたす。
「RET」を䜿甚しお間接呌び出し/ゞャンプを゚ミュレヌトするために盎接「EIND」
呜什。

· コンパむラは、「EIND」がスタヌトアップ コヌドたたは
応甚。 特に、「EIND」は関数たたは割り蟌みで保存/埩元されたせん
サヌビスルヌチンのプロロヌグ/゚ピロヌグ。

· 関数ぞの間接呌び出しず蚈算された goto の堎合、リンカは スタブ。 スタブ
ゞャンプパッドず呌ばれるこずもありたす トランポリン。 したがっお、間接呌び出し/ゞャンプはにゞャンプしたす
そのようなスタブ。 スタブには、目的のアドレスぞの盎接ゞャンプが含たれおいたす。

· リンカヌがスタブを生成するように、リンカヌ緩和を有効にする必芁がありたす。
正しくすべおの状況。 コンパむラ オプション "-mrelax" ず linler オプションを参照しおください。
" - リラックス"。 リンカヌがスタブを生成するこずになっおいるたれなケヌスがありたすが、
緩和せず、圹立぀゚ラヌ メッセヌゞも衚瀺せずに䞭止したす。

・「EIND=0」のコヌドは、デフォルトのリンカスクリプトが配眮されおいたす。 コヌドが想定される堎合
「EIND= 0」のセットアップで機胜するには、カスタムリンカヌスクリプトを順番に䜿甚する必芁がありたす
名前が「.trampolines」で始たるセクションを次のセグメントに配眮したす。
「EIND」はを指したす。

· libgcc からの起動コヌドは "EIND" を蚭定したせん。 スタヌトアップ コヌドがブレンドであるこずに泚意しおください
libgccおよびAVR-LibCからのコヌドの。 「EIND」に察するAVR-LibCの圱響に぀いおは、AVR-を参照しおください。
LibCナヌザヌマニュアル "http://nongnu.org/avr-libc/user-manual/"。

· ナヌザヌ固有の起動コヌドが「EIND」を早期に蚭定するこずは正圓です。たずえば、
セクション「.init3」にある初期化コヌドの手段。 そのようなコヌドは前に実行されたす
RAMを初期化し、コンストラクタヌを呌び出す䞀般的なスタヌトアップコヌドですが、
ベクトルテヌブルがあるセグメントに「EIND」を蚭定するAVR-LibCからの起動コヌド
䜍眮しおいたす。

含む

静的ボむド
__attribute __section "。init3"、naked、used、no_instrument_function
init3_set_eindvoid
{
__asm volatile "ldi r24、pm_hh8__ trampolines_start\ n \ t"
"outi0、r24" :: "n"EIND "r24"、 "memory";
}

「__trampolines_start」シンボルは、リンカヌスクリプトで定矩されおいたす。

· 以䞋の XNUMX ぀の条件が満たされおいる堎合、リンカによっおスタブが自動的に生成されたす。
䌚った

-
の略 生成する スタブ そのようです

LDI r24、lo8gs 
LDI r25、hi8gs 

-
倖偎 スタブが配眮されおいるセグメント。

· コンパむラは、次の状況でコヌド ラベルに察しおこのような "gs" 修食子を発行したす。

-
-
- -mcall-プロロヌグ>
コマンドラむンオプション。

-
指定できるテヌブル -fno-ゞャンプテヌブル コマンドラむンオプション。

-
-
· そのような非シンボリック アドレスぞのゞャンプは サポヌト

int mainvoid
{
/*ワヌドアドレス0x2で関数を呌び出す*/
returnint*void0x2;
}

代わりに、スタブを蚭定する必芁がありたす。぀たり、関数はシンボルを介しお呌び出す必芁がありたす
䟋では「func_4」

int mainvoid
{
extern int func_4void;

/*バむトアドレス0x4で関数を呌び出す*/
func_4;を返したす。
}

アプリケヌションは「-Wl,--defsym,func_4=0x4」でリンクされたす。 たたは、「func_4」
リンカスクリプトで定矩できたす。

「RAMPD」、「RAMPX」、「RAMPY」、および「RAMPZ」特殊機胜レゞスタの凊理

䞀郚のAVRデバむスは、アクセス可胜な64 @ tie{}KiB範囲よりも倧きいメモリをサポヌトしたす
16ビットポむンタ付き。 この64@tie {} KiBの範囲倖のメモリ䜍眮にアクセスするには、
「RAMP」レゞスタの内容は、アドレスの䞊䜍郚分ずしお䜿甚されたす「X」、「Y」、「Z」
アドレスレゞスタは、「RAMPX」、「RAMPY」、「RAMPZ」特殊機胜ず連結されおいたす。
ワむドアドレスを取埗するには、それぞれ登録したす。 同様に、「RAMPD」は
盎接アドレス指定。

· スタヌトアップ コヌドは、「RAMP」特殊機胜レゞスタをれロで初期化したす。

・ もし AVR 名前付き 䜏所 スペヌス、名前付き 䜏所 スペヌス ゞェネリックたたは「__flash」以倖は
䜿甚するず、操䜜前に必芁に応じお「RAMPZ」が蚭定されたす。

· デバむスが 64@tie{KiB} より倧きい RAM をサポヌトし、コンパむラを倉曎する必芁がある堎合
「RAMPZ」は操䜜を実行し、「RAMPZ」は操䜜埌にれロにリセットされたす。

· デバむスに特定の「RAMP」レゞスタが付属しおいる堎合、ISR プロロヌグ/゚ピロヌグ
そのSFRを保存/埩元し、ISRコヌドが発生する可胜性がある堎合に備えおれロで初期化したす。
暗黙的にそれを䜿甚したす。

· 64@tie{KiB} より倧きい RAM は、AVR タヌゲットの GCC ではサポヌトされおいたせん。 䜿甚する堎合
16ビットアドレス範囲倖の堎所から読み取り、倉曎するむンラむンアセンブラ
「RAMP」レゞスタのXNUMX぀であるため、アクセス埌にれロにリセットする必芁がありたす。

AVRビルトむンマクロ

GCCは、ナヌザヌコヌドが存圚をテストできるように、いく぀かの組み蟌みマクロを定矩したす。
機胜の欠劂。 次の組み蟌みマクロのほずんどすべおがデバむスから掚定されたす
したがっお、「-mmcu=」コマンドラむン オプションによっおトリガヌされたす。

さらに倚くのAVR固有の組み蟌みマクロに぀いおは、を参照しおください。 AVR 名前付き 䜏所 スペヌス & AVR 内蔵
機胜.

「__AVR_ARCH__」
アヌキテクチャを識別するXNUMX進数に解決される組み蟌みマクロず
"-mmcu=mcu」 オプション。 可胜な倀は次のずおりです。

2、25、3、31、35、4、5、51、6、102、104、105、106、107

for MCU= "avr2"、 "avr25"、 "avr3"、 "avr31"、 "avr35"、 "avr4"、 "avr5"、 "avr51"、 "avr6"、
それぞれ「avrxmega2」、「avrxmega4」、「avrxmega5」、「avrxmega6」、「avrxmega7」。 もしも MCU
デバむスを指定するず、この組み蟌みマクロがそれに応じお蚭定されたす。 たずえば、
"-mmcu=atmega8" マクロは 4 に定矩されたす。

"__AVR_デバむス__"
「-mmcu=」の蚭定デバむス" デバむスの名前を反映するこの組み蟌みマクロを定矩したす。
たずえば、"-mmcu=atmega8" は組み蟌みマクロ "__AVR_ATmega8__" を定矩したす。
「-mmcu=attiny261a」は「__AVR_ATtiny261A__」などを定矩したす。

組み蟌みマクロの名前は、スキヌム「__AVR_」に埓いたす。デバむス__" コラボレヌ デバむス は
AVRナヌザヌマニュアルからのデバむス名。 の違い デバむス ビルトむンで
マクロず デバむス 「-mmcu=」でデバむス" 埌者は垞に小文字であるずいうこずです。

If デバむス デバむスではなく、「avr51」のようなコア アヌキテクチャにすぎない堎合、このマクロは
定矩されたせん。

「__AVR_XMEGA__」
デバむス/アヌキテクチャは、XMEGAファミリのデバむスに属しおいたす。

「__AVR_HAVE_ELPM__」
デバむスには「ELPM」呜什がありたす。

"__AVR_HAVE_ELPMX__"
デバむスには「ELPMRn、Z」 および「ELPMRn、Z + " 指瀺に埓っおください。

「__AVR_HAVE_MOVW__」
デバむスには、16ビットのレゞスタ-レゞスタ移動を実行するための「MOVW」呜什がありたす。

「__AVR_HAVE_LPMX__」
デバむスには「LPMRn、Z」 および「LPMRn、Z + " 指瀺に埓っおください。

「__AVR_HAVE_MUL__」
デバむスにはハヌドりェア乗算噚がありたす。

"__AVR_HAVE_JMP_CALL__"
デバむスには「JMP」および「CALL」呜什がありたす。 これは、
プログラムメモリの少なくずも16@tie{}KiB。

"__AVR_HAVE_EIJMP_EICALL__"
「__AVR_3_BYTE_PC__」
デバむスには「EIJMP」および「EICALL」呜什がありたす。 これはデバむスの堎合です
128 @ tie{}KiBを超えるプログラムメモリを備えおいたす。 これはたた、プログラムが
カりンタヌPCの幅は3 @tie{}バむトです。

「__AVR_2_BYTE_PC__」
プログラムカりンタヌPCの幅は2 @tie{}バむトです。 これは、最倧で
プログラムメモリの128@tie{}KiB。

"__AVR_HAVE_8BIT_SP__"
"__AVR_HAVE_16BIT_SP__"
スタックポむンタSPレゞスタは、によっお8ビットたたは16ビットレゞスタずしお扱われたす。
コンパむラ。 これらのマクロの定矩は、「-mtiny-stack」の圱響を受けたす。

「__AVR_HAVE_SPH__」
「__AVR_SP8__」
デバむスにSPHスタックポむンタの䞊䜍郚分特殊機胜レゞスタがあるか、
それぞれ8ビットのスタックポむンタ。 これらのマクロの定矩は、
"-mmcu=" ず "-mmcu=avr2" および "-mmcu=avr25" の堎合は "-msp8" によっおも。

「__AVR_HAVE_RAMPD__」
「__AVR_HAVE_RAMPX__」
「__AVR_HAVE_RAMPY__」
"__AVR_HAVE_RAMPZ__"
デバむスには、「RAMPD」、「RAMPX」、「RAMPY」、「RAMPZ」特殊機胜レゞスタがあり、
。

"__NO_INTERRUPTS__"
このマクロは、「-mno-interrupts」コマンド ラむン オプションを反映しおいたす。

「__AVR_ERRATA_SKIP__」
"__AVR_ERRATA_SKIP_JMP_CALL__"
䞀郚のAVRデバむスAT90S8515、ATmega103は、次の理由で32ビット呜什をスキップしおはなりたせん。
ハヌドりェアの正誀衚。 スキップ手順は、「SBRS」、「SBRC」、「SBIS」、「SBIC」、「CPSE」です。
XNUMX番目のマクロは、「__AVR_HAVE_JMP_CALL__」も蚭定されおいる堎合にのみ定矩されたす。

"__AVR_SFR_OFFSET __ =オフセット"
「IN」のようにI/O特殊機胜レゞスタを盎接アドレス指定できる呜什。
「OUT」、「SBI」などは、次の呜什でアドレス指定されおいるかのように、異なるアドレスを䜿甚する堎合がありたす。
「LD」や「STS」などのRAMにアクセスしたす。 このオフセットはデバむスアヌキテクチャに䟝存し、
それぞれのI/O @ tie {}アドレスを取埗するために、RAMアドレスから枛算されたす。

"__WITH_AVRLIBC__"
コンパむラは、AVR-Libcず䞀緒に䜿甚するように構成されおいたす。 を参照しおください
「--with-avrlibc」構成オプション。

ブラックフィン オプション

-mcpu =CPU[-シレビゞョン]
タヌゲットBlackfinプロセッサの名前を指定したす。 珟圚、 CPU のXNUMX぀になるこずができたす
bf512, bf514, bf516, bf518, bf522, bf523, bf524, bf525, bf526, bf527, bf531, bf532,
bf533, bf534, bf536, bf537, bf538, bf539, bf542, bf544, bf547, bf548, bf549, BF542M,
BF544M, BF547M, BF548M, BF549M, bf561, bf592.

オプション シレビゞョン タヌゲットBlackfinのシリコンリビゞョンを指定したす
プロセッサ。 察象ずなるシリコンリビゞョンで利甚可胜な回避策はすべお有効になっおいたす。
If シレビゞョン is なし、回避策は有効になっおいたせん。 もしも シレビゞョン is どれか、すべおの
タヌゲットプロセッサの回避策が有効になっおいたす。 「__SILICON_REVISION__」マクロ
は、のメゞャヌ番号ずマむナヌ番号を衚すXNUMX぀のXNUMX進数に定矩されたす。
シリコンリビゞョン。 もしも シレビゞョン is なし、「__SILICON_REVISION__」が定矩されおいたせん。
If シレビゞョン is どれか、「__SILICON_REVISION__」は0xffffずしお定矩されおいたす。 これなら
任意 シレビゞョン が䜿甚されおいない堎合、GCCは最新の既知のシリコンリビゞョンを想定しおいたす。
タヌゲットを絞ったBlackfinプロセッサ。

GCCは、指定されたプリプロセッサマクロを定矩したす CPU。 のために bfin゚ルフ ツヌルチェヌン、
このオプションにより、libglossによっお提䟛されるハヌドりェアBSPがリンクされたす。 -msim is
䞎えられおいたせん。

このオプションがない堎合、 bf532 デフォルトではプロセッサずしお䜿甚されたす。

のサポヌトに泚意しおください bf561 䞍完党です。 為に bf561、プリプロセッサマクロのみが
定矩された。

-msim
プログラムがシミュレヌタヌで実行されるこずを指定したす。 これにより、シミュレヌタが発生したす
リンクするlibglossによっお提䟛されるBSP。このオプションは、次の堎合にのみ有効です。 bfin゚ルフ
ツヌルチェヌン。 のような特定の他のオプション -mid-共有ラむブラリ & -mfdpic、 意味する
-msim.

-momit-リヌフフレヌムポむンタヌ
リヌフ関数のレゞスタにフレヌムポむンタを保持しないでください。 これにより、
フレヌムポむンタを保存、蚭定、埩元し、远加のレゞスタを䜜成する手順
リヌフ機胜で利甚できたす。 オプション -fomit-フレヌムポむンタヌ フレヌムを削陀したす
すべおの関数ぞのポむンタ。デバッグが難しくなる可胜性がありたす。

-mspecld-ç•°åžž
有効にするず、コンパむラは生成されたコヌドにが含たれおいないこずを確認したす
ゞャンプ呜什埌の投機的ロヌド。 このオプションを䜿甚する堎合、
「__WORKAROUND_SPECULATIVE_LOADS」が定矩されおいたす。

-mno-specld-ç•°åžž
投機的な負荷の発生を防ぐために䜙分なコヌドを生成しないでください。

-mcsync-ç•°åžž
有効にするず、コンパむラヌは、生成されたコヌドにCSYNCたたは
条件付き分岐埌のSSYNC呜什が早すぎたす。 このオプションを䜿甚する堎合、
「__WORKAROUND_SPECULATIVE_SYNCS」が定矩されおいたす。

-mno-csync-ç•°åžž
CSYNCたたはSSYNC呜什の発生を防ぐために䜙分なコヌドを生成しないでください
条件分岐の盎埌。

-mlow-64k
有効にするず、コンパむラは、党䜓が
プログラムはメモリの䜎い64kに収たりたす。

-mno-low-64k
プログラムが任意に倧きいず仮定したす。 これがデフォルトです。

-mstack-check-l1
uClinuxによっおL1スクラッチパッドメモリに配眮された情報を䜿甚しおスタックチェックを実行したす
カヌネル。

-mid-共有ラむブラリ
ラむブラリIDメ゜ッドを介しお共有ラむブラリをサポヌトするコヌドを生成したす。 これにより、
仮想メモリのない環境でむンプレヌスおよび共有ラむブラリを実行する堎合
管理。 このオプションは、 -fPIC。 ずずもに bfin゚ルフ タヌゲット、このオプションは
-msim.

-mno-id-共有ラむブラリ
IDベヌスの共有ラむブラリが䜿甚されおいるず想定しないコヌドを生成したす。 これは
デフォルト。

-mleaf-id-共有ラむブラリ
ラむブラリIDメ゜ッドを介しお共有ラむブラリをサポヌトするコヌドを生成したすが、
このラむブラリたたは実行可胜ファむルは、他のID共有ラむブラリに察しおリンクしたせん。
これにより、コンパむラヌはゞャンプず呌び出しに高速なコヌドを䜿甚できたす。

-mno-leaf-id-共有ラむブラリ
コンパむル䞭のコヌドがID共有ラむブラリにリンクしないず想定しないでください。
ゞャンプおよび呌び出しinsns甚に䜎速のコヌドが生成されたす。

-mshared-library-id = n
コンパむルされるIDベヌスの共有ラむブラリの識別番号を指定したす。
倀0を指定するず、よりコンパクトなコヌドが生成されたす。 他の倀を指定するず、
その番号の珟圚のラむブラリぞの割り圓おですが、これ以䞊のスペヌスや時間はありたせん-
このオプションを省略するよりも効率的です。

-msep-デヌタ
デヌタセグメントをメモリの別の領域に配眮できるようにするコヌドを生成する
テキストセグメントから。 これにより、次のような環境での実行が可胜になりたす。
テキストセクションに察する再配眮を排陀するこずによる仮想メモリ管理。

-mno-sep-デヌタ
デヌタセグメントがテキストセグメントの埌に続くず想定するコヌドを生成したす。 これは
デフォルト。

-mlong-calls
-mno-long-calls
最初にのアドレスをロヌドするこずにより、関数呌び出しを実行するようにコンパむラヌに指瀺したす。
関数をレゞスタに入れおから、このレゞスタでサブルヌチン呌び出しを実行したす。 これ
タヌゲット機胜がの24ビットアドレス指定範囲倖にある堎合は、スむッチが必芁です。
サブルヌチン呌び出し呜什のオフセットベヌスのバヌゞョン。

この機胜はデフォルトでは有効になっおいたせん。 指定する -mno-long-calls それらを埩元する
デフォルトの動䜜。 これらのスむッチは、コンパむラが生成する方法に圱響を䞎えないこずに泚意しおください
関数ポむンタを介しお関数呌び出しを凊理するコヌド。

-mfast-fp
高速浮動小数点ラむブラリずリンクしたす。 このラむブラリは、IEEEの䞀郚を緩和したす
Not-a-NumberNANに察しお入力をチェックするための浮動小数点暙準のルヌル
パフォヌマンスぞの関心。

-minline-plt
知られおいない関数ぞの関数呌び出しでPLT゚ントリのむンラむン化を有効にする
ロヌカルにバむンドしたす。 なしでは効果がありたせん -mfdpic.

-マルチコア
マルチコアBlackfinプロセッサ甚のスタンドアロンアプリケヌションを構築したす。 このオプションにより、
䜿甚するマルチコアをサポヌトする適切な開始ファむルずリンクスクリプト、および
マクロ「__BFIN_MULTICORE」。 でのみ䜿甚できたす -mcpu = bf561[-シレビゞョン].

このオプションは、 -mcorea or -マコレブ、XNUMX぀のアプリケヌションを遞択したす-
コアごずのプログラミングモデル。 それなし -mcorea or -マコレブ
シングルアプリケヌション/デュアルコアプログラミングモデルが䜿甚されたす。 このモデルでは、メむン
コアBの関数は「coreb_main」ずいう名前にする必芁がありたす。

このオプションを䜿甚しない堎合は、シングルコアアプリケヌションプログラミングモデルが䜿甚されたす。

-mcorea
561぀のアプリケヌションごずにXNUMX぀のアプリケヌションを䜿甚する堎合は、BFXNUMXのコアA甚のスタンドアロンアプリケヌションを構築したす。
コアプログラミングモデル。 Coreをサポヌトするために、適切な開始ファむルずリンクスクリプトが䜿甚されたす
A、マクロ「__BFIN_COREA」が定矩されおいたす。 このオプションはでのみ䜿甚できたす
ず組み合わせお -マルチコア.

-マコレブ
561぀のアプリケヌションごずにXNUMX぀のアプリケヌションを䜿甚する堎合は、BFXNUMXのコアB甚のスタンドアロンアプリケヌションを構築したす。
コアプログラミングモデル。 Coreをサポヌトするために、適切な開始ファむルずリンクスクリプトが䜿甚されたす
B、およびマクロ「__BFIN_COREB」が定矩されおいたす。 このオプションを䜿甚する堎合、「coreb_main」
「メむン」の代わりに䜿甚する必芁がありたす。 このオプションは、ず組み合わせおのみ䜿甚できたす
-マルチコア.

-msdram
SDRAM甚のスタンドアロンアプリケヌションを構築したす。 適切な開始ファむルずリンクスクリプトが䜿甚されたす
アプリケヌションをSDRAMに配眮し、マクロ「__BFIN_SDRAM」を定矩したす。 The
ロヌダヌは、アプリケヌションをロヌドする前にSDRAMを初期化する必芁がありたす。

-micplb
ICPLBが実行時に有効になっおいるず想定したす。 これは特定の異垞に圱響を及がしたす
回避策。 Linuxタヌゲットの堎合、デフォルトではICPLBが有効になっおいるず想定しおいたす。 為に
スタンドアロンアプリケヌションのデフォルトはオフです。

C6X オプション

-XNUMX月=名
これは、タヌゲットアヌキテクチャの名前を指定したす。 GCCはこの名前を䜿甚しお決定したす
アセンブリコヌドを生成するずきに発行できる呜什の皮類。 蚱容される
名前は次のずおりです。 c62x, c64x, c64x +, c67x, c67x +, c674x.

-mbig-゚ンディアン
ビッグ゚ンディアンタヌゲットのコヌドを生成したす。

-mlittle-゚ンディアン
リトル゚ンディアンタヌゲットのコヌドを生成したす。 これがデフォルトです。

-msim
シミュレヌタに適したスタヌトアップファむルずリンカスクリプトを遞択したす。

-msdata = default
小さなグロヌバル デヌタず静的デヌタを .neardata が指すセクション
「B14」を登録したす。 初期化されおいない小さなグロヌバルおよび静的デヌタを .bss セクション、
に隣接しおいる .neardata セクション。 小さな読み取り専甚デヌタを .rodata
セクション。 倧きなデヌタに䜿甚される察応するセクションは次のずおりです。 .fardata, 。遠い
& .const.

-msdata = all
小さなオブゞェクトだけでなく、すべおのデヌタを小さなデヌタ甚に予玄されたセクションに配眮し、
それらにアクセスするには、「B14」レゞスタに関連するアドレス指定を䜿甚したす。

-msdata = none
小さなデヌタ甚に予玄されおいるセクションを䜿甚せず、絶察アドレスを䜿甚しお
すべおのデヌタにアクセスしたす。 初期化されたすべおのグロヌバルおよび静的デヌタを .fardata セクション、
およびすべおの初期化されおいないデヌタ 。遠い セクション。 すべおの定数デヌタを .const
のセクションから無料でダりンロヌドできたす。

CRIS オプション

これらのオプションは、CRISポヌト甚に特別に定矩されおいたす。

-XNUMX月=アヌキテクチャタむプ
-mcpu =アヌキテクチャタむプ
指定されたアヌキテクチャのコヌドを生成したす。 の遞択肢 アヌキテクチャタむプ  
v3, v8 & v10 それぞれETRAX4、ETRAX 100、およびETRAX100LX甚。 デフォルトは v0
cris-axis-linux-gnuを陀いお、デフォルトは v10.

-mtune =アヌキテクチャタむプ
に調敎する アヌキテクチャタむプ 生成されたコヌドに該圓するすべおのものただし、
ABIず利甚可胜な䞀連の指瀺。 の遞択肢 アヌキテクチャタむプ  
ず同じ -XNUMX月=アヌキテクチャタむプ.

-mmax-stack-frame =n
関数のスタックフレヌムが超過したずきに譊告したす n バむト

-metrax4
-metrax100
オプション -metrax4 & -metrax100 の同矩語です -march = v3 & -march = v8
。

-mmul-バグ-回避策
-mno-mul-bug-回避策
CPUモデルの「muls」および「mulu」呜什のバグを回避したす。
適甚されたす。 このオプションはデフォルトでアクティブになっおいたす。

-mpdebug
アセンブリコヌドでCRIS固有の詳现なデバッグ関連情報を有効にしたす。 これ
オプションには、をオフにする効果もありたす #NO_APP フォヌマットされたコヌドむンゞケヌタヌ
アセンブリファむルの先頭にあるアセンブラ。

-mcc-init
前の呜什からの条件コヌドの結果を䜿甚しないでください。 垞に比范を発行し、
条件コヌドを䜿甚する前に、指瀺をテストしおください。

-mno-副䜜甚
ポストアドレッシングモヌド以倖のアドレッシングモヌドでは、副䜜甚のある呜什を出力しないでください。
むンクリメント。

-mstack-align
-mno-stack-align
-mdata-align
-mno-data-align
-mconst-align
-mno-const-align
これらのオプションNO- オプションスタックフレヌムの配眮配眮の削陀、
単䞀デヌタアクセスの最倧サむズに合わせお調敎される個々のデヌタず定数
遞択したCPUモデル甚。 デフォルトでは、32ビットアラむメントを調敎したす。 ABI
構造レむアりトなどの詳现は、これらのオプションの圱響を受けたせん。

-m32ビット
-m16ビット
-m8ビット
䞊蚘のstack-data-およびconst-alignオプションず同様に、これらのオプションは
スタックフレヌム、曞き蟌み可胜なデヌタ、および定数はすべお32ビット、16ビット、たたは8ビットで敎列されたす。
デフォルトは32ビットアラむメントです。

-mno-プロロヌグ-゚ピロヌグ
-mprologue-゚ピロヌグ
-mno-プロロヌグ-゚ピロヌグ、蚭定した通垞の関数プロロヌグず゚ピロヌグ
スタックフレヌムは省略され、リタヌン呜什たたはリタヌンシヌケンスは省略されたす。
コヌドで生成されたす。 このオプションは、目芖怜査ず䞀緒にのみ䜿甚しおください。
コンパむルされたコヌド呌び出し保存されたレゞスタヌが必芁な堎合、譊告や゚ラヌは生成されたせん
保存するか、ロヌカル倉数のストレヌゞを割り圓おる必芁がありたす。

-mno-gotplt
-mgotplt
-fpic & -fPIC、ロヌドする呜什シヌケンスを生成しない生成しない
他の埓来のではなく、GOTのPLT郚分からの関数のアドレス
アヌキテクチャPLTぞの呌び出し。 デフォルトは -mgotplt.

-メルフ
cris-axis-elfおよびcris-axis-linux-gnuでのみ認識されるレガシヌno-opオプション
タヌゲット。

-mlinux
埓来のno-opオプションは、cris-axis-linux-gnuタヌゲットでのみ認識されたす。

-シム
このオプションは、cris-axis-elfで認識され、入出力ずリンクするように調敎されたす。
シミュレヌタラむブラリの関数。 コヌド、初期化されたデヌタ、およびれロで初期化されたデヌタ
連続しお割り圓おられたす。

-sim2
いいね -シム、ただし、リンカヌオプションを枡しお、初期化されたデヌタを0x40000000およびれロに配眮したす-
0x80000000でデヌタを初期化したした。

CR16 オプション

これらのオプションは、CR16ポヌト甚に特別に定矩されおいたす。

-mmac
積和呜什の䜿甚を有効にしたす。 デフォルトでは無効になっおいたす。

-mcr16cplus
-mcr16c
CR16CたたはCR16C+アヌキテクチャのコヌドを生成したす。 CR16C+アヌキテクチャがデフォルトです。

-msim
シミュレヌタず互換性のあるラむブラリlibsim.aをリンクしたす。 ELFに適甚可胜
コンパむラのみ。

-ミント32
æ•Žæ•°åž‹ã‚’32ビット幅ずしお遞択したす。

-mbit-ops
ビット操䜜甚の「sbit」/「cbit」呜什を生成したす。

-mdata-model =
デヌタモデルを遞択したす。 の遞択肢   近く, 遠く or ミディアム. ミディアム デフォルトです。
しかしながら、 遠く で無効です -mcr16c、CR16Cアヌキテクチャは、
遠いデヌタモデル。

ダヌりィン オプション

これらのオプションは、Darwinオペレヌティングシステムを実行しおいるすべおのアヌキテクチャに察しお定矩されおいたす。

DarwinのFSFGCCは、「ファット」オブゞェクトファむルを䜜成したせん。 のオブゞェクトファむルを䜜成したす
GCCがタヌゲットずしお構築された単䞀のアヌキテクチャ。 ダヌりィンのAppleのGCCは「倪った」ものを䜜成したす
耇数の堎合はファむル -アヌチ オプションが䜿甚されたす。 これは、コンパむラたたはリンカを実行するこずによっお行われたす。
耇数回、結果を䞀緒に結合したす リポ.

䜜成されたファむルのサブタむプ ppc7400 or ppc970 or i686によっお決定されたす
GCCがタヌゲットにしおいるISAを指定するフラグ。 -mcpu or -行進を遞択したす。
-force_cpusubtype_ALL オプションを䜿甚しおこれをオヌバヌラむドできたす。

ダヌりィンツヌルは、ISAの䞍䞀臎が提瀺された堎合の動䜜が異なりたす。 The
アセンブラ、 as、のサブタむプに有効な呜什の䜿甚のみを蚱可したす
生成しおいるファむルであるため、64ビット呜什を ppc750 オブゞェクトファむル。 The
共有ラむブラリのリンカヌ、 / usr / bin / libtool、倱敗し、芁求された堎合ぱラヌを出力したす
入力ファむルよりも制限の少ないサブタむプで共有ラむブラリを䜜成したす
むンスタンス、入れようずしおいたす ppc970 のオブゞェクトファむル ppc7400 図曞通。 のリンカヌ
実行可胜ファむル、 ld、実行可胜ファむルにそのいずれかの最も制限的なサブタむプを静かに䞎えたす
入力ファむル。

-FDIR
フレヌムワヌクディレクトリを远加したす DIR 怜玢するディレクトリのリストの先頭に
ヘッダヌファむル甚。 これらのディレクトリは、によっお指定されたディレクトリずむンタヌリヌブされたす -I
オプションで、巊から右の順序でスキャンされたす。

フレヌムワヌクディレクトリは、フレヌムワヌクを含むディレクトリです。 フレヌムワヌクは
のあるディレクトリ ヘッダ および プラむベヌトヘッダヌ その䞭に盎接含たれおいるディレクトリ
で終わる 。フレヌムワヌク。 フレヌムワヌクの名前は、このディレクトリの名前です。
  。フレヌムワヌク。 フレヌムワヌクに関連付けられおいるヘッダヌは、これらXNUMX぀のうちのXNUMX぀にありたす。
ディレクトリ、 ヘッダ 最初に怜玢されたす。 サブフレヌムワヌクはフレヌムワヌクです
フレヌムワヌク内にあるディレクトリ フレヌムワヌク ディレクトリ。 サブフレヌムワヌクを含む
ヘッダヌは、サブフレヌムワヌクを含むフレヌムワヌクのヘッダヌにのみ衚瀺できたす。
兄匟サブフレヌムワヌクヘッダヌ内。 XNUMX぀のサブフレヌムワヌクは、
同じフレヌムワヌク。 サブフレヌムワヌクは、フレヌムワヌクず同じ名前であっおはなりたせん。 a
これに違反した堎合、譊告が発行されたす。 珟圚、サブフレヌムワヌクは持぀こずができたせん
サブフレヌムワヌク; 将来的には、これをサポヌトするためにメカニズムが拡匵される可胜性がありたす。 The
暙準フレヌムワヌクはで芋぀けるこずができたす /システム/ラむブラリ/フレヌムワヌク &
/ラむブラリ/フレヌムワヌク。 むンクルヌドの䟋は「#include "、
コラボレヌ フレヌムワヌク フレヌムワヌクの名前を瀺し、 header.h にありたす
プラむベヌトヘッダヌ or ヘッダ ディレクトリにありたす。

-iframeworkDIR
いいね -F ただし、ディレクトリはシステムディレクトリずしお扱われたす。 䞻な違い
この間 -iframework & -F それは -iframework コンパむラは譊告したせん
経由で芋぀かったヘッダヌファむルに含たれる構成に぀いお DIR。 このオプションは有効です
Cファミリヌの蚀語のみ。

-突っ蟌んだ
䜿甚されおいるシンボルのデバッグ情報を出力したす。 スタブデバッグ圢匏の堎合、
これにより、 -feliminate-未䜿甚のデバッグシンボル。 これはデフォルトでオンになっおいたす。

-gfull
すべおのシンボルずタむプのデバッグ情報を出力したす。

-mmacosx-version-min =バヌゞョン
この実行可胜ファむルが実行されるMacOSXの最も叀いバヌゞョンは バヌゞョン。 兞型的な
の倀 バヌゞョン 10.1、10.2、および10.3.9を含みたす。

コンパむラがデフォルトでシステムのヘッダヌを䜿甚するように構築されおいる堎合、デフォルトでは
このオプションは、コンパむラが実行されおいるシステムバヌゞョンです。それ以倖の堎合は、
デフォルトでは、同じ数のシステムおよびコヌドベヌスず互換性のある遞択を行いたす
可胜。

-mkernel
カヌネル開発モヌドを有効にしたす。 The -mkernel オプションセット -静的, -fno-common,
-fno-use-cxa-atexit, -fno-䟋倖, -fno-非呌び出し䟋倖, -fapple-kext,
-fno-匱い & -fno-rtti 該圓する堎合。 このモヌドも蚭定したす -mno-altivec,
-msoft-float, -fno-builtin & -mlong-枝 PowerPCタヌゲットの堎合。

-mone-byte-bool
のデフォルトを䞊曞きしたす ブヌル そのため、 sizeof(ブヌル倀)==1。 デフォルトでは sizeof(ブヌル倀) is 4
Darwin/PowerPC 甚にコンパむルする堎合ず 1 Darwin/x86 甚にコンパむルする堎合、このオプション
x86 には圱響したせん。

譊告   -mone-byte-bool スむッチを䜿甚するず、GCCはバむナリではないコヌドを生成したす
そのスむッチなしで生成されたコヌドず互換性がありたす。 このスむッチを䜿甚するには、
システムラむブラリを含む、プログラム内の他のすべおのモゞュヌルを再コンパむルしたす。 これを䜿っお
デフォルト以倖のデヌタモデルに準拠するように切り替えたす。

-mfix ず継続
-修正しお続行
-findirect-デヌタ
GDBに次のこずを蚱可するなど、迅速なタヌンアラりンド開発に適したコヌドを生成したす
".o" ファむルを実行䞭のプログラムに動的にロヌドしたす。 -findirect-デヌタ &
-修正しお続行 䞋䜍互換性のために提䟛されおいたす。

-all_load
静的アヌカむブラむブラリのすべおのメンバヌをロヌドしたす。 男を参照しおください ld1詳现に぀いおは。

-arch_errors_fatal
間違ったアヌキテクチャを持぀ファむルに関係する゚ラヌを臎呜的にしたす。

-bind_at_load
ダむナミックリンカがすべおをバむンドするように出力ファむルにマヌクを付けたす
ファむルがロヌドたたは起動されたずきの未定矩の参照。

-バンドル
Mach-oバンドル圢匏のファむルを䜜成したす。 男を参照しおください ld1詳现に぀いおは。

-バンドル_ロヌダヌ 実行ファむル
このオプションは、 実行ファむル ビルド出力ファむルが読み蟌たれたす
リンクされおいたす。 男を参照しおください ld1詳现に぀いおは。

-ダむナミックリブ
このオプションを枡すず、GCCは実行可胜ファむルではなくダむナミックラむブラリを生成したす。
ダヌりィンを䜿甚したリンク リブツヌル

-force_cpusubtype_ALL
これにより、GCCの出力ファむルに 党お サブタむプ、によっお制埡されるものの代わりに
  -mcpu or -行進 オプションを遞択したす。

-allowable_client クラむアント名
-クラむアント名
-compatibility_version
-珟行版
-デッド_ストリップ
-䟝存関係ファむル
-dylib_file
-dylinker_install_name
-動的
-exported_symbols_list
-ファむルリスト
- flat_namespace
-force_ flat_namespace
-headerpad_max_install_names
-image_base
-初期化
-むンストヌル名
-keep_private_externs
-multi_module
-multiply_define
-multiply_define_unused
-noall_load
-no_dead_strip_inits_and_terms
-nofixprebinding
-nomultidefs
-noprebind
-nosegリンク線集
-pagezero_size
-事前バむンド
-prebind_all_twolevel_modules
-private_bundle
-read_only_relocs
-sectalign
-sectobjectsymbols
-なぜロヌド
-seg1addr
-sectcreate
-sectobjectsymbols
-セクタヌダヌ
-segaddr
-segs_read_only_addr
-segs_read_write_addr
-seg_addr_table
-seg_addr_table_filename
-seglinkedit
-segprot
-segs_read_only_addr
-segs_read_write_addr
-single_module
-静的
-サブラむブラリ
-サブ傘
-twolevel_namespace
-傘
-未定矩
-unexported_symbols_list
-weak_reference_mismatches
-Whatsloaded
これらのオプションはDarwinリンカヌに枡されたす。 ダヌりィンリンカヌのマニュアルペヌゞでは、
それらを詳现に瀺したす。

12月 アルファ オプション

ボヌマン -m オプションは、DECAlpha実装甚に定矩されおいたす。

-mno-゜フトフロヌト
-msoft-float
浮動小数点のハヌドりェア浮動小数点呜什を䜿甚する䜿甚しない
オペレヌション。 い぀ -msoft-float が指定されおいる堎合、 libgcc.a 実行するために䜿甚されたす
浮動小数点挔算。 それらが゚ミュレヌトするルヌチンに眮き換えられない限り
浮動小数点挔算、たたはそのような゚ミュレヌションを呌び出すような方法でコンパむルされた
ルヌチンの堎合、これらのルヌチンは浮動小数点挔算を発行したす。 コンパむルする堎合
浮動小数点挔算のないAlphaの堎合、ラむブラリがビルドされおいるこずを確認する必芁がありたす
それらを呌び出さないように。

浮動小数点挔算を䜿甚しないAlpha実装には、次のものが必芁であるこずに泚意しおください。
浮動小数点レゞスタ。

-MFP-REG
-mno-fp-regs
浮動小数点レゞスタセットを䜿甚する䜿甚しないコヌドを生成したす。 -mno-fp-regs
含意する -msoft-float。 浮動小数点レゞスタセットを䜿甚しない堎合は、浮動小数点
オペランドは、敎数および浮動小数点であるかのように敎数レゞスタに枡されたす
結果は$f0ではなく$0で枡されたす。 これは非暙準の呌び出しシヌケンスであるため、
コンパむルされたコヌドによっお呌び出される浮動小数点匕数たたは戻り倀を持぀関数
  -mno-fp-regs たた、そのオプションを䜿甚しおコンパむルする必芁がありたす。

このオプションの䞀般的な䜿甚法は、䜿甚しないカヌネルを構築するこずです。
保存および埩元ではなく、浮動小数点レゞスタヌ。

-ミィヌ
Alphaアヌキテクチャは、最倧に最適化された浮動小数点ハヌドりェアを実装したす
パフォヌマンス。 これは、IEEE浮動小数点暙準にほが準拠しおいたす。 でも、
完党に準拠するには、゜フトりェアによる支揎が必芁です。 このオプションはコヌドを生成したす
完党にIEEE準拠のコヌド 以䞋は陀く その 䞍正確なフラグ 維持されたせん以䞋を参照。
このオプションをオンにするず、プリプロセッサマクロ「_IEEE_FP」が
コンパむル。 結果のコヌドは効率が悪くなりたすが、正しくサポヌトできたす
非正芏化数ず、非正芏化数やプラス/マむナスなどの䟋倖的なIEEE倀
無限倧。 他のAlphaコンパむラはこのオプションを呌び出したす -ieee_with_no_inexact.

-mieee-with-䞍正確
これは -ミィヌ 生成されたコヌドもIEEEを維持するこずを陀いお 䞍正確なフラグ.
このオプションをオンにするず、生成されたコヌドは完党に準拠したIEEEを実装したす。
算数。 「_IEEE_FP」に加えお、「_IEEE_FP_EXACT」はプリプロセッサマクロずしお定矩されおいたす。
䞀郚のAlpha実装では、結果のコヌドの実行速床が倧幅に䜎䞋する堎合がありたす。
デフォルトで生成されるコヌド。 に䟝存するコヌドはほずんどないので
䞍正確なフラグ、通垞はこのオプションを指定しないでください。 他のAlphaコンパむラは
このオプション -ieee_with_inexact.

-mfp-trap-mode =トラップモヌド
このオプションは、有効にする浮動小数点関連のトラップを制埡したす。 その他のアルファ
コンパむラはこのオプションを呌び出したす -fptm トラップモヌド。 トラップモヌドはXNUMX぀のうちのXNUMX぀に蚭定できたす
倀

n これはデフォルトの通垞の蚭定です。 有効になっおいるトラップは
゜フトりェアで無効にできないものれロ陀算トラップなど。

u によっお有効にされたトラップに加えお n、アンダヌフロヌトラップも有効になりたす。

su いいね u、ただし、呜什は゜フトりェアの完了に察しお安党であるずマヌクされおいたすを参照
詳现に぀いおは、Alphaアヌキテクチャのマニュアルを参照しおください。

オン いいね su、ただし、䞍正確なトラップも有効になっおいたす。

-mfp-rounding-mode =䞞めモヌド
IEEE䞞めモヌドを遞択したす。 他のAlphaコンパむラはこのオプションを呌び出したす -fprm
䞞めモヌドを遞択したす。 䞞めモヌド 次のいずれかになりたす。

n 通垞のIEEE䞞めモヌド。 浮動小数点数は、最も近い数倀に䞞められたす
同点の堎合は、マシン番号たたは偶数マシン番号に向かっお。

m マむナス無限倧に向かっお䞞めたす。

c 切り刻たれた䞞めモヌド。 浮動小数点数はれロに向かっお䞞められたす。

d 動的䞞めモヌド。 浮動小数点制埡レゞスタのフィヌルドFPCRを参照しおください
Alphaアヌキテクチャリファレンスマニュアルは、有効な䞞めモヌドを制埡したす。 C
ラむブラリは、プラス無限倧に䞞めるためにこのレゞスタを初期化したす。 したがっお、
プログラムが倉曎しない限り FPCR, d プラス方向のラりンドに察応
無限。

-mtrap-precision =トラップ粟床
Alphaアヌキテクチャでは、浮動小数点トラップは䞍正確です。 これは、
゜フトりェア支揎フロヌティングトラップずプログラムから回埩するこずは䞍可胜です
通垞、実行を終了する必芁がありたす。 GCCは、支揎できるコヌドを生成できたす
オペレヌティングシステムのトラップハンドラヌは、原因ずなった正確な堎所を特定したす。
浮動小数点トラップ。 アプリケヌションの芁件に応じお、異なる
粟床のレベルを遞択できたす。

p プログラムの粟床。 このオプションはデフォルトであり、トラップハンドラヌのみが実行できるこずを意味したす
浮動小数点䟋倖の原因ずなったプログラムを特定したす。

f 関数の粟床。 トラップハンドラヌは、原因ずなった関数を特定できたす。
浮動小数点䟋倖。

i 呜什粟床。 トラップハンドラヌは、次のような正確な呜什を刀別できたす。
浮動小数点䟋倖が発生したした。

他のAlphaコンパむラは、ず呌ばれる同等のオプションを提䟛したす -scope_safe &
-再開_安党.

-mieee-準拠
このオプションは、生成されたコヌドをIEEE準拠ずしおマヌクしたす。 このオプションは䜿甚しないでください
指定しない限り -mtrap-precision = i そしおどちらか -mfp-trap-mode = su or
-mfp-trap-mode = sui。 その唯䞀の効果は、ラむンを攟出するこずです .eflag 48 関数内
生成されたアセンブリファむルのプロロヌグ。

-mbuild-定数
通垞、GCCは32ビットたたは64ビットの敎数定数を調べお、それを構築できるかどうかを確認したす
XNUMX぀たたはXNUMX぀の呜什の小さな定数から。 できない堎合は、
リテラルずしお定数であり、実行時にデヌタセグメントからロヌドするコヌドを生成したす。

このオプションを䜿甚しお、GCCに構築を芁求したす を たずえコヌドを䜿甚する敎数定数
より倚くの呜什が必芁です最倧はXNUMX぀です。

通垞、このオプションを䜿甚しお、共有ラむブラリの動的ロヌダヌを構築したす。 それ自䜓
共有ラむブラリの堎合、倉数を芋぀ける前にメモリ内に再配眮する必芁がありたす。
独自のデヌタセグメントの定数。

-mbwx
-mno-bwx
-mcix
-mno-cix
-mfix
-mno-修正
-mmax
-mno-max
オプションのBWX、CIX、FIX、およびMAXを䜿甚するためにGCCがコヌドを生成する必芁があるかどうかを瀺したす
呜什セット。 デフォルトでは、CPUでサポヌトされおいる呜什セットを䜿甚したす
経由で指定されたタむプ -mcpu = オプションたたはGCCが構築されたCPUのオプションない堎合
指定。

-mfloat-vax
-mfloat-ieee
代わりにVAXFおよびG浮動小数点挔算を䜿甚する䜿甚しないコヌドを生成したす
IEEEの単粟床および倍粟床。

-mexplicit-relocs
-mno-explicit-relocs
叀いAlphaアセンブラは、経由する以倖にシンボルの再配眮を生成する方法を提䟛しおいたせんでした
アセンブラマクロ。 これらのマクロを䜿甚するず、最適な呜什スケゞュヌリングができなくなりたす。
バヌゞョン2.12以降のGNUbinutilsは、コンパむラが次のこずを実行できるようにする新しい構文をサポヌトしおいたす。
どの再配眮をどの呜什に適甚するかを明瀺的にマヌクしたす。 このオプションは
GCCはアセンブラの機胜を怜出するため、デバッグに最も圹立ちたす。
が構築され、それに応じおデフォルトが蚭定されたす。

-msmall-デヌタ
-mlarge-デヌタ
日時 -mexplicit-relocs が有効である堎合、静的デヌタには次の方法でアクセスしたす gp盞察
移転。 い぀ -msmall-デヌタ が䜿甚される堎合、8バむト以䞋のオブゞェクトが配眮されたす
a 小さい デヌタ ゚リア 「.sdata」および「.sbss」セクションおよび16ビットを介しおアクセスされたす
$gpレゞスタからの再配眮。 これにより、小さなデヌタ領域のサむズが次のように制限されたす。
64KBですが、単䞀の呜什を介しお倉数に盎接アクセスできたす。

デフォルトは -mlarge-デヌタ。 このオプションを䜿甚するず、デヌタ領域はすぐ䞋に制限されたす
2GB。 2GBを超えるデヌタを必芁ずするプログラムは、「malloc」たたは「mmap」を䜿甚しお
プログラムのデヌタセグメントではなく、ヒヌプにデヌタを割り圓おたす。

共有ラむブラリのコヌドを生成する堎合、 -fpic 含意する -msmall-デヌタ & -fPIC
含意する -mlarge-デヌタ.

-msmall-text
-拡倧テキスト
日時 -msmall-text が䜿甚される堎合、コンパむラはプログラム党䜓のコヌドを想定したす
たたは共有ラむブラリは4MBに収たるため、分岐呜什で到達可胜です。
日時 -msmall-デヌタ が䜿甚される堎合、コンパむラはすべおのロヌカルシンボルが
同じ$gp倀であるため、関数に必芁な呜什の数を枛らすこずができたす
4から1に呌び出したす。

デフォルトは -拡倧テキスト.

-mcpu =cpu_type
マシンタむプの呜什セットず呜什スケゞュヌリングパラメヌタを蚭定したす
cpu_type。 次のいずれかを指定できたす EV スタむル名たたは察応するチップ番号。
GCCは、EV4、EV5、およびEV6ファミリのプロセッサず
指定したプロセッサからの呜什セットのデフォルト倀を遞択したす。 もしも
プロセッサタむプを指定しない堎合、GCCはデフォルトでプロセッサの
コンパむラが構築されたした。

サポヌトされおいる倀 cpu_type  

ev4
ev45
21064
EV4ずしおスケゞュヌルされ、呜什セット拡匵はありたせん。

ev5
21164
EV5ずしおスケゞュヌルされ、呜什セット拡匵はありたせん。

ev56
21164a
EV5ずしおスケゞュヌルし、BWX拡匵をサポヌトしたす。

PCA56
21164pc
21164PC
EV5ずしおスケゞュヌルし、BWXおよびMAX拡匵機胜をサポヌトしたす。

ev6
21264
EV6ずしおスケゞュヌルし、BWX、FIX、およびMAX拡匵機胜をサポヌトしたす。

ev67
21264a
EV6ずしおスケゞュヌルし、BWX、CIX、FIX、およびMAX拡匵機胜をサポヌトしたす。

ネむティブツヌルチェヌンも䟡倀をサポヌトしたす ネむティブ、最適なアヌキテクチャを遞択したす
ホストプロセッサのオプション。 -mcpu = native GCCが認識しない堎合は効果がありたせん
プロセッサ。

-mtune =cpu_type
マシンタむプの呜什スケゞュヌリングパラメヌタのみを蚭定したす cpu_typeを遞択したす。
呜什セットは倉曎されたせん。

ネむティブツヌルチェヌンも䟡倀をサポヌトしたす ネむティブ、最適なアヌキテクチャを遞択したす
ホストプロセッサのオプション。 -mtune = native GCCが認識しない堎合は効果がありたせん
プロセッサ。

-mmemory-latency =時間
次のように、スケゞュヌラが䞀般的なメモリ参照に察しお想定するレむテンシを蚭定したす。
アプリケヌション。 この数は、䜿甚されるメモリアクセスパタヌンに倧きく䟝存したす
アプリケヌションずマシンの倖郚キャッシュのサむズによっお異なりたす。

の有効なオプション 時間  

数
クロックサむクルを衚すXNUMX進数。

L1
L2
L3
メむン
コンパむラには、「䞀般的な」EV4およびのクロックサむクル数の芋積もりが含たれおいたす。
レベル5、1、および2キャッシュ甚のEV3ハヌドりェアDcache、Scache、および
Bcache、およびメむンメモリぞ。 L3はEV5でのみ有効であるこずに泚意しおください。

FR30 オプション

これらのオプションは、FR30ポヌト甚に特別に定矩されおいたす。

-msmall-モデル
小さなアドレス空間モデルを䜿甚したす。 これにより、より小さなコヌドが生成される可胜性がありたすが、
すべおのシンボリック倀ずアドレスが20ビット範囲に収たるようにしたす。

-mno-lsim
ランタむムサポヌトが提䟛されおいるため、を含める必芁はないず想定したす。
シミュレヌタラむブラリlibsim.aリンカヌコマンドラむン。

FRV オプション

-mgpr-32
最初の32個の汎甚レゞスタのみを䜿甚しおください。

-mgpr-64
64個すべおの汎甚レゞスタを䜿甚したす。

-MFPR-32
最初の32個の浮動小数点レゞスタのみを䜿甚しおください。

-MFPR-64
64個の浮動小数点レゞスタすべおを䜿甚したす。

-mhard-float
浮動小数点挔算にはハヌドりェア呜什を䜿甚しおください。

-msoft-float
浮動小数点挔算にはラむブラリルヌチンを䜿甚したす。

-malloc-cc
条件コヌドレゞスタを動的に割り圓おたす。

-mfixed-cc
条件コヌドレゞスタを動的に割り圓おようずせず、「icc0」ず
「fcc0」。

-mdword
ダブルワヌドinsnsを䜿甚するようにABIを倉曎したす。

-mno-dword
ダブルワヌド呜什は䜿甚しないでください。

-mdouble
浮動小数点のdouble呜什を䜿甚したす。

-mno-double
浮動小数点のdouble呜什は䜿甚しないでください。

-メディア
メディアの指瀺を䜿甚しおください。

-mno-メディア
メディアの指瀺を䜿甚しないでください。

-ムムラッド
乗算および加算/枛算の呜什を䜿甚したす。

-mno-ムラッド
乗算および加算/枛算の呜什は䜿甚しないでください。

-mfdpic
FDPIC ABIを遞択したす。これは、関数蚘述子を䜿甚しおぞのポむンタヌを衚したす。
機胜。 PIC / PIE関連のオプションがない堎合は、 -fPIE -fpic or
-fpie、GOT゚ントリず小さなデヌタがGOTから12ビットの範囲内にあるこずを前提ずしおいたす
ベヌスアドレス; ず -fPIC or -fPIE、GOTオフセットは32ビットで蚈算されたす。 ずずもに
bfin゚ルフ タヌゲット、このオプションは -msim.

-minline-plt
知られおいない関数ぞの関数呌び出しでPLT゚ントリのむンラむン化を有効にする
ロヌカルにバむンドしたす。 なしでは効果がありたせん -mfdpic。 次の堎合、デフォルトで有効になっおいたす
速床の最適化ず共有ラむブラリのコンパむル぀たり、 -fPIC or -fpic、たたは
次のような最適化オプションの堎合 -O3 以䞊がコマンドラむンに存圚したす。

-mTLS
スレッドロヌカルコヌドを生成するずきは、倧きなTLSセグメントを想定したす。

-mtls
スレッドロヌカルコヌドを生成するずきは、倧きなTLSセグメントを想定しないでください。

-mgprel-ro
であるこずがわかっおいるデヌタに察しお、FDPICABIで「GPREL」再配眮の䜿甚を有効にしたす。
読み取り専甚セクション。 を陀いお、デフォルトで有効になっおいたす -fpic or -fpie それでも
グロヌバルオフセットテヌブルを小さくするのに圹立぀堎合があり、1぀の呜什を4぀ず亀換したす。
-fPIC or -fPIE、3぀の呜什を4぀ず亀換し、そのうちのXNUMX぀は耇数の呜什で共有される堎合がありたす
シンボルであり、参照されるシンボルのGOT゚ントリの必芁性を回避するため、
勝利する可胜性が高くなりたす。 そうでない堎合は、 -mno-gprel-ro 無効にするために䜿甚できたす。

-multilib-ラむブラリ-pic
FDではなくラむブラリpicラむブラリずリンクしたす。 それはによっお暗瀺されおいたす -mlibrary-pic、 同じように
のように -fPIC & -fpic 無し -mfdpic。 明瀺的に䜿甚する必芁はありたせん。

-mlinked-fp
スタックフレヌムの堎合は垞にフレヌムポむンタを䜜成するずいうEABIの芁件に埓っおください
割り圓おられたす。 このオプションはデフォルトで有効になっおおり、次の方法で無効にできたす。
-mno-linked-fp.

-mlong-calls
間接アドレス指定を䜿甚しお、珟圚のコンパむル単䜍の倖郚で関数を呌び出したす。 これ
関数を32ビットアドレス空間内のどこにでも配眮できるようにしたす。

-悪性ラベル
前のパケットにNOPを挿入しお、ラベルを8バむト境界に揃えおみおください。
このオプションは、VLIWパッキングが有効になっおいる堎合にのみ効果がありたす。 新しいものは䜜成したせん
パケット; 既存のNOPにNOPを远加するだけです。

-mlibrary-pic
䜍眮に䟝存しないEABIコヌドを生成したす。

-mac-4
最初のXNUMX぀のメディアアキュムレヌタレゞスタのみを䜿甚しおください。

-mac-8
XNUMX぀のメディアアキュムレヌタレゞスタすべおを䜿甚したす。

-mpack
VLIW呜什をパックしたす。

-mno-pack
VLIW呜什をパックしないでください。

-mno-eflags
e_flagsでABIスむッチをマヌクしないでください。

-mcond-移動
条件付き移動呜什の䜿甚を有効にしたすデフォルト。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mno-cond-move
条件付き移動呜什の䜿甚を無効にしたす。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mscc
条件付きセット呜什の䜿甚を有効にしたすデフォルト。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mno-scc
条件付きセット呜什の䜿甚を無効にしたす。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mcond-exec
条件付き実行の䜿甚を有効にしたすデフォルト。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mno-cond-exec
条件付き実行の䜿甚を無効にしたす。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mvliw-ブランチ
パスを実行しお、ブランチをVLIW呜什にパックしたすデフォルト。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mno-vliw-ブランチ
パスを実行しおブランチをVLIW呜什にパックしないでください。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mmulti-cond-exec
「&&」ず「||」の最適化を有効にしたす条件付き実行デフォルト。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mno-multi-cond-exec
「&&」ず「||」の最適化を無効にしたす条件付き実行で。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mnested-cond-exec
ネストされた条件付き実行の最適化を有効にしたすデフォルト。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-mno-nested-cond-exec
ネストされた条件付き実行の最適化を無効にしたす。

このスむッチは䞻にコンパむラのデバッグ甚であり、
将来のバヌゞョン。

-moptimize-メンバヌバヌ
このスむッチは、コンパむラが生成したコヌドから冗長な「メモリ」呜什を削陀したす。
デフォルトでは有効になっおいたす。

-mno-optimize-memberbar
このスむッチは、冗長な「メンバヌ」呜什の自動削陀を無効にしたす。
生成されたコヌド。

-mtomcat-統蚈
ガスにTomcat統蚈を出力させたす。

-mcpu =CPU
コヌドを生成するプロセッサタむプを遞択したす。 可胜な倀は次のずおりです frv, fr550,
雄猫, fr500, fr450, fr405, fr400, fr300 & シンプルな.

GNU / Linuxの オプション

ボヌマン -m オプションはGNU/Linuxタヌゲット甚に定矩されおいたす。

-mglibc
GNUCラむブラリを䜿甚したす。 これは、を陀くデフォルトです。 *-*-linux- * uclibc * &
*-*-linux- * android * タヌゲット。

-ムクリブ
uClibcCラむブラリを䜿甚したす。 これがデフォルトです *-*-linux- * uclibc * タヌゲット。

-バむオニック
BionicCラむブラリを䜿甚したす。 これがデフォルトです *-*-linux- * android * タヌゲット。

-マンアンドロむド
Androidプラットフォヌムず互換性のあるコヌドをコンパむルしたす。 これがデフォルトです
*-*-linux- * android * タヌゲット。

コンパむル時に、このオプションは有効になりたす -バむオニック, -fPIC, -fno-䟋倖 & -fno-rtti by
デフォルト。 リンクするずき、このオプションはGCCドラむバヌにAndroid固有のオプションを枡したす
リンカヌに。 最埌に、このオプションにより、プリプロセッサマクロ「__ANDROID__」は次のようになりたす。
定矩された。

-tno-android-cc
のコンパむル効果を無効にする -マンアンドロむド、぀たり、有効にしないでください -バむオニック, -fPIC,
-fno-䟋倖 & -fno-rtti デフォルトでは

-tno-android-ld
のリンク効果を無効にする -マンアンドロむド぀たり、暙準のLinuxリンクオプションを
リンカ。

H8 / 300 オプション

ボヌマン -m オプションは、H8/300実装甚に定矩されおいたす。

-mリラックス
可胜であれば、リンク時に䞀郚のアドレス参照を短くしたす。 リンカヌオプションを䜿甚したす
-リラックス.

-mh H8/300Hのコヌドを生成したす。

-MS H8Sのコヌドを生成したす。

-分 通垞モヌドでH8SおよびH8/300Hのコヌドを生成したす。 このスむッチを䜿甚する必芁がありたす
どちらかず -mh or -MS.

-ms2600
H8S/2600のコヌドを生成したす。 このスむッチは、 -MS.

-メクスル
拡匵レゞスタは、モニタで関数を実行する前にスタックに栌玍されたす
属性。 デフォルトのオプションは -メクスル。 このオプションは、H8Sタヌゲットにのみ有効です。

-mno-exr
拡匵レゞスタは、モニタで関数を実行する前にスタックに栌玍されたせん。
属性。 デフォルトのオプションは -mno-exr。 このオプションは、H8Sタヌゲットにのみ有効です。

-ミント32
デフォルトで「int」デヌタを32ビットにしたす。

-悪性-300
H8 / 300HおよびH8Sでは、H8/300ず同じ䜍眮合わせ芏則を䜿甚したす。 デフォルト
H8 / 300HおよびH8Sの堎合、ロングずフロヌトを4バむト境界に揃えたす。
-悪性-300 それらを2バむト境界に揃えたす。 このオプションは効果がありたせん
H8/300で。

HPPA オプション

ボヌマン -m HPPAファミリヌのコンピュヌタヌには、次のオプションが定矩されおいたす。

-XNUMX月=アヌキテクチャタむプ
指定されたアヌキテクチャのコヌドを生成したす。 の遞択肢 アヌキテクチャタむプ  
1.0 PA 1.0の堎合、 1.1 PA 1.1の堎合、および 2.0 PA2.0プロセッサ甚。 参照する
/usr/lib/sched.models HP-UXシステムで適切なアヌキテクチャオプションを決定する
あなたのマシンのために。 番号の小さいアヌキテクチャ甚にコンパむルされたコヌドは、高い番号で実行されたす
番号付きのアヌキテクチャですが、その逆ではありたせん。

-mpa-risc-1-0
-mpa-risc-1-1
-mpa-risc-2-0
の同矩語 -1.0月=XNUMX, -1.1月=XNUMX, -2.0月=XNUMX 。

-mbig スむッチ
倧きなスむッチテヌブルに適したコヌドを生成したす。 このオプションは、
アセンブラ/リンカは、スむッチ テヌブル内の範囲倖の分岐に぀いお䞍平を蚀いたす。

-mゞャンプむンディレむ
倉曎するこずにより、関数呌び出しの遅延スロットを無条件ゞャンプ呜什で埋めたす
条件付きゞャンプのタヌゲットずなる関数呌び出しの戻りポむンタヌ。

-mdisable-fpregs
浮動小数点レゞスタがいかなる方法でも䜿甚されないようにしたす。 これは
浮動小数点レゞスタの遅延コンテキストスむッチングを実行するカヌネルのコンパむル。 もしも
このオプションを䜿甚しお、コンパむラである浮動小数点挔算を実行しようずしたす。
䞭止したす。

-mdisable-むンデックス䜜成
コンパむラがむンデックスアドレスモヌドを䜿甚しないようにしたす。 これはかなり回避したす
MACHでMIGで生成されたコヌドをコンパむルするずきのあいたいな問題。

-mno-space-regs
タヌゲットにスペヌスレゞスタがないず想定するコヌドを生成したす。 これにより、GCCは
より高速な間接呌び出しを生成し、スケヌリングされおいないむンデックスアドレスモヌドを䜿甚したす。

このようなコヌドは、レベル0のPAシステムおよびカヌネルに適しおいたす。

-mfast-間接呌び出し
呌び出しがスペヌスの境界を越えないこずを前提ずするコヌドを生成したす。 これにより、GCCは
より高速な間接呌び出しを実行するコヌドを発行したす。

このオプションは、共有ラむブラリたたはネストされた関数が存圚する堎合は機胜したせん。

-mfixed-range =レゞスタ範囲
指定されたレゞスタ範囲を固定レゞスタずしお扱うコヌドを生成したす。 固定レゞスタ
レゞスタアロケヌタが䜿甚できないものです。 これは、カヌネルをコンパむルするずきに圹立ちたす
コヌド。 レゞスタ範囲は、ダッシュで区切られたXNUMX぀のレゞスタずしお指定されたす。 倚数
レゞスタ範囲は、コンマで区切っお指定できたす。

-mlong-ロヌドストア
HP-UX 3で必芁になる堎合があるように、10呜什のロヌドおよびストアシヌケンスを生成したす
リンカ。 これは、 +k HPコンパむラのオプション。

-ポヌタブルランタむム
ELFシステム甚にHPが提案したポヌタブル呌び出し芏玄を䜿甚しおください。

-メガガス
GASのみが理解するアセンブラディレクティブの䜿甚を有効にしたす。

-mschedule =CPUタむプ
マシンタむプの制玄に埓っおコヌドをスケゞュヌルしたす CPUタむプ。 遞択肢
for CPUタむプ   700 7100, 7100LC, 7200, 7300 & 8000。 参照する
/usr/lib/sched.models HP-UXシステムで、適切なスケゞュヌリングオプションを決定する
あなたのマシン。 デフォルトのスケゞュヌルは 8000.

-mlinker-opt
HP-UXリンカヌで最適化パスを有効にしたす。 これによりシンボリックデバッグが行われるこずに泚意しおください
無理だよ。 たた、HP-UX8およびHP-UX9リンカヌでバグが発生したす。
䞀郚のプログラムをリンクするず、停の゚ラヌメッセヌゞが衚瀺されたす。

-msoft-float
浮動小数点のラむブラリ呌び出しを含む出力を生成したす。 譊告 必芁条件
ラむブラリは、すべおのHPPAタヌゲットで䜿甚できるわけではありたせん。 通垞、
マシンの通垞のCコンパむラが䜿甚されたすが、これをクロスで盎接実行するこずはできたせん。
コンパむル。 適切なラむブラリを提䟛するには、独自の手配を行う必芁がありたす
クロスコンパむルのための関数。

-msoft-float 出力ファむルの呌び出し芏玄を倉曎したす。 したがっお、それは
コンパむルする堎合に䟿利です を このオプションを䜿甚したプログラムの特に、あなたはする必芁がありたす
コンパむル libgcc.a、GCCに付属するラむブラリ -msoft-float このために
動䜜するように。

-msio
サヌバヌIOの事前定矩「_SIO」を生成したす。 デフォルトは -mwsio。 これにより、
ワヌクステヌションIOの事前定矩、「__ hp9000s700」、「__ hp9000s700__」、および「_WSIO」。
これらのオプションは、HP-UXおよびHI-UXで䜿甚できたす。

-mgnu-ld
GNUに固有のオプションを䜿甚する ld。 これは合栌です -共有 〜ぞ ld 共有を構築するずき
図曞通。 これは、GCCが明瀺的たたは暗黙的に構成されおいる堎合のデフォルトです。
GNUリンカヌ。 このオプションはどちらにも圱響したせん ld ず呌ばれたす。 それは䜕を倉えるだけです
パラメヌタがそれに枡されたす ldを遞択したす。 ld ず呌ばれるこずはによっお決定されたす
--with-ld 構成オプション、GCCのプログラム怜玢パス、そしお最埌にナヌザヌの パス.
GCCで䜿甚されるリンカヌは、 which `gcc -print-prog-name = ld`。 この
オプションは、64ビットHP-UX GCCでのみ䜿甚できたす。぀たり、
hppa * 64 *-*-hpux *.

-mhp-ld
HPに固有のオプションを䜿甚する ld。 これは合栌です -b 〜ぞ ld 共有ラむブラリを構築するずき
ずパス +受け入れる 型の䞍䞀臎 〜ぞ ld すべおのリンクで。 GCCが
HPリンカヌを䜿甚しお、明瀺的たたは暗黙的に構成されたす。 このオプションは圱響したせん
which ld ず呌ばれたす。 枡されるパラメヌタを倉曎するだけです ldを遞択したす。 ld
ず呌ばれるこずはによっお決定されたす --with-ld 構成オプション、GCCのプログラム怜玢
パス、そしお最埌にナヌザヌの パス。 GCCで䜿甚されるリンカヌは、
which `gcc -print-prog-name = ld`。 このオプションは、64ビットHP-UXでのみ䜿甚できたす
GCC、぀たり hppa * 64 *-*-hpux *.

-mlong-calls
長い呌び出しシヌケンスを䜿甚するコヌドを生成したす。 これにより、通話が垞に可胜になりたす
リンカヌで生成されたスタブに到達したす。 デフォルトでは、次の堎合にのみ長い呌び出しが生成されたす。
呌び出しサむトから関数たたは倉換ナニットの先頭たでの距離。
堎合によっおは、䜿甚されおいるブランチタむプによっお蚭定された事前定矩された制限を超えおいたす。 The
通垞の通話の制限は、PA7,600,000でそれぞれ240,000バむトず2.0バむトです。
およびPA1.Xアヌキテクチャ。 Sibcallは垞に240,000バむトに制限されおいたす。

距離は、関数の最初から枬定されたす。
-機胜-セクション オプション、たたは䜿甚する堎合 -メガガス & -mno-ポヌタブル-ランタむム オプション
HP-UXでSOMリンカヌを䜿甚しお䞀緒に。

通垞、このオプションを䜿甚するずパフォヌマンスが䜎䞋するため、このオプションを䜿甚するこずは望たしくありたせん。 でも、
これは、倧芏暡なアプリケヌションで、特に郚分的なリンクを䜿甚しお
アプリケヌションをビルドしたす。

䜿甚される長い呌び出しのタむプは、アセンブラヌずリンカヌの機胜によっお異なりたす。
生成されるコヌドのタむプ。 長くサポヌトするシステムぞの圱響
絶察呌び出し、および長いpicシンボル差分たたはpc盞察呌び出しは
比范的小さい。 ただし、間接呌び出しは、PICコヌドの32ビットELFシステムで䜿甚されたす
そしおそれはかなり長いです。

-munix =unix-std
コンパむラの事前定矩を生成し、指定されたUNIX暙準の開始ファむルを遞択したす。
の遞択肢 unix-std   93, 95 & 98. 93 すべおのHP-UXバヌゞョンでサポヌトされおいたす。
95 HP-UX10.10以降で䜿甚できたす。 98 HP-UX11.11以降で䜿甚できたす。
デフォルト倀は 93 HP-UX 10.00の堎合、 95 HP-UX 10.10から11.00たで、および 98
HP-UX11.11以降の堎合。

-munix = 93 GCC3.3および3.4​​ず同じ事前定矩を提䟛したす。 -munix = 95 は、倧阪で
「XOPEN_UNIX」ず「_XOPEN_SOURCE_EXTENDED」の远加の事前定矩、およびスタヌトファむル
unix95.o. -munix = 98 「_XOPEN_UNIX」の远加の事前定矩を提䟛したす。
"_XOPEN_SOURCE_EXTENDED"、 "_ INCLUDE__STDC_A1_SOURCE"および"_INCLUDE_XOPEN_SOURCE_500"、
およびstartfile unix98.o.

これは、 重芁 このオプションは、さたざたなラむブラリのむンタヌフェむスを倉曎するこずに泚意しおください
ルヌチン。 たた、Cラむブラリの動䜜にも圱響したす。 したがっお、 極端な
このオプションの䜿甚には泚意が必芁です。

耇数のUNIX暙準で動䜜するこずを目的ずしたラむブラリコヌドは、テストする必芁がありたす。
倉数の蚭定ず埩元 __xpg4_extended_mask 適切に。 ほずんどの GNU ゜フトりェア
この機胜は提䟛しおいたせん。

-nolibdld
次の堎合にlibdld.slを怜玢するためのリンクオプションの生成を抑制したす。 -静的 オプションがある
HP-UX10以降で指定されおいたす。

-静的
libcでのsetlocaleのHP-UX実装は、libdld.slに䟝存しおいたす。 そこには
libdld.slのアヌカむブバヌゞョンではありたせん。 したがっお、 -静的 オプションが指定されおいる、
この䟝存関係を解決するには、特別なリンクオプションが必芁です。

HP-UX 10以降では、GCCドラむバヌはリンクに必芁なオプションを远加したす
libdld.slの堎合 -静的 オプションが指定されおいたす。 これにより、結果のバむナリは次のようになりたす。
ダむナミックであるこず。 64ビットポヌトでは、リンカはデフォルトで動的バむナリを生成したす。
ずにかく。 The -nolibdld オプションを䜿甚しお、GCCドラむバヌが远加されないようにするこずができたす
これらのリンクオプション。

-スレッド
マルチスレッドのサポヌトを远加したす DCE 糞 HP-UXのラむブラリ。 このオプション
プリプロセッサずリンカの䞡方にフラグを蚭定したす。

むンテル 386 & AMD x86-64 オプション

ボヌマン -m オプションは、i386 および x86-64 ファミリヌのコンピュヌタヌ甚に定矩されおいたす。

-XNUMX月=CPUタむプ
マシンタむプの呜什を生成する CPUタむプ。 ずは察照的に -mtune =CPUタむプ,
これは、生成されたコヌドを指定されたものに合わせお調敎するだけです。 CPUタむプ, -XNUMX月=CPUタむプ
GCCが、XNUMX぀以倖のプロセッサではたったく実行されない可胜性のあるコヌドを生成できるようにしたす
瀺されおいたす。 指定する -XNUMX月=CPUタむプ 含意する -mtune =CPUタむプ.

の遞択肢 CPUタむプ には次の倀がありたす:

ネむティブ
これにより、コンパむル時にコヌドを生成するCPUが遞択され、
コンパむルマシンのプロセッサタむプ。 䜿甚する -march=ネむティブ すべおを有効にしたす
ロヌカルマシンでサポヌトされおいる呜什サブセットしたがっお、結果が実行されない可胜性がありたす
別のマシンで。 䜿甚する -mtune = native ロヌカル甚に最適化されたコヌドを生成したす
遞択した呜什セットの制玄䞋にあるマシン。

i386
オリゞナルのInteli386CPU。

i486
Inteli486CPU。 このチップにはスケゞュヌリングは実装されおいたせん。

i586
ペンティアム
MMXをサポヌトしおいないIntelPentiumCPU。

ペンティアム-mmx
Intel Pentium MMX CPU、MMX呜什セットをサポヌトするPentiumコアに基づいおいたす。

ペンティアムプロ
IntelPentiumProCPU。

i686
ず䞀緒に䜿甚する堎合 -行進、Pentium Pro呜什セットが䜿甚されおいるため、コヌドは実行されたす
すべおのi686ファミリヌチップ。 䞀緒に䜿甚する堎合 -ムチュヌン、それはず同じ意味を持っおいたす
ゞェネリック.

ペンティアム2
Intel Pentium II CPU、MMX呜什セットをサポヌトするPentiumProコアに基づいおいたす。

ペンティアム3
ペンティアム3m
Intel Pentium III CPU、MMXおよびSSE呜什セットを備えたPentiumProコアに基づく
サポヌト。

ペンティアム-m
Intel Pentium M; MMX、SSE、SSE2を搭茉したIntel PentiumIIICPUの䜎電力バヌゞョン
呜什セットのサポヌト。 Centrinoノヌトブックで䜿甚されたす。

ペンティアム4
ペンティアム4m
MMX、SSE、およびSSE4呜什セットをサポヌトするIntel Pentium2CPU。

プレスコット
MMX、SSE、SSE4、およびSSE2呜什を備えたIntel Pentium3CPUの改良版
サポヌトを蚭定したす。

ノコナ
4ビット拡匵機胜、MMX、SSE、SSE64、および
SSE3呜什セットのサポヌト。

core2
2ビット拡匵機胜を備えたIntelCore64 CPU、MMX、SSE、SSE2、SSE3、SSSE3
呜什セットのサポヌト。

corei7
Intel Core i7 CPU、64 ビット拡匵、MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1 および
SSE4.2呜什セットのサポヌト。

corei7-avx
Intel Core i7 CPU、64 ビット拡匵、MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、
SSE4.2、AVX、AES、および PCLMUL 呜什セットのサポヌト。

コア avx-i
64 ビット拡匵機胜を備えた Intel Core CPU、MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、
SSE4.2、AVX、AES、PCLMUL、FSGSBASE、RDRND、および F16C 呜什セットのサポヌト。

コア avx2
64 ビット拡匵機胜を備えた Intel Core CPU、MOVBE、MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、
SSE4.2、AVX、AVX2、AES、PCLMUL、FSGSBASE、RDRND、FMA、BMI、BMI2、F16C
呜什セットのサポヌト。

原子
64 ビット拡匵機胜を備えた Intel Atom CPU、MOVBE、MMX、SSE、SSE2、SSE3、および SSSE3
呜什セットのサポヌト。

k6 MMX呜什セットをサポヌトするAMDK6CPU。

k6-2
k6-3
MMXおよび6DNowを搭茉したAMDK3CPUの改良版 呜什セットのサポヌト。

アスロン
アスロン・トバヌド
AMD Athlon CPU、MMX、3dNOW、拡匵3DNow およびSSEプリフェッチ呜什
サポヌト。

アスロン-4
アスロン-XP
アスロンMP
MMX、3DNow、拡匵3DNowを備えた改良されたAMD Athlon CPU および完党なSSE呜什
サポヌトを蚭定したす。

k8
オプテロン
アスロン64
アスロンFX
x8-86呜什セットをサポヌトするAMDK64コアに基づくプロセッサ。
AMD Opteron、Athlon 64、およびAthlon64FXプロセッサ。 これはMMXをスヌパヌセットしたす。
SSE、SSE2、3DNow、拡匵3DNow および64ビット呜什セット拡匵。

k8-sse3
オプテロン-sse3
athlon64-sse3
SSE8呜什セットをサポヌトするAMDK3コアの改良版。

アムファム10
バルセロナ
x10-86呜什セットをサポヌトするAMDファミリヌ64hコアに基づくCPU。 これ
スヌパヌセットMMX、SSE、SSE2、SSE3、SSE4A、3DNow、拡匵3DNow、ABM、64ビット
呜什セット拡匵。

BDver1
x15-86呜什セットをサポヌトするAMDファミリヌ64hコアに基づくCPU。 これ
スヌパヌセットFMA4、AVX、XOP、LWP、AES、PCL_MUL、CX16、MMX、SSE、SSE2、SSE3、SSE4A、
SSSE3、SSE4.1、SSE4.2、ABM、および64ビット呜什セット拡匵。

BDver2
x15-86呜什セットをサポヌトするAMDファミリヌ64hコアベヌスのCPU。 これ
スヌパヌセット BMI、TBM、F16C、FMA、AVX、XOP、LWP、AES、PCL_MUL、CX16、MMX、SSE、SSE2、
SSE3、SSE4A、SSSE3、SSE4.1、SSE4.2、ABM、および 64 ビットの呜什セット拡匵。)

BDver3
x15-86呜什セットをサポヌトするAMDファミリヌ64hコアベヌスのCPU。 これ
スヌパヌセット BMI、TBM、F16C、FMA、AVX、XOP、LWP、AES、PCL_MUL、CX16、MMX、SSE、SSE2、
SSE3、SSE4A、SSSE3、SSE4.1、SSE4.2、ABM、および 64 ビット呜什セット拡匵。

btver1
x14-86呜什セットをサポヌトするAMDファミリヌ64hコアに基づくCPU。 これ
スヌパヌセットMMX、SSE、SSE2、SSE3、SSSE3、SSE4A、CX16、ABMおよび64ビット呜什セット
拡匵機胜。

btver2
x16-86呜什セットをサポヌトするAMDファミリヌ64hコアに基づくCPU。 これ
MOVBE、F16C、BMI、AVX、PCL_MUL、AES、SSE4.2、SSE4.1、CX16、ABM、SSE4A、
SSSE3、SSE3、SSE2、SSE、MMX、および64ビット呜什セット拡匵。

りィンチップ-C6
IDT WinChip C6 CPU、远加のMMX呜什セットを䜿甚しおi486ず同じように凊理されたす
サポヌト。

りィンチップ2
IDT WinChip 2 CPU、远加のMMXず486DNowを備えたi3ず同じように凊理されたす
呜什セットのサポヌト。

c3 MMXおよび3DNowを搭茉したVIAC3CPU 呜什セットのサポヌト。 スケゞュヌルはありたせん
このチップに実装されおいたす。

c3-2
VIA C3-2Nehemiah / C5XLCPU、MMXおよびSSE呜什セットをサポヌト。 いいえ
このチップにはスケゞュヌリングが実装されおいたす。

ゞオヌド
MMXおよび3DNowを搭茉したAMDGeode組み蟌みプロセッサ 呜什セットのサポヌト。

-mtune =CPUタむプ
に調敎する CPUタむプ ABIを陀き、生成されたコヌドに該圓するすべおのもの
および利甚可胜な呜什のセット。 特定のものを遞んでいる間 CPUタむプ スケゞュヌル
その特定のチップに適切なもの、コンパむラはコヌドを生成したせん
を䜿甚しない限り、デフォルトのマシンタむプでは実行できたせん -XNUMX月=CPUタむプ オプションを遞択したす。
たずえば、GCCがi686-pc-linux-gnu甚に構成されおいる堎合、 -mtune = pentium4 生成
Pentium 4甚に調敎されおいるが、i686マシンで実行されるコヌド。

の遞択肢 CPUタむプ ず同じです -行進。 加えお、 -ムチュヌン サポヌトしたす
远加の遞択肢 CPUタむプ:

ゞェネリック
最も䞀般的なIA32/AMD64/EM64Tプロセッサ甚に最適化されたコヌドを生成したす。 もし、あんたが
コヌドが実行されるCPUを知っおいる堎合は、察応するCPUを䜿甚する必芁がありたす
-ムチュヌン or -行進 オプションの代わりに -mtune = generic。 しかし、あなたが知らない堎合
アプリケヌションのCPUナヌザヌが正確に䜕を持っおいるか、そしおこれを䜿甚する必芁がありたす
オプションを遞択したす。

新しいプロセッサが垂堎に導入されるず、このオプションの動䜜
倉曎されたす。 したがっお、新しいバヌゞョンのGCCにアップグレヌドする堎合は、コヌド生成
このオプションで制埡されるのは、最も倚いプロセッサを反映するように倉曎されたす
GCCのバヌゞョンがリリヌスされた時点で䞀般的です。

ない -march = generic オプションのため -行進 呜什セットを瀺したす
コンパむラは䜿甚でき、すべおに適甚できる汎甚呜什セットはありたせん
プロセッサ。 察照的に、 -ムチュヌン プロセッサを瀺したすたたは、この堎合は、
コヌドが最適化されおいるプロセッサのコレクション。

-mcpu =CPUタむプ
非掚奚の同矩語 -ムチュヌン.

-mfpmath =単䜍
遞択したナニットの浮動小数点挔算を生成したす 単䜍。 の遞択肢 単䜍 には次の倀がありたす:

387 倧郚分のチップに存圚する暙準の387浮動小数点コプロセッサを䜿甚したす
それ以倖の堎合ぱミュレヌトしたす。 このオプションでコンパむルされたコヌドは、ほずんどすべおの堎所で実行されたす。
䞀時的な結果は、粟床ではなく80ビットの粟床で蚈算されたす
タむプによっお指定され、ほずんどの堎合ず比范しおわずかに異なる結果になりたす
他のチップ。 芋る -フロヌトストア 詳现に぀いおは。

これは、i386 コンパむラのデフォルトの遞択です。

SSE SSE呜什セットに存圚するスカラヌ浮動小数点呜什を䜿甚したす。 これ
呜什セットは、Pentium III以降のチップ、およびAMDラむンでサポヌトされおいたす
Athlon-4、Athlon XP、AthlonMPチップによる。 SSEの以前のバヌゞョン
呜什セットは単粟床挔算のみをサポヌトしおいるため、doubleず
拡匵粟床挔算は匕き続き387を䜿甚しお実行されたす。新しいバヌゞョンが存圚したす
Pentium4およびAMDx86-64チップでのみ、倍粟床挔算もサポヌトしたす。

i386 コンパむラの堎合は、次を䜿甚する必芁がありたす -XNUMX月=CPUタむプ, -mse or -msse2 に切り替える
SSE拡匵機胜を有効にしお、このオプションを有効にしたす。 x86-64コンパむラの堎合、
これらの拡匵機胜はデフォルトで有効になっおいたす。

結果のコヌドは、ほずんどの堎合、かなり高速になるはずです。
387コヌドの数倀的䞍安定性の問題を回避したすが、既存のコヌドを壊す可胜性がありたす
䞀時的なものが80ビットであるこずを期埅するコヌド。

これは、x86-64コンパむラのデフォルトの遞択です。

sse、387
sse + 387
䞡蚀語で
䞡方の呜什セットを同時に利甚しおみおください。 これにより、効果的にXNUMX倍になりたす
䜿甚可胜なレゞスタの量、および387の個別の実行ナニットを備えたチップ
実行リ゜ヌスもSSEしたす。 このオプションはただ䜿甚されおいるため、泚意しお䜿甚しおください
GCCレゞスタアロケヌタは個別にモデル化されないため、実隓的
機胜ナニットが良奜であるため、パフォヌマンスが䞍安定になりたす。

-masm =方蚀
遞択したものを䜿甚しおアセンブリ呜什を出力する 方蚀. サポヌトされおいる遞択肢は むンテル or
ぞ デフォルト。 ダヌりィンは支持しない むンテル.

-mieee-fp
-mno-ieee-fp
コンパむラがIEEE浮動小数点比范を䜿甚するかどうかを制埡したす。 これらは
比范の結果が順序付けられおいない堎合を正しく凊理したす。

-msoft-float
浮動小数点のラむブラリ呌び出しを含む出力を生成したす。

譊告 必芁なラむブラリはGCCの䞀郚ではありたせん。 通垞、
マシンの通垞のCコンパむラが䜿甚されたすが、これをクロスで盎接実行するこずはできたせん。
コンパむル。 適切なラむブラリを提䟛するには、独自の手配を行う必芁がありたす
クロスコンパむルのための関数。

関数が浮動小数点を返すマシンでは、80387レゞスタになりたす
スタック、䞀郚の浮動小数点オペコヌドは、 -msoft-float 䜿甚されおいる。

-mno-fp-ret-in-387
関数の戻り倀にFPUレゞスタを䜿甚しないでください。

通垞の呌び出し芏玄には、「float」型ず「double」型の関数の戻り倀がありたす。
FPUがない堎合でも、FPUレゞスタにありたす。 アむデアは、オペレヌティングシステムが
FPUを゚ミュレヌトする必芁がありたす。

オプション -mno-fp-ret-in-387 このような倀は通垞のCPUで返されたす
代わりに登録したす。

-mno-ファンシヌ-æ•°å­Š-387
䞀郚の387゚ミュレヌタは、「sin」、「cos」、および「sqrt」呜什をサポヌトしおいたせん。
387.これらの呜什が生成されないようにするには、このオプションを指定したす。 このオプションは
FreeBSD、OpenBSD、および NetBSD のデフォルト。 このオプションは、次の堎合にオヌバヌラむドされたす。 -行進
タヌゲットCPUには垞にFPUがあるため、呜什は必芁ないこずを瀺したす
゚ミュレヌション。 も䜿甚しない限り、これらの呜什は生成されたせん。
-funsafe-数孊の最適化 スむッチ。

-悪性-ダブル
-mno-align-double
GCCが「double」、「long double」、および「longlong」倉数を敎列するかどうかを制埡したす。
XNUMXワヌドの境界たたはXNUMXワヌドの境界。 「double」倉数をXNUMXワヌドに揃える
境界は、Pentium䞊でいくらか高速に実行されるコヌドを生成したすが、より倚くの費甚がかかりたす
メモリ。

x86-64では、 -悪性-ダブル デフォルトで有効になっおいたす。

譊告 あなたが䜿甚する堎合 -悪性-ダブル スむッチ、䞊蚘のタむプを含む構造
公開されおいるアプリケヌションのバむナリむンタヌフェむス仕様ずは異なる方法で配眮されたす
386 甚であり、XNUMX なしでコンパむルされたコヌドの構造䜓ずはバむナリ互換ではありたせん。
そのスむッチ。

-m96bit-long-double
-m128bit-long-double
これらのスむッチは、「long double」タむプのサむズを制埡したす。 i386 アプリケヌション バむナリ
むンタヌフェむスはサむズを96ビットに指定しおいるため、 -m96bit-long-double のデフォルトです
32ビットモヌド。

珟代のアヌキテクチャPentium以降は、「ロングダブル」を8に揃えるこずを奜みたす。
たたは16バむト境界。 ABIに準拠するアレむたたは構造では、これはそうではありたせん
可胜。 したがっお、指定する -m128bit-long-double 「longdouble」を16バむトに揃えたす
「longdouble」に远加の32ビットれロをパディングするこずによる境界。

x86-64コンパむラでは、 -m128bit-long-double ABIずしおのデフォルトの遞択です
「longdouble」が16バむト境界に敎列されるこずを指定したす。

これらのオプションはどちらも、x87暙準を超える粟床を実珟しおいないこずに泚意しおください。
「ロングダブル」の堎合は80ビット。

譊告 タヌゲットABIのデフォルト倀を䞊曞きするず、サむズが倉曎されたす
「longdouble」倉数を含む構造䜓ず配列の
「longdouble」を取る関数の関数呌び出し芏玄。 したがっお、圌らはそうではありたせん
そのスむッチなしでコンパむルされたコヌドずバむナリ互換。

-mlong-double-64
-mlong-double-80
これらのスむッチは、「ロングダブル」タむプのサむズを制埡したす。 64ビットのサむズは
「double」型ず同等の「long double」型。 これは Bionic C のデフォルトです。
ずしょうかん。

譊告 タヌゲットABIのデフォルト倀を䞊曞きするず、サむズが倉曎されたす
「longdouble」倉数を含む構造䜓ず配列の
「longdouble」を取る関数の関数呌び出し芏玄。 したがっお、圌らはそうではありたせん
そのスむッチなしでコンパむルされたコヌドずバむナリ互換。

-mlarge-data-threshold =しきい倀
日時 -mcmodel = medium が指定されおいる堎合、デヌタオブゞェクトが しきい倀 に配眮されたす
倧きなデヌタセクション。 この倀は、にリンクされおいるすべおのオブゞェクトで同じである必芁がありたす
バむナリで、デフォルトは65535です。

-mrtd
別の関数呌び出し芏玄を䜿甚したす。この芏則では、固定の関数を䜿甚したす
匕数の数は「ret」で返されたす num」 匕数をポップする呜什
垰りながら。 これにより、呌び出し元にXNUMX぀の呜什を保存する必芁がないため、
そこに匕数をポップしたす。

この呌び出しシヌケンスで個々の関数が呌び出されるように指定できたす。
関数属性 暙準コヌル. オヌバヌラむドするこずもできたす -mrtd オプションを䜿甚しお
関数属性 cdecl.

譊告 この呌び出し芏玄は、Unixで通垞䜿甚される芏玄ず互換性がありたせん。
したがっお、Unixコンパむラでコンパむルされたラむブラリを呌び出す必芁がある堎合は䜿甚できたせん。

たた、倉数を取るすべおの関数の関数プロトタむプを提䟛する必芁がありたす
匕数の数「printf」を含む。 そうしないず、誀ったコヌドが生成されたす
それらの関数の呌び出し。

さらに、関数の数が倚すぎるず、コヌドが倧幅に䞍正確になりたす。
匕数。 通垞、䜙分な匕数は無害に無芖されたす。

-mregparm =NUM
敎数匕数を枡すために䜿甚されるレゞスタの数を制埡したす。 デフォルトでは、
レゞスタは匕数を枡すために䜿甚され、最倧3぀のレゞスタを䜿甚できたす。 あなたはできる
関数属性を䜿甚しお、特定の関数のこの動䜜を制埡したす regparm.

譊告 このスむッチを䜿甚する堎合、および NUM がれロ以倖の堎合、すべおのモゞュヌルをビルドする必芁がありたす
ラむブラリを含め、同じ倀で。 これには、システムラむブラリず
スタヌトアップモゞュヌル。

-msseregparm
float匕数ずdouble匕数、および戻り倀には、SSEレゞスタの受け枡し芏則を䜿甚しおください。
関数属性を䜿甚しお、特定の関数のこの動䜜を制埡できたす
セレグパルム.

譊告 このスむッチを䜿甚する堎合は、同じ倀ですべおのモゞュヌルをビルドする必芁がありたす。
ラむブラリを含みたす。 これには、システムラむブラリずスタヌトアップモゞュヌルが含たれたす。

-mvect8-ret-in-mem
MMXレゞスタの代わりにメモリ内の8バむトのベクトルを返したす。 これがデフォルトです
Solaris @ tie {} 8および9ずVxWorksは、SunStudioコンパむラのABIず䞀臎したす。
バヌゞョン12。それ以降のコンパむラバヌゞョンStudio 12 Update @ tie {} 1以降は次のずおりです。
他のx86タヌゲットで䜿甚されるABI。これはSolaris@tie{}10以降のデフォルトです。
のみ によっお生成された既存のコヌドずの互換性を維持する必芁がある堎合は、このオプションを䜿甚しおください
それらの以前のコンパむラバヌゞョンたたは叀いバヌゞョンのGCC。

-mpc32
-mpc64
-mpc80
80387浮動小数点粟床を32、64、たたは80ビットに蚭定したす。 い぀ -mpc32 指定されおいる、
浮動小数点挔算の結果の仮数は24ビットに䞞められたす
単粟床; -mpc64 浮動小数点の結果の仮数を䞞めたす
53ビット倍粟床ぞの挔算ず -mpc80 結果の仮数を䞞めたす
浮動小数点挔算の64ビット拡匵倍粟床ぞの倉換。
デフォルト。 このオプションを䜿甚するず、より高粟床の浮動小数点挔算が可胜になりたす。
FPU制埡ワヌドを明瀺的に蚭定しないず、プログラマヌは䜿甚できたせん。

浮動小数点挔算の䞞めをデフォルトの80ビット未満に蚭定するず、
䞀郚のプログラムを2以䞊高速化したす。 䞀郚の数孊ラむブラリは、
拡匵粟床80ビット浮動小数点挔算はデフォルトで有効になっおいたす。 ルヌチン
このようなラむブラリでは、通垞、粟床が倧幅に䜎䞋する可胜性がありたす。
このオプションを䜿甚しお粟床をに蚭定する堎合、「壊滅的なキャンセル」ず呌ばれたす
拡匵粟床未満。

-mstackrealign
入口でスタックを再調敎したす。 Intel x86 では、 -mstackrealign オプションはを生成したす
必芁に応じおランタむムスタックを再調敎する代替のプロロヌグず゚ピロヌグ。 これ
4バむトのスタックアラむンメントを維持するレガシヌコヌドず、
SSEずの互換性のために、16バむトのスタックアラむメントを維持したす。 属性も参照しおください
「force_align_arg_pointer」、個々の関数に適甚できたす。

-mpreferred-stack-boundary =NUM
スタック境界を2に揃えお維持しようずしたす。 NUM バむト境界。 もしも
-mpreferred-スタック境界 が指定されおいない堎合、デフォルトは416バむトたたは128ビットです。

譊告 SSE拡匵機胜を備えたx86-64アヌキテクチャのコヌドを生成する堎合
無効、 -mpreferred-stack-boundary = 3 スタック境界の敎列を維持するために䜿甚できたす
8バむト境界たで。 x86-64 ABIには16バむトのスタックアラむメントが必芁なため、これはABIです。
互換性がなく、スタックスペヌスが
重芁な制限。 このオプションは、関数がコンパむルされたずきに間違ったコヌドに぀ながりたす
16 バむトのスタック アラむンメント (暙準ラむブラリの関数など) が呌び出される
䜍眮合わせされおいないスタック。 この堎合、SSE 呜什によっおメモリのアラむメントがずれるこずがありたす。
トラップにアクセスしたす。 たた、可倉匕数は 16 バむトに察しお正しく凊理されたせん。
敎列されたオブゞェクト (x87 の long double ず __int128 を含む) が、間違った結果に぀ながりたす。
すべおのモゞュヌルをビルドする必芁がありたす -mpreferred-stack-boundary = 3、すべおのラむブラリを含みたす。
これには、システム ラむブラリずスタヌトアップ モゞュヌルが含たれたす。

-mincoming-stack-boundary =NUM
入っおくるスタックが2に揃えられおいるず仮定したす NUM バむト境界。 もしも
-mincoming-スタック境界 指定されおいない、によっお指定されたもの
-mpreferred-スタック境界 䜿甚されおいる。

PentiumおよびPentiumProでは、「double」および「longdouble」の倀を次のように調敎する必芁がありたす。
8バむト境界を参照 -悪性-ダブルたたは実行時のパフォヌマンスが倧幅に䜎䞋する
ペナルティ。 Pentium IIIでは、ストリヌミングSIMD拡匵呜什SSEデヌタ型「__m128」が
16バむトにアラむンされおいない堎合は正しく機胜したせん。

スタック䞊でこの倀を適切に配眮するには、スタックの境界を次のようにする必芁がありたす。
スタックに栌玍されおいる倀に必芁な䜍眮に配眮されたす。 さらに、すべおの機胜
スタックの敎列を維持するように生成する必芁がありたす。 したがっお、関数を呌び出す
䜎い方でコンパむルされた関数から、より高い優先スタック境界でコンパむルされた
優先スタック境界は、スタックの䜍眮がずれおいる可胜性がありたす。 をお勧めしたす
コヌルバックを䜿甚するラむブラリは、垞にデフォルト蚭定を䜿甚したす。

この䜙分な配眮は䜙分なスタックスペヌスを消費し、䞀般的にコヌドを増やしたす
サむズ。 組み蟌みシステムや
オペレヌティングシステムカヌネルは、優先アラむメントをに枛らしたい堎合がありたす
-mpreferred-stack-boundary = 2.

-うヌん
-mno-mmx
-mse
-mno-sse
-msse2
-mno-sse2
-msse3
-mno-sse3
-mssse3
-mno-ssse3
-msse4.1
-mno-sse4.1
-msse4.2
-mno-sse4.2
-msse4
-mno-sse4
-mavx
-mno-avx
-mavx2
-mno-avx2
-メむズ
-mno-aes
-mpclmul
-mno-pclmul
-mfsgsbase
-mno-fsgsbase
-mrdrnd
-mno-rdrdnd
-mf16c
-mno-f16c
-MFMA
-mno-fma
-msse4a
-mno-sse4a
-mfma4
-mno-fma4
-mxop
-mno-xop
-mlwp
-mno-lwp
-m3dnow
-mno-3dnow
-mpopcnt
-mno-popcnt
-マブム
-mno-abm
-mbmi
-mbmi2
-mno-bmi
-mno-bmi2
-mlzcnt
-mno-lzcnt
-mrtm
-MTBM
-mno-tbm
これらのスむッチは、MMX、SSE、SSE2、SSE3、
SSSE3、SSE4.1、AVX、AVX2、AES、PCLMUL、FSGSBASE、RDRND、F16C、FMA、SSE4A、FMA4、XOP、
LWP、ABM、BMI、BMI2、LZCNT、RTM たたは 3DNow! 拡匵呜什セット。 これらは
拡匵機胜は組み蟌み関数ずしおも利甚できたす: を参照しおください X86 内蔵 機胜、甚
これらのスむッチによっお有効化および無効化される機胜の詳现。

浮動小数点コヌドからSSE/SSE2呜什を自動的に生成するには
387の指瀺たで、を参照しおください -mfpmath = sse.

GCCは、次の堎合にSSEx呜什を抑制したす -mavx 䜿甚されおいる。 代わりに、新しいAVXを生成したす
必芁に応じお、すべおのSSEx呜什に察する呜什たたはAVXの同等性。

これらのオプションにより、GCCは生成されたコヌドでこれらの拡匵呜什を䜿甚できたす。
無し -mfpmath = sse。 ランタむムCPU怜出を実行するアプリケヌションは、コンパむルする必芁がありたす
適切なフラグを䜿甚しお、サポヌトされおいるアヌキテクチャごずに個別のファむル。 の
特に、CPU怜出コヌドを含むファむルは、
これらのオプション。

-mcld
このオプションは、関数のプロロヌグで「cld」呜什を発行するようにGCCに指瀺したす
文字列呜什を䜿甚したす。 文字列呜什は、遞択するDFフラグに䟝存したす
自動むンクリメントモヌドたたは自動デクリメントモヌドの間。 ABIがDFフラグを指定しおいる間
機胜入力時にクリアされ、䞀郚のオペレヌティングシステムはこの仕様に違反したせん
䟋倖ディスパッチャのDFフラグをクリアしたす。 䟋倖ハンドラは次のようになりたす
DFフラグが蚭定された状態で呌び出され、文字列の堎合に誀った方向モヌドになりたす
指瀺が䜿甚されたす。 このオプションは、32ビットx86タヌゲットでデフォルトで有効にできたす。
でGCCを構成する --enable-cld オプションを構成したす。 「cld」の生成
呜什はで抑制するこずができたす -mno-cld この堎合のコンパむラオプション。

-mvzeroupper
このオプションは、GCCに転送前に「vzeroupper」呜什を発行するように指瀺したす。
機胜からのフロヌを制埡しお、AVXからSSEぞの移行ペナルティも最小限に抑えたす
䞍芁な「zeroupper」組み蟌み関数を削陀したす。

-mprefer-avx128
このオプションは、128ビットAVXの代わりに256ビットAVX呜什を䜿甚するようにGCCに指瀺したす
自動ベクトル化の指瀺。

-mcx16
このオプションにより、GCCは「CMPXCHG16B」呜什を生成できたす。 「CMPXCHG16B」は
128ビットのダブルクワッドワヌドたたはowordデヌタ型でのアトミック操䜜甚。 これは
耇数のプロセッサたたは
コア。 この呜什は、アトミック組み蟌み関数の䞀郚ずしお生成されたす。を参照しおください。
__同期 ビルトむン or __アトミック ビルトむン 詳现に぀いおは。

-msahf
このオプションを䜿甚するず、64ビットコヌドで「SAHF」呜什を生成できたす。 初期のIntel
Pentium4G64ステップの導入前のIntel4をサポヌトするPentium1CPU
2005 幎 XNUMX 月には、によっおサポヌトされおいた "LAHF" および "SAHF" 呜什が欠けおいたした。
AMD64。 これらは、それぞれ特定のステヌタスフラグのロヌドおよびストア呜什です。
64ビットモヌドでは、「SAHF」呜什を䜿甚しお「fmod」、「drem」、および
「残りの」組み蟌み関数。 芋る その他 ビルトむン 詳现に぀いおは。

-mmovbe
このオプションを䜿甚するず、「movbe」呜什を䜿甚しお「__builtin_bswap32」を実装できたす。
および「__builtin_bswap64」。

-mcrc32
このオプションは、組み蟌み関数「__builtin_ia32_crc32qi」を有効にしたす。
「__builtin_ia32_crc32hi」、「__ builtin_ia32_crc32si」、「__builtin_ia32_crc32di」から
「crc32」マシン呜什を生成したす。

-mレシピ
このオプションにより、「RCPSS」および「RSQRTSS」呜什およびそれらのベクトル化の䜿甚が可胜になりたす
バリアント「RCPPS」および「RSQRTPS」を远加しおニュヌトンラプ゜ンステップを远加
シングルの堎合、「DIVSS」ず「SQRTSS」およびそれらのベクトル化されたバリアントの代わりに粟床
粟床の浮動小数点匕数。 これらの呜什は、次の堎合にのみ生成されたす
-funsafe-数孊の最適化 ず䞀緒に有効になりたす -有限数孊のみ &
-fno-トラップ-数孊。 シヌケンスのスルヌプットは
非盞互呜什のスルヌプット、シヌケンスの粟床は次のようになりたす。
最倧2ulp枛少したす぀たり、1.0の逆数は0.99999994に等しくなりたす。

GCCは「1.0f/sqrtfバツ" すでに「RSQRTSS」たたは「RSQRTPS」に関しお
  -ffast-æ•°å­Š たたは䞊蚘のオプションの組み合わせ、および必芁ありたせん -mレシピ.

たた、GCCは、远加のニュヌトン-ラフ゜ンステップを䜿甚しお䞊蚘のシヌケンスを出力するこずに泚意しおください。
ベクトル化された単粟床陀算ずベクトル化された"sqrtfバツ" すでに -ffast-æ•°å­Š
たたは䞊蚘のオプションの組み合わせ、および必芁ありたせん -mレシピ.

-mrecip =オプト
このオプションは、䜿甚できる盞互掚定呜什を制埡したす。 オプト  
オプションのコンマ区切りリスト。前に ! オプションを反転するには

を すべおの芋積もり手順を有効にしたす。

デフォルト
ず同等のデフォルトの呜什を有効にしたす -mレシピ.

なし
ず同等のすべおの芋積もり手順を無効にしたす -mno-レシピ.

div芁玠 スカラヌ陀算の近䌌を有効にしたす。

vec-div
ベクトル化された陀算の近䌌を有効にしたす。

平方根
スカラヌ平方根の近䌌を有効にしたす。

vec-sqrt
ベクトル化された平方根の近䌌を有効にしたす。

たずえば、 -mrecip = all、sqrt すべおの逆数近䌌を有効にし、
平方根を陀いお。

-mveclibabi =type
倖郚ラむブラリを䜿甚しお組み蟌み関数をベクトル化するために䜿甚するABIタむプを指定したす。
サポヌトされおいる倀 type   SVML Intelの短いベクトル数孊ラむブラリず aml
AMD数孊コアラむブラリ甚。 このオプションを䜿甚するには、䞡方 -ftree-ベクトル化 &
-funsafe-数孊の最適化 有効にする必芁があり、SVMLたたはACMLABIず互換性がある
ラむブラリはリンク時に指定する必芁がありたす。

GCCは珟圚、「vmldExp2」、「vmldLn2」、「vmldLog102」、「vmldLog102」、
"vmldPow2"、 "vmldTanh2"、 "vmldTan2"、 "vmldAtan2"、 "vmldAtanh2"、 "vmldCbrt2"、
"vmldSinh2"、 "vmldSin2"、 "vmldAsinh2"、 "vmldAsin2"、 "vmldCosh2"、 "vmldCos2"、
"vmldAcosh2"、 "vmldAcos2"、 "vmlsExp4"、 "vmlsLn4"、 "vmlsLog104"、 "vmlsLog104"、
"vmlsPow4"、 "vmlsTanh4"、 "vmlsTan4"、 "vmlsAtan4"、 "vmlsAtanh4"、 "vmlsCbrt4"、
"vmlsSinh4"、 "vmlsSin4"、 "vmlsAsinh4"、 "vmlsAsin4"、 "vmlsCosh4"、 "vmlsCos4"、
察応する関数型の「vmlsAcosh4」および「vmlsAcos4」 -mveclibabi = svml is
䜿甚枈み、および "__vrd2_sin"、 "__ vrd2_cos"、 "__ vrd2_exp"、 "__ vrd2_log"、 "__ vrd2_log2"、
"__vrd2_log10"、 "__ vrs4_sinf"、 "__ vrs4_cosf"、 "__ vrs4_expf"、 "__ vrs4_logf"、
察応する関数型の「__vrs4_log2f」、「__ vrs4_log10f」、および「__vrs4_powf」
い぀ -mveclibabi = acml 䜿甚されおいる。

-mabi =名
指定された呌び出し芏玄のコヌドを生成したす。 蚱容倀は システム for
GNU / Linuxおよびその他のシステムで䜿甚されるABI、および ms MicrosoftABIの堎合。 The
デフォルトでは、MicrosoftWindowsおよびSysVABIを察象ずする堎合はMicrosoftABIを䜿甚したす
他のすべおのシステムで。 を䜿甚しお、特定の関数のこの動䜜を制埡できたす。
関数属性 ms_abi/sysv_abi.

-mtls-dialect =type
を䜿甚しおスレッドロヌカルストレヌゞにアクセスするためのコヌドを生成したす ヌヌ or ヌヌ2 コンベンション。 ヌヌ
控えめなデフォルトです。 ヌヌ2 より効率的ですが、コンパむルず実行が远加される可胜性がありたす
すべおのシステムで満たすこずができない時間芁件。

-mpush-args
-mno-push-args
PUSH操䜜を䜿甚しお、送信パラメヌタヌを保管したす。 この方法は短く、通垞は
SUB / MOV操䜜を䜿甚する方法ず同じくらい高速で、デフォルトで有効になっおいたす。 いく぀かの
無効にするず、スケゞュヌリングが改善され、パフォヌマンスが䜎䞋する可胜性がありたす。
䟝存関係。

-maccumulate-発信匕数
有効にするず、発信匕数に必芁なスペヌスの最倧量はで蚈算されたす
関数プロロヌグ。 これは、ほずんどの最新のCPUでは、削枛されおいるため高速です。
䟝存関係、スケゞュヌリングの改善、および優先スタック時のスタック䜿甚量の削枛
境界は2に等しくありたせん。欠点は、コヌドサむズが著しく倧きくなるこずです。 これ
スむッチは意味したす -mno-push-args.

-ミリスレッド
MinGWでのスレッドセヌフな䟋倖凊理をサポヌトしたす。 スレッドセヌフに䟝存するプログラム
䟋倖凊理では、すべおのコヌドをコンパむルしおリンクする必芁がありたす -ミリスレッド オプション。 い぀
コンパむル、 -ミリスレッド 「-D_MT」を定矩したす。 リンクの際は専甚スレッドでリンクしたす
ヘルパヌ ラむブラリ -lmingwthrd これは、スレッドごずの䟋倖凊理デヌタをクリヌンアップしたす。

-mno-align-stringops
むンラむン文字列操䜜の宛先を揃えないでください。 このスむッチはコヌドを枛らしたす
宛先がすでに調敎されおいるが、GCCの堎合は、サむズが倧きくなり、パフォヌマンスが向䞊したす。
それに぀いお知りたせん。

-minline-all-stringops
デフォルトでは、GCCは、宛先がであるこずがわかっおいる堎合にのみ文字列操䜜をむンラむン化したす。
少なくずも4バむトの境界に揃えられたす。 これにより、より倚くのむンラむン化が可胜になり、コヌドが増加したす
サむズですが、高速の「memcpy」、「strlen」、およびに䟝存するコヌドのパフォヌマンスが向䞊する可胜性がありたす
短い長さの堎合は「memset」。

-minline-stringops-動的に
サむズが䞍明な文字列操䜜の堎合は、小さい堎合はむンラむンコヌドで実行時チェックを䜿甚したす
ブロックずラむブラリは倧きなブロックを必芁ずしたす。

-mstringop-strategy =ALG
䜿甚する特定のアルゎリズムの内郚決定ヒュヌリスティックをオヌバヌラむドしたす
文字列挔算のむンラむン化。 の蚱容倀 ALG には次の倀がありたす:

担圓者バむト
rep_4byte
rep_8byte
指定されたサむズのi386「rep」プレフィックスを䜿甚しお展開したす。

バむトルヌプ
ルヌプ
unrolled_loop
むンラむンルヌプに展開したす。

libcall
垞にラむブラリ呌び出しを䜿甚しおください。

-momit-リヌフフレヌムポむンタヌ
リヌフ関数のレゞスタにフレヌムポむンタを保持しないでください。 これにより、
フレヌムポむンタを保存、蚭定、埩元し、远加のレゞスタを䜜成する手順
リヌフ機胜で利甚できたす。 オプション -fomit-葉-フレヌム-ポむンタ フレヌムを削陀したす
リヌフ関数のポむンタ。デバッグが難しくなる可胜性がありたす。

-mtls-direct-seg-refs
-mno-tls-direct-seg-refs
TLSセグメントからのオフセットを䜿甚しおTLS倉数にアクセスできるかどうかを制埡したす
レゞスタ32ビットの堎合はgs、64ビットの堎合はfs、たたはスレッドベヌスポむンタが
远加した。 これが有効かどうかは、オペレヌティングシステムずそれが有効かどうかによっお異なりたす。
TLS領域党䜓をカバヌするようにセグメントをマップしたす。

GNU Cラむブラリを䜿甚するシステムの堎合、デフォルトはオンです。

-msse2avx
-mno-sse2avx
アセンブラがVEXプレフィックスを䜿甚しおSSE呜什を゚ンコヌドする必芁があるこずを指定したす。 オプション
-mavx これはデフォルトでオンになっおいたす。

- ミッフィヌ
-mno-フェントリ
プロファむリングがアクティブな堎合-pg、プロファむリングカりンタヌコヌルをプロロヌグの前に眮きたす。
泚x86アヌキテクチャヌでは、属性「ms_hook_prologue」は
のための瞬間 - ミッフィヌ & -pg.

-m8bit-idiv
-mno-8bit-idiv
Intel Atomなどの䞀郚のプロセッサでは、8ビットの笊号なし敎数陀算はよりもはるかに高速です。
32ビット/64ビット敎数陀算。 このオプションは、実行時チェックを生成したす。 䞡方の堎合
被陀数ず陀数は0から255の範囲内で、8ビットの笊号なし敎数陀算は
32ビット/64ビット敎数陀算の代わりに䜿甚されたす。

-mavx256-split-unaligned-load
-mavx256-split-unaligned-store
32バむトのAVXアラむンされおいないロヌドずストアを分割したす。

ボヌマン -m 䞊蚘に加えお、86ビットのx64-64プロセッサでスむッチがサポヌトされおいたす
環境。

-m32
-m64
-mx32
32 ビットたたは 64 ビット環境甚のコヌドを生成したす。 の -m32 オプション セット "int"、"long"、
および 32 ビットぞのポむンタヌ型をサポヌトし、任意の i386 システムで実行されるコヌドを生成したす。

  -m64 オプションは「int」を32ビットに蚭定し、「long」ずポむンタ型を64ビットに蚭定したす。
x86-64アヌキテクチャのコヌドを生成したす。 ダヌりィンの堎合のみ -m64 オプションも
をオフにしたす -fno-pic & -mdynamic-no-pic オプション。

  -mx32 オプションは、「int」、「long」、およびポむンタヌ型を32ビットに蚭定し、コヌドを生成したす
x86-64アヌキテクチャの堎合。

-mno-レッドゟヌン
x86-64コヌドにはいわゆる「レッドゟヌン」を䜿甚しないでください。 レッドゟヌンは、
x86-64 ABI; スタックポむンタの䜍眮を超えた128バむトの領域であり、
シグナルハンドラたたは割り蟌みハンドラによっお倉曎されるため、䞀時デヌタに䜿甚できたす
スタックポむンタを調敎せずに。 旗 -mno-レッドゟヌン このレッドゟヌンを無効にしたす。

-mcmodel = small
スモヌルコヌドモデルのコヌドを生成するプログラムずそのシンボルはでリンクされおいる必芁がありたす
アドレス空間の䞋䜍2GB。 ポむンタは64ビットです。 プログラムはするこずができたす
静的たたは動的にリンクされおいたす。 これはデフォルトのコヌドモデルです。

-mcmodel = kernel
カヌネルコヌドモデルのコヌドを生成したす。 カヌネルは、マむナス2GBで実行されたす。
アドレス空間。 このモデルは、Linuxカヌネルコヌドに䜿甚する必芁がありたす。

-mcmodel = medium
䞭型モデルのコヌドを生成したす。プログラムは、
アドレス空間。 小さな蚘号もそこに配眮されたす。 サむズが倧きいシンボル
-mlarge-data-threshold 倧きなデヌタたたはBSSセクションに配眮され、堎所を特定できたす
2GB以䞊。 プログラムは静的たたは動的にリンクできたす。

-mcmodel = large
ラヌゞモデルのコヌドを生成したす。 このモデルは、䜏所に぀いおの仮定を行いたせん
ずセクションのサむズ。

-maddress-mode = long
ロングアドレスモヌドのコヌドを生成したす。 これは64ビットおよびx32でのみサポヌトされたす
環境。 これは、64ビット環境のデフォルトのアドレスモヌドです。

-maddress-mode = short
ショヌトアドレスモヌドのコヌドを生成したす。 これは、32ビットおよびx32でのみサポヌトされたす
環境。 これは、32ビットおよびx32環境のデフォルトのアドレスモヌドです。

i386 & x86-64 Windows オプション

これらの远加オプションは、MicrosoftWindowsタヌゲットで䜿甚できたす。

-mconsole
このオプションは、指瀺するこずにより、コン゜ヌルアプリケヌションを生成するこずを指定したす
コン゜ヌルアプリケヌションに必芁なPEヘッダヌサブシステムタむプを蚭定するリンカヌ。
このオプションはCygwinおよびMinGWタヌゲットで䜿甚可胜であり、デフォルトで有効になっおいたす。
それらのタヌゲット。

-mdll
このオプションは、CygwinおよびMinGWタヌゲットで䜿甚できたす。 DLLを指定したす---a
ダむナミックリンクラむブラリ---生成され、必芁なものを遞択できるようになりたす
ランタむムスタヌトアップオブゞェクトず゚ントリポむント。

-mnop-fun-dllimport
このオプションは、CygwinおよびMinGWタヌゲットで䜿甚できたす。 それは、
「dllimport」属性は無芖する必芁がありたす。

-mスレッド
このオプションは、MinGWタヌゲットで䜿甚できたす。 MinGW固有のスレッドを指定したす
サポヌトが䜿甚されたす。

-ミュニコヌド
このオプションは、MinGW-w64タヌゲットで䜿甚できたす。 「UNICODE」プリプロセッサが発生したす
マクロを事前定矩し、Unicode察応のランタむム起動コヌドを遞択したす。

-mwin32
このオプションは、CygwinおよびMinGWタヌゲットで䜿甚できたす。 それは兞型的なこずを指定したす
Microsoft Windowsの事前定矩されたマクロはプリプロセッサで蚭定されたすが、蚭定されたせん
ランタむムラむブラリ/スタヌトアップコヌドの遞択に圱響を䞎えたす。

-mwindows
このオプションは、CygwinおよびMinGWタヌゲットで䜿甚できたす。 GUIを指定したす
アプリケヌションは、リンカにPEヘッダヌを蚭定するように指瀺するこずによっお生成されたす
サブシステムタむプを適切に。

-fno-set-stack-executable
このオプションは、MinGWタヌゲットで䜿甚できたす。 の実行可胜フラグを指定したす
ネストされた関数で䜿甚されるスタックが蚭定されおいたせん。 これは、実行䞭のバむナリに必芁です
Microsoft Windowsのカヌネルモヌドでは、蚭定に䜿甚されるUser32APIがありたす
実行可胜特暩は䜿甚できたせん。

-fwritable-relocated-rdata
このオプションは、MinGWおよびCygwinタヌゲットで䜿甚できたす。 それは再配眮されたこずを指定したす-
読み取り専甚セクションのデヌタは、.dataセクションに配眮されたす。 これは高霢者に必芁です
疑䌌再配眮のための.rdataセクションの倉曎をサポヌトしおいないランタむム。

-mpe-aligned-commons
このオプションは、CygwinおよびMinGWタヌゲットで䜿甚できたす。 それはGNUが
COMMON倉数の正しい配眮を可胜にするPEファむル圢匏の拡匵
コヌドを生成するずきに䜿甚する必芁がありたす。 GCCが次のこずを怜出するず、デフォルトで有効になりたす。
構成䞭に芋぀かったタヌゲットアセンブラヌがこの機胜をサポヌトしたす。

以䞋も参照しおください i386 & x86-64 オプション 暙準オプションの堎合。

IA-64 オプション

これらは、 -m IntelIA-64アヌキテクチャ甚に定矩されたオプション。

-mbig-゚ンディアン
ビッグ゚ンディアンタヌゲットのコヌドを生成したす。 これはHP-UXのデフォルトです。

-mlittle-゚ンディアン
リトル゚ンディアンタヌゲットのコヌドを生成したす。 これは、AIX5およびGNU/Linuxのデフォルトです。

-mgnu-as
-mno-gnu-as
GNUアセンブラのコヌドを生成するたたは生成しない。 これがデフォルトです。

-mgnu-ld
-mno-gnu-ld
GNUリンカのコヌドを生成するたたは生成しない。 これがデフォルトです。

-mno-pic
グロヌバルポむンタレゞスタを䜿甚しないコヌドを生成したす。 結果は䜍眮ではありたせん
独立したコヌドであり、IA-64ABIに違反しおいたす。

-mvolatile-asm-停止
-mno-volatile-asm-stop
揮発性asmステヌトメントの盎前ず盎埌にストップビットを生成したすたたは生成したせん。

-mレゞスタ名
-mno レゞスタ名
生成するたたは生成しない in, LOC, でる スタックレゞスタのレゞスタ名。 これ
アセンブラの出力が読みやすくなる堎合がありたす。

-mno-sdata
-msdata
スモヌルデヌタセクションを䜿甚する最適化を無効たたは有効にしたす。 これは圹に立぀かもしれたせん
オプティマむザヌのバグを回避するため。

-m定数-gp
単䞀の定数グロヌバルポむンタ倀を䜿甚するコヌドを生成したす。 これは次の堎合に䟿利です
カヌネルコヌドのコンパむル。

-mauto-pic
自己再配眮可胜なコヌドを生成したす。 これは、 -m定数-gp。 これは䟿利です
ファヌムりェアコヌドをコンパむルするずき。

-minline-float-divide-min-latency
最小レむテンシヌを䜿甚しお浮動小数点倀のむンラむン陀算のコヌドを生成する
アルゎリズム。

-minline-float-divide-max-スルヌプット
最倧スルヌプットを䜿甚しお、浮動小数点倀のむンラむン陀算甚のコヌドを生成したす
アルゎリズム。

-mno-inline-float-divide
浮動小数点倀の陀算甚のむンラむンコヌドを生成しないでください。

-minline-int-divide-min-latency
最小レむテンシヌを䜿甚しお敎数倀のむンラむン陀算のコヌドを生成する
アルゎリズム。

-minline-int-divide-max-スルヌプット
最倧スルヌプットを䜿甚しお敎数倀のむンラむン陀算甚のコヌドを生成する
アルゎリズム。

-mno-inline-int-divide
敎数倀の陀算甚のむンラむンコヌドを生成しないでください。

-minline-sqrt-min-latency
最小遅延アルゎリズムを䜿甚しお、むンラむン平方根のコヌドを生成したす。

-minline-sqrt-max-スルヌプット
最倧スルヌプットアルゎリズムを䜿甚しお、むンラむン平方根のコヌドを生成したす。

-mno-むンラむン-sqrt
「sqrt」のむンラむンコヌドを生成しないでください。

-混乱-狂った
-mno-fusion-madd
融合された乗算/加算たたは乗算/枛算を䜿甚するコヌドを生成する生成しない
指瀺。 デフォルトでは、これらの呜什を䜿甚したす。

-mno-dwarf2-asm
-mdwarf2-asm
DWARF 2の行番号のデバッグ情報甚のアセンブラコヌドを生成しないたたは生成しない。
これは、GNUアセンブラを䜿甚しない堎合に圹立぀こずがありたす。

-ほが停止ビット
-mno-early-stop-bits
ストップビットを、次の呜什の盎前よりも前に配眮できるようにしたす。
ストップビットをトリガヌしたした。 これにより、呜什スケゞュヌリングを改善できたすが、必ずしもそうずは限りたせん。
そうする。

-mfixed-range =レゞスタ範囲
指定されたレゞスタ範囲を固定レゞスタずしお扱うコヌドを生成したす。 固定レゞスタ
レゞスタアロケヌタが䜿甚できないものです。 これは、カヌネルをコンパむルするずきに圹立ちたす
コヌド。 レゞスタ範囲は、ダッシュで区切られたXNUMX぀のレゞスタずしお指定されたす。 倚数
レゞスタ範囲は、コンマで区切っお指定できたす。

-mtls-size =TLS サむズ
即時TLSオフセットのビットサむズを指定したす。 有効な倀は14、22、および64です。

-mtune =CPUタむプ
特定のCPUの呜什スケゞュヌリングを調敎したす。有効な倀は次のずおりです。 むタニりム,
むタニりム1, 傷぀いた, むタニりム2, マッキンリヌ.

-ミルプ32
-mlp64
32ビットたたは64ビット環境甚のコヌドを生成したす。 32ビット環境はintを蚭定したす。
longおよび32ビットぞのポむンタ。 64ビット環境では、intが32ビットおよびlongに蚭定されたす。
64ビットぞのポむンタ。 これらはHP-UX固有のフラグです。

-mno-sched-br-data-spec
-msched-br-デヌタ仕様
リロヌド前のDis / En可胜なデヌタ投機的スケゞュヌリング。 これにより、
「ld.a」呜什および察応するチェック呜什「ld.c」/「chk.a」。 The
デフォルトは「無効」です。

-msched-ar-data-spec
-mno-sched-ar-data-spec
リロヌド埌のEn / Dis可胜なデヌタ投機的スケゞュヌリング。 これにより、
「ld.a」呜什および察応するチェック呜什「ld.c」/「chk.a」。 The
デフォルトは「有効」です。

-mno-sched-control-spec
-msched-control-spec
Dis / En可胜な制埡投機的スケゞュヌリング。 この機胜は、
リヌゞョンスケゞュヌリング぀たり、リロヌド前。 これにより、「ld.s」が生成されたす
指瀺および察応するチェック指瀺「chk.s」。 デフォルトは
「無効にする」。

-msched-br-in-data-spec
-mno-sched-br-in-data-spec
デヌタに䟝存する呜什のEn / Dis可胜な投機的スケゞュヌリング
リロヌド前の投機的ロヌド。 これはでのみ有効です -msched-br-デヌタ仕様
有効。 デフォルトは「enable」です。

-msched-ar-in-data-spec
-mno-sched-ar-in-data-spec
デヌタに䟝存する呜什のEn / Dis可胜な投機的スケゞュヌリング
リロヌド埌の投機的ロヌド。 これはでのみ有効です -msched-ar-data-spec
有効。 デフォルトは「enable」です。

-msched-in-control-spec
-mno-sched-in-control-spec
に䟝存する呜什のEn / Dis可胜な投機的スケゞュヌリング
投機的負荷を制埡したす。 これはでのみ有効です -msched-control-spec 有効になりたした。
デフォルトは「enable」です。

-mno-sched-prefer-non-data-spec-insns
-msched-prefer-non-data-spec-insns
有効にするず、デヌタ投機的呜什がスケゞュヌルに遞択されたす。
珟時点で他の遞択肢。 これにより、デヌタ掚枬をさらに掻甚できたす
保守的。 デフォルトは「無効」です。

-mno-sched-prefer-non-control-spec-insn
-msched-prefer-non-control-spec-insn
有効にするず、制埡投機的呜什がスケゞュヌルに遞択されるのは、
珟時点では他の遞択肢はありたせん。 これにより、制埡投機が倚く利甚されたす
より保守的。 デフォルトは「無効」です。

クリティカルパスの-mno-sched-count-spec-in-critical-path
クリティカルパスの-msched-count-spec-in-critical-path
有効にするず、投機的な䟝存関係が蚈算䞭に考慮されたす。
指瀺の優先順䜍。 これにより、掚枬をもう少し掻甚できたす
保守的。 デフォルトは「無効」です。

-msched-spec-ldc
単玔なデヌタ掚枬チェックを䜿甚したす。 このオプションはデフォルトでオンになっおいたす。

-msched-control-spec-ldc
コントロヌルの掚枬には簡単なチェックを䜿甚したす。 このオプションはデフォルトでオンになっおいたす。

-msched-stop-bits-after-ever-cycle
スケゞュヌリング時に、すべおのサむクルの埌にストップビットを配眮したす。 このオプションはデフォルトでオンになっおいたす。

-msched-fp-mem-deps-zero-cost
浮動小数点ストアずロヌドが次の堎合に競合を匕き起こす可胜性は䜎いず想定したす。
同じ呜什グルヌプに配眮されたす。 このオプションはデフォルトで無効になっおいたす。

-msel-sched-dont-check-control-spec
遞択的スケゞュヌリングで制埡投機のチェックを生成したす。 このフラグは
デフォルトでは無効になっおいたす。

-msched-max-memory-insns =マックスむンSNS
呜什グルヌプごずのメモリinsnの数を制限し、優先床を䜎くしたす
同じ呜什グルヌプでスケゞュヌルしようずしおいる埌続のメモリinsn。
キャッシュバンクの競合を防ぐために頻繁に圹立ちたす。 デフォルト倀は1です。

-msched-max-memory-insn-ハヌドリミット
で指定された制限を䜜成したす msched-max-memory-insn 厳しい制限、それ以䞊の犁止
呜什グルヌプのその数より。 それ以倖の堎合、制限は「゜フト」、぀たり
制限に達した堎合は非メモリ操䜜が優先されたすが、メモリ
操䜜はただスケゞュヌルされおいる可胜性がありたす。

LM32 オプション

ボヌマン -m LatticeMico32アヌキテクチャのオプションは次のように定矩されおいたす。

-mbarrel-shift-察応
バレルシフタ呜什を有効にしたす。

-mdivide察応
陀算ずモゞュラスの呜什を有効にしたす。

-mmultiply-察応
乗算呜什を有効にしたす。

-msign-extend-enabled
笊号拡匵呜什を有効にしたす。

-ミュヌザヌ察応
ナヌザヌ定矩の呜什を有効にしたす。

M32C オプション

-mcpu =名
コヌドを生成するCPUを遞択したす。 名 のいずれかである可胜性がありたす r8c R8C/Tiny甹
シリヌズ、 m16c M16C最倧/ 60シリヌズの堎合、 m32cm M16C / 80シリヌズの堎合、たたは m32c
M32C/80シリヌズ甚。

-msim
プログラムがシミュレヌタヌで実行されるこずを指定したす。 これにより、代替が発生したす
たずえば、ファむルI/Oをサポヌトするリンク先のランタむムラむブラリ。 あなたはいけたせん
実際のハヌドりェアで実行されるプログラムを生成する堎合は、このオプションを䜿甚しおください。 絶察です
必芁なI/O関数甚に独自のランタむムラむブラリを提䟛したす。

-memregs =数
コヌド生成䞭にGCCが䜿甚するメモリベヌスの疑䌌レゞスタの数を指定したす。
これらの疑䌌レゞスタは実際のレゞスタず同じように䜿甚されるため、䞡者の間にはトレヌドオフがありたす。
コヌドを䜿甚可胜なレゞスタに適合させるGCCの機胜、およびパフォヌマンスの䜎䞋
レゞスタの代わりにメモリを䜿甚したす。 プログラム内のすべおのモゞュヌルは
このオプションず同じ倀でコンパむルされたす。 そのため、これを䜿甚しおはいけたせん
GCCのデフォルトのランタむムラむブラリのオプション。

M32R / D オプション

ボヌマン -m オプションは、ルネサスM32R/Dアヌキテクチャ甚に定矩されおいたす。

-m32r2
M32R/2のコヌドを生成したす。

-m32rx
M32R/Xのコヌドを生成したす。

-m32r
M32Rのコヌドを生成したす。 これがデフォルトです。

-mmodel = small
すべおのオブゞェクトがメモリの䞋䜍16MBにあるず想定したすそのため、それらのアドレスは
「ld24」呜什でロヌドされたす、すべおのサブルヌチンが
「bl」呜什。 これがデフォルトです。

特定のオブゞェクトのアドレス指定可胜性は、「model」属性を䜿甚しお蚭定できたす。

-mmodel =medium
オブゞェクトが32ビットアドレス空間のどこにあっおもよいず仮定したすコンパむラが生成したす
アドレスをロヌドするための「seth/add3」呜什、およびすべおのサブルヌチンが
「bl」呜什で到達可胜。

-mmodel = large
オブゞェクトが32ビットアドレス空間のどこにあっおもよいず仮定したすコンパむラが生成したす
アドレスをロヌドするための「seth/add3」呜什、およびサブルヌチンがそうではない可胜性があるず想定
「bl」呜什で到達可胜コンパむラははるかに遅い生成
「seth/add3 / jl」呜什シヌケンス。

-msdata = none
小さなデヌタ領域の䜿甚を無効にしたす。 倉数は次のいずれかに入れられたす .data, .bssたたは
.rodata ("section" 属性が指定されおいない堎合)。 これがデフォルトです。

小さなデヌタ領域はセクションで構成されおいたす .sdata & .sbss. オブゞェクトは明瀺的に
これらのセクションのいずれかを䜿甚しお、「セクション」属性で小さなデヌタ領域に配眮したす。

-msdata = sdata
小さなグロヌバルデヌタず静的デヌタを小さなデヌタ領域に配眮したすが、特別なデヌタは生成しないでください
それらを参照するコヌド。

-msdata = use
小さなグロヌバルデヌタず静的デヌタを小さなデヌタ領域に配眮し、特別なデヌタを生成したす
それらを参照するための指瀺。

-G NUM
グロヌバルオブゞェクトず静的オブゞェクトを以䞋に配眮したす NUM 小さなデヌタぞのバむトたたは
通垞のデヌタたたはBSSセクションの代わりにBSSセクション。 のデフォルト倀 NUM is
8。 ザ -msdata オプションは次のいずれかに蚭定する必芁がありたす デヌタ or ぀かいたす このオプションには
効果。

すべおのモゞュヌルは同じものでコンパむルする必芁がありたす -G NUM 䟡倀。 別のコンパむル
の倀 NUM 動䜜する堎合ず動䜜しない堎合がありたす。 そうでない堎合、リンカヌぱラヌを出したす
メッセヌゞ---䞍正なコヌドが生成されたせん。

-mdebug
コンパむラのM32R固有のコヌドに、圹立぀可胜性のある統蚈を衚瀺させたす
プログラムのデバッグで。

-悪性ルヌプ
すべおのルヌプを32バむト境界に揃えたす。

-mno-align-loops
ルヌプに察しお32バむトのアラむンメントを匷制しないでください。 これがデフォルトです。

-missue-rate =数
問題 数 サむクルごずの呜什。 数 1たたは2のみにするこずができたす。

-mbranch-cost =数
数 1たたは2のみにするこずができたす。1の堎合、条件付きよりも分岐が優先されたす
コヌド、それが2の堎合、反察が適甚されたす。

-mflush-trap =数
キャッシュのフラッシュに䜿甚するトラップ番号を指定したす。 デフォルトは12です。有効
数字は0から15たでです。

-mno-flush-trap
トラップを䜿甚しおキャッシュをフラッシュできないこずを指定したす。

-mflush-func =名
キャッシュをフラッシュするために呌び出すオペレヌティングシステム関数の名前を指定したす。 The
デフォルトは _フラッシュ_キャッシュ、ただし、関数呌び出しは、トラップが䜿甚できない堎合にのみ䜿甚されたす。

-mno-flush-func
キャッシュをフラッシュするためのOS機胜がないこずを瀺したす。

M680x0 オプション

これらは、 -m M680x0およびColdFireプロセッサ甚に定矩されたオプション。 デフォルト蚭定
コンパむラヌの構成時に遞択されたアヌキテクチャヌによっお異なりたす。 デフォルト
最も䞀般的な遞択肢を以䞋に瀺したす。

-XNUMX月=アヌチ
特定のM680x0たたはColdFire呜什セットアヌキテクチャのコヌドを生成したす。
の蚱容倀 アヌチ M680x0アヌキテクチャの堎合は次のずおりです。 68000, 68010, 68020, 68030,
68040, 68060 & cpu32。 ColdFireアヌキテクチャは、Freescaleの
ISAの分類ず蚱容倀は次のずおりです。 むサア, むサプラス, むザブ & アむザック.

GCC はマクロを定矩したす __mcfアヌチ__ ColdFire タヌゲットのコヌドを生成しおいるずきはい぀でも。
  アヌチ このマクロでは、 -行進 䞊蚘の匕数。

䞀緒に䜿甚するず、 -行進 & -ムチュヌン 類䌌のファミリで実行されるコヌドを遞択したす
プロセッサですが、特定のマむクロアヌキテクチャ甚に最適化されおいたす。

-mcpu =CPU
特定のM680x0たたはColdFireプロセッサのコヌドを生成したす。 M680x0 CPUsは
68000, 68010, 68020, 68030, 68040, 68060, 68302, 68332 & cpu32。 ColdFire CPUs
以䞋の衚に、CPUをファミリに分類したものを瀺したす。

家族  -mcpu 匕数
51 : 51 51ac 51ag 51cn 51em 51je 51jf 51jg 51jm 51 mm 51qe 51qm
5206 : 5202 5204 5206
5206e : 5206e
5208 : 5207 5208
5211a : 5210a 5211a
5213 : 5211 5212 5213
5216 : 5214 5216
52235 : 52230 52231 52232 52233 52234 52235
5225 : 5224 5225
52259 : 52252 52254 52255 52256 52258 52259
5235 : 5232 5233 5234 5235 523x
5249 : 5249
5250 : 5250
5271 : 5270 5271
5272 : 5272
5275 : 5274 5275
5282 : 5280 5281 5282 528x
53017 : 53011 53012 53013 53014 53015 53016 53017
5307 : 5307
5329 : 5327 5328 5329 532x
5373 : 5372 5373 537x
5407 : 5407
5475 : 5470 5471 5472 5473 5474 5475 547x 5480 5481 5482 5483 5484 5485

-mcpu =CPU オヌバヌラむド -XNUMX月=アヌチ if アヌチ ず互換性がありたす CPU。 他の組み合わせ
-mcpu & -行進 拒吊されたす。

GCC はマクロを定矩したす __mcf_cpu_CPU ColdFireタヌゲットの堎合 CPU が遞択されおいたす。 たた
定矩 __mcf_family_家族、ここでの倀 家族 䞊蚘の衚で䞎えられたす。

-mtune =曲
によっお蚭定された制玄内で特定のマむクロアヌキテクチャのコヌドを調敎したす -行進
& -mcpu。 M680x0マむクロアヌキテクチャは次のずおりです。 68000, 68010, 68020, 68030, 68040,
68060 & cpu32。 ColdFireマむクロアヌキテクチャは次のずおりです。 cfv1, cfv2, cfv3, cfv4 &
cfv4e.

䜿甚するこずもできたす -mtune = 68020-40 68020で比范的適切に実行する必芁があるコヌドの堎合、
68030および68040タヌゲット。 -mtune = 68020-60 同様ですが、68060のタヌゲットが含たれおいたす
良い。 これらのXNUMX぀のオプションは、ず同じチュヌニング決定を遞択したす -m68020-40 & -m68020-60
。

GCC はマクロを定矩したす __mcアヌチ & __mcアヌチ__ 680x0アヌキテクチャにチュヌニングする堎合
アヌチ. たた、 mcアヌチ どちらかでない限り -アンシ たたは非GNU -暙準 オプションが䜿甚されたす。
GCCが、によっお遞択されたさたざたなアヌキテクチャに合わせお調敎しおいる堎合 -mtune = 68020-40 or
-mtune = 68020-60、範囲内のすべおのアヌキテクチャのマクロを定矩したす。

GCC はマクロも定矩したす。 分早い__ ColdFireマむクロアヌキテクチャにチュヌニングする堎合
早いここで、 早い 䞊蚘の匕数のXNUMX぀です。

-m68000
-mc68000
68000の出力を生成したす。これは、コンパむラが次のように構成されおいる堎合のデフォルトです。
68000ベヌスのシステム。 ず同等です -68000月=XNUMX.

このオプションは、68000を含む000たたはEC68008コアのマむクロコントロヌラヌに䜿甚したす。
68302、68306、68307、68322、68328、および68356。

-m68010
68010の出力を生成したす。これは、コンパむラが次のように構成されおいる堎合のデフォルトです。
68010ベヌスのシステム。 ず同等です -68010月=XNUMX.

-m68020
-mc68020
68020の出力を生成したす。これは、コンパむラが次のように構成されおいる堎合のデフォルトです。
68020ベヌスのシステム。 ず同等です -68020月=XNUMX.

-m68030
68030の出力を生成したす。これは、コンパむラが次のように構成されおいる堎合のデフォルトです。
68030ベヌスのシステム。 ず同等です -68030月=XNUMX.

-m68040
68040の出力を生成したす。これは、コンパむラが次のように構成されおいる堎合のデフォルトです。
68040ベヌスのシステム。 ず同等です -68040月=XNUMX.

このオプションは、によっお゚ミュレヌトする必芁がある68881/68882呜什の䜿甚を犁止したす。
68040の゜フトりェア。68040に゚ミュレヌトするコヌドがない堎合は、このオプションを䜿甚しおください
それらの指瀺。

-m68060
68060の出力を生成したす。これは、コンパむラが次のように構成されおいる堎合のデフォルトです。
68060ベヌスのシステム。 ず同等です -68060月=XNUMX.

このオプションは、68020および68881/68882呜什の䜿甚を犁止したす。
68060の゜フトりェアによっお゚ミュレヌトされたす。68060にコヌドがない堎合は、このオプションを䜿甚しおください
それらの呜什を゚ミュレヌトしたす。

-mcpu32
CPU32の出力を生成したす。 これは、コンパむラが次のように構成されおいる堎合のデフォルトです。
CPU32ベヌスのシステム。 ず同等です -march = cpu32.

このオプションは、32を含むCPU32たたはCPU68330+コアを搭茉したマむクロコントロヌラヌに䜿甚したす。
68331、68332、68333、68334、68336、68340、68341、68349、68360。

-m5200
520XColdFireCPUの出力を生成したす。 これは、コンパむラが
520Xベヌスのシステム甚に構成されおいたす。 ず同等です -mcpu = 5206、そしお今
そのオプションを支持しお非掚奚になりたした。

このオプションは、MCF5200、MCF5202、
MCF5204およびMCF5206。

-m5206e
5206eColdFireCPUの出力を生成したす。 このオプションは廃止され、
同等のもの -mcpu = 5206e.

-m528x
ColdFire528Xファミリのメンバヌの出力を生成したす。 オプションは珟圚
同等のものを支持しお非掚奚 -mcpu = 528x.

-m5307
ColdFire5307CPUの出力を生成したす。 このオプションは廃止され、
同等の -mcpu = 5307.

-m5407
ColdFire5407CPUの出力を生成したす。 このオプションは廃止され、
同等の -mcpu = 5407.

-mcfv4e
ColdFire V4eファミリCPUの出力を生成したす䟋547x / 548x。 これには、
ハヌドりェア浮動小数点呜什。 オプションはず同等です -mcpu = 547xは
珟圚、そのオプションを優先しお非掚奚になっおいたす。

-m68020-40
新しい呜什を䜿甚せずに、68040の出力を生成したす。 この結果
68020/68881たたは68030のいずれかで比范的効率的に実行できるコヌド内
68040.生成されたコヌドは、で゚ミュレヌトされた68881呜什を䜿甚したす
68040.

オプションはず同等です -68020月=XNUMX -mtune = 68020-40.

-m68020-60
新しい呜什を䜿甚せずに、68060の出力を生成したす。 この結果
68020/68881たたは68030のいずれかで比范的効率的に実行できるコヌド内
68040.生成されたコヌドは、で゚ミュレヌトされた68881呜什を䜿甚したす
68060.

オプションはず同等です -68020月=XNUMX -mtune = 68020-60.

-mhard-float
-m68881
浮動小数点呜什を生成したす。 これは68020以降のデフォルトであり、
FPU を搭茉した ColdFire デバむス甚。 マクロを定矩したす __HAVE_68881__ M680x0 で
タヌゲットず __mcffpu__ ColdFire タヌゲットで。

-msoft-float
浮動小数点呜什を生成しないでください。 代わりにラむブラリ呌び出しを䜿甚しおください。 これは
68000、68010、および68832タヌゲットのデフォルト。 これはColdFireのデフォルトでもありたす
FPUを持たないデバむス。

-mdiv
-mno-div
ColdFireハヌドりェアの陀算ず剰䜙の呜什を生成したす生成したせん。 もしも
-行進 なしで䜿甚されたす -mcpu、デフォルトは、ColdFireアヌキテクチャの堎合は「オン」、「オフ」です。
M680x0アヌキテクチャの堎合。 それ以倖の堎合、デフォルトはタヌゲットCPUから取埗されたすいずれか
デフォルトのCPU、たたはによっお指定されたCPU -mcpu。 たずえば、デフォルトは「オフ」です
for -mcpu = 5206 および「オン」 -mcpu = 5206e.

GCC はマクロを定矩したす __mcfhwdiv__ このオプションが有効になっおいる堎合。

-mshort
タむプ「int」は「shortint」のように16ビット幅であるず考えおください。 さらに、パラメヌタ
スタックに枡されたものは、APIがそのAPIを䜿甚しおいるタヌゲットでも、16ビット境界に揃えられたす。
32ビットぞの昇栌を矩務付けおいたす。

-mno-short
タむプ「int」を16ビット幅ず芋なさないでください。 これがデフォルトです。

-mnobitfield
-mno-ビットフィヌルド
ビットフィヌルド呜什は䜿甚しないでください。 The -m68000, -mcpu32 & -m5200 オプションは意味したす
-mnobitfield.

-mbitfield
ビットフィヌルド呜什を䜿甚しおください。 The -m68020 オプションは意味したす -mbitfield。 これは
68020甚に蚭蚈された構成を䜿甚する堎合のデフォルト。

-mrtd
別の関数呌び出し芏玄を䜿甚したす。この芏則では、固定の関数を䜿甚したす
匕数の数は、匕数をポップする「rtd」呜什で返されたす
垰りながら。 これにより、呌び出し元にXNUMX぀の呜什を保存する必芁がないため、
そこに匕数をポップしたす。

この呌び出し芏玄は、Unixで通垞䜿甚される芏玄ず互換性がないため、
Unixコンパむラでコンパむルされたラむブラリを呌び出す必芁がある堎合は䜿甚できたせん。

たた、倉数を取るすべおの関数の関数プロトタむプを提䟛する必芁がありたす
匕数の数「printf」を含む。 そうしないず、誀ったコヌドが生成されたす
それらの関数の呌び出し。

さらに、関数の数が倚すぎるず、コヌドが倧幅に䞍正確になりたす。
匕数。 通垞、䜙分な匕数は無害に無芖されたす。

「rtd」呜什は、68010、68020、68030、68040、68060、およびCPU32でサポヌトされおいたす。
プロセッサですが、68000たたは5200ではありたせん。

-mno-rtd
によっお遞択された呌び出し芏玄を䜿甚しないでください -mrtd。 これがデフォルトです。

-悪性-int
-mno-align-int
GCCが「int」、「long」、「long long」、「float」、「double」、および「long」を敎列させるかどうかを制埡したす
32ビット境界のdouble"倉数-悪性-intたたは16ビット境界
(-mno-align-int。 倉数を32ビット境界に揃えるず、実行されるコヌドが生成されたす
より倚くのメモリを犠牲にしお、32ビットバスを備えたプロセッサではやや高速です。

譊告 あなたが䜿甚する堎合 -悪性-int スむッチ、GCCは䞊蚘を含む構造を敎列させたす
公開されおいるほずんどのアプリケヌションのバむナリむンタヌフェむス仕様ずは異なるタむプ
m68k。

-mpcrel
グロヌバルを䜿甚する代わりに、68000のPC盞察アドレッシングモヌドを盎接䜿甚したす
オフセットテヌブル。 珟圚、このオプションは -fpic、最倧16ビットのオフセットを蚱可
PC盞察アドレス指定甚。 -fPIC 珟圚、でサポヌトされおいたせん -mpcrelしかし
これは68020以降のプロセッサでサポヌトされる可胜性がありたす。

-mno-strict-align
-mstrict-align
アラむンされおいないメモリ参照がシステムによっお凊理されるず想定しないでくださいしたせん。

-msep-デヌタ
デヌタセグメントをメモリの別の領域に配眮できるようにするコヌドを生成する
テキストセグメントから。 これにより、環境内でのむンプレヌス実行が可胜になりたす。
仮想メモリ管理。 このオプションは、 -fPIC.

-mno-sep-デヌタ
デヌタセグメントがテキストセグメントの埌に続くず想定するコヌドを生成したす。 これは
デフォルト。

-mid-共有ラむブラリ
ラむブラリIDメ゜ッドを介しお共有ラむブラリをサポヌトするコヌドを生成したす。 これにより、
仮想メモリのない環境でのむンプレヌス実行および共有ラむブラリの堎合
管理。 このオプションは、 -fPIC.

-mno-id-共有ラむブラリ
IDベヌスの共有ラむブラリが䜿甚されおいるず想定しないコヌドを生成したす。 これは
デフォルト。

-mshared-library-id = n
コンパむルされるIDベヌスの共有ラむブラリの識別番号を指定したす。
倀0を指定するず、よりコンパクトなコヌドが生成されたす。 他の倀を指定するず、
その番号を珟圚のラむブラリに割り圓おたすが、これ以䞊のスペヌスや時間はありたせん
このオプションを省略するよりも効率的です。

-mxgot
-mno-xgot
ColdFireの䜍眮に䟝存しないコヌドを生成する堎合は、次の堎合に機胜するコヌドを生成したす。
GOTには8192を超える゚ントリがありたす。 このコヌドはコヌドよりも倧きくお遅い
このオプションなしで生成されたす。 M680x0プロセッサでは、このオプションは必芁ありたせん。 -fPIC
十分です。

GCCは通垞、単䞀の呜什を䜿甚しおGOTから倀をロヌドしたす。 これは
比范的効率的で、GOTが玄64kよりも小さい堎合にのみ機胜したす。 なんでも
倧きいず、リンカは次のような゚ラヌを報告したす。

再配眮が収たるように切り捚おられたしたR_68K_GOT16O f​​oobar

これが発生した堎合は、コヌドを再コンパむルする必芁がありたす -mxgot。 その埌、
非垞に倧きなGOT。 ただし、で生成されたコヌド -mxgot 効率が悪いので
グロヌバルシンボルの倀をフェッチするために4぀の呜什を取りたす。

GNUリンカヌの新しいバヌゞョンを含む䞀郚のリンカヌは、䜜成できるこずに泚意しおください。
耇数のGOTず゜ヌトGOT゚ントリ。 あなたがそのようなリンカヌを持っおいるなら、あなたはただ必芁なはずです
䜿甚する -mxgot 8192を超えるGOTにアクセスする単䞀のオブゞェクトファむルをコンパむルする堎合
゚ントリ。 非垞に少数です。

GCCが䜍眮に䟝存しないコヌドを生成しない限り、これらのオプションは効果がありたせん。

Mコア オプション

これらは、 -m Motorola M*Coreプロセッサ甚に定矩されたオプション。

-マルドリット
-mno-ハヌドラむト
XNUMX呜什以䞋で実行できる堎合は、定数をコヌドストリヌムにむンラむン化したす。

-mdiv
-mno-div
陀算呜什を䜿甚したす。 デフォルトで有効。

-mrelax-即時
-mno-relax-immediate
ビット挔算で任意のサむズのむミディ゚ヌトを蚱可したす。

-mwide-ビットフィヌルド
-mno-wide-ビットフィヌルド
ビットフィヌルドは垞に「int」サむズずしお扱いたす。

-m4byte-関数
-mno-4byte-関数
すべおの関数を4バむト境界に揃えるように匷制したす。

-mcallgraph-デヌタ
-mno-callgraph-data
コヌルグラフ情報を発行したす。

-mslow-bytes
-mno-slow-bytes
バむト量を読み取るずきは、ワヌドアクセスを優先したす。

-mlittle-゚ンディアン
-mbig-゚ンディアン
リトル゚ンディアンタヌゲットのコヌドを生成したす。

-m210
-m340
210プロセッサのコヌドを生成したす。

-mno-lsim
ランタむムサポヌトが提䟛されおいるず想定し、シミュレヌタラむブラリを省略したす
(libsim.a リンカのコマンドラむンから。

-mstack-increment =サむズ
シングルスタックむンクリメント操䜜の最倧量を蚭定したす。 倧きな倀は
倧量の関数を必芁ずする機胜を含むプログラムの速床を䞊げる
スタックスペヌスですが、スタックが拡匵された堎合、セグメンテヌション違反を匕き起こす可胜性もありたす
過床に。 デフォルト倀は0x1000です。

メップ オプション

-mabsdiff
XNUMX぀のレゞスタ間の絶察差である「abs」呜什を有効にしたす。

-モヌル-opts
すべおのオプションの呜什を有効にしたす---平均、乗算、陀算、ビット挔算、
先行れロ、絶察差、最小/最倧、クリップ、および圩床。

-平均
XNUMX぀のレゞスタの平均を蚈算する「ave」呜什を有効にしたす。

-mbased =n
サむズの倉数 n デフォルトでは、バむト以䞋は「.based」セクションに配眮されたす。
ベヌス倉数は$tpレゞスタをベヌスレゞスタずしお䜿甚し、128バむトの制限がありたす
「.based」セクションに移動したす。

-mbitops
ビット操䜜呜什を有効にしたす---ビットテスト "btstm"、セット "bsetm"、クリア
"bclrm"、invert "bnotm"、およびtest-and-set "tas"。

-mc =名
どのセクション定数デヌタを配眮するかを遞択したす。 名 「小さい」、「近い」、たたは
"遠い"。

-mclip
「クリップ」呜什を有効にしたす。 「-mclip」は、次のこずも行わない限り圹に立たないこずに泚意しおください。
「-mminmax」を提䟛したす。

-mconfig =名
組み蟌みのコア構成のXNUMX぀を遞択したす。 各MePチップにはXNUMX぀以䞊のチップがありたす
その䞭のモゞュヌル; 各モゞュヌルには、コアCPUずさたざたなコプロセッサヌオプションがありたす
指瀺、および呚蟺機噚。 GCCの䞀郚ではない「MeP-Integrator」ツヌルは、
このオプションによるこれらの構成。 このオプションを䜿甚するこずは、すべおを䜿甚するこずず同じです
察応するコマンドラむン オプション。 デフォルト蚭定は「デフォルト」です。

-mcop
コプロセッサヌ呜什を有効にしたす。 デフォルトでは、これは32ビットコプロセッサヌです。 ノヌト
通垞、コプロセッサヌは「-mconfig=」オプションを介しお有効にされたす。

-mcop32
32ビットコプロセッサの呜什を有効にしたす。

-mcop64
64ビットコプロセッサの呜什を有効にしたす。

-mivc2
IVC2スケゞュヌリングを有効にしたす。 IVC2は64ビットVLIWコプロセッサヌです。

-mdc
定数倉数を「.near」セクションに配眮したす。

-mdiv
「div」および「divu」呜什を有効にしたす。

-meb
ビッグ゚ンディアンコヌドを生成したす。

-メル
リトル゚ンディアンコヌドを生成したす。

-mio-揮発性
「io」属性でマヌクされた倉数はすべお、
揮発性ず芋なされたす。

-ml デフォルトで倉数が「.far」セクションに割り圓おられるようにしたす。

-mleadz
「leadz」先行れロ呜什を有効にしたす。

-んん デフォルトでは、倉数が「.near」セクションに割り圓おられたす。

-mminmax
「最小」および「最倧」呜什を有効にしたす。

-mmult
乗算および積和呜什を有効にしたす。

-mno-opts
「-mall-opts」で有効化されたすべおのオプション呜什を無効化したす。

-mrepeat
䜎オヌバヌヘッドのルヌプに䜿甚される「repeat」および「erepeat」呜什を有効にしたす。

-MS すべおの倉数をデフォルトで「.tiny」セクションにしたす。 あるこずに泚意しおください
このセクションの65536バむトの制限。 これらの倉数ぞのアクセスはgpベヌスを䜿甚したす
登録しおください。

-msatur
飜和呜什を有効にしたす。 コンパむラは珟圚、
これら自䜓を生成したすが、このオプションは他のツヌルずの互換性のために含たれおいたす。
「ずしお」のように。

-msdram
デフォルトのROMベヌスのランタむムではなく、SDRAMベヌスのランタむムをリンクしたす。

-msim
シミュレヌタヌのランタむム ラむブラリをリンクしたす。

-msimnovec
シミュレヌタランタむムラむブラリをリンクしたす。ただし、リセットずの組み蟌みサポヌトは陀きたす。
䟋倖ベクトルずテヌブル。

-mtf
すべおの関数をデフォルトで「.far」セクションにしたす。 このオプションがないず、機胜したす
デフォルトは「.near」セクションです。

-mtiny =n
である倉数 n 「.tiny」セクションにはバむト以䞋が割り圓おられたす。 これらは
倉数は$gpベヌスレゞスタを䜿甚したす。 このオプションのデフォルトは4ですが、泚意しおください
「.tiny」セクションには65536バむトの制限がありたす。

マむクロブレむズ オプション

-msoft-float
浮動小数点には゜フトりェア゚ミュレヌションを䜿甚したすデフォルト。

-mhard-float
ハヌドりェア浮動小数点呜什を䜿甚したす。

-mmemcpy
ブロック移動を最適化せず、「memcpy」を䜿甚しおください。

-mno-clearbss
このオプションは非掚奚です。 䜿甚する -fno-zero-in-bss で初期化 を代わりにお䜿いください。

-mcpu =CPUタむプ
特定のCPUの機胜を䜿甚し、コヌドをスケゞュヌルしたす。 サポヌトされおいる倀は
圢匏でアヌカむブしたプロゞェクトを保存したす vX.YY.Zここで、 X メゞャヌバヌゞョンです、 YY はマむナヌバヌゞョンであり、 Z is
互換性コヌド。 倀の䟋は次のずおりです v3.00.a, v4.00.b, v5.00.a, v5.00.b, v5.00.b,
v6.00.a.

-mxl-゜フトマル
゜フトりェア乗算゚ミュレヌションを䜿甚したすデフォルト。

-mxl-゜フト-div
陀算には゜フトりェア゚ミュレヌションを䜿甚したすデフォルト。

-mxl-バレルシフタ
ハヌドりェアバレルシフタを䜿甚しおください。

-mxl-パタヌン-比范
パタヌン比范呜什を䜿甚したす。

-msmall-分割
小さな笊号付き敎数陀算にはテヌブルルックアップ最適化を䜿甚したす。

-mxl-スタックチェック
このオプションは非掚奚です。 䜿甚する -fstack-チェック を代わりにお䜿いください。

-mxl-gp-opt
GP盞察の「.sdata」/「。sbss」セクションを䜿甚したす。

-mxl-乗算-高
32x32乗算の䞊䜍郚分には、乗算䞊䜍呜什を䜿甚したす。

-mxl-float-convert
ハヌドりェア浮動小数点倉換呜什を䜿甚したす。

-mxl-float-sqrt
ハヌドりェア浮動小数点平方根呜什を䜿甚したす。

-mbig-゚ンディアン
ビッグ゚ンディアンタヌゲットのコヌドを生成したす。

-mlittle-゚ンディアン
リトル゚ンディアンタヌゲットのコヌドを生成したす。

-mxl-䞊べ替え
再順序付け呜什を䜿甚したすスワップおよびバむト反転ロヌド/ストア。

-mxlモヌド-アプリモデル
アプリケヌションモデルを遞択 アプリモデル。 有効なモデルは

実行ファむル
通垞の実行可胜ファむルデフォルト、スタヌトアップコヌドを䜿甚 crt0.o.

xmdstub
ザむリンクスマむクロプロセッサデバッガXMDベヌスの゜フトりェア䟵入型デバッグで䜿甚するため
xmdstubず呌ばれる゚ヌゞェント。 これはスタヌトアップファむルを䜿甚したす crt1.o の開始アドレスを蚭定したす
0x800ぞのプログラム。

ブヌトストラップ
ブヌトロヌダヌを䜿甚しおロヌドされるアプリケヌションの堎合。 このモデルはスタヌトアップファむルを䜿甚したす
crt2.o これには、プロセッサリセットベクトルハンドラが含たれおいたせん。 これは適切です
プロセッサリセットの制埡をブヌトロヌダヌではなくブヌトロヌダヌに転送するため
アプリケヌション。

ベクトルなし
MicroBlazeベクタヌを必芁ずしないアプリケヌション向け。 このオプション
監芖アプリケヌション内で実行されおいるアプリケヌションに圹立぀堎合がありたす。 このモデル
䜿甚されたす crt3.o スタヌトアップファむルずしお。

オプション -xl-モヌド-アプリモデル の非掚奚の゚むリアスです -mxlモヌド-アプリモデル.

MIPS オプション

-EB ビッグ゚ンディアンコヌドを生成したす。

-THE リトル゚ンディアンコヌドを生成したす。 これはのデフォルトです mips * el-*-* 構成。

-XNUMX月=アヌチ
で実行されるコヌドを生成する アヌチ、これは䞀般的なMIPS ISAの名前、たたは
特定のプロセッサの名前。 ISAの名前は次のずおりです。 ミップス1, ミップス2, ミップス3, ミップス4,
ミップス32, mips32r2, ミップス64 & mips64r2。 プロセッサ名は次のずおりです。 4kc, 4km, 4kp, 4ksc,
4kec, 4ケム, 4キヌプ, 4ksd, 5kc, 5kf, 20kc, 24kc, 24kf2_1, 24kf1_1, 24kec, 24kef2_1,
24kef1_1, 34kc, 34kf2_1, 34kf1_1, 34kn, 74kc, 74kf2_1, 74kf1_1, 74kf3_2, 1004kc,
1004kf2_1, 1004kf1_1, ロン゜ン2e, ロン゜ン2f, ロン゜ン3a, m4k, オクテオン, オクテオン+,
オクテオン2, オリオン, r2000, r3000, r3900, r4000, r4400, r4600, r4650, r4700, r6000, r8000,
rm7000, rm9000, r10000, r12000, r14000, r16000, sb1, sr71000, vr4100, vr4111, vr4120,
vr4130, vr4300, vr5000, vr5400, vr5500, xlr & xlp. 特別な䟡倀 アビから
遞択した ABI に最も互換性のあるアヌキテクチャを遞択したす (぀たり、 ミップス1 for
32 ビット ABI ず ミップス3 64ビットABIの堎合。

ネむティブのLinux/GNUツヌルチェヌンも䟡倀をサポヌトしたす ネむティブ、最適なものを遞択したす
ホストプロセッサのアヌキテクチャオプション。 -march=ネむティブ GCCが行う堎合は効果がありたせん
プロセッサを認識したせん。

プロセッサ名では、ファむナル 000 次のように省略できたす k 䟋えば、 -march = r2k).
プレフィックスはオプションであり、 vr 曞かれるかもしれたせん r.

フォヌムの名前 nf2_1 FPUが半分のレヌトでクロックされるプロセッサを参照しおください。
コア、フォヌムの名前 nf1_1 同じレヌトでクロックされるFPUを備えたプロセッサを参照しおください
コアずしお、そしおフォヌムの名前 nf3_2 比率でクロックされるFPUを備えたプロセッサを参照しおください
コアに関しお32の。 互換性の理由から、 nf ずしお受け入れられたす
の同矩語 nf2_1 while nx & bfx の同矩語ずしお受け入れられたす nf1_1.

GCC は、このオプションの倀に基づいお XNUMX ぀のマクロを定矩したす。 最初は _MIPS_ARCH,
これは、タヌゲットアヌキテクチャの名前を文字列ずしお瀺したす。 XNUMX番目の圢匏は
_MIPS_ARCH_fooここで、 foo の倧文字化された倀です _MIPS_ARCH。 䟋えば、
-march = r2000 セット _MIPS_ARCH 〜ぞ 「r2000」 マクロを定矩したす _MIPS_ARCH_R2000.

なお、 _MIPS_ARCH マクロは、䞊蚘のプロセッサ名を䜿甚したす。 蚀い換えるず、
完党なプレフィックスがあり、省略されおいたせん 000 as k。 の堎合 アビから
マクロは、解決されたアヌキテクチャに名前を付けたす (たたは 「ミップス1」 or 「ミップス3」。 それは
no の堎合のデフォルトのアヌキテクチャ -行進 オプションが䞎えられたす。

-mtune =アヌチ
最適化 アヌチ。 特に、このオプションは呜什の方法を制埡したす
スケゞュヌルされた、および算術挔算の認識されたコスト。 のリスト アヌチ 倀
ず同じです -行進.

このオプションを䜿甚しない堎合、GCCはによっお指定されたプロセッサ甚に最適化したす。 -行進。 によっお
-行進 & -ムチュヌン 䞀緒に、で実行されるコヌドを生成するこずが可胜です
プロセッサのファミリですが、そのファミリの特定のメンバヌのコヌドを最適化したす。

-ムチュヌン マクロを定矩したす _MIPS_TUNE & _MIPS_TUNE_fooず同じように機胜したす。
  -行進 䞊蚘のもの。

-ミップス1
に盞圓 -march = mips1.

-ミップス2
に盞圓 -march = mips2.

-ミップス3
に盞圓 -march = mips3.

-ミップス4
に盞圓 -march = mips4.

-ミップス32
に盞圓 -march = mips32.

-mips32r2
に盞圓 -march = mips32r2.

-ミップス64
に盞圓 -march = mips64.

-mips64r2
に盞圓 -march = mips64r2.

-ミップス16
-mno-mips16
MIPS16コヌドを生成したす生成したせん。 GCCがMIPS32たたはMIPS64をタヌゲットにしおいる堎合
アヌキテクチャでは、MIPS16eASEを利甚したす。

MIPS16コヌド生成は、機胜ごずに制埡するこずもできたす。
「mips16」および「nomips16」属性。

-mflip-mips16
亀互の機胜でMIPS16コヌドを生成したす。 このオプションは回垰甚に提䟛されおいたす
MIPS16ず非MIPS16の混合コヌド生成のテストであり、通垞のコヌド生成を目的ずしたものではありたせん。
ナヌザヌコヌドのコンパむルに䜿甚したす。

-minterlink-mips16
-mno-むンタヌリンク-mips16
非 MIPS16 コヌドが MIPS16 コヌドずリンク互換であるこずを芁求したす (芁求したせん)。

たずえば、非 MIPS16 コヌドは MIPS16 コヌドに盎接ゞャンプできたせん。 を䜿甚する必芁がありたす。
コヌルたたは間接ゞャンプ。 -minterlink-mips16 したがっお、次の堎合を陀き、盎接ゞャンプを無効にしたす
GCC は、ゞャンプのタヌゲットが MIPS16 ではないこずを認識しおいたす。

-mabi = 32
-mabi = o64
-mabi = n32
-mabi = 64
-mabi = eabi
指定されたABIのコヌドを生成したす。

EABIには32ビットず64ビットのバリアントがあるこずに泚意しおください。 GCCは通垞64ビットを生成したす
64ビットアヌキテクチャを遞択した堎合のコヌドですが、 -mgp32 32ビットコヌドを取埗するには
を代わりにお䜿いください。

O64 ABIに぀いおは、を参照しおください。http://gcc.gnu.org/projects/mipso64-abi.html>.

GCCは、浮動小数点レゞスタが32であるo64ABIのバリアントをサポヌトしたす。
32ビット幅より。 この組み合わせは、 -mabi = 32 -MFP64。 このABI
「mthc1」および「mfhc1」呜什に䟝存しおいるため、次の堎合にのみサポヌトされたす。
MIPS32R2 プロセッサ。

匕数ず戻り倀のレゞスタ割り圓おは同じたたですが、それぞれ
スカラヌ倀は、64ビットのペアではなく単䞀の32ビットレゞスタで枡されたす
レゞスタ。 たずえば、スカラヌ浮動小数点倀はで返されたす $ f0 のみ、
$ f0/$ f1 ペア。 呌び出し保存レゞスタのセットも同じたたですが、すべお 64 ビット
保存されたす。

-マビコヌル
-mno-abicalls
SVR4スタむルの動的オブゞェクトに適したコヌドを生成したす生成したせん。
-マビコヌル SVR4ベヌスのシステムのデフォルトです。

-mshared
-mno-共有
完党に䜍眮に䟝存せず、次のこずができるコヌドを生成する生成しない
したがっお、共有ラむブラリにリンクされたす。 このオプションは圱響するだけです -マビコヌル.

すべお -マビコヌル コヌドは、オプションに関係なく、埓来は䜍眮に䟝存しおいたせんでした
ような -fPIC & -fpic。 ただし、拡匵機胜ずしお、GNUツヌルチェヌンは実行可胜ファむルを蚱可したす
ロヌカルにバむンドするシンボルに絶察アクセスを䜿甚したす。 より短いGPを䜿甚するこずもできたす
初期化シヌケンスを実行し、ロヌカルで定矩された関数ぞの盎接呌び出しを生成したす。 これ
モヌドはによっお遞択されたす -mno-共有.

-mno-共有 binutils 2.16以降に䟝存し、
GNUリンカによっおリンクされおいたす。 ただし、このオプションはファむナルのABIには圱響したせん。
実行可胜; 再配眮可胜オブゞェクトのABIにのみ圱響したす。 䜿甚する -mno-共有
䞀般に、実行可胜ファむルはより小さく、より速くなりたす。

-mshared デフォルトです。

-mplt
-mno-plt
静的リンカヌず動的リンカヌがPLTをサポヌトし、コピヌするこずを想定したす想定しないでください。
移転。 このオプションは圱響するだけです -mno-共有 -マビコヌル。 n64 ABIの堎合、これは
オプションがないず効果はありたせん -msym32.

あなたは䜜るこずができたす -mplt GCCを蚭定するこずによるデフォルト --with-mips-plt。 デフォルト
is -mno-plt さもないず。

-mxgot
-mno-xgot
グロヌバルオフセットテヌブルのサむズに関する通垞の制限を解陀したす解陀しないでください。

GCCは通垞、単䞀の呜什を䜿甚しおGOTから倀をロヌドしたす。 これは
比范的効率的で、GOTが玄64kよりも小さい堎合にのみ機胜したす。 なんでも
倧きいず、リンカは次のような゚ラヌを報告したす。

再配眮が収たるように切り捚おられたしたR_MIPS_GOT16 foobar

これが発生した堎合は、コヌドを再コンパむルする必芁がありたす -mxgot。 これは非垞にうたくいきたす
倧きなGOTですが、コヌドもXNUMX぀かかるため、効率は䜎䞋したす。
グロヌバルシンボルの倀をフェッチするための呜什。

䞀郚のリンカヌは耇数のGOTを䜜成できるこずに泚意しおください。 あなたがそのようなリンカヌを持っおいるなら、あなたは
䜿甚する必芁があるのは -mxgot 64぀のオブゞェクトファむルがXNUMXkを超えるファむルにアクセスする堎合
GOT゚ントリの䟡倀。 非垞に少数です。

GCCが䜍眮に䟝存しないコヌドを生成しない限り、これらのオプションは効果がありたせん。

-mgp32
汎甚レゞスタは32ビット幅であるず想定したす。

-mgp64
汎甚レゞスタは64ビット幅であるず想定したす。

-MFP32
浮動小数点レゞスタが32ビット幅であるず想定したす。

-MFP64
浮動小数点レゞスタが64ビット幅であるず想定したす。

-mhard-float
浮動小数点コプロセッサ呜什を䜿甚したす。

-msoft-float
浮動小数点コプロセッサ呜什は䜿甚しないでください。 浮動小数点を実装する
代わりにラむブラリ呌び出しを䜿甚した蚈算。

-mno-float
に盞圓 -msoft-float、しかしさらに、コンパむルされおいるプログラムが
浮動小数点挔算は実行したせん。 このオプションは珟圚サポヌトされおいたす
䞀郚のベアメタルMIPS構成によっおのみ、特別なセットを遞択する堎合がありたす
すべおの浮動小数点サポヌトを欠いおいるラむブラリたずえば、floating-
ポむント「printf」圢匏。 「-mno-float」でコンパむルされたコヌドに誀っお含たれおいる堎合
浮動小数点挔算では、リンク時たたは実行時の障害が発生する可胜性がありたす。

-msingle-float
浮動小数点コプロセッサヌは単粟床挔算のみをサポヌトするずしたす。

-mdouble-float
浮動小数点コプロセッサヌが倍粟床挔算をサポヌトしおいるず仮定したす。 これ
デフォルトです。

-mllsc
-mno-llsc
䜿甚する䜿甚しない ll, sc, sync 組み蟌みのアトミックメモリを実装するための呜什
機胜。 どちらのオプションも指定されおいない堎合、GCCはタヌゲットが
アヌキテクチャはそれらをサポヌトしたす。

-mllsc ランタむム環境が呜什を゚ミュレヌトでき、 -mno-llsc
非暙準のISA甚にコンパむルする堎合に圹立ちたす。 どちらのオプションも
GCCを蚭定するこずによるデフォルト --with-llsc & --なし-llsc 。
--with-llsc 䞀郚の構成のデフォルトです。 むンストヌルドキュメントを参照しおください
詳现に぀いおは。

-mdsp
-mno-dsp
MIPS DSP ASEのリビゞョン1を䜿甚したす䜿甚しないでください。
このオプションは、プリプロセッサ マクロを定矩したす。 __mips_dsp. たた、
__mips_dsp_rev 1ぞ。

-mdspr2
-mno-dspr2
MIPS DSP ASEのリビゞョン2を䜿甚したす䜿甚しないでください。
このオプションは、プリプロセッサ マクロを定矩したす。 __mips_dsp & __mips_dspr2。 たた、
定矩 __mips_dsp_rev 2ぞ。

-msmartmips
-mno-スマヌトミップス
MIPS SmartMIPS ASEを䜿甚したす䜿甚しないでください。

-障害のあるシングル
-mno-ペアリング-シングル
ペアの単粟床浮動小数点呜什を䜿甚したす䜿甚しないでください。
このオプションでは、ハヌドりェア浮動小数点サポヌトを有効にする必芁がありたす。

-mdmx
-mno-mdmx
MIPS Digital Media Extensionの説明を䜿甚したす䜿甚しないでください。 このオプションは
64ビットコヌドを生成するずきに䜿甚され、ハヌドりェア浮動小数点サポヌトが必芁です。
有効になりたした。

-mips3d
-mno-mips3d
MIPS-3D ASEを䜿甚したす䜿甚しないでください。 オプション -mips3d 含意する -障害のあるシングル.

-mmt
-mno-mt
MTマルチスレッド呜什を䜿甚する䜿甚しない。

-mmcu
-mno-mcu
MIPS MCU ASE呜什を䜿甚したす䜿甚しないでください。

-mlong64
「長い」タむプを64ビット幅に匷制したす。 芋る -mlong32 デフォルトの説明に぀いおは
ポむンタサむズの決定方法。

-mlong32
「long」、「int」、およびポむンタヌ型を32ビット幅に匷制したす。

「int」、「long」、およびポむンタのデフォルトのサむズは、ABIによっお異なりたす。 党おの
サポヌトされおいるABIは32ビットの「int」を䜿甚したす。 n64 ABIは、64ビットの「ロング」を䜿甚したす。64ビットの堎合も同様です。
EABI; その他は32ビットの「長い」を䜿甚したす。 ポむンタは「長い」ず同じサむズ、たたは
敎数レゞスタず同じサむズのいずれか小さい方。

-msym32
-mno-sym32
遞択したものに関係なく、すべおのシンボルが32ビット倀であるず想定したす想定しないでください。
ABI。 このオプションは、 -mabi = 64 & -mno-abicalls なぜなら、
GCCがシンボリックアドレスぞのより短くより速い参照を生成できるようにしたす。

-G NUM
そのデヌタがない堎合は、倖郚から芋えるデヌタの定矩を小さなデヌタセクションに入れたす
より倧きい NUM バむト。 その埌、GCCはデヌタぞのより効率的なアクセスを生成できたす。 芋る
-mgpopt 詳现に぀いおは。

デフォルト -G オプションは構成によっお異なりたす。

-mlocal-sdata
-mno-local-sdata
延長する延長しない -G 静的倉数などのロヌカルデヌタに察する動䜜も
Cで。 -mlocal-sdata すべおの構成のデフォルトです。

アプリケヌションが䜿甚しおいる小さなデヌタが倚すぎるずリンカが文句を蚀う堎合は、
パフォヌマンスがそれほど重芁ではないパヌツをで再構築しおみおください -mno-local-sdata。 あなた
で倧芏暡なラむブラリを構築するこずもできたす -mno-local-sdata、ラむブラリが
メむンプログラムのためにより倚くの䜙地を残しおください。

-mextern-sdata
-mno-extern-sdata
倖郚で定矩されたデヌタが小さなデヌタセクションにあるず仮定したす仮定しないでください。
そのデヌタのサむズは -G 限定。 -mextern-sdata すべおのデフォルトです
構成。

モゞュヌルをコンパむルする堎合 りェむ   -mextern-sdata -G NUM -mgpopt, りェむ 参照
倉数 各 それは倧きくない NUM バむト、あなたはそれを確認する必芁がありたす 各 眮かれおいる
小さなデヌタセクションで。 もしも 各 別のモゞュヌルによっお定矩されおいる堎合は、コンパむルする必芁がありたす
十分な高さのそのモゞュヌル -G 「セクション」属性を蚭定たたは添付する 各's
意味。 もしも 各 䞀般的ですが、アプリケヌションを十分な高さでリンクする必芁がありたす -G
蚭定。

これらの制限を満たす最も簡単な方法は、すべおのモゞュヌルをコンパむルしおリンクするこずです。
同じで -G オプション。 ただし、をサポヌトするラむブラリを構築するこずをお勧めしたす
いく぀かの異なる小さなデヌタ制限。 これを行うには、ラむブラリを次のようにコンパむルしたす。
サポヌトされおいる最高 -G 蚭定ず远加䜿甚 -mno-extern-sdata 停止する
ラむブラリは、倖郚で定矩されたデヌタに぀いおの仮定を立おるこずから。

-mgpopt
-mno-gpopt
小さなデヌタにあるこずがわかっおいるシンボルにGP盞察アクセスを䜿甚する䜿甚しない
セクション; 芋る -G, -mlocal-sdata & -mextern-sdata. -mgpopt すべおのデフォルトです
構成。

-mno-gpopt $gpレゞスタがの倀を保持しない可胜性がある堎合に圹立ちたす
「_gp」。 たずえば、コヌドがブヌトで䜿甚される可胜性のあるラむブラリの䞀郚である堎合
モニタヌ、ブヌトモニタヌルヌチンを呌び出すプログラムは、$gpで䞍明な倀を枡したす。 の
このような状況では、ブヌトモニタヌ自䜓は通垞次のようにコンパむルされたす -G0.)

-mno-gpopt 含意する -mno-local-sdata & -mno-extern-sdata.

-埋め蟌みデヌタ
-mno-embedded-data
可胜であれば、最初に読み取り専甚デヌタセクションに倉数を割り圓お、次に
可胜であれば小さなデヌタセクション、そうでない堎合はデヌタ。 これにより、コヌドが少し遅くなりたす
デフォルトよりも倚くなりたすが、実行時に必芁なRAMの量が枛るため、
䞀郚の組み蟌みシステムに適しおいたす。

-muninit-const-in-rodata
-mno-uninit-const-in-rodata
初期化されおいない「const」倉数を読み取り専甚デヌタセクションに配眮したす。 このオプションは
ず組み合わせおのみ意味がある -埋め蟌みデヌタ.

-mcode-読み取り可胜=蚭定
GCCが実行可胜セクションから読み取るコヌドを生成できるかどうかを指定したす。 がある
XNUMX぀の可胜な蚭定

-mcode-読み取り可胜=はい
呜什は実行可胜セクションに自由にアクセスできたす。 これがデフォルト蚭定です。

-mcode-読み取り可胜=pcrel
MIPS16 PC盞察ロヌド呜什は実行可胜セクションにアクセスできたすが、その他
指瀺はそうしおはいけたせん。 このオプションは、4KScおよび4KSdプロセッサで圹立ちたす
コヌドTLBに読み取り犁止ビットが蚭定されおいる堎合。 プロセッサでも圹立ちたす
デュアルむンストラクション/デヌタSRAMむンタヌフェむスを持぀ように構成でき、
M4Kず同様に、PC盞察負荷を呜什RAMに自動的にリダむレクトしたす。

-mcode-読み取り可胜=いいえ
呜什は実行可胜セクションにアクセスしおはなりたせん。 このオプションは、
デュアルむンストラクション/デヌタSRAMむンタヌフェむスを持぀ように構成されおいるタヌゲット
M4Kずは異なりPC盞察負荷を自動的にリダむレクトしたせん
呜什RAM。

-msplit-アドレス
-mno-分割アドレス
「hi」および「lo」アセンブラ再配眮挔算子の䜿甚を有効無効にしたす。 これ
オプションはに取っお代わられたした -mexplicit-relocs ただし、埌方に保持されたす
互換性。

-mexplicit-relocs
-mno-explicit-relocs
シンボリックアドレスを凊理するずきは、アセンブラ再配眮挔算子を䜿甚したす䜿甚しないでください。
によっお遞択された代替 -mno-explicit-relocs、代わりにアセンブラマクロを䜿甚したす。

-mexplicit-relocs GCCが次のようなアセンブラを䜿甚するように蚭定されおいる堎合のデフォルトです。
再配眮挔算子をサポヌトしたす。

-mcheck-れロ陀算
-mno-check-zero-division
れロによる敎数陀算でトラップしたすトラップしたせん。

デフォルトは -mcheck-れロ陀算.

-mdivide-トラップ
-mdivide-breaks
MIPSシステムは、条件付きトラップたたは
ブレヌク呜什。 トラップを䜿甚するずコヌドが小さくなりたすが、MIPSでのみサポヌトされたす
II以降。 たた、Linuxカヌネルの䞀郚のバヌゞョンには、トラップを防ぐバグがありたす
適切な信号「SIGFPE」の生成から。 䜿甚する -mdivide-トラップ 条件付きで蚱可する
それらをサポヌトするアヌキテクチャのトラップず -mdivide-breaks の䜿甚を匷制する
䌑憩。

デフォルトは通垞です -mdivide-トラップ、ただし、これは構成時にオヌバヌラむドできたす
--with-divide = breaks。 れロ陀算チェックは、を䜿甚しお完党に無効にするこずができたす
-mno-check-zero-division.

-mmemcpy
-mno-memcpy
重芁なブロックの移動に「memcpy()」の䜿甚を匷制したす (匷制したせん)。 デフォルト
is -mno-memcpy、これにより、GCCはほずんどの䞀定サむズのコピヌをむンラむン化できたす。

-mlong-calls
-mno-long-calls
「jal」呜什の䜿甚を無効にしたす無効にしないでください。 「jal」を䜿甚した関数の呌び出し
より効率的ですが、発信者ず着信者が同じ256メガバむトである必芁がありたす
セグメント。

このオプションは、abicallsコヌドには圱響したせん。 デフォルトは -mno-long-calls.

-マッド
-mno-mad
「mad」、「madu」、および「mul」呜什の䜿甚を有効無効にしたす。
R4650ISA。

-混乱-狂った
-mno-fusion-madd
浮動小数点積和呜什の䜿甚を有効無効にしたす。
利甚可胜です。 デフォルトは -æ··ä¹±-狂った.

R8000 CPUで、積和呜什が䜿甚される堎合、䞭間
補品は無限の粟床で蚈算され、FCSRフラッシュの察象ではありたせん。
れロビット。 これは、状況によっおは望たしくない堎合がありたす。 他のプロセッサでは、
結果は、個別の乗算を䜿甚した同等の蚈算ず数倀的に同じです。
呜什を加算、枛算、および無効にしたす。

-nocpp
MIPSアセンブラに、プリプロセッサをナヌザヌアセンブラファむルに察しお実行しないように指瀺したす
.s 接尟蟞それらを組み立おるずき。

-mfix-24k
-mno-fix-24k
24K E48補充䞭に店舗のデヌタが倱われたの正誀衚を回避したす。 回避策
GCCではなくアセンブラによっお実装されたす。

-mfix-r4000
-mno-fix-r4000
特定のR4000CPU゚ラッタを回避したす。

-ダブルワヌドたたは可倉シフトを実行するず、誀った結果が生じる可胜性がありたす
敎数陀算を開始した盎埌。

-ダブルワヌドたたは可倉シフトは、実行䞭に誀った結果をもたらす可胜性がありたす
敎数乗算が進行䞭です。

-敎数陀算は、の遅延スロットで開始された堎合、誀った結果をもたらす可胜性がありたす
ブランチたたはゞャンプを取りたした。

-mfix-r4400
-mno-fix-r4400
特定のR4400CPU゚ラッタを回避したす。

-ダブルワヌドたたは可倉シフトを実行するず、誀った結果が生じる可胜性がありたす
敎数陀算を開始した盎埌。

-mfix-r10000
-mno-fix-r10000
特定のR10000゚ラッタを回避したす。

-"ll" / "sc"シヌケンスは、3.0より前のリビゞョンではアトミックに動䜜しない堎合がありたす。 圌らはかもしれたせん
リビゞョン2.6以前でのデッドロック。

このオプションは、タヌゲットアヌキテクチャがブランチの可胜性をサポヌトしおいる堎合にのみ䜿甚できたす
指瀺に埓っおください。 -mfix-r10000 がデフォルトの堎合 -march = r10000 䜿甚されおいる; -mno-fix-r10000
それ以倖の堎合はデフォルトです。

-mfix-vr4120
-mno-fix-vr4120
特定のVR4120゚ラッタを回避したす。

-「dmultu」は垞に正しい結果を生成するずは限りたせん。

-「div」ず「ddiv」は、オペランドのXNUMX぀が正しい結果を生成するずは限りたせん。
負です。

陀算゚ラッタの回避策は、次の特殊機胜に䟝存しおいたす。 libgcc.a。 に
珟圚、これらの機胜は「mips64vr*-elf」構成によっおのみ提䟛されたす。

他のVR4120゚ラッタでは、特定のペアの間にNOPを挿入する必芁がありたす。
指瀺。 これらの゚ラッタは、GCC自䜓ではなく、アセンブラによっお凊理されたす。

-mfix-vr4130
VR4130「mflo」/「mfhi」゚ラッタを回避したす。 回避策は、によっお実装されたす
GCCではなくアセンブラですが、GCCは「mflo」ず「mfhi」の䜿甚を避けたす。
代わりに、VR4130の「macc」、「macchi」、「dmacc」、および「dmacchi」の呜什を䜿甚できたす。

-mfix-sb1
-mno-fix-sb1
特定のSB-1CPUコアの正誀衚を回避したす。 このフラグは珟圚SB-1で機胜したす
リビゞョン2「F1」および「F2」浮動小数点゚ラッタ。

-mr10k-cache-barrier =蚭定
の副䜜甚を回避するためにGCCがキャッシュバリアを挿入する必芁があるかどうかを指定したす
R10Kプロセッサに関する憶枬。

倚くのプロセッサず共通しお、R10Kは条件付きの結果を予枬しようずしたす
分岐し、「取埗した」分岐からの呜什を投機的に実行したす。 埌で
予枬された結果が間違っおいる堎合、これらの呜什を䞭止したす。 ただし、R10Kでは、
䞭止された呜什でさえ、副䜜甚を匕き起こす可胜性がありたす。

この問題はカヌネルストアにのみ圱響し、システムによっおはカヌネルの負荷にのみ圱響したす。
䟋ずしお、投機的に実行されたストアは、タヌゲットメモリをキャッシュにロヌドする堎合がありたす
ストア自䜓が埌で䞭止された堎合でも、キャッシュラむンをダヌティずしおマヌクしたす。 DMAの堎合
「ダヌティ」ラむンがフラッシュされる前に、操䜜はメモリの同じ領域に曞き蟌みたす。
キャッシュされたデヌタは、DMAされたデヌタを䞊曞きしたす。 詳现に぀いおは、R10Kプロセッサのマニュアルを参照しおください
他の朜圚的な問題を含む説明。

回避策のXNUMX぀は、すべおのメモリアクセスの前にキャッシュバリア呜什を挿入するこずです。
投機的に実行される可胜性があり、䞭止された堎合でも副䜜甚が発生する可胜性がありたす。
-mr10k-cache-barrier =蚭定 この回避策のGCCの実装を制埡したす。 これ
次の領域の任意のバむトぞの䞭止されたアクセスにはサむドがないず想定したす
効果

1.珟圚の関数のスタックフレヌムが占めるメモリ。

2.着信スタック匕数が占めるメモリ。

3.リンク時定数アドレスを持぀オブゞェクトが占有するメモリ。

これらのリヌゞョンぞの投機的アクセスを保蚌するのはカヌネルの責任です
確かに安党です。

入力プログラムに次のような関数宣蚀が含たれおいる堎合

void foovoid;

次に、「foo」の実装により、「jfoo」ず「jalfoo」を実行できるようにする必芁がありたす
投機的に。 GCCは、それ自䜓がコンパむルする関数に察するこの制限を尊重したす。 これ
非GCC関数手曞きのアセンブリコヌドなどでも同じこずを行う必芁がありたす。

オプションにはXNUMX぀の圢匏がありたす。

-mr10k-cache-barrier = load-store
投機的に実行される可胜性のあるロヌドたたはストアの前にキャッシュバリアを挿入したす
䞭絶したずしおも副䜜甚があるかもしれたせん。

-mr10k-cache-barrier = store
投機的に実行される可胜性のあるストアの前にキャッシュバリアを挿入し、
䞭止しおも副䜜甚があるかもしれたせん。

-mr10k-cache-barrier = none
キャッシュバリアの挿入を無効にしたす。 これがデフォルト蚭定です。

-mflush-func =ファンク
-mno-flush-func
IキャッシュずDキャッシュをフラッシュするために呌び出す関数、たたはそのようなキャッシュを呌び出さないようにする関数を指定したす
関数。 呌び出された堎合、関数は共通の匕数ず同じ匕数を取る必芁がありたす
「_flush_func()」、぀たり、キャッシュが実行されるメモリ範囲のアドレス
フラッシュ、メモリ範囲のサむズ、および数倀3䞡方のキャッシュをフラッシュするため。 The
デフォルトは、GCCが構成されたタヌゲットによっお異なりたすが、通垞は次のいずれかです。
_flush_func or __cpu_flush.

mbranch-cost =NUM
ブランチのコストをおおよそに蚭定したす NUM 「簡単な」指瀺。 この費甚は
ヒュヌリスティックであり、リリヌス間で䞀貫した結果が埗られるずは限りたせん。 れロ
コストは、デフォルトを冗長に遞択したす。これは、 -ムチュヌン 蚭定。

-mbranch-可胜性が高い
-mno-ブランチの可胜性が高い
のデフォルトに関係なく、BranchLikely呜什の䜿甚を有効たたは無効にしたす。
遞択したアヌキテクチャ。 デフォルトでは、Branch Likely呜什は、次の堎合に生成される可胜性がありたす。
それらは、遞択したアヌキテクチャによっおサポヌトされおいたす。 䟋倖はMIPS32ず
MIPS64アヌキテクチャおよびそれらのアヌキテクチャを実装するプロセッサ。 それらのための、
MIPS32ず
MIPS64アヌキテクチャは、特にその䜿甚を非掚奚にしたす。

-mfp-䟋倖
-mno-fp-䟋倖
FP䟋倖を有効にするかどうかを指定したす。 これは、FP呜什の状態に圱響したす
䞀郚のプロセッサでスケゞュヌルされおいたす。 デフォルトでは、FP䟋倖が有効になっおいたす。

たずえば、SB-1では、FP䟋倖が無効になっおいお、64ビットを出力しおいる堎合
コヌドを䜜成するず、䞡方のFPパむプを䜿甚できたす。 それ以倖の堎合、䜿甚できるFPパむプはXNUMX぀だけです。

-mvr4130-敎列
-mno-vr4130-align
VR4130パむプラむンは双方向スヌパヌスカラヌですが、発行できる呜什はXNUMX぀だけです。
最初のものが8バむト敎列されおいる堎合は䞀緒に。 このオプションを有効にするず、GCCは敎列したす
䞊行しお実行する必芁があるず考えられる呜什のペア。

このオプションは、VR4130甚に最適化する堎合にのみ効果がありたす。 通垞はコヌドを䜜成したす
より速くなりたすが、倧きくするこずを犠牲にしお。 デフォルトで有効になっおいたす
最適化レベル -O3.

-msynci
-mno-synci
それをサポヌトするアヌキテクチャでの「同期」呜什の生成を有効無効にしたす。
「synci」呜什 (有効な堎合) は、「__builtin___clear_cache()」時に生成されたす。
コンパむルされたす。

このオプションのデフォルトは「-mno-synci」ですが、蚭定によっおデフォルトを䞊曞きできたす
「--with-synci」で。

シングルプロセッサシステム甚のコヌドをコンパむルする堎合、通垞は「synci」を䜿甚しおも安党です。
ただし、倚くのマルチコアSMPシステムでは、呜什が無効になるこずはありたせん。
すべおのコアにキャッシュされ、未定矩の動䜜に぀ながる可胜性がありたす。

-mrelax-pic-calls
-mno-relax-pic-calls
通垞はレゞスタヌ$25を介しおディスパッチされるPICコヌルを盎接コヌルに倉換しおみおください。
これは、リンカがリンク時に宛先を解決できる堎合にのみ可胜であり、
宛先は盎通電話の範囲内です。

-mrelax-pic-calls GCCがアセンブラずを䜿甚するように蚭定されおいる堎合のデフォルトです
".reloc" アセンブリ ディレクティブず "-mexplicit-relocs" をサポヌトするリンカが含たれおいたす
効果。 「-mno-explicit-relocs」を䜿甚するず、この最適化は
コンパむラの助けを借りずにアセンブラずリンカだけ。

-mmcount-ra-アドレス
-mno-mcount-ra-アドレス
「_mcount」が呌び出し元の関数の戻り倀を倉曎できるようにするコヌドを発行発行しない
䜏所。 有効にするず、このオプションは通垞の「_mcount」むンタヌフェヌスを新しいもので拡匵したす
raアドレス タむプが「intptr_t*」で、レゞスタヌ$12に枡されるパラメヌタヌ。
「_mcount」は、次の䞡方を実行しお差出人䜏所を倉曎できたす。

· レゞスタ $31 の新しいアドレスを返したす。

・新䜏所を「*」に栌玍ra-address」、もし raアドレス nullではありたせん。

デフォルトは -mno-mcount-ra-アドレス.

ミミックス オプション

これらのオプションはMMIX甚に定矩されおいたす。

-mlibfuncs
-mno-libfuncs
組み蟌みラむブラリ関数がコンパむルされおいるこずを指定し、すべおの倀を
サむズに関係なく、レゞスタヌ。

-メプシロン
-mno-むプシロン
「rE」に関しお比范する浮動小数点比范呜什を生成したす
むプシロンレゞスタ。

-mabi = mmixware
-mabi = gnu
関数パラメヌタヌを枡すコヌドを生成し、呌び出された
関数は、グロヌバルを䜿甚するGNU ABIずは察照的に、レゞスタ$0以䞊ず芋なされたす。
231ドル以䞊を登録したす。

-mzero-拡匵
-mno-zero-extend
64ビットより短いサむズのメモリからデヌタを読み取る堎合は、れロを䜿甚したす䜿甚しないでください。
笊号拡匵呜什ではなく、デフォルトでロヌド呜什を拡匵したす。

-mknutthiv
-mno-knuthdiv
剰䜙を生成する陀算の結果が陀数ず同じ笊号を持぀ようにしたす。
デフォルトでは、 -mno-knuthdiv、剰䜙の笊号は、の笊号の埌に続きたす
配圓。 どちらの方法も算術的に有効であり、埌者はほが排他的です
䞭叀。

-mtoplevel-シンボル
-mno-トップレベル-シンボル
付加する付加しない : すべおのグロヌバルシンボルに適甚されるため、アセンブリコヌドを䜿甚できたす
「PREFIX」アセンブリディレクティブを䜿甚したす。

-メルフ
デフォルトではなく、ELF圢匏で実行可胜ファむルを生成したす MMO によっお䜿甚される圢匏
  ミミックス シミュレヌタ

-mbranch-予枬
-mno-ブランチ予枬
静的分岐予枬の堎合は、probable-branch呜什を䜿甚したす䜿甚しないでください。
可胜性のあるブランチを瀺したす。

-mbase-アドレス
-mno-ベヌスアドレス
を䜿甚するコヌドを生成する生成しない ベヌス アドレス。 ベヌスアドレスを䜿甚する
アセンブラずリンカによっお凊理される芁求を自動的に生成したす。
グロヌバルレゞスタに蚭定される定数。 レゞスタヌはXNUMX぀以䞊のベヌスに䜿甚されたす
レゞスタに保持されおいる倀から0から255の範囲内の芁求に察凊したす。 The
通垞、コヌドは短く高速になりたすが、さたざたなデヌタ項目の数は
察凊できるのは限られおいたす。 これは、倧量の静的デヌタを䜿甚するプログラムを意味したす
必芁かもしれたせん -mno-ベヌスアドレス.

-msingle-終了
-mno-単䞀出口
生成されたコヌドに各関数に単䞀の出口点を持たせるように匷制したす匷制しないでください。

MN10300 オプション

ボヌマン -m オプションは、MatsushitaMN10300アヌキテクチャ甚に定矩されおいたす。

-mmult-バグ
MN10300プロセッサの乗算呜什のバグを回避するためのコヌドを生成したす。
これがデフォルトです。

-mno-mult-bug
MN10300の乗算呜什のバグを回避するためにコヌドを生成しないでください
プロセッサ。

-ママ33
AM33プロセッサに固有の機胜を䜿甚しおコヌドを生成したす。

-mno-am33
AM33プロセッサに固有の機胜を䜿甚しおコヌドを生成しないでください。 これは
デフォルト。

-mam33-2
AM33/2.0プロセッサに固有の機胜を䜿甚しおコヌドを生成したす。

-ママ34
AM34プロセッサに固有の機胜を䜿甚しおコヌドを生成したす。

-mtune =CPUタむプ
呜什をスケゞュヌリングするずきは、瀺されたCPUタむプのタむミング特性を䜿甚しおください。
これにより、察象のプロセッサタむプは倉曎されたせん。 CPUタむプは次のいずれかである必芁がありたす
mn10300, am33, am33-2 or am34.

-mreturn-pointer-on-d0
ポむンタを返す関数を生成するずきは、「a0」ず「aXNUMX」の䞡方でポむンタを返したす。
「d0」。 それ以倖の堎合、ポむンタは「a0」でのみ返され、そのようなものを呌び出そうずしたす
プロトタむプのない関数ぱラヌになりたす。 このオプションはによっおオンになっおいるこずに泚意しおください
ディフォルト; 䜿甚する -mno-return-pointer-on-d0 無効にしたす。

-mno-crt0
Cランタむム初期化オブゞェクトファむルにリンクしないでください。

-mリラックス
リラクれヌション最適化パスを実行する必芁があるこずをリンカヌに瀺したす。
ブランチ、呌び出し、および絶察メモリアドレスを短瞮したす。 このオプションは効果があるだけです
最埌のリンクステップのコマンドラむンで䜿甚する堎合。

このオプションを䜿甚するず、シンボリックデバッグが䞍可胜になりたす。

-mliw
コンパむラに生成を蚱可する 長い 呜什 Word タヌゲットが
AM33 たたはそれ以降。 これがデフォルトです。 このオプションは、プリプロセッサマクロを定矩したす
__LIW__.

-mnoliw
コンパむラに生成を蚱可しない 長い 呜什 Word 指瀺。 このオプション
プリプロセッサ マクロを定矩したす __いいえ_LIW__.

-msetlb
コンパむラが生成できるようにしたす SETLB & LCC タヌゲットが
AM33 たたはそれ以降。 これがデフォルトです。 このオプションは、プリプロセッサマクロを定矩したす
__SETLB__.

-mnosetlb
コンパむラに生成を蚱可しない SETLB or LCC 指瀺。 このオプションは次のように定矩したす
プリプロセッサマクロ __NO_SETLB__.

勇気 オプション

-meb
ビッグ゚ンディアンコヌドを生成したす。 これはのデフォルトです モクシヌ-*-* 構成。

-メル
リトル゚ンディアンコヌドを生成したす。

-mno-crt0
Cランタむム初期化オブゞェクトファむルにリンクしないでください。

PDP-11 オプション

これらのオプションは、PDP-11甚に定矩されおいたす。

-mfpu
ハヌドりェアFPP浮動小数点を䜿甚したす。 これがデフォルトです。 FIS浮動小数点
PDP-11 / 40はサポヌトされおいたせん。

-msoft-float
ハヌドりェア浮動小数点は䜿甚しないでください。

-mac0
浮動小数点の結果をac0Unixアセンブラヌ構文ではfr0に返したす。

-mno-ac0
浮動小数点の結果をメモリに返したす。 これがデフォルトです。

-m40
PDP-11/40のコヌドを生成したす。

-m45
PDP-11/45のコヌドを生成したす。 これがデフォルトです。

-m10
PDP-11/10のコヌドを生成したす。

-mbcopy-ビルトむン
メモリのコピヌには、むンラむンの「movmemhi」パタヌンを䜿甚したす。 これがデフォルトです。

-mbcopy
メモリのコピヌにむンラむンの「movmemhi」パタヌンを䜿甚しないでください。

-ミント16
-mno-int32
16ビットの「int」を䜿甚したす。 これがデフォルトです。

-ミント32
-mno-int16
32ビットの「int」を䜿甚したす。

-mfloat64
-mno-float32
64ビットの「float」を䜿甚したす。 これがデフォルトです。

-mfloat32
-mno-float64
32ビットの「float」を䜿甚したす。

-マブシ
「abshi2」パタヌンを䜿甚したす。 これがデフォルトです。

-mno-アブシ
「abshi2」パタヌンは䜿甚しないでください。

-mbranch-高䟡
ブランチが高䟡なふりをしたす。 これは、コヌド生成を実隓するためのものです
のみ。

-mbranch-安い
ブランチが高䟡であるず停っおはいけたせん。 これがデフォルトです。

-munix-asm
Unixアセンブラ構文を䜿甚したす。 これは、次のように構成された堎合のデフォルトです。 pdp11-*-bsd.

-mdec-asm
DECアセンブラ構文を䜿甚したす。 これは、PDP-11タヌゲット甚に構成された堎合のデフォルトです。
以倖の pdp11-*-bsd.

ピコチップ オプション

ボヌマン -m オプションはpicoChip実装甚に定矩されおいたす

-前=ae_type
配列の呜什セット、レゞスタセット、および呜什スケゞュヌリングパラメヌタを蚭定したす
芁玠タむプ ae_type。 サポヌトされおいる倀 ae_type   ANY, マル, マック.

-mae = ANY 完党に汎甚のAEタむプを遞択したす。 このオプションで生成されたコヌドは実行されたす
他のAEタむプのいずれか。 コヌドは、コンパむルされた堎合ほど効率的ではありたせん
特定のAEタむプの堎合、䞀郚のタむプの操䜜乗算などが機胜しない
すべおのタむプのAEで適切に。

-mae = MUL MULAEタむプを遞択したす。 これは、コンパむルされたコヌドに最も圹立぀AEタむプです。
ずがデフォルトです。

-mae = MAC DSPスタむルのMACAEを遞択したす。 このオプションでコンパむルされたコヌドは、
DSP AEが提䟛しないため、バむトchar操䜜のパフォヌマンスが䜎䞋したす
バむトロヌド/ストアのハヌドりェアサポヌト。

-msymbol-as-アドレス
コンパむラがロヌド/ストアのアドレスずしおシンボル名を盎接䜿甚できるようにしたす
最初にレゞスタにロヌドせずに、呜什。 通垞、これの䜿甚
オプションは、オプションが䜿甚されおいない堎合よりも高速に実行される、より倧きなプログラムを生成したす。
ただし、結果はプログラムごずに異なるため、ナヌザヌオプションずしお残されたす。
氞続的に有効にするのではなく。

-mno-非効率的-è­Šå‘Š
非効率的なコヌドの生成に関する譊告を無効にしたす。 これらの譊告は
たずえば、バむトレベルのメモリ操䜜を実行するコヌドをコンパむルするずきに生成されたす
MACAEタむプ。 MAC AEは、バむトレベルのメモリをハヌドりェアでサポヌトしおいたせん
したがっお、すべおのバむトロヌド/ストアはワヌドロヌド/ストアから合成する必芁がありたす
オペレヌション。 これは非効率的であり、譊告が生成されお
バむト操䜜を回避するため、たたは次のようなAEタむプをタヌゲットにするために、コヌドを曞き盎す必芁がありたす。
必芁なハヌドりェアサポヌト。 このオプションは、これらの譊告を無効にしたす。

PowerPC オプション

これらは以䞋にリストされおいたす

RL78 オプション

-msim
シミュレヌタヌ内の操䜜をサポヌトするための远加のタヌゲットラむブラリ内のリンク。

-mmul = none
-mmul = g13
-mmul = rl78
䜿甚するハヌドりェア乗算サポヌトのタむプを指定したす。 デフォルトは
゜フトりェア乗算関数を䜿甚する「なし」。 「g13」オプションは、
RL78/G13 タヌゲットのみのハヌドりェア乗算/陀算ペリフェラル。 「rl78」オプション
RL78 ゜フトりェア マニュアルで定矩されおいる暙準のハヌドりェア乗算甚です。

IBM RS / 6000 & PowerPC オプション

ボヌマン -m オプションは、IBM RS/6000およびPowerPC甚に定矩されおいたす。

-mpowerpc-gpopt
-mno-powerpc-gpopt
-mpowerpc-gfxopt
-mno-powerpc-gfxopt
-mpowerpc64
-mno-powerpc64
-mmfcrf
-mno-mfcrf
-mpopcntb
-mno-popcntb
-mpopcntd
-mno-popcntd
-mfprnd
-mno-fprnd
-mcmpb
-mno-cmpb
-mmfpgpr
-mno-mfpgpr
-mhard-dfp
-mno-ハヌド-dfp
これらのオプションを䜿甚しお、プロセッサで䜿甚可胜な呜什を指定したす。
䜿甚しおいたす。 これらのオプションのデフォルト倀は、GCCの構成時に決定されたす。
の指定 -mcpu =cpu_type これらのオプションの指定を䞊曞きしたす。 私達
を䜿甚するこずをお勧めしたす -mcpu =cpu_type 䞊蚘のオプションではなく、オプション。

指定 -mpowerpc-gpopt GCCがオプションのPowerPCアヌキテクチャを䜿甚できるようにしたす
浮動小数点平方根を含む、汎甚グルヌプの呜什。
指定 -mpowerpc-gfxopt GCCがオプションのPowerPCアヌキテクチャを䜿甚できるようにしたす
浮動小数点遞択を含む、グラフィックスグルヌプの呜什。

  -mmfcrf オプションを䜿甚するず、GCCは条件レゞスタフィヌルドからの移動を生成できたす
POWER4プロセッサヌおよびそれをサポヌトする他のプロセッサヌに実装された呜什
PowerPCV2.01アヌキテクチャ。 The -mpopcntb オプションを䜿甚するず、GCCでポップカりントを生成できたす
POWER5に実装された倍粟床FP盞互掚定呜什
PowerPCV2.02アヌキテクチャをサポヌトするプロセッサおよびその他のプロセッサ。 The
-mpopcntd オプションを䜿甚するず、GCCはに実装されたpopcount呜什を生成できたす。
POWER7プロセッサヌおよびPowerPCV2.06アヌキテクチャヌをサポヌトするその他のプロセッサヌ。
  -mfprnd オプションを䜿甚するず、GCCはFPを敎数に䞞める呜什を生成できたす
POWER5+プロセッサおよびPowerPCをサポヌトするその他のプロセッサに実装されおいたす
V2.03アヌキテクチャ。 The -mcmpb オプションを䜿甚するず、GCCで比范バむトを生成できたす
POWER6プロセッサヌおよびそれをサポヌトする他のプロセッサヌに実装された呜什
PowerPCV2.05アヌキテクチャ。 The -mmfpgpr オプションにより、GCCはFP移動を生成できたす
POWER6Xプロセッサに実装された汎甚レゞスタ呜什ずの間
拡匵PowerPCV2.05アヌキテクチャをサポヌトする他のプロセッサ。 The -mhard-dfp
オプションを䜿甚するず、GCCはに実装されおいるXNUMX進浮動小数点呜什を生成できたす。
䞀郚のPOWERプロセッサ。

  -mpowerpc64 オプションを䜿甚するず、GCCは远加の64ビット呜什を生成できたす。
完党なPowerPC64アヌキテクチャにあり、GPRを64ビットのダブルワヌドずしお扱いたす。
量。 GCCのデフォルトは -mno-powerpc64.

-mcpu =cpu_type
アヌキテクチャタむプ、レゞスタの䜿甚法、および呜什スケゞュヌリングパラメヌタを蚭定したす。
マシンタむプ cpu_type。 サポヌトされおいる倀 cpu_type   401, 403, 405, 405fp, 440,
440fp, 464, 464fp, 476, 476fp, 505, 601, 602, 603, 603e, 604, 604e, 620, 630, 740,
7400, 7450, 750, 801, 821, 823, 860, 970, 8540, a2, e300c2, e300c3, e500mc, e500mc64,
e5500, e6500, ec603e, G3, G4, G5, タむタン, power3, power4, power5, power5 +, power6,
パワヌ6x, power7, power8, powerpc, パワヌPC64, powerpc64le, rs64.

-mcpu = powerpc, -mcpu = powerpc64, -mcpu = powerpc64le 玔粋な32ビットPowerPCを指定する
いずれかの゚ンディアン、64ビットのビッグ゚ンディアンPowerPCおよび64ビットのリトル゚ンディアンPowerPC
適切な汎甚プロセッサモデルを想定したアヌキテクチャマシンタむプ
スケゞュヌリングの目的。

他のオプションは、特定のプロセッサを指定したす。 それらのオプションの䞋で生成されたコヌド
そのプロセッサで最適に動䜜し、他のプロセッサではたったく動䜜しない堎合がありたす。

  -mcpu オプションは、次のオプションを自動的に有効たたは無効にしたす。

-マルティベック -mfprnd -mhard-float -mmfcrf -耇数 -mpopcntb -mpopcntd -mpowerpc64
-mpowerpc-gpopt -mpowerpc-gfxopt -msingle-float -mdouble-float -msimple-fpu -mstring
-mmulhw -mdlmzb -mmfpgpr -mvsx -mcrypto -mdirect-移動 -mpower8-フュヌゞョン
-mpower8-ベクトル -mquad-メモリ -mquad-メモリ-アトミック

特定のCPUに蚭定される特定のオプションは、コンパむラのバヌゞョンによっお異なりたす。
どの蚭定がそのCPUに最適なコヌドを生成するず思われるかに応じお。 それはしたせん
必然的に実際のハヌドりェアの機胜を反映したす。 蚭定したい堎合
特定の倀に察する個別のオプション。 -mcpu オプション、
ような -mcpu = 970 -mno-altivec.

AIXでは、 -マルティベック & -mpowerpc64 オプションは、によっお有効化たたは無効化されたせん -mcpu
AIXはこれらのオプションを完党にはサポヌトしおいないため、珟圚のずころオプションです。 しおもいいです
それがあなたのでうたくいくず確信しおいるなら、それでもそれらを個別に有効たたは無効にしたす
環境。

-mtune =cpu_type
マシンタむプの呜什スケゞュヌリングパラメヌタを蚭定したす cpu_type、ただし蚭定しない
アヌキテクチャタむプたたはレゞスタの䜿甚法、 -mcpu =cpu_type したす。 の同じ倀
cpu_type に䜿甚されたす -ムチュヌン はどうかず蚀うず -mcpu。 䞡方が指定されおいる堎合、生成されたコヌド
によっお蚭定されたアヌキテクチャずレゞスタを䜿甚したす -mcpu、ただし、によっお蚭定されたスケゞュヌリングパラメヌタ
-ムチュヌン.

-mcmodel = small
小型モデル甚のPowerPC64コヌドを生成したす。目次は64kに制限されおいたす。

-mcmodel = medium
䞭芏暡モデルのPowerPC64コヌドを生成したす。目次およびその他の静的デヌタがアップしおいる可胜性がありたす
サむズは合蚈4Gになりたす。

-mcmodel = large
倧型モデル甚のPowerPC64コヌドを生成したす。TOCのサむズは最倧4Gです。 他の
デヌタずコヌドは、64ビットのアドレス空間によっおのみ制限されたす。

-マルティベック
-mno-altivec
AltiVec呜什を䜿甚する䜿甚しないコヌドを生成し、䜿甚を有効にしたす
AltiVec呜什セットぞのより盎接的なアクセスを可胜にする組み蟌み関数の。
蚭定する必芁がある堎合もありたす -mabi = altivec AltiVecABIで珟圚のABIを調敎する
機胜匷化。

日時 -マルティベック ではなく、が䜿甚されたす -maltivec = le or -maltivec = be、芁玠の順序
「vec_splat」、「vec_extract」、「vec_insert」などの Altivec 組み蟌み関数は䞀臎したす
タヌゲットの゚ンディアンに察応する配列芁玠の順序。 ぀たり、芁玠
れロは、ビッグ゚ンディアンをタヌゲットにするずきにベクトルレゞスタの巊端の芁玠を識別したす
プラットフォヌム、およびタヌゲットを蚭定するずきにベクトルレゞスタの右端の芁玠を識別したす
リトル゚ンディアンプラットフォヌム。

-maltivec = be
かどうかに関係なく、ビッグ゚ンディアン芁玠の順序を䜿甚しおAltivec呜什を生成したす
タヌゲットはビッグ゚ンディアンたたはリトル゚ンディアンです。 これは、ビッグ゚ンディアンをタヌゲットにする堎合のデフォルトです
プラットフォヌムを提䟛したす。

芁玠の順序は、次のようなAltivec組み蟌み関数の芁玠番号を解釈するために䜿甚されたす。
「vec_splat」、「vec_extract」、および「vec_insert」。 デフォルトでは、これらは配列に䞀臎したす
タヌゲットの゚ンディアンに察応する芁玠の順序。

-maltivec = le
かどうかに関係なく、リトル゚ンディアン芁玠の順序を䜿甚しおAltivec呜什を生成したす
タヌゲットはビッグ゚ンディアンたたはリトル゚ンディアンです。 これは、少しタヌゲットを蚭定する堎合のデフォルトです-
゚ンディアンプラットフォヌム。 ビッグ゚ンディアンをタヌゲットにする堎合、このオプションは珟圚無芖されたす
プラットフォヌムを提䟛したす。

芁玠の順序は、次のようなAltivec組み蟌み関数の芁玠番号を解釈するために䜿甚されたす。
「vec_splat」、「vec_extract」、および「vec_insert」。 デフォルトでは、これらは配列に䞀臎したす
タヌゲットの゚ンディアンに察応する芁玠の順序。

-mvrsave
-mno-vrsave
AltiVecコヌドを生成するずきにVRSAVE呜什を生成したす。

-mgen-cell-マむクロコヌド
セルマむクロコヌド呜什を生成したす。

-mwarn-cell-マむクロコヌド
Cellマむクロコヌド呜什が発行されたずきに譊告したす。 Cellマむクロコヌドの䟋
呜什は可倉シフトです。

-msecure-plt
を可胜にするコヌドを生成する ld & ld.so 実行可胜ファむルず共有ラむブラリを構築するには
実行䞍可胜な「.plt」セクションず「.got」セクション。 これは、PowerPC32ビットSYSVABIオプションです。

-mbss-plt
BSS「.plt」セクションを䜿甚するコヌドを生成したす。 ld.so 蚘入し、「。plt」が必芁です
曞き蟌み可胜で実行可胜な「.got」セクション。 これはPowerPC32ビットです
SYSVABIオプション。

-ミセル
-mno-isel
このスむッチは、ISEL呜什の生成を有効たたは無効にしたす。

-ミセル=はい・いいえ
このスむッチは非掚奚になりたした。 䜿甚する -ミセル & -mno-isel を代わりにお䜿いください。

-mspe
-mno-spe
このスむッチは、SPEsimd呜什の生成を有効たたは無効にしたす。

-障害者
-mno-ペアリング
このスむッチは、PAIREDsimd呜什の生成を有効たたは無効にしたす。

-mspe =はい・いいえ
このオプションは非掚奚になりたした。 䜿甚する -mspe & -mno-spe を代わりにお䜿いください。

-mvsx
-mno-vsx
ベクトル/スカラヌVSX呜什を䜿甚する䜿甚しないコヌドを生成し、さらに
VSXぞのより盎接的なアクセスを可胜にする組み蟌み関数の䜿甚を有効にする
指図曞。

-mcrypto
-mno-crypto
に盎接アクセスできる組み蟌み関数の䜿甚を有効無効にしたす。
PowerPCISAのバヌゞョン2.07で远加された暗号化呜什。

-mdirect-移動
-mno-direct-move
呜什を䜿甚する䜿甚しないコヌドを生成しお、
に远加された汎甚レゞスタずベクトル/スカラヌVSXレゞスタ
PowerPCISAのバヌゞョン2.07。

-mpower8-フュヌゞョン
-mno-power8-fusion
いく぀かの敎数挔算を隣接させおおく保持しないコヌドを生成しお、
呜什は、power8以降のプロセッサヌで融合できたす。

-mpower8-ベクトル
-mno-power8-vector
以前のベクトルおよびスカラヌ呜什を䜿甚する䜿甚しないコヌドを生成したす
PowerPCISAのバヌゞョン2.07で远加されたした。 組み蟌み関数の䜿甚も有効にしたす
ベクトル呜什ぞのより盎接的なアクセスを可胜にしたす。

-mquad-メモリ
-mno-クアッドメモリ
非アトミッククワッドワヌドメモリ呜什を䜿甚する䜿甚しないコヌドを生成したす。
  -mquad-メモリ オプションでは、64ビットモヌドを䜿甚する必芁がありたす。

-mquad-メモリ-アトミック
-mno-quad-memory-atomic
アトミッククワッドワヌドメモリ呜什を䜿甚する䜿甚しないコヌドを生成したす。 The
-mquad-メモリ-アトミック オプションでは、64ビットモヌドを䜿甚する必芁がありたす。

-mfloat-gprs =はい/シングル/ダブル/いいえ
-mfloat-gprs
このスむッチは、での浮動小数点挔算の生成を有効たたは無効にしたす。
それをサポヌトするアヌキテクチャ甚の汎甚レゞスタ。

議論 はい or 単粟床浮動小数点の䜿甚を可胜にしたす
操䜜。

議論 単粟床および倍粟床浮動小数点の䜿甚を可胜にしたす
操䜜。

議論 いいえ 汎甚レゞスタの浮動小数点挔算を無効にしたす。

このオプションは珟圚、MPC854xでのみ䜿甚できたす。

-m32
-m64
DarwinおよびSVR32タヌゲットの64ビットたたは4ビット環境甚のコヌドを生成したす
GNU / Linux。 32ビット環境では、int、long、およびポむンタが32ビットに蚭定されたす。
PowerPCバリアントで実行されるコヌドを生成したす。 64ビット環境はintをに蚭定したす
32ビットおよびlongず64ビットぞのポむンタ、およびPowerPC64のコヌドを生成したす。
-mpowerpc64.

-mfull-toc
-mno-fp-in-toc
-mno-sum-in-toc
-最小-toc
ごずに䜜成される目次目次の生成を倉曎したす
実行可胜ファむル。 The -mfull-toc オプションはデフォルトで遞択されおいたす。 その堎合、GCC
の䞀意の非自動倉数参照ごずに少なくずもXNUMX぀のTOC゚ントリを割り圓おたす
あなたのプログラム。 GCCは、TOCに浮動小数点定数も配眮したす。 ただし、
TOCには16,384の゚ントリがありたす。

利甚可胜なものがオヌバヌフロヌしたこずを瀺すリンカヌ゚ラヌメッセヌゞを受け取った堎合
TOCスペヌス、で䜿甚されるTOCスペヌスの量を枛らすこずができたす -mno-fp-in-toc &
-mno-sum-in-toc オプション。 -mno-fp-in-toc GCCが浮動小数点を眮くのを防ぎたす
TOCおよび -mno-sum-in-toc GCCにコヌドを生成させお蚈算したす
TOCに合蚈を入れる代わりに、実行時にアドレスず定数の合蚈。
これらのオプションの䞀方たたは䞡方を指定できたす。 それぞれがGCCに非垞に
TOCスペヌスを節玄するこずを犠牲にしお、少し遅くお倧きなコヌド。

これらのオプションの䞡方を指定しおも、目次のスペヌスが䞍足しおいる堎合は、
指定する -最小-toc 代わりは。 このオプションにより、GCCは次のTOC゚ントリをXNUMX぀だけ䜜成したす。
すべおのファむル。 このオプションを指定するず、GCCはより遅くおより倧きなコヌドを生成したす
しかし、これは非垞に少ない目次スペヌスを䜿甚したす。 このオプションは、
実行頻床の䜎いコヌドを含むファむル。

-maix64
-maix32
64ビットAIXABIず呌び出し芏玄を有効にしたす64ビットポむンタヌ、64ビット「ロング」タむプ、および
それらをサポヌトするために必芁なむンフラストラクチャ。 指定する -maix64 含意する -mpowerpc64,
while -maix32 64ビットABIを無効にし、 -mno-powerpc64。 GCCのデフォルトは
-maix32.

-mxl-compat
-mno-xl-compat
AIXを䜿甚する堎合、IBMXLコンパむラヌのセマンティクスにより厳密に準拠するコヌドを生成したす-
互換性のあるABI。 浮動小数点匕数をプロトタむプ化された関数に枡したす。
匕数FPRに加えお、スタックに保存領域RSAを登録したす。 想定しないでください
128ビット長のdouble倀の䞭で最も重芁なdoubleは、次の堎合に適切に䞞められたす。
倀を比范し、doubleに倉換したす。 ロングダブルにはXLシンボル名を䜿甚
サポヌトルヌチン。

AIXの呌び出し芏玄は拡匵されたしたが、最初は文曞化されおいたせんでした。
匕数のアドレスをずる関数を呌び出すKRCのあいたいなケヌス
宣蚀されたよりも少ない匕数。 IBM XLコンパむラヌは、浮動小数点匕数にアクセスしたす。
サブルヌチンがなしでコンパむルされる堎合、スタックからRSAに適合したせん
最適化。 垞に浮動小数点匕数をスタックに栌玍するのは
非効率的でほずんど必芁ないため、このオプションはデフォルトでは有効になっおおらず、
最適化せずにIBMXLコンパむラヌによっおコンパむルされたサブルヌチンを呌び出すずきに必芁です。

-mpe
サポヌト IBM RS / 6000 SP 䞊列シミュレヌションの蚭定 環境 PE。 䜿甚するように䜜成されたアプリケヌションをリンクする
アプリケヌションを実行できるようにするための特別なスタヌトアップコヌドを䌎うメッセヌゞパッシング。 The
システムの暙準的な堎所にPEがむンストヌルされおいる必芁がありたす/usr/lpp/ppe.poe/、 たたは
スペック ファむルはでオヌバヌラむドする必芁がありたす -specs = 適切なを指定するオプション
ディレクトリの堎所。 䞊列環境はスレッドをサポヌトしおいないため、 -mpe
オプションず -pthread オプションに互換性がありたせん。

-悪性-自然
-悪性パワヌ
AIX、32ビットDarwin、および64ビットPowerPC GNU / Linuxでは、オプション -悪性-自然
浮動小数点doubleなどのより倧きな型のABI定矩の配眮をオヌバヌラむドしたす。
それらの自然なサむズベヌスの境界䞊。 オプション -悪性パワヌ GCCに次のように指瀺したす
ABI指定のアラむメントルヌルに埓いたす。 GCCのデフォルトは暙準の配眮です
ABIで定矩されおいたす。

64ビットダヌりィンでは、自然な配眮がデフォルトであり、 -悪性パワヌ ではありたせん
。

-msoft-float
-mhard-float
浮動小数点レゞスタセットを䜿甚しない䜿甚するコヌドを生成したす。 ゜フトりェア
浮動小数点゚ミュレヌションを䜿甚するず、 -msoft-float オプション、およびを枡す
リンク時のGCCぞのオプション。

-msingle-float
-mdouble-float
単粟床たたは倍粟床浮動小数点挔算のコヌドを生成したす。
-mdouble-float 含意する -msingle-float.

-msimple-fpu
ハヌドりェア浮動小数点ナニットの「sqrt」および「div」呜什を生成しないでください。

-mfpu =名
浮動小数点ナニットのタむプを指定したす。 の有効な倀 名   sp_lite に盞圓したす
-msingle-float -msimple-fpu), dp_lite に盞圓したす -mdouble-float -msimple-fpu),
sp_full に盞圓したす -msingle-float、及び dp_full に盞圓したす -mdouble-float).

-mxilinx-fpu
ザむリンクスPPC405/440で浮動小数点ナニットの最適化を実行したす。

-耇数
-mno-耇数
耇数ワヌドのロヌド呜什を䜿甚する䜿甚しないコヌドを生成し、
耇数の単語の指瀺を保存したす。 これらの呜什はデフォルトで生成されたす
POWERシステムであり、PowerPCシステムでは生成されたせん。 䜿甚犁止 -耇数 少し-
゚ンディアンPowerPCシステム、これらの呜什はプロセッサが入っおいるずきは機胜しないため
リトル゚ンディアンモヌド。 䟋倖は、これらを蚱可するPPC740ずPPC750です。
リトル゚ンディアンモヌドの呜什。

-mstring
-mno-string
文字列のロヌド呜什ずストアを䜿甚する䜿甚しないコヌドを生成したす
耇数のレゞスタを保存し、小さなブロック移動を行うための文字列ワヌド呜什。 これらは
呜什はデフォルトでPOWERシステムで生成され、PowerPCでは生成されたせん
システム。 䜿甚犁止 -mstring リトル゚ンディアンのPowerPCシステムでは、
プロセッサがリトル゚ンディアンモヌドの堎合、呜什は機胜したせん。 䟋倖
リトル゚ンディアンモヌドでこれらの呜什を蚱可するPPC740およびPPC750です。

-mupdate
-mno-アップデヌト
を曎新するロヌドたたはストア呜什を䜿甚する䜿甚しないコヌドを生成したす
蚈算されたメモリ䜍眮のアドレスぞのベヌスレゞスタ。 これらの指瀺
デフォルトで生成されたす。 䜿甚する堎合 -mno-アップデヌト、間に小さなりィンドりがありたす
スタックポむンタが曎新され、前のフレヌムのアドレスが
保存されたす。これは、割り蟌みたたはシグナル間でスタックフレヌムをりォヌクするコヌドが
砎損したデヌタを取埗したす。

-mavoid-indexed-addresses
-mno-avoid-indexed-addresses
むンデックス付きのロヌドたたはストアの䜿甚を回避しようずする回避しないコヌドを生成する
指瀺。 これらの呜什は、Power6プロセッサヌでパフォヌマンスの䜎䞋を招く可胜性がありたす
16Mを超える倧きなアレむをステップスルヌする堎合など、特定の状況で
境界。 このオプションは、Power6を察象ずする堎合、デフォルトで有効になっおおり、無効になっおいたす
さもないず。

-混乱-狂った
-mno-fusion-madd
浮動小数点の積和を䜿甚する䜿甚しないコヌドを生成する
指瀺。 これらの呜什は、ハヌドりェア浮動小数点の堎合、デフォルトで生成されたす
䜿甚されおいる。 マシンに䟝存 -æ··ä¹±-狂った オプションがマシンにマップされるようになりたした-
独立したした -ffp-contract = fast オプション、および -mno-fusion-madd にマッピングされおいたす
-ffp-contract = off.

-mmulhw
-mno-mulhw
ハヌフワヌドmultiplyおよびmultiply-accumulateを䜿甚する䜿甚しないコヌドを生成したす
IBM 405、440、464、および476プロセッサヌに関する指瀺。 これらの指瀺は
これらのプロセッサを察象ずする堎合、デフォルトで生成されたす。

-mdlmzb
-mno-dlmzb
文字列怜玢を䜿甚する䜿甚しないコヌドを生成する dlmzb IBMに関する指瀺
405、440、464、および476プロセッサ。 この呜什は、デフォルトで次の堎合に生成されたす。
それらのプロセッサを察象ずしおいたす。

-mno-bit-align
-mbit-align
System V.4および組み蟌みPowerPCシステムでは、構造䜓ず結合を匷制したせんしたせん
ビットフィヌルドの基本タむプにアラむンされるビットフィヌルドが含たれおいたす。

たずえば、デフォルトでは、8぀の「笊号なし」ビットフィヌルドのみを含む構造䜓です。
長さ1は4バむトの境界に揃えられ、サむズは4バむトです。 を䜿甚しお
-mno-bit-align、構造䜓は1バむトの境界に揃えられ、サむズは1バむトです。

-mno-strict-align
-mstrict-align
System V.4および組み蟌みPowerPCシステムでは、アラむメントされおいないメモリを想定しおいたせんしたせん
参照はシステムによっお凊理されたす。

-m再配眮可胜
-mno-再配眮可胜
静的実行可胜ファむルをに再配眮できるようにする蚱可しないコヌドを生成したす
実行時に異なるアドレス。 シンプルな組み蟌みPowerPCシステムロヌダヌは
「.got2」の内容党䜓ず「.fixup」にリストされおいる4バむトの堎所を再配眮したす
セクション、このオプションによっお生成された32ビットアドレスのテヌブル。 これが機胜するためには、すべお
䞀緒にリンクされたオブゞェクトは、でコンパむルする必芁がありたす -m再配眮可胜 or -mrelocatable-lib.
-m再配眮可胜 コヌドはスタックを8バむト境界に揃えたす。

-mrelocatable-lib
-mno-再配眮可胜ラむブラリ
いいね -m再配眮可胜, -mrelocatable-lib 静的を蚱可するために「.fixup」セクションを生成したす
実行可胜ファむルは実行時に再配眮されたすが、 -mrelocatable-lib は䜿甚したせん
の小さいスタックアラむメント -m再配眮可胜。 でコンパむルされたオブゞェクト -mrelocatable-lib かもしれたせん
ずの任意の組み合わせでコンパむルされたオブゞェクトずリンクする -m再配眮可胜 オプション。

-mno-toc
-mtoc
System V.4および組み蟌みPowerPCシステムでは、レゞスタ2に次のものが含たれおいるずは想定しおいたせんしたせん。
プログラムで䜿甚されるアドレスを指すグロヌバル領域ぞのポむンタ。

-少し
-mlittle-゚ンディアン
System V.4および組み蟌みPowerPCシステムでは、プロセッサのコヌドをほずんどコンパむルしたせん。
゚ンディアンモヌド。 The -mlittle-゚ンディアン オプションはず同じです -少し.

-mbig
-mbig-゚ンディアン
System V.4および組み蟌みPowerPCシステムでは、プロセッサのコヌドを倧芏暡にコンパむルしたす。
゚ンディアンモヌド。 The -mbig-゚ンディアン オプションはず同じです -mbig.

-mdynamic-no-pic
DarwinおよびMacOSXシステムでは、再配眮できないようにコヌドをコンパむルしたすが、
その倖郚参照は再配眮可胜です。 結果のコヌドは
アプリケヌションですが、共有ラむブラリではありたせん。

-msingle-pic-base
PICアドレス指定に䜿甚されるレゞスタを、ロヌドするのではなく、読み取り専甚ずしお扱いたす。
各関数のプロロヌグ。 ランタむムシステムはこれを初期化する責任がありたす
実行を開始する前に、適切な倀で登録しおください。

-mprioritize-restricted-insns =優先順䜍
このオプションは、ディスパッチスロット制限に割り圓おられる優先床を制埡したす
XNUMX番目のスケゞュヌリングパス䞭の呜什。 議論 優先順䜍 倀を取る
0, 1たたは 2 いいえ、最高、たたはXNUMX番目に高いそれぞれ優先順䜍を
ディスパッチスロット制限付き呜什。

-msched-costly-dep =䟝存関係タむプ
このオプションは、タヌゲットがどの䟝存関係にコストがかかるず芋なすかを制埡したす。
呜什スケゞュヌリング。 議論 䟝存関係タむプ 次のいずれかを取りたす
倀

いいえ 䟝存はコストがかかりたせん。

を すべおの䟝存関係にはコストがかかりたす。

true_store_to_load
ストアからロヌドぞの真の䟝存はコストがかかりたす。

ロヌドするストア
ストアからロヌドぞの䟝存はコストがかかりたす。

数
レむテンシが以䞊である䟝存関係 数 費甚がかかりたす。

-minsert-sched-nops =スキヌム
このオプションは、XNUMX番目のスケゞュヌリング䞭に䜿甚されるNOP挿入スキヌムを制埡したす
合栌。 議論 スキヌム 次のいずれかの倀を取りたす。

いいえ NOPを挿入しないでください。

パッド によるず、空の発行スロットがあるディスパッチグルヌプをNOPで埋めたす。
スケゞュヌラヌのグルヌプ化。

再グルヌプ化_exact
NOPを挿入しお、コストのかかる䟝存型insnを個別のグルヌプに匷制したす。 正確に挿入
掚定によるず、新しいグルヌプにinsnを匷制するために必芁な数のNOP
プロセッサのグルヌプ化。

数
NOPを挿入しお、コストのかかる䟝存型insnを個別のグルヌプに匷制したす。 入れる 数
新しいグルヌプにinsnを匷制するNOP。

-mcall-sysv
System V.4および組み蟌みPowerPCシステムでは、呌び出し芏玄を䜿甚しおコヌドをコンパむルしたす。
System Vアプリケヌションバむナリむンタヌフェむス、PowerPCの1995幎XNUMX月のドラフトに準拠する
プロセッササプリメント。 を䜿甚しおGCCを構成しない限り、これがデフォルトです。
powerpc-*-eabiaix.

-mcall-sysv-eabi
-mcall-eabi
䞡方を指定しおください -mcall-sysv & -めあび オプション。

-mcall-sysv-noeabi
䞡方を指定しおください -mcall-sysv & -mno-eabi オプション。

-mcall-aixdesc
System V.4および組み蟌みPowerPCシステムでは、AIXオペレヌティングシステムのコヌドをコンパむルしたす。

-mcall-linux
System V.4および組み蟌みPowerPCシステムでは、LinuxベヌスのGNU甚のコヌドをコンパむルしたす
システム。

-mcall-freebsd
System V.4および組み蟌みPowerPCシステムでは、FreeBSDオペレヌティング甚のコヌドをコンパむルしたす
システム。

-mcall-netbsd
System V.4および組み蟌みPowerPCシステムでは、NetBSDオペレヌティング甚のコヌドをコンパむルしたす
システム。

-mcall-openbsd
System V.4および組み蟌みPowerPCシステムでは、OpenBSDオペレヌティング甚のコヌドをコンパむルしたす
システム。

-maix-struct-return
メモリ内のすべおの構造䜓を返したすAIX ABIで指定されおいるずおり。

-msvr4-struct-return
レゞスタヌで8バむト未満の構造䜓を返したすSVR4 ABIで指定。

-mabi =アビタむプ
珟圚のABIを特定の拡匵機胜で拡匵するか、そのような拡匵機胜を削陀したす。 有効
倀は アルティベック, ノヌアルティベック, SPE, ノヌスピヌド, ibmロングダブル, ieeeロングダブル, ゚ルフv1,
゚ルフv2.

-mabi = spe
SPEABI拡匵機胜を䜿甚しお珟圚のABIを拡匵したす。 これはデフォルトのABIを倉曎したせん。
代わりに、SPEABI拡匵機胜を珟圚のABIに远加したす。

-mabi = no-spe
珟圚のABIのBook-ESPEABI拡匵機胜を無効にしたす。

-mabi = ibmlongdouble
珟圚のABIを倉曎しお、IBM拡匵粟床longdoubleを䜿甚したす。 これはPowerPCです
32ビットSYSVABIオプション。

-mabi = ieeelongdouble
珟圚のABIを倉曎しお、IEEE拡匵粟床longdoubleを䜿甚したす。 これはPowerPCです
32ビットLinuxABIオプション。

-mabi = elfv1
ELFv1ABIを䜿甚するように珟圚のABIを倉曎したす。 これはビッグ゚ンディアンのデフォルトのABIです
PowerPC64ビットLinux。 デフォルトのABIを䞊曞きするには、特別なシステムサポヌトず
芋事な方法で倱敗する可胜性がありたす。

-mabi = elfv2
ELFv2ABIを䜿甚するように珟圚のABIを倉曎したす。 これはほずんどのデフォルトのABIです-
゚ンディアンPowerPC64ビットLinux。 デフォルトのABIを䞊曞きするには、特別なシステムが必芁です
サポヌトし、芋事な方法で倱敗する可胜性がありたす。

-mプロトタむプ
-mno-プロトタむプ
System V.4および組み蟌みPowerPCシステムでは、可倉匕数ぞのすべおの呌び出しが想定されおいたす
関数は適切にプロトタむプ化されおいたす。 それ以倖の堎合、コンパむラは呜什を挿入する必芁がありたす
条件コヌドレゞスタのビット6を蚭定たたはクリアするためのすべおの非プロトタむプ呌び出しの前
(CR) 浮動小数点倀が浮動小数点で枡されるかどうかを瀺す
関数が可倉匕数を取る堎合に備えお登録したす。 ず -mプロトタむプ、呌び出しのみ
プロトタむプの可倉匕数関数にビットを蚭定たたはクリアしたす。

-msim
組み蟌みPowerPCシステムでは、起動モゞュヌルが呌び出されるず想定したす sim-crt0.o &
暙準Cラむブラリは libsim.a & libc.a。 これはのデフォルトです
powerpc-*-eabisim 構成。

-mmvme
組み蟌みPowerPCシステムでは、起動モゞュヌルが呌び出されるず想定したす crt0.o ず
暙準Cラむブラリは libmvme.a & libc.a.

-マッド
組み蟌みPowerPCシステムでは、起動モゞュヌルが呌び出されるず想定したす crt0.o ず
暙準Cラむブラリは libads.a & libc.a.

-ミむ゚ロヌナむフ
組み蟌みPowerPCシステムでは、起動モゞュヌルが呌び出されるず想定したす crt0.o ず
暙準Cラむブラリは libyk.a & libc.a.

-mvxworks
System V.4および組み蟌みPowerPCシステムでは、コンパむルするこずを指定したす。
VxWorksシステム。

-メンブ
組み蟌み PowerPC システムでは、 PPC_EMB を瀺す ELF フラグ ヘッダヌのビット
それ むヌビ 拡匵再配眮が䜿甚されたす。

-めあび
-mno-eabi
System V.4および組み蟌みPowerPCシステムでは、組み蟌みに準拠しおいたせん準拠しおいたせん。
システムぞの䞀連の倉曎であるアプリケヌションバむナリむンタヌフェむスEABI
V.4仕様。 遞択 -めあび スタックが8バむトに敎列されおいるこずを意味したす
境界では、関数「__eabi」が「main」から呌び出され、EABI環境をセットアップしたす。
ず -msdata オプションは、「r2」ず「r13」の䞡方を䜿甚しお、XNUMX぀の別々の小さなデヌタを指すこずができたす
゚リア。 遞択 -mno-eabi スタックが16バむト境界に敎列されおいるこずを意味したす。
EABI初期化関数は「メむン」から呌び出され、 -msdata オプションはのみを䜿甚したす
「r13」は、単䞀の小さなデヌタ領域を指したす。 The -めあび 次の堎合、オプションはデフォルトでオンになっおいたす
のいずれかを䜿甚しお構成されたGCC powerpc *-*-eabi * オプション。

-msdata = eabi
System V.4および組み蟌みPowerPCシステムでは、初期化された小さな「const」をグロヌバルに配眮し、
の静的デヌタ .sdata2 レゞスタ「r2」が指すセクション。 小さく入れる
初期化された非「const」グロヌバルおよび静的デヌタ .sdata ずがった郚分
レゞスタ「r13」で初期化されおいない小さなグロヌバルおよび静的デヌタを .sbss
に隣接するセクション .sdata セクション。 NS -msdata = eabi オプションがある
ず互換性がありたせん -m再配眮可胜 オプション。 ザ· -msdata = eabi オプションはたた蚭定したす
-メンブ オプションを遞択したす。

-msdata = sysv
System V.4および組み蟌みPowerPCシステムでは、小さなグロヌバルデヌタず静的デヌタを
.sdata レゞスタ「r13」が指すセクション。 初期化されおいない小さなグロヌバルを配眮
および静的デヌタ .sbss に隣接するセクション .sdata セクション。 NS
-msdata = sysv オプションはず互換性がありたせん -m再配眮可胜 オプションを遞択したす。

-msdata = default
-msdata
System V.4および組み蟌みPowerPCシステムの堎合、 -めあび 䜿甚されおいる堎合は、同じコヌドをコンパむルしたす
as -msdata = eabi、それ以倖の堎合は、ず同じコヌドをコンパむルしたす -msdata = sysv.

-msdata = data
System V.4 および組み蟌み PowerPC システムでは、小さなグロヌバル デヌタを .sdata
セクション。 小さな初期化されおいないグロヌバル デヌタを .sbss セクション。 䜿甚犁止
ただし、小さなデヌタをアドレス指定するには「r13」を登録したす。 これは、デフォルトの動䜜です。
他の -msdata オプションが䜿甚されたす。

-msdata = none
-mno-sdata
組み蟌み PowerPC システムでは、初期化されたすべおのグロヌバル デヌタず静的デヌタを .data
セクション内のすべおの初期化されおいないデヌタ .bss のセクションから無料でダりンロヌドできたす。

-mblock-move-inline-limit =NUM
たたは以䞋のすべおのブロック移動「memcpy」の呌び出しや構造䜓のコピヌなどをむンラむン化する
に等しい NUM バむト。 の最小倀 NUM 32ビットタヌゲットでは32バむト、64
64ビットタヌゲットのバむト。 デフォルト倀はタヌゲット固有です。

-G NUM
組み蟌みPowerPCシステムでは、グロヌバルおよび静的アむテムを以䞋に配眮したす NUM
通垞のデヌタたたはBSSセクションの代わりにスモヌルデヌタたたはBSSセクションにバむト。
デフォルトでは、 NUM は8です。 -G NUM スむッチもリンカに枡されたす。 すべおのモゞュヌル
同じでコンパむルする必芁がありたす -G NUM の倀です。

-mregnames
-mno-regnames
System V.4および組み蟌みPowerPCシステムでは、レゞスタ名を発行したす発行したせん。
シンボリック圢匏を䜿甚したアセンブリ蚀語出力。

-mlongcall
-mno-ロングコヌル
デフォルトでは、すべおの通話が遠くにあるず想定しおいるため、より長く、より高䟡です
呌び出しシヌケンスが必芁です。 これは、32メガバむトを超える通話に必芁です
33,554,432バむト珟圚の堎所から。 ショヌトコヌルは、
コンパむラヌは、呌び出しがそれほど遠くないこずを知っおいたす。 この蚭定は次のように䞊曞きできたす
「shortcall」関数属性、たたは「#pragma ロングコヌル0」

䞀郚のリンカヌは、範囲倖の呌び出しを怜出し、グルヌコヌドを生成するこずができたす
はえ。 これらのシステムでは、長い呌び出しは䞍芁であり、より遅いコヌドを生成したす。 ずしお
この蚘事の執筆時点では、PowerPC / 64甚のGNUリンカヌず同様に、AIXリンカヌがこれを実行できたす。 これ
この機胜を32ビットPowerPCシステムのGNUリンカヌにも远加する予定です。

Darwin / PPCシステムでは、「pragma longcall」は、「jbsr callee、L42」に加えお、 ブランチ
島 グルヌコヌド。 XNUMX぀のタヌゲットアドレスは、呌び出し先ずブランチを衚したす
小島。 ダヌりィン/PPCリンカヌは最初のアドレスを優先し、「blcallee」を生成したす
PPCの「bl」呜什が呌び出し先に盎接到達した堎合。 それ以倖の堎合、リンカヌ
ブランチアむランドを呌び出すために「blL42」を生成したす。 ブランチアむランドはに远加されたす
呌び出し元の関数の本䜓。 呌び出し先の完党な32ビットアドレスを蚈算し、
それにゞャンプしたす。

Mach-ODarwinシステムでは、このオプションはコンパむラヌが
すべおの盎接呌び出し、およびダヌりィンリンカヌはそれを䜿甚するか砎棄するかを決定したす。

将来、リンカヌが次のように認識されおいる堎合、GCCはすべおのlongcall仕様を無芖する可胜性がありたす
接着剀を生成したす。

-mtls-マヌカヌ
-mno-tls-マヌカヌ
関数を指定する再配眮で「__tls_get_addr」ぞの呌び出しをマヌクマヌクしない
口論。 再配眮により、リンカは関数呌び出しを確実に関連付けるこずができたす
TLS最適化のための匕数蚭定手順。これにより、GCCの改善が可胜になりたす。
シヌケンスをスケゞュヌルしたす。

-pthread
マルチスレッドのサポヌトを远加したす pthread 図曞通。 このオプションは、フラグを蚭定したす
プリプロセッサずリンカの䞡方。

-mレシピ
-mno-レシピ
このオプションを䜿甚するず、逆数掚定ず逆数平方根掚定を䜿甚できたす。
代わりに粟床を䞊げるための远加のニュヌトンラプ゜ンステップを䌎う呜什
陀算たたは平方根を実行し、浮動小数点匕数に察しお陀算したす。 あなたは䜿甚する必芁がありたす
  -ffast-æ•°å­Š 䜿甚時のオプション -mレシピ (たたは少なくずも -funsafe-数孊の最適化,
-有限数孊のみ, -freciprocal-æ•°å­Š & -fno-トラップ-数孊。 に泚意しおください
シヌケンスのスルヌプットは、通垞、非シヌケンスのスルヌプットよりも高くなりたす。
盞互呜什の堎合、シヌケンスの粟床は最倧2ulp䜎䞋する可胜性がありたす
぀たり、1.0の逆数は0.99999994に等しい逆数平方根の堎合。

-mrecip =オプト
このオプションは、䜿甚できる盞互掚定呜什を制埡したす。 オプト  
オプションのコンマ区切りリスト。前に「」を付けるこずができたす。 オプションを反転するには
"all": すべおの芋積もり呜什を有効にする、"default": デフォルトの呜什を有効にする、
に盞圓 -mレシピ、「none」: すべおの芋積もり呜什を無効にしたす。
-mno-レシピ; "div": 䞡方のシングルに察しお逆数近䌌呜什を有効にしたす。
および倍粟床; "divf": 単粟床逆数近䌌を有効にしたす
指瀺; "divd": 倍粟床逆数近䌌を有効にしたす
指瀺; "rsqrt": 逆数平方根近䌌呜什を有効にしたす
単粟床ず倍粟床の䞡方。 "rsqrtf": 単粟床逆数を有効にしたす
平方根近䌌呜什; "rsqrtd": 倍粟床を有効にしたす
逆平方根近䌌呜什;

たずえば、 -mrecip = all、rsqrtd すべおの盞互掚定を有効にしたす
「FRSQRTE」、「XSRSQRTEDP」、および「XVRSQRTEDP」呜什を陀く呜什
倍粟床の逆数平方根蚈算を凊理したす。

-mrecip-粟床
-mno-recipe-precision
盞互掚定呜什がより高いものを提䟛するず仮定したす仮定しないでください-
PowerPCABIで矩務付けられおいるよりも正確な芋積もり。 遞択 -mcpu = power6,
-mcpu = power7 or -mcpu = power8 自動的に遞択 -mrecip-粟床。 ダブル-
䜎粟床の平方根掚定呜什は、デフォルトでは生成されたせん。
粟密機械、XNUMX回埌に収束する掚定倀を提䟛しないため
手順。

-mveclibabi =type
倖郚ラむブラリを䜿甚しお組み蟌み関数をベクトル化するために䜿甚するABIタむプを指定したす。
珟圚サポヌトされおいる唯䞀のタむプは「mass」です。これは、IBM の
を䜿甚しお組み蟌み関数をベクトル化するための数孊加速サブシステム (MASS) ラむブラリ
倖郚ラむブラリ。 GCC は珟圚、「acosd2」、「acosf4」、「acoshd2」、
「acoshf4」、「asind2」、「asinf4」、「asinhd2」、「asinhf4」、「atan2d2」、「atan2f4」、「atand2」、
「atanf4」、「atanhd2」、「atanhf4」、「cbrtd2」、「cbrtf4」、「cosd2」、「cosf4」、「coshd2」、
「coshf4」、「erfcd2」、「erfcf4」、「erfd2」、「erff4」、「exp2d2」、「exp2f4」、「expd2」、「expf4」、
"expm1d2"、"expm1f4"、"hypotd2"、"hypotf4"、"lgammad2"、"lgammaf4"、"log10d2"、
"log10f4"、"log1pd2"、"log1pf4"、"log2d2"、"log2f4"、"logd2"、"logf4"、"powd2"、
「powf4」、「sind2」、「sinf4」、「sinhd2」、「sinhf4」、「sqrtd2」、「sqrtf4」、「tand2」、「tanf4」、
power2 のコヌドを生成する堎合は、「tanhd4」および「tanhf7」。 äž¡æ–¹ -ftree-ベクトル化 &
-funsafe-数孊の最適化 たた、有効にする必芁がありたす。 MASSラむブラリは
リンク時に指定されたす。

-mfriz
-mno-フリズ
「friz」呜什を生成する生成しない堎合 -funsafe-数孊の最適化
オプションは、浮動小数点倀の64ビット敎数ぞの䞞めを最適化するために䜿甚されたす。
浮動小数点に戻りたす。 「friz」呜什は、次の堎合に同じ倀を返したせん。
浮動小数点数が倧きすぎお敎数に収たりたせん。

-mpointers-to-nested-functions
-mno-ネストされた関数ぞのポむンタ
スタティック チェヌン レゞスタをロヌドするコヌドを生成したす (生成したせん) (r11 い぀
関数ポむンタヌが存圚するAIXおよび64ビットLinuxシステム䞊のポむンタヌを介した呌び出し
関数アドレス、ロヌドされるTOC倀を䞎える3ワヌド蚘述子を指したす
登録 r2、およびレゞスタにロヌドされる静的チェヌン倀 r11を遞択したす。
-mpointers-to-nested-functions デフォルトでオンになっおいたす。 ポむンタを介しお呌び出すこずはできたせん
ネストされた関数たたはを䜿甚する他の蚀語でコンパむルされた関数ぞのポむンタ
静的チェヌンを䜿甚する堎合 -mno-ネストされた関数ぞのポむンタ.

-msave-toc-間接
-mno-save-toc-indirect
TOC倀を予玄枈みスタックの堎所に保存するコヌドを生成生成しない
関数がAIXおよび64ビット䞊のポむンタヌを介しお呌び出す堎合は、関数プロロヌグで
Linuxシステム。 TOC倀がプロロヌグに保存されおいない堎合は、盎前に保存されたす
ポむンタを介した呌び出し。 The -mno-save-toc-indirect オプションがデフォルトです。

-mcompat-align-parm
-mno-compat-align-parm
最倧の配眮で構造パラメヌタヌを枡すためのコヌドを生成する生成しない
叀いバヌゞョンのGCCずの互換性のために64ビット。

叀いバヌゞョンのGCC4.9.0より前は、構造パラメヌタヌを誀っお敎列したせんでした
その構造に128ビットを必芁ずするメンバヌが含たれおいる堎合の128ビット境界
アラむンメント。 これは、GCCの最新バヌゞョンで修正されおいたす。 このオプションを䜿甚できたす
叀いバヌゞョンのでコンパむルされた関数ず互換性のあるコヌドを生成する
GCC。

このバヌゞョンのコンパむラでは、 -mcompat-align-parm がデフォルトです。
Linux ELFv2 ABI を䜿甚したす。

RX オプション

これらのコマンドラむンオプションは、RXタヌゲットに察しお定矩されおいたす。

-m64ビットダブル
-m32ビットダブル
「double」デヌタ型を64ビット-m64ビットダブルたたは32ビット-m32ビットダブル)
サむズで。 デフォルトは -m32ビットダブル. Note RX浮動小数点ハヌドりェアのみが機胜したす
32ビット倀の堎合、これがデフォルトが -m32ビットダブル.

-fpu
-ノフプ
有効にする-fpuたたは無効にしたす-ノフプRX浮動小数点ハヌドりェアの䜿甚。 The
デフォルトでは、 RX600 シリヌズおよび無効化 RX200 シリヌズ。

浮動小数点呜什は、32ビット浮動小数点倀に察しおのみ生成されたす。
ただし、FPUハヌドりェアは、 -m64ビットダブル オプションがある
䞭叀。

Note Status -fpu オプションが有効になり、 -funsafe-数孊の最適化 も有効になっおいたす
自動的。 これは、RXFPU呜什自䜓が安党ではないためです。

-mcpu =名
タヌゲットずするRXCPUのタむプを遞択したす。 珟圚、XNUMX぀のタむプがサポヌトされおいたす。
ゞェネリック RX600 & RX200 シリヌズハヌドりェアず特定の RX610 CPU。 デフォルトは
RX600.

唯䞀の違いは RX600 & RX610 ぀たり RX610 をサポヌトしおいたせん
「MVTIPL」呜什。

  RX200 シリヌズにはハヌドりェア浮動小数点ナニットなどがありたせん -ノフプ 有効になっおいたす
このタむプが遞択されおいる堎合、デフォルトで。

-mbig-゚ンディアン-デヌタ
-mlittle-゚ンディアン-デヌタ
デヌタコヌドではないをビッグ゚ンディアン圢匏で保存したす。 デフォルトは
-mlittle-゚ンディアン-デヌタ、぀たり、リトル゚ンディアン圢匏でデヌタを保存したす。

-msmall-data-limit =N
配眮できるグロヌバル倉数ず静的倉数の最倧サむズをバむト単䜍で指定したす
小さなデヌタ領域に。 小さなデヌタ領域を䜿甚するず、より小さく、より速くなる可胜性がありたす
コヌドですが、領域のサむズは制限されおおり、それを確認するのはプログラマヌ次第です。
゚リアはオヌバヌフロヌしたせん。 たた、小さなデヌタ領域が䜿甚される堎合、RXのXNUMX぀
レゞスタ通垞は「r13」は、この領域を指すために予玄されおいるため、
コンパむラで䜿甚できるようになりたした。 これにより、速床が䜎䞋したり、倧きくなったりする可胜性がありたす
倉数がこのレゞスタに保持されるのではなく、スタックにプッシュされる堎合のコヌド。

䞀般的な倉数初期化されおいない倉数ず定数は
のその他のセクションに割り圓おられおいるため、小さなデヌタ領域には配眮されたせん。
出力実行可胜ファむル。

デフォルト倀はれロで、この機胜は無効になっおいたす。 この機胜はそうではないこずに泚意しおください
より高い最適化レベルでデフォルトで有効になっおいたす-O2 などのために
レゞスタヌを予玄するこずによる朜圚的に有害な圱響。 それはプログラマヌ次第です
この機胜が圌らのプログラムに有益であるかどうかを実隓しお発芋するこず。 芋る
の説明 -mpid 実際のレゞスタがどのように
小さなデヌタ領域のポむンタを抌したたたにしたす。

-msim
-mno-sim
シミュレヌタランタむムを䜿甚したす。 デフォルトでは、libglossボヌド固有のランタむムを䜿甚したす。

-mas100-構文
-mno-as100-構文
アセンブラ出力を生成するずきは、ルネサスのAS100ず互換性のある構文を䜿甚しおください
アセンブラ。 この構文はGASアセンブラでも凊理できたすが、いく぀かありたす。
制限があるため、デフォルトでは生成されたせん。

-mmax-constant-size =N
でオペランドずしお䜿甚できる定数の最倧サむズをバむト単䜍で指定したす
RX呜什。 RX呜什セットでは、最倧4の定数を䜿甚できたすが
呜什で䜿甚される長さがバむトの堎合、倀が長いほど長いこずになりたす
呜什。 したがっお、状況によっおは、サむズを制限するこずが有益な堎合がありたす。
呜什で䜿甚される定数。 倧きすぎる定数は代わりに
定数プヌルに配眮され、レゞスタの間接参照を介しお参照されたす。

倀 N 0から4の間で指定できたす。0デフォルトたたは4の倀は、次のこずを意味したす。
任意のサむズの定数を䜿甚できたす。

-mリラックス
リンカヌ緩和を有効にしたす。 リンカヌ緩和は、リンカヌが詊行するプロセスです。
さたざたな呜什の短いバヌゞョンを芋぀けるこずにより、プログラムのサむズを瞮小したす。
デフォルトでは無効です。

-mint-register =N
高速割り蟌みハンドラ関数甚に予玄するレゞスタの数を指定したす。 The
倀 N 0から4の間で指定できたす。倀1は、レゞスタ「r13」が予玄されおいるこずを意味したす。
高速割り蟌みハンドラ専甚。 2の倀は「r13」を予玄し、
「r12」。 倀が3の堎合は「r13」、「r12」、「r11」が予玄され、倀が4の堎合は「r13」が予玄されたす。
「r10」たで。 デフォルトの倀0は、レゞスタを予玄したせん。

-msave-acc-in-interrupts
割り蟌みハンドラ関数がアキュムレヌタレゞスタを保持する必芁があるこずを指定したす。
これは、通垞のコヌドがアキュムレヌタレゞスタを䜿甚する堎合にのみ必芁です。
64ビットの乗算を実行するためです。 デフォルトでは、アキュムレヌタは無芖されたす
これにより、割り蟌みハンドラが高速になりたす。

-mpid
-mno-pid
䜍眮に䟝存しないデヌタの生成を有効にしたす。 有効にするず、
定数デヌタは、レゞスタに保持されおいるベヌスアドレスからのオフセットを介しお行われたす。 これ
実行時に定数デヌタの堎所を特定する必芁がなく、
再配眮される実行可胜ファむル。これは、タむトな組み蟌みアプリケヌションにずっおの利点です。
メモリの制玄。 倉曎可胜なデヌタは、このオプションの圱響を受けたせん。

この機胜を䜿甚するず、定数デヌタ甚にレゞスタ通垞は「r13」が予玄されるこずに泚意しおください。
ベヌスアドレス。 これにより、特に耇雑な堎合に、コヌドが遅くなったり倧きくなったりする可胜性がありたす
機胜したす。

䞀定のデヌタベヌスアドレスを保持するために遞択される実際のレゞスタは、
  -msmall-デヌタ制限 および/たたは -ミント登録 コマンドラむンオプションが有効になりたす。
レゞスタ「r13」から始たり、䞋に向かっお、レゞスタが最初に割り圓おられたす。
の芁件を満たすために -ミント登録をタップし、その埌、 -mpid そしお最埌に
-msmall-デヌタ制限。 したがっお、スモヌルデヌタ゚リアレゞスタが「r8」である可胜性がありたす。
䞡方の堎合 -mint-register = 4 & -mpid コマンドラむンで指定したす。

デフォルトでは、この機胜は有効になっおいたせん。 デフォルトは、 -mno-pid
コマンドラむンオプション。

-mno-warn-耇数の高速割り蟌み
-mwarn-耇数の高速割り蟌み
GCCが耇数の高速割り蟌みを怜出した堎合に譊告メッセヌゞを発行しないようにしたす
ファむルをコンパむルするずきのハンドラヌ。 デフォルトでは、䜙分なものごずに譊告を発行したす
RXはそのような割り蟌みをXNUMX぀しかサポヌトしおいないため、高速割り蟌みハンドラが芋぀かりたした。

泚 䞀般的なGCCコマンドラむンオプション -修正枈み-REG RXにずっお特別な意味がありたす
「割り蟌み」関数属性ずずもに䜿甚する堎合のポヌト。 この属性は、
高速割り蟌みを凊理するこずを目的ずした関数。 GCCは、レゞスタのみを䜿甚するこずを保蚌したす
「r10」、「r11」、「r12」および/たたは「r13」であり、
察応するレゞスタは、 -修正枈み-REG or -ミント登録
コマンドラむンオプション。

S / 390 & zシリヌズ オプション

これらは、 -m S/390およびzSeriesアヌキテクチャヌ甚に定矩されたオプション。

-mhard-float
-msoft-float
浮動小数点呜什ず浮動小数点レゞスタを䜿甚する䜿甚しない-
ポむント操䜜。 い぀ -msoft-float が指定されおいる堎合、 libgcc.a 〜に慣れる
浮動小数点挔算を実行したす。 い぀ -mhard-float 指定されおいる堎合、コンパむラ
IEEE浮動小数点呜什を生成したす。 これがデフォルトです。

-mhard-dfp
-mno-ハヌド-dfp
XNUMX進数甚のハヌドりェアXNUMX進数浮動小数点呜什を䜿甚する䜿甚しない-
浮動小数点挔算。 い぀ -mno-ハヌド-dfp が指定されおいる堎合、 libgcc.a  
XNUMX進浮動小数点挔算を実行するために䜿甚されたす。 い぀ -mhard-dfp 指定されおいる堎合、
コンパむラは、XNUMX進浮動小数点ハヌドりェア呜什を生成したす。 これがデフォルトです
for -march = z9-ec 以䞊です。

-mlong-double-64
-mlong-double-128
これらのスむッチは、「ロングダブル」タむプのサむズを制埡したす。 64ビットのサむズは
「double」タむプず同等の「longdouble」タむプ。 これがデフォルトです。

-mbackchain
-mno-バックチェヌン
呌び出し元のフレヌムのアドレスをバックチェヌンポむンタずしおに保存したす保存したせん。
呌び出し先のスタックフレヌム。 次のようなツヌルを䜿甚しおデバッグできるようにするには、バックチェヌンが必芁になる堎合がありたす。
DWARF2のコヌルフレヌム情報を理解しおいたせん。 い぀ -mno-packed-stack である
぀たり、バックチェヌンポむンタはスタックフレヌムの䞀番䞋に栌玍されたす。 い぀
-mpacked-スタック が有効である堎合、バックチェヌンはの最䞊䜍の単語に配眮されたす
96/160バむトのレゞスタ保存領域。

䞀般的に、 -mbackchain でコンパむルされたコヌドずの呌び出し互換性がありたす
-MMOバックチェヌン; ただし、デバッグ目的でバックチェヌンを䜿甚するには、通垞、
バむナリ党䜓がで構築されおいるこず -mbackchain。 の組み合わせに泚意しおください
-mbackchain, -mpacked-スタック & -mhard-float サポヌトされおいたせん。 を構築するために
Linuxカヌネルの䜿甚 -msoft-float.

デフォルトでは、バックチェヌンを維持したせん。

-mpacked-スタック
-mno-packed-stack
パックスタックレむアりトを䜿甚したす䜿甚しないでください。 い぀ -mno-packed-stack 指定されおいる堎合、
コンパむラヌは、96/160バむトのレゞスタヌ保管域のすべおのフィヌルドをそれらの
デフォルトの目的; 未䜿甚のフィヌルドはただスタックスペヌスを占有したす。 い぀ -mpacked-スタック is
指定された堎合、レゞスタ保存スロットはレゞスタ保存の䞊郚に密集しおいたす。
範囲; 未䜿甚スペヌスは他の目的に再利甚されるため、より効率的に䜿甚できたす。
䜿甚可胜なスタックスペヌス。 ただし、 -mbackchain 最䞊䜍も有効です
保存領域のワヌドは、バックチェヌンず差出人䜏所を栌玍するために垞に䜿甚されたす
レゞスタは垞にバックチェヌンのXNUMXワヌド䞋に保存されたす。

スタックフレヌムバックチェヌンが䜿甚されおいない限り、 -mpacked-スタック
で生成されたコヌドずの呌び出し互換性がありたす -mno-packed-stack。 䞀郚の非FSFに泚意しおください
スタックフレヌムを䜿甚するS/2.95たたはzSeriesで生成されたコヌド甚のGCC390のリリヌス
デバッグ目的だけでなく、実行時のバックチェヌン。 そのようなコヌドは呌び出しではありたせん-
でコンパむルされたコヌドず互換性がありたす -mpacked-スタック。 たた、の組み合わせに泚意しおください
-mbackchain, -mpacked-スタック & -mhard-float サポヌトされおいたせん。 を構築するために
Linuxカヌネルの䜿甚 -msoft-float.

デフォルトでは、パックスタックレむアりトは䜿甚されたせん。

-msmall-exec
-mno-small-exec
サブルヌチンを実行するための「bras」呜什を䜿甚しおコヌドを生成するたたは生成しない
呌び出したす。 これは、実行可胜ファむルの合蚈サむズが64kを超えない堎合にのみ確実に機胜したす。
デフォルトでは、代わりに「basr」呜什を䜿甚したすが、これはありたせん
制限。

-m64
-m31
日時 -m31 が指定されおいる堎合は、GNU / Linux for S /390ABIに準拠したコヌドを生成したす。 い぀
-m64 が指定されおいる堎合は、GNU / Linux forzSeriesABIに準拠したコヌドを生成したす。 これ
特にGCCが64ビット呜什を生成できるようにしたす。 のために s390 タヌゲット、
デフォルトは -m31、䞀方、 s390x タヌゲットのデフォルトは -m64.

-mzach
-メサ
日時 -mzach が指定されおいる堎合は、で利甚可胜な手順を䜿甚しおコヌドを生成したす
z/Architecture。 い぀ -メサ が指定されおいる堎合は、呜什を䜿甚しおコヌドを生成したす
ESA/390で利甚できたす。 ご了承ください -メサ では䞍可胜です -m64。 生成するずき
GNU / Linux for S / 390 ABIに準拠したコヌド、デフォルトは -メサ。 生成するずき
GNU / Linux for zSeries ABIに準拠したコヌド、デフォルトは -mzach.

-mmvcle
-mno-mvcle
「mvcle」呜什を䜿甚しおブロックを実行するコヌドを生成するたたは生成しない
移動したす。 い぀ -mno-mvcle が指定されおいる堎合は、代わりに「mvc」ルヌプを䜿甚しおください。 これがデフォルトです
サむズを最適化しない限り。

-mdebug
-mno-デバッグ
コンパむル時に远加のデバッグ情報を印刷したすたたは印刷したせん。 デフォルトは
デバッグ情報を出力したせん。

-XNUMX月=CPUタむプ
で実行されるコヌドを生成する CPUタむプ、これは、
特定のプロセッサタむプ。 の可胜な倀 CPUタむプ   g5, g6, z900, z990, z9-109,
z9-ec, z10, z196, zEC12. で利甚可胜な手順を䜿甚しおコヌドを生成する堎合
z/アヌキテクチャ、デフォルトは -march = z900。 それ以倖の堎合、デフォルトは -march = g5.

-mtune =CPUタむプ
に調敎する CPUタむプ ABIを陀き、生成されたコヌドに該圓するすべおのもの
および利甚可胜な呜什のセット。 のリスト CPUタむプ 倀はず同じです
-行進。 デフォルトはに䜿甚される倀です -行進.

-mtpf-トレヌス
-mno-tpf-トレヌス
トレヌスルヌチンにTPFOS固有のブランチを远加する远加しないコヌドを生成する
オペレヌティングシステムで。 このオプションは、コンパむルする堎合でも、デフォルトでオフになっおいたす。
TPFOS。

-混乱-狂った
-mno-fusion-madd
浮動小数点の積和を䜿甚する䜿甚しないコヌドを生成する
指瀺。 これらの呜什は、ハヌドりェア浮動小数点の堎合、デフォルトで生成されたす
䜿甚されおいる。

-mwarn-framesize =フレヌムサむズ
珟圚の関数が指定されたフレヌムサむズを超えた堎合に譊告を発したす。 これは
コンパむル時のチェックは、プログラムの実行時に実際の問題である必芁はありたせん。 これ
スタックオヌバヌフロヌを匕き起こす可胜性が最も高い関数を特定するこずを目的ずしおいたす。 です
Linuxカヌネルなど、スタックサむズが制限されおいる環境で䜿甚するず䟿利です。

-mwarn-dynamicstack
関数が「alloca」を呌び出すか、動的なサむズの配列を䜿甚する堎合は、譊告を発したす。 これ
スタックサむズが限られおいるため、䞀般的にはお勧めできたせん。

-mstack-guard =スタックガヌド
-mstack-size =スタックサむズ
これらのオプションが提䟛されおいる堎合、S/390バック゚ンドは
スタックサむズが次の堎合にトラップをトリガヌする関数プロロヌグ スタックガヌド 䞊蚘のバむト
スタックサむズ S / 390のスタックは䞋向きになるこずに泚意しおください。 の堎合 スタックガヌド
オプションは省略されたすコンパむルされたフレヌムサむズより2倧きい最小の环乗
関数が遞択されおいたす。 これらのオプションは、スタックのデバッグを支揎するために䜿甚するこずを目的ずしおいたす
オヌバヌフロヌの問題。 远加で発行されたコヌドは、わずかなオヌバヌヘッドず
したがっお、パフォヌマンスを向䞊させるこずなく、本番環境のようなシステムでも䜿甚できたす。
劣化。 䞎えられた倀は2の正確な环乗でなければなりたせん スタックサむズ である必芁がありたす
越える スタックガヌド 64kを超えずに。 効率的にするために䜙分な
コヌドは、スタックが倀に揃えられたアドレスから始たるず想定したす
によっお䞎えられた スタックサむズを遞択したす。 スタックガヌド オプションは、ず組み合わせおのみ䜿甚できたす
スタックサむズ.

-mhotpatch =プレハヌフワヌド,ポストハヌフワヌド
ホットパッチオプションが有効になっおいる堎合、「ホットパッチ」関数プロロヌグが生成されたす。
コンパむル単䜍のすべおの関数。 機胜ラベルには、指定されたものが付加されたす
XNUMXバむトのNOP呜什の数プレハヌフワヌド、最倧1000000。 埌に
ラベル、2 * ポストハヌフワヌド 呜什のような最倧のNOPを䜿甚しお、バむトが远加されたす
アヌキテクチャで蚱可されおいたす最倧1000000。

䞡方の匕数がれロの堎合、ホットパッチは無効になりたす。

このオプションは、「hotpatch」属性を持぀個々の関数に察しおオヌバヌラむドできたす。

スコア オプション

これらのオプションは、スコアの実装に察しお定矩されおいたす。

-meb
ビッグ゚ンディアンモヌドのコヌドをコンパむルしたす。 これがデフォルトです。

-メル
リトル゚ンディアンモヌドのコヌドをコンパむルしたす。

-mnhwloop
「bcnz」呜什の生成を無効にしたす。

-マルス
アラむンされおいないロヌドおよびストア呜什の生成を有効にしたす。

-mmac
積和呜什の䜿甚を有効にしたす。 デフォルトでは無効になっおいたす。

-mscore5
タヌゲットアヌキテクチャずしおSCORE5を指定したす。

-mscore5u
タヌゲットアヌキテクチャのSCORE5Uを指定したす。

-mscore7
タヌゲットアヌキテクチャずしおSCORE7を指定したす。 これがデフォルトです。

-mscore7d
タヌゲットアヌキテクチャずしおSCORE7Dを指定したす。

SH オプション

ボヌマン -m SH実装のオプションが定矩されおいたす。

-m1 SH1のコヌドを生成したす。

-m2 SH2のコヌドを生成したす。

-m2e
SH2eのコヌドを生成したす。

-m2a-nofpu
FPUなしのSH2a、たたはSH2a-FPUのコヌドを次のように生成したす。
浮動小数点ナニットは䜿甚されたせん。

-m2a-シングルのみ
倍粟床浮動小数点がないように、SH2a-FPUのコヌドを生成したす
操䜜が䜿甚されたす。

-m2a-シングル
浮動小数点ナニットが単粟床であるず仮定しお、SH2a-FPUのコヌドを生成したす
デフォルトではモヌド。

-m2a
浮動小数点ナニットが倍粟床であるず仮定しお、SH2a-FPUのコヌドを生成したす
デフォルトではモヌド。

-m3 SH3のコヌドを生成したす。

-m3e
SH3eのコヌドを生成したす。

-m4-nofpu
浮動小数点ナニットなしでSH4のコヌドを生成したす。

-m4-シングルのみ
シングルのみをサポヌトする浮動小数点ナニットを䜿甚しおSH4のコヌドを生成したす-
粟床の高い挔算。

-m4-シングル
浮動小数点ナニットが単粟床モヌドであるず仮定しお、SH4のコヌドを生成したす
デフォルトでは

-m4 SH4のコヌドを生成したす。

-m4-100
SH4-100のコヌドを生成したす。

-m4-100-nofpu
浮動小数点ナニットを䜿甚しないようにSH4-100のコヌドを生成しおください。

-m4-100-シングル
浮動小数点ナニットが単粟床モヌドであるず仮定しお、SH4-100のコヌドを生成したす
デフォルトでは

-m4-100-シングルのみ
倍粟床浮動小数点がないようにSH4-100のコヌドを生成したす
操䜜が䜿甚されたす。

-m4-200
SH4-200のコヌドを生成したす。

-m4-200-nofpu
浮動小数点ナニットがないような方法でSH4-200のコヌドを生成する
䞭叀。

-m4-200-シングル
浮動小数点ナニットが単粟床モヌドであるず仮定しお、SH4-200のコヌドを生成したす
デフォルトでは

-m4-200-シングルのみ
倍粟床浮動小数点がないようにSH4-200のコヌドを生成したす
操䜜が䜿甚されたす。

-m4-300
SH4-300のコヌドを生成したす。

-m4-300-nofpu
浮動小数点ナニットがないような方法でSH4-300のコヌドを生成する
䞭叀。

-m4-300-シングル
倍粟床浮動小数点がないようにSH4-300のコヌドを生成したす
操䜜が䜿甚されたす。

-m4-300-シングルのみ
倍粟床浮動小数点がないようにSH4-300のコヌドを生成したす
操䜜が䜿甚されたす。

-m4-340
SH4-340のコヌドを生成したすMMUなし、FPUなし。

-m4-500
SH4-500FPUなしのコヌドを生成したす。 パス -isa = sh4-nofpu アセンブラに。

-m4a-nofpu
SH4al-dspたたはSH4aのコヌドを、浮動小数点が次のように生成したす。
単䜍は䜿甚したせん。

-m4a-シングルのみ
倍粟床浮動小数点がないように、SH4aのコヌドを生成したす
操䜜が䜿甚されたす。

-m4a-シングル
浮動小数点ナニットが単粟床であるず仮定しお、SH4aのコヌドを生成したす
デフォルトではモヌド。

-m4a
SH4aのコヌドを生成したす。

-m4al
ず同じ -m4a-nofpu、暗黙的に通過するこずを陀いお -dsp アセンブラに。 GCC
珟圚、DSP呜什は生成されたせん。

-m5-32メディア
SHmedia甚の32ビットコヌドを生成したす。

-m5-32メディア-nofpu
浮動小数点ナニットがないように、SHmediaの32ビットコヌドを生成したす
䞭叀。

-m5-64メディア
SHmedia甚の64ビットコヌドを生成したす。

-m5-64メディア-nofpu
浮動小数点ナニットがないように、SHmediaの64ビットコヌドを生成したす
䞭叀。

-m5-コンパクト
SHcompactのコヌドを生成したす。

-m5-コンパクト-nofpu
浮動小数点ナニットが䜿甚されないように、SHcompactのコヌドを生成したす。

-mb ビッグ゚ンディアンモヌドでプロセッサのコヌドをコンパむルしたす。

-ml リトル゚ンディアンモヌドでプロセッサのコヌドをコンパむルしたす。

-mdalign
ダブルスを64ビット境界に揃えたす。 これにより、呌び出し芏玄が倉曎されるこずに泚意しおください。
したがっお、暙準Cラむブラリの䞀郚の関数は、再コンパむルしない限り機胜したせん。
それは最初に -mdalign.

-mリラックス
可胜であれば、リンク時に䞀郚のアドレス参照を短くしたす。 リンカヌオプションを䜿甚したす
-リラックス.

-mbigtable
「スむッチ」テヌブルでは32ビットオフセットを䜿甚したす。 デフォルトでは、16ビットオフセットを䜿甚したす。

-mbitops
SH2Aでビット操䜜呜什の䜿甚を有効にしたす。

-mfmovd
呜什「fmovd」の䜿甚を有効にしたす。 小切手 -mdalign アラむンメント制玄甚。

-ムレネサス
Renesasによっお定矩された呌び出し芏玄に準拠したす。

-mno-ルネサス
ルネサスの芏玄の前にGCC甚に定矩された芏玄に準拠する
利甚可胜でした。 このオプションは、SHツヌルチェヌンのすべおのタヌゲットのデフォルトです。

-mnomacsave
「MAC」レゞスタをコヌルクロバヌずしおマヌクしたす。 -ムレネサス 䞎えられたす。

-ミィヌ
-mno-ieee
凊理に圱響を䞎える浮動小数点比范のIEEEコンプラむアンスを制埡したす
比范の結果が順序付けられおいない堎合の䟋。 デフォルトでは -ミィヌ is
暗黙的に有効になりたす。 もしも -有限数孊のみ 有効になっおいたす -mno-ieee 暗黙的に蚭定され、
これにより、浮動小数点の倧等倀ず非等倀の比范が高速化されたす。 The
暗黙の蚭定は、次のいずれかを指定するこずでオヌバヌラむドできたす -ミィヌ or -mno-ieee.

-minline-ic_invalidate
ネストされた関数を蚭定した埌に呜什キャッシュ゚ントリを無効にするむンラむンコヌド
トランポリン。 このオプションは、次の堎合は効果がありたせん。 -musermode 有効であり、遞択されおいたす
コヌド生成オプション䟋 -m4「icbi」呜什の䜿甚を蚱可したせん。
遞択したコヌド生成オプションで「icbi」の䜿甚が蚱可されおいない堎合
指瀺、および -musermode 有効ではない堎合、むンラむン化されたコヌドは
連想曞き蟌みを䜿甚しお盎接呜什キャッシュアドレス配列。 これだけではありたせん
実行時に特暩モヌドが必芁ですが、キャッシュラむンが
TLBを介しおマッピングされ、マッピングが解陀されたした。

-ミスサむズ
呜什のサむズず堎所をアセンブリコヌドにダンプしたす。

-mpadstruct
このオプションは非掚奚です。 構造䜓を4バむトの倍数にパディングしたす。
SHABIず互換性がありたせん。

-matomic-model =
アトミック操䜜のモデルず远加のパラメヌタヌをコンマ区切りで蚭定したす
リスト。 アトミック組み蟌み関数の詳现に぀いおは、を参照しおください。 __アトミック ビルトむンを遞択したす。
次のモデルずパラメヌタがサポヌトされおいたす。

なし
コンパむラが生成したアトミックシヌケンスを無効にし、アトミックのラむブラリ呌び出しを発行したす
オペレヌション。 タヌゲットが「sh*-*-linux*」でない堎合、これがデフォルトです。

゜フトグサ
アトミックビルド甚のGNU/Linux互換gUSA゜フトりェアアトミックシヌケンスを生成したす-
関数で。 生成されたアトミックシヌケンスには、
システムの割り蟌み/䟋倖凊理コヌドであり、SH3*および
SH4*シングルコアシステム。 このオプションは、タヌゲットが
「sh*-*-linux*」および SH3* たたは SH4*。 タヌゲットが SH4A の堎合、このオプションも
ハヌドりェアのアトミック呜什「movli.l」ず「movco.l」を郚分的に利甚しお、
ない限り、より効率的なコヌドを䜜成する 厳栌な 指定されおいたす。

゜フトtcb
スレッドコントロヌルで倉数を䜿甚する゜フトりェアアトミックシヌケンスを生成したす
ブロック。 これは、SH1*でも䜿甚できるgUSAシヌケンスのバリ゚ヌションです。
およびSH2*タヌゲット。 生成されたアトミックシヌケンスには、
システムの割り蟌み/䟋倖凊理コヌドであり、
シングルコアシステム。 このモデルを䜿甚する堎合、 gbr-offset = パラメヌタはである必芁がありたす
同様に指定されたす。

゜フトimask
蚭定するこずにより、割り蟌みを䞀時的に無効にする゜フトりェアアトミックシヌケンスを生成したす
「SR.IMASK=1111」。 このモデルは、プログラムが特暩モヌドで実行されおいる堎合にのみ機胜したす
シングルコアシステムにのみ適しおいたす。 からの远加サポヌト
システムの割り蟌み/䟋倖凊理コヌドは必芁ありたせん。 このモデルは
タヌゲットが「sh*-*-linux*」およびSH1*たたはSH2*の堎合、デフォルトで有効になりたす。

ハヌドLLC
「movli.l」および「movco.l」呜什を䜿甚しおハヌドりェアアトミックシヌケンスを生成したす
それだけ。 これはSH4Aでのみ䜿甚可胜であり、マルチコアシステムに適しおいたす。
ハヌドりェア呜什は32ビットのアトミック倉数のみをサポヌトしおいるため、8ぞのアクセス
たたは、16ビット倉数は32ビットアクセスで゚ミュレヌトされたす。 これでコンパむルされたコヌド
オプションは、他の゜フトりェア アトミック モデルずも互換性がありたす。
SH4A システムで実行する堎合の割り蟌み/䟋倖凊理システム。 远加
システムの割り蟌み/䟋倖凊理コヌドからのサポヌトは必芁ありたせん
このモデルの堎合。

gbr-offset =
このパラメヌタヌは、スレッド制埡の倉数のオフセットをバむト単䜍で指定したす
生成されたアトミックシヌケンスで䜿甚されるブロック構造
゜フトtcb モデルが遞択されたした。 他のモデルの堎合、このパラメヌタヌは無芖されたす。
指定する倀は、0の敎数倍で、1020〜XNUMXの範囲である必芁がありたす。

厳栌な
このパラメヌタヌは、耇数のアトミック モデルの混合䜿甚を防ぎたす。
互換性があり、コンパむラにアトミックシヌケンスを生成させたす
指定機皮のみ。

-mtas
「__atomic_test_and_set」の「tas.b」オペコヌドを生成したす。 に応じお泚意しおください
特定のハヌドりェアおよび゜フトりェア構成これにより、党䜓的なパフォヌマンスが䜎䞋する可胜性がありたす
「tas.b」呜什によっお暗瀺されるオペランドキャッシュラむンフラッシュが原因です。 の䞊
マルチコアSH4Aプロセッサの「tas.b」呜什は泚意しお䜿甚する必芁がありたす。
特定のキャッシュ構成でデヌタが砎損する可胜性がありたす。

-mprefergot
䜍眮に䟝存しないコヌドを生成する堎合は、グロヌバルオフセットを䜿甚しお関数呌び出しを発行したす
プロシヌゞャリンケヌゞテヌブルの代わりにテヌブル。

-musermode
-mno-ナヌザヌモヌド
コンパむラが特暩モヌドコヌドを生成するこずを蚱可蚱可しないでください。 指定する
-musermode たた意味したす -mno-inline-ic_invalidate むンラむン化されたコヌドが機胜しない堎合
ナヌザヌモヌドで。 -musermode タヌゲットが「sh*-*-linux*」の堎合のデフォルトです。 の堎合
タヌゲットはSH1*たたはSH2*です -musermode ナヌザヌモヌドがないため、効果はありたせん。

-マルチコスト=数
乗算insnで想定するコストを蚭定したす。

-mdiv =戊略
敎数陀算挔算に䜿甚する陀算戊略を蚭定したす。 SHmediaの堎合
戊略 次のいずれかになりたす。

fp 浮動小数点で操䜜を実行したす。 これには非垞に高いレむテンシがありたすが、
いく぀かの呜什しかないので、コヌドに十分な数がある堎合は良い遞択かもしれたせん
コンパむラが浮動小数点をスケゞュヌルできるようにする、簡単に利甚できるILP
他の指瀺ず䞀緒に指瀺。 れロ陀算により、
浮動小数点䟋倖。

INV 敎数挔算を䜿甚しお陀数の逆数を蚈算し、次に
被陀数に逆数を掛けたす。 この戊略により、CSEず巻き䞊げが可胜になりたす
逆蚈算の。 れロ陀算は、䞍特定の結果を蚈算したす。
しかし、トラップしたせん。

invminlat
の倉皮 INV ここで、CSEたたは巻き䞊げの機䌚が芋぀からなかった堎合、たたは
操䜜党䜓が同じ堎所に匕き䞊げられたした。
逆数蚈算は、党䜓を枛らすために最終的な乗算ず絡み合っおいたす
レむテンシヌ、いく぀かのより倚くの呜什を䜿甚するこずを犠牲にしお、したがっおより少ないものを提䟛する
他のコヌドで機䌚をスケゞュヌルしたす。

コヌル
通垞はを実装するラむブラリ関数を呌び出したす invminlat ストラテゞヌ。 これ
「m5-*media-nofpu」コンパむルに高いコヌド密床を提䟛したす。

call2
同じラむブラリ関数の別の゚ントリポむントを䜿甚したす。
ルックアップテヌブルぞのポむンタはすでに蚭定されおおり、ポむンタの負荷が明らかになりたす
CSEおよびコヌドホむストの最適化。

invcall
invcall2
invfp
INV 初期コヌド生成のアルゎリズムですが、コヌドが残っおいる堎合
最適化されおいない堎合は、 コヌル, call2たたは fp それぞれ戊略。 ご了承ください
れロ陀算の朜圚的にトラップされる副䜜甚は、別の
呜什なので、すべおの敎数呜什が匕き䞊げられる可胜性がありたす。
しかし、副䜜甚のマヌカヌはそのたたです。 ぞの組換え
その堎合、浮動小数点挔算や呌び出しはできたせん。

inv20u
inv20l
の倉皮 invminlat ストラテゞヌ。 逆蚈算の堎合
乗算から分離されおいないため、配圓が適合する分割が高速化されたす
テストを挿入しお20ビット該圓する堎合はプラス蚘号に倉換し、
この堎合の操䜜。 このテストは、配圓が倧きい堎合の速床を䜎䞋させたす。
inv20u そのような少額の配圓の堎合はありそうもないず仮定し、 inv20l
可胜性が高いず想定しおいたす。

SHmedia以倖のタヌゲットの堎合 戊略 次のいずれかになりたす。

呌び出し-div1
シングルステップ陀算呜什「div1」を䜿甚するラむブラリ関数を呌び出しお、
操䜜を実行したす。 れロ陀算は䞍特定の結果を蚈算し、
トラップしないでください。 これは、SH4、SH2A、およびSHcompactを陀くデフォルトです。

コヌルFP
倍粟床浮動小数点で挔算を実行するラむブラリ関数を呌び出したす
点。 れロによる陀算は、浮動小数点䟋倖を匕き起こしたす。 これがデフォルトです
FPUを䜿甚したSHcompactの堎合。 ダブルを持たないタヌゲットにこれを指定する
粟床 FPU はデフォルトで「call-div1」になりたす。

コヌルテヌブル
小さな陀数のルックアップテヌブルを䜿甚するラむブラリ関数を呌び出したす。
倧きな陀数の堎合は倧文字ず小文字を区別する「div1」呜什。 れロ陀算
䞍特定の結果を蚈算し、トラップしたせん。 これはSH4のデフォルトです。
動的シフト呜什を持たないタヌゲットに察しおこれを指定するず、
デフォルトは「call-div1」です。

分割戊略が指定されおいない堎合、デフォルトの戊略が遞択されたす
珟圚のタヌゲットに基づいおいたす。 SH2A の堎合、デフォルトの戊略は「div」を䜿甚するこずです。
ラむブラリ関数呌び出しの代わりに「divu」呜什。

-maccumulate-発信匕数
関数プロロヌグの呚りではなく、発信匕数甚にXNUMX回スペヌスを予玄したす
各呌び出し。 䞀般的に、パフォヌマンスずサむズにメリットがありたす。 巻き戻しにも必芁
条件付きコヌドの呚りのスタックフレヌムを倉曎しないようにするため。

-mdivsi3_libfunc =名
32ビット笊号付き陀算に䜿甚されるラむブラリ関数の名前をに蚭定したす 名。 この
で䜿甚される名前にのみ圱響したす コヌル & invcall 陀算戊略、および
コンパむラヌは、これず同じ入力/出力/クロヌバヌされたレゞスタヌのセットを匕き続き期埅したす。
オプションがありたせんでした。

-mfixed-range =レゞスタ範囲
指定されたレゞスタ範囲を固定レゞスタずしお扱うコヌドを生成したす。 固定レゞスタ
レゞスタアロケヌタが䜿甚できないものです。 これは、カヌネルをコンパむルするずきに圹立ちたす
コヌド。 レゞスタ範囲は、ダッシュで区切られたXNUMX぀のレゞスタずしお指定されたす。 倚数
レゞスタ範囲は、コンマで区切っお指定できたす。

-mindexed-addressing
SHmedia32/SHcompactのむンデックス付きアドレッシングモヌドの䜿甚を有効にしたす。 これだけです
ハヌドりェアやOSがむンデックス付きの32ビットラップアラりンドセマンティクスを実装しおいる堎合は安党です
アドレッシングモヌド。 このアヌキテクチャにより、64ビットのプロセッサを実装できたす
MMU。OSが32ビットアドレス指定を取埗するために䜿甚できたすが、珟圚のハヌドりェアがないため
実装は、むンデックス付きアドレッシングモヌドを安党にするためのこの方法たたはその他の方法をサポヌトしたす
32ビットABIで䜿甚する堎合、デフォルトは -mno-indexed-addressing.

-mgettrcost =数
「gettr」呜什に想定されるコストを次のように蚭定したす 数。 デフォルトは2です。
-mpt-修正枈み 有効です。それ以倖の堎合は100です。

-mpt-修正枈み
「pt*」呜什はトラップされないず想定したす。 これにより、通垞、より適切にスケゞュヌルされたコヌドが生成されたす。
ただし、珟圚のハヌドりェアでは安党ではありたせん。 珟圚のアヌキテクチャ定矩では、
「ptabs」ず「ptrel」は、タヌゲットが3である堎合にトラップしたす。これには、
これらの指瀺を前にスケゞュヌルするこずを危険にさらすこずの意図しない圱響
分岐するか、ルヌプからそれらを持ち䞊げたす。 たずえば、「__ do_global_ctors」、の䞀郚
libgcc プログラムの起動時にコンストラクタヌを実行し、リスト内の関数を呌び出したす。
-1で区切られたす。 ずずもに -mpt-修正枈み オプションの堎合、「ptabs」はテスト前に実行されたす
-1に察しお。 ぀たり、すべおのコンストラクタヌが少し速く実行されたすが、
ルヌプがリストの最埌に来るず、「ptabs」が-1をロヌドするため、プログラムがクラッシュしたす。
タヌゲットレゞスタ。

このオプションは、珟圚のアヌキテクチャを実装しおいるハヌドりェアにずっお安党ではないため
仕様、デフォルトは -mno-pt-修正枈み。 明瀺的に指定されおいない限り
-mgettrcost, -mno-pt-修正枈み たた意味したす -mgettrcost = 100; これは登録を阻止したす
通垞の敎数を栌玍するためのタヌゲットレゞスタの䜿甚による割り圓お。

-minvalid-シンボル
シンボルが無効である可胜性があるず想定したす。 コンパむラによっお生成される通垞の関数シンボル
「movi」/「shori」/「ptabs」たたは「movi」/「shori」/「ptrel」でロヌドするのは垞に有効ですが、
アセンブラやリンカのトリックを䜿甚するず、原因ずなるシンボルを生成するこずができたす
トラップする「ptabs」たたは「ptrel」。 このオプションは、次の堎合にのみ意味がありたす -mno-pt-修正枈み である
効果。 クロスベヌシックブロックCSE、巻き䞊げ、およびシンボルのほずんどのスケゞュヌリングを防止したす
負荷。 デフォルトは -mno-無効なシンボル.

-mbranch-cost =NUM
想定する NUM 分岐呜什のコストになりたす。 数倀が倧きいほどコンパむラは䜜成されたす
可胜であれば、より倚くのブランチフリヌコヌドを生成しおみおください。 指定されおいない堎合、倀は
コンパむル察象のプロセッサタむプに応じお遞択されたす。

-mzdcbranch
-mno-zdcbranch
れロ倉䜍条件分岐呜什が「bt」であるず仮定したす仮定しないでください。
「bf」は高速です。 もしも -mzdcbranch が指定されおいる堎合、コンパむラはれロを優先しようずしたす
眮換ブランチ コヌド シヌケンス。 これは、コヌド生成時にデフォルトで有効になっおいたす
SH4、SH4A甚。 指定するこずで明瀺的に無効にするこずができたす -mno-zdcbranch.

-マクブランチディ
「cbranchdi4」呜什パタヌンを有効にしたす。

-mcmpeqdi
の堎合でも「cmpeqdi_t」呜什パタヌンを発行したす。 -マクブランチディ 有効です。

-混乱-狂った
-mno-fusion-madd
浮動小数点の積和を䜿甚する䜿甚しないコヌドを生成する
指瀺。 これらの呜什は、ハヌドりェア浮動小数点の堎合、デフォルトで生成されたす
䜿甚されおいる。 マシンに䟝存 -æ··ä¹±-狂った オプションがマシンにマップされるようになりたした-
独立したした -ffp-contract = fast オプション、および -mno-fusion-madd にマッピングされおいたす
-ffp-contract = off.

-mfsca
-mno-fsca
コンパむラがサむンおよびコサむンの「fsca」呜什を発行するこずを蚱可たたは犁止したす
近䌌。 オプション「-mfsca」は、
"-funsafe-math-optimizations". のコヌド生成時にデフォルトで有効になっおいたす。
SH4A。 「-mno-fsca」を䜿甚するず、サむンおよびコサむン近䌌が無効になりたす。
「-funsafe-math-optimizations」が有効です。

-mfsrra
-mno-fsrra
コンパむラが逆数二乗の「fsrra」呜什を発行するこずを蚱可たたは犁止したす
ルヌト近䌌。 オプション「-mfsrra」は、
「-funsafe-math-optimizations」および「-ffinite-math-only」。 デフォルトで有効になっおいたす。
SH4A のコヌドを生成したす。 「-mno-fsrra」を䜿甚するず、平方根の逆数が無効になりたす
「-funsafe-math-optimizations」ず「-ffinite-math-only」が含たれおいる堎合でも近䌌
効果。

-mpreend-cmove
条件付き移動呜什には、れロ倉䜍条件付き分岐を優先したす
パタヌン。 これにより、SH4プロセッサのコヌドが高速になる可胜性がありたす。

゜ラリス 2 オプション

ボヌマン -m オプションはSolaris2でサポヌトされおいたす

-mimpure-テキスト
-mimpure-テキスト、に加えお䜿甚 -共有、コンパむラに枡さないように指瀺したす -z 큎띌우드 êž°ë°˜ AI/ML및 고성능 컎퓚팅을 통한 디지턞 튞윈의 Ʞ쎈 – Edward Hsu, Rescale CPO 많은 엔지니얎링 쀑심 Ʞ업에게 큎띌우드는 R&D디지턞 전환의 첫 닚계음 뿐입니닀. 큎띌우드 자원을 활용핎 엔지니얎링 팀의 제앜을 핎결하는 닚계륌 넘얎, 시뮬레읎션 욎영을 통합하고 최적화하며, 궁극적윌로는 몚덞 Ʞ반의 협업곌 의사 결정을 지원하여 신제품을 결정할 때 데읎터 êž°ë°˜ 엔지니얎링을 적용하고자 합니닀. Rescale은 읎러한 혁신을 돕Ʞ 위핎 컎퓚팅 추천 엔진, 통합 데읎터 팹뾌멭, 메타데읎터 ꎀ늬 등을 개발하고 있습니닀. 읎번 자늬륌 빌렀 비슈니슀 겜쟁력 제고륌 위한 디지턞 튞윈 및 디지턞 슀레드 전략 개발 방법에 대한 읞사읎튞륌 나누고자 합니닀. 〜ぞ
共有オブゞェクトをリンクするずきのリンカ。 このオプションを䜿甚するず、䜍眮をリンクできたす-
共有オブゞェクトぞの䟝存コヌド。

-mimpure-テキスト 「再配眮は割り圓お可胜であるが曞き蟌み可胜ではないたたである」を抑制したす
セクション」リンカヌ゚ラヌメッセヌゞ。ただし、必芁な再配眮により、コピヌオンがトリガヌされたす。
曞き蟌み、および共有オブゞェクトは実際にはプロセス間で共有されたせん。 それ以倖の
-mimpure-テキスト、すべおの゜ヌスコヌドを次のようにコンパむルする必芁がありたす -fpic or -fPIC.

これらのスむッチは、Solaris2で䞊蚘に加えおサポヌトされおいたす。

-pスレッド
POSIXスレッドラむブラリを䜿甚したマルチスレッドのサポヌトを远加したす。 このオプションセット
プリプロセッサずリンカの䞡方のフラグ。 このオプションはスレッドには圱響したせん
コンパむラによっお生成されたオブゞェクトコヌドたたはコンパむラに付属のラむブラリの安党性。

-pthread
これはの同矩語です -pスレッド.

SPARC オプション

ボヌマン -m オプションはSPARCでサポヌトされおいたす。

-mno-app-regs
-map-regs
指定 -map-regs グロヌバルレゞスタ2から4を䜿甚しお出力を生成したす。
SPARCSVR4ABIはアプリケヌション甚に予玄されおいたす。 グロヌバルレゞスタ1ず同様に、各グロヌバル
レゞスタヌ2から4は、割り圓お可胜なレゞスタヌずしお扱われたす。
関数呌び出し。 これがデフォルトです。

パフォヌマンスの䜎䞋を犠牲にしおSVR4ABIに完党に準拠するには、次のように指定したす。
-mno-app-regs。 このオプションを䜿甚しお、ラむブラリずシステム゜フトりェアをコンパむルする必芁がありたす。

-mフラット
-mno-フラット
-mフラット、コンパむラは保存/埩元呜什を生成せず、
「フラット」たたはシングルレゞスタりィンドりモデル。 このモデルは通垞のモデルず互換性がありたす
レゞスタりィンドりモデル。 ロヌカルレゞスタず入力レゞスタ0〜5はただ残っおいたす
「呌び出し保存」レゞスタずしお扱われ、必芁に応じおスタックに保存されたす。

-mno-フラット デフォルト、コンパむラヌは保存/埩元呜什を生成したすただし
リヌフ機胜甚。 これは通垞の動䜜モヌドです。

-mfpu
-mhard-float
浮動小数点呜什を含む出力を生成したす。 これがデフォルトです。

-mno-fpu
-msoft-float
浮動小数点のラむブラリ呌び出しを含む出力を生成したす。 譊告 必芁条件
ラむブラリは、すべおのSPARCタヌゲットで䜿甚できるわけではありたせん。 通垞、
マシンの通垞のCコンパむラが䜿甚されたすが、これをクロスで盎接実行するこずはできたせん。
コンパむル。 適切なラむブラリを提䟛するには、独自の手配を行う必芁がありたす
クロスコンパむルのための関数。 埋め蟌たれたタヌゲット sparc-*-aout & スパクラむト-*-*
゜フトりェア浮動小数点サポヌトを提䟛したす。

-msoft-float 出力ファむルの呌び出し芏玄を倉曎したす。 したがっお、それは
コンパむルする堎合に䟿利です を このオプションを䜿甚したプログラムの特に、あなたはする必芁がありたす
コンパむル libgcc.a、GCCに付属するラむブラリ -msoft-float このために
動䜜するように。

-mhard-quad-float
クアッドワヌドlong double浮動小数点呜什を含む出力を生成したす。

-msoft-quad-float
クアッドワヌドlong double浮動小数点のラむブラリ呌び出しを含む出力を生成したす
指瀺。 呌び出される関数は、SPARCABIで指定されおいる関数です。 これは
デフォルト。

この蚘事の執筆時点では、ハヌドりェアをサポヌトするSPARC実装はありたせん。
クワッドワヌド浮動小数点呜什。 それらはすべお、次のいずれかのトラップハンドラヌを呌び出したす。
これらの呜什、そしおトラップハンドラヌは呜什の効果を゚ミュレヌトしたす。
トラップハンドラのオヌバヌヘッドのため、これはABIラむブラリを呌び出すよりもはるかに䜎速です。
ルヌチン。 したがっお、 -msoft-quad-float オプションがデフォルトです。

-mno-unaligned-doubles
-䞍敎列ダブルス
doubleには8バむトのアラむンメントがあるず想定したす。 これがデフォルトです。

-䞍敎列ダブルス、GCCは、doubleが8バむトのアラむンメントを持っおいるず想定するのは、
別のタむプに含たれおいる堎合、たたは絶察アドレスがある堎合。 そうでなければ、それ
それらが4バむトのアラむンメントを持っおいるず仮定したす。 このオプションを指定するず、たれな問題を回避できたす
他のコンパむラによっお生成されたコヌドずの互換性の問題。 デフォルトではありたせん
特に浮動小数点コヌドの堎合、パフォヌマンスが䜎䞋するためです。

-ミュヌザヌモヌド
-mno-ナヌザヌモヌド
スヌパヌバむザヌモヌドでのみ実行できるコヌドを生成しないでください。 これはにのみ関連したす
LEON3 プロセッサ甚に発行された「casa」呜什。 デフォルトは
-mno-ナヌザヌモヌド.

-mno-faster-structs
-mfaster-構造䜓
-mfaster-構造䜓、コンパむラは、構造䜓が8バむトであるず想定したす
アラむンメント。 これにより、コピヌに「ldd」ず「std」の呜什のペアを䜿甚できるようになりたす
構造䜓の割り圓おでは、「ld」ず「st」のペアのXNUMX倍の代わりに。 しかし
この倉曎された配眮を䜿甚するず、SPARCABIに盎接違反したす。 したがっお、それは意図されおいたす
結果のコヌドが
ABIの芏則に盎接䞀臎しおいたせん。

-mcpu =cpu_type
の呜什セット、レゞスタセット、および呜什スケゞュヌリングパラメヌタを蚭定したす
マシンタむプ cpu_type。 サポヌトされおいる倀 cpu_type   v7, サむプレス, v8, スヌパヌスパヌク,
ハむパヌスパヌク, レオン, leon3, レオン3v7, スパクラむト, f930, f934, スパクラむト86x, スパクレット,
tsc701, v9, りルトラスパヌク, りルトラスパヌク3, ナむアガラ, ナむアガラ2, ナむアガラ3 & ナむアガラ4.

ネむティブSolarisおよびGNU/Linuxツヌルチェヌンも倀をサポヌトしたす ネむティブ、を遞択したす
ホストプロセッサに最適なアヌキテクチャオプション。 -mcpu = native 次の堎合は効果がありたせん
GCCはプロセッサを認識したせん。

デフォルトの呜什スケゞュヌリングパラメヌタは、
アヌキテクチャであり、実装ではありたせん。 これらは v7, v8, スパクラむト, スパクレット, v9.

サポヌトされおいる各アヌキテクチャずサポヌトされおいる実装のリストを次に瀺したす。

v7ヒノキ、leon3v7

v8 supersparc、hypersparc、leon、leon3

スパクラむト
f930、f934、sparclite86x

スパクレット
tsc701

v9 ultrasparc、ultrasparc3、niagara、niagara2、niagara3、niagara4

デフォルトでは特に蚭定されおいない限り、GCCはV7バリアントのコヌドを生成したす
SPARCアヌキテクチャ。 ず -mcpu = cypress、コンパむラはさらにそれを最適化したす
SPARCStation /SPARCServer7xxシリヌズで䜿甚されおいるCypressCY602C3チップ。 これは
叀いSPARCStation1、2、IPXなどにも適しおいたす。

-mcpu = v8、GCCは、SPARCアヌキテクチャのV8バリアントのコヌドを生成したす。 The
V7コヌドずの唯䞀の違いは、コンパむラが敎数の乗算ず
SPARC-V8には存圚するが、SPARC-V7には存圚しない敎数陀算呜什。 ず
-mcpu = supersparc、コンパむラはさらに、SuperSPARCチップ甚に最適化したす。
SPARCStation 10、1000、および2000シリヌズで䜿甚されたす。

-mcpu = sparclite、GCCは、SPARCのSPARCliteバリアントのコヌドを生成したす
建築。 これにより、敎数の乗算、敎数の陀算のステップずスキャン "ffs"が远加されたす。
SPARCliteには存圚するが、SPARC-V7には存圚しない呜什。 ず -mcpu = f930
コンパむラはさらに、元の富士通MB86930チップ甚に最適化したす
SPARClite、FPUなし。 ず -mcpu = f934、コンパむラはさらにそれを最適化したす
FPUを搭茉した最新のSPARCliteであるFujitsuMB86934チップ。

-mcpu = sparclet、GCCは、SPARCのSPARCletバリアントのコヌドを生成したす
建築。 これにより、敎数の乗算、乗算/环積、敎数の陀算が远加されたす
SPARCletには存圚するが、SPARC-V7には存圚しないステップアンドスキャン "ffs"呜什。 ず
-mcpu = tsc701、コンパむラはさらにTEMICSPARCletチップ甚に最適化したす。

-mcpu = v9、GCCは、SPARCアヌキテクチャのV9バリアントのコヌドを生成したす。 これ
64ビット敎数および浮動小数点移動呜什を远加し、さらに3぀の浮動小数点を远加したす
条件コヌドレゞスタず条件付き移動呜什。 ず -mcpu = ultrasparc,
コンパむラはさらに、Sun UltraSPARC I / II/IIiチップ甚に最適化したす。 ず
-mcpu = ultrasparc3、コンパむラはさらにSunUltraSPARC甚に最適化したす
III / III + / IIIi / IIIi + / IV /IV+チップ。 ず -mcpu = niagara、コンパむラはさらに
SunUltraSPARCT1チップ甚に最適化したす。 ず -mcpu = niagara2、コンパむラ
さらに、SunUltraSPARCT2チップ甚に最適化したす。 ず -mcpu = niagara3
コンパむラはさらに、SunUltraSPARCT3チップ甚に最適化したす。 ず -mcpu = niagara4,
コンパむラはさらに、SunUltraSPARCT4チップ甚に最適化したす。

-mtune =cpu_type
マシンタむプの呜什スケゞュヌリングパラメヌタを蚭定したす cpu_type、ただし蚭定しない
オプションの呜什セットたたはレゞスタセット -mcpu =cpu_type ありたせん。

の同じ倀 -mcpu =cpu_type 以䞋のために䜿甚するこずができたす -mtune =cpu_type、しかし唯䞀
有甚な倀は、特定のCPU実装を遞択する倀です。 それらは
サむプレス, スヌパヌスパヌク, ハむパヌスパヌク, レオン, leon3, レオン3v7, f930, f934, スパクラむト86x,
tsc701, りルトラスパヌク, りルトラスパヌク3, ナむアガラ, ナむアガラ2, ナむアガラ3 & ナむアガラ4
ネむティブSolarisおよびGNU/Linuxツヌルチェヌン、 ネむティブ も䜿甚するこずができる。

-mv8plus
-mno-v8plus
-mv8plus、GCCはSPARC-V8+ABIのコヌドを生成したす。 V8ずの違い
ABIは、グロヌバルレゞスタず出力レゞスタが64ビット幅ず芋なされるこずです。 これは有効です
デフォルトでは、すべおのSPARC-V32プロセッサの9ビットモヌドのSolaris。

-mvis
-mno-vis
-mvis、GCCは、UltraSPARCVisualを利甚するコヌドを生成したす
呜什セット拡匵。 デフォルトは -mno-vis.

-mvis2
-mno-vis2
-mvis2、GCCは、UltraSPARCのバヌゞョン2.0を利甚するコヌドを生成したす
ビゞュアルむンストラクションセットの拡匵機胜。 デフォルトは -mvis2 そのCPUをタヌゲットにするずき
UltraSPARC-III以降などのこのような呜什をサポヌトしたす。 蚭定 -mvis2 たた
セット -mvis.

-mvis3
-mno-vis3
-mvis3、GCCは、UltraSPARCのバヌゞョン3.0を利甚するコヌドを生成したす
ビゞュアルむンストラクションセットの拡匵機胜。 デフォルトは -mvis3 そのCPUをタヌゲットにするずき
niagara-3以降などのそのような呜什をサポヌトしたす。 蚭定 -mvis3 セットも
-mvis2 & -mvis.

-mcbcond
-mno-cbcond
-mcbcond、GCCは、比范ず分岐を利甚するコヌドを生成したす
SparcArchitecture2011で定矩されおいる呜什。デフォルトは -mcbcond い぀
niagara-4以降などのそのような呜什をサポヌトするCPUをタヌゲットにしたす。

-mpopc
-mno-popc
-mpopc、GCCは、UltraSPARCポピュレヌションを利甚するコヌドを生成したす
カりント呜什。 デフォルトは -mpopc そのようなものをサポヌトするCPUをタヌゲットにする堎合
Niagara-2以降などの指瀺。

-mfmaf
-mno-fmaf
-mfmaf、GCCは、UltraSPARCFusedMultiplyを利甚するコヌドを生成したす-
浮動小数点拡匵を远加したす。 デフォルトは -mfmaf そのCPUをタヌゲットにするずき
Niagara-3以降などのそのような呜什をサポヌトしたす。

-mfix-at697f
AtmelAT697Fプロセッサの単䞀の正誀衚に぀いお文曞化された回避策を有効にしたす
AT13Eプロセッサの゚ラッタ697に察応したす。

-mfix-ut699
浮動小数点゚ラッタずデヌタキャッシュの文曞化された回避策を有効にする
UT699プロセッサの゚ラッタを無効にしたす。

ボヌマン -m 9ビットのSPARC-V64プロセッサでは、䞊蚘に加えおオプションがサポヌトされおいたす
環境

-m32
-m64
32ビットたたは64ビット環境甚のコヌドを生成したす。 32ビット環境はintを蚭定したす。
longおよび32ビットぞのポむンタ。 64ビット環境では、intが32ビットおよびlongに蚭定されたす。
64ビットぞのポむンタ。

-mcmodel =which
コヌドモデルを次のいずれかに蚭定したす

メドロり
ミディアム/ロヌコヌドモデル64ビットアドレス、プログラムはロヌ32でリンクする必芁がありたす
メモリのビット。 プログラムは静的たたは動的にリンクできたす。

ミッドミッド
ミディアム/ミドルコヌドモデル64ビットアドレス、プログラムはロヌでリンクする必芁がありたす
44ビットのメモリ、テキストおよびデヌタセグメントのサむズは2GB未満である必芁がありたす。
デヌタセグメントは、テキストセグメントから2GB以内に配眮する必芁がありたす。

メダン
äž­/どこでもコヌドモデル64ビットアドレス、プログラムはどこにでもリンクできたす
メモリ内では、テキストセグメントずデヌタセグメントのサむズずデヌタのサむズは2GB未満である必芁がありたす
セグメントは、テキストセグメントから2GB以内に配眮する必芁がありたす。

埋め蟌み
組み蟌みシステムのMedium/Anywhereコヌドモデル64ビットアドレス、テキスト
デヌタセグメントのサむズは2GB未満である必芁があり、どちらもメモリ内のどこからでも開始できたす
リンク時に決定されたす。 グロヌバルレゞスタg4はデヌタのベヌスを指したす
セグメント。 プログラムは静的にリンクされおおり、PICはサポヌトされおいたせん。

-mmemory-model =メモリモデル
プロセッサで有効なメモリモデルを次のいずれかに蚭定したす。

デフォルト
プロセッサずオペレヌティングシステムのデフォルトのメモリモデル。

RMO リラックスしたメモリ順序

pso 郚分的なストア泚文

tso 総店舗泚文

sc 逐次䞀貫性

これらのメモリモデルは、SparcV9アヌキテクチャの付録Dで正匏に定矩されおいたす。
プロセッサの「PSTATE.MM」フィヌルドに蚭定されおいる手動。

-mstack-バむアス
-mno-スタックバむアス
-mstack-バむアス、GCCは、スタックポむンタ、および存圚する堎合はフレヌムポむンタを想定したす。
スタックフレヌム参照を䜜成するずきに远加し盎す必芁がある-2047によっおオフセットされたす。 これ
64ビットモヌドのデフォルトです。 それ以倖の堎合は、そのようなオフセットが存圚しないず想定したす。

SPU オプション

ボヌマン -m オプションはSPUでサポヌトされおいたす。

-mwarn-再配眮
-merror-reloc
SPUのロヌダヌは、動的な再配眮を凊理したせん。 デフォルトでは、GCCは
動的な再配眮を必芁ずするコヌドを生成するずきに゚ラヌが発生したす。 -mno-error-reloc
゚ラヌを無効にし、 -mwarn-再配眮 代わりに譊告を生成したす。

-msafe-dma
-ムンセヌフ-dma
DMAの完了を開始たたはテストする呜什は、次のコマンドで䞊べ替えるこずはできたせん。
アクセスされおいるメモリのロヌドずストアに関しお。 ず -ムンセヌフ-dma
メモリアクセスを保護するには「volatile」キヌワヌドを䜿甚する必芁がありたすが、これにより、
メモリが倉曎されないこずがわかっおいる堎所での非効率的なコヌド。 マヌクするのではなく
揮発性ずしおのメモリ、あなたは䜿甚するこずができたす -msafe-dma DMAを凊理するようにコンパむラに指瀺したす
すべおのメモリに圱響を䞎える可胜性のある呜什。

-mbranch-ヒント
デフォルトでは、GCCは、パむプラむンストヌルを回避するための分岐ヒント呜什を生成したす。
垞に取られる、たたはおそらく取られるブランチ。 ヒントは8より近くでは生成されたせん
そのブランチから離れた指瀺。 それらを無効にする理由はほずんどありたせん。
デバッグ目的、たたはオブゞェクトを少し小さくするため。

-msmall-mem
-mlarge-mem
デフォルトでは、GCCはアドレスが18ビットを超えないこずを前提ずしおコヌドを生成したす。
-mlarge-mem 完党な32ビットアドレスを想定したコヌドが生成されたす。

-mstdmain
デフォルトでは、GCCはSPUスタむルのメむン機胜を想定したスタヌトアップコヌドに察しおリンクしたす
むンタヌフェむス型にはたらないパラメヌタリストがありたす。 ず -mstdmain、GCCリンク
「メむン」ぞのC99スタむルのむンタヌフェヌスを想定したスタヌトアップコヌドに察するプログラム、
「argv」文字列のロヌカルコピヌを含みたす。

-mfixed-range =レゞスタ範囲
指定されたレゞスタ範囲を固定レゞスタずしお扱うコヌドを生成したす。 固定レゞスタ
レゞスタアロケヌタが䜿甚できないものです。 これは、カヌネルをコンパむルするずきに圹立ちたす
コヌド。 レゞスタ範囲は、ダッシュで区切られたXNUMX぀のレゞスタずしお指定されたす。 倚数
レゞスタ範囲は、コンマで区切っお指定できたす。

-mea32
-mea64
「__ea」を介しおアクセスされるPPUアドレス空間ぞのポむンタを想定しおコヌドをコンパむルしたす
名前付きアドレス空間修食子は、32ビット幅たたは64ビット幅のいずれかです。 デフォルトは32ビットです。
これはABIを倉曎するオプションであるため、実行可胜ファむル内のすべおのオブゞェクトコヌドをコンパむルする必芁がありたす
同じ蚭定で。

-maddress-space-conversion
-mno-アドレス空間倉換
「__ea」アドレス空間を総称アドレスのスヌパヌセットずしお扱うこずを蚱可/犁止
スペヌス。 これにより、「__ ea」ずゞェネリックポむンタの間の明瀺的な型キャスト、および
ゞェネリックポむンタから「__ea」ポむンタぞの暗黙の倉換。 デフォルトでは、
アドレス空間ポむンタの倉換。

-mcache-size =キャッシュサむズ
このオプションは、コンパむラが実行可胜ファむルにリンクするlibgccのバヌゞョンを制埡したす
「__ea」アドレスの倉数にアクセスするための゜フトりェア管理キャッシュを遞択したす
特定のキャッシュサむズのスペヌス。 可胜なオプション キャッシュサむズ   8, 16, 32, 64
& 128。 デフォルトのキャッシュサむズは64KBです。

-matomic-アップデヌト
-mno-atomic-updates
このオプションは、コンパむラが実行可胜ファむルにリンクするlibgccのバヌゞョンを制埡したす
PPU偎の倉数の゜フトりェア管理キャッシュをアトミックに曎新するかどうかを遞択したす
䜿甚されおいたす。 アトミック曎新を䜿甚する堎合は、を䜿甚しおSPUコヌドからPPU倉数に倉曎したす。
「__ea」ずいう名前のアドレス空間修食子は、他のPPUぞの倉曎を劚げたせん
PPUコヌドから同じキャッシュラむンにある倉数。 アトミックを䜿甚しない堎合
曎新、そのような干枉が発生する可胜性がありたす。 ただし、キャッシュラむンを曞き戻すこずはより倚くのこずです
効率的。 デフォルトの動䜜では、アトミック曎新を䜿甚したす。

-mdual-nops
-mdual-nops =n
デフォルトでは、GCCはnopsを挿入しお、デュアルむシュヌが増加するず予想されるずきにデュアルむシュヌを増加させたす
パフォヌマンス。 n 0から10たでの倀にするこずができたす。 n より少ないnopsを挿入したす。 10は
デフォルトの0はず同じです -mno-dual-nops。 で無効に -オス.

-mhint-max-nops =n
ブランチヒントに挿入するnopの最倧数。 ブランチヒントは少なくずも8でなければなりたせん
それが圱響しおいるブランチから離れた呜什。 GCCは最倧 n にノヌプ
これを匷制したす。そうしないず、ブランチヒントが生成されたせん。

-mhint-max-distance =n
分岐ヒント呜什の゚ンコヌドにより、ヒントは256以内に制限されたす
それが圱響しおいるブランチの指瀺。 デフォルトでは、GCCはそれが範囲内にあるこずを確認したす
125.

-msafe-ヒント
SPUが無期限にストヌルする原因ずなるハヌドりェアバグを回避したす。 デフォルトでは、GCC
このストヌルが発生しないように、「hbrp」呜什を挿入したす。

オプション for ゚ントルピヌ V

これらの远加オプションは、他のオプションずの互換性のためにSystemVリリヌス4で䜿甚できたす。
それらのシステム䞊のコンパむラ

-G 共有オブゞェクトを䜜成したす。 をお勧めしたす -シンボリック or -共有 代わりに䜿甚しおください。

-Qy 「.ident」アセンブラで、コンパむラが䜿甚する各ツヌルのバヌゞョンを識別したす
出力のディレクティブ。

-Qn 「.ident」ディレクティブを出力ファむルに远加しないでくださいこれがデフォルトです。

-YP、Dirs
ディレクトリを怜玢する Dirs、で指定されたラむブラリの堎合は他にありたせん -l.

-うヌん、DIR
ディレクトリを芋おください DIR M4プリプロセッサを怜玢したす。 アセンブラはこれを䜿甚したす
オプションを遞択したす。

タむルGx オプション

ボヌマン -m オプションはTILE-Gxでサポヌトされおいたす。

-mcmodel = small
小さなモデルのコヌドを生成したす。 盎通電話の距離は500Mに制限されおいたす
どちらの方向にも。 PC盞察アドレスは32ビットです。 絶察アドレスのサポヌト
完党なアドレス範囲。

-mcmodel = large
ラヌゞモデルのコヌドを生成したす。 通話距離に制限はありたせん、pc-
盞察アドレス、たたは絶察アドレス。

-mcpu =名
察象ずなるCPUの皮類を遞択したす。 珟圚サポヌトされおいるタむプは タむルグックス.

-m32
-m64
32ビットたたは64ビット環境甚のコヌドを生成したす。 32ビット環境はintを蚭定したす。
long、および32ビットぞのポむンタ。 64ビット環境では、intが32ビットおよびlongに蚭定されたす。
64ビットぞのポむンタ。

タむルプロ オプション

ボヌマン -m オプションはTILEProでサポヌトされおいたす

-mcpu =名
察象ずなるCPUの皮類を遞択したす。 珟圚サポヌトされおいるタむプは タむルプロ.

-m32
int、long、およびポむンタヌを32ビットに蚭定する32ビット環境甚のコヌドを生成したす。
これがサポヌトされおいる唯䞀の動䜜であるため、フラグは基本的に無芖されたす。

V オプション

ボヌマン -m オプションは、V850実装甚に定矩されおいたす。

-mlong-calls
-mno-long-calls
すべおの通話を遠く近くずしお扱いたす。 通話が遠くにあるず想定される堎合、
コンパむラは垞に関数のアドレスをレゞスタにロヌドし、間接的に呌び出したす
ポむンタを介しお。

-mno-ep
-メップ
同じむンデックスポむンタ4以䞊を䜿甚する基本ブロックを最適化最適化しないでください
ポむンタを「ep」レゞスタにコピヌし、短い「sld」ず「sst」を䜿甚する回数
指瀺。 The -メップ 最適化するず、オプションはデフォルトでオンになりたす。

-mno-プロロヌグ関数
-mprolog-関数
プロロヌグでレゞスタを保存および埩元するために倖郚関数を䜿甚しない䜿甚しない
関数の゚ピロヌグ。 倖郚関数は遅くなりたすが、䜿甚するコヌドは少なくなりたす
耇数の関数が同じ数のレゞスタを保存する堎合はスペヌス。 The
-mprolog-関数 最適化するず、オプションはデフォルトでオンになりたす。

-mspace
コヌドをできるだけ小さくするようにしおください。 珟圚、これはただオンになりたす -メップ
& -mprolog-関数 オプション。

-mtda =n
サむズがである静的倉数たたはグロヌバル倉数を配眮したす n 小さなデヌタ領域にバむト以䞋
そのレゞスタ「ep」はを指したす。 小さなデヌタ領域は、合蚈で最倧256バむトを保持できたす
バむト参照の堎合は128バむト。

-msda =n
サむズがである静的倉数たたはグロヌバル倉数を配眮したす n 小さなデヌタ領域にバむト以䞋
そのレゞスタ「gp」が指す。 小さなデヌタ領域は最倧64キロバむトを保持できたす。

-mzda =n
サむズがである静的倉数たたはグロヌバル倉数を配眮したす n 最初の32バむト以䞋
キロバむトのメモリ。

-mv850
タヌゲットプロセッサがV850であるこずを指定したす。

-mv850e3v5
タヌゲット・プロセッサヌがV850E3V5であるこずを指定したす。 プリプロセッサ定数
__v850e3v5__ このオプションが䜿甚される堎合に定矩されたす。

-mv850e2v4
タヌゲット・プロセッサヌがV850E3V5であるこずを指定したす。 これはの゚むリアスです
-mv850e3v5 オプションを遞択したす。

-mv850e2v3
タヌゲット・プロセッサヌがV850E2V3であるこずを指定したす。 プリプロセッサ定数
__v850e2v3__ このオプションが䜿甚される堎合に定矩されたす。

-mv850e2
タヌゲット・プロセッサヌがV850E2であるこずを指定したす。 プリプロセッサ定数 __v850e2__
このオプションが䜿甚される堎合に定矩されたす。

-mv850e1
タヌゲット・プロセッサヌがV850E1であるこずを指定したす。 プリプロセッサ定数
__v850e1__ & __v850e__ このオプションを䜿甚するず定矩されたす。

-mv850es
タヌゲット・プロセッサヌがV850ESであるこずを指定したす。 これはの゚むリアスです -mv850e1
オプションを遞択したす。

-mv850e
タヌゲット プロセッサが V850E であるこずを指定したす。 プリプロセッサ定数 __v850e__
このオプションが䜿甚される堎合に定矩されたす。

どちらでもない堎合 -mv850 たた -mv850e たた -mv850e1 たた -mv850e2 たた -mv850e2v3 たた -mv850e3v5
が定矩されたら、デフォルトのタヌゲットプロセッサが遞択され、関連する __v850 * __
プリプロセッサ定数が定矩されおいたす。

プリプロセッサ定数 __v850 & __v851__ どちらに関係なく、垞に定矩されたす
プロセッサバリアントがタヌゲットです。

-mdisable-callt
-mno-disable-callt
このオプションは、v850e、v850e1の「CALLT」呜什の生成を抑制したす。
v850アヌキテクチャのv2e850、v2e3v850、およびv3e5v850フレヌバヌ。

このオプションは、RH850 ABIが䜿甚されおいる堎合、デフォルトで有効になっおいたすを参照。 -mrh850-abi、及び
GCC ABIが䜿甚されおいる堎合、デフォルトでは無効になっおいたす。 「CALLT」呜什が実行されおいる堎合
生成されるず、C プリプロセッサ シンボル "__V850_CALLT__" が定矩されたす。

-mリラックス
-mno-リラックス
枡すたたは枡さない -mリラックス コマンド ラむン オプションをアセンブラに远加したす。

-mlong-ゞャンプ
-mno-ロングゞャンプ
PC盞察ゞャンプ呜什の生成を無効たたは再床有効にしたす。

-msoft-float
-mhard-float
ハヌドりェア浮動小数点呜什の生成を無効たたは再床有効にしたす。 これ
オプションは、タヌゲットアヌキテクチャが V850E2V3 以䞊。 もしも
ハヌドりェア浮動小数点呜什が生成されおから、Cプリプロセッサ
シンボル "__FPU_OK__" が定矩されたす。そうでない堎合、シンボル "__NO_FPU__" が定矩されたす。
定矩された。

-ムルヌプ
e3v5LOOP呜什の䜿甚を有効にしたす。 この呜什の䜿甚はそうではありたせん
e3v5アヌキテクチャが遞択されおいる堎合、その䜿甚はただ有効であるため、デフォルトで有効になっおいたす
実隓的。

-mrh850-abi
-ムグッ
V850ABIのRH850バヌゞョンのサポヌトを有効にしたす。 これがデフォルトです。 ず
このバヌゞョンのABIには、次のルヌルが適甚されたす。

· 敎数サむズの構造䜓ず共甚䜓は、メモリ ポむンタではなくメモリ ポむンタを介しお返されたす。
レゞスタヌ。

· 倧きな構造䜓ず共甚䜓 (サむズが 8 バむトを超える) は、倀によっお枡されたす。

· 関数は 16 ビット境界に揃えられたす。

・ -m8byte-align コマンド ラむン オプションがサポヌトされおいたす。

・ -mdisable-callt コマンド ラむン オプションはデフォルトで有効になっおいたす。 の
-mno-disable-callt コマンド ラむン オプションはサポヌトされおいたせん。

このバヌゞョンのABIが有効になっおいる堎合、Cプリプロセッサシンボル「__V850_RH850_ABI__」
が定矩される。

-mgcc-アビ
V850ABIの叀いGCCバヌゞョンのサポヌトを有効にしたす。 このバヌゞョンのABIでは
次の芏則が適甚されたす。

· 敎数サむズの構造䜓ず共甚䜓は、レゞスタ "r10" に返されたす。

· 倧きな構造䜓ず共甚䜓 (サむズが 8 バむトを超える) は、参照によっお枡されたす。

· サむズを最適化しない限り、関数は 32 ビット境界に揃えられたす。

・ -m8byte-align コマンド ラむン オプションはサポヌトされおいたせん。

・ -mdisable-callt コマンド ラむン オプションはサポヌトされおいたすが、デフォルトでは有効になっおいたせん。

このバヌゞョンのABIが有効になっおいる堎合、Cプリプロセッサシンボル「__V850_GCC_ABI__」
が定矩される。

-m8byte-align
-mno-8byte-align
「double」および「long long」型のサポヌトを 8 バむトで敎列できるようにしたす。
境界。 デフォルトでは、すべおのオブゞェクトの配眮を最倧で
4 バむト。 い぀ -m8byte-align 実際には C プリプロセッサ シンボルです。
「__V850_8BYTE_ALIGN__」が定矩されたす。

-mbig スむッチ
倧きなスむッチテヌブルに適したコヌドを生成したす。 このオプションは、
アセンブラ/リンカは、スむッチテヌブル内の範囲倖の分岐に぀いお文句を蚀いたす。

-map-regs
このオプションにより、コンパむラヌによっお生成されたコヌドでr2ずr5が䜿甚されたす。 これ
蚭定がデフォルトです。

-mno-app-regs
このオプションにより、r2ずr5は固定レゞスタずしお扱われたす。

VAX オプション

ボヌマン -m オプションはVAXに察しお定矩されおいたす。

-munix
Unixアセンブラが実行する特定のゞャンプ呜什「aobleq」などを出力しないでください
VAXは長距離を凊理できたせん。

-mgnu
GNUアセンブラが
䞭叀。

-mg D圢匏ではなくG圢匏の浮動小数点数の出力コヌド。

VMS オプション

ボヌマン -m オプションは、VMS実装に察しお定矩されおいたす。

-mvms-リタヌンコヌド
「メむン」からVMS条件コヌドを返したす。 デフォルトでは、POSIXスタむルの条件を返したす
䟋゚ラヌコヌド。

-mdebug-main =接頭蟞
名前がで始たる最初のルヌチンにフラグを立おたす 接頭蟞 のメむンルヌチンずしお
デバッガ。

-mmalloc64
デフォルトは64ビットのメモリ割り圓おルヌチンです。

-mpointer-size =サむズ
ポむンタのデフォルトサむズを蚭定したす。 可胜なオプション サむズ   32 or 短い 32ビット甚
ポむンタ、 64 or 長い 64ビットポむンタの堎合、および いいえ 32ビットポむンタのみをサポヌトしたす。
埌者のオプションは「pragmapointer_size」を無効にしたす。

VxWorks オプション

このセクションのオプションは、すべおのVxWorksタヌゲットに察しお定矩されおいたす。 に固有のオプション
タヌゲットハヌドりェアは、そのタヌゲットの他のオプションずずもに䞀芧衚瀺されたす。

-mrtp
GCCは、VxWorksカヌネルずリアルタむムプロセスRTPの䞡方のコヌドを生成できたす。 これ
オプションは前者から埌者に切り替わりたす。 たた、プリプロセッサマクロも定矩したす
「__RTP__」。

-非静的
静的ラむブラリではなく共有ラむブラリに察しおRTP実行可胜ファむルをリンクしたす。 The
オプション -静的 & -共有 RTPにも䜿甚できたす。 -静的 デフォルトです。

-Bスタティック
-バダむナミック
これらのオプションはリンカヌに枡されたす。 それらはずの互換性のために定矩されおいたす
ディアブ。

-Xbind-lazy
関数呌び出しの遅延バむンディングを有効にしたす。 このオプションは、 -Wl、-z、now ずです。
Diabずの互換性のために定矩されおいたす。

-Xbind-今
関数呌び出しの遅延バむンディングを無効にしたす。 このオプションはデフォルトであり、
Diabずの互換性。

x86-64 オプション

これらは以䞋にリストされおいたす

゚クスストヌミヌ16 オプション

これらのオプションは、Xstormy16に察しお定矩されおいたす。

-msim
シミュレヌタに適したスタヌトアップファむルずリンカスクリプトを遞択したす。

゚クステンサ オプション

これらのオプションは、Xtensaタヌゲットでサポヌトされおいたす。

-mconst16
-mno-const16
定数倀をロヌドするための「CONST16」呜什の䜿甚を有効たたは無効にしたす。 The
「CONST16」呜什は珟圚、テンシリカの暙準オプションではありたせん。 い぀
有効にするず、暙準の「L16R」の代わりに「CONST32」呜什が垞に䜿甚されたす
指瀺。 「CONST16」の䜿甚は、「L32R」の堎合にのみデフォルトで有効になりたす
呜什は利甚できたせん。

-混乱-狂った
-mno-fusion-madd
での融合された乗算/加算および乗算/枛算呜什の䜿甚を有効たたは無効にしたす
浮動小数点オプション。 浮動小数点オプションもそうでない堎合、これは効果がありたせん
有効。 融合された乗算/加算および乗算/枛算呜什を無効にするず、匷制的に
コンパむラは、乗算および加算/枛算操䜜に別々の呜什を䜿甚したす。
これは、IEEE754に準拠した厳密な結果が埗られる堎合に望たしい堎合がありたす。
必須融合された乗算の加算/枛算呜什は䞭間を䞞めたせん
結果、それによっお結果を生成したす 他には によっお指定されたよりも粟床のビット
IEEE暙準。 融合された乗算の加算/枛算呜什を無効にするず、次のこずが保蚌されたす。
プログラム出力は、乗算ず乗算を組み合わせるコンパむラの機胜に圱響されたせん。
加算/枛算操䜜。

-mserialize-volatile
-mno-serialize-volatile
このオプションを有効にするず、GCCは「揮発性」メモリの前に「MEMW」呜什を挿入したす
逐次䞀貫性を保蚌するための参照。 デフォルトは -mserialize-volatile.
  -mno-serialize-volatile 「MEMW」呜什を省略したす。

-mforce-no-pic
GNU / Linuxのように、すべおのナヌザヌモヌドのXtensaコヌドが䜍眮にある必芁があるタヌゲットの堎合-
独立コヌドPIC。このオプションは、カヌネルコヌドをコンパむルするためのPICを無効にしたす。

-mtext-セクションリテラル
-mno-text-section-literals
リテラルプヌルの凊理を制埡したす。 デフォルトは -mno-text-section-literals,
出力ファむルの別のセクションにリテラルを配眮したす。 これにより、
リテラル プヌルをデヌタ RAM/ROM に配眮し、リンカが結合するこずもできたす。
冗長なリテラルを削陀しおコヌドを改善するための個別のオブゞェクト ファむルからのリテラル プヌル
サむズ。 ず -mtext-セクションリテラル、リテラルはテキストセクションに散圚しおいたす
それらを参照にできるだけ近づけるために。 これは必芁かもしれたせん
倧きなアセンブリ ファむルの堎合。

-mtarget-align
-mno-タヌゲット-アラむン
このオプションを有効にするず、GCCはアセンブラに自動的に敎列するように指瀺したす
コヌド密床をいくらか犠牲にしおブランチペナルティを枛らすための指瀺。 The
アセンブラは、密床呜什を広げおブランチタヌゲットず
呌び出し指瀺に続く指瀺。 先行する金庫が十分にない堎合
タヌゲットを敎列させるための密床呜什。拡倧は実行されたせん。 デフォルトは
-mtarget-align。 これらのオプションは、自動調敎の凊理には圱響したせん。
「LOOP」のような呜什。これは、アセンブラが拡匵するこずによっお垞に敎列したす。
密床呜什たたはNOP呜什を挿入するこずによっお。

-mlongcalls
-mno-longcalls
このオプションを有効にするず、GCCはアセンブラに盎接呌び出しを次のように倉換するように指瀺したす。
盎接通話のタヌゲットが
呌び出し呜什で蚱可される範囲。 この倉換は通垞、
他の゜ヌスファむルの関数。 具䜓的には、アセンブラは盎接倉換したす
「CALL」呜什を「L32R」に倉換し、続いお「CALLX」呜什を実行したす。 デフォルトは
-mno-longcalls。 このオプションは、コヌルタヌゲットができるプログラムで䜿甚する必芁がありたす
範囲倖の可胜性がありたす。 このオプションは、アセンブラではなく、アセンブラに実装されおいたす。
コンパむラであるため、GCCによっお生成されたアセンブリコヌドは匕き続き盎接呌び出しを瀺したす
呜什---実際の呜什を確認するには、分解されたオブゞェクトコヌドを確認しおください。
アセンブラは、ファむル間の呌び出しだけでなく、すべおのクロスファむル呌び出しに間接呌び出しを䜿甚するこずに泚意しおください。
本圓に範囲倖のもの。

zシリヌズ オプション

これらは以䞋にリストされおいたす

オプション for Code 䞖代 衚蚘
これらのマシンに䟝存しないオプションは、コヌドで䜿甚されるむンタヌフェむス芏則を制埡したす
䞖代。

それらのほずんどには、正ず負の䞡方の圢匏がありたす。 の負の圢匏 -ふふヌ is
-fno-foo。 以䞋の衚には、フォヌムのXNUMX぀だけがリストされおいたす---フォヌムではないもの
ディフォルト。 あなたはどちらかを削陀するこずによっお他のフォヌムを理解するこずができたす NO- たたはそれを远加したす。

-fbounds-チェック
それをサポヌトするフロント゚ンドの堎合、远加のコヌドを生成しお、むンデックスが以前に䜿甚されたこずを確認したす
アクセスアレむは宣蚀された範囲内にありたす。 これは珟圚、
JavaおよびFortranフロント゚ンド。このオプションのデフォルトはtrueおよびfalseです。
。

-fstack-reuse =再利甚レベル
このオプションは、ナヌザヌが宣蚀したロヌカル/自動倉数のスタックスペヌスの再利甚を制埡したす。
コンパむラが䞀時的に生成したす。 再利甚レベル するこずができたす を, 名前付き倉数たたは なし. を
すべおのロヌカル倉数ず䞀時倉数のスタックの再利甚を可胜にしたす。 名前付き倉数 その
名前を持぀ナヌザヌ定矩のロヌカル倉数に察しおのみ再利甚し、 なし スタックの再利甚を無効にしたす
完党に。 デフォルト倀は を。 プログラムが拡匵するずきにオプションが必芁です
スコヌプ付きロヌカル倉数たたはコンパむラが䞀時的に生成されたものの存続期間を超えお
蚀語によっお定矩された゚ンドポむント。 倉数の有効期間が終了したずき、および
倉数はメモリ内に存圚し、最適化コンパむラはスタックを再利甚する自由がありたす
ラむブ範囲がない他の䞀時倉数たたはスコヌプロヌカル倉数ずのスペヌス
それず重なりたす。 ロヌカルの有効期間を延長するレガシヌ コヌドは、
スタック再利甚の最適化。

たずえば、

int * p;
{
int ロヌカル 1;

p =local1;
ロヌカル1 = 10;
....
}
{
int ロヌカル 2;
ロヌカル2 = 20;
...
}

if* p == 10//local1のスコヌプ倖䜿甚
{

}

別の䟋

構造䜓A
{
Aint kik、jk{}
int i;
int j;
};

* ap;

void fooconst Aar
{
ap =ar;
}

void bar
{
fooA10; // fooが戻るず、䞀時オブゞェクトの有効期間が終了したす

{
A a20;
....
}
ap-> i + = 10; //apはスコヌプ倖のtempを参照したす
//で再利甚されたす。 ap-> iの倀は䜕ですか
}

コンパむラによっお生成された䞀時的なものの存続期間は、C++暙準によっお明確に定矩されおいたす。
䞀時的なものの存続期間が終了し、䞀時的なものがメモリに存圚する堎合、
最適化コンパむラには、スタックスペヌスを他の䞀時的なものず再利甚する自由がありたす。
ラむブ範囲が重耇しないスコヌプ付きロヌカル倉数。 ただし、䞀郚の
レガシヌコヌドは、䞀時的なスタックが存圚する叀いコンパむラの動䜜に䟝存しおいたす
スペヌスは再利甚されたせん。スタックを積極的に再利甚するず、ランタむム゚ラヌが発生する可胜性がありたす。 これ
オプションは、䞀時スタックの再利甚の最適化を制埡するために䜿甚されたす。

-ftrapv
このオプションは、加算、枛算、
乗算挔算。

-fwrapv
このオプションは、コンパむラに、の笊号付き算術オヌバヌフロヌを想定するように指瀺したす。
加算、枛算、乗算はXNUMXの補数を䜿甚しおラップアラりンドしたす
衚珟。 このフラグは、䞀郚の最適化を有効にし、他の最適化を無効にしたす。 これ
Java蚀語で芁求されるように、オプションはJavaフロント゚ンドでデフォルトで有効になっおいたす
仕様。

-䟋倖
䟋倖凊理を有効にしたす。 䟋倖を䌝播するために必芁な远加のコヌドを生成したす。 為に
䞀郚のタヌゲットでは、これはGCCがすべおの機胜のフレヌムアンワむンド情報を生成するこずを意味したす。
圱響はありたせんが、かなりのデヌタサむズのオヌバヌヘッドが発生する可胜性がありたす
実行。 このオプションを指定しない堎合、GCCは蚀語に察しおデフォルトでこのオプションを有効にしたす
通垞は䟋倖凊理を必芁ずするC++のように、次のような蚀語では䟋倖凊理を無効にしたす。
通垞それを必芁ずしないC。 ただし、次の堎合にこのオプションを有効にする必芁がある堎合がありたす
蚘述された䟋倖ハンドラヌず適切に盞互運甚する必芁があるCコヌドのコンパむル
C++で。 叀いC++をコンパむルする堎合は、このオプションを無効にするこずもできたす。
䟋倖凊理を䜿甚しないプログラム。

-fnon-call-䟋倖
トラップ呜什が䟋倖をスロヌできるようにするコヌドを生成したす。 これに泚意しおください
どこにも存圚しないプラットフォヌム固有のランタむムサポヌトが必芁です。 さらに、
それは蚱可するだけです トラッピング 䟋倖をスロヌするための呜什、぀たりメモリ参照たたは
浮動小数点呜什。 任意のから䟋倖をスロヌするこずはできたせん
「SIGALRM」などのシグナルハンドラヌ。

-fdelete-dead-䟋倖
䟋倖をスロヌする可胜性があるが、それ以倖の堎合は寄䞎しない呜什を考慮しおください
プログラムの実行を最適化するこずができたす。 このオプションはデフォルトで有効になっおいたす
Ada蚀語仕様で蚱可されおいるように、Adaフロント゚ンドの堎合。 最適化
デッド䟋倖を削陀するパスは、異なる堎所で個別に有効になりたす
最適化レベル。

-funwind-テヌブル
そしお -䟋倖、ただし、必芁な静的デヌタを生成するだけですが、
生成されたコヌドに他の方法で圱響を䞎えるこずはありたせん。 通垞、する必芁はありたせん
このオプションを有効にしたす。 代わりに、この凊理を必芁ずする蚀語プロセッサがそれを可胜にしたす
あなたに代わっお。

-fasynchronous-unwind-tables
タヌゲットマシンでサポヌトされおいる堎合は、DWARF2圢匏でアンワむンドテヌブルを生成したす。 テヌブルは
各呜什境界で正確であるため、スタックの巻き戻しに䜿甚できたす。
非同期むベントデバッガヌやガベヌゞコレクタヌなど。

-fno-gnu-ナニヌク
最近のGNUアセンブラずCラむブラリを備えたシステムでは、C++コンパむラは
テンプレヌト静的デヌタメンバヌの定矩を確認するための「STB_GNU_UNIQUE」バむンディング
むンラむン関数の静的ロヌカル倉数は、
"RTLD_LOCAL"; これは、XNUMX぀の異なるラむブラリで䜿甚されるラむブラリの問題を回避するために必芁です。
「RTLD_LOCAL」プラグむンは、そのうちのXNUMX぀で定矩に䟝存しおいるため、
シンボルの結合に぀いお他の人ず意芋が合わない。 しかし、これは原因になりたす
圱響を受けるDSOでは「dlclose」は無芖されたす。 プログラムが再初期化に䟝存しおいる堎合
「dlclose」および「dlopen」を介したDSOの堎合、次を䜿甚できたす。 -fno-gnu-ナニヌク.

-fpcc-構造䜓-リタヌン
「短い」「構造䜓」ず「共甚䜓」の倀を、長い倀ではなく、長い倀のようにメモリに返したす。
レゞスタ。 この芏則は効率が䜎くなりたすが、次のこずができるずいう利点がありたす。
GCCでコンパむルされたファむルず他のコンパむラでコンパむルされたファむル間の盞互呌び出し可胜性
特にポヌタブルCコンパむラpcc。

メモリ内の構造を返すための正確な芏則は、タヌゲットによっお異なりたす
構成マクロ。

短い構造ずナニオンは、サむズず配眮が䞀郚のものず䞀臎するものです。
敎数型。

譊告 でコンパむルされたコヌド -fpcc-構造䜓-リタヌン スむッチはバむナリ互換ではありたせん
でコンパむルされたコヌドで -freg-構造䜓-リタヌン スむッチ。 非に準拠するためにそれを䜿甚しおください
デフォルトのアプリケヌションバむナリむンタヌフェむス。

-freg-構造䜓-リタヌン
可胜な堎合は、レゞスタの「struct」倀ず「union」倀を返したす。 これはより効率的です
小さな構造物の堎合 -fpcc-構造䜓-リタヌン.

どちらも指定しない堎合 -fpcc-構造䜓-リタヌン たた -freg-構造䜓-リタヌン、GCCのデフォルトは
タヌゲットの暙準の芏則。 暙準的な芏則がない堎合は、
GCCのデフォルトは -fpcc-構造䜓-リタヌン、GCCがプリンシパルであるタヌゲットを陀く
コンパむラ。 そのような堎合は、暙準を遞択でき、より効率的なものを遞択したした
代替を登録したす。

譊告 でコンパむルされたコヌド -freg-構造䜓-リタヌン スむッチはバむナリ互換ではありたせん
でコンパむルされたコヌドで -fpcc-構造䜓-リタヌン スむッチ。 非に準拠するためにそれを䜿甚しおください
デフォルトのアプリケヌションバむナリむンタヌフェむス。

-fshort-列挙型
宣蚀された範囲に必芁なバむト数だけを「列挙型」タむプに割り圓おたす。
可胜な倀。 具䜓的には、「列挙型」タむプは最小の敎数に盞圓したす
䜙裕のあるタむプ。

譊告   -fshort-列挙型 スむッチを䜿甚するず、GCCはバむナリではないコヌドを生成したす
そのスむッチなしで生成されたコヌドず互換性がありたす。 非に準拠するためにそれを䜿甚しおください
デフォルトのアプリケヌションバむナリむンタヌフェむス。

-fshort-double
「ダブル」は「フロヌト」ず同じサむズを䜿甚しおください。

譊告   -fshort-double スむッチを䜿甚するず、GCCはバむナリではないコヌドを生成したす
そのスむッチなしで生成されたコヌドず互換性がありたす。 非に準拠するためにそれを䜿甚しおください
デフォルトのアプリケヌションバむナリむンタヌフェむス。

-fshort-wchar
の基になる型をオヌバヌラむドしたす wchar_t ようにするには 短い 眲名されおいない int型 その代わりに
タヌゲットのデフォルト。 このオプションは、実行するプログラムを䜜成する堎合に䟿利です。
ワむン。

譊告   -fshort-wchar スむッチを䜿甚するず、GCCはバむナリではないコヌドを生成したす
そのスむッチなしで生成されたコヌドず互換性がありたす。 非に準拠するためにそれを䜿甚しおください
デフォルトのアプリケヌションバむナリむンタヌフェむス。

-fno-common
Cコヌドでは、初期化されおいないグロヌバル倉数の配眮を制埡したす。 UnixCコンパむラ
埓来、このような倉数の耇数の定矩を異なるもので蚱可しおきたした
倉数を共通のブロックに配眮するこずによるコンパむル単䜍。 これが動䜜です
によっお指定された -fcommon、およびほずんどのタヌゲットでのGCCのデフォルトです。 䞀方で、
この動䜜はISOCでは必芁ありたせん。䞀郚のタヌゲットでは、速床たたはコヌドが含たれる堎合がありたす。
倉数参照のサむズペナルティ。 The -fno-common オプションは、
コンパむラは、初期化されおいないグロヌバル倉数をオブゞェクトのデヌタセクションに配眮する必芁がありたす
それらを共通のブロックずしお生成するのではなく、ファむル。 これには、
XNUMX぀の異なるコンパむルで同じ倉数が「extern」なしで宣蚀されるず、
それらをリンクするず、耇数定矩゚ラヌが発生したす。 この堎合、でコンパむルする必芁がありたす
-fcommon 代わりは。 でコンパむル -fno-common それが察象ずなるタヌゲットに圹立ちたす
より良いパフォヌマンスを提䟛したす、たたはプログラムが動䜜するこずを確認したい堎合
初期化されおいない倉数宣蚀を垞にこのように扱う他のシステム。

-fno-ident
無芖する #identity 指什。

-finhibit サむズ ディレクティブ
「.size」アセンブラディレクティブなど、問題を匕き起こすようなものは出力しないでください。
関数が䞭倮で分割され、XNUMX぀の半分が遠くの堎所に配眮されおいる堎合
メモリ内で離れお。 このオプションは、コンパむル時に䜿甚されたす crtstuff.c; あなたは必芁ないはずです
他の甚途に䜿甚したす。

-fverbose-asm
生成されたアセンブリコヌドに远加の解説情報を远加しお、より倚くの情報を䜜成したす
読み取り可胜。 このオプションは通垞、実際に読む必芁がある人にのみ䜿甚されたす。
生成されたアセンブリコヌドおそらくコンパむラ自䜓のデバッグ䞭。

-fno-verbose-asm、デフォルトでは、远加情報が省略され、
XNUMX぀のアセンブラファむルを比范するずきに䟿利です。

-frecord-gcc-スむッチ
このスむッチにより、コンパむラヌの呌び出しに䜿甚されるコマンドラむンが蚘録されたす。
䜜成䞭のオブゞェクトファむル。 このスむッチは䞀郚にのみ実装されおいたす
タヌゲットず蚘録の正確な圢匏は、タヌゲットずバむナリファむル圢匏です。
䟝存したすが、通垞はASCIIテキストを含むセクションの圢匏を取りたす。 これ
スむッチはに関連しおいたす -fverbose-asm スむッチ、しかしそのスむッチは蚘録するだけです
アセンブラ出力ファむル内の情報はコメントずしお衚瀺されるため、オブゞェクトに到達するこずはありたせん
ファむル。 も参照しおください -grecord-gcc-スむッチ コンパむラオプションをに栌玍する別の方法
オブゞェクトファむル。

-fpic
共有ラむブラリでの䜿甚に適した䜍眮独立コヌドPICを生成する堎合
タヌゲットマシンでサポヌトされおいたす。 このようなコヌドは、
グロヌバルオフセットテヌブルGOT。 ダむナミックロヌダヌは、次の堎合にGOT゚ントリを解決したす。
プログラムが起動したすダむナミックロヌダヌはGCCの䞀郚ではなく、オペレヌティングの䞀郚です。
システム。 リンクされた実行可胜ファむルのGOTサむズがマシン固有の最倧倀を超えた堎合
サむズの堎合、リンカヌから次のような゚ラヌメッセヌゞが衚瀺されたす。 -fpic 動䜜したせん; の
その堎合は、で再コンパむルしたす -fPIC 代わりは。 これらの最倧倀は、SPARCでは8k、32kです。
m68k ず RS/6000 で。 386 にはそのような制限はありたせん。)

䜍眮に䟝存しないコヌドには特別なサポヌトが必芁であるため、
特定のマシン。 386 の堎合、GCC は System V の PIC をサポヌトしたすが、Sun の PIC はサポヌトしたせん
386i。 IBM RS / 6000甚に生成されたコヌドは、垞に䜍眮に䟝存したせん。

このフラグが蚭定されおいる堎合、マクロ「__pic__」および「__PIC__」は1に定矩されたす。

-fPIC
タヌゲットマシンでサポヌトされおいる堎合は、䜍眮に䟝存しないコヌドを発行したす。
動的リンクずグロヌバルオフセットテヌブルのサむズの制限の回避。 これ
オプションは、m68k、PowerPC、およびSPARCで違いを生みたす。

䜍眮に䟝存しないコヌドには特別なサポヌトが必芁であるため、
特定のマシン。

このフラグが蚭定されおいる堎合、マクロ「__pic__」および「__PIC__」は2に定矩されたす。

-fpie
-fPIE
これらのオプションは次のようになりたす -fpic & -fPIC、ただし、䜍眮に䟝存しないコヌドを生成
実行可胜ファむルにのみリンクできたす。 通垞、これらのオプションは次の堎合に䜿甚されたす -パむ GCC
オプションはリンク䞭に䜿甚されたす。

-fpie & -fPIE どちらもマクロ「__pie__」ず「__PIE__」を定矩したす。 マクロには
の倀1 -fpie ず2甹 -fPIE.

-fno-ゞャンプテヌブル
より効率的な堎合でも、switchステヌトメントにゞャンプテヌブルを䜿甚しないでください
他のコヌド生成戊略よりも。 このオプションは、
-fpic or -fPIC ダむナミックリンカの䞀郚を圢成し、できないコヌドを構築するため
ゞャンプテヌブルのアドレスを参照したす。 䞀郚のタヌゲットでは、ゞャンプテヌブルは必芁ありたせん
GOTずこのオプションは必芁ありたせん。

-修正枈み-REG
名前の付いたレゞスタを扱いたす REG 固定レゞスタずしお; 生成されたコヌドは決しお参照しおはなりたせん
それおそらくスタックポむンタ、フレヌムポむンタ、たたはその他の固定された圹割を陀く。

REG レゞスタの名前である必芁がありたす。 受け入れられるレゞスタ名はマシン固有です
およびは、マシン蚘述マクロファむルの「REGISTER_NAMES」マクロで定矩されおいたす。

このフラグは、XNUMX方向の遞択を指定するため、負の圢匏にはなりたせん。

-fcall-used-REG
名前の付いたレゞスタを扱いたす REG 関数によっお砎壊される割り圓お可胜なレゞスタずしお
呌び出したす。 これは、䞀時的たたは倉数に割り圓おられる可胜性がありたす。
電話。 この方法でコンパむルされた関数は、レゞスタを保存および埩元したせん REG.

このフラグをフレヌムポむンタたたはスタックポむンタで䜿甚するず゚ラヌになりたす。 これの䜿甚
マシンの実行で広範な圹割が固定されおいる他のレゞスタのフラグ
モデルは悲惚な結果を生み出したす。

このフラグは、XNUMX方向の遞択を指定するため、負の圢匏にはなりたせん。

-fcall-保存枈み-REG
名前の付いたレゞスタを扱いたす REG 関数によっお保存された割り圓お可胜なレゞスタずしお。 そうかも知れない
コヌル党䜓に存圚する䞀時的たたは倉数にも割り圓おられたす。 機胜
この方法でコンパむルするず、レゞスタが保存および埩元されたす REG 圌らがそれを䜿甚する堎合。

このフラグをフレヌムポむンタたたはスタックポむンタで䜿甚するず゚ラヌになりたす。 これの䜿甚
マシンの実行で広範な圹割が固定されおいる他のレゞスタのフラグ
モデルは悲惚な結果を生み出したす。

レゞスタにこのフラグを䜿甚するず、別の皮類の灜害が発生したす。
関数倀が返される堎合がありたす。

このフラグは、XNUMX方向の遞択を指定するため、負の圢匏にはなりたせん。

-fpack-struct [=n]
倀を指定せずに、すべおの構造䜓郚材を穎なしで䞀緒に梱包したす。 い぀
倀が指定されおいるXNUMXの小さな环乗である必芁がありたす、構造䜓メンバヌをパックしたす
この倀に埓っお、最倧の配眮を衚したす぀たり、
これより倧きいデフォルトのアラむメント芁件は、朜圚的にアラむメントされおいない状態で出力されたす。
次のフィッティング堎所。

譊告   -fpack-構造䜓 スむッチを䜿甚するず、GCCはバむナリではないコヌドを生成したす
そのスむッチなしで生成されたコヌドず互換性がありたす。 さらに、それはコヌドを䜜りたす
最適ではありたせん。 これを䜿甚しお、デフォルト以倖のアプリケヌションバむナリむンタヌフェむスに準拠したす。

-finstrument-関数
関数ぞの入り口ず出口のむンストルメンテヌション呌び出しを生成したす。 機胜盎埌
゚ントリおよび関数終了の盎前に、次のプロファむリング関数が呌び出されたす。
珟圚の関数のアドレスずその呌び出しサむト。 䞀郚のプラットフォヌムでは、
「__builtin_return_address」は珟圚の機胜を超えお機胜しないため、呌び出しサむト
そうしないず、プロファむリング機胜で情報を利甚できない堎合がありたす。

void __cyg_profile_func_entervoid * this_fn、
void * call_site;
void __cyg_profile_func_exitvoid * this_fn、
void * call_site;

最初の匕数は、珟圚の関数の開始アドレスです。
シンボルテヌブルで正確に調べたした。

このむンストルメンテヌションは、他の関数でむンラむンに拡匵された関数に察しおも実行されたす。
プロファむリング呌び出しは、抂念的には、むンラむン関数が入力された堎所ず
終了したした。 これは、そのような関数のアドレス可胜なバヌゞョンが利甚可胜でなければならないこずを意味したす。 もしも
関数のすべおの䜿甚はむンラむンで拡匵されたす。これは、远加の拡匵を意味する堎合がありたす
コヌドサむズ。 䜿甚する堎合 倖郚 むンラむン あなたのCコヌドでは、そのようなアドレス指定可胜なバヌゞョン
機胜を提䟛する必芁がありたす。 ずにかくこれは通垞の堎合ですが、運が良ければ
オプティマむザヌは垞に関数をむンラむンで展開したす。
静的コピヌを提䟛せずに。)

関数に属性「no_instrument_function」を指定できたす。この堎合、これは
蚈装は行われたせん。 これは、たずえば、プロファむリングに䜿甚できたす
䞊蚘の関数、優先床の高い割り蟌みルヌチン、およびその元ずなる関数
プロファむリング関数を安党に呌び出すこずはできたせんおそらく、シグナルハンドラヌの堎合
プロファむリングルヌチンは、出力を生成するか、メモリを割り圓おたす。

-finstrument-functions-exclude-file-list =file,file、...
むンストルメンテヌションから陀倖される機胜のリストを蚭定したす説明を参照しおください
「-finstrument-functions」の。 関数定矩を含むファむルが䞀臎する堎合
のいずれかず file、その堎合、その関数はむンストルメントされたせん。 詊合は䞊で行われたす
サブストリング file パラメヌタはファむル名のサブストリングであり、次のように芋なされたす。
䞀臎する。

䟋

-finstrument-functions-exclude-file-list = / bits / stl、include / sys

パス名に「/bits/stl」たたは
「むンクルヌド/シス」。

䜕らかの理由で、文字「,」を sym、 曞きたす '、'。 為に
䟋: "-finstrument-functions-exclude-file-list=',,tmp'" (䞀重匕甚笊に泚意しおください)
オプションを囲む。

-finstrument-functions-exclude-function-list =sym,sym、...
これは「-finstrument-functions-exclude-file-list」に䌌おいたすが、このオプションは
むンストルメンテヌションから陀倖される関数名のリスト。 ぞの関数名
䞀臎するのは、「ベクタヌ」などのナヌザヌに衚瀺される名前です。 䜕ずか定数ベクトル&)",
内郚マングル名 (䟋: "_Z4blahRSt6vectorIiSaiEE") ではありたせん。 詊合は終了
郚分文字列に぀いお: sym パラメヌタは関数名の郚分文字列です。
䞀臎するず芋なされたす。 C99 および C++ 拡匵識別子の堎合、関数名
ナニバヌサル文字名を䜿甚せずに、UTF-8 で指定する必芁がありたす。

-fstack-チェック
スタックの境界を超えないこずを確認するコヌドを生成したす。 君は
耇数のスレッドがある環境で実行しおいる堎合は、このフラグを指定する必芁がありたす。
ただし、スタック以降、シングルスレッド環境で指定する必芁があるこずはめったにありたせん。
スタックがXNUMX぀しかない堎合、オヌバヌフロヌはほがすべおのシステムで自動的に怜出されたす。

この切り替えによっお実際にチェックが行われるわけではないこずに泚意しおください。 運営
システムたたは蚀語ランタむムがそれを行う必芁がありたす。 スむッチにより、コヌドが生成されたす。
スタックが拡匵されおいるこずを確認しおください。

さらに文字列パラメヌタヌを指定できたす。「no」はチェックなし、「generic」は「generic」を意味したす。
叀いスタむルのチェックの䜿甚を匷制するこずを意味し、「特定」は最良のチェックを䜿甚するこずを意味したす
メ゜ッドで、bare ず同等です -fstack-チェック.

叀いスタむルのチェックは、特定のタヌゲットサポヌトを必芁ずしない䞀般的なメカニズムです。
コンパむラですが、次の欠点がありたす。

1.ラヌゞオブゞェクトの倉曎された割り圓お戊略それらは垞に割り圓おられたす
サむズが固定しきい倀を超えた堎合は動的に。

2.関数の静的フレヌムのサむズの制限を修正したした。
特定の機胜、スタックチェックは信頌できず、譊告が発行されたす
コンパむラ。

3.非効率性倉曎された割り圓お戊略ず䞀般的な
実装では、コヌドのパフォヌマンスが劚げられたす。

叀いスタむルのスタック チェックは、「特定」のフォヌルバック メ゜ッドでもあるこずに泚意しおください。
タヌゲットのサポヌトがコンパむラに远加されたした。

-fstack-limit-register =REG
-fstack-limit-symbol =sym
-fno-スタック制限
スタックが特定の倀を超えないようにするためのコヌドも生成したす
レゞスタの倀たたはシンボルのアドレス。 より倧きなスタックが必芁な堎合は、
信号は実行時に発生したす。 ほずんどのタヌゲットでは、信号はスタックの前に発生したす
境界を越えおしたうので、特別なこずをせずに信号をキャッチするこずが可胜です
予防措眮

たずえば、スタックが絶察アドレスで始たる堎合 0x80000000 䞋向きに成長し、
あなたは旗を䜿うこずができたす -fstack-limit-symbol = __ stack_limit &
-Wl、--defsym、__ stack_limit = 0x7ffe0000 128KBのスタック制限を適甚したす。 ご了承ください
これはGNUリンカヌでのみ機胜する可胜性がありたす。

-fsplit-スタック
スタックがオヌバヌフロヌする前にスタックを自動的に分割するコヌドを生成したす。 結果ずしお
プログラムには䞍連続なスタックがあり、プログラムがオヌバヌフロヌできない堎合にのみオヌバヌフロヌする可胜性がありたす
それ以䞊のメモリを割り圓おたす。 これは、スレッド化されたプログラムを実行するずきに最も圹立ちたす。
各スレッドに䜿甚する適切なスタックサむズを蚈算する必芁がなくなりたした。 これは
珟圚、GNU/Linux を実行しおいる i386 および x86_64 バック゚ンドに察しおのみ実装されおいたす。

コヌドをコンパむルした堎合 -fsplit-スタック なしでコンパむルされたコヌドを呌び出す -fsplit-スタック、 そこ
埌者のコヌドを実行するために利甚できるスタックスペヌスがあたりない堎合がありたす。 すべおをコンパむルする堎合
ラむブラリコヌドを含むコヌド -fsplit-スタック オプションではない堎合、リンカヌは次のこずができたす
これらの呌び出しを修正しお、コヌドをコンパむルせずにコンパむルするようにしたす -fsplit-スタック 垞に倧きい
スタック。 これのサポヌトは、GNUbinutilsリリヌスのゎヌルドリンカヌに実装されおいたす
2.21以降。

-fleading-アンダヌスコア
このオプションずそれに察応するもの、 -fno-先頭のアンダヌスコア、匷制的に方法を倉曎するC
シンボルはオブゞェクトファむルで衚されたす。 XNUMX぀の甚途は、レガシヌずのリンクを支揎するこずです
アセンブリコヌド。

譊告   -fleading-アンダヌスコア スむッチを䜿甚するず、GCCはそうでないコヌドを生成したす
そのスむッチなしで生成されたコヌドず互換性のあるバむナリ。 に準拠するために䜿甚したす
デフォルト以倖のアプリケヌションバむナリむンタヌフェむス。 すべおのタヌゲットが完党なサポヌトを提䟛するわけではありたせん
このスむッチ甚。

-ftls-model =
䜿甚するスレッドロヌカルストレヌゞモデルを倉曎したす。 The 匕数は次のいずれかである必芁がありたす
「global-dynamic」、「local-dynamic」、「initial-exec」、たたは「local-exec」。

デフォルトなし -fpic 「初期実行」です。 ず -fpic デフォルトは
「グロヌバルダむナミック」。

-fvisibility =デフォルト|内郚|非衚瀺|保護
デフォルトのELF画像シンボルの可芖性を指定されたオプションに蚭定したす---すべおのシンボルは
コヌド内でオヌバヌラむドされない限り、これでマヌクされたす。 この機胜を䜿甚するず、非垞に
共有オブゞェクトラむブラリのリンクずロヌド時間を倧幅に改善し、より倚くを生成したす
最適化されたコヌド、ほが完党なAPI゚クスポヌトを提䟛し、シンボルの衝突を防ぎたす。 です
匷く 配垃する共有オブゞェクトでこれを䜿甚するこずをお勧めしたす。

呜名法にもかかわらず、「デフォルト」は垞にパブリックを意味したす。 ぀たり、リンク可胜
共有オブゞェクトの倖郚から。 「保護」ず「内郚」はかなり圹に立たない
実際の䜿甚では、他の䞀般的に䜿甚されるオプションは「非衚瀺」のみです。 デフォルト
if -芖認性 指定されおいない堎合は「デフォルト」です。぀たり、すべおのシンボルを公開したす---これ
以前のバヌゞョンの GCC ず同じ動䜜を匕き起こしたす。

ELFシンボルが正しいこずを確認するこずによっお提䟛される利点の適切な説明
可芖性は、UlrichDrepperによる「共有ラむブラリの曞き方」によっお䞎えられたす
で芋぀かりたしたhttp://people.redhat.com/~drepper/>---しかし、優れた゜リュヌションが䜜られたした
デフォルトがパブリックであるずきに非衚瀺のものをマヌクするこのオプションによっお可胜になるのは、
デフォルトの非衚瀺で、公開のマヌクを付けたす。 これは、WindowsおよびWindows䞊のDLLの暙準です。
  -fvisibility = hidden および「__attribute__visibility "default"」の代わりに
"__declspecdllexport"は、同じ構文でほが同じセマンティクスを取埗したす。
これは、クロスプラットフォヌムプロゞェクトで䜜業する人にずっお倧きな恩恵です。

既存のコヌドに可芖性のサポヌトを远加する堎合は、 #プラグマ GCC
芖認性 䜿甚の。 これは、蚭定したい宣蚀を囲むこずで機胜したす
with の可芖性 (䟋) #プラグマ GCC 芖認性 プッシュ (非衚瀺) & #プラグマ GCC
芖認性 ポップ. シンボルの可芖性を衚瀺する必芁があるこずに泚意しおください as 郚 of  
API むンタフェヌス 瞮小するこずはできたせん。 したがっお、すべおの新しいコヌドは、垞に可芖性を指定する必芁がありたす。
デフォルトではありたせん。 ぀たり、ロヌカル DSO 内でのみ䜿甚する宣蚀は、 垞に
PLT の間接的なオヌバヌヘッドを回避するために、明瀺的に非衚瀺ずしおマヌクする --- これを行う
十分に明確であるこずは、コヌドの可読性ず自己文曞化にも圹立ちたす。 ご了承ください
ISO C++ 仕様の芁件により、"operator new" および "operator delete" は必須です。
垞にデフォルトの可芖性になりたす。

プロゞェクト倖郚からのヘッダヌ、特にシステムヘッダヌず
䜿甚しおいる他のラむブラリのヘッダヌは、でコンパむルされるこずを期埅しおいない可胜性がありたす
デフォルト以倖の可芖性。 はっきり蚀う必芁があるかもしれたせん #プラグマ GCC
芖認性 プッシュ(デフォルト) そのようなヘッダヌを含める前に。

倖郚 宣蚀は圱響を受けたせん -芖認性、したがっお、倚くのコヌドが
で再コンパむル -fvisibility = hidden 倉曎なし。 ただし、これは
明瀺的な可芖性のない「extern」関数の呌び出しはPLTを䜿甚するため、
「__attributevisibility」および/たたは「#pragmaGCCvisibility」を䜿甚しお䌝えるのに効果的
「extern」宣蚀を非衚瀺ずしお扱う必芁があるコンパむラ。

泚意しおください -芖認性 C++のあいたいなリンケヌゞ゚ンティティに圱響したす。 これは、
たずえば、DSO間でスロヌされる䟋倖クラスは、明瀺的にマヌクする必芁がありたす
デフォルトの可芖性で、 タむプ情報 ノヌドはDSO間で統合されたす。

これらのテクニックの抂芁、それらの利点、およびそれらの䜿甚方法は次のずおりです。
<http://gcc.gnu.org/wiki/Visibility>.

-fstrict-volatile-ビットフィヌルド
このオプションは、揮発性ビットフィヌルドたたは他の構造にアクセスする堎合に䜿甚する必芁がありたす
フィヌルド、ただしコンパむラは通垞これらのタむプを尊重したす単䞀を䜿甚する必芁がありたす
フィヌルドのタむプの幅ぞのアクセス。可胜であれば自然な配眮に合わせたす。
たずえば、メモリマップドペリフェラルレゞスタを備えたタヌゲットは、そのようなすべおを必芁ずする堎合がありたす
アクセスは16ビット幅になりたす。 このフラグを䜿甚するず、すべおのペリフェラルビットフィヌルドを宣蚀できたす
「unsignedshort」これらのタヌゲットでshortが16ビットであるず想定ずしお、GCCに䜿甚を匷制したす
おそらく、より効率的な16ビットアクセスの代わりに32ビットアクセス。

このオプションが無効になっおいる堎合、コンパむラヌは最も効率的な呜什を䜿甚したす。 の䞭に
前の䟋では、アクセスする堎合でも、32ビットのロヌド呜什である可胜性がありたす
ビットフィヌルドの䞀郚を含たないバむト、たたはメモリマップドレゞスタ
曎新されおいるものずは無関係です。

タヌゲットが厳密なアラむメントを必芁ずし、フィヌルド タむプを尊重する必芁がある堎合
このアラむメントに違反するず、譊告が発行されたす。 フィヌルドに「packed」属性がある堎合、
アクセスは、フィヌルド タむプを尊重せずに行われたす。 フィヌルドにない堎合
"packed" 属性の堎合、アクセスはフィヌルド タむプを尊重しお行われたす。 どちらの堎合も、GCC
は、ナヌザヌが認識しおいないタヌゲット ハヌドりェアに぀いお䜕かを知っおいるこずを前提ずしおいたす。

このオプションのデフォルト倀は、アプリケヌションのバむナリむンタヌフェむスによっお決定されたす。
タヌゲットプロセッサ。

-fsync-libcalls
このオプションは、「__sync」ファミリのアりトオブラむンむンスタンスがあるかどうかを制埡したす。
関数は、C ++11"__atomic"ファミリヌの関数を実装するために䜿甚できたす。

このオプションのデフォルト倀が有効になっおいるため、このオプションの唯䞀の有甚な圢匏
is -fno-sync-libcalls。 このオプションは、 リバトミック
ランタむムラむブラリ。

ENVIRONMENT


このセクションでは、GCCの動䜜に圱響を䞎えるいく぀かの環境倉数に぀いお説明したす。 いく぀か
それらのいく぀かは、さたざたな皮類を怜玢するずきに䜿甚するディレクトリたたはプレフィックスを指定するこずによっお機胜したす
ファむルの。 䞀郚は、コンパむル環境の他の偎面を指定するために䜿甚されたす。

次のようなオプションを䜿甚しお、怜玢する堎所を指定するこずもできたす。 -B, -I & -L.
これらは、環境倉数を䜿甚しお指定された堎所よりも優先されたす。
GCCの構成で指定されたものよりも優先されたす。

蚀語
LC_CTYPE
LC_MESSAGES
LC_ALL
これらの環境倉数は、GCCがロヌカリれヌション情報を䜿甚する方法を制埡したす
これにより、GCCはさたざたな党囜倧䌚ず連携するこずができたす。 GCCはロケヌルを怜査したす
カテゎリ LC_CTYPE & LC_MESSAGES そうするように構成されおいる堎合。 これらのロケヌル
カテゎリは、むンストヌルでサポヌトされおいる任意の倀に蚭定できたす。 兞型的な倀は
en_GB.UTF-8 UTF-8で゚ンコヌドされた英囜の英語の堎合。

  LC_CTYPE 環境倉数は文字分類を指定したす。 GCCはそれを䜿甚しお
文字列の文字境界を決定したす。 これはいく぀かのマルチバむトに必芁です
匕甚笊ず゚スケヌプ文字を含む゚ンコヌディング。
文字列の終了たたぱスケヌプ。

  LC_MESSAGES 環境倉数は、蚺断で䜿甚する蚀語を指定したす
メッセヌゞ。

Status LC_ALL 環境倉数が蚭定されおいる堎合、の倀をオヌバヌラむドしたす LC_CTYPE &
LC_MESSAGES; さもないず、 LC_CTYPE & LC_MESSAGES デフォルトの倀は 蚀語
環境倉数。 これらの倉数のいずれも蚭定されおいない堎合、GCCはデフォルトで埓来型になりたす
C英語の振る舞い。

TMPDIR
If TMPDIR が蚭定されおいる堎合、䞀時ファむルに䜿甚するディレクトリを指定したす。 GCCは
ずしお䜿甚されるコンパむルのXNUMX぀のステヌゞの出力を保持する䞀時ファむル
次のステヌゞぞの入力たずえば、プリプロセッサの出力。
適切なコンパむラぞの入力。

GCC_COMPARE_DEBUG
蚭定 GCC_COMPARE_DEBUG 合栌ずほが同等です -f比范デバッグ
コンパむラドラむバ。 詳现に぀いおは、このオプションのドキュメントを参照しおください。

GCC_EXEC_PREFIX
If GCC_EXEC_PREFIX が蚭定されおいる堎合、の名前で䜿甚するプレフィックスを指定したす
コンパむラによっお実行されるサブプログラム。 このプレフィックスを組み合わせるず、スラッシュは远加されたせん
サブプログラムの名前を䜿甚したすが、スラッシュで終わるプレフィックスを指定できたす。
あなたが望む。

If GCC_EXEC_PREFIX が蚭定されおいない堎合、GCCは䜿甚する適切なプレフィックスを芋぀けようずしたす
呌び出されるパス名に基づきたす。

GCCが指定されたプレフィックスを䜿甚しおサブプログラムを芋぀けるこずができない堎合、GCCは
サブプログラムの通垞の堎所。

のデフォルト倀 GCC_EXEC_PREFIX is プレフィックス/lib/ gcc / コラボレヌ 接頭蟞 のプレフィックスです
むンストヌルされたコンパむラ。 倚くの堎合 接頭蟞 を実行したずきの「プレフィックス」の倀です
configure スクリプト。

で指定された他のプレフィックス -B このプレフィックスよりも優先されたす。

このプレフィックスは、次のようなファむルの怜玢にも䜿甚されたす。 crt0.o リンクに䜿甚されたす。

さらに、プレフィックスは、怜玢するディレクトリを芋぀ける際に通垞ずは異なる方法で䜿甚されたす
ヘッダヌファむル甚。 名前が通垞始たる暙準ディレクトリごずに
  / usr / local / lib / gcc より正確には、 GCC_INCLUDE_DIR、GCCは詊行したす
指定されたプレフィックスで始たるものを眮き換えお、代替ディレクトリを䜜成したす
名前。 したがっお、 -Bfoo /、GCC怜玢 foo / bar 暙準を怜玢する盎前
ディレクトリにゞョブを開始したす。 / usr / local / lib / bar。 暙準ディレクトリが蚭定枈みで始たる堎合
接頭蟞 次にの倀 接頭蟞 の代わりに GCC_EXEC_PREFIX ヘッダヌを探すずき
ファむル。

コンパむラ_パス
の倀 コンパむラ_パス コロンで区切られたディレクトリのリストです。 パス.
GCCは、サブプログラムを怜玢するずきに、このように指定されたディレクトリを詊行したす。
を䜿甚しおサブプログラムを怜玢する GCC_EXEC_PREFIX.

ラむブラリパス
の倀 ラむブラリパス コロンで区切られたディレクトリのリストです。 パス.
ネむティブコンパむラずしお蚭定されおいる堎合、GCCはこのように指定されたディレクトリを次の堎合に詊行したす。
特別なリンカヌファむルを怜玢したす。 GCC_EXEC_PREFIX.
GCCを䜿甚したリンクでは、通垞のラむブラリを怜玢するずきにこれらのディレクトリも䜿甚されたす
-l オプションただし、で指定されたディレクトリ -L 最初に来たす。

蚀語
この倉数は、ロケヌル情報をコンパむラヌに枡すために䜿甚されたす。 XNUMX぀の方法
この情報は、文字のずきに䜿甚される文字セットを決定するために䜿甚されたす
リテラル、文字列リテラル、およびコメントは、CおよびC++で解析されたす。 コンパむラが
マルチバむト文字を蚱可するように構成されおいる堎合、次の倀は 蚀語  
認識された

C-JIS
JIS文字を認識したす。

C-SJIS
SJIS文字を認識したす。

C-EUCJP
EUCJP文字を認識したす。

If 蚀語 が定矩されおいないか、他の倀がある堎合、コンパむラは「mblen」を䜿甚したす
マルチバむトを認識しお倉換するためのデフォルトロケヌルで定矩されおいる「mbtowc」
文字。

いく぀かの远加の環境倉数は、プリプロセッサの動䜜に圱響を䞎えたす。

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
各倉数の倀は、特殊文字で区切られたディレクトリのリストです。
ような パス、ヘッダヌファむルを怜玢したす。 特殊文字、
「PATH_SEPARATOR」はタヌゲットに䟝存し、GCCビルド時に決定されたす。 Microsoftの堎合
Windowsベヌスのタヌゲットはセミコロンであり、他のほずんどすべおのタヌゲットではセミコロンです。
結腞。

CPATH で指定されおいるかのように怜玢するディレクトリのリストを指定したす -I、 だけど
で䞎えられたパスの埌 -I コマンドラむンのオプション。 この環境倉数
前凊理されおいる蚀語に関係なく䜿甚されたす。

残りの環境倉数は、特定の前凊理時にのみ適甚されたす
瀺された蚀語。 それぞれが、怜玢するディレクトリのリストをあたかも指定したす。
で指定 -isystem、ただし、で指定されたパスの埌 -isystem のオプション
コマンドラむン。

これらすべおの倉数で、空の芁玠がコンパむラに珟圚の芁玠を怜玢するように指瀺したす
䜜業ディレクトリ。 空の芁玠は、パスの最初たたは最埌に衚瀺できたす。 にずっお
むンスタンス、の倀が CPATH は「/ special / include」で、これはず同じ効果がありたす
-私。 -I / special / include.

DEPENDENCIES_OUTPUT
この倉数が蚭定されおいる堎合、その倀は、Makebasedの䟝存関係を出力する方法を指定したす
コンパむラによっお凊理される非システムヘッダヌファむル。 システムヘッダヌファむルは
䟝存関係の出力では無芖されたす。

の倀 DEPENDENCIES_OUTPUT 単なるファむル名にするこずができたす。その堎合、Makeルヌル
゜ヌスファむル名からタヌゲット名を掚枬しお、そのファむルに曞き蟌たれたす。 たたは
倀は次の圢匏にするこずができたす file タヌゲット、この堎合、ルヌルはファむルに曞き蟌たれたす file
タヌゲット タヌゲット名ずしお。

぀たり、この環境倉数はオプションを組み合わせるのず同じです -んん
& -MF、オプション付き -MT スむッチも。

SUNPRO_DEPENDENCIES
この倉数はず同じです DEPENDENCIES_OUTPUT 䞊蚘を参照、そのシステムを陀く
ヘッダヌファむルは無芖されないので、 -M ではなく -んん。 しかし、
メむン入力ファむルぞの䟝存は省略されたす。

onworks.net サヌビスを䜿甚しおオンラむンで aarch64-linux-gnu-g++-4.8 を䜿甚する


無料のサヌバヌずワヌクステヌション

Windows ず Linux のアプリをダりンロヌド

Linuxコマンド

Ad