EnglishFrenchGermanItaliPortugueseRussiaSpanyol

Favicon OnWorks

mips-linux-gnu-gcc - Dalam talian di Awan

Jalankan mips-linux-gnu-gcc dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan mips-linux-gnu-gcc yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


gcc - pengkompil GNU projek C dan C++

SINOPSIS


gcc [-c|-S|-E] [-std=standard]
[-g] [-pg] [-Otahap]
[-Wmemberi amaran kepada...] [-Wpedantik]
[-Idir...] [-Ldir...]
[-Dmakro[=defn]...] [-Umakro]
[-fpilihan...] [-mpilihan mesin...]
[-o fail luar] [@fail] dalam fail...

Hanya pilihan yang paling berguna disenaraikan di sini; lihat di bawah untuk bakinya. g ++ menerima
kebanyakannya pilihan yang sama seperti gcc.

DESCRIPTION


Apabila anda menggunakan GCC, ia biasanya melakukan prapemprosesan, penyusunan, pemasangan dan pemautan.
"Pilihan keseluruhan" membolehkan anda menghentikan proses ini pada peringkat pertengahan. Untuk
contohnya, -c pilihan mengatakan untuk tidak menjalankan pemaut. Kemudian output terdiri daripada objek
fail output oleh pemasang.

Pilihan lain diteruskan ke satu peringkat pemprosesan. Beberapa pilihan mengawal
prapemproses dan lain-lain pengkompil itu sendiri. Namun pilihan lain mengawal pemasang dan
penghubung; kebanyakannya tidak didokumenkan di sini, kerana anda jarang perlu menggunakan mana-mana daripadanya.

Kebanyakan pilihan baris perintah yang boleh anda gunakan dengan GCC berguna untuk program C; bila
pilihan hanya berguna dengan bahasa lain (biasanya C++), penjelasannya berkata demikian
secara eksplisit. Jika penerangan untuk pilihan tertentu tidak menyebut sumber
bahasa, anda boleh menggunakan pilihan itu dengan semua bahasa yang disokong.

. gcc program menerima pilihan dan nama fail sebagai operan. Banyak pilihan mempunyai pelbagai
nama huruf; oleh itu berbilang pilihan huruf tunggal boleh tidak dikumpulkan: -dv adalah sangat
berbeza daripada -d -v.

Anda boleh mencampurkan pilihan dan hujah lain. Untuk sebahagian besar, pesanan yang anda gunakan tidak
perkara. Pesanan tidak penting apabila anda menggunakan beberapa pilihan jenis yang sama; sebagai contoh, jika
anda tentukan -L lebih daripada sekali, direktori dicari mengikut susunan yang ditentukan. Juga,
penempatan di -l pilihan adalah penting.

Banyak pilihan mempunyai nama panjang bermula dengan -f atau dengan -W---sebagai contoh,
-fmove-gelung-invariants, -Wformat dan sebagainya. Kebanyakan ini mempunyai kedua-dua positif dan negatif
borang; bentuk negatif daripada -ffoo is -fno-foo. Manual ini hanya mendokumenkan satu daripada ini
dua borang, yang mana satu bukan lalai.

PILIHAN


Lebih Baik Ringkasan
Berikut ialah ringkasan semua pilihan, dikumpulkan mengikut jenis. Penjelasan adalah seperti berikut
bahagian.

Keseluruhan Pilihan
-c -S -E -o fail -tiada-awalan-kanonik -paip -kod-laluan-keluar -x bahasa -v
-### - membantu[=kelas[, ...]] --sasaran-bantuan --versi -pembungkus @fail -fplugin=fail
-fplugin-arg-nama=berhujah -fdump-ada-spec[-nipis] -fada-spec-parent=unit
-fdump-go-spec=fail

C Bahasa Pilihan
-ansi -std=standard -fgnu89-sebaris -maklumat-aux nama fail
-fungsi-variad-tanpa-parameter -fno-asm -fno-dibina -fno-built-fungsi
-dihoskan -berdiri bebas -fopenacc -fopenmp -fopenmp-simd -fms-sambungan
-fplan9-sambungan -trigraf -tradisional -tradisional-cpp -fallow-single-precision
-fcond-mismatch -penukaran-vektor-flax -fsigned-bitfields -fsigned-char
-funsigned-bitfields -funsigned-char

C + + Bahasa Pilihan
-fabi-version=n -fno-access-control -fcheck-baru -fconstexpr-depth=n
-ffriend-suntikan -fno-elide-konstruktor -fno-enforce-eh-specs -untuk-skop
-fno-untuk-skop -fno-gnu-kata kunci -fno-implisit-templat
-fno-implisit-inline-templates -fno-implement-inlines -fms-sambungan
-fno-nonansi-builtins -fnothrow-opt -nama-pengendali-fno -fno-optional-diags
-fpermisif -fno-cantik-templat -frepo -fno-rtti -fsized-deallocation -fstats
-ftemplate-backtrace-limit=n -ftemplate-depth=n -fno-threadsafe-statik
-fius-cxa-atexit -fno-lemah -nostdinc++ -kebolehlihatan-sebaris-tersembunyi
-fvtable-verify=[std|preinit|tiada] -kira-kira fvtv -fvtv-debug -fvisibility-ms-compat
-fext-numeric-huruf -Wabi=n -Wabi-tag -Wconversion-null -Wctor-dtor-privacy
-Wdelete-bukan-maya-dtor -Imbuhan-akhiran -Wnarrowing -Wnoexcept -Wnon-virtual-dtor
-Wreorder -Weffc++ -Wstrict-null-sentinel -Wno-bukan-template-rakan -Pelakon ala-Wold
-Voverloaded-maya -Wno-pmf-penukaran -Wsign-promo

Objektif-C dan Objektif-C++ Bahasa Pilihan
-fconstant-string-class=nama kelas -fgnu-runtime -fnext-runtime -penerima-fno-nil
-fobjc-abi-version=n -fobjc-call-cxx-cdtors -fobjc-direct-dispatch -fobjc-pengecualian
-fobjc-gc -fobjc-nilcheck -fobjc-std=objc1 -fno-local-ivars
-fivar-keterlihatan=[awam|dilindungi|swasta|pakej] -freplace-objc-classes
-fzero-pautan -gen-decls -Wassign-pintasan -Wno-protokol -Wselector
-Padanan-pemilih-wstrict -Wundeclared-pemilih

Bahasa Bebas Pilihan
-fmessage-length=n -fdiagnostics-show-location=[sekali|setiap baris]
-fdiagnostik-warna=[auto|pernah|sentiasa] -fno-diagnostics-show-option
-fno-diagnostics-show-caret

Amaran Pilihan
-fsyntax sahaja -fmax-errors=n -Wpedantik -kesilapan-pedantik -w -Wextra -Dinding
-Waddress -Waggregate-pulangan -Pengoptimuman-gelung-Waggressive -Warray-bounds
-Warray-bounds=n -Wbool-bandingkan -Wno-atribut -Wno-builtin-makro-ditakrifkan semula
-Wc90-c99-compat -Wc99-c11-compat -Wc++-compat -Wc++11-compat -Wc++14-compat
-Wcast-align -Wcast-qual -Wchar-subskrip -Wclobbered -Wkomen
-Disokong secara bersyarat -Wpenukaran -Wliputan-tidak sepadan -Wtarikh-masa
-Wdelete-tidak lengkap -Wno-cpp -Wno-ditamatkan -Perisytiharan-tidak-ditamatkan
-Wno-designated-init -Wdisabled-optimization -Wno-discarded-qualifiers
-Wno-discarded-array-qualifiers -Wno-div-by-sifar -Wdouble-promotion -Badan kosong
-Wenum-bandingkan -Wno-endif-labels -Werror -Werror=* -Wfatal-kesilapan -Wfloat-sama
-Wformat -Wformat=2 -Wno-format-mengandungi-nul -Wno-format-extra-args
-Wformat-bukan huruf -Wformat-security -Wformat-tandatangan -Wformat-y2k
-Wframe-larger-than=len -Wno-free-nonheap-objek -Wjump-rindu-init
-Wignore-qualifiers -Jenis-penunjuk-Wincompatible -Wimplisit
-Pengisytiharan-fungsi-wimplicit -Wimplicit-int -Winit-diri -Winline
-Wno-int-penukaran -Wno-int-to-pointer-cast -Wno-invalid-offsetof -Winvalid-pch
-Lebih besar daripada=len -Wunsafe-loop-optimizations -Wlogical-op -Wlogical-bukan-kurungan
-Wlong-long -Wmain -Wmungkin-tidak dimulakan -Wmemset-transposed-args -Wmissing-braces
-Wmissing-field-initializers -Wmissing-include-dirs -Wno-multichar -Wnonnull
-Wnormal =[tiada|id|NFC|nfkc]
-Wodr -Wno-limpahan -Wopenmp-simd -Rentetan panjang lebar -Wpacked
-Wpacked-bitfield-compat -Wpadded -Kurungan -Wpedantic-ms-format
-Wno-pedantic-ms-format -Wpointer-arith -Wno-pointer-to-int-cast -Wredundant-decls
-Wno-return-local-addr -jenis wreturn -Wsequence-point -Wshadow -Wno-bayang-ivar
-Wshift-count-negatif -Wshift-count-overflow -Wsign-bandingkan -Wsign-penukaran
-Wfloat-penukaran -Wsizeof-pointer-memaccess -Wsizeof-array-argument
-Wstack-pelindung -Wstack-penggunaan=len -Pengalian ketat -Wstrict-aliasing=n
-Limpahan-terbatas -Limpahan-terbatas=n -Wsuggest-attribute=[tulen|malar|noreturn|format]
-Wsuggest-jenis-akhir -Wcadangkan-kaedah-akhir -Wsuggest-override
-Wmissing-format-attribut -Wswitch -Wswitch-lalai -Wswitch-enum -Wswitch-bool
-Wsync-nand -Wsystem-headers -Wtrampolin -Wtrigraf -Batas jenis -Wundef
-Wuninitialized -Wunknown-pragmas -Wno-pragmas -Wunsuffixed-float-pemalar
-Wunused -Wunused-fungsi -Wunused-label -Wunused-local-typedefs -Wunused-parameter
-Tiada-hasil-tidak digunakan -Wunused-nilai -Wunused-pembolehubah -Wunused-tetapi-set-parameter
-Wunused-tetapi-set-pembolehubah -Wuseless-cast -Wvariadic-makro
-Wvector-operasi-prestasi -Wvla -Wvolatile-register-var -Tulis-tali
-Wzero-sebagai-null-pointer-constant

C dan Objektif-C sahaja Amaran Pilihan
-Wbad-function-cast -Pengisytiharan-Wmissing -Wmissing-parameter-type
-Wmissing-prototaip -Wnested-externs -Pengisytiharan ala-Wold -definisi-gaya-Wold
-Wstrict-prototaip -Wtradisional -Penukaran-tradisional
-Wdeklarasi-selepas-penyataan -Wpointer-tanda

Debugging Pilihan
-dsurat -dumpspek -mesin sampah -pembuangan -fsanitize=gaya -fsanitize-pulih
-fsanitize-recover=gaya -fasan-shadow-offset=nombor
-fsanitize-undefined-trap-on-error -fcheck-pointer-bounds -fchkp-check-incomplete-type
-fchkp-first-field-mempunyai-sempadan-sendiri -fchkp-sempadan-sempit
-fchkp-susun-sempit-ke-paling-dalam -fchkp-optimumkan -fchkp-use-fast-string-functions
-fchkp-use-nochk-string-functions -fchkp-use-static-bounds
-fchkp-use-static-const-bounds -fchkp-merawat-sifar-saiz-dinamik-sebagai-tak terhingga
-fchkp-semak-baca -fchkp-semak-baca -fchkp-semak-tulis -fchkp-kedai-batas
-fchkp-instrumen-panggilan -fchkp-instrumen-ditandakan sahaja -fchkp-gunakan-pembungkus
-fdbg-cnt-senarai -fdbg-cnt=senarai nilai balas -fdisable-ipa-nama_laluan
-fdisable-rtl-nama_laluan -fdisable-rtl-nama pas=senarai julat -fdisable-tree-nama_laluan
-fdisable-tree-nama pas=senarai julat -fdump-noaddr -fdump-tidak bernombor
-fdump-unnumbered-pautan -fdump-terjemahan-unit[-n] -fdump-class-hierarki[-n]
-fdump-ipa-semua -fdump-ipa-cgraph -fdump-ipa-inline -fdump-pas -fdump-statistik
-fdump-tree-semua -fdump-tree-asli[-n] -fdump-tree-dioptimumkan[-n] -fdump-tree-cfg
-fdump-tree-alias -fdump-tree-ch -fdump-tree-ssa[-n] -fdump-tree-pre[-n]
-fdump-tree-ccp[-n] -fdump-tree-dce[-n] -fdump-tree-gimple[-mentah] -fdump-tree-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-tree-sink -fdump-tree-sra[-n] -fdump-tree-forwprop[-n] -fdump-tree-fre[-n]
-fdump-tree-vtable-verify -fdump-tree-vrp[-n] -fdump-tree-storeccp[-n]
-fdump-final-insns=fail -fcompare-debug[=memilih] -fcompare-debug-second
-feliminate-dwarf2-dups -fno-eliminate-unsed-debug-types
-memusnahkan-simbol-debug-tidak digunakan -femit-class-debug-sentiasa -boleh dilawan-jenis-lulus
-boleh dilawan-jenis-lulus=senarai julat -fdebug-types-section -fmem-report-wpa -fmem-laporan
-fpre-ipa-mem-report -fpost-ipa-mem-report -fprofile-arka -fopt-info
-fopt-info-pilihan[=fail] -frandom-seed=nombor -fsched-verbose=n -fsel-sched-verbose
-fsel-sched-dump-cfg -fsel-sched-pipelining-verbose -fstack-penggunaan -perlindungan-ftest
-ftime-laporan -fvar-tracking -fvar-tracking-assignments
-fvar-tracking-assignments-togol -g -gtahap -gtoggle -gcoff -gdwarf-versi -ggdb
-grecord-gcc-suis -gno-record-gcc-suis -gstabs -gstab+ -gstrict-kerdil
-gno-ketat-kerdil -gvms -gxcoff -gxcoff+ -gz[=jenis] -fno-merge-debug-strings
-fno-dwarf2-cfi-asm -fdebug-prefix-map=lama=baru -femit-struct-debug-baseonly
-femit-struct-debug-dikurangkan -femit-struct-debug-detailed[=senarai spesifikasi] -p -pg
-cetak-nama-fail=perpustakaan -print-libgcc-nama-fail -cetak-berbilang-direktori
-cetak-berbilang-lib -print-multi-os-direktori -print-prog-name=program
-print-search-dirs -Q -cetak-sysroot -cetak-sysroot-headers-akhiran -jimat-temps
-save-temps=cwd -save-temps=obj -masa[=fail]

Pengoptimuman Pilihan
-pengoptimuman-gelung-faggressive -falign-functions[=n] -falign-lompat[=n]
-falign-labels[=n] -falign-gelung[=n] -fasosiatif-matematik -fauto-profil
-fauto-profile[=jalan] -fauto-inc-dec -fbranch-kebarangkalian
-fbranch-target-load-optimumkan -fbranch-target-load-optimize2 -fbtr-bb-eksklusif
-fcaller-menjimatkan -fcheck-data-deps -fcombine-stack-adjustments -fconserve-stack
-fcompare-elim -fcprop-mendaftar -fcrossjumping -fcse-ikut-lompat -fcse-skip-blok
-peraturan-fcx-fortran -fcx-julat-terhad -fdata-bahagian -fdce -fdelayed-cawangan
-fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-spekulatif
-fdevirtualize-at-ltrans -fdse -takut-menyerang -fipa-sra -pengoptimuman yang mahal
-ffat-lto-objek -fast-matematik -finite-matematik sahaja -kedai terapung
-fexcess-precision=gaya -maju-sebarkan -ffp-contract=gaya -ffungsi-bahagian
-fgcse -fgcse-selepas-muat semula -fgcse-las -fgcse-lm -identiti-fgrafit -fgcse-sm
-fhoist-bersebelahan-beban -lima-penukaran -lima-penukaran2 -findirect-inlining
-finline-fungsi -fungsi-finline-dipanggil-sekali -had-finline=n
-finline-kecil-fungsi -fipa-cp -fipa-cp-clone -penjajaran-fipa-cp -fipa-pta
-fipa-profil -fipa-pure-const -fipa-rujukan -fipa-icf -fira-algoritma=algoritma
-fira-region=rantau -fira-angkat-tekanan -fira-gelung-tekanan -fno-ira-kongsi-simpan-slot
-fno-ira-share-spill-slot -fira-verbose=n -fisolate-erroneous-paths-dereference
-fisolate-erroneous-paths-attribut -fivopts -fkeep-inline-functions
-fkeep-static-consts -flive-range-pengecutan -blok-floop -pertukaran-floop
-floop-strip-mine -floop-unroll-and-jem -floop-sarang-optimumkan -floop-parallelize-semua
-flra-remat -flto -flto-tahap mampatan -flto-partition=alga -flto-laporan
-flto-report-wpa -fmerge-semua-pemalar -fmerge-pemalar -fmodulo-jadual
-fmodulo-sched-allow-regmoves -fmove-gelung-invariants -fno-cawangan-count-reg
-fno-defer-pop -fno-function-cse -fno-guess-cawangan-kebarangkalian -fno-dalam talian
-fno-math-errno -fno-lubang intip -fno-lubang intip2 -fno-sched-interblock -fno-sched-spec
-fno-signed-sifar -fno-toplevel-reorder -fno-perangkap-matematik
-fno-sifar-dimulakan-dalam-bss -fomit-frame-pointer -foptimize-sibling-panggilan
-fpartial-inlining -fpeel-gelung -fpredictive-commoning -fprefetch-loop-arrays
-fprofile-laporan -fprofile-pembetulan -fprofile-dir=jalan -fprofile-jana
-fprofile-generate=jalan -fprofile-penggunaan -fprofile-use=jalan -nilai-fprofile
-fprofile-atur semula-fungsi -freciprocal-matematik -free -frename-daftar
-sekatan-freorder -freorder-blok-dan-sekat -freorder-fungsi
-frerun-cse-after-gelung -freschedule-modulo-scheduled-gelung -frounding-matematik
-fsched2-use-superblocks -fsched-tekanan -fsched-spec-load
-fsched-spec-load-berbahaya -fsched-stalled-insns-dep[=n] -fsched-stalled-insns[=n]
-fsched-group-heuristic -fsched-critical-path-heuristic -fsched-spec-insn-heuristic
-fsched-rank-heuristic -fsched-last-insn-heuristic -fsched-dep-count-heuristic
-fschedule-fusion -fschedule-inns -fschedule-insns2 -fsection-anchor
-penjadualan-selektif -penjadualan-selektif2 -fsel-sched-pipelining
-fsel-sched-pipelining-outer-gelung -fsemantik-interposisi -fshrink-bungkus
-fsignaling-nans -fsingle-precision-constant -fsplit-ivs-in-unroller
-fsplit-wide-types -fssa-phiopt -fstack-pelindung -fstack-pelindung-semua
-fstack-protector-strong -fstack-protector-explicit -fstdarg-opt -fstrict-aliasing
-fstrict-overflow -fthread-lompat -ftracer -ftree-bit-ccp -ftree-built-call-dce
-tiga-ccp -ftree-ch -ftree-coalesce-inline-vars -ftree-coalesce-vars -free-copy-prop
-ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-forwprop
-free -ftree-gelung-jika-tukar -ftree-loop-if-convert-stores -ftree-gelung-im
-ftree-phiprop -taburan-tiga-gelung -corak-edar-gelung-ftree
-ftree-loop-ivcanon -free-gelung-linear -ftree-loop-optimumkan -free-loop-vectorize
-gelung-parallelize-ftree=n -ftree-pra -ftree-partial-pra -ftree-pta -ftree-assoc
-ftree-sinki -ftree-slsr -ftree-sra -penukaran-ftree-switch -bercantum-ekor-tiga
-ftree-ter -free-vectorize -ftree-vrp -funit-at-a-time -funroll-semua-gelung
-funroll-gelung -funsafe-loop-optimizations -funsafe-math-optimizations
-funswitch-gelung -fipa-ra -fvariable-expansion-in-unroller -model-kos-fvect -fvpt
-fweb -fwhole-program -fwpa -pemalam-penyambung fius --param nama=nilai -O -O0 -O1 -O2
-O3 -Os -Ofast -Og

Prapemproses Pilihan
-Asoalan=menjawab -A-soalan[=menjawab] -C -dD -dI -dM -dN -Dmakro[=defn] -E -H
-idirafter dir -termasuk fail -imacros fail -iprefix fail -idengan awalan dir
-idengan awalan sebelum dir -isistem dir -imultilib dir -isysroot dir -M -MM -MF -MG
-MP -MQ -MT -nostdinc -P -fdebug-cpp -ftrack-makro-pengembangan -fworking-direktori
-peta semula -trigraf -undef -Umakro -Wp,pilihan -Xpreprocessor pilihan -no-integrated-cpp

Pemasang Lebih Baik
-Wa,pilihan -Xassembler pilihan

Pautan Pilihan
nama fail objek -fius-ld=Pautan -lperpustakaan -nostartfiles -nodefaultlibs -nostdlib
-pai -rdinamik -s -statik -statik-libgcc -static-libstdc++ -statik-libasan
-statik-libtsan -statik-liblsan -statik-libubsan -static-libmpx -static-libmpxwrappers
-berkongsi -shared-libgcc -simbolik -T skrip -Wl,pilihan -Xlinker pilihan -u lambang -z
kata kunci

Direktori Pilihan
-Bawalan -Idir -iplugindir=dir -iquotedir -Ldir -spesifikasi=fail -saya- --sysroot=dir
--tidak-sysroot-akhiran

mesin Bergantung Pilihan
AAArch64 Pilihan -mabi=nama -besar-endian -kecil-endian -mgeneral-regs-sahaja
-mcmodel=kecil -mcmodel=kecil -mcmodel=besar -mstrict-align -petunjuk-bingkai-daun-momit
-mno-omit-leaf-frame-pointer -mtls-dialect=desc -mtls-dialect=tradisional
-mfix-cortex-a53-835769 -mno-fix-cortex-a53-835769 -mfix-cortex-a53-843419
-mno-fix-cortex-a53-843419 -march=nama -mcpu=nama -mtune=nama

Adapteva Epiphany Pilihan -mhalf-reg-file -prefer-short-insn-regs -kos-mbranch=num
-mcmove -mnops=num -msoft-cmpsf -msplit-lohi -mpost-inc -mpost-ubah suai
-mstack-offset=num -mround-terdekat -mlong-panggilan -msshort-panggilan -msmall16 -mfp-mod=mod
-mvect-double -max-vect-align=num -msplit-vecmove-awal -m1reg-reg

ARC Pilihan -penukar mbarrel -mcpu=cpu -mA6 -mARC600 -mA7 -mARC700 -mdpfp
-mdpfp-compact -mdpfp-cepat -mno-dpfp-lrsr -mea -mno-mpy -mmul32x16 -mmul64 -biasa
-mspfp -mspfp-padat -mspfp-cepat -msimd -msoft-float -mswap -mcrc -mdsp-packa -mdvbf
-mlock -mmac-d16 -mmac-24 -mrtsc -mswape -mtelefoni -mxy -misize -mannotate-align
-marclinux -marclinux_prof -mepilog-cfi -mlong-panggilan -medium-panggilan -msdata
-mucb-mcount -mvolatile-cache -panggilan-malign -mauto-modify-reg -mbbit-lubang intip -mno-brcc
-mcase-vector-pcrel -mcompact-casesi -mno-cond-exec -bercabang-cbranchsi -mexpand-adddi
-mindexed-loads -mlra -mlra-keutamaan-tiada -mlra-keutamaan-padat keutamaan-mlra-
tidak padat -mno-milicode -kod bercampur -mq-kelas -mRcq -mRcw -msize-level=tahap
-mtune=cpu -multcost=num -munalign-prob-threshold=kebarangkalian

ARM Pilihan -mapcs-bingkai -mno-apcs-bingkai -mabi=nama -mapcs-stack-check
-mno-apcs-stack-check -mapcs-terapung -mno-apcs-float -mapcs-reentrant
-mno-apcs-reentrant -msched-prolog -mno-sched-prolog -kecil-endian -besar-endian
-mfloat-abi=nama -mfp16-format=nama -mthumb-interwork -mno-thumb-interwork -mcpu=nama
-march=nama -mfpu=nama -mtune=nama -mprint-tune-info -sempadan-saiz-struktur=n
-mabort-on-noreturn -mlong-panggilan -mno-long-panggilan -msingle-pic-base
-mno-single-pic-base -mpic-register=reg -mnop-fun-dllimport -nama-fungsi-mpoke
-ibu jari -marm -mtpcs-bingkai -mtpcs-bingkai-daun -mcaller-super-interworking
-mcallee-super-interworking -mtp=nama -mtls-dialek=dialek -mword-relocations
-mfix-korteks-m3-ldrd -munaligned-akses -mneon-untuk-64bit -mslow-flash-data
-masm-sintaks-disatukan -menghalang-itu

AVR Pilihan -mmcu=mcu -maccumulate-args -kos-mbranch=kos -mcall-prolog -pudina8
-mn_flash=saiz -mno-gangguan -relax -mrmw -mstrict-X -mtiny-stack -nodevicelib
-Waddr-ruang-tukar

Sirip hitam Pilihan -mcpu=cpu[-sirevision] -msim -petunjuk-bingkai-daun-momit
-mno-omit-leaf-frame-pointer -mspecld-anomali -mno-specld-anomali -mcsync-anomali
-mno-csync-anomali -mlow-64k -mno-rendah64k -mstack-check-l1 -perpustakaan-perkongsian pertengahan
-mno-id-shared-library -mshared-library-id=n -mleaf-id-shared-library
-mno-leaf-id-shared-library -msep-data -mno-sep-data -mlong-panggilan -mno-long-panggilan
-mfast-fp -minline-plt -multicore -mcorea -mcoreb -msdram -micplb

C6X Pilihan -besar-endian -kecil-endian -march=cpu -msim -msdata=jenis sdata

CRIS Pilihan -mcpu=cpu -march=cpu -mtune=cpu -mmax-stack-frame=n
-melinux-stacksize=n -metrax4 -metrax100 -mpdebug -mcc-init -mno-kesan sampingan
-mstack-align -mdata-align -mconst-align -m32-bit -m16-bit -m8-bit
-mno-prolog-epilog -mno-gotplt -melf -maout -melinux -mlinux -sim -sim2
-mmul-bug-workaround -mno-mul-bug-workaround

CR16 Pilihan -mmac -mcr16cplus -mcr16c -msim -pudina32 -mbit-ops -mdata-model=model

Darwin Pilihan -semua_muat -allowable_client -gerbang -arch_errors_fatal -arch_only
-ikat_pada_beban -berikat -bundle_loader -nama pelanggan -versi_keserasian
-versi terkini -jalur_mati -fail-bergantung -dylib_file -dylinker_install_name
-dinamik -dynamiclib -exported_symbols_list -senarai fail -ruang nama_flat
-force_cpusubtype_ALL -force_flat_namespace -headerpad_max_install_names -iframework
-dasar_imej -di dalamnya -nama_pasang -keep_private_externs -multi_module
-multiply_defined -multiply_defined_unused -noall_load
-no_dead_strip_inits_and_terms -nofixprebinding -nomultidef -noprebind
-noseglinkedit -pagezero_size -prebind -prebind_all_twolevel_modules -private_bundle
-baca_sahaja_relok -sectalign -sectobjectsymbols -kenapa beban -seg1addr -sectcreate
-sectobjectsymbols -sektor -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 -modul_tunggal -statik -sub_library -sub_umbrella
-ruang nama_duatingkat -payung -tidak ditentukan -senarai_simbol_tidak dieksport
-ketakpadanan_rujukan_lemah -whatsloaded -F -berani -gfull -mmacosx-version-min=versi
-mkernel -mone-bait-bool

Disember Alfa Pilihan -mno-fp-regs -msoft-float -meeee -mieee-dengan-tak tepat
-mieee-conformant -mfp-trap-mode=mod -mfp-rounding-mode=mod -mtrap-precision=mod
-membina-pemalar -mcpu=jenis cpu -mtune=jenis cpu -mbwx -maks -mfix -mcix
-mfloat-vax -mfloat-ieee -eksplisit-reloks -msmall-data -mlarge-data -msmall-text
-mlarge-text -mmemory-latensi=masa

FR30 Pilihan -msmall-model -mno-lsim

FRV Pilihan -mgpr-32 -mgpr-64 -mfpr-32 -mfpr-64 -mhard-terapung -msoft-float
-mallok-cc -mfixed-cc -mdword -mno-dword -mdouble -mno-double -mmedia -mno-media
-mmuladd -mno-muladd -mfdpic -minline-plt -mgprel-ro -multilib-library-pic
-mlinked-fp -mlong-panggilan -label-malign -mlibrary-pic -macc-4 -macc-8 -pek
-mno-pack -mno-bendera -mcond-move -mno-cond-move -mengoptimumkan-membar
-mno-optimum-membar -mscc -mno-scc -mcond-exec -mno-cond-exec -mvliw-cawangan
-mno-vliw-cawangan -mmulti-cond-exec -mno-multi-cond-exec -mnested-cond-exec
-mno-nested-cond-exec -mtomcat-stats -mTLS -mtls -mcpu=cpu

GNU / Linux Pilihan -mglibc -muclibc -mbionik -android -tno-android-cc -tno-android-ld

H8 / 300 Pilihan -relax -mh -Cik -mn -mexr -mno-exr -pudina32 -malign-300

HPPA Pilihan -march=jenis seni bina -lumpuhkan-fpregs -lumpuhkan-pengindeksan
-mfast-indirect-panggilan -mgas -mgnu-ld -mhp-ld -mfixed-range=julat daftar
-mlompat-dalam-kelewatan -mlinker-opt -mlong-panggilan -mlong-load-store -mno-disable-fpregs
-mno-disable-indexing -mno-fast-indirect-panggilan -mno-gas -mno-lompat-dalam-kelewatan
-mno-long-load-stor -mno-portable-runtime -mno-soft-float -mno-space-regs
-msoft-float -mpa-risc-1-0 -mpa-risc-1-1 -mpa-risc-2-0 -mportable-runtime
-mschedule=jenis cpu -mspace-regs -msio -mwsio -munix=unix-std -nolibdld -statik
-benang

IA-64 Pilihan -besar-endian -kecil-endian -mgnu-as -mgnu-ld -mno-pic
-mvolatile-asm-stop -mendaftar-nama -msdata -mno-sdata -mconstant-gp -mauto-pic
-mfused-gila -minline-float-divide-min-latency -minline-float-divide-max-throughput
-mno-inline-float-divide -minline-int-divide-min-latency
-minline-int-divide-max-throughput -mno-inline-int-divide -minline-sqrt-min-latency
-minline-sqrt-max-throughput -mno-inline-sqrt -mdwarf2-asm -mearly-stop-bits
-mfixed-range=julat daftar -saiz-mtls=saiz tls -mtune=jenis cpu -milp32 -mlp64
-msched-br-data-spec -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-bukan-data-spec-inns
-msched-prefer-non-control-spec-insns -msched-stop-bits-selepas-setiap-kitaran
-msched-count-spec-in-critical-path -msel-sched-dont-check-control-spec
-msched-fp-mem-deps-sifar-kos -msched-max-memory-insns-hard-had
-msched-max-memory-insns=max-inns

LM32 Pilihan -anjakan-mbarrel-didayakan -mdivide-enabled -membiak-didayakan
-msign-extend-enabled -didayakan muser

M32R/D Pilihan -m32r2 -m32rx -m32r -mdebug -malign-gelung -mno-align-gelung
-kadar kesilapan=nombor -kos-mbranch=nombor -mmodel=kod-saiz-model-jenis -msdata=sdata-
jenis -mno-flush-func -mflush-func=nama -mno-flush-perangkap -mflush-trap=nombor -G num

M32C Pilihan -mcpu=cpu -msim -memgregs=nombor

M680x0 Pilihan -march=gerbang -mcpu=cpu -mtune=lagu -m68000 -m68020 -m68020-40
-m68020-60 -m68030 -m68040 -m68060 -mcpu32 -m5200 -m5206e -m528x -m5307 -m5407
-mcfv4e -mbitfield -mno-bitfield -mc68000 -mc68020 -mnobitfield -mrtd -mno-rtd
-mdiv -mno-div -mspendek -mno-pendek -mhard-terapung -m68881 -msoft-float -mpcrel
-malign-int -mstrict-align -msep-data -mno-sep-data -mshared-library-id=n
-perpustakaan-perkongsian pertengahan -mno-id-shared-library -mxgot -mno-xgot

MCore Pilihan -mhardlit -mno-lampu tegar -mdiv -mno-div -mrelax-segera
-mno-santai-segera -mwide-bitfields -mno-wide-bitfields -m4byte-fungsi
-mno-4bait-fungsi -mcallgraph-data -mno-callgraph-data -mslow-bait
-mno-slow-bait -mno-lsim -kecil-endian -besar-endian -m210 -m340
-mstack-increment

MeP Pilihan -mabsdiff -mall-opts -maverage -mbased=n -mbitops -mc=n -mclip
-mconfig=nama -mcop -mcop32 -mcop64 -mivc2 -mdc -mdiv -meb -mel -mio-volatile -ml
-mleadz -mm -mminmax -mult -mno-opts -ulang -Cik -msatur -msdram -msim -msimnovec
-mtf -mtiny=n

MicroBlaze Pilihan -msoft-float -mhard-terapung -msmall-membahagikan -mcpu=cpu -mmemcpy
-mxl-soft-mul -mxl-soft-div -mxl-barrel-shift -mxl-pattern-compare -mxl-stack-check
-mxl-gp-opt -mno-clearbss -mxl-darab-tinggi -mxl-float-convert -mxl-float-sqrt
-besar-endian -kecil-endian -mxl-susun semula -mxl-mod-model aplikasi

MIPS Pilihan -EL -EB -march=gerbang -mtune=gerbang -mips1 -mips2 -mips3 -mips4
-mips32 -mips32r2 -mips32r3 -mips32r5 -mips32r6 -mips64 -mips64r2 -mips64r3
-mips64r5 -mips64r6 -mips16 -mno-mips16 -mflip-mips16 -minterlink-mampat
-mno-interlink-compressed -minterlink-mips16 -mno-interlink-mips16 -mabi=abi
-mabicalls -mno-abicalls -mshared -mno-kongsi -mplt -mno-plt -mxgot -mno-xgot
-mgp32 -mgp64 -mfp32 -mfpxx -mfp64 -mhard-terapung -msoft-float -mno-float
-msingle-float -mdouble-float -modd-spreg -mno-ganjil-spreg -mabs=mod -mnan=pengekodan
-mdsp -mno-dsp -mdspr2 -mno-dspr2 -mmcu -mmno-mcu -meva -mno-eva -mvirt -mno-virt
-mxpa -mno-xpa -micromips -mno-mikromip -mfpu=jenis fpu -msmartmips -mno-smartmips
-bermasalah-bujang -mno-berpasangan-bujang -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
-benam-data -mno-embedded-data -muninit-const-in-rodata
-mno-uninit-const-in-rodata -mcode-readable=menetapkan -msplit-alamat
-mno-split-alamat -eksplisit-reloks -mno-explicit-relocs -mcheck-sifar-bahagian
-mno-check-sifar-bahagian -mbahagi-perangkap -mbahagi-pecah -mmemcpy -mno-memcpy
-mlong-panggilan -mno-long-panggilan -mmad -mno-gila -mimadd -mno-imadd -mfused-gila
-mno-fused-madd -nocpp -mfix-24k -mno-fix-24k -mfix-r4000 -mno-fix-r4000
-mfix-r4400 -mno-fix-r4400 -mfix-r10000 -mno-fix-r10000 -mfix-rm7000 -mno-fix-rm7000
-mfix-vr4120 -mno-fix-vr4120 -mfix-vr4130 -mno-fix-vr4130 -mfix-sb1 -mno-fix-sb1
-mflush-func=func -mno-flush-func -kos-mbranch=num -berkemungkinan besar
-mno-cawangan-kemungkinan -mfp-exceptions -mno-fp-exceptions -mvr4130-align -mno-vr4130-align
-msynci -mno-synci -mrelax-pic-calls -mno-santai-gambar-panggilan -mmcount-ra-alamat

MMIX Pilihan -mlibfuncs -mno-libfuncs -mepsilon -mno-epsilon -mabi=gnu
-mabi=mmixware -mzero-lanjutkan -mknuthdiv -simbol-mtoplevel -melf -mbranch-ramalkan
-mno-cawangan-ramalkan -mbase-alamat -mno-base-alamat -msingle-keluar
-mno-tunggal-keluar

MN10300 Pilihan -mult-bug -mno-mult-bug -mno-am33 -mam33 -mam33-2 -mam34 -mtune=CPU-
jenis -mreturn-pointer-on-d0 -mno-crt0 -relax -mliw -msetlb

Moxie Pilihan -meb -mel -mmul.x -mno-crt0

MSP430 Pilihan -msim -masm-hex -mmcu= -mcpu= -mbesar -msmall -relax -mhwmult= -minrt

NDS32 Pilihan -besar-endian -kecil-endian -reduced-regs -mfull-regs -mcmov -mno-cmov
-perf-ext -mno-perf-ext -mv3push -mno-v3push -m16bit -mno-16bit -saiz-vektor-misr=num
-mcache-block-size=num -march=gerbang -mcmodel=model kod -mctor-dtor -relax

Nios II Pilihan -G num -mgpopt=pilihan -mgpopt -mno-gpopt -mel -meb -mno-bypass-cache
-mbypass-cache -mno-cache-volatile -mcache-volatile -mno-fast-sw-div -mfast-sw-div
-mhw-mul -mno-hw-mul -mhw-mulx -mno-hw-mulx -mno-hw-div -mhw-div -biasa-rumah penginapan=N
-mno-adat-rumah penginapan -mcustom-fpu-cfg=nama -mhal -msmallc -msys-crt0=nama -msys-lib=nama

Nvidia PTX Pilihan -m32 -m64 -mmainkernel

PDP-11 Pilihan -mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10 -mbcopy
-mbcopy-builtin -pudina32 -mno-int16 -pudina16 -mno-int32 -mfloat32 -mno-float64
-mfloat64 -mno-float32 -mabshi -mno-abshi -mbranch-mahal -mbranch-murah
-munix-asm -mdec-asm

picoChip Pilihan -mae=ae_type -mvliw-lookahead=N -msymbol-as-alamat
-mno-tidak cekap-amaran

PowerPC Pilihan Lihat Pilihan RS/6000 dan PowerPC.

RL78 Pilihan -msim -mmul=tiada -mmul=g13 -mmul=rl78 -m64bit-ganda -m32bit-ganda

RS / 6000 dan PowerPC Pilihan -mcpu=jenis cpu -mtune=jenis cpu -mcmodel=model kod
-mpowerpc64 -maltifc -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-hard-dfp -mfull-toc -minimal-toc -mno-fp-in-toc -mno-sum-in-toc
-m64 -m32 -mxl-compat -mno-xl-compat -mpe -kuasa jahat -malign-natural
-msoft-float -mhard-terapung -berbilang -mno-berbilang -msingle-float -mdouble-float
-msimple-fpu -mstring -mno-rentetan -mupdate -mno-kemas kini -mavoid-diindeks-alamat
-mno-avoid-indexed-addresses -mfused-gila -mno-fused-madd -mbit-align
-mno-bit-align -mstrict-align -mno-strict-align -boleh dipindahkan -mno-boleh dipindahkan
-mrelocatable-lib -mno-relocatable-lib -mtoc -mno-toc -sedikit -kecil-endian
-besar -besar-endian -mdynamic-no-pic -maltifc -mswdiv -msingle-pic-base
-utamakan-terhad-inns=keutamaan -msched-costly-dep=jenis_pergantungan
-minsert-sched-nops=skim -mcall-sysv -mcall-netbsd -maix-struct-return
-msvr4-struct-return -mabi=jenis abi -msecure-plt -mbss-plt
-mblock-move-inline-limit=num -misel -mno-isel -misel=ya -misel=tidak -mspe -mno-spe
-mspe=ya -mspe=tidak -bermasalah -mgen-sel-mikrokod -mwarn-sel-mikrokod -mvrsave
-mno-vrsave -mmulhw -mno-mulhw -mdlmzb -mno-dlmzb -mfloat-gprs=ya -mfloat-gprs=no
-mfloat-gprs=single -mfloat-gprs=double -prototaip -mno-prototaip -msim -mmvme
-gila -pisau myellow -memb -msdata -msdata=pilih -mvxworks -G num -pthread -mrecip
-mrecip=pilih -mno-resipi -mrecip-precision -mno-resip-ketepatan -mveclibabi=jenis -mfriz
-mno-friz -penunjuk-ke-fungsi-bersarang -mno-penunjuk-ke-fungsi-bersarang
-msave-toc-indirect -mno-save-toc-indirect -mpower8-fusion -mno-mpower8-fusion
-mpower8-vektor -mno-kuasa8-vektor -mcrypto -mno-crypto -mdirect-move -mno-direct-move
-mquad-memori -mno-quad-memori -mquad-memori-atom -mno-quad-memory-atom
-mcompat-align-parm -mno-compat-align-parm -mupper-regs-df -mno-upper-regs-df
-mupper-regs-sf -mno-atas-regs-sf -mupper-regs -mno-atas-regs

RX Pilihan -m64bit-ganda -m32bit-ganda -fpu -nofpu -mcpu= -big-endian-data
-sedikit-endian-data -msmall-data -msim -mno-sim -mas100-sintaks -mno-as100-sintaks
-relax -mmax-saiz-malar= -daftar-mint= -mpid -mno-warn-multiple-fast-interrupts
-msave-acc-in-interrupts

S / 390 dan zSeries Pilihan -mtune=jenis cpu -march=jenis cpu -mhard-terapung -msoft-float
-mhard-dfp -mno-hard-dfp -mlong-double-64 -mlong-double-128 -rantai belakang
-mno-rantai belakang -tumpukan-berbungkus -mno-packed-stack -msmall-exec -mno-small-exec
-mmvcle -mno-mvcle -m64 -m31 -mdebug -mno-debug -mesa -mzarch -mtpf-jejak
-mno-tpf-trace -mfused-gila -mno-fused-madd -mwarn-saiz bingkai -mwarn-dynamicstack
-saiz mstack -mstack-guard -mhotpatch=separuh perkataan,separuh perkataan

Skor Pilihan -meb -mel -mnhwloop -muls -mmac -mscore5 -mscore5u -mscore7 -mscore7d

SH Pilihan -m1 -m2 -m2e -m2a-nofpu -m2a-bujang-sahaja -m2a-tunggal -m2a -m3 -m3e
-m4-nofpu -m4-tunggal-sahaja -m4-tunggal -m4 -m4a-nofpu -m4a-bujang-sahaja -m4a-tunggal
-m4a -m4al -m5-64media -m5-64media-nofpu -m5-32media -m5-32media-nofpu -m5-padat
-m5-compact-nofpu -mb -ml -mdalign -relax -boleh jadi besar -mfmovd -mhitachi -mrenesas
-mno-renesas -mnomacsave -meeee -mno-ieee -mbitops -misize -minline-ic_invalidate
-mpadstruct -mspace -prefergot -musermode -multcost=nombor -mdiv=strategi
-mdivsi3_libfunc=nama -mfixed-range=julat daftar -mindexed-addressing
-mgettrcost=nombor -mpt-tetap -maccumulate-outgoing-args -simbol-minvalid
-model-matomik=model atom -kos-mbranch=num -mzdcbranch -mno-zdcbranch
-mcbranch-force-delay-slot -mfused-gila -mno-fused-madd -mfsca -mno-fsca -mfsrra
-mno-fsrra -berpura-pura-cmove -mtas

Solaris 2 Pilihan -mclear-hwcap -mno-clear-hwcap -teks najis -mno-najis-teks
-pthreads -pthread

SPARC Pilihan -mcpu=jenis cpu -mtune=jenis cpu -mcmodel=model kod -mmemory-model=mem-
model -m32 -m64 -mapp-regs -mno-app-regs -mfaster-structs -mno-faster-structs
-mflat -mno-flat -mfpu -mno-fpu -mhard-terapung -msoft-float -mhard-quad-float
-msoft-quad-float -mstack-bias -mno-stack-bias -munaligned-double
-mno-tidak selaras-beregu -mod-muser -mno-mod-pengguna -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 Pilihan -mwarn-reloc -merror-reloc -msafe-dma -munsafe-dma -petunjuk-mbranch
-msmall-mem -mlarge-mem -mstdmain -mfixed-range=julat daftar -mea32 -mea64
-penukaran-ruang-maddress -mno-address-space-conversion -saiz-mcache=saiz cache
-kemas kini-matomik -mno-atomic-kemas kini

sistem V Pilihan -Qy -Qn -YP,laluan -Ym,dir

TILE-Gx Pilihan -mcpu=CPU -m32 -m64 -besar-endian -kecil-endian -mcmodel=model kod

TILEPro Pilihan -mcpu=cpu -m32

V850 Pilihan -mlong-panggilan -mno-long-panggilan -mep -mno-ep -mprolog-fungsi
-mno-prolog-fungsi -mspace -mtda=n -msda=n -mzda=n -mapp-regs -mno-app-regs
-lumpuhkan-panggilan -mno-disable-callt -mv850e2v3 -mv850e2 -mv850e1 -mv850es -mv850e
-mv850 -mv850e3v5 -mloop -relax -mlong-lompat -msoft-float -mhard-terapung -mgcc-abi
-mrh850-abi -suis besar

VAX Pilihan -mg -mgnu -munix

Visium Pilihan -mdebug -msim -mfpu -mno-fpu -mhard-terapung -msoft-float -mcpu=jenis cpu
-mtune=jenis cpu -msv-mod -mod-muser

VMS Pilihan -mvms-return-codes -mdebug-utama=awalan -mmalloc64 -saiz penunjuk=saiz

Kerja Vx Pilihan -mrtp -tidak statik -Bstatik -Bdinamik -Xbind-malas -Xbind-sekarang

x86 Pilihan -mtune=jenis cpu -march=jenis cpu -mtune-ctrl=senarai ciri
-mdump-tune-features -mno-lalai -mfpmath=unit -masm=dialek -mno-fancy-math-387
-mno-fp-ret-in-387 -msoft-float -mno-luas-darab -mrtd -malign-double
-sempadan-timbunan-pilihan=num -sempadan-tindanan-mincoming=num -mcld -mcx16 -msahf
-mmovbe -mcrc32 -mrecip -mrecip=pilih -mvzeroupper -prefer-avx128 -mmmx -msse -msse2
-msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -mavx -mavx2 -mavx512f -mavx512pf -mavx512er
-mavx512cd -msha -maes -mpclmul -mfsgsbase -mrdrnd -mf16c -mfma -mprefetchwt1
-mclflushopt -mxsavec -mxsaves -msse4a -m3dnow -mpopcnt -mabm -mbmi -mtbm -mfma4 -mxop
-mlzcnt -mbmi2 -mfxsr -mxsave -mxsaveopt -mrtm -mlwp -mmpx -mmwaitx -mthreads
-mno-align-stringops -minline-semua-stringops -minline-stringops-dinamik
-mstringop-strategi=alga -mmemcpy-strategi=strategi -mmemset-strategi=strategi
-push-args -maccumulate-outgoing-args -m128bit-long-double -m96bit-long-double
-mlong-double-64 -mlong-double-80 -mlong-double-128 -mregparm=num -msseregparm
-mveclibabi=jenis -mvect8-ret-in-mem -mpc32 -mpc64 -mpc80 -mstackrealign
-petunjuk-bingkai-daun-momit -mno-red-zon -mno-tls-direct-seg-refs -mcmodel=model kod
-mabi=nama -mod-maddress=mod -m32 -m64 -mx32 -m16 -mlarge-data-threshold=num
-msse2avx -mfentry -mrecord-mcount -mnop-mcount -m8bit-idiv
-mavx256-split-unaligned-load -mavx256-split-unaligned-store -malign-data=jenis
-mstack-protector-guard=pengawal

x86 Windows Pilihan -mconsole -mcygwin -mno-cygwin -mdll -mnop-fun-dllimport -mthread
-municode -mwin32 -mwindows -fno-set-stack-executable

Xstormy16 Pilihan -msim

Xtensa Pilihan -mconst16 -mno-const16 -mfused-gila -mno-fused-madd -mforce-no-pic
-mserialize-volatile -mno-serialize-volatile -mtext-section-literals
-mno-text-section-literals -mtarget-align -mno-target-align -mlongcalls
-mno-panggilan panjang

zSeries Pilihan Lihat Pilihan S/390 dan zSeries.

Kod Generasi Pilihan
-fcall-disimpan-reg -fcall-digunakan-reg -diikat-reg -pengecualian -fnon-panggilan-pengecualian
-fdelete-mati-pengecualian -funwind-meja -fasynchronous-unwind-tables -fno-gnu-unik
-arahan saiz-finhibit -fungsi-alatan
-finstrument-functions-exclude-function-list=sym,sym, ...
-finstrument-functions-exclude-file-list=fail,fail, ... -fno-biasa -fno-ident
-fpcc-struct-return -fpic -fPIC -fpie -fPIE -fno-jump-tables -frecord-gcc-suis
-freg-struct-return -fshort-enums -fsshort-double -fshort-wchar -fverbose-asm
-fpack-struct[=n] -fstack-check -fstack-limit-register=reg -fstack-limit-symbol=sym
-fno-stack-had -fsplit-stack -fleading-garis bawah -ftls-model=model
-fstack-reuse=reuse_level -ftrapv -fwrapv -fbounds-semak
-kebolehlihatan=[lalai|dalaman|tersembunyi|dilindungi] -fstrict-volatile-bitfields
-fsync-libcalls

Pilihan Mengawal yang Kanak-kanak of Output
Penyusunan boleh melibatkan sehingga empat peringkat: prapemprosesan, penyusunan betul, pemasangan dan
memaut, sentiasa dalam susunan itu. GCC mampu memproses dan menyusun beberapa
fail sama ada ke dalam beberapa fail input pemasang, atau ke dalam satu fail input pemasang; kemudian
setiap fail input pemasang menghasilkan fail objek, dan pemautan menggabungkan semua objek
fail (yang baru disusun, dan yang dinyatakan sebagai input) ke dalam fail boleh laku.

Untuk mana-mana fail input yang diberikan, akhiran nama fail menentukan jenis kompilasi
selesai:

fail.c
C kod sumber yang mesti dipraproses.

fail.i
C kod sumber yang tidak seharusnya dipraproses.

fail.ii
Kod sumber C++ yang tidak sepatutnya dipraproses.

fail.m
Kod sumber Objektif-C. Ambil perhatian bahawa anda mesti memaut dengan libobjc perpustakaan untuk membuat an
Kerja program Objektif-C.

fail.mi
Kod sumber Objektif-C yang tidak boleh dipraproses.

fail.mm
fail.M
Kod sumber Objektif-C++. Ambil perhatian bahawa anda mesti memaut dengan libobjc perpustakaan untuk dibuat
kerja program Objective-C++. Perhatikan bahawa .M merujuk kepada huruf besar huruf M.

fail.mii
Kod sumber Objektif-C++ yang tidak seharusnya dipraproses.

fail.h
Fail pengepala C, C++, Objective-C atau Objective-C++ untuk ditukar menjadi prapengumpulan
pengepala (lalai), atau fail pengepala C, C++ untuk ditukar menjadi spec Ada (melalui fail
-fdump-ada-spec suis).

fail. Cc
fail.cp
fail.cxx
fail.cpp
fail.CPP
fail.c++
fail.C
Kod sumber C++ yang mesti dipraproses. Perhatikan bahawa dalam .cxx, dua huruf terakhir
mesti kedua-duanya secara literal x. Begitu juga, .C merujuk kepada huruf besar C.

fail.mm
fail.M
Kod sumber Objektif-C++ yang mesti dipraproses.

fail.mii
Kod sumber Objektif-C++ yang tidak seharusnya dipraproses.

fail.hh
fail.H
fail.hp
fail.hxx
fail.hpp
fail.HPP
fail.h++
fail.tcc
Fail pengepala C++ untuk ditukar menjadi pengepala tersusun atau spesifikasi Ada.

fail.f
fail.untuk
fail.ftn
Kod sumber Fortran bentuk tetap yang tidak boleh dipraproses.

fail.F
fail.UNTUK
fail.fpp
fail.FPP
fail.FTN
Borang tetap kod sumber Fortran yang mesti dipraproses (dengan kod tradisional
prapemproses).

fail.f90
fail.f95
fail.f03
fail.f08
Kod sumber Fortran bentuk percuma yang tidak boleh dipraproses.

fail.F90
fail.F95
fail.F03
fail.F08
Kod sumber Fortran bentuk bebas yang mesti dipraproses (dengan kod tradisional
prapemproses).

fail.pergi
Pergi kod sumber.

fail.ad
Ada fail kod sumber yang mengandungi pengisytiharan unit perpustakaan (pengisytiharan a
pakej, subprogram, atau generik, atau instantiasi generik), atau unit perpustakaan
menamakan semula perisytiharan (pakej, generik atau subprogram perisytiharan penamaan semula). begitu
fail juga dipanggil ciri-ciri komputer.

fail.adb
Terdapat fail kod sumber yang mengandungi badan unit perpustakaan (subprogram atau badan pakej).
Fail sedemikian juga dipanggil badan-badan.

fail.s
Kod pemasang.

fail.S
fail.sx
Kod pemasang yang mesti dipraproses.

lain
Fail objek untuk dimasukkan terus ke dalam pautan. Mana-mana nama fail tanpa dikenali
akhiran diperlakukan dengan cara ini.

Anda boleh menentukan bahasa input secara eksplisit dengan -x pilihan:

-x bahasa
Nyatakan secara eksplisit bahasa untuk fail input berikut (daripada membiarkan fail
pengkompil memilih lalai berdasarkan akhiran nama fail). Pilihan ini terpakai kepada semua
mengikuti fail input sehingga seterusnya -x pilihan. Nilai yang mungkin untuk bahasa ialah:

c c-header cpp-output
c++ c++-header c++-cpp-output
objektif-c objektif-c-header objektif-c-cpp-output
objektif-c++ objektif-c++-header objektif-c++-cpp-output
pemasang pemasang-dengan-cpp
Ada
f77 f77-cpp-input f95 f95-cpp-input
go
Java

-x tiada
Matikan sebarang spesifikasi bahasa, supaya fail berikutnya dikendalikan
mengikut akhiran nama fail mereka (seperti jika -x tidak digunakan sama sekali).

-kod-laluan-keluar
Kebiasaannya gcc program keluar dengan kod 1 jika mana-mana fasa pengkompil kembali
kod pulangan yang tidak berjaya. Jika anda nyatakan -kod-laluan-keluar, yang gcc program sebaliknya
kembali dengan ralat tertinggi secara berangka yang dihasilkan oleh mana-mana fasa yang mengembalikan ralat
petunjuk. Hujung hadapan C, C++ dan Fortran mengembalikan 4 jika ralat pengkompil dalaman
ditemui.

Jika anda hanya mahukan beberapa peringkat penyusunan, anda boleh gunakan -x (atau akhiran nama fail)
untuk memberitahu gcc di mana untuk bermula, dan salah satu pilihan -c, -S, Atau -E untuk mengatakan di mana gcc adalah untuk
berhenti. Ambil perhatian bahawa beberapa kombinasi (contohnya, -x cpp-output -E) mengarahkan gcc untuk melakukan
tiada apa-apa pun.

-c Susun atau kumpulkan fail sumber, tetapi jangan pautkan. Peringkat penghubung adalah
tidak siap. Output muktamad adalah dalam bentuk fail objek untuk setiap fail sumber.

Secara lalai, nama fail objek untuk fail sumber dibuat dengan menggantikan akhiran .c,
.i, .s, dsb., dengan .o.

Fail input yang tidak dikenali, tidak memerlukan kompilasi atau pemasangan, diabaikan.

-S Berhenti selepas peringkat penyusunan yang betul; jangan berhimpun. Keluaran adalah dalam
bentuk fail kod pemasang untuk setiap fail input bukan pemasang yang ditentukan.

Secara lalai, nama fail pemasang untuk fail sumber dibuat dengan menggantikan akhiran
.c, .i, dsb., dengan .s.

Fail input yang tidak memerlukan kompilasi diabaikan.

-E Berhenti selepas peringkat prapemprosesan; jangan jalankan pengkompil dengan betul. Outputnya masuk
bentuk kod sumber praproses, yang dihantar ke output standard.

Fail input yang tidak memerlukan prapemprosesan diabaikan.

-o fail
Letakkan output dalam fail fail. Ini terpakai kepada apa-apa jenis output yang dihasilkan,
sama ada fail boleh laku, fail objek, fail pemasang atau C yang telah dipraproses
kod.

If -o tidak ditentukan, lalainya ialah meletakkan fail boleh laku a. keluar, objek itu
fail untuk sumber.akhiran in sumber.o, fail pemasangnya masuk sumber.s, precompiled
fail pengepala masuk source.suffix.gch, dan semua sumber C praproses pada output standard.

-v Cetak (pada output ralat standard) arahan yang dilaksanakan untuk menjalankan peringkat
kompilasi. Cetak juga nombor versi program pemacu pengkompil dan
prapemproses dan pengkompil yang betul.

-###
suka -v kecuali arahan tidak dilaksanakan dan hujah dipetik melainkan mereka
mengandungi hanya aksara abjad angka atau "./-_". Ini berguna untuk skrip shell
menangkap baris arahan yang dijana pemandu.

-paip
Gunakan paip dan bukannya fail sementara untuk komunikasi antara pelbagai peringkat
kompilasi. Ini gagal berfungsi pada beberapa sistem yang pemasang tidak dapat membaca
dari paip; tetapi pemasang GNU tidak mempunyai masalah.

- membantu
Cetak (pada output standard) penerangan tentang pilihan baris arahan yang difahami oleh
gcc. Jika -v pilihan juga dinyatakan kemudian - membantu juga diteruskan kepada pelbagai
proses yang dipanggil oleh gcc, supaya mereka boleh memaparkan pilihan baris perintah mereka
terima. Sekiranya -Wextra pilihan juga telah ditentukan (sebelum - membantu pilihan),
maka pilihan baris arahan yang tidak mempunyai dokumentasi yang berkaitan dengannya juga
dipaparkan.

--sasaran-bantuan
Cetak (pada output standard) perihalan pilihan baris arahan khusus sasaran
untuk setiap alat. Untuk sesetengah sasaran, maklumat khusus sasaran tambahan juga mungkin
dicetak.

--help={kelas|[^]layak}[, ...]
Cetak (pada output standard) penerangan tentang pilihan baris arahan yang difahami oleh
pengkompil yang sesuai dengan semua kelas dan kelayakan yang ditentukan. Ini adalah
kelas yang disokong:

pengoptimum
Paparkan semua pilihan pengoptimuman yang disokong oleh pengkompil.

amaran
Paparkan semua pilihan yang mengawal mesej amaran yang dihasilkan oleh pengkompil.

sasaran
Paparkan pilihan khusus sasaran. Berbeza dengan --sasaran-bantuan pilihan bagaimanapun, sasaran-
pilihan khusus pemaut dan pemasang tidak dipaparkan. Ini adalah kerana
alat tersebut pada masa ini tidak menyokong lanjutan --bantuan= Sintaks.

params
Paparkan nilai yang diiktiraf oleh --param pilihan.

bahasa
Paparkan pilihan yang disokong untuk bahasa, Di mana bahasa adalah nama salah satu daripada
bahasa yang disokong dalam versi GCC ini.

biasa
Paparkan pilihan yang biasa kepada semua bahasa.

Ini adalah kelayakan yang disokong:

tidak berdokumen
Paparkan hanya pilihan yang tidak didokumenkan.

menyertai
Pilihan paparan mengambil hujah yang muncul selepas tanda sama dalam yang sama
sekeping teks berterusan, seperti: --help=target.

berasingan
Paparan pilihan mengambil hujah yang muncul sebagai perkataan berasingan berikutan
pilihan asal, seperti: -o fail keluaran.

Oleh itu sebagai contoh untuk memaparkan semua suis khusus sasaran tidak berdokumen yang disokong oleh
pengkompil, gunakan:

--help=target,undocumented

Pengertian kelayakan boleh diterbalikkan dengan memberi awalan dengan ^ watak, jadi untuk
contoh untuk memaparkan semua pilihan amaran binari (iaitu, yang sama ada dihidupkan atau dimatikan
dan yang tidak mengambil hujah) yang mempunyai penerangan, gunakan:

--help=warning,^bergabung,^tanpa dokumen

Hujah untuk --bantuan= tidak seharusnya hanya terdiri daripada kelayakan songsang.

Menggabungkan beberapa kelas adalah mungkin, walaupun ini biasanya mengehadkan output
banyak yang tiada apa-apa untuk dipaparkan. Satu kes di mana ia berfungsi, bagaimanapun, adalah bila
salah satu kelas ialah sasaran. Contohnya, untuk memaparkan semua sasaran khusus
pilihan pengoptimuman, gunakan:

--help=target,pengoptimum

. --bantuan= pilihan boleh diulang pada baris arahan. Setiap penggunaan berturut-turut dipaparkan
kelas pilihan yang dimintanya, melangkau pilihan yang telah dipaparkan.

Jika -Q pilihan muncul pada baris arahan sebelum --bantuan= pilihan, kemudian
teks deskriptif yang dipaparkan oleh --bantuan= diubah. Daripada menerangkan yang dipaparkan
pilihan, petunjuk diberikan sama ada pilihan itu didayakan, dilumpuhkan atau ditetapkan
kepada nilai tertentu (dengan mengandaikan bahawa pengkompil mengetahui ini pada titik di mana
--bantuan= pilihan digunakan).

Berikut ialah contoh terpenggal daripada port ARM gcc:

% gcc -Q -mabi=2 --help=sasaran -c
Pilihan berikut adalah khusus sasaran:
-mabi= 2
-mabort-on-noreturn [dilumpuhkan]
-mapcs [dilumpuhkan]

Output adalah sensitif kepada kesan pilihan baris arahan sebelumnya, jadi untuk
contoh adalah mungkin untuk mengetahui pengoptimuman yang didayakan -O2 dengan menggunakan:

-Q -O2 --help=optimizers

Sebagai alternatif anda boleh menemui pengoptimuman binari yang didayakan oleh -O3 dengan menggunakan:

gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
perbezaan /tmp/O2-opts /tmp/O3-opts | grep didayakan

-tiada-awalan-kanonik
Jangan kembangkan sebarang pautan simbolik, selesaikan rujukan kepada /../ or /./, atau buat jalan
mutlak apabila menghasilkan awalan relatif.

--versi
Paparkan nombor versi dan hak cipta GCC yang digunakan.

-pembungkus
Panggil semua subperintah di bawah program pembalut. Nama program pembalut dan
parameternya diluluskan sebagai senarai dipisahkan koma.

gcc -c tc -wrapper gdb,--args

Ini memanggil semua subprogram daripada gcc di bawah gdb --args, dengan itu seruan kepada cc1 is
gdb --args cc1 ....

-fplugin=nama.so
Muatkan kod pemalam dalam fail nama.jadi, diandaikan sebagai objek kongsi untuk dibuka oleh
penyusun. Nama asas fail objek kongsi digunakan untuk mengenal pasti pemalam
untuk tujuan penghuraian hujah (Lihat -fplugin-arg-nama-utama=nilai di bawah). setiap satu
pemalam harus mentakrifkan fungsi panggil balik yang dinyatakan dalam API Plugins.

-fplugin-arg-nama-utama=nilai
Tentukan hujah yang dipanggil utama dengan nilai nilai untuk pemalam yang dipanggil nama.

-fdump-ada-spec[-nipis]
Untuk sumber C dan C++ dan sertakan fail, hasilkan spesifikasi Ada yang sepadan.

-fada-spec-parent=unit
Bersempena dengan -fdump-ada-spec[-nipis] di atas, hasilkan spesifikasi Ada sebagai unit anak bagi
ibu bapa unit.

-fdump-go-spec=fail
Untuk fail input dalam mana-mana bahasa, hasilkan pengisytiharan Go yang sepadan fail. ini
menjana perisytiharan Go "const", "type", "var", dan "func" yang mungkin merupakan cara yang berguna
untuk mula menulis antara muka Go kepada kod yang ditulis dalam beberapa bahasa lain.

@fail
Baca pilihan baris arahan daripada fail. Pilihan yang dibaca dimasukkan sebagai ganti
asal @fail pilihan. Jika fail tidak wujud, atau tidak boleh dibaca, maka pilihan
akan dilayan secara literal, dan tidak dikeluarkan.

Pilihan dalam fail dipisahkan oleh ruang putih. Aksara ruang putih mungkin disertakan
dalam pilihan dengan mengelilingi keseluruhan pilihan dalam petikan tunggal atau berganda. mana-mana
aksara (termasuk garis miring ke belakang) boleh disertakan dengan memberi awalan kepada aksara menjadi
disertakan dengan garis miring ke belakang. The fail mungkin sendiri mengandungi tambahan @fail pilihan; mana-mana
pilihan tersebut akan diproses secara rekursif.

Menyusun C + + program
Fail sumber C++ secara konvensional menggunakan salah satu imbuhan .C, . Cc, .cpp, .CPP, .c++, .cp, Atau
.cxx; Fail pengepala C++ sering digunakan .hh, .hpp, .H, atau (untuk kod templat dikongsi) .tcc; Dan
fail C++ yang telah diproses menggunakan akhiran .ii. GCC mengenali fail dengan nama ini dan
menyusunnya sebagai program C++ walaupun anda memanggil pengkompil dengan cara yang sama seperti untuk menyusun
Program C (biasanya dengan nama gcc).

Walau bagaimanapun, penggunaan gcc tidak menambah perpustakaan C++. g ++ ialah program yang memanggil GCC dan
secara automatik menentukan pemautan terhadap perpustakaan C++. Ia merawat .c, .h dan .i fail sebagai
Fail sumber C++ dan bukannya fail sumber C melainkan -x digunakan. Program ini juga berguna
apabila prapenyusun fail pengepala C dengan a .h sambungan untuk digunakan dalam kompilasi C++. hidup
banyak sistem, g ++ juga dipasang dengan nama C ++.

Apabila anda menyusun atur cara C++, anda boleh menentukan banyak pilihan baris perintah yang sama
anda gunakan untuk menyusun atur cara dalam mana-mana bahasa; atau pilihan baris arahan yang bermakna untuk C
dan bahasa yang berkaitan; atau pilihan yang bermakna hanya untuk program C++.

Pilihan Mengawal C Dialek
Pilihan berikut mengawal dialek C (atau bahasa yang diperoleh daripada C, seperti C++,
Objective-C dan Objective-C++) yang pengkompil menerima:

-ansi
Dalam mod C, ini bersamaan dengan -std=c90. Dalam mod C++, ia bersamaan dengan
-std=c++98.

Ini mematikan ciri tertentu GCC yang tidak serasi dengan ISO C90 (apabila
menyusun kod C), atau C++ standard (semasa menyusun kod C++), seperti "asm" dan
kata kunci "jenis" dan makro yang dipratentukan seperti "unix" dan "vax" yang mengenal pasti
jenis sistem yang anda gunakan. Ia juga membolehkan ISO yang tidak diingini dan jarang digunakan
ciri trigraf. Untuk pengkompil C, ia melumpuhkan pengiktirafan gaya C++ //
ulasan serta kata kunci "sebaris".

Kata kunci ganti "__asm__", "__extension__", "__inline__" dan "__typeof__"
teruskan bekerja walaupun -ansi. Anda tidak mahu menggunakannya dalam program ISO C,
sudah tentu, tetapi ia berguna untuk meletakkannya dalam fail pengepala yang mungkin disertakan
kompilasi dilakukan dengan -ansi. Makro pratakrif ganti seperti "__unix__" dan
"__vax__" juga tersedia, dengan atau tanpa -ansi.

. -ansi pilihan tidak menyebabkan program bukan ISO ditolak begitu sahaja. Untuk
bahawa, -Wpedantik diperlukan sebagai tambahan kepada -ansi.

Makro "__STRICT_ANSI__" dipratakrifkan apabila -ansi pilihan digunakan. Beberapa tajuk
fail mungkin melihat makro ini dan mengelak daripada mengisytiharkan fungsi tertentu atau mentakrifkan
makro tertentu yang tidak diperlukan oleh standard ISO; ini untuk mengelakkan campur tangan
dengan mana-mana program yang mungkin menggunakan nama ini untuk perkara lain.

Fungsi yang biasanya terbina dalam tetapi tidak mempunyai semantik yang ditakrifkan oleh ISO C (seperti
sebagai "alloca" dan "ffs") bukan fungsi terbina dalam apabila -ansi digunakan.

-std=
Tentukan standard bahasa. Pilihan ini pada masa ini hanya disokong apabila
menyusun C atau C++.

Pengkompil boleh menerima beberapa piawaian asas, seperti c90 or c ++ 98, dan dialek GNU
daripada piawaian tersebut, seperti gnu90 or gnu++98. Apabila standard asas ditentukan,
pengkompil menerima semua program mengikut piawaian itu serta yang menggunakan sambungan GNU
yang tidak bercanggah dengannya. Sebagai contoh, -std=c90 mematikan ciri tertentu GCC
yang tidak serasi dengan ISO C90, seperti kata kunci "asm" dan "jenis", tetapi tidak
sambungan GNU lain yang tidak mempunyai makna dalam ISO C90, seperti meninggalkan
istilah pertengahan ungkapan "?:". Sebaliknya, apabila dialek GNU standard
ditentukan, semua ciri yang disokong oleh pengkompil didayakan, walaupun apabila ciri tersebut
ciri mengubah maksud standard asas. Akibatnya, beberapa mematuhi ketat
program mungkin ditolak. Piawaian tertentu digunakan oleh -Wpedantik untuk mengenalpasti
ciri yang manakah merupakan sambungan GNU memandangkan versi standard tersebut. Sebagai contoh
-std=gnu90 -Wpedantik memberi amaran tentang gaya C++ // komen, manakala -std=gnu99 -Wpedantik
tidak.

Nilai untuk pilihan ini mesti disediakan; nilai yang mungkin adalah

c90
c89
iso9899:1990
Menyokong semua program ISO C90 (sambungan GNU tertentu yang bercanggah dengan ISO C90
adalah kurang upaya). Sama seperti -ansi untuk kod C.

iso9899:199409
ISO C90 seperti yang diubah suai dalam pindaan 1.

c99
c9x
iso9899:1999
iso9899:199x
ISO C99. Piawaian ini sebahagian besarnya disokong sepenuhnya, pepijat modulo dan
isu titik terapung (terutamanya tetapi tidak berkaitan sepenuhnya dengan ciri C99 pilihan
daripada Lampiran F dan G). Lihathttp://gcc.gnu.org/c99status.html> untuk lebih lanjut
maklumat. Nama-nama c9x dan iso9899:199x tidak digunakan lagi.

c11
c1x
iso9899:2011
ISO C11, semakan 2011 bagi standard ISO C. Piawaian ini secara substansial
disokong sepenuhnya, pepijat modulo, isu titik terapung (terutamanya tetapi tidak sepenuhnya
berkaitan dengan ciri C11 pilihan daripada Lampiran F dan G) dan Lampiran K pilihan
(Antara muka semakan sempadan) dan L (Kebolehanalisisan). Nama c1x tidak digunakan lagi.

gnu90
gnu89
Dialek GNU ISO C90 (termasuk beberapa ciri C99).

gnu99
gnu9x
Dialek GNU ISO C99. Nama gnu9x tidak digunakan lagi.

gnu11
gnu1x
Dialek GNU ISO C11. Ini adalah lalai untuk kod C. Nama gnu1x is
ditamatkan.

c ++ 98
c ++ 03
Piawaian ISO C++ 1998 ditambah korigendum teknikal 2003 dan beberapa tambahan
laporan kecacatan. Sama seperti -ansi untuk kod C++.

gnu++98
gnu++03
Dialek GNU daripada -std=c++98. Ini adalah lalai untuk kod C++.

c ++ 11
c++0x
Pindaan tambah standard ISO C++ 2011. Nama c++0x tidak digunakan lagi.

gnu++11
gnu++0x
Dialek GNU daripada -std=c++11. Nama gnu++0x tidak digunakan lagi.

c ++ 14
c++1y
Pindaan tambah standard ISO C++ 2014. Nama c++1y tidak digunakan lagi.

gnu++14
gnu++1y
Dialek GNU daripada -std=c++14. Nama gnu++1y tidak digunakan lagi.

c++1z
Semakan seterusnya standard ISO C++, dirancang sementara untuk 2017. Sokongan
adalah sangat eksperimen, dan hampir pasti akan berubah dalam cara yang tidak serasi
keluaran masa hadapan.

gnu++1z
Dialek GNU daripada -std=c++1z. Sokongan adalah sangat eksperimen, dan hampir
sudah tentu berubah dalam cara yang tidak serasi dalam keluaran akan datang.

-fgnu89-sebaris
pilihan -fgnu89-sebaris memberitahu GCC untuk menggunakan semantik GNU tradisional untuk "sebaris"
berfungsi apabila dalam mod C99.

Menggunakan pilihan ini kira-kira sama dengan menambah atribut fungsi "gnu_inline".
kepada semua fungsi sebaris.

pilihan -fno-gnu89-dalam talian secara eksplisit memberitahu GCC untuk menggunakan semantik C99 untuk
"sebaris" apabila dalam mod C99 atau gnu99 (iaitu, ia menentukan tingkah laku lalai). ini
pilihan tidak disokong dalam -std=c90 or -std=gnu90 mod.

Makro prapemproses "__GNUC_GNU_INLINE__" dan "__GNUC_STDC_INLINE__" boleh digunakan
untuk menyemak semantik yang berkuat kuasa untuk fungsi "sebaris".

-maklumat-aux nama fail
Output kepada nama fail yang diberikan prototaip pengisytiharan untuk semua fungsi yang diisytiharkan dan/atau
ditakrifkan dalam unit terjemahan, termasuk dalam fail pengepala. Pilihan ini adalah
diabaikan secara senyap dalam mana-mana bahasa selain daripada C.

Selain pengisytiharan, fail menunjukkan, dalam ulasan, asal usul setiap pengisytiharan
(fail sumber dan baris), sama ada pengisytiharan itu tersirat, prototaip atau
tidak prototaip (I, N untuk baru atau O untuk lama, masing-masing, dalam watak pertama selepas
nombor baris dan bertindih), dan sama ada ia datang daripada perisytiharan atau takrifan
(C or F, masing-masing, dalam aksara berikut). Dalam kes fungsi
definisi, senarai hujah gaya K&R diikuti dengan pengisytiharan mereka juga
dengan syarat, dalam ulasan, selepas pengisytiharan.

-fungsi-variad-tanpa-parameter
Terima fungsi variadic tanpa parameter bernama.

Walaupun adalah mungkin untuk mentakrifkan fungsi sedemikian, ini tidak begitu berguna kerana ia
tidak boleh membaca hujah. Ini hanya disokong untuk C kerana konstruk ini
dibenarkan oleh C++.

-fno-asm
Jangan kenali "asm", "inline" atau "typeof" sebagai kata kunci, supaya kod boleh menggunakan ini
perkataan sebagai pengecam. Anda boleh menggunakan kata kunci "__asm__", "__inline__" dan
"__typeof__" sebaliknya. -ansi bererti -fno-asm.

Dalam C++, suis ini hanya mempengaruhi kata kunci "jenis", kerana "asm" dan "sebaris" adalah
kata kunci standard. Anda mungkin mahu menggunakan -fno-gnu-kata kunci bendera sebaliknya, yang mempunyai
kesan yang sama. Dalam mod C99 (-std=c99 or -std=gnu99), suis ini hanya mempengaruhi
Kata kunci "asm" dan "typeof", memandangkan "inline" ialah kata kunci standard dalam ISO C99.

-fno-dibina
-fno-built-fungsi
Tidak mengenali fungsi terbina dalam yang tidak bermula dengan __dibina_ sebagai awalan.

GCC biasanya menjana kod khas untuk mengendalikan fungsi terbina dalam tertentu dengan lebih banyak lagi
cekap; sebagai contoh, panggilan ke "alloca" boleh menjadi arahan tunggal yang
laraskan timbunan terus, dan panggilan ke "memcpy" mungkin menjadi gelung salinan sebaris. The
kod yang terhasil selalunya lebih kecil dan lebih pantas, tetapi sejak fungsi memanggil no
lebih lama muncul seperti itu, anda tidak boleh menetapkan titik putus pada panggilan tersebut, anda juga tidak boleh menukar
tingkah laku fungsi dengan menghubungkan dengan perpustakaan yang berbeza. Selain itu, apabila
fungsi diiktiraf sebagai fungsi terbina dalam, GCC boleh menggunakan maklumat mengenainya
berfungsi untuk memberi amaran tentang masalah dengan panggilan ke fungsi itu, atau untuk menjana lebih banyak lagi
kod cekap, walaupun kod yang terhasil masih mengandungi panggilan ke fungsi itu. Untuk
contoh, amaran diberikan dengan -Wformat untuk panggilan buruk kepada "printf" apabila "printf" adalah
terbina dalam dan "strlen" diketahui tidak mengubah suai memori global.

Dengan -fno-built-fungsi pilihan hanya fungsi terbina dalam fungsi dilumpuhkan.
fungsi mesti tidak bermula dengan __dibina_. Jika fungsi dinamakan yang tidak terbina dalam
dalam versi GCC ini, pilihan ini diabaikan. Tiada yang sepadan
-fbuitin-fungsi pilihan; jika anda ingin mendayakan fungsi terbina dalam secara terpilih apabila
menggunakan -fno-dibina or -berdiri bebas, anda boleh menentukan makro seperti:

#define abs(n) __builtin_abs ((n))
#define strcpy(d, s) __builtin_strcpy ((d), (s))

-dihoskan
Tegaskan bahawa kompilasi menyasarkan persekitaran yang dihoskan. Ini bermakna -fbuitin. A
persekitaran yang dihoskan ialah persekitaran di mana keseluruhan perpustakaan standard tersedia, dan dalam
yang "utama" mempunyai jenis pulangan "int". Contohnya hampir semuanya kecuali a
isirong. Ini bersamaan dengan -fno-berdiri bebas.

-berdiri bebas
Tegaskan bahawa kompilasi menyasarkan persekitaran yang berdiri sendiri. Ini bermakna
-fno-dibina. Persekitaran bebas ialah persekitaran yang mana perpustakaan standard mungkin tidak
wujud, dan permulaan program mungkin tidak semestinya berada di "utama". Contoh yang paling jelas
ialah kernel OS. Ini bersamaan dengan -fno-hosted.

-fopenacc
Dayakan pengendalian arahan OpenACC "#pragma acc" dalam C/C++ dan "!$acc" dalam Fortran.
Bila -fopenacc ditentukan, pengkompil menjana kod dipercepatkan mengikut
Antara Muka Pengaturcaraan Aplikasi OpenACC v2.0http://www.openacc.org/>. Pilihan ini
bererti -pthread, dan dengan itu hanya disokong pada sasaran yang mempunyai sokongan untuk
-pthread.

Ambil perhatian bahawa ini ialah ciri percubaan, tidak lengkap dan tertakluk kepada perubahan pada masa hadapan
versi GCC. Lihathttps://gcc.gnu.org/wiki/OpenACC> untuk maklumat lanjut.

-fopenmp
Dayakan pengendalian arahan OpenMP "#pragma omp" dalam C/C++ dan "!$omp" dalam Fortran.
Bila -fopenmp ditentukan, pengkompil menjana kod selari mengikut
Antara Muka Program Aplikasi OpenMP v4.0http://www.openmp.org/>. Pilihan ini
bererti -pthread, dan dengan itu hanya disokong pada sasaran yang mempunyai sokongan untuk
-pthread. -fopenmp bererti -fopenmp-simd.

-fopenmp-simd
Dayakan pengendalian arahan SIMD OpenMP dengan "#pragma omp" dalam C/C++ dan "!$omp" dalam
Fortran. Arahan OpenMP lain diabaikan.

-fcilkplus
Dayakan penggunaan ciri sambungan bahasa Cilk Plus untuk C/C++. Apabila pilihan
-fcilkplus ditentukan, dayakan penggunaan ciri sambungan Bahasa Cilk Plus
untuk C/C++. Pelaksanaan sekarang mengikuti versi ABI 1.2. Ini adalah sebuah
ciri percubaan yang hanya sebahagiannya lengkap, dan antara mukanya mungkin berubah
dalam versi GCC akan datang apabila spesifikasi rasmi berubah. Pada masa ini, semua
ciri tetapi "_Cilk_for" telah dilaksanakan.

-fgnu-tm
Apabila pilihan -fgnu-tm ditentukan, pengkompil menjana kod untuk Linux
varian dokumen spesifikasi ABI Transactional Memory semasa Intel (Revision
1.1, 6 Mei 2009). Ini ialah ciri percubaan yang antara mukanya mungkin berubah
versi masa hadapan GCC, apabila spesifikasi rasmi berubah. Sila ambil perhatian bahawa tidak
semua seni bina disokong untuk ciri ini.

Untuk mendapatkan maklumat lanjut tentang sokongan GCC untuk memori transaksi,

Ambil perhatian bahawa ciri memori transaksi tidak disokong dengan pengecualian bukan panggilan
(-fnon-panggilan-pengecualian).

-fms-sambungan
Terima beberapa binaan bukan standard yang digunakan dalam fail pengepala Microsoft.

Dalam kod C++, ini membolehkan nama ahli dalam struktur serupa dengan jenis sebelumnya
pengisytiharan.

typedef int UOW;
struct ABC {
UOW UOW;
};

Sesetengah kes medan yang tidak dinamakan dalam struktur dan kesatuan hanya diterima dengan ini
pilihan.

Ambil perhatian bahawa pilihan ini dimatikan untuk semua sasaran tetapi sasaran x86 menggunakan ms-abi.

-fplan9-sambungan
Terima beberapa binaan bukan standard yang digunakan dalam kod Pelan 9.

Ini membolehkan -fms-sambungan, membenarkan menghantar penunjuk kepada struktur dengan tanpa nama
medan kepada fungsi yang mengharapkan penunjuk kepada unsur jenis medan, dan
permit merujuk kepada medan tanpa nama yang diisytiharkan menggunakan typedef. Ini sahaja
disokong untuk C, bukan C++.

-trigraf
Menyokong trigraf ISO C. The -ansi pilihan (dan -std pilihan untuk ISO C yang ketat
pematuhan) membayangkan -trigraf.

-tradisional
-tradisional-cpp
Dahulu, pilihan ini menyebabkan GCC cuba meniru pengkompil C pra-standard.
Mereka kini hanya disokong dengan -E suis. Prapemproses terus menyokong
mod pra-standard. Lihat manual GNU CPP untuk butiran.

-fcond-mismatch
Benarkan ungkapan bersyarat dengan jenis yang tidak sepadan dalam argumen kedua dan ketiga.
Nilai ungkapan sedemikian adalah tidak sah. Pilihan ini tidak disokong untuk C++.

-penukaran-vektor-flax
Benarkan penukaran tersirat antara vektor dengan bilangan elemen dan/atau yang berbeza
jenis unsur yang tidak serasi. Pilihan ini tidak boleh digunakan untuk kod baharu.

-funsigned-char
Biarkan jenis "char" tidak ditandatangani, seperti "unsigned char".

Setiap jenis mesin mempunyai lalai untuk "char" yang sepatutnya. Ia sama ada seperti
"unsigned char" secara lalai atau seperti "signed char" secara lalai.

Sebaik-baiknya, atur cara mudah alih hendaklah sentiasa menggunakan "char yang ditandatangani" atau "char yang tidak ditandatangani" apabila ia
bergantung pada tanda sesuatu objek. Tetapi banyak program telah ditulis untuk digunakan
biasa "char" dan mengharapkan ia ditandatangani, atau mengharapkan ia tidak ditandatangani, bergantung pada
mesin yang mereka gunakan untuk menulis. Pilihan ini, dan songsangnya, membolehkan anda membuat a
program berfungsi dengan lalai yang bertentangan.

Jenis "char" sentiasa merupakan jenis yang berbeza daripada setiap "char yang ditandatangani" atau "unsigned
char", walaupun kelakuannya sentiasa seperti salah satu daripada dua itu.

-fsigned-char
Biarkan jenis "char" ditandatangani, seperti "signed char".

Ambil perhatian bahawa ini bersamaan dengan -fno-unsigned-char, yang merupakan bentuk negatif daripada
-funsigned-char. Begitu juga, pilihan -fno-signed-char adalah bersamaan dengan
-funsigned-char.

-fsigned-bitfields
-funsigned-bitfields
-fno-signed-bitfields
-fno-unsigned-bitfields
Pilihan ini mengawal sama ada medan bit ditandatangani atau tidak ditandatangani, apabila pengisytiharan
tidak menggunakan sama ada "ditandatangani" atau "tidak ditandatangani". Secara lalai, medan bit sedemikian ditandatangani,
kerana ini konsisten: jenis integer asas seperti "int" ialah jenis bertanda.

Pilihan Mengawal C + + Dialek
Bahagian ini menerangkan pilihan baris arahan yang hanya bermakna untuk program C++.
Anda juga boleh menggunakan kebanyakan pilihan pengkompil GNU tanpa mengira bahasa program anda
sudah masuk. Contohnya, anda mungkin menyusun fail FirstClass.C seperti ini:

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

Dalam contoh ini, sahaja -frepo ialah pilihan yang dimaksudkan hanya untuk program C++; anda boleh menggunakan
pilihan lain dengan mana-mana bahasa yang disokong oleh GCC.

Berikut adalah senarai pilihan yang hanyalah untuk menyusun atur cara C++:

-fabi-version=n
Gunakan versi n daripada C++ ABI. Lalai ialah versi 0.

Versi 0 merujuk kepada versi yang paling sesuai dengan spesifikasi C++ ABI.
Oleh itu, ABI yang diperoleh menggunakan versi 0 akan berubah dalam versi G++ yang berbeza
kerana pepijat ABI telah diperbaiki.

Versi 1 ialah versi C++ ABI yang pertama kali muncul dalam G++ 3.2.

Versi 2 ialah versi C++ ABI yang pertama kali muncul dalam G++ 3.4, dan merupakan
lalai melalui G++ 4.9.

Versi 3 membetulkan ralat dalam mengubah alamat tetap sebagai hujah templat.

Versi 4, yang pertama kali muncul dalam G++ 4.5, melaksanakan penyangak piawai untuk vektor
jenis.

Versi 5, yang pertama kali muncul dalam G++ 4.6, membetulkan gangguan atribut
const/volatile pada jenis penuding fungsi, decltype of a plain decl, dan penggunaan a
parameter fungsi dalam pengisytiharan parameter lain.

Versi 6, yang pertama kali muncul dalam G++ 4.7, membetulkan gelagat promosi C++11
enum berskop dan kekacauan pek hujah templat, const/static_cast, awalan ++
dan --, dan fungsi skop kelas yang digunakan sebagai hujah templat.

Versi 7, yang pertama kali muncul dalam G++ 4.8, yang menganggap nullptr_t sebagai jenis terbina dalam
dan membetulkan kerosakan lambdas dalam skop hujah lalai.

Versi 8, yang pertama kali muncul dalam G++ 4.9, membetulkan tingkah laku penggantian
jenis fungsi dengan fungsi-cv-qualifier.

Lihat juga -Wabi.

-fabi-compat-version=n
Pada sasaran yang menyokong alias yang kuat, G++ mengendalikan perubahan dengan mencipta
alias dengan nama rosak yang betul apabila mentakrifkan simbol dengan salah
nama hancur. Suis ini menentukan versi ABI yang hendak digunakan untuk alias.

Dengan -fabi-version=0 (lalai), ini lalai kepada 2. Jika versi ABI lain ialah
dipilih secara eksplisit, ini lalai kepada 0.

Versi keserasian juga ditetapkan oleh -Wabi=n.

-fno-access-control
Matikan semua pemeriksaan akses. Suis ini berguna terutamanya untuk menangani pepijat masuk
kod kawalan akses.

-fcheck-baru
Semak sama ada penuding yang dikembalikan oleh "operator new" bukan nol sebelum mencuba
ubah suai storan yang diperuntukkan. Semakan ini biasanya tidak diperlukan kerana C++
standard menyatakan bahawa "operator new" hanya mengembalikan 0 jika ia diisytiharkan "throw()", dalam
yang mana pengkompil sentiasa menyemak nilai pulangan walaupun tanpa pilihan ini. Dalam
semua kes lain, apabila "pengendali baharu" mempunyai spesifikasi pengecualian bukan kosong, memori
keletihan ditandakan dengan melemparkan "std::bad_alloc". Lihat juga baru (nothrow).

-fconstexpr-depth=n
Tetapkan kedalaman penilaian bersarang maksimum untuk fungsi constexpr C++11 kepada n. Satu had
diperlukan untuk mengesan rekursi yang tidak berkesudahan semasa penilaian ekspresi berterusan. The
minimum yang ditetapkan oleh standard ialah 512.

-fdeduce-init-list
Dayakan potongan parameter jenis templat sebagai "std::initializer_list" daripada pendakap-
senarai pemula yang disertakan, iaitu

templat auto hadapan(T t) -> decltype (realfn (t))
{
pulangkan realfn (t);
}

batal f()
{
ke hadapan({1,2}); // panggil ke hadapan >
}

Potongan ini dilaksanakan sebagai lanjutan yang mungkin kepada cadangan asal
semantik untuk piawaian C++11, tetapi bukan sebahagian daripada piawaian akhir, begitu juga
dilumpuhkan secara lalai. Pilihan ini ditamatkan dan mungkin dialih keluar pada masa hadapan
versi G++.

-ffriend-suntikan
Suntikan fungsi rakan ke dalam ruang nama yang disertakan, supaya ia kelihatan di luar
skop kelas di mana ia diisytiharkan. Fungsi rakan telah didokumenkan
untuk bekerja dengan cara ini dalam Manual Rujukan C++ Beranotasi lama. Walau bagaimanapun, dalam ISO C++ a
fungsi rakan yang tidak diisytiharkan dalam skop yang disertakan hanya boleh didapati menggunakan
carian bergantung kepada hujah. GCC lalai kepada tingkah laku standard.

Pilihan ini adalah untuk keserasian dan mungkin dialih keluar dalam keluaran G++ yang akan datang.

-fno-elide-konstruktor
Piawaian C++ membenarkan pelaksanaan untuk meninggalkan penciptaan sementara yang hanya
digunakan untuk memulakan objek lain daripada jenis yang sama. Menentukan pilihan ini dilumpuhkan
pengoptimuman itu, dan memaksa G++ memanggil pembina salinan dalam semua kes.

-fno-enforce-eh-specs
Jangan jana kod untuk menyemak pelanggaran spesifikasi pengecualian semasa masa jalankan.
Pilihan ini melanggar standard C++, tetapi mungkin berguna untuk mengurangkan saiz kod dalam
pengeluaran terbina, sama seperti mentakrifkan "NDEBUG". Ini tidak memberikan kod pengguna
kebenaran untuk membuang pengecualian yang melanggar spesifikasi pengecualian; yang
pengkompil masih mengoptimumkan berdasarkan spesifikasi, jadi membuang yang tidak dijangka
pengecualian menghasilkan tingkah laku yang tidak ditentukan pada masa larian.

-fextern-tls-init
-fno-extern-tls-init
Piawaian C++11 dan OpenMP membenarkan pembolehubah "thread_local" dan "threadprivate" untuk
mempunyai permulaan dinamik (masa jalan). Untuk menyokong ini, sebarang penggunaan pembolehubah sedemikian
melalui fungsi pembalut yang melakukan sebarang permulaan yang diperlukan. Apabila
penggunaan dan definisi pembolehubah berada dalam unit terjemahan yang sama, overhed ini boleh
dioptimumkan, tetapi apabila penggunaan dalam unit terjemahan yang berbeza ada
overhed yang ketara walaupun pembolehubah sebenarnya tidak memerlukan dinamik
permulaan. Jika pengaturcara boleh memastikan bahawa tiada penggunaan pembolehubah dalam bukan-
mentakrifkan TU perlu mencetuskan permulaan dinamik (sama ada kerana pembolehubah adalah
dimulakan secara statik, atau penggunaan pembolehubah dalam TU yang menentukan akan dilaksanakan
sebelum sebarang penggunaan dalam TU lain), mereka boleh mengelakkan overhed ini dengan
-fno-extern-tls-init pilihan.

Pada sasaran yang menyokong alias simbol, lalai ialah -fextern-tls-init. Pada sasaran
yang tidak menyokong alias simbol, lalainya ialah -fno-extern-tls-init.

-untuk-skop
-fno-untuk-skop
If -untuk-skop ditentukan, skop pembolehubah yang diisytiharkan dalam a for-init-statement
terhad kepada gelung "untuk" itu sendiri, seperti yang ditentukan oleh piawaian C++. Jika
-fno-untuk-skop ditentukan, skop pembolehubah yang diisytiharkan dalam a for-init-statement
meluas ke penghujung skop yang disertakan, seperti yang berlaku dalam versi lama G++, dan
pelaksanaan lain (tradisional) C++.

Jika kedua-dua bendera tidak diberikan, lalai adalah mengikut piawaian, tetapi membenarkan dan memberi
amaran untuk kod gaya lama yang sebaliknya akan menjadi tidak sah, atau berbeza
tingkah laku.

-fno-gnu-kata kunci
Jangan kenali "typeof" sebagai kata kunci, supaya kod itu boleh menggunakan perkataan ini sebagai
pengecam. Anda boleh menggunakan kata kunci "__typeof__" sebaliknya. -ansi bererti
-fno-gnu-kata kunci.

-fno-implisit-templat
Jangan sekali-kali mengeluarkan kod untuk templat bukan sebaris yang dinyatakan secara tersirat (iaitu oleh
penggunaan); hanya mengeluarkan kod untuk instantiasi eksplisit.

-fno-implisit-inline-templates
Jangan keluarkan kod untuk instantiasi tersirat templat sebaris, sama ada. lalai
adalah untuk mengendalikan sebaris secara berbeza supaya disusun dengan dan tanpa keperluan pengoptimuman
set instantiasi eksplisit yang sama.

-fno-implement-inlines
Untuk menjimatkan ruang, jangan keluarkan salinan luar talian bagi fungsi sebaris yang dikawal oleh
"Pelaksanaan #pragma". Ini menyebabkan ralat pemaut jika fungsi ini tidak
sebaris di mana-mana mereka dipanggil.

-fms-sambungan
Lumpuhkan amaran Wpedantic tentang binaan yang digunakan dalam MFC, seperti int tersirat dan
mendapatkan penunjuk kepada fungsi ahli melalui sintaks bukan standard.

-fno-nonansi-builtins
Lumpuhkan pengisytiharan terbina dalam fungsi yang tidak diberi mandat oleh ANSI/ISO C. Ini
sertakan "ffs", "alloca", "_exit", "index", "bzero", "conjf", dan lain-lain yang berkaitan
fungsi.

-fnothrow-opt
Rawat spesifikasi pengecualian "throw()" seolah-olah ia adalah spesifikasi "noexcept" kepada
mengurangkan atau menghapuskan overhed saiz teks berbanding dengan fungsi tanpa pengecualian
spesifikasi. Jika fungsi mempunyai pembolehubah tempatan jenis dengan bukan remeh
pemusnah, spesifikasi pengecualian sebenarnya menjadikan fungsi lebih kecil kerana
pembersihan EH untuk pembolehubah tersebut boleh dioptimumkan. Kesan semantik ialah
bahawa pengecualian dibuang daripada fungsi dengan spesifikasi pengecualian sedemikian
mengakibatkan panggilan untuk "menamatkan" dan bukannya "tidak dijangka".

-nama-pengendali-fno
Jangan layan kata kunci nama operator "dan", "bitand", "bitor", "compl", "not", "or"
dan "xor" sebagai sinonim sebagai kata kunci.

-fno-optional-diags
Lumpuhkan diagnostik yang menurut piawaian tidak perlu dikeluarkan oleh pengkompil.
Pada masa ini, satu-satunya diagnostik sedemikian yang dikeluarkan oleh G++ ialah diagnostik untuk nama yang mempunyai
pelbagai makna dalam satu kelas.

-fpermisif
Turunkan taraf beberapa diagnostik tentang kod tidak akur daripada ralat kepada amaran. Oleh itu,
menggunakan -fpermisif membenarkan beberapa kod yang tidak mematuhi untuk disusun.

-fno-cantik-templat
Apabila mesej ralat merujuk kepada pengkhususan templat fungsi, pengkompil
biasanya mencetak tandatangan templat diikuti dengan hujah templat dan
sebarang typedefs atau nama taip dalam tandatangan (cth "void f(T) [dengan T = int]" sebaliknya
daripada "void f(int)") supaya jelas templat yang terlibat. Apabila kesilapan
mesej merujuk kepada pengkhususan templat kelas, pengkompil meninggalkan sebarang
hujah templat yang sepadan dengan hujah templat lalai untuk templat tersebut. Jika
salah satu daripada tingkah laku ini menjadikannya lebih sukar untuk memahami mesej ralat daripada
lebih mudah, anda boleh gunakan -fno-cantik-templat untuk melumpuhkan mereka.

-frepo
Dayakan instantiasi templat automatik pada masa pautan. Pilihan ini juga membayangkan
-fno-implisit-templat.

-fno-rtti
Lumpuhkan penjanaan maklumat tentang setiap kelas dengan fungsi maya untuk digunakan oleh
ciri pengenalan jenis masa jalan C++ ("dynamic_cast" dan "typeid"). Jika awak
jangan gunakan bahagian bahasa tersebut, anda boleh menjimatkan ruang dengan menggunakan bendera ini.
Ambil perhatian bahawa pengendalian pengecualian menggunakan maklumat yang sama, tetapi G++ menjananya sebagai
diperlukan. Operator "dynamic_cast" masih boleh digunakan untuk cast yang tidak memerlukan
maklumat jenis masa larian, iaitu menghantar ke "kosong *" atau ke kelas asas yang tidak jelas.

-fsized-deallocation
Dayakan pengisytiharan global terbina dalam

void operator padam (void *, std::size_t) noexcept;
operator void padam[] (void *, std::size_t) noexcept;

seperti yang diperkenalkan dalam C++14. Ini berguna untuk urus niaga gantian yang ditentukan pengguna
fungsi yang, sebagai contoh, menggunakan saiz objek untuk membuat deallocation lebih cepat.
Didayakan secara lalai di bawah -std=c++14 dan ke atas. Bendera -Wsized-deallocation memberi amaran
tentang tempat yang mungkin ingin menambah definisi.

-fstats
Pancarkan statistik tentang pemprosesan bahagian hadapan pada penghujung kompilasi. ini
maklumat secara amnya hanya berguna kepada pasukan pembangunan G++.

-fstrict-enums
Benarkan pengkompil mengoptimumkan menggunakan andaian bahawa nilai jenis terbilang
hanya boleh menjadi salah satu nilai penghitungan (seperti yang ditakrifkan dalam piawaian C++;
pada asasnya, nilai yang boleh diwakili dalam bilangan minimum bit yang diperlukan
mewakili semua pembanci). Andaian ini mungkin tidak sah jika program menggunakan
cast untuk menukar nilai integer arbitrari kepada jenis terhitung.

-ftemplate-backtrace-limit=n
Tetapkan bilangan maksimum nota instantiasi templat untuk satu amaran atau ralat
kepada n. Nilai lalai ialah 10.

-ftemplate-depth=n
Tetapkan kedalaman instantiasi maksimum untuk kelas templat n. Had pada
kedalaman instantiasi templat diperlukan untuk mengesan pengulangan yang tidak berkesudahan semasa templat
instantiation kelas. Program yang mematuhi ANSI/ISO C++ tidak boleh bergantung pada maksimum
kedalaman lebih daripada 17 (ditukar kepada 1024 dalam C++11). Nilai lalai ialah 900, sebagai
pengkompil boleh kehabisan ruang tindanan sebelum mencapai 1024 dalam beberapa situasi.

-fno-threadsafe-statik
Jangan keluarkan kod tambahan untuk menggunakan rutin yang dinyatakan dalam C++ ABI untuk benang-
permulaan selamat statik tempatan. Anda boleh menggunakan pilihan ini untuk mengurangkan saiz kod
sedikit dalam kod yang tidak perlu selamat untuk benang.

-fius-cxa-atexit
Daftar pemusnah untuk objek dengan tempoh storan statik dengan "__cxa_atexit"
fungsi dan bukannya fungsi "atexit". Pilihan ini diperlukan untuk sepenuhnya
pengendalian pemusnah statik yang mematuhi piawaian, tetapi hanya berfungsi jika perpustakaan C anda
menyokong "__cxa_atexit".

-fno-use-cxa-get-exception-ptr
Jangan gunakan rutin masa jalan "__cxa_get_exception_ptr". Ini menyebabkan
"std::uncaught_exception" adalah tidak betul, tetapi perlu jika rutin masa jalan adalah
tidak ada.

-kebolehlihatan-sebaris-tersembunyi
Suis ini mengisytiharkan bahawa pengguna tidak cuba membandingkan penunjuk dengan sebaris
fungsi atau kaedah di mana alamat kedua-dua fungsi diambil dalam berbeza
objek yang dikongsi.

Kesan daripada ini ialah GCC boleh, secara berkesan, menandakan kaedah sebaris dengan
"__attribute__ ((keterlihatan ("tersembunyi")))" supaya ia tidak muncul dalam eksport
jadual DSO dan tidak memerlukan arahan PLT apabila digunakan dalam DSO.
Mendayakan pilihan ini boleh memberi kesan dramatik pada masa pemuatan dan pautan DSO seperti itu
secara besar-besaran mengurangkan saiz jadual eksport dinamik apabila perpustakaan membuat berat
penggunaan templat.

Tingkah laku suis ini tidak sama dengan menandakan kaedah sebagai tersembunyi
secara langsung, kerana ia tidak menjejaskan pembolehubah statik setempat kepada fungsi atau punca
pengkompil untuk menyimpulkan bahawa fungsi itu ditakrifkan dalam hanya satu objek kongsi.

Anda boleh menandakan kaedah sebagai mempunyai keterlihatan secara eksplisit untuk menafikan kesan daripada
beralih untuk kaedah itu. Sebagai contoh, jika anda ingin membandingkan penunjuk kepada a
kaedah sebaris tertentu, anda mungkin menandakannya sebagai mempunyai keterlihatan lalai. Menandai
melampirkan kelas dengan keterlihatan eksplisit tidak mempunyai kesan.

Kaedah sebaris yang terang-terangan tidak terjejas oleh pilihan ini sebagai kaitannya
mungkin melintasi sempadan perpustakaan kongsi.

-fvisibility-ms-compat
Bendera ini cuba menggunakan tetapan keterlihatan untuk membuat model pautan C++ GCC
serasi dengan Microsoft Visual Studio.

Bendera membuat perubahan ini pada model pautan GCC:

1. Ia menetapkan keterlihatan lalai kepada "tersembunyi", seperti -fvisibility=tersembunyi.

2. Jenis, tetapi bukan ahlinya, tidak disembunyikan secara lalai.

3. Peraturan Satu Definisi dilonggarkan untuk jenis tanpa keterlihatan yang jelas
spesifikasi yang ditakrifkan dalam lebih daripada satu objek kongsi: pengisytiharan tersebut
dibenarkan jika ia dibenarkan apabila pilihan ini tidak digunakan.

Dalam kod baru adalah lebih baik untuk digunakan -fvisibility=tersembunyi dan eksport kelas tersebut
bertujuan untuk dilihat secara luaran. Malangnya adalah mungkin untuk kod bergantung,
mungkin secara tidak sengaja, pada tingkah laku Visual Studio.

Antara akibat daripada perubahan ini ialah ahli data statik daripada jenis yang sama
dengan nama yang sama tetapi ditakrifkan dalam objek kongsi yang berbeza adalah berbeza, jadi berubah
satu tidak mengubah yang lain; dan itu menunjuk kepada fungsi ahli yang ditakrifkan dalam
objek kongsi yang berbeza mungkin tidak membandingkan sama. Apabila bendera ini diberikan, ia adalah a
pelanggaran ODR untuk menentukan jenis dengan nama yang sama secara berbeza.

-fvtable-verify=[std|preinit|tiada]
Hidupkan (atau matikan, jika menggunakan -fvtable-verify=tiada) ciri keselamatan yang mengesahkan di
masa jalankan, untuk setiap panggilan maya, penunjuk vtable yang melaluinya panggilan itu
dibuat adalah sah untuk jenis objek, dan tidak rosak atau ditimpa.
Jika penunjuk vtable yang tidak sah dikesan pada masa jalankan, ralat dilaporkan dan
pelaksanaan program dihentikan serta-merta.

Pilihan ini menyebabkan struktur data masa jalan dibina pada permulaan program, iaitu
digunakan untuk mengesahkan penunjuk vtable. Pilihan std dan preinit mengawal
masa apabila struktur data ini dibina. Dalam kedua-dua kes, struktur data adalah
dibina sebelum pelaksanaan mencapai "utama". menggunakan -fvtable-verify=std menyebabkan data
struktur yang akan dibina selepas perpustakaan kongsi telah dimuatkan dan dimulakan.
-fvtable-verify=preinit menyebabkan mereka dibina sebelum perpustakaan kongsi telah
dimuatkan dan dimulakan.

Jika pilihan ini muncul beberapa kali dalam baris arahan dengan nilai yang berbeza
dinyatakan, tiada mengambil keutamaan tertinggi daripada kedua-duanya std dan preinit; preinit mengambil
keutamaan lebih std.

-fvtv-debug
Apabila digunakan bersama-sama dengan -fvtable-verify=std or -fvtable-verify=preinit, menyebabkan
versi nyahpepijat bagi fungsi masa jalan untuk ciri pengesahan vtable
dipanggil. Bendera ini juga menyebabkan pengkompil melog maklumat tentang vtable mana
petunjuk yang ditemuinya untuk setiap kelas. Maklumat ini ditulis pada fail bernama
vtv_set_ptr_data.log dalam direktori yang dinamakan oleh pembolehubah persekitaran VTV_LOGS_DIR
jika itu ditakrifkan atau direktori kerja semasa sebaliknya.

Nota: Ciri ini melampirkan data ke fail log. Jika anda mahukan fail log baharu, jadilah
pastikan anda memadam mana-mana yang sedia ada.

-kira-kira fvtv
Ini ialah bendera penyahpepijatan. Apabila digunakan bersama dengan -fvtable-verify=std or
-fvtable-verify=preinit, ini menyebabkan pengkompil menjejaki jumlah bilangan
panggilan maya yang ditemuinya dan bilangan pengesahan yang dimasukkannya. Ia juga
mengira bilangan panggilan ke fungsi perpustakaan masa jalan tertentu yang dimasukkan dan
log maklumat ini untuk setiap unit kompilasi. Penyusun menulis maklumat ini
ke fail bernama vtv_count_data.log dalam direktori yang dinamakan oleh pembolehubah persekitaran
VTV_LOGS_DIR jika itu ditakrifkan atau direktori kerja semasa sebaliknya. Ia juga
mengira saiz set penunjuk vtable untuk setiap kelas, dan menulis maklumat ini
kepada vtv_class_set_sizes.log Dalam direktori yang sama.

Nota: Ciri ini melampirkan data ke fail log. Untuk mendapatkan fail log baharu, pastikan anda
memadam mana-mana yang sedia ada.

-fno-lemah
Jangan gunakan sokongan simbol yang lemah, walaupun ia disediakan oleh pemaut. Secara lalai, G++
menggunakan simbol lemah jika tersedia. Pilihan ini wujud hanya untuk ujian, dan
tidak boleh digunakan oleh pengguna akhir; ia menghasilkan kod yang lebih rendah dan tidak mempunyai faedah.
Pilihan ini mungkin dialih keluar dalam keluaran masa hadapan G++.

-nostdinc++
Jangan cari fail pengepala dalam direktori standard khusus untuk C++, tetapi lakukan
masih mencari direktori standard yang lain. (Pilihan ini digunakan semasa membina
Perpustakaan C++.)

Selain itu, pilihan pengoptimuman, amaran dan penjanaan kod ini mempunyai makna sahaja
untuk program C++:

-Wabi (C, Objective-C, C++ dan Objective-C++ sahaja)
Apabila eksplisit -fabi-version=n pilihan digunakan, menyebabkan G++ memberi amaran apabila ia menjana
kod yang mungkin tidak serasi dengan C++ ABI neutral vendor. Sejak G++ sekarang
lalai kepada -fabi-version=0, -Wabi tidak mempunyai kesan melainkan sama ada versi ABI yang lebih lama
dipilih (dengan -fabi-version=n) atau versi keserasian yang lebih lama dipilih (dengan
-Wabi=n or -fabi-compat-version=n).

Walaupun usaha telah dibuat untuk memberi amaran tentang semua kes sedemikian, mungkin terdapat beberapa
kes yang tidak diberi amaran, walaupun G++ menghasilkan kod yang tidak serasi.
Mungkin terdapat juga kes di mana amaran dikeluarkan walaupun kod itu
yang dihasilkan adalah serasi.

Anda harus menulis semula kod anda untuk mengelakkan amaran ini jika anda bimbang tentang
fakta bahawa kod yang dijana oleh G++ mungkin tidak serasi binari dengan kod yang dihasilkan oleh
penyusun lain.

-Wabi juga boleh digunakan dengan nombor versi eksplisit untuk memberi amaran tentang keserasian
dengan tertentu -fabi-versi peringkat, cth -Wabi=2 untuk memberi amaran tentang perubahan yang berkaitan dengan
-fabi-version=2. Menentukan nombor versi juga ditetapkan -fabi-compat-version=n.

Ketidakserasian yang diketahui dalam -fabi-version=2 (yang merupakan lalai daripada GCC 3.4 hingga
4.9) termasuk:

* Templat dengan parameter templat bukan jenis jenis rujukan telah rosak
salah:

int luaran N;
templat struct S {};
kosong n (S ) {2}

Ini telah ditetapkan dalam -fabi-version=3.

* Jenis vektor SIMD yang diisytiharkan menggunakan "__attribute ((vector_size))" telah rosak dalam
cara bukan standard yang tidak membenarkan beban berlebihan fungsi mengambil vektor
daripada saiz yang berbeza.

Mangling telah ditukar masuk -fabi-version=4.

* "__attribute ((const))" dan "noreturn" telah rosak sebagai penentu jenis, dan
"decltype" pengisytiharan biasa telah dilipat.

Isu kekacauan ini telah dibetulkan -fabi-version=5.

* Pembanci berskop diluluskan sebagai argumen kepada fungsi variadik dipromosikan seperti
pembanci tidak berskop, menyebabkan "va_arg" mengadu. Pada kebanyakan sasaran ini tidak
sebenarnya mempengaruhi parameter yang lulus ABI, kerana tiada cara untuk meluluskan hujah
lebih kecil daripada "int".

Selain itu, ABI menukar pek hujah templat yang rosak, "const_cast",
"static_cast", kenaikan/pengurangan awalan dan fungsi skop kelas yang digunakan sebagai a
hujah templat.

Isu-isu ini telah diperbetulkan dalam -fabi-version=6.

* Lambdas dalam skop hujah lalai telah rosak secara tidak betul, dan ABI berubah
kekacauan "nullptr_t".

Isu-isu ini telah diperbetulkan dalam -fabi-version=7.

* Apabila mencampurkan jenis fungsi dengan fungsi-cv-qualifiers, yang tidak layak
jenis fungsi telah salah dilayan sebagai calon pengganti.

Ini telah ditetapkan dalam -fabi-version=8.

Ia juga memberi amaran tentang perubahan berkaitan psABI. psABI yang diketahui berubah pada ketika ini
termasuk:

* Untuk SysV/x86-64, kesatuan dengan ahli "ganda panjang" dihantar dalam ingatan sebagai
dinyatakan dalam psABI. Sebagai contoh:

kesatuan U {
panjang berganda ld;
int i;
};

"union U" sentiasa dilalui dalam ingatan.

-Wabi-tag (C++ dan Objektif-C++ sahaja)
Beri amaran apabila jenis dengan teg ABI digunakan dalam konteks yang tidak mempunyai teg ABI tersebut.
Lihat C + + Atribut untuk maklumat lanjut tentang tag ABI.

-Wctor-dtor-privacy (C++ dan Objektif-C++ sahaja)
Beri amaran apabila kelas kelihatan tidak boleh digunakan kerana semua pembina atau pemusnah di dalamnya
kelas adalah peribadi, dan ia tidak mempunyai rakan mahupun fungsi ahli statik awam.
Juga memberi amaran jika tiada kaedah bukan persendirian, dan terdapat sekurang-kurangnya seorang ahli persendirian
fungsi yang bukan pembina atau pemusnah.

-Wdelete-bukan-maya-dtor (C++ dan Objektif-C++ sahaja)
Beri amaran apabila "padam" digunakan untuk memusnahkan contoh kelas yang mempunyai maya
fungsi dan pemusnah bukan maya. Adalah tidak selamat untuk memadamkan contoh terbitan
kelas melalui penunjuk ke kelas asas jika kelas asas tidak mempunyai maya
pemusnah. Amaran ini didayakan oleh -Dinding.

-Imbuhan-akhiran (C++ dan Objektif-C++ sahaja)
Beri amaran apabila rentetan atau aksara literal diikuti dengan akhiran ud yang tidak
mulakan dengan garis bawah. Sebagai sambungan pematuhan, GCC menganggap akhiran tersebut sebagai
token prapemprosesan berasingan untuk mengekalkan keserasian ke belakang dengan kod
yang menggunakan pemformatan makro daripada " ". Sebagai contoh:

#define __STDC_FORMAT_MACROS
#termasuk
#sertakan

int utama () {
int64_t i64 = 123;
printf("Int64 saya: %"PRID64"\n", i64);
}

Dalam kes ini, "PRId64" dianggap sebagai token prapemprosesan yang berasingan.

Amaran ini didayakan secara lalai.

-Wnarrowing (C++ dan Objektif-C++ sahaja)
Beri amaran apabila penukaran penyempitan yang dilarang oleh C++11 berlaku dalam { }, contohnya

int i = { 2.2 }; // ralat: menyempitkan daripada dua kali ganda kepada int

Bendera ini termasuk dalam -Dinding dan -Wc++11-compat.

Dengan -std=c++11, -Wno-menyempit menindas diagnostik yang diperlukan oleh standard.
Ambil perhatian bahawa ini tidak menjejaskan makna kod yang terbentuk dengan baik; menyempitkan penukaran
masih dianggap tidak berbentuk dalam konteks SFINAE.

-Wnoexcept (C++ dan Objektif-C++ sahaja)
Beri amaran apabila ungkapan noexcept dinilai palsu kerana panggilan ke fungsi
yang tidak mempunyai spesifikasi pengecualian bukan balingan (iaitu "buang()" atau
"noexcept") tetapi diketahui oleh pengkompil untuk tidak pernah membuang pengecualian.

-Wnon-virtual-dtor (C++ dan Objektif-C++ sahaja)
Beri amaran apabila kelas mempunyai fungsi maya dan pemusnah bukan maya yang boleh diakses
sendiri atau dalam kelas asas polimorfik yang boleh diakses, dalam hal ini adalah mungkin tetapi
tidak selamat untuk memadamkan contoh kelas terbitan melalui penunjuk ke kelas itu sendiri
atau kelas asas. Amaran ini didayakan secara automatik jika -Weffc++ dinyatakan.

-Wreorder (C++ dan Objektif-C++ sahaja)
Beri amaran apabila susunan pemula ahli yang diberikan dalam kod tidak sepadan dengan pesanan
di mana mereka mesti dilaksanakan. Sebagai contoh:

struct A {
int i;
int j;
A(): j (0), i (1) { }
};

Pengkompil menyusun semula pemula ahli untuk "i" dan "j" untuk memadankan
perintah pengisytiharan ahli-ahli, mengeluarkan amaran mengenainya. Amaran ini adalah
didayakan oleh -Dinding.

-fext-numeric-huruf (C++ dan Objektif-C++ sahaja)
Terima akhiran nombor tersurat khayalan, titik tetap atau mesin sebagai GNU
sambungan. Apabila pilihan ini dimatikan akhiran ini dianggap sebagai pengguna C++11-
akhiran berangka literal yang ditakrifkan. Ini dihidupkan secara lalai untuk semua dialek pra-C++11
dan semua dialek GNU: -std=c++98, -std=gnu++98, -std=gnu++11, -std=gnu++14. ini
pilihan dimatikan secara lalai untuk ISO C++11 dan seterusnya (-std=c++11, ...).

Berikut -W... pilihan tidak terjejas oleh -Dinding.

-Weffc++ (C++ dan Objektif-C++ sahaja)
Beri amaran tentang pelanggaran garis panduan gaya berikut daripada Scott Meyers' Berkesan
C + + siri buku:

* Tentukan pembina salinan dan pengendali tugasan untuk kelas dengan dinamik-
ingatan yang diperuntukkan.

* Lebih suka pemula daripada tugasan dalam pembina.

* Minta "operator=" mengembalikan rujukan kepada *ini.

* Jangan cuba memulangkan rujukan apabila anda mesti mengembalikan objek.

* Bezakan antara bentuk awalan dan postfix bagi operator kenaikan dan pengurangan.

* Jangan sekali-kali membebankan "&&", "||", atau ",".

Pilihan ini juga membolehkan -Wnon-virtual-dtor, yang juga merupakan salah satu daripada C++ yang berkesan
cadangan. Walau bagaimanapun, semakan dilanjutkan untuk memberi amaran tentang kekurangan maya
pemusnah dalam kelas asas bukan polimorfik yang boleh diakses juga.

Apabila memilih pilihan ini, ketahui bahawa pengepala perpustakaan standard tidak mematuhi semua
garis panduan ini; guna grep -v untuk menapis amaran tersebut.

-Wstrict-null-sentinel (C++ dan Objektif-C++ sahaja)
Beri amaran tentang penggunaan "NULL" yang tidak dibuang sebagai sentinel. Apabila menyusun hanya dengan GCC
ini adalah sentinel yang sah, kerana "NULL" ditakrifkan kepada "__null". Walaupun ia adalah batal
pemalar penunjuk dan bukannya penuding nol, ia dijamin mempunyai saiz yang sama
sebagai penunjuk. Tetapi penggunaan ini tidak mudah alih merentasi penyusun yang berbeza.

-Wno-bukan-template-rakan (C++ dan Objektif-C++ sahaja)
Lumpuhkan amaran apabila fungsi rakan bukan templat diisytiharkan dalam templat.
Sejak kemunculan sokongan spesifikasi templat eksplisit dalam G++, jika nama
rakan ialah id yang tidak layak (iaitu, rakan foo(int)), spesifikasi bahasa C++
menuntut rakan tersebut mengisytiharkan atau mentakrifkan fungsi bukan templat biasa. (Bahagian
14.5.3). Sebelum G++ melaksanakan spesifikasi eksplisit, unqualified-id boleh jadi
ditafsirkan sebagai pengkhususan tertentu bagi fungsi templat. Kerana ini
tingkah laku tidak akur bukan lagi tingkah laku lalai untuk G++,
-Wnon-template-rakan membenarkan pengkompil menyemak kod sedia ada untuk kemungkinan masalah
tompok dan dihidupkan secara lalai. Tingkah laku pengkompil baharu ini boleh dimatikan dengan
-Wno-bukan-template-rakan, yang menyimpan kod pengkompil konforman tetapi melumpuhkan kod
amaran yang berguna.

-Pelakon ala-Wold (C++ dan Objektif-C++ sahaja)
Beri amaran jika hantaran gaya lama (gaya C) kepada jenis bukan kosong digunakan dalam program C++.
Pelakon gaya baharu ("dynamic_cast", "static_cast", "reinterpret_cast", dan
"const_cast") kurang terdedah kepada kesan yang tidak diingini dan lebih mudah untuk dicari.

-Voverloaded-maya (C++ dan Objektif-C++ sahaja)
Beri amaran apabila pengisytiharan fungsi menyembunyikan fungsi maya daripada kelas asas. Untuk
contoh, dalam:

struct A {
kekosongan maya f();
};

struct B: awam A {
void f(int);
};

versi kelas "A" bagi "f" disembunyikan dalam "B", dan kod seperti:

B* b;
b->f();

gagal untuk menyusun.

-Wno-pmf-penukaran (C++ dan Objektif-C++ sahaja)
Lumpuhkan diagnostik untuk menukar penunjuk terikat kepada fungsi ahli kepada biasa
penunjuk.

-Wsign-promo (C++ dan Objektif-C++ sahaja)
Beri amaran apabila resolusi beban lampau memilih promosi daripada jenis yang tidak ditandatangani atau terbilang kepada
jenis yang ditandatangani, atas penukaran kepada jenis yang tidak ditandatangani dengan saiz yang sama. Sebelumnya
versi G++ cuba untuk mengekalkan unsignedness, tetapi piawaian mandat semasa
tingkah laku.

Pilihan Mengawal Objektif-C dan Objektif-C++ Dialek
(NOTA: Manual ini tidak menerangkan bahasa Objective-C dan Objective-C++
diri sendiri.

Bahagian ini menerangkan pilihan baris arahan yang hanya bermakna untuk Objektif-C
dan program Objektif-C++. Anda juga boleh menggunakan kebanyakan GNU bebas bahasa
pilihan pengkompil. Sebagai contoh, anda mungkin menyusun fail some_class.m seperti ini:

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

Dalam contoh ini, -fgnu-runtime ialah pilihan yang dimaksudkan hanya untuk Objektif-C dan Objektif-C++
program; anda boleh menggunakan pilihan lain dengan mana-mana bahasa yang disokong oleh GCC.

Ambil perhatian bahawa memandangkan Objektif-C ialah lanjutan daripada bahasa C, kompilasi Objektif-C
juga boleh menggunakan pilihan khusus untuk bahagian hadapan C (cth, -Wtradisional). Begitu juga,
Kompilasi Objektif-C++ boleh menggunakan pilihan khusus C++ (cth, -Wabi).

Berikut adalah senarai pilihan yang hanyalah untuk menyusun Objective-C dan Objective-C++
program:

-fconstant-string-class=nama kelas
Penggunaan nama kelas sebagai nama kelas untuk dijadikan instantiat bagi setiap rentetan literal
ditentukan dengan sintaks "@"..."". Nama kelas lalai ialah "NXConstantString" jika
masa jalan GNU sedang digunakan dan "NSConstantString" jika masa jalan NeXT sedang
digunakan (lihat di bawah). The -fconstant-cfstrings pilihan, jika turut hadir, mengatasi pilihan
-fconstant-string-class menetapkan dan menyebabkan huruf "@"..."" dibentangkan sebagai pemalar
Rentetan CoreFoundation.

-fgnu-runtime
Hasilkan kod objek yang serasi dengan masa jalan GNU Objective-C standard. Ini adalah
lalai untuk kebanyakan jenis sistem.

-fnext-runtime
Hasilkan output yang serasi dengan masa jalan NeXT. Ini ialah lalai untuk berasaskan NeXT
sistem, termasuk Darwin dan Mac OS X. Makro "__NEXT_RUNTIME__" dipratakrifkan jika
(dan hanya jika) pilihan ini digunakan.

-penerima-fno-nil
Andaikan bahawa semua mesej Objektif-C dihantar ("[mesej penerima: arg]") dalam ini
unit terjemahan memastikan bahawa penerima tidak "tiada". Ini membolehkan lebih banyak lagi
titik masuk yang cekap dalam masa jalan yang akan digunakan. Pilihan ini hanya tersedia dalam
bersamaan dengan masa jalan NeXT dan versi ABI 0 atau 1.

-fobjc-abi-version=n
Gunakan versi n daripada Objective-C ABI untuk masa jalan yang dipilih. Pilihan ini adalah
pada masa ini hanya disokong untuk masa jalan NeXT. Dalam kes itu, Versi 0 ialah
tradisional (32-bit) ABI tanpa sokongan untuk sifat dan lain-lain Objektif-C 2.0
tambahan. Versi 1 ialah ABI tradisional (32-bit) dengan sokongan untuk sifat dan
tambahan Objektif-C 2.0 yang lain. Versi 2 ialah ABI moden (64-bit). Jika tiada
ditentukan, lalainya ialah Versi 0 pada mesin sasaran 32-bit dan Versi 2 pada 64-bit
mesin sasaran.

-fobjc-call-cxx-cdtors
Untuk setiap kelas Objektif-C, semak sama ada mana-mana pembolehubah contohnya ialah objek C++
dengan pembina lalai bukan remeh. Jika ya, sintesiskan "- (id) khas
.cxx_construct" kaedah contoh yang menjalankan pembina lalai bukan remeh pada mana-mana
pembolehubah contoh sedemikian, mengikut urutan, dan kemudian kembalikan "diri". Begitu juga, semak jika ada
pembolehubah contoh ialah objek C++ dengan pemusnah bukan remeh, dan jika ya, sintesiskan
kaedah khas "- (void) .cxx_destruct" yang menjalankan semua pemusnah lalai tersebut, dalam
susunan terbalik.

Kaedah "- (id) .cxx_construct" dan "- (void) .cxx_destruct" hanya dijana
beroperasi pada pembolehubah contoh yang diisytiharkan dalam kelas Objektif-C semasa, dan bukan mereka
diwarisi daripada superclass. Ia adalah tanggungjawab masa jalan Objektif-C untuk
gunakan semua kaedah sedemikian dalam hierarki pewarisan objek. "- (id)
Kaedah .cxx_construct" digunakan oleh masa jalan serta-merta selepas objek baharu
contoh diperuntukkan; kaedah "- (void) .cxx_destruct" digunakan serta-merta
sebelum masa jalan mendelokasikan contoh objek.

Setakat penulisan ini, hanya masa jalan NeXT pada Mac OS X 10.4 dan kemudian mempunyai sokongan untuk
menggunakan kaedah "- (id) .cxx_construct" dan "- (void) .cxx_destruct".

-fobjc-direct-dispatch
Benarkan lompatan pantas ke penghantar mesej. Di Darwin ini dicapai melalui
halaman kom.

-fobjc-pengecualian
Dayakan sokongan sintaksis untuk pengendalian pengecualian berstruktur dalam Objektif-C, serupa dengan
apa yang ditawarkan oleh C++ dan Java. Pilihan ini diperlukan untuk menggunakan Objektif-C
kata kunci @try, @throw, @catch, @finally dan @synchronized. Pilihan ini tersedia
dengan kedua-dua masa jalan GNU dan masa jalan NeXT (tetapi tidak tersedia bersama-sama dengan
masa jalan NeXT pada Mac OS X 10.2 dan lebih awal).

-fobjc-gc
Dayakan pengumpulan sampah (GC) dalam program Objective-C dan Objective-C++. Pilihan ini
hanya tersedia dengan masa jalan NeXT; masa jalan GNU mempunyai sampah yang berbeza
pelaksanaan koleksi yang tidak memerlukan bendera pengkompil khas.

-fobjc-nilcheck
Untuk masa jalan NeXT dengan versi 2 ABI, semak kaedah penerima nol dalam
seruan sebelum melakukan panggilan kaedah sebenar. Ini adalah lalai dan boleh
kurang upaya menggunakan -fno-objc-nilcheck. Kaedah kelas dan panggilan super tidak pernah disemak
untuk tiada dengan cara ini tidak kira apa bendera ini ditetapkan. Pada masa ini bendera ini berfungsi
tiada apa-apa apabila masa jalan GNU, atau versi lama masa jalan NeXT ABI, digunakan.

-fobjc-std=objc1
Mematuhi sintaks bahasa Objektif-C 1.0, bahasa yang diiktiraf oleh GCC 4.0.
Ini hanya menjejaskan penambahan Objektif-C pada bahasa C/C++; ia tidak menjejaskan
pematuhan kepada piawaian C/C++, yang dikawal oleh dialek C/C++ yang berasingan
bendera pilihan. Apabila pilihan ini digunakan dengan Objective-C atau Objective-C++
pengkompil, sebarang sintaks Objektif-C yang tidak diiktiraf oleh GCC 4.0 ditolak. ini
berguna jika anda perlu memastikan bahawa kod Objektif-C anda boleh dikompilasi
versi lama GCC.

-freplace-objc-classes
Pancarkan arahan penanda khas ld(1) bukan untuk memaut secara statik dalam objek yang terhasil
fail, dan benarkan dyld(1) untuk memuatkannya pada masa larian sebaliknya. Ini digunakan dalam
bersempena dengan mod Betulkan-dan-Teruskan penyahpepijatan, di mana fail objek masuk
soalan boleh disusun semula dan dimuat semula secara dinamik dalam perjalanan program
pelaksanaan, tanpa perlu memulakan semula program itu sendiri. Pada masa ini, Betulkan-dan-
Kefungsian Teruskan hanya tersedia bersama-sama dengan masa jalan NeXT pada Mac
OS X 10.3 dan lebih baru.

-fzero-pautan
Apabila menyusun untuk masa jalan NeXT, pengkompil biasanya menggantikan panggilan ke
"objc_getClass("...")" (apabila nama kelas diketahui pada masa penyusunan) dengan
rujukan kelas statik yang dimulakan pada masa muat, yang meningkatkan masa jalan
prestasi. Menentukan -fzero-pautan bendera menyekat tingkah laku dan punca ini
panggilan ke "objc_getClass("...")" untuk dikekalkan. Ini berguna dalam Zero-Link
mod penyahpepijatan, kerana ia membenarkan pelaksanaan kelas individu diubah suai
semasa pelaksanaan program. Masa jalan GNU pada masa ini sentiasa mengekalkan panggilan ke
"objc_get_class("...")" tanpa mengira pilihan baris arahan.

-fno-local-ivars
Secara lalai pembolehubah contoh dalam Objektif-C boleh diakses seolah-olah ia tempatan
pembolehubah dari dalam kaedah kelas yang diisytiharkan masuk. Ini boleh menyebabkan
membayangi antara pembolehubah contoh dan pembolehubah lain yang diisytiharkan sama ada secara tempatan
di dalam kaedah kelas atau secara global dengan nama yang sama. Menentukan -fno-local-ivars
bendera melumpuhkan tingkah laku ini dengan itu mengelakkan isu pembayang berubah-ubah.

-fivar-keterlihatan=[awam|dilindungi|swasta|pakej]
Tetapkan keterlihatan pembolehubah contoh lalai kepada pilihan yang ditentukan supaya contoh itu
pembolehubah yang diisytiharkan di luar skop mana-mana arahan pengubah suai akses lalai kepada
keterlihatan yang ditentukan.

-gen-decls
Buang pengisytiharan antara muka untuk semua kelas yang dilihat dalam fail sumber kepada fail bernama
sourcename.decl.

-Wassign-pintasan (Objektif-C dan Objektif-C++ sahaja)
Beri amaran apabila tugasan Objektif-C dipintas oleh pemungut sampah.

-Wno-protokol (Objektif-C dan Objektif-C++ sahaja)
Jika kelas diisytiharkan untuk melaksanakan protokol, amaran dikeluarkan untuk setiap kaedah
dalam protokol yang tidak dilaksanakan oleh kelas. Tingkah laku lalai ialah
mengeluarkan amaran untuk setiap kaedah yang tidak dilaksanakan secara eksplisit dalam kelas, walaupun jika a
pelaksanaan kaedah diwarisi daripada superclass. Jika anda menggunakan -Wno-protokol
pilihan, maka kaedah yang diwarisi daripada superclass dianggap dilaksanakan,
dan tiada amaran dikeluarkan untuk mereka.

-Wselector (Objektif-C dan Objektif-C++ sahaja)
Beri amaran jika berbilang kaedah berlainan jenis untuk pemilih yang sama ditemui semasa
kompilasi. Semakan dilakukan pada senarai kaedah di peringkat akhir
kompilasi. Selain itu, semakan dilakukan untuk setiap pemilih yang muncul dalam a
Ungkapan "@selector(...)", dan kaedah yang sepadan untuk pemilih itu telah
ditemui semasa penyusunan. Kerana semakan ini mengimbas jadual kaedah hanya pada penghujungnya
daripada kompilasi, amaran ini tidak dihasilkan jika peringkat akhir penyusunan adalah
tidak tercapai, contohnya kerana ralat ditemui semasa penyusunan, atau kerana
-fsyntax sahaja pilihan sedang digunakan.

-Padanan-pemilih-wstrict (Objektif-C dan Objektif-C++ sahaja)
Beri amaran jika berbilang kaedah dengan hujah yang berbeza dan/atau jenis pulangan ditemui untuk a
pemilih yang diberikan apabila cuba menghantar mesej menggunakan pemilih ini kepada penerima
taip "id" atau "Kelas". Apabila bendera ini dimatikan (iaitu kelakuan lalai), the
pengkompil meninggalkan amaran sedemikian jika sebarang perbezaan yang ditemui terhad kepada jenis yang berkongsi
saiz dan penjajaran yang sama.

-Wundeclared-pemilih (Objektif-C dan Objektif-C++ sahaja)
Beri amaran jika ungkapan "@selector(...)" merujuk kepada pemilih yang tidak diisytiharkan ditemui. A
pemilih dianggap tidak diisytiharkan jika tiada kaedah dengan nama itu telah diisytiharkan sebelum ini
ungkapan "@selector(...)", sama ada secara eksplisit dalam @interface atau @protocol
pengisytiharan, atau secara tersirat dalam bahagian @pelaksanaan. Pilihan ini sentiasa berfungsi
semakannya sebaik sahaja ungkapan "@selector(...)" ditemui, manakala -Wselector hanyalah
melakukan pemeriksaannya pada peringkat akhir penyusunan. Ini juga menguatkuasakan pengekodan
konvensyen gaya bahawa kaedah dan pemilih mesti diisytiharkan sebelum digunakan.

-print-objc-runtime-info
Hasilkan pengepala C yang menerangkan struktur terbesar yang dilalui oleh nilai, jika ada.

Pilihan kepada Mengawal Diagnostik mesej-mesej Pemformatan
Secara tradisinya, mesej diagnostik telah diformat tanpa mengira peranti output
aspek (cth lebarnya, ...). Anda boleh menggunakan pilihan yang diterangkan di bawah untuk mengawal
algoritma pemformatan untuk mesej diagnostik, cth berapa banyak aksara setiap baris, berapa kerap
maklumat lokasi sumber hendaklah dilaporkan. Ambil perhatian bahawa beberapa bahagian hadapan bahasa mungkin
tidak menghormati pilihan ini.

-fmessage-length=n
Cuba formatkan mesej ralat supaya muat pada baris kira-kira n watak. Jika n is
sifar, maka tiada pembalut baris dilakukan; setiap mesej ralat muncul pada satu baris.
Ini adalah lalai untuk semua hujung hadapan.

-fdiagnostics-show-location=sekali
Hanya bermakna dalam mod pembalut baris. Arahkan pelapor mesej diagnostik untuk
mengeluarkan maklumat lokasi sumber sekali; iaitu, sekiranya mesej itu terlalu panjang untuk dimuatkan
pada satu baris fizikal dan perlu dibalut, lokasi sumber tidak akan dipancarkan
(sebagai awalan) sekali lagi, berulang-ulang, dalam baris sambungan berikutnya. Ini adalah
tingkah laku lalai.

-fdiagnostics-show-location=setiap baris
Hanya bermakna dalam mod pembalut baris. Arahkan pelapor mesej diagnostik untuk
mengeluarkan maklumat lokasi sumber yang sama (sebagai awalan) untuk garis fizikal yang terhasil
daripada proses memecahkan mesej yang terlalu panjang untuk dimuatkan pada satu baris.

-fdiagnostik-warna[=APABILA]
-warna-fno-diagnostik
Gunakan warna dalam diagnostik. APABILA is pernah, sentiasa, Atau auto. Lalai bergantung pada bagaimana
pengkompil telah dikonfigurasikan, ia boleh menjadi mana-mana di atas APABILA pilihan atau juga
pernah if GCC_COLORS pembolehubah persekitaran tidak terdapat dalam persekitaran, dan auto
sebaliknya. auto bermaksud menggunakan warna hanya apabila ralat standard adalah terminal. The
bentuk -fdiagnostik-warna dan -warna-fno-diagnostik adalah alias untuk
-fdiagnostics-color=sentiasa dan -fdiagnostics-color=tidak pernah, Masing-masing.

Warna ditakrifkan oleh pembolehubah persekitaran GCC_COLORS. Nilainya ialah titik bertindih-
senarai keupayaan yang dipisahkan dan subrentetan Pilih Rendition Grafik (SGR). SGR
arahan ditafsirkan oleh terminal atau emulator terminal. (Lihat bahagian dalam
dokumentasi terminal teks anda untuk nilai yang dibenarkan dan maknanya sebagai
atribut aksara.) Nilai subrentetan ini ialah integer dalam perwakilan perpuluhan
dan boleh digabungkan dengan koma bertitik. Nilai biasa untuk digabungkan termasuk 1 untuk
berani, 4 untuk garis bawah, 5 untuk kejap, 7 untuk songsang, 39 untuk warna latar depan lalai, 30
kepada 37 untuk warna latar depan, 90 kepada 97 untuk warna latar depan mod 16 warna, 38; 5; 0 kepada
38; 5; 255 untuk warna latar depan mod 88 warna dan 256 warna, 49 untuk latar belakang lalai
warna, 40 kepada 47 untuk warna latar belakang, 100 kepada 107 untuk warna latar belakang mod 16 warna,
dan 48; 5; 0 kepada 48; 5; 255 untuk warna latar belakang mod 88 warna dan 256 warna.

Lalai GCC_COLORS is

error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01

di mana 01; 31 adalah merah berani, 01; 35 adalah magenta tebal, 01; 36 adalah cyan berani, 01; 32 adalah berani
hijau dan 01 adalah berani. Tetapan GCC_COLORS kepada rentetan kosong melumpuhkan warna.
Keupayaan yang disokong adalah seperti berikut.

"error="
Subrentetan SGR untuk ralat: penanda.

"amaran="
Subrentetan SGR untuk amaran: penanda.

"nota="
Subrentetan SGR untuk nota: penanda.

"karet="
Subrentetan SGR untuk garisan karet.

"locus="
Subrentetan SGR untuk maklumat lokasi, fail:line or fail:line:column dan lain-lain.

"quote="
Subrentetan SGR untuk maklumat yang dicetak dalam petikan.

-fno-diagnostics-show-option
Secara lalai, setiap diagnostik yang dikeluarkan termasuk teks yang menunjukkan pilihan baris arahan
yang mengawal diagnostik secara langsung (jika pilihan sedemikian diketahui oleh diagnostik
mesin). Menentukan -fno-diagnostics-show-option bendera menindas itu
tingkah laku.

-fno-diagnostics-show-caret
Secara lalai, setiap diagnostik yang dipancarkan termasuk talian sumber asal dan karet '^'
menunjukkan lajur. Pilihan ini menyekat maklumat ini. Garis sumber ialah
dipenggal ke n watak, jika -fmessage-length=n pilihan diberi. Apabila keluaran
dilakukan ke terminal, lebar adalah terhad kepada lebar yang diberikan oleh COLUMNS
pembolehubah persekitaran atau, jika tidak ditetapkan, kepada lebar terminal.

Pilihan kepada Meminta or Menindas Amaran
Amaran ialah mesej diagnostik yang melaporkan pembinaan yang tidak wujud
salah tetapi itu berisiko atau mencadangkan mungkin terdapat ralat.

Pilihan bebas bahasa berikut tidak mendayakan amaran khusus tetapi mengawal
jenis diagnostik yang dihasilkan oleh GCC.

-fsyntax sahaja
Semak kod untuk ralat sintaks, tetapi jangan lakukan apa-apa selain daripada itu.

-fmax-errors=n
Mengehadkan bilangan maksimum mesej ralat kepada n, pada ketika itu GCC akan menyelamatkan diri
daripada cuba meneruskan pemprosesan kod sumber. Jika n ialah 0 (lalai),
tiada had bilangan mesej ralat yang dihasilkan. Jika -Wfatal-kesilapan juga
ditentukan, maka -Wfatal-kesilapan diutamakan daripada pilihan ini.

-w Halang semua mesej amaran.

-Werror
Jadikan semua amaran sebagai kesilapan.

-Werror=
Jadikan amaran yang dinyatakan sebagai ralat. Penentu bagi amaran dilampirkan;
contohnya -Werror=suis bertukar amaran dikawal oleh -Wswitch ke dalam kesilapan.
Suis ini mengambil bentuk negatif, untuk digunakan untuk menafikan -Werror untuk amaran khusus;
contohnya -Wno-error=suis membuat -Wswitch amaran bukan kesilapan, walaupun ketika itu -Werror
berkuat kuasa.

Mesej amaran untuk setiap amaran boleh dikawal termasuk pilihan yang mengawal
amaran itu. Pilihan itu kemudiannya boleh digunakan dengan -Werror= dan -Wno-error= Seperti yang dinyatakan
di atas. (Pencetakan pilihan dalam mesej amaran boleh dilumpuhkan menggunakan
-fno-diagnostics-show-option bendera.)

Perhatikan bahawa menyatakan -Werror=foo secara automatik membayangkan -Wfoo. Walau bagaimanapun, -Wno-error=foo
tidak membayangkan apa-apa.

-Wfatal-kesilapan
Pilihan ini menyebabkan pengkompil membatalkan kompilasi pada ralat pertama berlaku
daripada cuba meneruskan dan mencetak mesej ralat selanjutnya.

Anda boleh meminta banyak amaran khusus dengan pilihan bermula dengan -W, Sebagai contoh
-Wimplisit untuk meminta amaran mengenai pengisytiharan tersirat. Setiap amaran khusus ini
pilihan juga mempunyai permulaan bentuk negatif -Wno- untuk mematikan amaran; sebagai contoh,
-Wno-tersirat. Manual ini hanya menyenaraikan satu daripada dua borang, yang mana bukan lalai.
Untuk pilihan khusus bahasa lanjut juga rujuk C + + Dialek Pilihan dan Objektif-C
dan Objektif-C++ Dialek Pilihan.

Beberapa pilihan, seperti -Dinding dan -Wextra, hidupkan pilihan lain, seperti -Wunused, Yang
boleh menghidupkan pilihan lanjut, seperti -Wunused-nilai. Kesan gabungan positif dan
bentuk negatif ialah pilihan yang lebih khusus mempunyai keutamaan berbanding pilihan yang kurang khusus,
bebas daripada kedudukan mereka dalam baris arahan. Untuk pilihan kekhususan yang sama,
yang terakhir berkuat kuasa. Pilihan didayakan atau dilumpuhkan melalui pragma berkuat kuasa seolah-olah ia
muncul di penghujung baris arahan.

Apabila pilihan amaran yang tidak dikenali diminta (cth, -Wunknown-warning), GCC mengeluarkan a
diagnostik yang menyatakan bahawa pilihan tidak diiktiraf. Walau bagaimanapun, jika -Wno- borang digunakan,
tingkah laku adalah sedikit berbeza: tiada diagnostik dihasilkan untuk -Wno-unknown-warning
melainkan diagnostik lain sedang dihasilkan. Ini membolehkan penggunaan yang baru -Wno- pilihan
dengan penyusun lama, tetapi jika berlaku masalah, pengkompil memberi amaran bahawa pengkompil tidak dikenali
pilihan ada.

-Wpedantik
-pedantik
Keluarkan semua amaran yang dituntut oleh ISO C dan ISO C++ yang ketat; menolak semua program yang
gunakan sambungan terlarang, dan beberapa program lain yang tidak mengikut ISO C dan ISO
C++. Untuk ISO C, ikut versi standard ISO C yang ditentukan oleh mana-mana -std
pilihan yang digunakan.

Program ISO C dan ISO C++ yang sah harus disusun dengan betul dengan atau tanpa pilihan ini
(walaupun sebilangan kecil memerlukan -ansi atau -std pilihan yang menyatakan versi yang diperlukan bagi
ISO C). Walau bagaimanapun, tanpa pilihan ini, sambungan GNU tertentu dan C tradisional dan
Ciri C++ juga disokong. Dengan pilihan ini, mereka ditolak.

-Wpedantik tidak menyebabkan mesej amaran untuk penggunaan kata kunci ganti yang
nama bermula dan berakhir dengan __. Amaran pedantic juga dilumpuhkan dalam ungkapan
yang mengikuti "__sambungan__". Walau bagaimanapun, hanya fail pengepala sistem harus menggunakan ini
laluan melarikan diri; program aplikasi harus mengelakkannya.

Sesetengah pengguna cuba menggunakan -Wpedantik untuk menyemak program untuk pematuhan ISO C yang ketat. mereka
tidak lama lagi mendapati ia tidak melakukan apa yang mereka mahu: ia menemui beberapa amalan bukan ISO,
tetapi bukan semua---hanya yang mempunyai ISO C memerlukan diagnostik, dan beberapa yang lain untuk
diagnostik yang mana telah ditambah.

Ciri untuk melaporkan sebarang kegagalan untuk mematuhi ISO C mungkin berguna dalam beberapa keadaan,
tetapi akan memerlukan kerja tambahan yang banyak dan akan agak berbeza daripada
-Wpedantik. Kami tidak mempunyai rancangan untuk menyokong ciri sedemikian dalam masa terdekat.

Di mana piawaian dinyatakan dengan -std mewakili dialek lanjutan GNU bagi C, seperti
gnu90 or gnu99, ada yang sepadan asas standard, versi ISO C yang
dialek lanjutan GNU adalah berasaskan. Amaran daripada -Wpedantik diberikan di mana mereka berada
diperlukan oleh standard asas. (Tidak masuk akal untuk amaran sedemikian diberikan
hanya untuk ciri yang bukan dalam dialek GNU C yang ditentukan, kerana menurut definisi GNU
dialek C termasuk semua ciri yang disokong oleh pengkompil dengan pilihan yang diberikan, dan
tiada apa yang perlu diberi amaran.)

-kesilapan-pedantik
Berikan ralat apabila asas standard (Lihat -Wpedantik) memerlukan diagnostik, dalam
sesetengah kes di mana terdapat tingkah laku yang tidak ditentukan pada masa penyusunan dan dalam beberapa kes lain
yang tidak menghalang penyusunan program yang sah mengikut standard.
Ini tidak bersamaan dengan -Werror=pedantic, kerana terdapat ralat yang didayakan oleh ini
pilihan dan tidak didayakan oleh yang terakhir dan sebaliknya.

-Dinding
Ini membolehkan semua amaran tentang pembinaan yang dipertimbangkan oleh sesetengah pengguna
dipersoalkan, dan yang mudah dielakkan (atau diubah suai untuk menghalang amaran), walaupun dalam
bersama dengan makro. Ini juga membolehkan beberapa amaran khusus bahasa yang diterangkan
in C + + Dialek Pilihan dan Objektif-C dan Objektif-C++ Dialek Pilihan.

-Dinding menghidupkan bendera amaran berikut:

-Waddress -Warray-bounds=1 (hanya dengan -O2) -Wc++11-compat -Wc++14-compat
-Wchar-subskrip -Wenum-bandingkan (dalam C/ObjC; ini dihidupkan secara lalai dalam C++)
-Wimplicit-int (C dan Objektif-C sahaja) -Pengisytiharan-fungsi-wimplicit (C dan
Objektif-C sahaja) -Wkomen -Wformat -Wmain (hanya untuk C/ObjC dan melainkan
-berdiri bebas) -Wmungkin-tidak dimulakan -Wmissing-braces (hanya untuk C/ObjC) -Wnonnull
-Wopenmp-simd -Kurungan -Wpointer-tanda -Wreorder -jenis wreturn -Wsequence-point
-Wsign-bandingkan (hanya dalam C++) -Pengalian ketat -Limpahan-Wstrict=1 -Wswitch
-Wtrigraf -Wuninitialized -Wunknown-pragmas -Wunused-fungsi -Wunused-label
-Wunused-nilai -Wunused-pembolehubah -Wvolatile-register-var

Ambil perhatian bahawa beberapa bendera amaran tidak tersirat oleh -Dinding. Sebahagian daripada mereka memberi amaran tentang
pembinaan yang secara amnya tidak dianggap boleh dipersoalkan oleh pengguna, tetapi yang
kadangkala anda mungkin ingin menyemak; yang lain memberi amaran tentang pembinaan yang
perlu atau sukar untuk dielakkan dalam beberapa kes, dan tidak ada cara mudah untuk mengubah suai
kod untuk menyekat amaran. Sebahagian daripadanya didayakan oleh -Wextra tetapi ramai daripada mereka
mesti didayakan secara individu.

-Wextra
Ini membolehkan beberapa bendera amaran tambahan yang tidak didayakan oleh -Dinding. (Pilihan ini digunakan
untuk dipanggil -W. Nama lama masih disokong, tetapi nama yang lebih baharu lebih banyak
penjelasan.)

-Wclobbered -Badan kosong -Wignore-qualifiers -Wmissing-field-initializers
-Wmissing-parameter-type (C sahaja) -Pengisytiharan ala-Wold (C sahaja) -Woverride-init
-Wsign-bandingkan -Batas jenis -Wuninitialized -Wunused-parameter (hanya dengan -Wunused or
-Dinding) -Wunused-tetapi-set-parameter (hanya dengan -Wunused or -Dinding)

pilihan -Wextra juga mencetak mesej amaran untuk kes berikut:

* Penunjuk dibandingkan dengan integer sifar dengan "<", "<=", ">", atau ">=".

* (C++ sahaja) Enumerator dan bukan enumerator kedua-duanya muncul dalam keadaan bersyarat
ungkapan.

* (C++ sahaja) Pangkalan maya yang tidak jelas.

* (C++ sahaja) Melanggan tatasusunan yang telah diisytiharkan "daftar".

* (C++ sahaja) Mengambil alamat pembolehubah yang telah diisytiharkan "daftar".

* (C++ sahaja) Kelas asas tidak dimulakan dalam pembina salinan kelas terbitan.

-Wchar-subskrip
Beri amaran jika subskrip tatasusunan mempunyai jenis "char". Ini adalah punca biasa kesilapan, sebagai
pengaturcara sering terlupa bahawa jenis ini ditandatangani pada beberapa mesin. Amaran ini adalah
didayakan oleh -Dinding.

-Wkomen
Beri amaran setiap kali urutan permulaan ulasan /* muncul dalam a /* komen, atau bila-bila masa a
Backslash-Newline muncul dalam a // komen. Amaran ini didayakan oleh -Dinding.

-Wno-liputan-tidak sepadan
Beri amaran jika profil maklum balas tidak sepadan apabila menggunakan -fprofile-penggunaan pilihan. Sekiranya
fail sumber ditukar antara menyusun dengan -fprofile-gen dan dengan -fprofile-penggunaan,
fail dengan maklum balas profil boleh gagal sepadan dengan fail sumber dan GCC tidak boleh
gunakan maklumat maklum balas profil. Secara lalai, amaran ini didayakan dan adalah
dianggap sebagai kesilapan. -Wno-liputan-tidak sepadan boleh digunakan untuk melumpuhkan amaran atau
-Wno-error=liputan-tidak sepadan boleh digunakan untuk melumpuhkan ralat. Melumpuhkan ralat
kerana amaran ini boleh mengakibatkan kod yang kurang dioptimumkan dan berguna hanya dalam kes
perubahan yang sangat kecil seperti pembetulan pepijat pada asas kod sedia ada. Melumpuhkan sepenuhnya
amaran tidak disyorkan.

-Wno-cpp
(C, Objective-C, C++, Objective-C++ dan Fortran sahaja)

Sekat mesej amaran yang dikeluarkan oleh arahan "#warning".

-Wdouble-promotion (C, C++, Objective-C dan Objective-C++ sahaja)
Beri amaran apabila nilai jenis "terapung" secara tersirat dinaikkan kepada "berganda". CPU
dengan unit titik terapung "ketepatan tunggal" 32-bit melaksanakan "terapung" dalam perkakasan,
tetapi meniru "double" dalam perisian. Pada mesin sedemikian, melakukan pengiraan menggunakan
nilai "double" jauh lebih mahal kerana overhed yang diperlukan untuk perisian
emulasi.

Mudah untuk melakukan pengiraan secara tidak sengaja dengan "berganda" kerana titik terapung
literal secara tersirat daripada jenis "double". Contohnya, dalam:

kawasan apungan (jejari apungan)
{
kembali 3.14159 * jejari * jejari;
}

pengkompil melakukan pengiraan keseluruhan dengan "berganda" kerana titik terapung
literal ialah "berganda".

-Wformat
-Wformat=n
Semak panggilan ke "printf" dan "scanf", dsb., untuk memastikan bahawa argumen dibekalkan
mempunyai jenis yang sesuai dengan rentetan format yang ditentukan, dan bahawa penukaran
dinyatakan dalam rentetan format masuk akal. Ini termasuk fungsi standard, dan
yang lain ditentukan oleh atribut format, dalam "printf", "scanf", "strftime" dan
"strfmon" (sambungan X/Buka, bukan dalam standard C) keluarga (atau sasaran lain-
keluarga tertentu). Fungsi mana yang disemak tanpa atribut format
ditentukan bergantung pada versi standard yang dipilih, dan semakan fungsi tersebut
tanpa atribut yang dinyatakan dilumpuhkan oleh -berdiri bebas or -fno-dibina.

Format disemak terhadap ciri format yang disokong oleh GNU libc versi 2.2.
Ini termasuk semua ciri ISO C90 dan C99, serta ciri daripada Unix Tunggal
Spesifikasi dan beberapa sambungan BSD dan GNU. Pelaksanaan perpustakaan lain mungkin tidak
menyokong semua ciri ini; GCC tidak menyokong amaran tentang ciri yang melampaui
batasan perpustakaan tertentu. Namun, jika -Wpedantik digunakan dengan -Wformat,
amaran diberikan tentang ciri format yang bukan dalam versi standard yang dipilih (tetapi tidak
untuk format "strfmon", kerana ia bukan dalam mana-mana versi standard C).

-Wformat=1
-Wformat
Lebih Baik -Wformat adalah bersamaan dengan -Wformat=1, dan -Wno-format adalah bersamaan dengan
-Wformat=0. Sejak -Wformat juga menyemak argumen format nol untuk beberapa
fungsi, -Wformat juga membayangkan -Wnonnull. Beberapa aspek tahap format ini
pemeriksaan boleh dilumpuhkan dengan pilihan: -Wno-format-mengandungi-nul,
-Wno-format-extra-args, dan -Wno-format-sifar-panjang. -Wformat didayakan oleh
-Dinding.

-Wno-format-mengandungi-nul
If -Wformat ditentukan, jangan beri amaran tentang rentetan format yang mengandungi bait NUL.

-Wno-format-extra-args
If -Wformat ditentukan, jangan beri amaran tentang lebihan hujah kepada "printf" atau
fungsi format "scanf". Piawaian C menyatakan bahawa hujah tersebut adalah
diabaikan.

Di mana argumen yang tidak digunakan terletak di antara argumen yang digunakan yang ditentukan dengan $
spesifikasi nombor operan, biasanya amaran masih diberikan, kerana
pelaksanaan tidak dapat mengetahui jenis yang hendak dihantar kepada "va_arg" untuk melangkau yang tidak digunakan
hujah. Walau bagaimanapun, dalam kes format "scanf", pilihan ini menyekat
amaran jika argumen yang tidak digunakan adalah semua penunjuk, sejak Unix Tunggal
Spesifikasi mengatakan bahawa hujah yang tidak digunakan itu dibenarkan.

-Wno-format-sifar-panjang
If -Wformat ditentukan, jangan beri amaran tentang format panjang sifar. Piawaian C
menentukan bahawa format sifar panjang dibenarkan.

-Wformat=2
enable -Wformat ditambah semakan format tambahan. Pada masa ini bersamaan dengan -Wformat
-Wformat-bukan huruf -Wformat-security -Wformat-y2k.

-Wformat-bukan huruf
If -Wformat ditentukan, juga memberi amaran jika rentetan format bukan rentetan literal
dan sebagainya tidak boleh disemak, melainkan fungsi format mengambil argumen formatnya sebagai
"va_list".

-Wformat-security
If -Wformat ditentukan, juga memberi amaran tentang penggunaan fungsi format yang mewakili
kemungkinan masalah keselamatan. Pada masa ini, ini memberi amaran tentang panggilan ke "printf" dan
"scanf" berfungsi di mana rentetan format bukan rentetan literal dan tiada
format argumen, seperti dalam "printf (foo);". Ini mungkin lubang keselamatan jika
rentetan format datang daripada input yang tidak dipercayai dan mengandungi %n. (Ini pada masa ini a
subset daripada apa -Wformat-bukan huruf memberi amaran tentang, tetapi pada masa hadapan amaran mungkin
ditambah kepada -Wformat-security yang tidak termasuk dalam -Wformat-bukan huruf.)

-Wformat-tandatangan
If -Wformat ditentukan, juga memberi amaran jika rentetan format memerlukan rentetan yang tidak ditandatangani
hujah dan hujah ditandatangani dan begitu juga sebaliknya.

NOTA: Dalam Ubuntu 8.10 dan versi yang lebih baru pilihan ini didayakan secara lalai untuk C,
C++, ObjC, ObjC++. Untuk melumpuhkan, gunakan -Wno-format-security, atau lumpuhkan semua format
amaran dengan -Wformat=0. Untuk menjadikan amaran keselamatan format membawa maut, nyatakan
-Werror=format-security.

-Wformat-y2k
If -Wformat ditentukan, juga memberi amaran tentang format "strftime" yang mungkin hanya menghasilkan a
tahun dua digit.

-Wnonnull
Beri amaran tentang menghantar penunjuk nol untuk argumen yang ditandakan sebagai memerlukan nilai bukan nol
oleh atribut fungsi "nonnull".

-Wnonnull termasuk dalam -Dinding dan -Wformat. Ia boleh dilumpuhkan dengan -Wno-nonnull
pilihan.

-Winit-diri (C, C++, Objective-C dan Objective-C++ sahaja)
Beri amaran tentang pembolehubah tidak dimulakan yang dimulakan dengan diri mereka sendiri. Perhatikan ini
pilihan hanya boleh digunakan dengan -Wuninitialized pilihan.

Sebagai contoh, GCC memberi amaran tentang "i" yang tidak dimulakan dalam coretan berikut sahaja
apabila -Winit-diri telah ditentukan:

int f()
{
int i = i;
pulangan i;
}

Amaran ini didayakan oleh -Dinding dalam C ++.

-Wimplicit-int (C dan Objektif-C sahaja)
Beri amaran apabila pengisytiharan tidak menyatakan jenis. Amaran ini didayakan oleh -Dinding.

-Pengisytiharan-fungsi-wimplicit (C dan Objektif-C sahaja)
Beri amaran apabila sesuatu fungsi digunakan sebelum diisytiharkan. Dalam mod C99
(-std=c99 or -std=gnu99), amaran ini didayakan secara lalai dan ia dijadikan a
kesilapan oleh -kesilapan-pedantik. Amaran ini juga didayakan oleh -Dinding.

-Wimplisit (C dan Objektif-C sahaja)
Sama seperti -Wimplicit-int dan -Pengisytiharan-fungsi-wimplicit. Amaran ini didayakan
by -Dinding.

-Wignore-qualifiers (C dan C++ sahaja)
Beri amaran jika jenis pemulangan fungsi mempunyai jenis kelayakan seperti "const". Untuk ISO C
kelayakan jenis sedemikian tidak mempunyai kesan, kerana nilai yang dikembalikan oleh fungsi bukan satu
lnilai. Untuk C++, amaran hanya dikeluarkan untuk jenis skalar atau "kosong". ISO C
melarang jenis pulangan "kosong" yang layak pada definisi fungsi, jadi jenis pulangan tersebut
sentiasa menerima amaran walaupun tanpa pilihan ini.

Amaran ini juga didayakan oleh -Wextra.

-Wmain
Beri amaran jika jenis "utama" mencurigakan. "utama" sepatutnya menjadi fungsi dengan luaran
kaitan, kembali int, mengambil sama ada sifar hujah, dua, atau tiga hujah daripada
jenis yang sesuai. Amaran ini didayakan secara lalai dalam C++ dan didayakan oleh sama ada
-Dinding or -Wpedantik.

-Wmissing-braces
Beri amaran jika agregat atau pemula kesatuan tidak dikurung sepenuhnya. Dalam yang berikut
contoh, pemula untuk "a" tidak dikurung sepenuhnya, tetapi untuk "b" adalah sepenuhnya
kurungan. Amaran ini didayakan oleh -Dinding di C.

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

Amaran ini didayakan oleh -Dinding.

-Wmissing-include-dirs (C, C++, Objective-C dan Objective-C++ sahaja)
Beri amaran jika direktori termasuk yang dibekalkan pengguna tidak wujud.

-Kurungan
Beri amaran jika kurungan ditinggalkan dalam konteks tertentu, seperti apabila terdapat tanda kurung
penugasan dalam konteks di mana nilai kebenaran dijangka, atau apabila pengendali bersarang
yang keutamaan orang sering keliru.

Juga memberi amaran jika perbandingan seperti "x<=y<=z" muncul; ini bersamaan dengan "(x<=y ? 1 :
0) <= z", yang merupakan tafsiran yang berbeza daripada tafsiran matematik biasa
tatatanda.

Juga memberi amaran tentang pembinaan yang mungkin terdapat kekeliruan kepada pernyataan "jika" yang mana
cawangan "lain" kepunyaan. Berikut adalah contoh kes sedemikian:

{
sekiranya)
jika (b)
foo ();
lagi
bar ();
}

Dalam C/C++, setiap cawangan "lain" tergolong dalam pernyataan "jika" yang paling dalam, iaitu
dalam contoh ini ialah "jika (b)". Ini selalunya bukan yang diharapkan oleh pengaturcara, kerana
digambarkan dalam contoh di atas dengan lekukan yang dipilih pengaturcara. Bila ada
potensi kekeliruan ini, GCC mengeluarkan amaran apabila bendera ini ditentukan.
Untuk menghapuskan amaran, tambahkan pendakap eksplisit di sekeliling pernyataan "jika" yang paling dalam
tidak mungkin "lain" boleh tergolong dalam "jika" yang disertakan. Kod yang terhasil kelihatan
seperti ini:

{
sekiranya)
{
jika (b)
foo ();
lagi
bar ();
}
}

Juga memberi amaran untuk penggunaan berbahaya sambungan GNU kepada "?:" dengan operan tengah yang diabaikan.
Apabila syarat dalam "?": operator ialah ungkapan boolean, nilai yang ditinggalkan ialah
sentiasa 1. Selalunya pengaturcara menjangkakan ia sebagai nilai yang dikira di dalam bersyarat
ungkapan sebaliknya.

Amaran ini didayakan oleh -Dinding.

-Wsequence-point
Beri amaran tentang kod yang mungkin mempunyai semantik yang tidak ditentukan kerana pelanggaran jujukan
peraturan titik dalam piawaian C dan C++.

Piawaian C dan C++ mentakrifkan susunan ungkapan dalam program C/C++
dinilai dari segi turutan mata, yang mewakili susunan separa antara
pelaksanaan bahagian program: yang dilaksanakan sebelum titik jujukan, dan yang
dilaksanakan selepas itu. Ini berlaku selepas penilaian ungkapan penuh (yang
bukan sebahagian daripada ungkapan yang lebih besar), selepas penilaian operan pertama a
Operator "&&", "||", "? :" atau "," (koma), sebelum fungsi dipanggil (tetapi selepas
penilaian hujahnya dan ungkapan yang menunjukkan fungsi yang dipanggil), dan dalam
tempat-tempat tertentu yang lain. Selain daripada yang dinyatakan oleh peraturan titik jujukan, tertib
penilaian subungkapan ungkapan tidak dinyatakan. Semua peraturan ini
menerangkan hanya susunan separa dan bukannya jumlah pesanan, kerana, sebagai contoh, jika dua
fungsi dipanggil dalam satu ungkapan tanpa titik jujukan di antara mereka, iaitu
susunan di mana fungsi dipanggil tidak dinyatakan. Walau bagaimanapun, piawaian
jawatankuasa telah memutuskan bahawa panggilan fungsi tidak bertindih.

Ia tidak dinyatakan apabila antara titik jujukan pengubahsuaian kepada nilai
objek berkuat kuasa. Program yang tingkah lakunya bergantung pada ini mempunyai tingkah laku yang tidak ditentukan;
piawaian C dan C++ menyatakan bahawa "Antara titik urutan sebelumnya dan seterusnya an
objek hendaklah mempunyai nilai tersimpannya diubah suai paling banyak sekali dengan penilaian an
ungkapan. Tambahan pula, nilai terdahulu hendaklah dibaca hanya untuk menentukan nilai kepada
disimpan.". Jika program melanggar peraturan ini, keputusan pada mana-mana tertentu
pelaksanaannya tidak dapat diramalkan sepenuhnya.

Contoh kod dengan kelakuan tidak ditentukan ialah "a = a++;", "a[n] = b[n++]" dan "a[i++] =
i;". Beberapa kes yang lebih rumit tidak didiagnosis dengan pilihan ini, dan ia mungkin memberi
hasil positif palsu sekali-sekala, tetapi secara umum ia didapati agak berkesan pada
mengesan masalah seperti ini dalam program.

Piawaian ini menggunakan perkataan yang mengelirukan, oleh itu terdapat beberapa perdebatan mengenai ketepatannya
maksud peraturan titik jujukan dalam kes halus. Pautan kepada perbincangan mengenai
masalah, termasuk definisi formal yang dicadangkan, boleh didapati pada halaman bacaan GCC,
dihttp://gcc.gnu.org/readings.html>.

Amaran ini didayakan oleh -Dinding untuk C dan C++.

-Wno-return-local-addr
Jangan memberi amaran tentang mengembalikan penunjuk (atau dalam C++, rujukan) kepada pembolehubah yang berlaku
di luar skop selepas fungsi kembali.

-jenis wreturn
Beri amaran apabila fungsi ditakrifkan dengan jenis pulangan yang lalai kepada "int". Juga
memberi amaran tentang sebarang pernyataan "pulangan" tanpa nilai pulangan dalam fungsi yang jenis pulangannya
tidak "kosong" (jatuh dari hujung badan fungsi dianggap kembali
tanpa nilai), dan tentang pernyataan "kembali" dengan ungkapan dalam fungsi
yang jenis pulangannya adalah "kosong".

Untuk C++, fungsi tanpa jenis pulangan sentiasa menghasilkan mesej diagnostik, malah
apabila -Wno-return-type dinyatakan. Satu-satunya pengecualian ialah "utama" dan fungsi
ditakrifkan dalam pengepala sistem.

Amaran ini didayakan oleh -Dinding.

-Wshift-count-negatif
Beri amaran jika kiraan syif adalah negatif. Amaran ini didayakan secara lalai.

-Wshift-count-overflow
Beri amaran jika kiraan anjakan >= lebar jenis. Amaran ini didayakan secara lalai.

-Wswitch
Beri amaran apabila pernyataan "suis" mempunyai indeks jenis terbilang dan tidak mempunyai "kes"
untuk satu atau lebih kod yang dinamakan bagi penghitungan itu. (Kehadiran "lalai"
label menghalang amaran ini.) label "kes" di luar julat penghitungan juga
mencetuskan amaran apabila pilihan ini digunakan (walaupun terdapat label "lalai"). ini
amaran didayakan oleh -Dinding.

-Wswitch-lalai
Beri amaran apabila pernyataan "suis" tidak mempunyai kes "lalai".

-Wswitch-enum
Beri amaran apabila pernyataan "suis" mempunyai indeks jenis terbilang dan tidak mempunyai "kes"
untuk satu atau lebih kod yang dinamakan bagi penghitungan itu. label "kes" di luar
julat penghitungan juga menimbulkan amaran apabila pilihan ini digunakan. Satu-satunya perbezaan
antara -Wswitch dan pilihan ini ialah pilihan ini memberi amaran tentang ditinggalkan
kod enumerasi walaupun terdapat label "lalai".

-Wswitch-bool
Beri amaran apabila pernyataan "suis" mempunyai indeks jenis boolean. Ia adalah mungkin untuk
sekat amaran ini dengan menghantar ungkapan kawalan kepada jenis selain daripada
"bool". Sebagai contoh:

suis ((int) (a == 4))
{
...
}

Amaran ini didayakan secara lalai untuk program C dan C++.

-Wsync-nand (C dan C++ sahaja)
Beri amaran apabila fungsi terbina dalam "__sync_fetch_and_nand" dan "__sync_nand_and_fetch"
digunakan. Fungsi ini mengubah semantik dalam GCC 4.4.

-Wtrigraf
Beri amaran jika terdapat sebarang trigraf yang mungkin mengubah maksud program
(trigraf dalam ulasan tidak diberi amaran). Amaran ini didayakan oleh -Dinding.

-Wunused-tetapi-set-parameter
Beri amaran apabila parameter fungsi ditetapkan, tetapi sebaliknya tidak digunakan (selain daripada
pengisytiharannya).

Untuk menyekat amaran ini gunakan atribut "tidak digunakan".

Amaran ini juga didayakan oleh -Wunused Bersama-sama dengan -Wextra.

-Wunused-tetapi-set-pembolehubah
Beri amaran apabila pembolehubah tempatan ditugaskan, tetapi sebaliknya tidak digunakan (selain daripada pembolehubah tempatan
pengisytiharan). Amaran ini didayakan oleh -Dinding.

Untuk menyekat amaran ini gunakan atribut "tidak digunakan".

Amaran ini juga didayakan oleh -Wunused, yang didayakan oleh -Dinding.

-Wunused-fungsi
Beri amaran apabila fungsi statik diisytiharkan tetapi tidak ditakrifkan atau statik bukan sebaris
fungsi tidak digunakan. Amaran ini didayakan oleh -Dinding.

-Wunused-label
Beri amaran apabila label diisytiharkan tetapi tidak digunakan. Amaran ini didayakan oleh -Dinding.

Untuk menyekat amaran ini gunakan atribut "tidak digunakan".

-Wunused-local-typedefs (C, Objective-C, C++ dan Objective-C++ sahaja)
Beri amaran apabila typedef yang ditakrifkan secara setempat dalam fungsi tidak digunakan. Amaran ini adalah
didayakan oleh -Dinding.

-Wunused-parameter
Beri amaran apabila parameter fungsi tidak digunakan selain daripada pengisytiharannya.

Untuk menyekat amaran ini gunakan atribut "tidak digunakan".

-Tiada-hasil-tidak digunakan
Jangan memberi amaran jika pemanggil fungsi yang ditandai dengan atribut "warn_unused_result" melakukannya
tidak menggunakan nilai pulangannya. Lalainya ialah -Wunused-hasil.

-Wunused-pembolehubah
Beri amaran apabila pembolehubah tempatan atau pembolehubah statik tidak tetap tidak digunakan selain daripada
pengisytiharannya. Amaran ini didayakan oleh -Dinding.

Untuk menyekat amaran ini gunakan atribut "tidak digunakan".

-Wunused-nilai
Beri amaran apabila kenyataan mengira hasil yang tidak digunakan secara eksplisit. Untuk menindas
amaran ini menyebabkan ungkapan yang tidak digunakan kepada "kosong". Ini termasuk ungkapan-
pernyataan atau sebelah kiri ungkapan koma yang tidak mengandungi kesan sampingan.
Contohnya, ungkapan seperti "x[i,j]" menyebabkan amaran, manakala "x[(void)i,j]"
tidak.

Amaran ini didayakan oleh -Dinding.

-Wunused
Semua di atas -Wunused pilihan digabungkan.

Untuk mendapatkan amaran tentang parameter fungsi yang tidak digunakan, anda mesti sama ada menentukan
-Wextra -Wunused (perhatikan bahawa -Dinding bererti -Wunused), atau nyatakan secara berasingan
-Wunused-parameter.

-Wuninitialized
Beri amaran jika pembolehubah automatik digunakan tanpa dimulakan terlebih dahulu atau jika pembolehubah
mungkin terhalang oleh panggilan "setjmp". Dalam C++, beri amaran jika rujukan bukan statik atau bukan-
ahli "const" statik muncul dalam kelas tanpa pembina.

Jika anda ingin memberi amaran tentang kod yang menggunakan nilai pembolehubah yang tidak dimulakan dalam
pemulanya sendiri, gunakan -Winit-diri pilihan.

Amaran ini berlaku untuk elemen struktur individu yang tidak dimulakan atau terkutuk,
pembolehubah kesatuan atau tatasusunan serta untuk pembolehubah yang tidak dimulakan atau terkumpul
secara keseluruhan. Ia tidak berlaku untuk pembolehubah atau elemen yang diisytiharkan "tidak menentu". Kerana
amaran ini bergantung pada pengoptimuman, pembolehubah atau elemen yang tepat untuknya
adalah amaran bergantung pada pilihan pengoptimuman yang tepat dan versi GCC yang digunakan.

Ambil perhatian bahawa mungkin tiada amaran tentang pembolehubah yang digunakan hanya untuk mengira a
nilai itu sendiri tidak pernah digunakan, kerana pengiraan sedemikian mungkin dipadamkan oleh aliran data
analisis sebelum amaran dicetak.

-Wmungkin-tidak dimulakan
Untuk pembolehubah automatik, jika terdapat laluan dari entri fungsi kepada penggunaan
pembolehubah yang dimulakan, tetapi terdapat beberapa laluan lain untuknya
pembolehubah tidak dimulakan, pengkompil mengeluarkan amaran jika ia tidak dapat membuktikan
laluan yang tidak dimulakan tidak dilaksanakan pada masa larian. Amaran ini dijadikan pilihan
kerana GCC tidak cukup bijak untuk melihat semua sebab mengapa kod itu mungkin betul
walaupun kelihatan mempunyai kesilapan. Berikut adalah satu contoh bagaimana ini boleh berlaku:

{
int x;
suis (y)
{
kes 1: x = 1;
memecahkan;
kes 2: x = 4;
memecahkan;
kes 3: x = 5;
}
foo (x);
}

Jika nilai "y" sentiasa 1, 2 atau 3, maka "x" sentiasa dimulakan, tetapi GCC
tidak tahu ini. Untuk menyekat amaran, anda perlu menyediakan kes lalai dengan
menegaskan(0) atau kod yang serupa.

Pilihan ini juga memberi amaran apabila pembolehubah automatik tidak meruap mungkin diubah oleh a
panggil ke "longjmp". Amaran ini juga mungkin hanya dalam pengoptimuman
penyusunan.

Pengkompil hanya melihat panggilan ke "setjmp". Ia tidak tahu di mana "longjmp" akan berada
dipanggil; sebenarnya, pengendali isyarat boleh memanggilnya pada bila-bila masa dalam kod. Sebagai
Hasilnya, anda mungkin mendapat amaran walaupun sebenarnya tiada masalah kerana "longjmp"
sebenarnya tidak boleh dipanggil di tempat yang akan menimbulkan masalah.

Beberapa amaran palsu boleh dielakkan jika anda mengisytiharkan semua fungsi yang anda gunakan itu
tidak pernah kembali sebagai "noreturn".

Amaran ini didayakan oleh -Dinding or -Wextra.

-Wunknown-pragmas
Beri amaran apabila arahan "#pragma" ditemui yang tidak difahami oleh GCC. Jika ini
pilihan baris arahan digunakan, amaran malah dikeluarkan untuk pragma yang tidak diketahui dalam sistem
fail pengepala. Ini tidak berlaku jika amaran hanya didayakan oleh -Dinding
pilihan baris arahan.

-Wno-pragmas
Jangan memberi amaran tentang penyalahgunaan pragma, seperti parameter yang salah, sintaks tidak sah atau
konflik antara pragma. Lihat juga -Wunknown-pragmas.

-Pengalian ketat
Pilihan ini hanya aktif apabila -fstrict-aliasing adalah aktif. Ia memberi amaran tentang kod itu
mungkin melanggar peraturan aliasing yang ketat yang digunakan oleh pengkompil untuk pengoptimuman.
Amaran tidak menangkap semua kes, tetapi cuba menangkap yang lebih biasa
perangkap. Ia termasuk dalam -Dinding. Ia setara dengan -Wstrict-aliasing=3

-Wstrict-aliasing=n
Pilihan ini hanya aktif apabila -fstrict-aliasing adalah aktif. Ia memberi amaran tentang kod itu
mungkin melanggar peraturan aliasing yang ketat yang digunakan oleh pengkompil untuk pengoptimuman.
Tahap yang lebih tinggi sepadan dengan ketepatan yang lebih tinggi (kurang positif palsu). Tahap yang lebih tinggi
juga sepadan dengan lebih banyak usaha, serupa dengan caranya -O kerja. -Pengalian ketat is
bersamaan dengan -Wstrict-aliasing=3.

Tahap 1: Paling agresif, cepat, paling kurang tepat. Mungkin berguna apabila tahap yang lebih tinggi
jangan beri amaran tetapi -fstrict-aliasing masih memecahkan kod, kerana ia mempunyai sangat sedikit palsu
negatif. Walau bagaimanapun, ia mempunyai banyak positif palsu. Memberi amaran untuk semua penukaran penunjuk
antara jenis yang mungkin tidak serasi, walaupun tidak pernah dinyahrujuk. Berlari di hadapan
tamat sahaja.

Tahap 2: Agresif, cepat, tidak terlalu tepat. Mungkin masih mempunyai banyak positif palsu (bukan
sebanyak tahap 1 walaupun), dan beberapa negatif palsu (tetapi mungkin lebih daripada tahap 1).
Tidak seperti tahap 1, ia hanya memberi amaran apabila alamat diambil. Memberi amaran tentang jenis yang tidak lengkap.
Berjalan di hujung hadapan sahaja.

Tahap 3 (lalai untuk -Pengalian ketat): Harus mempunyai sangat sedikit positif palsu dan sedikit
negatif palsu. Lebih perlahan sedikit daripada tahap 1 atau 2 apabila pengoptimuman didayakan.
Menjaga corak pun + dereference biasa di hujung hadapan:
"*(int*)&some_float". Jika pengoptimuman didayakan, ia juga berjalan di hujung belakang, di mana
ia berurusan dengan berbilang kes pernyataan menggunakan titik sensitif aliran kepada maklumat.
Hanya memberi amaran apabila penunjuk yang ditukar dinyahrujuk. Tidak memberi amaran tentang tidak lengkap
jenis.

-Limpahan-terbatas
-Limpahan-terbatas=n
Pilihan ini hanya aktif apabila -fstrict-overflow adalah aktif. Ia memberi amaran tentang kes
di mana pengkompil mengoptimumkan berdasarkan andaian bahawa limpahan yang ditandatangani tidak
berlaku. Ambil perhatian bahawa ia tidak memberi amaran tentang semua kes di mana kod mungkin melimpah: ia
hanya memberi amaran tentang kes di mana pengkompil melaksanakan beberapa pengoptimuman. Justeru ini
amaran bergantung pada tahap pengoptimuman.

Pengoptimuman yang menganggap limpahan yang ditandatangani tidak berlaku adalah selamat jika
nilai pembolehubah yang terlibat adalah sedemikian rupa sehingga limpahan tidak pernah, sebenarnya,
berlaku. Oleh itu amaran ini dengan mudah boleh memberikan positif palsu: amaran tentang kod
itu sebenarnya bukan masalah. Untuk membantu memberi tumpuan kepada isu penting, beberapa amaran
tahap ditentukan. Tiada amaran dikeluarkan untuk penggunaan limpahan bertanda yang tidak ditentukan
apabila menganggar bilangan lelaran yang diperlukan oleh gelung, khususnya semasa menentukan
sama ada gelung akan dilaksanakan sama sekali.

-Limpahan-Wstrict=1
Beri amaran tentang kes yang boleh dipersoalkan dan mudah dielakkan. Contohnya, dengan
-fstrict-overflow, pengkompil memudahkan "x + 1 > x" kepada 1. Tahap ini
-Limpahan-terbatas didayakan oleh -Dinding; tahap yang lebih tinggi tidak, dan mesti
diminta secara eksplisit.

-Limpahan-Wstrict=2
Juga memberi amaran tentang kes lain di mana perbandingan dipermudahkan kepada pemalar. Untuk
contoh: "abs (x) >= 0". Ini hanya boleh dipermudahkan apabila -fstrict-overflow dalam
kesan, kerana "abs (INT_MIN)" melimpah kepada "INT_MIN", iaitu kurang daripada sifar.
-Limpahan-terbatas (tanpa tahap) adalah sama dengan -Limpahan-Wstrict=2.

-Limpahan-Wstrict=3
Juga memberi amaran tentang kes lain di mana perbandingan dipermudahkan. Contohnya: "x + 1
> 1" dipermudahkan kepada "x > 0".

-Limpahan-Wstrict=4
Juga memberi amaran tentang pemudahan lain yang tidak dilindungi oleh kes di atas. Untuk
contoh: "(x * 10) / 5" dipermudahkan kepada "x * 2".

-Limpahan-Wstrict=5
Juga memberi amaran tentang kes di mana pengkompil mengurangkan magnitud pemalar
terlibat dalam perbandingan. Contohnya: "x + 2 > y" dipermudahkan kepada "x + 1 >= y".
Ini dilaporkan hanya pada tahap amaran tertinggi kerana pemudahan ini
terpakai kepada banyak perbandingan, jadi tahap amaran ini memberikan bilangan yang sangat besar
positif palsu.

-Wsuggest-attribute=[tulen|malar|noreturn|format]
Beri amaran untuk kes yang menambahkan atribut mungkin bermanfaat. Atribut pada masa ini
disokong disenaraikan di bawah.

-Wsuggest-attribute=tulen
-Wsuggest-attribute=const
-Wsuggest-attribute=noreturn
Beri amaran tentang fungsi yang mungkin menjadi calon untuk atribut "tulen", "const" atau
"noreturn". Pengkompil hanya memberi amaran untuk fungsi yang boleh dilihat dalam kompilasi lain
unit atau (dalam kes "tulen" dan "konst") jika ia tidak dapat membuktikan bahawa fungsi
kembali normal. Fungsi kembali normal jika ia tidak mengandungi infiniti
gelung atau kembali secara tidak normal dengan membaling, memanggil "gugurkan" atau memerangkap. analisis ini
memerlukan pilihan -fipa-pure-const, yang didayakan secara lalai di -O dan lebih tinggi.
Tahap pengoptimuman yang lebih tinggi meningkatkan ketepatan analisis.

-Wsuggest-attribute=format
-Wmissing-format-attribut
Beri amaran tentang penunjuk fungsi yang mungkin menjadi calon untuk atribut "format".
Perhatikan ini hanya calon yang mungkin, bukan yang mutlak. GCC meneka itu
penunjuk fungsi dengan atribut "format" yang digunakan dalam tugasan,
penyataan permulaan, lulus parameter atau pemulangan harus mempunyai yang sepadan
atribut "format" dalam jenis yang terhasil. Iaitu bahagian kiri
penetapan atau permulaan, jenis pembolehubah parameter, atau pulangan
jenis fungsi yang mengandungi masing-masing juga harus mempunyai atribut "format".
untuk mengelakkan amaran.

GCC juga memberi amaran tentang definisi fungsi yang mungkin menjadi calon untuk "format"
sifat-sifat. Sekali lagi, ini hanya calon yang mungkin. GCC meneka bahawa "format"
atribut mungkin sesuai untuk mana-mana fungsi yang memanggil fungsi seperti
"vprintf" atau "vscanf", tetapi ini mungkin tidak selalu berlaku, dan beberapa fungsi
yang mana atribut "format" sesuai mungkin tidak dapat dikesan.

-Wsuggest-jenis-akhir
Beri amaran tentang jenis dengan kaedah maya yang kualiti kod akan dipertingkatkan jika jenis
telah diisytiharkan dengan penentu "akhir" C++11, atau, jika boleh, diisytiharkan dalam
ruang nama tanpa nama. Ini membolehkan GCC menyahvirtualkan polimorfik dengan lebih agresif
panggilan. Amaran ini lebih berkesan dengan pengoptimuman masa pautan, di mana
maklumat tentang graf hierarki kelas adalah lebih lengkap.

-Wcadangkan-kaedah-akhir
Beri amaran tentang kaedah maya di mana kualiti kod akan dipertingkatkan jika kaedah itu
diisytiharkan dengan penentu "akhir" C++11, atau, jika boleh, jenisnya diisytiharkan dalam
ruang nama tanpa nama atau dengan penentu "akhir". Amaran ini lebih berkesan
dengan pengoptimuman masa pautan, di mana maklumat tentang graf hierarki kelas adalah
lebih lengkap. Adalah disyorkan untuk terlebih dahulu mempertimbangkan cadangan
-Wsuggest-jenis-akhir dan kemudian bina semula dengan anotasi baharu.

-Wsuggest-override
Beri amaran tentang mengatasi fungsi maya yang tidak ditandakan dengan kata kunci ganti.

-Warray-bounds
-Warray-bounds=n
Pilihan ini hanya aktif apabila -ftree-vrp aktif (lalai untuk -O2 dan ke atas). Ia
memberi amaran tentang subskrip kepada tatasusunan yang sentiasa di luar batasan. Amaran ini adalah
didayakan oleh -Dinding.

-Warray-bounds=1
Ini ialah tahap amaran bagi -Warray-bounds dan didayakan oleh -Dinding; peringkat yang lebih tinggi
tidak, dan mesti diminta secara eksplisit.

-Warray-bounds=2
Tahap amaran ini juga memberi amaran tentang akses di luar sempadan untuk tatasusunan pada penghujung
struct dan untuk tatasusunan yang diakses melalui penunjuk. Tahap amaran ini mungkin memberi a
bilangan positif palsu yang lebih besar dan dinyahaktifkan secara lalai.

-Wbool-bandingkan
Beri amaran tentang ungkapan boolean berbanding dengan nilai integer yang berbeza daripada
"betul salah". Sebagai contoh, perbandingan berikut sentiasa palsu:

int n = 5;
...
jika ((n > 1) == 2) { ... }

Amaran ini didayakan oleh -Dinding.

-Wno-discarded-qualifiers (C dan Objektif-C sahaja)
Jangan beri amaran jika jenis kelayakan pada penunjuk sedang dibuang. Lazimnya,
pengkompil memberi amaran jika pembolehubah "const char *" dihantar ke fungsi yang mengambil "char
*" parameter. Pilihan ini boleh digunakan untuk menyekat amaran sedemikian.

-Wno-discarded-array-qualifiers (C dan Objektif-C sahaja)
Jangan beri amaran jika jenis kelayakan pada tatasusunan yang merupakan sasaran penuding sedang dilakukan
dibuang. Biasanya, pengkompil memberi amaran jika pembolehubah "const int (*)[]" dihantar ke
fungsi yang mengambil parameter "int (*)[]". Pilihan ini boleh digunakan untuk menekan
amaran sedemikian.

-Wno-incompatible-pointer-types (C dan Objektif-C sahaja)
Jangan memberi amaran apabila terdapat penukaran antara penunjuk yang mempunyai jenis yang tidak serasi.
Amaran ini adalah untuk kes yang tidak dilindungi oleh -Wno-pointer-sign, yang memberi amaran untuk penunjuk
lulus hujah atau tugasan dengan tandatangan yang berbeza.

-Wno-int-penukaran (C dan Objektif-C sahaja)
Jangan beri amaran tentang penukaran integer kepada penuding dan penuding kepada integer yang tidak serasi.
Amaran ini adalah mengenai penukaran tersirat; untuk penukaran eksplisit amaran
-Wno-int-to-pointer-cast dan -Wno-pointer-to-int-cast mungkin digunakan.

-Wno-div-by-sifar
Jangan beri amaran tentang pembahagian integer masa kompilasi dengan sifar. Pembahagian titik terapung oleh
sifar tidak diberi amaran, kerana ia boleh menjadi cara yang sah untuk mendapatkan infiniti dan
NaNs.

-Wsystem-headers
Cetak mesej amaran untuk binaan yang terdapat dalam fail pengepala sistem. Amaran daripada
pengepala sistem biasanya ditindas, dengan andaian bahawa mereka biasanya tidak
menunjukkan masalah sebenar dan hanya akan menjadikan output pengkompil lebih sukar dibaca. menggunakan
pilihan baris arahan ini memberitahu GCC untuk mengeluarkan amaran daripada pengepala sistem seolah-olah mereka
berlaku dalam kod pengguna. Walau bagaimanapun, ambil perhatian bahawa menggunakan -Dinding bersempena dengan pilihan ini
tidak tidak memberi amaran tentang pragma yang tidak diketahui dalam pengepala sistem---untuk itu, -Wunknown-pragmas
mesti juga digunakan.

-Wtrampolin
Beri amaran tentang trampolin yang dihasilkan untuk penunjuk kepada fungsi bersarang. Trampolin ialah a
sekeping kecil data atau kod yang dicipta pada masa berjalan pada timbunan apabila alamat
daripada fungsi bersarang diambil, dan digunakan untuk memanggil fungsi bersarang secara tidak langsung.
Bagi sesetengah sasaran, ia terdiri daripada data sahaja dan oleh itu tidak memerlukan rawatan khas.
Tetapi, untuk kebanyakan sasaran, ia terdiri daripada kod dan oleh itu memerlukan timbunan dibuat
boleh dilaksanakan agar program berfungsi dengan baik.

-Wfloat-sama
Beri amaran jika nilai titik terapung digunakan dalam perbandingan kesamaan.

Idea di sebalik ini ialah kadang-kadang ia adalah mudah (untuk pengaturcara) untuk
pertimbangkan nilai titik terapung sebagai anggaran kepada nombor nyata yang tidak terhingga.
Jika anda melakukan ini, maka anda perlu mengira (dengan menganalisis kod, atau dalam beberapa
cara lain) ralat maksimum maksimum atau mungkin maksimum yang diperkenalkan oleh pengiraan, dan
membenarkannya apabila melakukan perbandingan (dan apabila menghasilkan output, tetapi itu a
masalah yang berbeza). Khususnya, bukannya menguji kesaksamaan, anda harus menyemak
untuk melihat sama ada kedua-dua nilai mempunyai julat yang bertindih; dan ini dilakukan dengan
pengendali hubungan, jadi perbandingan kesaksamaan mungkin tersilap.

-Wtradisional (C dan Objektif-C sahaja)
Beri amaran tentang binaan tertentu yang berkelakuan berbeza dalam tradisional dan ISO C. Juga
memberi amaran tentang binaan ISO C yang tidak mempunyai persamaan C tradisional dan/atau bermasalah
binaan yang harus dielakkan.

* Parameter makro yang muncul dalam literal rentetan dalam badan makro. Dalam
penggantian makro C tradisional berlaku dalam literal rentetan, tetapi dalam ISO C
ia tidak.

* Dalam C tradisional, beberapa arahan prapemproses tidak wujud. tradisional
prapemproses hanya menganggap talian sebagai arahan jika # muncul dalam lajur
1 di talian. Oleh itu -Wtradisional memberi amaran tentang arahan yang tradisional C
faham tetapi tidak mengendahkan kerana # tidak muncul sebagai watak pertama pada
garisan itu. Ia juga mencadangkan anda menyembunyikan arahan seperti "#pragma" yang tidak difahami oleh
tradisional C dengan memasukkannya. Sesetengah pelaksanaan tradisional tidak
mengenali "#elif", jadi pilihan ini mencadangkan untuk mengelakkannya sama sekali.

* Makro seperti fungsi yang muncul tanpa hujah.

* Pengendali unary plus.

* The U akhiran pemalar integer, atau F or L akhiran tetap titik terapung.
(C tradisional menyokong L akhiran pada pemalar integer.) Perhatikan, ini
akhiran muncul dalam makro yang ditakrifkan dalam pengepala sistem kebanyakan sistem moden,
cth _MIN/_MAX makro dalam " ". Penggunaan makro ini dalam kod pengguna mungkin
biasanya membawa kepada amaran palsu, namun prapemproses bersepadu GCC mempunyai
konteks yang mencukupi untuk mengelakkan amaran dalam kes ini.

* Fungsi yang diisytiharkan luaran dalam satu blok dan kemudian digunakan selepas penghujung
blok.

* Pernyataan "suis" mempunyai operan jenis "panjang".

* Pengisytiharan fungsi bukan "statik" mengikuti pengisytiharan "statik". Konstruk ini tidak
diterima oleh beberapa penyusun C tradisional.

* Jenis ISO pemalar integer mempunyai lebar atau tanda yang berbeza daripadanya
jenis tradisional. Amaran ini hanya dikeluarkan jika asas pemalar ialah sepuluh.
Iaitu nilai heksadesimal atau perlapanan, yang biasanya mewakili corak bit, tidak
diberi amaran tentang.

* Penggunaan gabungan rentetan ISO dikesan.

* Permulaan agregat automatik.

* Pengecam bercanggah dengan label. C tradisional tidak mempunyai ruang nama yang berasingan untuk
label.

* Permulaan kesatuan sekerja. Jika pemula adalah sifar, amaran itu ditinggalkan.
Ini dilakukan di bawah andaian bahawa pemula sifar dalam kod pengguna muncul
dikondisikan pada cth "__STDC__" untuk mengelakkan kehilangan amaran pemula dan bergantung pada
permulaan lalai kepada sifar dalam kes C tradisional.

* Penukaran mengikut prototaip antara nilai tetap/titik terapung dan sebaliknya. The
ketiadaan prototaip ini apabila menyusun dengan C tradisional menyebabkan serius
masalah. Ini ialah subset amaran penukaran yang mungkin; untuk set penuh
penggunaan -Penukaran-tradisional.

* Penggunaan definisi fungsi gaya ISO C. Amaran ini sengaja adalah tidak dikeluarkan
untuk pengisytiharan prototaip atau fungsi variadik kerana ciri ISO C ini
muncul dalam kod anda apabila menggunakan makro keserasian C tradisional libiberty,
"PARAMS" dan "VPARAMS". Amaran ini juga dipintas untuk fungsi bersarang
kerana ciri itu sudah pun sambungan GCC dan oleh itu tidak berkaitan dengannya
keserasian C tradisional.

-Penukaran-tradisional (C dan Objektif-C sahaja)
Beri amaran jika prototaip menyebabkan penukaran jenis yang berbeza daripada apa yang akan berlaku
kepada hujah yang sama tanpa adanya prototaip. Ini termasuk penukaran daripada
titik tetap kepada terapung dan sebaliknya, dan penukaran mengubah lebar atau
tandatangan hujah titik tetap kecuali apabila sama dengan promosi lalai.

-Wdeklarasi-selepas-penyataan (C dan Objektif-C sahaja)
Beri amaran apabila pengisytiharan ditemui selepas pernyataan dalam blok. Konstruk ini, diketahui
daripada C++, telah diperkenalkan dengan ISO C99 dan secara lalai dibenarkan dalam GCC. Bukan
disokong oleh ISO C90.

-Wundef
Beri amaran jika pengecam yang tidak ditentukan dinilai dalam arahan "#if".

-Wno-endif-labels
Jangan memberi amaran apabila "#else" atau "#endif" diikuti dengan teks.

-Wshadow
Beri amaran apabila pembolehubah tempatan atau pengisytiharan jenis membayangi pembolehubah lain,
parameter, jenis, ahli kelas (dalam C++), atau pembolehubah contoh (dalam Objektif-C) atau
setiap kali fungsi terbina dalam dibayangi. Ambil perhatian bahawa dalam C++, pengkompil memberi amaran jika a
pembolehubah tempatan membayangi typedef eksplisit, tetapi tidak jika ia membayangi struct/class/enum.

-Wno-bayang-ivar (Objektif-C sahaja)
Jangan memberi amaran apabila pembolehubah tempatan membayangi pembolehubah contoh dalam Objektif-C
kaedah.

-Lebih besar daripada=len
Beri amaran apabila objek lebih besar daripada len bait ditakrifkan.

-Wframe-larger-than=len
Beri amaran jika saiz bingkai fungsi lebih besar daripada len bait. Pengiraan dilakukan
untuk menentukan saiz bingkai tindanan adalah anggaran dan bukan konservatif. Yang sebenarnya
keperluan mungkin agak lebih besar daripada len walaupun anda tidak mendapat amaran. Dalam
Selain itu, sebarang ruang yang diperuntukkan melalui "alloca", tatasusunan panjang boleh ubah, atau yang berkaitan
konstruk tidak disertakan oleh pengkompil semasa menentukan sama ada mengeluarkan a
amaran.

-Wno-free-nonheap-objek
Jangan memberi amaran apabila cuba membebaskan objek yang tidak diperuntukkan pada timbunan.

-Wstack-penggunaan=len
Beri amaran jika penggunaan timbunan fungsi mungkin lebih besar daripada len bait. Pengiraan
dilakukan untuk menentukan penggunaan tindanan adalah konservatif. Sebarang ruang yang diperuntukkan melalui "alloca",
tatasusunan panjang ubah, atau binaan yang berkaitan disertakan oleh pengkompil apabila
menentukan sama ada akan mengeluarkan amaran atau tidak.

Mesej adalah selaras dengan output daripada -fstack-penggunaan.

* Jika penggunaan tindanan adalah statik sepenuhnya tetapi melebihi jumlah yang ditentukan, ia adalah:

amaran: penggunaan tindanan ialah 1120 bait

* Jika penggunaan tindanan adalah (sebahagiannya) dinamik tetapi terhad, ia adalah:

amaran: penggunaan tindanan mungkin 1648 bait

* Jika penggunaan tindanan adalah (sebahagiannya) dinamik dan tidak terhad, ia adalah:

amaran: penggunaan tindanan mungkin tidak terhad

-Wunsafe-loop-optimizations
Beri amaran jika gelung tidak boleh dioptimumkan kerana pengkompil tidak boleh menganggap apa-apa dihidupkan
sempadan indeks gelung. Dengan -funsafe-loop-optimizations memberi amaran jika penyusun
membuat andaian sedemikian.

-Wno-pedantic-ms-format (Sasaran MinGW sahaja)
Apabila digunakan dalam kombinasi dengan -Wformat dan -pedantik tanpa sambungan GNU, ini
pilihan melumpuhkan amaran tentang penentu lebar format "printf" / "scanf" bukan ISO
"I32", "I64", dan "I" digunakan pada sasaran Windows, yang bergantung pada masa jalan MS.

-Wpointer-arith
Beri amaran tentang apa sahaja yang bergantung pada "saiz" jenis fungsi atau "kosong". GNU C
memberikan jenis ini saiz 1, untuk kemudahan dalam pengiraan dengan "kosong *"
penunjuk dan penunjuk kepada fungsi. Dalam C++, amaran juga apabila operasi aritmetik
melibatkan "NULL". Amaran ini juga didayakan oleh -Wpedantik.

-Batas jenis
Beri amaran jika perbandingan sentiasa benar atau sentiasa palsu disebabkan julat terhad
jenis data, tetapi jangan memberi amaran untuk ungkapan berterusan. Sebagai contoh, memberi amaran jika tidak ditandatangani
pembolehubah dibandingkan dengan sifar dengan "<" atau ">=". Amaran ini juga didayakan oleh
-Wextra.

-Wbad-function-cast (C dan Objektif-C sahaja)
Beri amaran apabila panggilan fungsi dihantar kepada jenis yang tidak sepadan. Contohnya, beri amaran jika ada panggilan
kepada fungsi yang mengembalikan jenis integer dilemparkan kepada jenis penunjuk.

-Wc90-c99-compat (C dan Objektif-C sahaja)
Beri amaran tentang ciri yang tidak terdapat dalam ISO C90, tetapi hadir dalam ISO C99. Sebagai contoh,
memberi amaran tentang penggunaan tatasusunan panjang berubah-ubah, jenis "panjang panjang", jenis "bool", kompaun
literal, pemula yang ditetapkan, dan sebagainya. Pilihan ini adalah bebas daripada
mod piawai. Amaran dilumpuhkan dalam ungkapan yang mengikuti "__extension__".

-Wc99-c11-compat (C dan Objektif-C sahaja)
Beri amaran tentang ciri yang tidak terdapat dalam ISO C99, tetapi hadir dalam ISO C11. Sebagai contoh,
memberi amaran tentang penggunaan struktur dan kesatuan tanpa nama, kelayakan jenis "_Atomic",
Penentu kelas storan "_Thread_local", penentu "_Alignas", pengendali "Alignof",
Kata kunci "_Generik", dan sebagainya. Pilihan ini adalah bebas daripada mod standard.
Amaran dilumpuhkan dalam ungkapan yang mengikuti "__extension__".

-Wc++-compat (C dan Objektif-C sahaja)
Beri amaran tentang binaan ISO C yang berada di luar subset biasa ISO C dan ISO
C++, cth permintaan untuk penukaran tersirat daripada "void *" kepada penunjuk kepada bukan "void"
jenis.

-Wc++11-compat (C++ dan Objektif-C++ sahaja)
Beri amaran tentang binaan C++ yang maknanya berbeza antara ISO C++ 1998 dan ISO C++ 2011,
cth, pengecam dalam ISO C++ 1998 yang merupakan kata kunci dalam ISO C++ 2011. Amaran ini
hidupkan -Wnarrowing dan didayakan oleh -Dinding.

-Wc++14-compat (C++ dan Objektif-C++ sahaja)
Beri amaran tentang binaan C++ yang maknanya berbeza antara ISO C++ 2011 dan ISO C++ 2014.
Amaran ini didayakan oleh -Dinding.

-Wcast-qual
Beri amaran apabila penunjuk dilemparkan untuk mengeluarkan jenis kelayakan daripada jenis sasaran.
Sebagai contoh, beri amaran jika "const char *" dihantar ke "char *" biasa.

Juga memberi amaran apabila membuat pelakon yang memperkenalkan jenis kelayakan dengan cara yang tidak selamat. Untuk
contoh, menghantar "char **" kepada "const char **" adalah tidak selamat, seperti dalam contoh ini:

/* p ialah nilai char **. */
const char **q = (const char **) p;
/* Penetapan rentetan baca sahaja kepada const char * adalah OK. */
*q = "rentetan";
/* Sekarang char** penunjuk menunjuk ke ingatan baca sahaja. */
**p = 'b';

-Wcast-align
Beri amaran apabila penunjuk dilemparkan supaya penjajaran sasaran yang diperlukan adalah
meningkat. Sebagai contoh, beri amaran jika "char *" dihantar ke "int *" pada mesin di mana
integer hanya boleh diakses pada sempadan dua atau empat bait.

-Tulis-tali
Apabila menyusun C, berikan pemalar rentetan jenis "const char[panjang]" supaya menyalin
alamat satu ke dalam penuding bukan "const" "char *" menghasilkan amaran. Ini
amaran membantu anda mencari pada kod masa menyusun yang boleh cuba menulis ke dalam rentetan
tetap, tetapi hanya jika anda sangat berhati-hati menggunakan "const" dalam pengisytiharan
dan prototaip. Jika tidak, ia hanya mengganggu. Inilah sebabnya kami tidak membuat -Dinding
minta amaran ini.

Apabila menyusun C++, beri amaran tentang penukaran yang ditamatkan daripada literal rentetan kepada "char
*". Amaran ini didayakan secara lalai untuk program C++.

-Wclobbered
Beri amaran untuk pembolehubah yang mungkin diubah oleh "longjmp" atau "vfork". Amaran ini adalah
juga didayakan oleh -Wextra.

-Disokong secara bersyarat (C++ dan Objektif-C++ sahaja)
Amaran untuk binaan yang disokong bersyarat (C++11 [intro.defs]).

-Wpenukaran
Beri amaran untuk penukaran tersirat yang mungkin mengubah nilai. Ini termasuk penukaran
antara nyata dan integer, seperti "abs (x)" apabila "x" ialah "berganda"; penukaran antara
ditandatangani dan tidak ditandatangani, seperti "ui tidak ditandatangani = -1"; dan penukaran kepada jenis yang lebih kecil, seperti
"sqrtf (M_PI)". Jangan beri amaran untuk hantaran eksplisit seperti "abs ((int) x)" dan "ui =
(tidak ditandatangani) -1", atau jika nilai tidak diubah oleh penukaran seperti dalam "abs (2.0)".
Amaran tentang penukaran antara integer yang ditandatangani dan tidak ditandatangani boleh dilumpuhkan oleh
menggunakan -Penukaran-tanda-Wno.

Untuk C++, juga memberi amaran kerana mengelirukan resolusi beban lampau untuk penukaran yang ditentukan pengguna; dan
penukaran yang tidak pernah menggunakan operator penukaran jenis: penukaran kepada "kosong", sama
jenis, kelas asas atau rujukan kepada mereka. Amaran tentang penukaran antara yang ditandatangani
dan integer yang tidak ditandatangani dilumpuhkan secara lalai dalam C++ melainkan -Wsign-penukaran is
didayakan secara eksplisit.

-Wno-conversion-null (C++ dan Objektif-C++ sahaja)
Jangan beri amaran untuk penukaran antara jenis "NULL" dan bukan penunjuk. -Wconversion-null is
didayakan secara lalai.

-Wzero-sebagai-null-pointer-constant (C++ dan Objektif-C++ sahaja)
Beri amaran apabila '0' literal digunakan sebagai pemalar penuding nol. Ini boleh berguna untuk
memudahkan penukaran kepada "nullptr" dalam C++11.

-Wtarikh-masa
Beri amaran apabila makro "__TIME__", "__DATE__" atau "__TIMESTAMP__" ditemui semasa ia
mungkin menghalang penyusunan boleh ulang yang serupa sedikit.

-Wdelete-tidak lengkap (C++ dan Objektif-C++ sahaja)
Beri amaran apabila memadamkan penunjuk kepada jenis yang tidak lengkap, yang boleh menyebabkan kelakuan tidak ditentukan di
masa jalan. Amaran ini didayakan secara lalai.

-Wuseless-cast (C++ dan Objektif-C++ sahaja)
Beri amaran apabila ungkapan dihantar kepada jenisnya sendiri.

-Badan kosong
Beri amaran jika isi kosong berlaku dalam pernyataan "jika", "lain" atau "buat sementara". Amaran ini
juga didayakan oleh -Wextra.

-Wenum-bandingkan
Beri amaran tentang perbandingan antara nilai jenis terbilang yang berbeza. Dalam C++ enumeral
ketidakpadanan dalam ungkapan bersyarat juga didiagnosis dan amaran didayakan oleh
lalai. Dalam C amaran ini didayakan oleh -Dinding.

-Wjump-rindu-init (C, Objektif-C sahaja)
Beri amaran jika pernyataan "goto" atau pernyataan "suis" melompat ke hadapan melintasi
permulaan pembolehubah, atau melompat ke belakang ke label selepas pembolehubah telah
dimulakan. Ini hanya memberi amaran tentang pembolehubah yang dimulakan apabila ia
diisytiharkan. Amaran ini hanya disokong untuk C dan Objektif-C; dalam C++ jenis ini
cawangan adalah ralat dalam apa jua keadaan.

-Wjump-rindu-init termasuk dalam -Wc++-compat. Ia boleh dilumpuhkan dengan
-Wno-lompat-rindu-init pilihan.

-Wsign-bandingkan
Beri amaran apabila perbandingan antara nilai yang ditandatangani dan yang tidak ditandatangani boleh menghasilkan nilai yang salah
terhasil apabila nilai yang ditandatangani ditukar kepada tidak ditandatangani. Amaran ini juga didayakan
by -Wextra; untuk mendapatkan amaran lain -Wextra tanpa amaran ini, gunakan -Wextra
-Wno-sign-compare.

-Wsign-penukaran
Beri amaran untuk penukaran tersirat yang mungkin mengubah tanda nilai integer, seperti
memberikan ungkapan integer yang ditandatangani kepada pembolehubah integer yang tidak ditandatangani. Yang eksplisit
cast mendiamkan amaran. Dalam C, pilihan ini didayakan juga oleh -Wpenukaran.

-Wfloat-penukaran
Beri amaran untuk penukaran tersirat yang mengurangkan ketepatan nilai sebenar. ini
termasuk penukaran daripada sebenar kepada integer, dan daripada ketepatan lebih tinggi sebenar kepada lebih rendah
nilai sebenar ketepatan. Pilihan ini juga didayakan oleh -Wpenukaran.

-Wsized-deallocation (C++ dan Objektif-C++ sahaja)
Beri amaran tentang definisi fungsi deallokasi tidak bersaiz

operator void padam (void *) noexcept;
operator void padam[] (void *) noexcept;

tanpa definisi fungsi deallokasi bersaiz sepadan

void operator padam (void *, std::size_t) noexcept;
operator void padam[] (void *, std::size_t) noexcept;

atau sebaliknya. Didayakan oleh -Wextra bersama-sama dengan -fsized-deallocation.

-Wsizeof-pointer-memaccess
Beri amaran untuk parameter panjang yang mencurigakan pada rentetan dan fungsi terbina dalam memori tertentu
jika hujah menggunakan "sizeof". Amaran ini memberi amaran cth tentang "memset (ptr, 0, sizeof
(ptr));" jika "ptr" bukan tatasusunan, tetapi penunjuk, dan mencadangkan kemungkinan pembetulan, atau
tentang "memcpy (&foo, ptr, sizeof (&foo));". Amaran ini didayakan oleh -Dinding.

-Wsizeof-array-argument
Beri amaran apabila pengendali "sizeof" digunakan pada parameter yang diisytiharkan sebagai tatasusunan
dalam definisi fungsi. Amaran ini didayakan secara lalai untuk program C dan C++.

-Wmemset-transposed-args
Beri amaran untuk panggilan yang mencurigakan ke fungsi terbina dalam "memset", jika hujah kedua ialah
bukan sifar dan hujah ketiga adalah sifar. Ini memberi amaran cth@ tentang "memset (buf, sizeof
buf, 0)" di mana kemungkinan besar "memset (buf, 0, sizeof buf)" dimaksudkan sebaliknya.
diagnostik hanya dipancarkan jika hujah ketiga adalah sifar literal. Jika ia adalah beberapa
ungkapan yang dilipat kepada sifar, tuangan sifar kepada beberapa jenis, dsb., ia jauh lebih sedikit
berkemungkinan pengguna telah tersilap menukar hujah dan tiada amaran dikeluarkan.
Amaran ini didayakan oleh -Dinding.

-Waddress
Beri amaran tentang penggunaan alamat memori yang mencurigakan. Ini termasuk menggunakan alamat a
berfungsi dalam ungkapan bersyarat, seperti "void func(void); if (func)", dan
perbandingan terhadap alamat memori rentetan literal, seperti "jika (x == "abc").
Penggunaan sedemikian biasanya menunjukkan ralat pengaturcara: alamat fungsi sentiasa
menilai kepada benar, jadi penggunaannya dalam keadaan bersyarat biasanya menunjukkan bahawa pengaturcara
terlupa kurungan dalam panggilan fungsi; dan perbandingan terhadap literal rentetan
mengakibatkan tingkah laku yang tidak ditentukan dan tidak mudah alih dalam C, jadi ia biasanya menunjukkan
bahawa pengaturcara bertujuan untuk menggunakan "strcmp". Amaran ini didayakan oleh -Dinding.

-Wlogical-op
Beri amaran tentang penggunaan operator logik yang mencurigakan dalam ungkapan. Ini termasuk menggunakan
pengendali logik dalam konteks di mana pengendali yang agak bijak mungkin dijangkakan.

-Wlogical-bukan-kurungan
Beri amaran tentang logik yang tidak digunakan pada operan sebelah kiri perbandingan. ini
pilihan tidak memberi amaran jika operan RHS adalah daripada jenis boolean. Tujuannya adalah untuk
mengesan kod yang mencurigakan seperti berikut:

int a;
...
jika (!a > 1) { ... }

Adalah mungkin untuk menyekat amaran dengan membungkus LHS ke dalam kurungan:

jika ((!a) > 1) { ... }

Amaran ini didayakan oleh -Dinding.

-Waggregate-pulangan
Beri amaran jika mana-mana fungsi yang mengembalikan struktur atau kesatuan ditentukan atau dipanggil. (Dalam
bahasa di mana anda boleh mengembalikan tatasusunan, ini juga menimbulkan amaran.)

-Wno-agresif-gelung-pengoptimuman
Beri amaran jika dalam gelung dengan bilangan lelaran yang berterusan, pengkompil mengesan tidak ditentukan
tingkah laku dalam beberapa pernyataan semasa satu atau lebih daripada lelaran.

-Wno-atribut
Jangan amaran jika "__attribute__" yang tidak dijangka digunakan, seperti atribut yang tidak dikenali,
atribut fungsi digunakan pada pembolehubah, dll. Ini tidak menghentikan ralat untuk
penggunaan atribut yang disokong yang salah.

-Wno-builtin-makro-ditakrifkan semula
Jangan beri amaran jika makro terbina dalam tertentu ditakrifkan semula. Ini menyekat amaran untuk
takrifan semula "__TIMESTAMP__", "__TIME__", "__DATE__", "__FILE__", dan
"__BASE_FILE__".

-Wstrict-prototaip (C dan Objektif-C sahaja)
Beri amaran jika fungsi diisytiharkan atau ditakrifkan tanpa menyatakan jenis hujah. (An
definisi fungsi gaya lama dibenarkan tanpa amaran jika didahului dengan a
pengisytiharan yang menentukan jenis hujah.)

-Pengisytiharan ala-Wold (C dan Objektif-C sahaja)
Amaran untuk penggunaan usang, mengikut Piawaian C, dalam pengisytiharan. Untuk
contoh, beri amaran jika penentu kelas storan seperti "statik" bukanlah perkara pertama dalam a
pengisytiharan. Amaran ini juga didayakan oleh -Wextra.

-definisi-gaya-Wold (C dan Objektif-C sahaja)
Beri amaran jika definisi fungsi gaya lama digunakan. Amaran diberi walaupun ada
prototaip sebelumnya.

-Wmissing-parameter-type (C dan Objektif-C sahaja)
Parameter fungsi diisytiharkan tanpa penentu jenis dalam fungsi gaya K&R:

void foo(bar) { }

Amaran ini juga didayakan oleh -Wextra.

-Wmissing-prototaip (C dan Objektif-C sahaja)
Beri amaran jika fungsi global ditakrifkan tanpa pengisytiharan prototaip sebelumnya. ini
amaran dikeluarkan walaupun definisi itu sendiri menyediakan prototaip. Gunakan pilihan ini
untuk mengesan fungsi global yang tidak mempunyai pengisytiharan prototaip yang sepadan dalam a
fail pengepala. Pilihan ini tidak sah untuk C++ kerana semua pengisytiharan fungsi
menyediakan prototaip dan pengisytiharan tidak sepadan mengisytiharkan lebihan daripada
bercanggah dengan pengisytiharan terdahulu. guna -Pengisytiharan-Wmissing untuk mengesan hilang
pengisytiharan dalam C++.

-Pengisytiharan-Wmissing
Beri amaran jika fungsi global ditakrifkan tanpa pengisytiharan sebelumnya. Buat begitu walaupun
definisi itu sendiri menyediakan prototaip. Gunakan pilihan ini untuk mengesan global
fungsi yang tidak diisytiharkan dalam fail pengepala. Dalam C, tiada amaran dikeluarkan untuk
fungsi dengan pengisytiharan bukan prototaip sebelumnya; guna -Wmissing-prototaip untuk mengesan
prototaip yang hilang. Dalam C++, tiada amaran dikeluarkan untuk templat fungsi, atau untuk
fungsi sebaris, atau untuk fungsi dalam ruang nama tanpa nama.

-Wmissing-field-initializers
Beri amaran jika pemula struktur mempunyai beberapa medan yang hilang. Sebagai contoh, berikut
kod menyebabkan amaran sedemikian, kerana "xh" secara tersirat adalah sifar:

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

Pilihan ini tidak memberi amaran tentang pemula yang ditetapkan, jadi pengubahsuaian berikut
tidak mencetuskan amaran:

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

Dalam C++ pilihan ini tidak memberi amaran sama ada tentang pemula { } kosong, sebagai contoh:

struct s { int f, g, h; };
sx = { };

Amaran ini disertakan dalam -Wextra. Untuk mendapatkan yang lain -Wextra amaran tanpa yang ini,
penggunaan -Wextra -Wno-missing-field-initializers.

-Wno-multichar
Jangan beri amaran jika pemalar berbilang aksara ('FOOF') digunakan. Biasanya mereka menunjukkan a
kesilapan taip dalam kod pengguna, kerana mereka mempunyai nilai yang ditentukan pelaksanaan, dan tidak sepatutnya
digunakan dalam kod mudah alih.

-Wnormal[=<tiada|id|NFC|nfkc>]
Dalam ISO C dan ISO C++, dua pengecam adalah berbeza jika ia adalah urutan yang berbeza
watak. Walau bagaimanapun, kadangkala apabila aksara di luar set aksara ASCII asas
digunakan, anda boleh mempunyai dua jujukan aksara berbeza yang kelihatan sama. Untuk mengelakkan
kekeliruan, piawaian ISO 10646 menetapkan beberapa normalisasi peraturan yang apabila diaplikasikan
pastikan dua jujukan yang kelihatan sama bertukar menjadi jujukan yang sama. GCC
boleh memberi amaran kepada anda jika anda menggunakan pengecam yang belum dinormalisasi; pilihan ini
mengawal amaran itu.

Terdapat empat tahap amaran yang disokong oleh GCC. Lalainya ialah -Wnormalisasi=nfc,
yang memberi amaran tentang sebarang pengecam yang tiada dalam bentuk ternormal ISO 10646 "C",
NFC. NFC ialah borang yang disyorkan untuk kebanyakan kegunaan. Ia bersamaan dengan -Wnormal.

Malangnya, terdapat beberapa aksara yang dibenarkan dalam pengecam oleh ISO C dan ISO C++
bahawa, apabila bertukar menjadi NFC, tidak dibenarkan dalam pengecam. Iaitu, tidak ada cara
untuk menggunakan simbol ini dalam ISO C atau C++ mudah alih dan mempunyai semua pengecam anda dalam NFC.
-Wnormalized=id menyekat amaran untuk watak-watak ini. Diharapkan pada masa hadapan
versi piawaian yang terlibat akan membetulkan ini, itulah sebabnya pilihan ini tidak
lalai.

Anda boleh mematikan amaran untuk semua aksara dengan menulis -Wnormal = tiada or
-Wno-normal. Anda hanya perlu melakukan ini jika anda menggunakan beberapa normalisasi lain
skema (seperti "D"), kerana jika tidak, anda boleh membuat pepijat dengan mudah
mustahil untuk dilihat.

Sesetengah aksara dalam ISO 10646 mempunyai makna yang berbeza tetapi kelihatan sama dalam sesetengah fon
atau metodologi paparan, terutamanya apabila pemformatan telah digunakan. Contohnya
"\u207F", "HURUF KECIL N LATIN SUPERSKRIP", memaparkan sama seperti "n" biasa yang
telah diletakkan dalam superskrip. ISO 10646 mentakrifkan NFKC skim normalisasi kepada
tukar semua ini ke dalam bentuk standard juga, dan GCC memberi amaran jika kod anda tiada
NFKC jika anda menggunakan -Wnormalized=nfkc. Amaran ini adalah setanding dengan amaran tentang setiap
pengecam yang mengandungi huruf O kerana ia mungkin keliru dengan digit 0,
dan begitu juga bukan lalai, tetapi mungkin berguna sebagai konvensyen pengekodan tempatan jika
persekitaran pengaturcaraan tidak boleh diperbaiki untuk memaparkan aksara ini dengan jelas.

-Wno-ditamatkan
Jangan memberi amaran tentang penggunaan ciri yang tidak digunakan lagi.

-Perisytiharan-tidak-ditamatkan
Jangan memberi amaran tentang penggunaan fungsi, pembolehubah dan jenis yang ditandai sebagai ditamatkan oleh
menggunakan atribut "ditamatkan".

-Wno-limpahan
Jangan beri amaran tentang limpahan masa kompilasi dalam ungkapan malar.

-Wno-odr
Beri amaran tentang pelanggaran Peraturan Satu Definisi semasa pengoptimuman masa pautan. Memerlukan
-flto-odr-type-cantuman untuk didayakan. Didayakan secara lalai.

-Wopenmp-simd
Beri amaran jika model kos vectorizer mengatasi OpenMP atau arahan simd Cilk Plus
ditetapkan oleh pengguna. The -fsimd-cost-model=unlimited pilihan boleh digunakan untuk melonggarkan kos
model.

-Woverride-init (C dan Objektif-C sahaja)
Beri amaran jika medan yang dimulakan tanpa kesan sampingan ditindih apabila menggunakan yang ditetapkan
pemula.

Amaran ini disertakan dalam -Wextra. Untuk mendapatkan yang lain -Wextra amaran tanpa yang ini,
penggunaan -Wextra -Wno-override-init.

-Wpacked
Beri amaran jika struktur diberi atribut packed, tetapi atribut packed tidak mempunyai
kesan pada susun atur atau saiz struktur. Struktur sedemikian mungkin tidak sejajar untuknya
sedikit faedah. Sebagai contoh, dalam kod ini, pembolehubah "fx" dalam "bar struct" ialah
tidak sejajar walaupun "bar struct" sendiri tidak mempunyai atribut yang dibungkus:

struct foo {
int x;
aksara a, b, c, d;
} __ atribut __ ((dikemas));
bar struct {
char z;
struct foo f;
};

-Wpacked-bitfield-compat
Siri 4.1, 4.2 dan 4.3 GCC mengabaikan atribut "dibungkus" pada medan bit jenis
"char". Ini telah ditetapkan dalam GCC 4.4 tetapi perubahan itu boleh membawa kepada perbezaan dalam
susun atur struktur. GCC memberitahu anda apabila offset medan sedemikian telah berubah dalam GCC
4.4. Sebagai contoh, tiada lagi padding 4-bit antara medan "a" dan "b" dalam ini
struktur:

struct foo
{
char a:4;
aksara b:8;
} __atribut__ ((dikemaskan));

Amaran ini didayakan secara lalai. guna -Wno-packed-bitfield-compat untuk melumpuhkan ini
amaran.

-Wpadded
Beri amaran jika pelapik disertakan dalam struktur, sama ada untuk menyelaraskan elemen
struktur atau untuk menyelaraskan keseluruhan struktur. Kadang-kadang apabila ini berlaku adalah mungkin
untuk menyusun semula bidang struktur untuk mengurangkan pelapik dan seterusnya membuat
struktur lebih kecil.

-Wredundant-decls
Beri amaran jika ada yang diisytiharkan lebih daripada sekali dalam skop yang sama, walaupun dalam kes di mana
pengisytiharan berbilang adalah sah dan tidak mengubah apa-apa.

-Wnested-externs (C dan Objektif-C sahaja)
Beri amaran jika pengisytiharan "luar" ditemui dalam fungsi.

-Wno-diwarisi-variadic-ctor
Sekat amaran tentang penggunaan C++ 11 mewarisi pembina apabila kelas asas
diwarisi daripada mempunyai pembina variadik C; amaran dihidupkan secara lalai kerana
elipsis tidak diwarisi.

-Winline
Beri amaran jika fungsi yang diisytiharkan sebagai sebaris tidak boleh sebaris. Walaupun dengan ini
pilihan, pengkompil tidak memberi amaran tentang kegagalan pada fungsi sebaris yang diisytiharkan dalam
pengepala sistem.

Penyusun menggunakan pelbagai heuristik untuk menentukan sama ada untuk sebaris atau tidak
fungsi. Sebagai contoh, pengkompil mengambil kira saiz fungsi yang sedang
sebaris dan jumlah sebaris yang telah dilakukan dalam fungsi semasa.
Oleh itu, perubahan yang kelihatan tidak ketara dalam program sumber boleh menyebabkan
amaran yang dihasilkan oleh -Winline untuk muncul atau hilang.

-Wno-invalid-offsetof (C++ dan Objektif-C++ sahaja)
Sekat amaran daripada menggunakan makro "offsetof" kepada jenis bukan POD. mengikut
standard ISO C++ 2014, menggunakan "offsetof" pada jenis susun atur bukan standard ialah
tidak ditentukan. Dalam pelaksanaan C++ sedia ada, bagaimanapun, "offsetof" biasanya memberikan
hasil yang bermakna. Bendera ini adalah untuk pengguna yang sedar bahawa mereka sedang menulis
kod bukan mudah alih dan yang sengaja memilih untuk mengabaikan amaran mengenainya.

Sekatan pada "offsetof" mungkin dilonggarkan dalam versi piawaian C++ yang akan datang.

-Wno-int-to-pointer-cast
Sekat amaran daripada hantaran kepada jenis penunjuk bagi integer dengan saiz yang berbeza. Dalam
C++, menghantar ke jenis penuding dengan saiz yang lebih kecil ialah ralat. Wint-to-pointer-cast is
didayakan secara lalai.

-Wno-pointer-to-int-cast (C dan Objektif-C sahaja)
Sekat amaran daripada hantaran daripada penuding kepada jenis integer dengan saiz yang berbeza.

-Winvalid-pch
Beri amaran jika pengepala yang diprakompil ditemui dalam laluan carian tetapi tidak boleh digunakan.

-Wlong-long
Beri amaran jika jenis "panjang panjang" digunakan. Ini didayakan oleh sama ada -Wpedantik or
-Wtradisional dalam mod ISO C90 dan C++98. Untuk menghalang mesej amaran, gunakan
-Wno-long-long.

-Wvariadic-makro
Beri amaran jika makro variadic digunakan dalam mod ISO C90, atau jika sintaks alternatif GNU adalah
digunakan dalam mod ISO C99. Ini didayakan oleh sama ada -Wpedantik or -Wtradisional. Untuk
menghalang mesej amaran, gunakan -Wno-variadic-makro.

-Wvarargs
Beri amaran mengenai penggunaan makro yang boleh dipersoalkan yang digunakan untuk mengendalikan hujah pembolehubah seperti
"va_start". Ini adalah lalai. Untuk menghalang mesej amaran, gunakan -Wno-varargs.

-Wvector-operasi-prestasi
Beri amaran jika operasi vektor tidak dilaksanakan melalui keupayaan SIMD seni bina.
Terutamanya berguna untuk penalaan prestasi. Operasi vektor boleh dilaksanakan
"piecewise", yang bermaksud bahawa operasi skalar dilakukan pada setiap vektor
unsur; "selari", yang bermaksud bahawa operasi vektor dilaksanakan menggunakan
skalar jenis yang lebih luas, yang biasanya lebih cekap prestasi; dan "sebagai seorang tunggal
skalar", yang bermaksud bahawa vektor sesuai dengan jenis skalar.

-Wno-virtual-move-assign
Sekat amaran tentang mewarisi dari pangkalan maya dengan langkah C++11 yang bukan remeh
pengendali tugasan. Ini berbahaya kerana jika pangkalan maya boleh dicapai bersama
lebih daripada satu laluan, ia digerakkan beberapa kali, yang boleh bermakna kedua-dua objek berakhir
negeri yang berpindah. Jika operator penugasan pindah ditulis untuk mengelakkan berpindah dari
objek yang dialihkan, amaran ini boleh dilumpuhkan.

-Wvla
Beri amaran jika tatasusunan panjang berubah digunakan dalam kod. -Wno-vla mencegah -Wpedantik
amaran tatasusunan panjang berubah-ubah.

-Wvolatile-register-var
Beri amaran jika pembolehubah daftar diisytiharkan tidak menentu. Pengubah suai tidak menentu tidak
menghalang semua pengoptimuman yang mungkin menghapuskan bacaan dan/atau tulis untuk mendaftar
pembolehubah. Amaran ini didayakan oleh -Dinding.

-Wdisabled-optimization
Beri amaran jika pas pengoptimuman yang diminta dilumpuhkan. Amaran ini tidak secara amnya
menunjukkan bahawa terdapat apa-apa yang salah dengan kod anda; ia hanya menunjukkan bahawa GCC
pengoptimum tidak dapat mengendalikan kod dengan berkesan. Selalunya, masalahnya ialah anda
kod terlalu besar atau terlalu kompleks; GCC enggan mengoptimumkan program apabila pengoptimuman
itu sendiri mungkin mengambil masa yang terlalu lama.

-Wpointer-tanda (C dan Objektif-C sahaja)
Beri amaran untuk hujah penunjuk lulus atau tugasan dengan tandatangan yang berbeza. ini
pilihan hanya disokong untuk C dan Objektif-C. Ia tersirat oleh -Dinding dan oleh
-Wpedantik, yang boleh dilumpuhkan dengan -Wno-pointer-sign.

-Wstack-pelindung
Pilihan ini hanya aktif apabila -fstack-pelindung adalah aktif. Ia memberi amaran tentang fungsi
yang tidak dilindungi daripada pecah tindanan.

-Rentetan panjang lebar
Beri amaran tentang pemalar rentetan yang lebih panjang daripada panjang "maksimum minimum".
dinyatakan dalam piawaian C. Penyusun moden biasanya membenarkan pemalar rentetan itu
adalah lebih lama daripada had minimum standard, tetapi program yang sangat mudah alih sepatutnya
elakkan menggunakan tali yang lebih panjang.

Had terpakai selepas rentetan gabungan berterusan, dan tidak mengira jejak
NUL. Dalam C90, hadnya ialah 509 aksara; dalam C99, ia dinaikkan kepada 4095. C++98
tidak menentukan maksimum minimum normatif, jadi kami tidak mendiagnosis rentetan terlalu panjang dalam
C++.

Pilihan ini tersirat oleh -Wpedantik, dan boleh dilumpuhkan dengan
-Wno-terlalu panjang-rentetan.

-Wunsuffixed-float-pemalar (C dan Objektif-C sahaja)
Mengeluarkan amaran untuk sebarang pemalar terapung yang tidak mempunyai akhiran. Apabila digunakan
Bersama-sama dengan -Wsystem-headers ia memberi amaran tentang pemalar sedemikian dalam fail pengepala sistem.
Ini boleh berguna apabila menyediakan kod untuk digunakan dengan pragma "FLOAT_CONST_DECIMAL64"
daripada sambungan titik terapung perpuluhan kepada C99.

-Wno-designated-init (C dan Objektif-C sahaja)
Sekat amaran apabila pemula kedudukan digunakan untuk memulakan struktur yang
telah ditandakan dengan atribut "designated_init".

Pilihan untuk Debugging Program or GCC
GCC mempunyai pelbagai pilihan khas yang digunakan untuk penyahpepijatan sama ada program anda atau GCC:

-g Menghasilkan maklumat penyahpepijatan dalam format asli sistem pengendalian (tikam, COFF,
XCOFF, atau DWARF 2). GDB boleh bekerja dengan maklumat penyahpepijatan ini.

Pada kebanyakan sistem yang menggunakan format tikaman, -g membolehkan penggunaan maklumat penyahpepijatan tambahan
yang hanya GDB boleh gunakan; maklumat tambahan ini menjadikan penyahpepijatan berfungsi lebih baik dalam GDB tetapi
mungkin membuat penyahpepijat lain ranap atau enggan membaca program. Jika anda mahu
mengawal dengan pasti sama ada untuk menjana maklumat tambahan, gunakan -gstab+, -gstabs,
-gxcoff+, -gxcoff, Atau -gvms (lihat di bawah).

GCC membolehkan anda menggunakan -g dengan -O. Pintasan yang diambil oleh kod yang dioptimumkan mungkin
kadangkala menghasilkan keputusan yang mengejutkan: beberapa pembolehubah yang anda isytiharkan mungkin tidak wujud di
semua; aliran kawalan mungkin bergerak secara ringkas di tempat yang anda tidak jangkakan; beberapa kenyataan mungkin
tidak boleh dilaksanakan kerana mereka mengira hasil malar atau nilainya sudah berada di
tangan; sesetengah kenyataan mungkin dilaksanakan di tempat yang berbeza kerana ia telah dialihkan keluar
daripada gelung.

Walau bagaimanapun, ia terbukti mungkin untuk menyahpepijat output yang dioptimumkan. Ini menjadikannya munasabah
untuk menggunakan pengoptimum untuk program yang mungkin mempunyai pepijat.

Pilihan berikut berguna apabila GCC dijana dengan keupayaan untuk lebih banyak lagi
daripada satu format penyahpepijatan.

-gsplit-kerdil
Asingkan sebanyak mungkin maklumat penyahpepijatan kerdil ke dalam fail output yang berasingan
dengan sambungan .dwo. Pilihan ini membolehkan sistem binaan mengelak daripada memautkan fail
dengan maklumat nyahpepijat. Untuk menjadi berguna, pilihan ini memerlukan penyahpepijat yang mampu
membaca fail .dwo.

-ggdb
Menghasilkan maklumat penyahpepijatan untuk digunakan oleh GDB. Ini bermakna menggunakan yang paling ekspresif
format tersedia (DWARF 2, tikaman, atau format asli jika kedua-duanya tidak ada
disokong), termasuk sambungan GDB jika boleh.

-gpubnames
Hasilkan bahagian .debug_pubname dan .debug_pubtypes kerdil.

-ggnu-pubnames
Hasilkan bahagian .debug_pubnames dan .debug_pubtypes dalam format yang sesuai untuknya
penukaran kepada indeks GDB. Pilihan ini hanya berguna dengan pemaut yang boleh
menghasilkan indeks GDB versi 7.

-gstabs
Hasilkan maklumat penyahpepijatan dalam format tikaman (jika disokong), tanpa GDB
sambungan. Ini ialah format yang digunakan oleh DBX pada kebanyakan sistem BSD. Pada MIPS, Alpha dan
Sistem V Release 4 sistem pilihan ini menghasilkan output debugging tikaman yang tidak
difahami oleh DBX atau SDB. Pada sistem Sistem V Release 4 pilihan ini memerlukan GNU
penghimpun.

-memusnahkan-simbol-debug-tidak digunakan
Hasilkan maklumat penyahpepijatan dalam format tikaman (jika disokong), untuk simbol sahaja
yang sebenarnya digunakan.

-femit-class-debug-sentiasa
Daripada memancarkan maklumat penyahpepijatan untuk kelas C++ hanya dalam satu fail objek,
memancarkannya dalam semua fail objek menggunakan kelas. Pilihan ini hendaklah digunakan hanya dengan
penyahpepijat yang tidak dapat mengendalikan cara GCC biasanya mengeluarkan maklumat penyahpepijatan
untuk kelas kerana menggunakan pilihan ini meningkatkan saiz maklumat penyahpepijatan dengan
sebanyak faktor dua.

-fdebug-types-section
Apabila menggunakan DWARF Versi 4 atau lebih tinggi, jenis DIES boleh dimasukkan ke dalam mereka sendiri
bahagian ".debug_types" dan bukannya menjadikannya sebahagian daripada bahagian ".debug_info". Ia
adalah lebih cekap untuk meletakkannya dalam bahagian comdat yang berasingan kerana pemaut boleh kemudiannya
keluarkan pendua. Tetapi tidak semua pengguna DWARF menyokong bahagian ".debug_types" lagi
dan pada sesetengah objek ".debug_types" menghasilkan lebih besar dan bukannya penyahpepijatan yang lebih kecil
maklumat.

-gstab+
Hasilkan maklumat penyahpepijatan dalam format tikaman (jika disokong), menggunakan GNU
sambungan hanya difahami oleh penyahpepijat GNU (GDB). Penggunaan sambungan ini adalah
berkemungkinan membuat penyahpepijat lain ranap atau enggan membaca program.

-gcoff
Hasilkan maklumat penyahpepijatan dalam format COFF (jika disokong). Ini adalah
format yang digunakan oleh SDB pada kebanyakan sistem Sistem V sebelum Keluaran Sistem V 4.

-gxcoff
Hasilkan maklumat penyahpepijatan dalam format XCOFF (jika itu disokong). Ini adalah
format yang digunakan oleh penyahpepijat DBX pada sistem IBM RS/6000.

-gxcoff+
Hasilkan maklumat penyahpepijatan dalam format XCOFF (jika disokong), menggunakan GNU
sambungan hanya difahami oleh penyahpepijat GNU (GDB). Penggunaan sambungan ini adalah
berkemungkinan membuat penyahpepijat lain ranap atau enggan membaca program, dan boleh menyebabkan
pemasang selain daripada pemasang GNU (GAS) gagal dengan ralat.

-gdwarf-versi
Hasilkan maklumat penyahpepijatan dalam format DWARF (jika disokong). Nilai
versi mungkin sama ada 2, 3, 4 atau 5; versi lalai untuk kebanyakan sasaran ialah 4. DWARF
Versi 5 hanyalah percubaan.

Ambil perhatian bahawa dengan DWARF Versi 2, sesetengah port memerlukan dan sentiasa menggunakan beberapa yang tidak bercanggah
Sambungan DWARF 3 dalam jadual berehat.

Versi 4 mungkin memerlukan GDB 7.0 dan -fvar-tracking-assignments untuk faedah maksimum.

-grecord-gcc-suis
Suis ini menyebabkan pilihan baris perintah yang digunakan untuk memanggil pengkompil yang mungkin
menjejaskan penjanaan kod untuk ditambahkan pada atribut DW_AT_producer dalam DWARF
maklumat penyahpepijatan. Pilihan digabungkan dengan ruang yang memisahkannya
satu sama lain dan dari versi pengkompil. Lihat juga -frecord-gcc-suis untuk yang lain
cara menyimpan pilihan pengkompil ke dalam fail objek. Ini adalah lalai.

-gno-record-gcc-suis
Tidak benarkan menambahkan pilihan baris perintah pada atribut DW_AT_producer dalam DWARF
maklumat penyahpepijatan.

-gstrict-kerdil
Tidak benarkan menggunakan sambungan versi standard DWARF yang lebih baru daripada yang dipilih
-gdwarf-versi. Pada kebanyakan sasaran yang menggunakan sambungan DWARF yang tidak bercanggah dari kemudian
versi standard dibenarkan.

-gno-ketat-kerdil
Benarkan menggunakan sambungan versi standard DWARF yang lebih baru daripada yang dipilih
-gdwarf-versi.

-gz[=jenis]
Hasilkan bahagian nyahpepijat termampat dalam format DWARF, jika itu disokong. Jika jenis is
tidak diberikan, jenis lalai bergantung pada keupayaan pemasang dan pemaut
terpakai. jenis mungkin salah satunya tiada (jangan mampatkan bahagian nyahpepijat), zlib (gunakan zlib
pemampatan dalam format ELF gABI), atau zlib-gnu (gunakan mampatan zlib dalam GNU tradisional
format). Jika pemaut tidak menyokong penulisan bahagian nyahpepijat termampat, pilihan
ditolak. Jika tidak, jika pemasang tidak menyokongnya, -gz adalah senyap
diabaikan apabila menghasilkan fail objek.

-gvms
Hasilkan maklumat nyahpepijat dalam format nyahpepijat Alpha/VMS (jika disokong). ini
ialah format yang digunakan oleh DEBUG pada sistem Alpha/VMS.

-gtahap
-ggdbtahap
-gstabstahap
-gcofftahap
-gxcofftahap
-gvmstahap
Minta maklumat penyahpepijatan dan juga gunakan tahap untuk menentukan berapa banyak maklumat. The
tahap lalai ialah 2.

Tahap 0 tidak menghasilkan maklumat nyahpepijat sama sekali. Oleh itu, -g0 menafikan -g.

Tahap 1 menghasilkan maklumat minimum, cukup untuk membuat jejak belakang di bahagian
program yang anda tidak merancang untuk nyahpepijat. Ini termasuk perihalan fungsi dan
pembolehubah luaran, dan jadual nombor baris, tetapi tiada maklumat tentang pembolehubah tempatan.

Tahap 3 termasuk maklumat tambahan, seperti semua definisi makro yang terdapat dalam
program. Sesetengah penyahpepijat menyokong pengembangan makro apabila anda menggunakan -g3.

-gdwarf-2 tidak menerima tahap nyahpepijat bercantum, kerana GCC pernah menyokong satu
pilihan -gdwarf yang bermaksud untuk menjana maklumat nyahpepijat dalam versi 1 DWARF
format (yang sangat berbeza daripada versi 2), dan ia akan menjadi terlalu mengelirukan.
Format nyahpepijat itu sudah lama usang, tetapi pilihan itu tidak boleh diubah sekarang. Sebaliknya gunakan
tambahan -gtahap pilihan untuk menukar tahap nyahpepijat untuk DWARF.

-gtoggle
Matikan penjanaan maklumat nyahpepijat, jika meninggalkan pilihan ini menjananya atau hidupkannya
pada tahap 2 sebaliknya. Kedudukan hujah ini dalam baris arahan tidak
perkara; ia berkuat kuasa selepas semua pilihan lain diproses, dan ia hanya melakukannya
sekali, tidak kira berapa kali diberikan. Ini terutamanya bertujuan untuk digunakan dengan
-fcompare-debug.

-fsanitize=alamat
Dayakan AddressSanitizer, pengesan ralat memori yang pantas. Arahan capaian memori ialah
diperalatkan untuk mengesan pepijat di luar sempadan dan bebas penggunaan. Lihat
<https://github.com/google/sanitizers/wiki/AddressSanitizer> untuk maklumat lanjut. The
tingkah laku masa larian boleh dipengaruhi menggunakan ASAN_OPTIONS pembolehubah persekitaran. Bila
ditetapkan kepada "help=1", pilihan yang tersedia ditunjukkan pada permulaan instrumen
program. Lihat
<https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags> untuk a
senarai pilihan yang disokong.

-fsanitize=alamat kernel
Dayakan AddressSanitizer untuk kernel Linux. Lihathttps://github.com/google/kasan/wiki>
untuk maklumat lanjut.

-fsanitize=benang
Dayakan ThreadSanitizer, pengesan perlumbaan data pantas. Arahan capaian memori ialah
diperalatkan untuk mengesan pepijat perlumbaan data. Lihat
<https://github.com/google/sanitizers/wiki#threadsanitizer> untuk maklumat lanjut. larian-
tingkah laku masa boleh dipengaruhi menggunakan TSAN_OPTIONS pembolehubah persekitaran; lihat
<https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags> untuk senarai
pilihan yang disokong.

-fsanitize=bocor
Dayakan LeakSanitizer, pengesan kebocoran memori. Pilihan ini hanya penting untuk memautkan
boleh laku dan jika tidak -fsanitize=alamat tidak -fsanitize=benang digunakan. Dalam itu
kes boleh laku dipautkan dengan perpustakaan yang mengatasi "malloc" dan lain-lain
fungsi pengagih. Lihat
<https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer> untuk lebih lanjut
butiran. Tingkah laku masa larian boleh dipengaruhi menggunakan LSAN_OPTIONS persekitaran
berubah-ubah.

-fsanitize=undefined
Dayakan UndefinedBehaviorSanitizer, pengesan gelagat tidak jelas yang pantas. Macam-macam
pengiraan digunakan untuk mengesan tingkah laku yang tidak ditentukan pada masa jalan. semasa
subpilihan ialah:

-fsanitize=shift
Pilihan ini membolehkan menyemak bahawa hasil operasi anjakan tidak
tidak ditentukan. Ambil perhatian bahawa apa yang sebenarnya dianggap tidak ditentukan berbeza sedikit
antara C dan C++, serta antara ISO C90 dan C99, dsb.

-fsanitize=integer-divide-by-sifar
Kesan pembahagian integer dengan sifar serta pembahagian "INT_MIN / -1".

-fsanitize=tidak boleh dicapai
Dengan pilihan ini, pengkompil menukar panggilan "__builtin_unreachable" menjadi a
panggilan mesej diagnostik sebaliknya. Apabila mencapai panggilan "__builtin_unreachable",
tingkah laku tidak ditentukan.

-fsanitize=vla-bound
Pilihan ini mengarahkan pengkompil untuk menyemak bahawa saiz panjang berubah-ubah
array adalah positif.

-fsanitize=null
Pilihan ini membolehkan semakan penunjuk. Terutamanya, aplikasi yang dibina dengan
pilihan ini dihidupkan akan mengeluarkan mesej ralat apabila ia cuba menyahrujuk a
Penunjuk NULL, atau jika rujukan (mungkin rujukan rnilai) terikat pada NULL
penunjuk, atau jika kaedah digunakan pada objek yang ditunjuk oleh penunjuk NULL.

-fsanitize=kembali
Pilihan ini membolehkan semakan penyata pulangan. Program yang dibina dengan pilihan ini
dihidupkan akan mengeluarkan mesej ralat apabila berakhirnya fungsi bukan batal
dicapai tanpa benar-benar mengembalikan nilai. Pilihan ini berfungsi dalam C++ sahaja.

-fsanitize=signed-integer-overflow
Pilihan ini membolehkan pemeriksaan limpahan integer yang ditandatangani. Kami menyemak bahawa keputusan daripada
"+", "*", dan kedua-dua unari dan binari "-" tidak melimpah dalam yang ditandatangani
aritmetik. Ambil perhatian, peraturan promosi integer mesti diambil kira. Itu dia,
berikut bukan limpahan:

ditandatangani char a = SCHAR_MAX;
a++;

-fsanitize=bounds
Pilihan ini membolehkan instrumentasi sempadan tatasusunan. Pelbagai di luar batasan
akses dikesan. Ahli tatasusunan fleksibel, tatasusunan seperti ahli tatasusunan fleksibel,
dan pemula pembolehubah dengan storan statik tidak diperalatkan.

-fsanitize=penjajaran
Pilihan ini membolehkan penyemakan penjajaran penunjuk apabila ia dinyahrujuk,
atau apabila rujukan terikat pada sasaran yang tidak sejajar, atau apabila kaedah atau
pembina digunakan pada objek yang tidak sejajar.

-fsanitize=saiz objek
Pilihan ini membolehkan instrumentasi rujukan memori menggunakan
Fungsi "__builtin_object_size". Pelbagai capaian penunjuk di luar sempadan adalah
dikesan.

-fsanitize=apung-bahagi-dengan-sifar
Kesan pembahagian titik terapung dengan sifar. Tidak seperti pilihan lain yang serupa,
-fsanitize=apung-bahagi-dengan-sifar tidak didayakan oleh -fsanitize=undefined, sejak
pembahagian titik terapung dengan sifar boleh menjadi cara yang sah untuk mendapatkan infiniti
dan NaNs.

-fsanitize=float-cast-overflow
Pilihan ini membolehkan jenis titik terapung kepada semakan penukaran integer. Kita semak
bahawa hasil penukaran tidak melimpah. Tidak seperti lain yang serupa
pilihan, -fsanitize=float-cast-overflow tidak didayakan oleh -fsanitize=undefined.
Pilihan ini tidak berfungsi dengan baik dengan pengecualian "FE_INVALID" didayakan.

-fsanitize=nonnull-attribute
Pilihan ini membolehkan instrumentasi panggilan, menyemak sama ada nilai nol tidak
diserahkan kepada argumen yang ditandakan sebagai memerlukan nilai bukan nol oleh fungsi "nonnull".
atribut.

-fsanitize=mengembalikan-nonnull-attribute
Pilihan ini membolehkan instrumentasi pernyataan pulangan dalam fungsi yang ditanda dengan
Atribut fungsi "returns_nonnull", untuk mengesan pemulangan nilai nol daripada itu
fungsi.

-fsanitize=bool
Pilihan ini membolehkan instrumentasi beban daripada bool. Jika nilai selain daripada 0/1
dimuatkan, ralat masa jalan dikeluarkan.

-fsanitize=enum
Pilihan ini membolehkan instrumentasi beban daripada jenis enum. Jika sesuatu nilai
di luar julat nilai untuk jenis enum dimuatkan, ralat masa jalan ialah
dikeluarkan.

-fsanitize=vptr
Pilihan ini membolehkan instrumentasi panggilan fungsi ahli C++, akses ahli
dan beberapa penukaran antara penunjuk kepada kelas asas dan terbitan, untuk mengesahkan
objek yang dirujuk mempunyai jenis dinamik yang betul.

Manakala -ftrapv menyebabkan perangkap untuk limpahan yang ditandatangani dipancarkan, -fsanitize=undefined
memberikan mesej diagnostik. Pada masa ini, ini hanya berfungsi untuk keluarga bahasa C.

-fno-sanitize=semua
Pilihan ini melumpuhkan semua pembersih yang didayakan sebelum ini. -fsanitize=semua tidak
dibenarkan, kerana sesetengah sanitizer tidak boleh digunakan bersama.

-fasan-shadow-offset=nombor
Pilihan ini memaksa GCC menggunakan pengimbangan bayangan tersuai dalam semakan AddressSanitizer. Ia adalah
berguna untuk bereksperimen dengan susun atur memori bayang yang berbeza dalam Kernel
AddressSanitizer.

-fsanitize-pulih[=memilih]
-fsanitize-recover= mengawal mod pemulihan ralat untuk sanitizer yang disebut dalam koma-
senarai berasingan bagi memilih. Mendayakan pilihan ini untuk komponen sanitizer menyebabkannya
cuba untuk terus menjalankan program seolah-olah tiada ralat berlaku. Ini bermakna berbilang
ralat masa jalan boleh dilaporkan dalam satu program dijalankan, dan kod keluar dari
program mungkin menunjukkan kejayaan walaupun ralat telah dilaporkan. The
-fno-sanitize-recover= pilihan boleh digunakan untuk mengubah tingkah laku ini: hanya yang pertama
ralat yang dikesan dilaporkan dan program kemudian keluar dengan kod keluar bukan sifar.

Pada masa ini ciri ini hanya berfungsi untuk -fsanitize=undefined (dan sub pilihannya kecuali
untuk -fsanitize=tidak boleh dicapai dan -fsanitize=kembali), -fsanitize=float-cast-overflow,
-fsanitize=apung-bahagi-dengan-sifar dan -fsanitize=alamat kernel. Untuk sanitizer ini
pemulihan ralat dihidupkan secara lalai. -fsanitize-recover=semua dan
-fno-sanitize-recover=semua juga diterima, yang pertama membolehkan pemulihan untuk semua
sanitizer yang menyokongnya, yang terakhir melumpuhkan pemulihan untuk semua sanitizer yang
menyokongnya.

Sintaks tanpa eksplisit memilih parameter tidak digunakan lagi. Ia bersamaan dengan

-fsanitize-recover=undefined,float-cast-overflow,float-divide-by-sifar

Begitu juga -fno-sanitize-recover adalah bersamaan dengan

-fno-sanitize-recover=undefined,float-cast-overflow,float-divide-by-sifar

-fsanitize-undefined-trap-on-error
. -fsanitize-undefined-trap-on-error pilihan mengarahkan pengkompil untuk melaporkan
tingkah laku tidak ditentukan menggunakan "__builtin_trap" dan bukannya rutin perpustakaan "libubsan".
Kelebihan ini ialah perpustakaan "libubsan" tidak diperlukan dan tidak dipautkan
dalam, jadi ini boleh digunakan walaupun dalam persekitaran yang berdiri sendiri.

-fcheck-pointer-bounds
Dayakan instrumentasi Pemeriksa Sempadan Penunjuk. Setiap rujukan memori diperalatkan
dengan semakan penunjuk yang digunakan untuk capaian memori terhadap had yang berkaitan dengannya
penunjuk.

Pada masa ini hanya terdapat pelaksanaan untuk Intel MPX yang tersedia, oleh itu sasaran x86 dan
-mmpx diperlukan untuk mendayakan ciri ini. Instrumen berasaskan MPX memerlukan a
perpustakaan runtime untuk mendayakan MPX dalam perkakasan dan mengendalikan isyarat pelanggaran sempadan. Oleh
lalai bila -fcheck-pointer-bounds dan -mmpx pilihan digunakan untuk memautkan program, yang
Pautan pemandu GCC terhadap libmpx perpustakaan runtime dan libmpxwrappers perpustakaan. Ia
juga menghantar '-z bndplt' kepada pemaut sekiranya ia menyokong pilihan ini (yang ditandakan
pada konfigurasi libmpx). Ambil perhatian bahawa versi lama pemaut mungkin mengabaikan pilihan. emas
pemaut tidak menyokong pilihan '-z bndplt'. Tanpa sokongan '-z bndplt' dalam penghubung semua
panggilan ke perpustakaan dinamik kehilangan had yang dilalui mengurangkan tahap perlindungan keseluruhan. ia adalah
amat disyorkan untuk menggunakan penghubung dengan sokongan '-z bndplt'. Sekiranya penghubung tersebut tidak
tersedia ia dinasihatkan untuk sentiasa digunakan -static-libmpxwrappers untuk perlindungan yang lebih baik
tahap atau penggunaan -statik untuk mengelakkan sepenuhnya panggilan luaran ke perpustakaan dinamik. MPX-
instrumentasi berasaskan boleh digunakan untuk penyahpepijatan dan juga boleh dimasukkan dalam pengeluaran
kod untuk meningkatkan keselamatan program. Bergantung pada penggunaan, anda mungkin berbeza
keperluan untuk perpustakaan runtime. Versi semasa pustaka masa jalan MPX
adalah lebih berorientasikan untuk digunakan sebagai alat penyahpepijatan. Penggunaan perpustakaan masa jalan MPX membayangkan
-lpthread. Lihat juga -static-libmpx. Tingkah laku perpustakaan masa jalan boleh dipengaruhi
menggunakan pelbagai CHKP_RT_* pembolehubah persekitaran. Lihat
<https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler> untuk lebih lanjut
butiran.

Instrumen yang dihasilkan mungkin dikawal oleh pelbagai -fchkp-* pilihan dan oleh
Atribut medan struktur "bnd_variable_size" dan "bnd_legacy", dan "bnd_instrument"
atribut fungsi. GCC juga menyediakan beberapa fungsi terbina dalam untuk mengawal
Pemeriksa Sempadan Penunjuk.

-fchkp-check-incomplete-type
Hasilkan semakan sempadan penunjuk untuk pembolehubah dengan jenis yang tidak lengkap. Didayakan oleh
lalai.

-fchkp-sempadan-sempit
Mengawal sempadan yang digunakan oleh Pemeriksa Sempadan Penunjuk untuk penunjuk ke medan objek. Jika
penyempitan didayakan kemudian sempadan medan digunakan. Jika tidak, sempadan objek digunakan.
Lihat juga -fchkp-susun-sempit-ke-paling-dalam dan -fchkp-first-field-mempunyai-sempadan-sendiri.
Diaktifkan secara lalai.

-fchkp-first-field-mempunyai-sempadan-sendiri
Forces Pointer Bounds Checker untuk menggunakan sempadan sempit untuk alamat yang pertama
medan dalam struktur. Secara lalai penuding ke medan pertama mempunyai sempadan yang sama
sebagai penunjuk kepada keseluruhan struktur.

-fchkp-susun-sempit-ke-paling-dalam
Forces Pointer Bounds Checker untuk menggunakan sempadan tatasusunan terdalam sekiranya bersarang
akses tatasusunan statik. Secara lalai pilihan ini dilumpuhkan dan sempadan yang paling luar
tatasusunan digunakan.

-fchkp-optimumkan
Mendayakan pengoptimuman Pemeriksa Sempadan Penunjuk. Didayakan secara lalai pada pengoptimuman
tahap -O, -O2, -O3.

-fchkp-use-fast-string-functions
Mendayakan penggunaan *_nobnd versi fungsi rentetan (bukan menyalin sempadan) oleh Penunjuk
Pemeriksa Sempadan. Dilumpuhkan secara lalai.

-fchkp-use-nochk-string-functions
Mendayakan penggunaan *_nochk versi fungsi rentetan (tidak menyemak sempadan) oleh Penunjuk
Pemeriksa Sempadan. Dilumpuhkan secara lalai.

-fchkp-use-static-bounds
Benarkan Pemeriksa Sempadan Penunjuk menjana sempadan statik menahan sempadan statik
pembolehubah. Didayakan secara lalai.

-fchkp-use-static-const-bounds
Gunakan sempadan yang dimulakan secara statik untuk sempadan tetap dan bukannya menjana setiap satu
masa mereka diperlukan. Secara lalai didayakan apabila -fchkp-use-static-bounds Didayakan.

-fchkp-merawat-sifar-saiz-dinamik-sebagai-tak terhingga
Dengan pilihan ini, objek dengan jenis tidak lengkap yang saiz yang diperoleh secara dinamik adalah sifar
sebaliknya dianggap mempunyai saiz tak terhingga oleh Pemeriksa Sempadan Penunjuk. Pilihan ini
mungkin berguna jika program dipautkan dengan perpustakaan yang tiada maklumat saiz untuk sesetengah orang
simbol. Dilumpuhkan secara lalai.

-fchkp-semak-baca
Mengarahkan Pemeriksa Sempadan Penunjuk untuk menjana semakan untuk semua akses baca ke ingatan.
Diaktifkan secara lalai.

-fchkp-semak-tulis
Mengarahkan Pemeriksa Sempadan Penunjuk untuk menjana semakan untuk semua akses tulis kepada ingatan.
Diaktifkan secara lalai.

-fchkp-kedai-batas
Arahkan Pemeriksa Sempadan Penunjuk untuk menjana stor sempadan untuk penulisan penunjuk.
Diaktifkan secara lalai.

-fchkp-instrumen-panggilan
Mengarahkan Pemeriksa Sempadan Penunjuk untuk menghantar sempadan penunjuk kepada panggilan. Didayakan secara lalai.

-fchkp-instrumen-ditandakan sahaja
Mengarahkan Pemeriksa Sempadan Penunjuk kepada fungsi instrumen sahaja yang ditandakan dengan
atribut "bnd_instrument". Dilumpuhkan secara lalai.

-fchkp-gunakan-pembungkus
Membenarkan Pemeriksa Sempadan Penunjuk menggantikan panggilan ke fungsi terbina dalam dengan panggilan ke
fungsi pembalut. Bila -fchkp-gunakan-pembungkus digunakan untuk memautkan program, pemacu GCC
pautan secara automatik terhadap libmpxwrappers. Lihat juga -static-libmpxwrappers. Didayakan
secara lalai.

-fdump-final-insns[=fail]
Buang perwakilan dalaman akhir (RTL) ke fail. Jika hujah pilihan ialah
ditinggalkan (atau jika fail ialah "."), nama fail dump ditentukan dengan melampirkan
".gkd" kepada nama fail output kompilasi.

-fcompare-debug[=memilih]
Jika tiada ralat berlaku semasa penyusunan, jalankan pengkompil untuk kali kedua, sambil menambah memilih dan
-fcompare-debug-second kepada hujah yang diserahkan kepada kompilasi kedua. Buang
perwakilan dalaman terakhir dalam kedua-dua kompilasi, dan cetak ralat jika ia berbeza.

Jika tanda sama diketepikan, lalai -gtoggle digunakan.

Pembolehubah persekitaran GCC_COMPARE_DEBUG, jika ditakrifkan, tidak kosong dan bukan sifar,
secara tersirat membolehkan -fcompare-debug. Jika GCC_COMPARE_DEBUG ditakrifkan kepada rentetan
bermula dengan sengkang, kemudian ia digunakan untuk memilih, jika tidak lalai -gtoggle is
terpakai.

-fcompare-debug=, dengan tanda sama tetapi tanpa memilih, adalah bersamaan dengan
-fno-compare-debug, yang melumpuhkan lambakan perwakilan akhir dan
kompilasi kedua, menghalang genap GCC_COMPARE_DEBUG daripada berkuat kuasa.

Untuk mengesahkan liputan penuh semasa -fcompare-debug ujian, ditetapkan GCC_COMPARE_DEBUG untuk berkata
-fcompare-debug-not-overridden, yang ditolak oleh GCC sebagai pilihan yang tidak sah dalam mana-mana sebenarnya
penyusunan (bukannya prapemprosesan, pemasangan atau pemautan). Untuk mendapatkan amaran sahaja,
menetapkan GCC_COMPARE_DEBUG kepada -w%n-fcompare-debug tidak diganti akan buat.

-fcompare-debug-second
Pilihan ini secara tersirat diserahkan kepada pengkompil untuk kompilasi kedua yang diminta
by -fcompare-debug, bersama-sama dengan pilihan untuk menyenyapkan amaran dan meninggalkan pilihan lain
yang akan menyebabkan output pengkompil kesan sampingan kepada fail atau kepada output standard.
Fail dump dan fail sementara yang dipelihara dinamakan semula supaya mengandungi ".gk"
sambungan tambahan semasa kompilasi kedua, untuk mengelak daripada menimpanya
dihasilkan oleh yang pertama.

Apabila pilihan ini diserahkan kepada pemacu pengkompil, ia menyebabkan pertama kompilasi kepada
dilangkau, yang menjadikannya berguna untuk sedikit selain daripada menyahpepijat pengkompil dengan betul.

-feliminate-dwarf2-dups
Mampatkan maklumat penyahpepijatan DWARF 2 dengan menghapuskan maklumat pendua tentang
setiap simbol. Pilihan ini hanya masuk akal apabila menjana penyahpepijatan DWARF 2
maklumat dengan -gdwarf-2.

-femit-struct-debug-baseonly
Mengeluarkan maklumat nyahpepijat untuk jenis seperti struct hanya apabila nama asas bagi
fail sumber kompilasi sepadan dengan nama asas fail di mana struct ditakrifkan.

Pilihan ini mengurangkan dengan ketara saiz maklumat penyahpepijatan, tetapi pada
potensi kehilangan yang ketara dalam maklumat jenis kepada penyahpepijat. Lihat
-femit-struct-debug-dikurangkan untuk pilihan yang kurang agresif. Lihat
-femit-struct-debug-detailed untuk kawalan yang lebih terperinci.

Pilihan ini hanya berfungsi dengan DWARF 2.

-femit-struct-debug-dikurangkan
Mengeluarkan maklumat nyahpepijat untuk jenis seperti struct hanya apabila nama asas bagi
fail sumber kompilasi sepadan dengan nama asas fail yang jenisnya ditentukan,
melainkan struct ialah templat atau ditakrifkan dalam pengepala sistem.

Pilihan ini mengurangkan saiz maklumat penyahpepijatan dengan ketara, dengan beberapa
potensi kehilangan maklumat jenis kepada penyahpepijat. Lihat -femit-struct-debug-baseonly
untuk pilihan yang lebih agresif. Lihat -femit-struct-debug-detailed untuk lebih terperinci
kawalan.

Pilihan ini hanya berfungsi dengan DWARF 2.

-femit-struct-debug-detailed[=senarai spesifikasi]
Tentukan jenis seperti struct yang mana pengkompil menjana maklumat nyahpepijat. The
niat adalah untuk mengurangkan maklumat pendua struct debug antara fail objek yang berbeza
dalam program yang sama.

Pilihan ini ialah versi terperinci bagi -femit-struct-debug-dikurangkan dan
-femit-struct-debug-baseonly, yang berfungsi untuk kebanyakan keperluan.

Spesifikasi mempunyai sintaks[pengarah:|ind:][pesanan:|gen:](mana-mana|sys|asas|tiada)

Perkataan pertama pilihan mengehadkan spesifikasi kepada struct yang digunakan secara langsung
(pengarah:) atau digunakan secara tidak langsung (ind:). Jenis struct digunakan secara langsung apabila ia adalah jenis
daripada pembolehubah, ahli. Penggunaan tidak langsung timbul melalui penunjuk kepada struct. Itu dia,
apabila penggunaan struct yang tidak lengkap adalah sah, penggunaannya adalah tidak langsung. Contohnya ialah struktur
1 langsung; struktur 2 * tidak langsung;.

Perkataan kedua pilihan mengehadkan spesifikasi kepada struct biasa (pesanan:) Atau
struktur generik (gen:). Struktur generik agak rumit untuk dijelaskan. Untuk C++,
ini adalah pengkhususan kelas templat yang tidak eksplisit, atau kelas bukan templat
dalam perkara di atas. Bahasa pengaturcaraan lain mempunyai generik, tetapi
-femit-struct-debug-detailed belum melaksanakannya.

Perkataan ketiga menentukan fail sumber untuk struktur tersebut yang mana pengkompil
harus mengeluarkan maklumat nyahpepijat. Nilai-nilai tiada dan mana-mana mempunyai makna biasa. The
nilai asas bermakna bahawa asas nama fail di mana pengisytiharan jenis
muncul mesti sepadan dengan asas nama fail kompilasi utama. Dalam latihan,
ini bermakna apabila menyusun foo.c, maklumat nyahpepijat dijana untuk jenis
diisytiharkan dalam fail itu dan foo.h, tetapi bukan fail pengepala lain. Nilai sys cara
jenis yang memuaskan asas atau diisytiharkan dalam pengepala sistem atau pengkompil.

Anda mungkin perlu mencuba untuk menentukan tetapan terbaik untuk aplikasi anda.

Lalai adalah -femit-struct-debug-detailed=semua.

Pilihan ini hanya berfungsi dengan DWARF 2.

-fno-merge-debug-strings
Arahkan pemaut untuk tidak menggabungkan rentetan dalam maklumat penyahpepijatan yang ada
sama dalam fail objek yang berbeza. Penggabungan tidak disokong oleh semua pemasang atau
penghubung. Penggabungan mengurangkan saiz maklumat nyahpepijat dalam fail output di
kos untuk meningkatkan masa pemprosesan pautan. Penggabungan didayakan secara lalai.

-fdebug-prefix-map=lama=baru
Apabila menyusun fail dalam direktori lama, rekodkan maklumat penyahpepijatan yang menerangkannya sebagai
in baru sebaliknya.

-fno-dwarf2-cfi-asm
Pancarkan maklumat santai DWARF 2 sebagai pengkompil menghasilkan bahagian ".eh_frame" dan bukannya menggunakan
Arahan ".cfi_*" GAS.

-p Hasilkan kod tambahan untuk menulis maklumat profil yang sesuai untuk program analisis
Prof. Anda mesti menggunakan pilihan ini apabila menyusun fail sumber yang anda mahukan datanya,
dan anda juga mesti menggunakannya semasa memaut.

-pg Hasilkan kod tambahan untuk menulis maklumat profil yang sesuai untuk program analisis
gprof. Anda mesti menggunakan pilihan ini apabila menyusun fail sumber yang anda mahukan datanya,
dan anda juga mesti menggunakannya semasa memaut.

-Q Membuat pengkompil mencetak setiap nama fungsi semasa ia disusun, dan mencetak beberapa
statistik tentang setiap pas apabila ia tamat.

-ftime-laporan
Membuat pengkompil mencetak beberapa statistik tentang masa yang digunakan oleh setiap pas apabila ia
selesai.

-fmem-laporan
Membuat pengkompil mencetak beberapa statistik tentang peruntukan memori kekal apabila ia
selesai.

-fmem-report-wpa
Membuat pengkompil mencetak beberapa statistik tentang peruntukan memori kekal untuk WPA
fasa sahaja.

-fpre-ipa-mem-report
-fpost-ipa-mem-report
Membuat pengkompil mencetak beberapa statistik tentang peruntukan memori kekal sebelum atau
selepas pengoptimuman antara prosedur.

-fprofile-laporan
Membuat pengkompil mencetak beberapa statistik tentang ketekalan profil (anggaran).
dan kesan hantaran individu.

-fstack-penggunaan
Menjadikan maklumat penggunaan tindanan output pengkompil untuk program, pada setiap fungsi
asas. Nama fail untuk pembuangan dibuat dengan melampirkan .su kepada nama aux. nama aux is
dijana daripada nama fail output, jika dinyatakan secara eksplisit dan ia bukan fail
boleh laku, jika tidak, ia adalah nama asas fail sumber. Entri terdiri daripada
tiga bidang:

* Nama fungsi.

* Sebilangan bait.

* Satu atau lebih kelayakan: "statik", "dinamik", "terbatas".

Kelayakan "statik" bermaksud bahawa fungsi memanipulasi tindanan secara statik: a
bilangan bait tetap diperuntukkan untuk bingkai pada entri fungsi dan dikeluarkan pada
keluar fungsi; tiada pelarasan tindanan dibuat dalam fungsi tersebut. Yang kedua
medan ialah bilangan bait tetap ini.

Kelayakan "dinamik" bermaksud bahawa fungsi memanipulasi tindanan secara dinamik: dalam
tambahan kepada peruntukan statik yang diterangkan di atas, pelarasan tindanan dibuat dalam
badan fungsi, contohnya untuk menolak/menimbulkan hujah di sekitar panggilan fungsi. Sekiranya
kelayakan "terhad" juga ada, jumlah pelarasan ini dihadkan pada
masa kompilasi dan medan kedua ialah sempadan atas daripada jumlah keseluruhan tindanan yang digunakan
oleh fungsi. Jika ia tidak hadir, jumlah pelarasan ini tidak terhad
pada masa penyusunan dan medan kedua hanya mewakili bahagian yang dibatasi.

-fprofile-arka
Tambah kod supaya program mengalir arcs adalah diperalatkan. Semasa melaksanakan program
merekodkan berapa kali setiap cawangan dan panggilan dilaksanakan dan berapa kali ia diambil
atau pulangan. Apabila program yang disusun keluar, ia menyimpan data ini ke fail yang dipanggil
auxname.gcda untuk setiap fail sumber. Data boleh digunakan untuk profil diarahkan
pengoptimuman (-fbranch-kebarangkalian), atau untuk analisis liputan ujian
(-perlindungan-ftest). Setiap fail objek nama aux dijana daripada nama
fail output, jika dinyatakan secara eksplisit dan ia bukan boleh laku terakhir, jika tidak, ia
ialah nama asas fail sumber. Dalam kedua-dua kes, sebarang akhiran dialih keluar (cth
foo.gcda untuk fail input dir/foo.c, Atau dir/foo.gcda untuk fail output yang dinyatakan sebagai -o
dir/foo.o).

--liputan
Pilihan ini digunakan untuk menyusun dan memautkan kod yang diperalatkan untuk analisis liputan. The
pilihan adalah sinonim untuk -fprofile-arka -perlindungan-ftest (semasa menyusun) dan -lgcov
(semasa memaut). Lihat dokumentasi untuk pilihan tersebut untuk butiran lanjut.

* Susun fail sumber dengan -fprofile-arka ditambah pengoptimuman dan penjanaan kod
pilihan. Untuk analisis liputan ujian, gunakan tambahan -perlindungan-ftest pilihan.
Anda tidak perlu memprofilkan setiap fail sumber dalam program.

* Pautkan fail objek anda dengan -lgcov or -fprofile-arka (yang terakhir membayangkan
bekas).

* Jalankan program pada beban kerja yang mewakili untuk menjana profil arka
maklumat. Ini boleh diulang beberapa kali. Anda boleh berjalan serentak
contoh program anda, dan dengan syarat sistem fail menyokong penguncian, fail
fail data akan dikemas kini dengan betul. Juga panggilan "garpu" dikesan dan
dikendalikan dengan betul (pengiraan dua kali tidak akan berlaku).

* Untuk pengoptimuman terarah profil, susun semula fail sumber dengan fail yang sama
pilihan pengoptimuman dan penjanaan kod ditambah -fbranch-kebarangkalian.

* Untuk analisis liputan ujian, gunakan gcov untuk menghasilkan maklumat yang boleh dibaca manusia daripada
yang .gcno dan .gcda fail. Merujuk kepada gcov dokumentasi untuk selanjutnya
maklumat.

Dengan -fprofile-arka, untuk setiap fungsi program anda GCC mencipta aliran program
graf, kemudian cari pokok rentang untuk graf itu. Hanya arka yang tiada pada
spanning tree perlu diperalatkan: pengkompil menambah kod untuk mengira bilangan
kali arka ini dilaksanakan. Apabila arka adalah satu-satunya jalan keluar atau satu-satunya pintu masuk
blok, kod instrumentasi boleh ditambah pada blok; jika tidak, asas baru
blok mesti dibuat untuk memegang kod instrumentasi.

-perlindungan-ftest
Menghasilkan fail nota yang gcov utiliti liputan kod boleh digunakan untuk menunjukkan program
liputan. Setiap fail nota fail sumber dipanggil auxname.gcno. Merujuk kepada
-fprofile-arka pilihan di atas untuk penerangan tentang nama aux dan arahan bagaimana untuk
menjana data liputan ujian. Data liputan sepadan dengan fail sumber dengan lebih dekat jika
anda tidak mengoptimumkan.

-fdbg-cnt-senarai
Cetak nama dan bahagian atas kaunter untuk semua kaunter nyahpepijat.

-fdbg-cnt=senarai nilai balas
Tetapkan kaunter nyahpepijat dalaman sempadan atas. senarai nilai balas adalah dipisahkan koma
senarai nama:nilai pasangan yang menetapkan sempadan atas setiap pembilang nyahpepijat nama kepada
nilai. Semua kaunter nyahpepijat mempunyai sempadan atas awal "UINT_MAX"; oleh itu "dbg_cnt"
kembali benar sentiasa melainkan sempadan atas ditetapkan oleh pilihan ini. Contohnya, dengan
-fdbg-cnt=dce:10,panggilan_ekor:0, "dbg_cnt(dce)" mengembalikan benar hanya untuk 10 yang pertama
seruan.

-boleh dilawan-jenis-lulus
-fdisable-jenis-lulus=senarai julat
Ini ialah satu set pilihan yang digunakan untuk melumpuhkan/mendayakan pengoptimuman secara eksplisit
pas. Pilihan ini bertujuan untuk digunakan untuk menyahpepijat GCC. Pengguna pengkompil seharusnya
gunakan pilihan biasa untuk mendayakan/lumpuhkan pas sebaliknya.

-fdisable-ipa-lulus
Lumpuhkan pas IPA lulus. lulus ialah nama pas. Jika hantaran yang sama adalah statik
dipanggil dalam pengkompil beberapa kali, nama pas hendaklah ditambah dengan a
nombor berurutan bermula dari 1.

-fdisable-rtl-lulus
-fdisable-rtl-lulus=senarai julat
Lumpuhkan pas RTL lulus. lulus ialah nama pas. Jika hantaran yang sama adalah statik
dipanggil dalam pengkompil beberapa kali, nama pas hendaklah ditambah dengan a
nombor berurutan bermula dari 1. senarai julat ialah senarai yang dipisahkan koma bagi
julat fungsi atau nama pemasang. Setiap julat ialah pasangan nombor yang dipisahkan oleh a
kolon. Julat adalah inklusif di kedua-dua hujung. Jika julat itu remeh, bilangannya
pasangan boleh dipermudahkan sebagai satu nombor. Jika nod graf panggilan fungsi itu
uid berada dalam salah satu julat yang ditentukan, iaitu lulus dilumpuhkan untuk itu
fungsi. The uid ditunjukkan dalam pengepala fungsi fail dump, dan pas
nama boleh dibuang dengan menggunakan pilihan -fdump-pas.

-fdisable-tree-lulus
-fdisable-tree-lulus=senarai julat
Lumpuhkan pas pokok lulus. Lihat -fdisable-rtl untuk penerangan pilihan
hujah-hujah.

-boleh dilawan-ipa-lulus
Dayakan pas IPA lulus. lulus ialah nama pas. Jika hantaran yang sama adalah statik
dipanggil dalam pengkompil beberapa kali, nama pas hendaklah ditambah dengan a
nombor berurutan bermula dari 1.

-boleh dilawan-rtl-lulus
-boleh dilawan-rtl-lulus=senarai julat
Dayakan pas RTL lulus. Lihat -fdisable-rtl untuk penerangan hujah pilihan dan
contoh.

-pokok-dilarang-lulus
-pokok-dilarang-lulus=senarai julat
Dayakan pas pokok lulus. Lihat -fdisable-rtl untuk penerangan hujah pilihan.

Berikut ialah beberapa contoh yang menunjukkan penggunaan pilihan ini.

# lumpuhkan ccp1 untuk semua fungsi
-fdisable-tree-ccp1
# lumpuhkan unroll lengkap untuk fungsi yang uid nod cgraph ialah 1
-fenable-tree-cunroll=1
# lumpuhkan gcse2 untuk fungsi pada julat berikut [1,1],
# [300,400] dan [400,1000]
# lumpuhkan gcse2 untuk fungsi foo dan foo2
-fdisable-rtl-gcse2=foo,foo2
# lumpuhkan sebaris awal
-fdisable-tree-einline
# lumpuhkan sebaris ipa
-fdisable-ipa-inline
# dayakan pembukaan penuh pokok
-fenable-tree-unroll

-dsurat
-fdump-rtl-lulus
-fdump-rtl-lulus=nama fail
Katakan untuk membuat pembuangan debugging semasa penyusunan pada masa yang ditentukan oleh surat. ini
digunakan untuk menyahpepijat pas berasaskan RTL pengkompil. Nama fail untuk kebanyakan
daripada tempat pembuangan itu dibuat dengan menambahkan nombor pas dan perkataan pada nama sampah, Dan
fail dicipta dalam direktori fail output. Dalam kes =nama fail pilihan,
dump adalah output pada fail yang diberikan dan bukannya fail dump bernombor pas. Catatan
bahawa nombor pas dikira secara statik apabila pas didaftarkan ke dalam pas
pengurus. Oleh itu penomboran tidak berkaitan dengan susunan dinamik pelaksanaan
pas. Khususnya, pas yang dipasang oleh pemalam boleh mempunyai nombor lebih 200 genap
jika ia dilaksanakan agak awal. nama sampah dihasilkan daripada nama fail output,
jika dinyatakan secara eksplisit dan ia bukan boleh laku, sebaliknya ia adalah nama asas bagi
fail sumber. Suis ini mungkin mempunyai kesan yang berbeza apabila -E digunakan untuk
prapemprosesan.

Lambakan nyahpepijat boleh didayakan dengan a -fdump-rtl suis atau beberapa -d pilihan surat. Di sini
adalah huruf yang mungkin untuk digunakan dalam lulus dan surat, dan maknanya:

-fdump-rtl-alignments
Lambakan selepas penjajaran cawangan telah dikira.

-fdump-rtl-asmcons
Buang selepas membetulkan kenyataan rtl yang mempunyai kekangan masuk/keluar yang tidak berpuas hati.

-fdump-rtl-auto_inc_dec
Buang selepas penemuan auto-inc-dec. Pas ini hanya dijalankan pada seni bina yang
mempunyai arahan auto inc atau auto dec.

-fdump-rtl-halangan
Buang selepas membersihkan arahan penghalang.

-fdump-rtl-bbpart
Buang selepas membahagikan blok asas panas dan sejuk.

-fdump-rtl-bbro
Buang selepas susunan semula blok.

-fdump-rtl-btl1
-fdump-rtl-btl2
-fdump-rtl-btl1 dan -fdump-rtl-btl2 membolehkan lambakan selepas sasaran dua cawangan
pas pengoptimuman beban.

-fdump-rtl-bypass
Buang selepas memintas lompat dan mengawal pengoptimuman aliran.

-fdump-rtl-combine
Buang selepas kombinasi arahan RTL lulus.

-fdump-rtl-compgots
Buang selepas menduplikasi gotos yang dikira.

-fdump-rtl-ce1
-fdump-rtl-ce2
-fdump-rtl-ce3
-fdump-rtl-ce1, -fdump-rtl-ce2, dan -fdump-rtl-ce3 membolehkan lambakan selepas ketiga-tiganya
jika penukaran berlalu.

-fdump-rtl-cprop_hardreg
Buang selepas penyebaran salinan daftar keras.

-fdump-rtl-csa
Buang selepas menggabungkan pelarasan tindanan.

-fdump-rtl-cse1
-fdump-rtl-cse2
-fdump-rtl-cse1 dan -fdump-rtl-cse2 membolehkan lambakan selepas dua biasa
penyingkiran subungkapan berlalu.

-fdump-rtl-dce
Buang selepas penyingkiran kod mati kendiri berlalu.

-fdump-rtl-dbr
Buang selepas penjadualan cawangan tertangguh.

-fdump-rtl-dce1
-fdump-rtl-dce2
-fdump-rtl-dce1 dan -fdump-rtl-dce2 membolehkan lambakan selepas dua stor mati
lulus penyingkiran.

-fdump-rtl-eh
Buang selepas memuktamadkan kod pengendalian EH.

-fdump-rtl-eh_ranges
Buang selepas penukaran kawasan julat pengendalian EH.

-fdump-rtl-expand
Buang selepas penjanaan RTL.

-fdump-rtl-fwprop1
-fdump-rtl-fwprop2
-fdump-rtl-fwprop1 dan -fdump-rtl-fwprop2 membolehkan lambakan selepas dua ke hadapan
perambatan berlalu.

-fdump-rtl-gcse1
-fdump-rtl-gcse2
-fdump-rtl-gcse1 dan -fdump-rtl-gcse2 membolehkan lambakan selepas biasa global
penghapusan subungkapan.

-fdump-rtl-init-regs
Buang selepas permulaan daftar.

-fdump-rtl-initvals
Buang selepas pengiraan set nilai awal.

-fdump-rtl-ke_cfglayout
Buang selepas menukar kepada mod cfglayout.

-fdump-rtl-ira
Buang selepas peruntukan daftar berulang.

-fdump-rtl-jump
Buang selepas pengoptimuman lompatan kedua.

-fdump-rtl-loop2
-fdump-rtl-loop2 membolehkan lambakan selepas pengoptimuman gelung rtl berlalu.

-fdump-rtl-mach
Buang selepas melakukan pas penyusunan semula bergantung kepada mesin, jika lulus itu
wujud.

-fdump-rtl-mode_sw
Buang selepas mengalih keluar suis mod berlebihan.

-fdump-rtl-rnreg
Buang selepas pendaftaran penomboran semula.

-fdump-rtl-outof_cfglayout
Buang selepas menukar daripada mod cfglayout.

-fdump-rtl-peephole2
Buang selepas lubang intip.

-fdump-rtl-postreload
Buang selepas pengoptimuman selepas muat semula.

-fdump-rtl-pro_and_epilogue
Buang selepas menjana prolog dan epilog fungsi.

-fdump-rtl-sched1
-fdump-rtl-sched2
-fdump-rtl-sched1 dan -fdump-rtl-sched2 membolehkan lambakan selepas blok asas
pas penjadualan.

-fdump-rtl-ree
Buang selepas tanda/sifar penyingkiran sambungan.

-fdump-rtl-seqabstr
Buang selepas penemuan jujukan biasa.

-fdump-rtl-shorten
Buang selepas memendekkan dahan.

-fdump-rtl-adik
Buang selepas pengoptimuman panggilan adik beradik.

-fdump-rtl-split1
-fdump-rtl-split2
-fdump-rtl-split3
-fdump-rtl-split4
-fdump-rtl-split5
Pilihan ini membolehkan lambakan selepas lima pusingan pemisahan arahan.

-fdump-rtl-sms
Buang selepas penjadualan modulo. Pas ini hanya dijalankan pada beberapa seni bina.

-fdump-rtl-stack
Buang selepas penukaran daripada "fail daftar rata" GCC didaftarkan ke x87
daftar seperti tindanan. Pas ini hanya dijalankan pada varian x86.

-fdump-rtl-subreg1
-fdump-rtl-subreg2
-fdump-rtl-subreg1 dan -fdump-rtl-subreg2 membolehkan lambakan selepas dua subreg
pas pengembangan.

-fdump-rtl-nyahkongsi
Buang selepas semua rtl telah dinyahkongsi.

-fdump-rtl-vartrack
Buang selepas penjejakan berubah-ubah.

-fdump-rtl-vregs
Buang selepas menukar daftar maya kepada daftar keras.

-fdump-rtl-web
Buang selepas pemisahan julat langsung.

-fdump-rtl-regclass
-fdump-rtl-subregs_of_mode_init
-fdump-rtl-subregs_of_mode_finish
-fdump-rtl-dfinit
-fdump-rtl-dfinish
Lambakan ini ditakrifkan tetapi sentiasa menghasilkan fail kosong.

-dalam
-fdump-rtl-semua
Hasilkan semua pembuangan yang disenaraikan di atas.

-dA Anotasi keluaran pemasang dengan pelbagai maklumat penyahpepijatan.

-dD Buang semua definisi makro, pada akhir prapemprosesan, sebagai tambahan kepada normal
output.

-dH Menghasilkan longgokan teras apabila ralat berlaku.

-dp Anotasi output pemasang dengan ulasan yang menunjukkan corak dan
alternatif digunakan. Panjang setiap arahan juga dicetak.

-dP Buang RTL dalam output pemasang sebagai ulasan sebelum setiap arahan. Juga
hidupkan -dp penjelasan.

-dx Hanya jana RTL untuk fungsi dan bukannya menyusunnya. Biasanya digunakan dengan
-fdump-rtl-expand.

-fdump-noaddr
Apabila melakukan pembuangan debugging, sekat output alamat. Ini menjadikannya lebih sesuai untuk
gunakan perbezaan pada lambakan penyahpepijatan untuk invokasi pengkompil dengan perduaan pengkompil yang berbeza
dan/atau lokasi mula teks / bss / data / timbunan / tindanan / dso yang berbeza.

-freport-bug
Kumpul dan buang maklumat nyahpepijat ke dalam fail sementara jika ICE dalam pengkompil C/C++
berlaku.

-fdump-tidak bernombor
Apabila melakukan pembuangan debugging, sekat nombor arahan dan output alamat. ini
menjadikannya lebih sesuai untuk menggunakan diff pada pembuangan debugging untuk penyeruan pengkompil dengan
pilihan yang berbeza, khususnya dengan dan tanpa -g.

-fdump-unnumbered-pautan
Apabila melakukan pembuangan debugging (lihat -d pilihan di atas), menekan nombor arahan untuk
pautan ke arahan sebelumnya dan seterusnya dalam urutan.

-fdump-terjemahan-unit (C++ sahaja)
-fdump-translation-unit-pilihan (C++ sahaja)
Buang perwakilan struktur pokok untuk keseluruhan unit terjemahan ke fail.
Nama fail dibuat dengan melampirkan .tu kepada nama fail sumber, dan fail itu ialah
dicipta dalam direktori yang sama dengan fail output. Sekiranya -pilihan borang digunakan,
pilihan mengawal butiran tempat pembuangan seperti yang diterangkan untuk -fdump-pokok pilihan.

-fdump-class-hierarki (C++ sahaja)
-fdump-class-hierarki-pilihan (C++ sahaja)
Buang perwakilan hierarki setiap kelas dan susun atur jadual fungsi maya ke a
fail. Nama fail dibuat dengan melampirkan .kelas kepada nama fail sumber, dan fail
dicipta dalam direktori yang sama dengan fail output. Sekiranya -pilihan borang digunakan,
pilihan mengawal butiran tempat pembuangan seperti yang diterangkan untuk -fdump-pokok pilihan.

-fdump-ipa-bertukar
Mengawal lambakan pada pelbagai peringkat pokok bahasa analisis antara prosedur kepada a
fail. Nama fail dijana dengan menambahkan akhiran khusus suis pada sumber
nama fail, dan fail dibuat dalam direktori yang sama dengan fail output. The
pembuangan sampah berikut mungkin:

semua Mendayakan semua pembuangan analisis antara prosedur.

cgraph
Membuang maklumat tentang pengoptimuman graf panggilan, penyingkiran fungsi yang tidak digunakan dan
menyelaraskan keputusan.

sebaris
Buang selepas fungsi inlining.

-fdump-pas
Buang senarai pas pengoptimuman yang dihidupkan dan dimatikan oleh arus
pilihan baris arahan.

-fdump-statistik-pilihan
Dayakan dan kawal lambakan statistik pas dalam fail berasingan. Nama fail ialah
dihasilkan dengan menambahkan akhiran yang berakhir dengan .statistik kepada nama fail sumber, dan
fail dicipta dalam direktori yang sama dengan fail output. Sekiranya -pilihan borang adalah
terpakai, -statistik menyebabkan pembilang dijumlahkan ke atas keseluruhan unit kompilasi sambil
-perincian membuang setiap peristiwa apabila pas menjananya. Lalai tanpa pilihan ialah
untuk menjumlahkan pembilang untuk setiap fungsi yang disusun.

-fdump-pokok-bertukar
-fdump-pokok-bertukar-pilihan
-fdump-pokok-bertukar-pilihan=nama fail
Kawal lambakan pada pelbagai peringkat pemprosesan pokok bahasa perantaraan ke
sebuah fail. Nama fail dijana dengan menambahkan akhiran khusus suis pada
nama fail sumber, dan fail dibuat dalam direktori yang sama dengan fail output. Dalam
kes dari =nama fail pilihan, dump adalah output pada fail yang diberikan dan bukannya auto
bernama dump files. Sekiranya -pilihan borang digunakan, pilihan adalah senarai - dipisahkan
pilihan yang mengawal butiran tempat pembuangan. Tidak semua pilihan boleh digunakan untuk semua
tempat pembuangan; yang tidak bermakna tidak diendahkan. Pilihan berikut tersedia

alamat
Cetak alamat setiap nod. Biasanya ini tidak bermakna kerana ia berubah
mengikut persekitaran dan fail sumber. Kegunaan utamanya adalah untuk mengikat a
buang fail dengan persekitaran nyahpepijat.

asmname
Jika "DECL_ASSEMBLER_NAME" telah ditetapkan untuk decl tertentu, gunakannya di tempat pembuangan
bukannya "DECL_NAME". Penggunaan utamanya ialah kemudahan penggunaan bekerja mundur dari
nama rosak dalam fail perhimpunan.

nipis
Apabila lambakan perwakilan pertengahan bahagian hadapan, halang lambakan ahli
skop atau badan fungsi semata-mata kerana skop itu telah dicapai. Sahaja
buang item tersebut apabila ia boleh dicapai secara langsung melalui laluan lain.

Apabila membuang pokok bercetak cantik, pilihan ini menghalang lambakan mayat
struktur kawalan.

Apabila membuang RTL, cetak RTL dalam bentuk nipis (kondensasi) dan bukannya lalai
Perwakilan seperti LISP.

mentah Cetak perwakilan mentah pokok itu. Secara lalai, pokok dicetak cantik ke dalam
perwakilan seperti C.

butir-butir
Dayakan pembuangan yang lebih terperinci (tidak dihormati oleh setiap pilihan pembuangan). Sertakan juga
maklumat daripada pas pengoptimuman.

stats
Dayakan lambakan pelbagai statistik tentang pas (tidak dihormati oleh setiap pembuangan
pilihan).

blok
Dayakan menunjukkan sempadan blok asas (dilumpuhkan dalam pembuangan mentah).

graf
Untuk setiap fail dump lain yang ditunjukkan (-fdump-rtl-lulus), buang a
perwakilan graf aliran kawalan yang sesuai untuk dilihat dengan GraphViz untuk
fail.passid.pass.dot. Setiap fungsi dalam fail dicetak cantik sebagai subgraf,
supaya GraphViz boleh memaparkan kesemuanya dalam satu plot.

Pilihan ini pada masa ini hanya berfungsi untuk pembuangan RTL dan RTL sentiasa dibuang
bentuk langsing.

vops
Dayakan menunjukkan operan maya untuk setiap pernyataan.

lineno
Dayakan menunjukkan nombor baris untuk pernyataan.

uid Dayakan menunjukkan ID unik ("DECL_UID") untuk setiap pembolehubah.

kata kerja
Dayakan menunjukkan tempat pembuangan pokok untuk setiap pernyataan.

eh Dayakan menunjukkan nombor rantau EH yang memegang setiap pernyataan.

scev
Dayakan memaparkan butiran analisis evolusi skalar.

dioptimumkan
Dayakan memaparkan maklumat pengoptimuman (hanya tersedia dalam pas tertentu).

terlepas
Dayakan memaparkan maklumat pengoptimuman yang terlepas (hanya tersedia dalam pas tertentu).

ambil perhatian
Dayakan maklumat pengoptimuman terperinci lain (hanya tersedia dalam pas tertentu).

=nama fail
Daripada fail dump bernama auto, keluarkan ke dalam nama fail yang diberikan. Fail
nama stdout dan stderr dirawat secara khusus dan dianggap sudah terbuka
aliran standard. Sebagai contoh,

gcc -O2 -ftree-vectorize -fdump-tree-vect-blocks=foo.dump
-fdump-tree-pre=stderr file.c

output vectorizer buang ke foo.dump, manakala pembuangan PRE dikeluarkan pada stderr.
Jika dua nama fail dump yang bercanggah diberikan untuk pas yang sama, maka yang kedua
pilihan mengatasi yang lebih awal.

semua Hidupkan semua pilihan, kecuali mentah, nipis, kata kerja dan lineno.

optall
Hidupkan semua pilihan pengoptimuman, iaitu, dioptimumkan, terlepas, dan ambil perhatian.

Tempat pembuangan pokok berikut mungkin:

asal
Buang sebelum sebarang pengoptimuman berasaskan pokok, ke fail.asal.

dioptimumkan
Buang selepas semua pengoptimuman berasaskan pokok, ke fail.dioptimumkan.

gimple
Buang setiap fungsi sebelum dan selepas pas gimplification ke fail. Fail
nama dibuat dengan melampirkan .gimple kepada nama fail sumber.

cfg Buang graf aliran kawalan setiap fungsi ke fail. Nama fail dibuat oleh
menambah .cfg kepada nama fail sumber.

ch Buang setiap fungsi selepas menyalin pengepala gelung. Nama fail dibuat dengan melampirkan
.ch kepada nama fail sumber.

Burnett Buang maklumat berkaitan SSA ke fail. Nama fail dibuat dengan melampirkan .ssa
kepada nama fail sumber.

alias
Buang maklumat aliasing untuk setiap fungsi. Nama fail dibuat dengan melampirkan
.alias kepada nama fail sumber.

Ccp Buang setiap fungsi selepas CCP. Nama fail dibuat dengan melampirkan .ccp kepada
nama fail sumber.

storeccp
Buang setiap fungsi selepas STORE-CCP. Nama fail dibuat dengan melampirkan .storeccp
kepada nama fail sumber.

pra Buang pokok selepas penghapusan redundansi separa. Nama fail dibuat oleh
menambah .pra kepada nama fail sumber.

fre Buang pokok selepas penghapusan redundansi penuh. Nama fail dibuat dengan melampirkan
.free kepada nama fail sumber.

copyprop
Buang pokok selepas pembiakan salinan. Nama fail dibuat dengan melampirkan .copyprop
kepada nama fail sumber.

store_copyprop
Buang pokok selepas pembiakan salinan kedai. Nama fail dibuat dengan melampirkan
.store_copyprop kepada nama fail sumber.

dce Buang setiap fungsi selepas penyingkiran kod mati. Nama fail dibuat oleh
menambah .dce kepada nama fail sumber.

Tuan / Puan Buang setiap fungsi selepas melakukan penggantian skalar agregat. Fail
nama dibuat dengan melampirkan .sra kepada nama fail sumber.

sink
Buang setiap fungsi selepas melakukan penyerap kod. Nama fail dibuat oleh
menambah .sinki kepada nama fail sumber.

hadiah Buang setiap fungsi selepas menggunakan pengoptimuman pokok dominator. Nama fail ialah
dibuat dengan melampirkan .dom kepada nama fail sumber.

dse Buang setiap fungsi selepas menggunakan penghapusan stor mati. Nama fail dibuat
dengan melampirkan .dse kepada nama fail sumber.

phiopt
Buang setiap fungsi selepas mengoptimumkan nod PHI ke dalam kod garis lurus. Fail
nama dibuat dengan melampirkan .phiopt kepada nama fail sumber.

forwprop
Buang setiap fungsi selepas menyebarkan ke hadapan pembolehubah penggunaan tunggal. Nama fail
dibuat dengan melampirkan .forwprop kepada nama fail sumber.

copyrename
Buang setiap fungsi selepas menggunakan pengoptimuman nama semula salinan. Nama fail ialah
dibuat dengan melampirkan .copyrename kepada nama fail sumber.

nrv Buang setiap fungsi selepas menggunakan pengoptimuman nilai pulangan yang dinamakan pada generik
pokok. Nama fail dibuat dengan melampirkan .nrv kepada nama fail sumber.

vect
Buang setiap fungsi selepas menggunakan vektorisasi gelung. Nama fail dibuat
dengan melampirkan .vect kepada nama fail sumber.

slp Buang setiap fungsi selepas menggunakan vektorisasi blok asas. Nama fail ialah
dibuat dengan melampirkan .slp kepada nama fail sumber.

vrp Buang setiap fungsi selepas Penyebaran Julat Nilai (VRP). Nama fail dibuat oleh
menambah .vrp kepada nama fail sumber.

semua Dayakan semua pembuangan pokok yang tersedia dengan bendera yang disediakan dalam pilihan ini.

-fopt-info
-fopt-info-pilihan
-fopt-info-pilihan=nama fail
Mengawal pembuangan pengoptimuman daripada pelbagai pas pengoptimuman. Sekiranya -pilihan borang adalah
terpakai, pilihan adalah senarai - kata kunci pilihan dipisahkan untuk memilih butiran dump dan
pengoptimuman.

. pilihan boleh dibahagikan kepada dua kumpulan: pilihan yang menerangkan verbositi
dump, dan pilihan yang menerangkan pengoptimuman yang harus disertakan. Pilihan daripada
kedua-dua kumpulan boleh bercampur dengan bebas kerana ia tidak bertindih. Walau bagaimanapun, dalam kes
sebarang konflik, pilihan kemudian mengatasi pilihan awal pada baris arahan.

Pilihan berikut mengawal verbositi dump:

dioptimumkan
Cetak maklumat apabila pengoptimuman berjaya digunakan. Terpulang kepada lulus
untuk menentukan maklumat yang relevan. Sebagai contoh, vectorizer lulus cetakan
lokasi sumber gelung yang berjaya divektorkan.

terlepas
Cetak maklumat tentang pengoptimuman yang terlepas. Individu pas mengawal yang
maklumat untuk dimasukkan ke dalam output.

ambil perhatian
Cetak maklumat bertele-tele tentang pengoptimuman, seperti transformasi tertentu,
mesej yang lebih terperinci tentang keputusan dll.

semua Cetak maklumat pengoptimuman terperinci. Ini termasuk dioptimumkan, terlepas, dan
ambil perhatian.

Satu atau lebih daripada kata kunci pilihan berikut boleh digunakan untuk menerangkan sekumpulan
pengoptimuman:

ipa Dayakan pembuangan daripada semua pengoptimuman antara prosedur.

gelung
Dayakan pembuangan daripada semua pengoptimuman gelung.

sebaris
Dayakan pembuangan daripada semua pengoptimuman inlining.

sesuatu perkara Dayakan pembuangan daripada semua pengoptimuman vektorisasi.

optall
Dayakan pembuangan daripada semua pengoptimuman. Ini ialah superset kumpulan pengoptimuman
disenaraikan di atas.

If pilihan ditinggalkan, ia lalai kepada dioptimumkan-optal, yang bermaksud membuang semua maklumat
tentang pengoptimuman yang berjaya daripada semua pas.

Jika nama fail disediakan, maka pembuangan daripada semua pengoptimuman yang berkenaan adalah
bercantum ke dalam nama fail. Jika tidak, dump akan dikeluarkan stderr. Walaupun
pelbagai -fopt-info pilihan diterima, hanya satu daripadanya boleh memasukkan a nama fail. Jika
nama fail lain disediakan kemudian semua kecuali pilihan pertama itu diabaikan.

Perhatikan bahawa output nama fail ditimpa sekiranya terdapat beberapa unit terjemahan. Jika
output gabungan daripada berbilang unit terjemahan dikehendaki, stderr sepatutnya digunakan
sebaliknya.

Dalam contoh berikut, maklumat pengoptimuman dikeluarkan kepada stderr:

gcc -O3 -fopt-info

Contoh ini:

gcc -O3 -fopt-info-missed=missed.all

mengeluarkan laporan pengoptimuman yang terlepas daripada semua laluan ke terlepas.semua, dan yang ini:

gcc -O2 -ftree-vectorize -fopt-info-vec-missed

mencetak maklumat tentang peluang pengoptimuman yang terlepas daripada pas vektorisasi
on stderr. Perhatikan bahawa -fopt-info-vec-terlepas adalah bersamaan dengan -fopt-info-missed-vec.

Sebagai contoh lain,

gcc -O3 -fopt-info-inline-optimized-missed=inline.txt

mengeluarkan maklumat tentang pengoptimuman yang terlepas serta lokasi yang dioptimumkan daripada semua
inlining melepasi ke dalam inline.txt.

Akhir sekali, pertimbangkan:

gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt

Di sini dua nama fail output vec.miss dan gelung.opt berada dalam konflik kerana hanya satu
fail output dibenarkan. Dalam kes ini, hanya pilihan pertama berkuat kuasa dan
pilihan seterusnya diabaikan. Dengan demikian sahaja vec.miss dihasilkan yang mengandungi tempat pembuangan sampah
daripada vectorizer tentang peluang yang terlepas.

-frandom-seed=nombor
Pilihan ini menyediakan benih yang GCC gunakan sebagai ganti nombor rawak dalam penjanaan
nama simbol tertentu yang mesti berbeza dalam setiap fail yang disusun. Ia juga
digunakan untuk meletakkan setem unik dalam fail data liputan dan fail objek yang menghasilkan
mereka. Anda boleh menggunakan -frandom-benih pilihan untuk menghasilkan objek serupa yang boleh diulang
fail.

. nombor mestilah berbeza untuk setiap fail yang anda susun.

-fsched-verbose=n
Pada sasaran yang menggunakan penjadualan arahan, pilihan ini mengawal jumlah
menyahpepijat output yang dicetak oleh penjadual. Maklumat ini ditulis kepada ralat standard,
melainkan jika -fdump-rtl-sched1 or -fdump-rtl-sched2 ditentukan, dalam hal ini ia adalah output
ke fail penyenaraian dump biasa, .jadual1 or .jadual2 masing-masing. Walau bagaimanapun untuk n
lebih daripada sembilan, output sentiasa dicetak kepada ralat standard.

Bagi n lebih besar daripada sifar, -fsched-verbose mengeluarkan maklumat yang sama seperti
-fdump-rtl-sched1 dan -fdump-rtl-sched2. Untuk n lebih besar daripada satu, ia juga mengeluarkan asas
kebarangkalian blok, maklumat senarai sedia terperinci dan maklumat unit/inn. Untuk n
lebih daripada dua, ia termasuk RTL pada titik batal, aliran kawalan dan maklumat wilayah. Dan
untuk n lebih empat, -fsched-verbose juga termasuk maklumat pergantungan.

-jimat-temps
-save-temps=cwd
Simpan fail perantaraan "sementara" biasa secara kekal; letakkan mereka dalam arus
direktori dan namakannya berdasarkan fail sumber. Justeru, menyusun foo.c dengan -c
-jimat-temps menghasilkan fail foo.i dan foo.s, Serta foo.o. Ini mewujudkan a
diproses terlebih dahulu foo.i fail output walaupun pengkompil kini biasanya menggunakan fail
prapemproses bersepadu.

Apabila digunakan dalam kombinasi dengan -x pilihan baris arahan, -jimat-temps adalah masuk akal
cukup untuk mengelakkan terlalu banyak menulis fail sumber input dengan sambungan yang sama seperti fail
fail perantaraan. Fail perantaraan yang sepadan boleh didapati dengan menamakan semula
fail sumber sebelum digunakan -jimat-temps.

Jika anda menggunakan GCC secara selari, menyusun beberapa fail sumber berbeza yang berkongsi a
nama asas biasa dalam subdirektori yang berbeza atau fail sumber yang sama yang disusun untuk
berbilang destinasi keluaran, kemungkinan penyusun selari yang berbeza akan melakukannya
campur tangan antara satu sama lain, dan tulis ganti fail sementara. Sebagai contoh:

gcc -save-temps -o outdir1/foo.o indir1/foo.c&
gcc -save-temps -o outdir2/foo.o indir2/foo.c&

boleh mengakibatkan foo.i dan foo.o ditulis secara serentak oleh kedua-dua penyusun.

-save-temps=obj
Simpan fail perantaraan "sementara" biasa secara kekal. Sekiranya -o pilihan digunakan,
fail sementara adalah berdasarkan fail objek. Sekiranya -o pilihan tidak digunakan, yang
-save-temps=obj suis berkelakuan seperti -jimat-temps.

Sebagai contoh:

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

mewujudkan foo.i, foo.s, dir/xbar.i, dir/xbar.s, dir2/yfoobar.i, dir2/yfoobar.s, dan
dir2/yfoobar.o.

-masa[=fail]
Laporkan masa CPU yang diambil oleh setiap subproses dalam urutan kompilasi. Untuk C
fail sumber, ini ialah pengkompil yang betul dan pemasang (ditambah dengan pemaut jika pemautan adalah
selesai).

Tanpa spesifikasi fail output, output kelihatan seperti ini:

# cc1 0.12 0.01
# sebagai 0.00 0.01

Nombor pertama pada setiap baris ialah "masa pengguna", iaitu masa yang dihabiskan untuk melaksanakan
program itu sendiri. Nombor kedua ialah "masa sistem", masa yang digunakan untuk melaksanakan operasi
rutin sistem bagi pihak program. Kedua-dua nombor adalah dalam saat.

Dengan spesifikasi fail output, output dilampirkan pada fail bernama,
dan ia kelihatan seperti ini:

0.12 0.01 cc1
0.00 0.01 sebagai

"masa pengguna" dan "masa sistem" dialihkan sebelum nama program, dan
pilihan yang dihantar kepada program dipaparkan, supaya seseorang kemudiannya boleh memberitahu fail itu
sedang disusun, dan dengan pilihan yang mana.

-fvar-tracking
Jalankan pas penjejakan berubah-ubah. Ia mengira tempat pembolehubah disimpan pada setiap kedudukan
dalam kod. Maklumat penyahpepijatan yang lebih baik kemudian dijana (jika maklumat penyahpepijatan
format menyokong maklumat ini).

Ia didayakan secara lalai apabila menyusun dengan pengoptimuman (-Os, -O, -O2, ...),
maklumat penyahpepijatan (-g) dan format maklumat nyahpepijat menyokongnya.

-fvar-tracking-assignments
Anotasi tugasan kepada pembolehubah pengguna pada awal penyusunan dan cuba bawa
anotasi sepanjang kompilasi sehingga ke akhir, dalam percubaan
untuk menambah baik maklumat nyahpepijat sambil mengoptimumkan. Penggunaan -gdwarf-4 disyorkan bersama
dengannya.

Ia boleh didayakan walaupun penjejakan var dilumpuhkan, dalam hal ini anotasi adalah
dicipta dan dikekalkan, tetapi dibuang pada akhirnya. Secara lalai, bendera ini didayakan
Bersama-sama dengan -fvar-tracking, kecuali apabila penjadualan terpilih didayakan.

-fvar-tracking-assignments-togol
Togol -fvar-tracking-assignments, dengan cara yang sama seperti itu -gtoggle toggles -g.

-cetak-nama-fail=perpustakaan
Cetak nama mutlak penuh fail perpustakaan perpustakaan yang akan digunakan apabila
memaut---dan jangan lakukan apa-apa lagi. Dengan pilihan ini, GCC tidak menyusun atau memaut
apa-apa; ia hanya mencetak nama fail.

-cetak-berbilang-direktori
Cetak nama direktori yang sepadan dengan multilib yang dipilih oleh mana-mana suis lain
hadir dalam baris arahan. Direktori ini sepatutnya wujud dalam GCC_EXEC_PREFIX.

-cetak-berbilang-lib
Cetak pemetaan daripada nama direktori multilib kepada suis pengkompil yang membolehkannya.
Nama direktori dipisahkan daripada suis oleh ;, dan setiap suis bermula dengan a
@ bukannya -, tanpa ruang antara berbilang suis. Ini sepatutnya
memudahkan pemprosesan cangkang.

-print-multi-os-direktori
Cetak laluan ke perpustakaan OS untuk multilib yang dipilih, berbanding beberapa lib
subdirektori. Jika perpustakaan OS terdapat dalam lib subdirektori dan tiada multilib
digunakan, ini biasanya hanya ., jika perpustakaan OS terdapat dalam libsuffix adik-beradik
direktori yang dicetak ini cth ../lib64, ../ lib or ../lib32, atau jika perpustakaan OS adalah
hadir di lib/subdir subdirektori yang dicetak contohnya amd64, sparcv9 or ev6.

-print-multiarch
Cetak laluan ke perpustakaan OS untuk multiarch yang dipilih, berbanding beberapa lib
subdirektori.

-print-prog-name=program
suka -cetak-nama-fail, tetapi mencari program seperti cpp.

-print-libgcc-nama-fail
Sama seperti -print-file-name=libgcc.a.

Ini berguna apabila anda menggunakan -nostdlib or -nodefaultlibs tetapi anda mahu memautkannya
libgcc.a. Anda boleh lakukan:

gcc -nostdlib ... `gcc -print-libgcc-file-name`

-print-search-dirs
Cetak nama direktori pemasangan yang dikonfigurasikan dan senarai program dan
direktori perpustakaan gcc carian---dan jangan buat apa-apa lagi.

Ini berguna apabila gcc mencetak mesej ralat pemasangan masalah, tidak boleh exec
cpp0: Tidak seperti fail or direktori. Untuk menyelesaikannya, anda sama ada perlu meletakkan cpp0 dan juga
komponen penyusun lain di mana gcc mengharapkan untuk mencari mereka, atau anda boleh menetapkan
pembolehubah persekitaran GCC_EXEC_PREFIX ke direktori tempat anda memasangnya. jangan
lupakan jejak /.

-cetak-sysroot
Cetak direktori sysroot sasaran yang digunakan semasa penyusunan. Ini adalah
sysroot sasaran ditentukan sama ada pada masa konfigurasi atau menggunakan --sysroot pilihan,
mungkin dengan akhiran tambahan yang bergantung pada pilihan kompilasi. Jika tiada sasaran
sysroot ditentukan, pilihan tidak mencetak apa-apa.

-cetak-sysroot-headers-akhiran
Cetak akhiran yang ditambahkan pada sysroot sasaran apabila mencari pengepala, atau berikan
ralat jika pengkompil tidak dikonfigurasikan dengan akhiran sedemikian---dan jangan lakukan apa-apa
lain.

-mesin sampah
Cetak mesin sasaran pengkompil (contohnya, i686-pc-linux-gnu)---dan jangan buat
apa-apa lagi.

-pembuangan
Cetak versi pengkompil (contohnya, 3.0)---dan jangan lakukan apa-apa lagi.

-dumpspek
Cetak spesifikasi terbina dalam pengkompil---dan jangan lakukan apa-apa lagi. (Ini digunakan apabila
GCC sendiri sedang dibina.)

-fno-eliminate-unsed-debug-types
Biasanya, apabila menghasilkan output DWARF 2, GCC mengelak daripada menghasilkan output simbol nyahpepijat untuk
jenis yang tidak digunakan dalam fail sumber yang sedang disusun. Kadang-kadang ia berguna
agar GCC mengeluarkan maklumat penyahpepijatan untuk semua jenis yang diisytiharkan dalam unit kompilasi,
tidak kira sama ada ia benar-benar digunakan dalam unit kompilasi itu, untuk
contoh jika, dalam penyahpepijat, anda ingin menghantar nilai kepada jenis yang sebenarnya bukan
digunakan dalam program anda (tetapi diisytiharkan). Walau bagaimanapun, lebih kerap, ini mengakibatkan a
sejumlah besar ruang terbuang.

Pilihan yang Mengawal Pengoptimuman
Pilihan ini mengawal pelbagai jenis pengoptimuman.

Tanpa sebarang pilihan pengoptimuman, matlamat pengkompil adalah untuk mengurangkan kos penyusunan
dan untuk membuat penyahpepijatan menghasilkan hasil yang diharapkan. Kenyataan adalah bebas: jika anda
hentikan program dengan titik putus antara penyata, anda kemudian boleh menetapkan nilai baharu kepada
sebarang pembolehubah atau tukar pembilang program kepada mana-mana pernyataan lain dalam fungsi dan dapatkan
betul-betul hasil yang anda jangkakan daripada kod sumber.

Menghidupkan bendera pengoptimuman menjadikan pengkompil cuba meningkatkan prestasi dan/atau
saiz kod dengan mengorbankan masa penyusunan dan mungkin keupayaan untuk menyahpepijat
program.

Pengkompil melakukan pengoptimuman berdasarkan pengetahuan yang dimilikinya tentang program.
Menyusun berbilang fail sekali gus kepada mod fail output tunggal membolehkan pengkompil menggunakan
maklumat yang diperoleh daripada semua fail semasa menyusun setiap satu daripadanya.

Tidak semua pengoptimuman dikawal secara langsung oleh bendera. Hanya pengoptimuman yang mempunyai a
bendera disenaraikan dalam bahagian ini.

Kebanyakan pengoptimuman hanya didayakan jika a -O tahap ditetapkan pada baris arahan. Jika tidak
ia dilumpuhkan, walaupun bendera pengoptimuman individu ditentukan.

Bergantung pada sasaran dan cara GCC dikonfigurasikan, set yang sedikit berbeza
pengoptimuman boleh didayakan pada setiap satu -O tahap daripada yang disenaraikan di sini. Anda boleh menggunakan GCC
dengan -Q --help=pengoptimum untuk mengetahui set pengoptimuman tepat yang didayakan pada
setiap peringkat.

-O
-O1 Optimumkan. Mengoptimumkan kompilasi mengambil masa yang lebih lama, dan lebih banyak memori untuknya
fungsi yang besar.

Dengan -O, pengkompil cuba mengurangkan saiz kod dan masa pelaksanaan, tanpa melakukan
sebarang pengoptimuman yang mengambil banyak masa penyusunan.

-O menghidupkan bendera pengoptimuman berikut:

-fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim
-fcprop-mendaftar -fdce -fdefer-pop -fdelayed-cawangan -fdse -maju-sebarkan
-fguess-cawangan-kebarangkalian -lima-penukaran2 -lima-penukaran
-fungsi-finline-dipanggil-sekali -fipa-pure-const -fipa-profil -fipa-rujukan
-fmerge-pemalar -fmove-gelung-invariants -fshrink-bungkus -fsplit-wide-types
-ftree-bit-ccp -tiga-ccp -fssa-phiopt -ftree-ch -free-copy-prop -ftree-copyrename
-ftree-dce -ftree-dominator-opts -ftree-dse -ftree-forwprop -free -ftree-phiprop
-ftree-sinki -ftree-slsr -ftree-sra -ftree-pta -ftree-ter -funit-at-a-time

-O juga dihidupkan -fomit-frame-pointer pada mesin yang berbuat demikian tidak mengganggu
dengan penyahpepijatan.

-O2 Optimumkan lebih banyak lagi. GCC melaksanakan hampir semua pengoptimuman yang disokong yang tidak
melibatkan pertukaran kelajuan ruang. Berbanding dengan -O, pilihan ini meningkatkan kedua-duanya
masa penyusunan dan prestasi kod yang dihasilkan.

-O2 menghidupkan semua bendera pengoptimuman yang ditentukan oleh -O. Ia juga menghidupkan yang berikut
bendera pengoptimuman: -fthread-lompat -Falign-fungsi -falign-melompat -falign-gelung
-label-falign -fcaller-menjimatkan -fcrossjumping -fcse-ikut-lompat -fcse-skip-blok
-fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-spekulatif
-pengoptimuman yang mahal -fgcse -fgcse-lm -fhoist-bersebelahan-beban
-finline-kecil-fungsi -findirect-inlining -fipa-cp -penjajaran-fipa-cp -fipa-sra
-fipa-icf -fisolate-erroneous-paths-dereference -flra-remat -foptimize-sibling-panggilan
-foptimize-strlen -fpartial-inlining -fpeephole2 -sekatan-freorder
-freorder-blok-dan-sekat -freorder-fungsi -frerun-cse-after-gelung
-fsched-interblock -fsched-spec -fschedule-inns -fschedule-insns2 -fstrict-aliasing
-fstrict-overflow -ftree-built-call-dce -penukaran-ftree-switch -bercantum-ekor-tiga
-ftree-pra -ftree-vrp -fipa-ra

Sila ambil perhatian amaran di bawah -fgcse tentang menyeru -O2 pada program yang menggunakan pengiraan
gotos.

NOTA: Dalam Ubuntu 8.10 dan versi yang lebih baru, -D_FORTIFY_SOURCE=2 ditetapkan secara lalai, dan ialah
diaktifkan apabila -O ditetapkan kepada 2 atau lebih tinggi. Ini membolehkan masa penyusunan tambahan dan
semakan masa larian untuk beberapa fungsi libc. Untuk melumpuhkan, nyatakan sama ada
-U_FORTIFY_SOURCE or -D_FORTIFY_SOURCE=0.

-O3 Optimumkan lagi. -O3 menghidupkan semua pengoptimuman yang ditentukan oleh -O2 dan juga dihidupkan
yang -finline-fungsi, -funswitch-gelung, -fpredictive-commoning, -fgcse-selepas-muat semula,
-free-loop-vectorize, -corak-edar-gelung-ftree, -ftree-slp-vektorkan,
-model-kos-fvect, -ftree-partial-pra dan -fipa-cp-clone pilihan.

-O0 Kurangkan masa penyusunan dan jadikan penyahpepijatan menghasilkan hasil yang diharapkan. Ini adalah
lalai.

-Os Optimumkan untuk saiz. -Os membolehkan semua -O2 pengoptimuman yang biasanya tidak meningkat
saiz kod. Ia juga melakukan pengoptimuman selanjutnya yang direka untuk mengurangkan saiz kod.

-Os melumpuhkan bendera pengoptimuman berikut: -Falign-fungsi -falign-melompat
-falign-gelung -label-falign -sekatan-freorder -freorder-blok-dan-sekat
-fprefetch-loop-arrays

-Ofast
Abaikan pematuhan standard yang ketat. -Ofast membolehkan semua -O3 pengoptimuman. Ia juga
membolehkan pengoptimuman yang tidak sah untuk semua program yang mematuhi standard. Ia
hidupkan -fast-matematik dan khusus Fortran -fno-protect-parents dan -fstack-arrays.

-Og Optimumkan pengalaman penyahpepijatan. -Og membolehkan pengoptimuman yang tidak mengganggu
penyahpepijatan. Ia sepatutnya tahap pengoptimuman pilihan untuk suntingan standard
kitaran compile-debug, menawarkan tahap pengoptimuman yang munasabah sambil mengekalkan
penyusunan pantas dan pengalaman penyahpepijatan yang baik.

Jika anda menggunakan berbilang -O pilihan, dengan atau tanpa nombor tahap, pilihan terakhir sedemikian ialah
yang berkesan.

Pilihan borang -fbendera nyatakan bendera bebas mesin. Kebanyakan bendera mempunyai kedua-duanya
bentuk positif dan negatif; bentuk negatif daripada -ffoo is -fno-foo. Dalam jadual di bawah,
hanya satu daripada borang yang disenaraikan---yang biasa anda gunakan. Anda boleh memikirkan yang lain
bentuk dengan sama ada mengeluarkan NO- atau menambahnya.

Pilihan berikut mengawal pengoptimuman khusus. Mereka sama ada diaktifkan oleh -O
pilihan atau berkaitan dengan yang. Anda boleh menggunakan bendera berikut dalam jarang berlaku
kes apabila "penalaan halus" pengoptimuman yang akan dilakukan dikehendaki.

-fno-defer-pop
Sentiasa munculkan argumen pada setiap panggilan fungsi sebaik sahaja fungsi itu kembali. Untuk
mesin yang mesti mengeluarkan argumen selepas panggilan fungsi, pengkompil biasanya membenarkan
hujah terkumpul pada timbunan untuk beberapa panggilan fungsi dan memaparkan kesemuanya di
sekali.

Dilumpuhkan pada tahap -O, -O2, -O3, -Os.

-maju-sebarkan
Lakukan hantaran perambatan ke hadapan pada RTL. Pas cuba menggabungkan dua arahan
dan menyemak sama ada hasilnya boleh dipermudahkan. Jika buka gelung aktif, dua hantaran
dilakukan dan yang kedua dijadualkan selepas gelung dibuka.

Pilihan ini didayakan secara lalai pada tahap pengoptimuman -O, -O2, -O3, -Os.

-ffp-contract=gaya
-ffp-contract=off melumpuhkan pengecutan ungkapan titik terapung. -ffp-contract=cepat
membolehkan pengecutan ungkapan titik terapung seperti membentuk gabungan darab-tambah
operasi jika sasaran mempunyai sokongan asli untuk mereka. -ffp-contract=on membolehkan
penguncupan ungkapan titik terapung jika dibenarkan oleh standard bahasa. Ini adalah
pada masa ini tidak dilaksanakan dan dilayan sama dengan -ffp-contract=off.

Lalai adalah -ffp-contract=cepat.

-fomit-frame-pointer
Jangan simpan penunjuk bingkai dalam daftar untuk fungsi yang tidak memerlukannya. ini
mengelakkan arahan untuk menyimpan, menyediakan dan memulihkan penunjuk bingkai; ia juga membuat
daftar tambahan tersedia dalam banyak fungsi. It Juga membuat debugging mustahil on
beberapa mesin.

Pada sesetengah mesin, seperti VAX, bendera ini tidak mempunyai kesan, kerana standard
urutan panggilan secara automatik mengendalikan penuding bingkai dan tiada apa yang disimpan oleh
berpura-pura ia tidak wujud. Makro perihalan mesin "FRAME_POINTER_REQUIRED"
mengawal sama ada mesin sasaran menyokong bendera ini.

Tetapan lalai (apabila tidak mengoptimumkan saiz) untuk 32-bit GNU/Linux x86 dan 32-bit
Sasaran Darwin x86 ialah -fomit-frame-pointer. Anda boleh mengkonfigurasi GCC dengan
--dayakan-bingkai-penunjuk konfigurasi pilihan untuk menukar lalai.

Didayakan pada tahap -O, -O2, -O3, -Os.

-foptimize-sibling-panggilan
Optimumkan panggilan rekursif adik-beradik dan ekor.

Didayakan pada tahap -O2, -O3, -Os.

-foptimize-strlen
Optimumkan pelbagai fungsi rentetan C standard (cth "strlen", "strchr" atau "strcpy") dan
"_FORTIFY_SOURCE" mereka menjadi alternatif yang lebih pantas.

Didayakan pada tahap -O2, -O3.

-fno-dalam talian
Jangan kembangkan mana-mana fungsi sebaris selain daripada yang ditandakan dengan "always_inline"
atribut. Ini adalah lalai apabila tidak mengoptimumkan.

Fungsi tunggal boleh dikecualikan daripada inlining dengan menandakannya dengan "noinline"
atribut.

-finline-kecil-fungsi
Integrasikan fungsi ke dalam pemanggil mereka apabila badan mereka lebih kecil daripada yang dijangkakan
kod panggilan fungsi (jadi saiz keseluruhan program menjadi lebih kecil). Penyusun
secara heuristik memutuskan fungsi yang cukup mudah untuk disepadukan
dengan cara ini. Sebaris ini terpakai kepada semua fungsi, malah fungsi yang tidak diisytiharkan sebaris.

Didayakan pada tahap -O2.

-findirect-inlining
Sebaris juga panggilan tidak langsung yang didapati diketahui pada masa penyusunan terima kasih kepada
inlining sebelumnya. Pilihan ini mempunyai sebarang kesan hanya apabila inlining sendiri dihidupkan
oleh -finline-fungsi or -finline-kecil-fungsi pilihan.

Didayakan pada tahap -O2.

-finline-fungsi
Pertimbangkan semua fungsi untuk sebaris, walaupun ia tidak diisytiharkan sebaris. The
pengkompil secara heuristik memutuskan fungsi mana yang patut disepadukan dengan cara ini.

Jika semua panggilan ke fungsi tertentu disepadukan, dan fungsi itu diisytiharkan
"statik", maka fungsi itu biasanya tidak dikeluarkan sebagai kod pemasang dengan haknya sendiri.

Didayakan pada tahap -O3.

-fungsi-finline-dipanggil-sekali
Pertimbangkan semua fungsi "statik" dipanggil sekali untuk sebaris ke dalam pemanggilnya walaupun jika
mereka tidak ditanda "sebaris". Jika panggilan ke fungsi tertentu disepadukan, maka
fungsi tidak dikeluarkan sebagai kod pemasang dengan haknya sendiri.

Didayakan pada tahap -O1, -O2, -O3 dan -Os.

-takut-menyerang
Fungsi sebaris ditandakan dengan "sentiasa_sebaris" dan fungsi yang badannya kelihatan lebih kecil daripada
fungsi memanggil overhed awal sebelum melakukan -fprofile-jana instrumentasi dan
hantaran inlining sebenar. Melakukannya menjadikan pemprofilan jauh lebih murah dan biasanya
sebaris lebih cepat pada program yang mempunyai rangkaian besar fungsi pembalut bersarang.

Diaktifkan secara lalai.

-fipa-sra
Lakukan penggantian skalar antara prosedur agregat, penyingkiran parameter yang tidak digunakan
dan penggantian parameter yang diluluskan oleh rujukan oleh parameter yang diluluskan oleh nilai.

Didayakan pada tahap -O2, -O3 dan -Os.

-had-finline=n
Secara lalai, GCC mengehadkan saiz fungsi yang boleh diselaraskan. Bendera ini membolehkan
kawalan kasar had ini. n ialah saiz fungsi yang boleh diselaraskan
bilangan arahan pseudo.

Inlining sebenarnya dikawal oleh beberapa parameter, yang mungkin ditentukan
secara individu dengan menggunakan --param nama=nilai. Yang -had-finline=n pilihan menetapkan beberapa
parameter ini seperti berikut:

max-inline-insns-single
ditetapkan untuk n/ 2.

max-inline-inns-auto
ditetapkan untuk n/ 2.

Lihat di bawah untuk dokumentasi parameter individu yang mengawal inlining dan
untuk lalai parameter ini.

Catatan: mungkin tiada nilai -had-finline yang mengakibatkan tingkah laku lalai.

Catatan: arahan pseudo mewakili, dalam konteks khusus ini, abstrak
pengukuran saiz fungsi. Ia sama sekali tidak mewakili kiraan perhimpunan
arahan dan oleh itu makna tepatnya mungkin berubah daripada satu keluaran kepada satu
lain.

-fno-keep-inline-dllexport
Ini adalah versi yang lebih terperinci -fkeep-inline-functions, yang terpakai hanya untuk
fungsi yang diisytiharkan menggunakan atribut "dllexport" atau declspec

-fkeep-inline-functions
Dalam C, keluarkan fungsi "statik" yang diisytiharkan "sebaris" ke dalam fail objek, walaupun jika
fungsi telah diselaraskan ke dalam semua pemanggilnya. Suis ini tidak menjejaskan
menggunakan sambungan "dalam talian luar" dalam GNU C90. Dalam C++, keluarkan mana-mana dan semua
fungsi sebaris ke dalam fail objek.

-fkeep-static-consts
Pancarkan pembolehubah yang diisytiharkan "const statik" apabila pengoptimuman tidak dihidupkan, walaupun jika
pembolehubah tidak dirujuk.

GCC mendayakan pilihan ini secara lalai. Jika anda ingin memaksa pengkompil untuk menyemak sama ada a
pembolehubah dirujuk, tidak kira sama ada pengoptimuman dihidupkan atau tidak, gunakan
yang -fno-keep-static-consts pilihan.

-fmerge-pemalar
Cuba untuk menggabungkan pemalar yang sama (pemalar rentetan dan pemalar titik terapung)
merentasi unit kompilasi.

Pilihan ini ialah lalai untuk kompilasi yang dioptimumkan jika pemasang dan pemaut
menyokongnya. guna -fno-cantum-pemalar untuk menghalang tingkah laku ini.

Didayakan pada tahap -O, -O2, -O3, -Os.

-fmerge-semua-pemalar
Cuba untuk menggabungkan pemalar yang sama dan pembolehubah yang serupa.

Pilihan ini membayangkan -fmerge-pemalar. Selain -fmerge-pemalar ini
mempertimbangkan contohnya, tatasusunan dimulakan malar atau pembolehubah malar dimulakan dengan
jenis integral atau titik terapung. Bahasa seperti C atau C++ memerlukan setiap pembolehubah,
termasuk berbilang kejadian pembolehubah yang sama dalam panggilan rekursif, untuk mempunyai yang berbeza
lokasi, jadi menggunakan pilihan ini mengakibatkan tingkah laku tidak akur.

-fmodulo-jadual
Lakukan penjadualan modulo hayunan sejurus sebelum pas penjadualan pertama. ini
pas melihat gelung paling dalam dan menyusun semula arahannya dengan bertindih yang berbeza
lelaran.

-fmodulo-sched-allow-regmoves
Lakukan penjadualan modulo berasaskan SMS yang lebih agresif dengan pergerakan daftar dibenarkan. Oleh
menetapkan bendera ini, tepi anti-pergantungan tertentu dipadamkan, yang mencetuskan
penjanaan reg-moves berdasarkan analisis julat hayat. Pilihan ini berkesan
hanya dengan -fmodulo-jadual yang aktif.

-fno-cawangan-count-reg
Jangan gunakan arahan "pengurangan dan cawangan" pada daftar kiraan, tetapi sebaliknya
hasilkan urutan arahan yang mengurangkan daftar, bandingkan dengannya
sifar, kemudian bercabang berdasarkan hasilnya. Pilihan ini hanya bermakna pada
seni bina yang menyokong arahan sedemikian, yang termasuk x86, PowerPC, IA-64 dan
S/390.

Didayakan secara lalai di -O1 dan lebih tinggi.

Lalai adalah -fbranch-count-reg.

-fno-function-cse
Jangan letakkan alamat fungsi dalam daftar; buat setiap arahan yang memanggil a
fungsi malar mengandungi alamat fungsi secara eksplisit.

Pilihan ini menghasilkan kod yang kurang cekap, tetapi beberapa godam pelik yang mengubah
output pemasang mungkin keliru dengan pengoptimuman yang dilakukan apabila pilihan ini
tidak digunakan.

Lalai adalah -ffunction-cse

-fno-sifar-dimulakan-dalam-bss
Jika sasaran menyokong bahagian BSS, GCC secara lalai meletakkan pembolehubah yang
dimulakan kepada sifar ke dalam BSS. Ini boleh menjimatkan ruang dalam kod yang dihasilkan.

Pilihan ini mematikan gelagat ini kerana sesetengah program secara eksplisit bergantung pada pembolehubah
pergi ke bahagian data---cth, supaya boleh laku yang terhasil boleh mencari
permulaan bahagian itu dan/atau membuat andaian berdasarkan itu.

Lalai adalah -fzero-dimulakan-dalam-bss.

-fthread-lompat
Lakukan pengoptimuman yang menyemak untuk melihat sama ada lompatan bercabang ke lokasi yang lain
perbandingan yang dimasukkan oleh yang pertama didapati. Jika ya, cawangan pertama diubah hala ke
sama ada destinasi cawangan kedua atau titik serta-merta mengikutinya,
bergantung kepada sama ada keadaan itu diketahui benar atau salah.

Didayakan pada tahap -O2, -O3, -Os.

-fsplit-wide-types
Apabila menggunakan jenis yang menduduki berbilang daftar, seperti "panjang panjang" pada 32-bit
sistem, pisahkan daftar dan peruntukkannya secara bebas. Ini biasanya
menjana kod yang lebih baik untuk jenis tersebut, tetapi mungkin menyukarkan penyahpepijatan.

Didayakan pada tahap -O, -O2, -O3, -Os.

-fcse-ikut-lompat
Dalam penghapusan subungkapan biasa (CSE), imbas melalui arahan lompat apabila
sasaran lompatan tidak dicapai oleh mana-mana laluan lain. Contohnya, apabila CSE bertemu
pernyataan "jika" dengan klausa "lain", CSE mengikuti lompatan apabila keadaan
diuji adalah palsu.

Didayakan pada tahap -O2, -O3, -Os.

-fcse-skip-blok
Ini serupa dengan -fcse-ikut-lompat, tetapi menyebabkan CSE mengikuti lompatan itu
melangkau blok secara bersyarat. Apabila CSE menemui pernyataan "jika" mudah dengan no
klausa lain, -fcse-skip-blok menyebabkan CSE mengikuti lompatan di sekeliling badan
"jika".

Didayakan pada tahap -O2, -O3, -Os.

-frerun-cse-after-gelung
Jalankan semula penghapusan subungkapan biasa selepas pengoptimuman gelung dilakukan.

Didayakan pada tahap -O2, -O3, -Os.

-fgcse
Lakukan pas penghapusan subungkapan biasa global. Pas ini juga berprestasi
pemalar global dan penyebaran salinan.

Catatan: Apabila menyusun atur cara menggunakan gotos yang dikira, sambungan GCC, anda mungkin mendapat
prestasi masa jalan yang lebih baik jika anda melumpuhkan penghapusan subungkapan biasa global
lulus dengan menambah -fno-gcse ke baris arahan.

Didayakan pada tahap -O2, -O3, -Os.

-fgcse-lm
Bila -fgcse-lm didayakan, percubaan penghapusan subungkapan biasa global untuk bergerak
beban yang hanya dibunuh oleh stor ke dalam diri mereka sendiri. Ini membenarkan gelung yang mengandungi a
jujukan muat/simpan untuk ditukar kepada beban di luar gelung, dan salinan/simpan di dalam
gelung itu.

Didayakan secara lalai apabila -fgcse Didayakan.

-fgcse-sm
Bila -fgcse-sm didayakan, pas gerakan kedai dijalankan selepas biasa global
penghapusan subungkapan. Pas ini cuba mengalihkan stor keluar dari gelung. Apabila digunakan
bersempena dengan -fgcse-lm, gelung yang mengandungi jujukan muat/stor boleh ditukar
kepada beban sebelum gelung dan stor selepas gelung.

Tidak didayakan pada mana-mana peringkat pengoptimuman.

-fgcse-las
Bila -fgcse-las didayakan, pas penghapusan subungkapan biasa global
menghapuskan beban berlebihan yang datang selepas disimpan ke lokasi memori yang sama (kedua-duanya
redundansi separa dan penuh).

Tidak didayakan pada mana-mana peringkat pengoptimuman.

-fgcse-selepas-muat semula
Bila -fgcse-selepas-muat semula didayakan, pas penyingkiran beban berlebihan dilakukan
selepas muat semula. Tujuan pas ini adalah untuk membersihkan tumpahan berlebihan.

-pengoptimuman-gelung-faggressive
Pilihan ini memberitahu pengoptimum gelung untuk menggunakan kekangan bahasa untuk memperoleh had
bilangan lelaran bagi gelung. Ini menganggap bahawa kod gelung tidak memanggil
tingkah laku yang tidak ditentukan oleh contohnya menyebabkan limpahan integer yang ditandatangani atau di luar sempadan
akses tatasusunan. Had bilangan lelaran gelung digunakan untuk membimbing
pengoptimuman ujian keluar gelung dan mengelupas dan gelung. Pilihan ini didayakan
secara lalai.

-funsafe-loop-optimizations
Pilihan ini memberitahu pengoptimum gelung untuk menganggap bahawa indeks gelung tidak melimpah, dan
gelung dengan keadaan keluar bukan remeh adalah tidak terhingga. Ini membolehkan lebih luas
julat pengoptimuman gelung walaupun pengoptimum gelung itu sendiri tidak dapat membuktikan bahawa ini
andaian adalah sah. Jika anda menggunakan -Wunsafe-loop-optimizations, pengkompil memberi amaran kepada anda
jika ia menjumpai gelung seperti ini.

-fcrossjumping
Lakukan transformasi lompat silang. Transformasi ini menyatukan kod setara dan
menjimatkan saiz kod. Kod yang terhasil mungkin atau mungkin tidak berprestasi lebih baik daripada tanpa silang-
melompat.

Didayakan pada tahap -O2, -O3, -Os.

-fauto-inc-dec
Gabungkan penambahan atau pengurangan alamat dengan akses memori. Pas ini adalah
sentiasa melangkau pada seni bina yang tidak mempunyai arahan untuk menyokong ini.
Didayakan secara lalai di -O dan lebih tinggi pada seni bina yang menyokong ini.

-fdce
Lakukan penyingkiran kod mati (DCE) pada RTL. Didayakan secara lalai di -O dan lebih tinggi.

-fdse
Lakukan penghapusan stor mati (DSE) pada RTL. Didayakan secara lalai di -O dan lebih tinggi.

-lima-penukaran
Percubaan untuk mengubah lompatan bersyarat menjadi setara tanpa cawangan. Ini termasuk
penggunaan pergerakan bersyarat, min, maks, set bendera dan arahan abs, dan beberapa helah
boleh dilakukan dengan aritmetik piawai. Penggunaan pelaksanaan bersyarat pada cip di mana ia berada
tersedia dikawal oleh -lima-penukaran2.

Didayakan pada tahap -O, -O2, -O3, -Os.

-lima-penukaran2
Gunakan pelaksanaan bersyarat (jika ada) untuk mengubah lompatan bersyarat
setara tanpa cawangan.

Didayakan pada tahap -O, -O2, -O3, -Os.

-fdeclone-ctor-dtor
C++ ABI memerlukan berbilang titik masuk untuk pembina dan pemusnah: satu untuk a
subjek asas, satu untuk objek lengkap, dan satu untuk pemusnah maya yang memanggil
operator padam selepas itu. Untuk hierarki dengan asas maya, asas dan lengkap
varian ialah klon, yang bermaksud dua salinan fungsi. Dengan pilihan ini,
asas dan varian lengkap ditukar menjadi thunks yang memanggil pelaksanaan biasa.

Didayakan oleh -Os.

-fdelete-null-pointer-checks
Andaikan bahawa program tidak boleh menyahrujuk petunjuk nol dengan selamat dan tiada kod atau data
unsur tinggal di sana. Ini membolehkan pengoptimuman lipatan berterusan yang mudah sama sekali
tahap pengoptimuman. Selain itu, pas pengoptimuman lain dalam GCC menggunakan bendera ini untuk
mengawal analisis aliran data global yang menghapuskan semakan yang tidak berguna untuk petunjuk nol;
ini menganggap bahawa jika penunjuk disemak selepas ia telah dinyahrujuk, ia
tidak boleh batal.

Walau bagaimanapun, ambil perhatian bahawa dalam sesetengah persekitaran andaian ini tidak benar. guna
-fno-delete-null-pointer-checks untuk melumpuhkan pengoptimuman ini untuk program yang bergantung
pada tingkah laku itu.

Sesetengah sasaran, terutamanya yang terbenam, melumpuhkan pilihan ini pada semua peringkat. Jika tidak
ia didayakan pada semua peringkat: -O0, -O1, -O2, -O3, -Os. Pas yang menggunakan maklumat
didayakan secara bebas pada tahap pengoptimuman yang berbeza.

-fdevirtualize
Cuba untuk menukar panggilan kepada fungsi maya kepada panggilan terus. Ini dilakukan kedua-duanya
dalam prosedur dan antara prosedur sebagai sebahagian daripada inlining tidak langsung
(-findirect-inlining) dan perambatan malar antara prosedur (-fipa-cp). Didayakan pada
tahap -O2, -O3, -Os.

-fdevirtualize-spekulatif
Percubaan untuk menukar panggilan kepada fungsi maya kepada panggilan langsung spekulatif. Berdasarkan
analisis graf pewarisan jenis, tentukan untuk panggilan tertentu set bagi
sasaran yang mungkin. Jika set kecil, sebaiknya bersaiz 1, tukar panggilan kepada a
membuat keputusan bersyarat antara panggilan langsung dan tidak langsung. Panggilan spekulatif membolehkan
lebih banyak pengoptimuman, seperti inlining. Apabila mereka kelihatan tidak berguna selepas lebih jauh
pengoptimuman, ia ditukar kembali kepada bentuk asal.

-fdevirtualize-at-ltrans
Strim maklumat tambahan yang diperlukan untuk penyahvirtualan yang agresif apabila menjalankan pautan-
pengoptimum masa dalam mod transformasi tempatan. Pilihan ini membolehkan lebih banyak lagi
penyahvirtualan tetapi meningkatkan saiz data yang distrim dengan ketara. Untuk ini
sebab ia dilumpuhkan secara lalai.

-pengoptimuman yang mahal
Lakukan beberapa pengoptimuman kecil yang agak mahal.

Didayakan pada tahap -O2, -O3, -Os.

-free
Cuba untuk mengalih keluar arahan sambungan yang berlebihan. Ini amat berguna untuk
seni bina x86-64, yang secara tersirat dilanjutkan sifar dalam daftar 64-bit selepas
menulis ke bahagian bawah 32-bit mereka.

Didayakan untuk Alpha, AArch64 dan x86 pada tahap -O2, -O3, -Os.

-fno-lifetime-dse
Dalam C++ nilai objek hanya dipengaruhi oleh perubahan dalam hayatnya: bila
pembina bermula, objek mempunyai nilai tak tentu, dan sebarang perubahan semasa
hayat objek itu mati apabila objek itu dimusnahkan. Biasanya kedai mati
penyingkiran akan mengambil kesempatan daripada ini; jika kod anda bergantung pada nilai
storan objek berterusan melebihi jangka hayat objek, anda boleh menggunakan bendera ini untuk
lumpuhkan pengoptimuman ini.

-flive-range-pengecutan
Percubaan untuk mengurangkan tekanan daftar melalui pengecutan julat langsung daftar. Ini adalah
berguna untuk pemproses pantas dengan set daftar saiz kecil atau sederhana.

-fira-algoritma=algoritma
Gunakan algoritma pewarnaan yang ditentukan untuk pengagih daftar bersepadu. The
algoritma hujah boleh keutamaan, yang menentukan pewarna keutamaan Chow, atau CB,
yang menentukan pewarna Chaitin-Briggs. Pewarna Chaitin-Briggs tidak dilaksanakan
untuk semua seni bina, tetapi untuk sasaran yang menyokongnya, ia adalah lalai
kerana ia menghasilkan kod yang lebih baik.

-fira-region=rantau
Gunakan kawasan yang ditentukan untuk pengagih daftar bersepadu. The rantau hujah
hendaklah salah satu daripada yang berikut:

semua Gunakan semua gelung sebagai kawasan peruntukan daftar. Ini boleh memberikan hasil yang terbaik untuk
mesin dengan set daftar kecil dan/atau tidak teratur.

bercampur
Gunakan semua gelung kecuali gelung dengan tekanan daftar kecil sebagai kawasan. ini
nilai biasanya memberikan hasil terbaik dalam kebanyakan kes dan untuk kebanyakan seni bina, dan
didayakan secara lalai apabila menyusun dengan pengoptimuman untuk kelajuan (-O, -O2, ...).

1 Gunakan semua fungsi sebagai satu rantau. Ini biasanya menghasilkan kod terkecil
saiz, dan didayakan secara lalai untuk -Os or -O0.

-fira-angkat-tekanan
Gunakan IRA untuk menilai tekanan daftar dalam pas pengangkat kod untuk keputusan menaikkan
ungkapan. Pilihan ini biasanya menghasilkan kod yang lebih kecil, tetapi ia boleh memperlahankan
penyusun turun.

Pilihan ini didayakan pada tahap -Os untuk semua sasaran.

-fira-gelung-tekanan
Gunakan IRA untuk menilai tekanan daftar dalam gelung untuk keputusan mengalihkan invarian gelung.
Pilihan ini biasanya menghasilkan penjanaan kod yang lebih pantas dan lebih kecil pada mesin dengan
fail daftar besar (>= 32 daftar), tetapi ia boleh memperlahankan pengkompil.

Pilihan ini didayakan pada tahap -O3 untuk beberapa sasaran.

-fno-ira-kongsi-simpan-slot
Lumpuhkan perkongsian slot tindanan yang digunakan untuk menyimpan daftar keras yang digunakan panggilan hidup melalui
satu panggilan. Setiap daftar keras mendapat slot tindanan yang berasingan, dan sebagai hasil tindanan fungsi
bingkai lebih besar.

-fno-ira-share-spill-slot
Lumpuhkan perkongsian slot tindanan yang diperuntukkan untuk pseudo-register. Setiap pseudo-daftar
yang tidak mendapat daftar keras mendapat slot tindanan yang berasingan, dan sebagai hasil fungsi
bingkai tindanan adalah lebih besar.

-fira-verbose=n
Kawal verbositi fail dump untuk pengagih daftar bersepadu. The
nilai lalai ialah 5. Jika nilai n adalah lebih besar atau sama dengan 10, output dump dihantar
ke stderr menggunakan format yang sama seperti n tolak 10.

-flra-remat
Dayakan pewujudan semula sensitif CFG dalam LRA. Daripada memuatkan nilai tertumpah
pseudos, LRA cuba untuk mewujudkan semula (mengira semula) nilai jika ia menguntungkan.

Didayakan pada tahap -O2, -O3, -Os.

-fdelayed-cawangan
Jika disokong untuk mesin sasaran, cuba susun semula arahan untuk mengeksploitasi
slot arahan tersedia selepas arahan cawangan tertunda.

Didayakan pada tahap -O, -O2, -O3, -Os.

-fschedule-inns
Jika disokong untuk mesin sasaran, cuba susun semula arahan untuk dihapuskan
gerai pelaksanaan kerana data yang diperlukan tidak tersedia. Ini membantu mesin yang
mempunyai titik terapung perlahan atau arahan beban memori dengan membenarkan arahan lain
dikeluarkan sehingga keputusan beban atau arahan titik terapung diperlukan.

Didayakan pada tahap -O2, -O3.

-fschedule-insns2
Sama seperti -fschedule-inns, tetapi meminta pas tambahan penjadualan arahan
selepas peruntukan daftar telah dilakukan. Ini amat berguna pada mesin dengan a
bilangan daftar yang agak kecil dan di mana arahan memuatkan memori mengambil masa lebih daripada
satu kitaran.

Didayakan pada tahap -O2, -O3, -Os.

-fno-sched-interblock
Jangan jadualkan arahan merentas blok asas. Ini biasanya didayakan secara lalai
apabila menjadualkan sebelum mendaftar peruntukan, iaitu dengan -fschedule-inns atau sekurang- -O2 or
lebih tinggi.

-fno-sched-spec
Jangan benarkan gerakan spekulatif arahan tanpa beban. Ini biasanya didayakan oleh
lalai semasa menjadualkan sebelum mendaftar peruntukan, iaitu dengan -fschedule-inns atau sekurang-
-O2 atau lebih tinggi.

-fsched-tekanan
Dayakan penjadualan insn sensitif tekanan daftar sebelum daftar peruntukan. ini
hanya masuk akal apabila penjadualan sebelum peruntukan daftar didayakan, iaitu dengan
-fschedule-inns atau sekurang- -O2 atau lebih tinggi. Penggunaan pilihan ini boleh menambah baik yang dihasilkan
kod dan kurangkan saiznya dengan menghalang peningkatan tekanan daftar di atas nombor
daftar keras yang tersedia dan tumpahan berikutnya dalam peruntukan daftar.

-fsched-spec-load
Benarkan gerakan spekulatif beberapa arahan beban. Ini hanya masuk akal apabila
penjadualan sebelum mendaftar peruntukan, iaitu dengan -fschedule-inns atau sekurang- -O2 atau lebih tinggi.

-fsched-spec-load-berbahaya
Benarkan gerakan spekulatif lebih banyak arahan beban. Ini hanya masuk akal apabila
penjadualan sebelum mendaftar peruntukan, iaitu dengan -fschedule-inns atau sekurang- -O2 atau lebih tinggi.

-fsched-stalled-inns
-fsched-stalled-insns=n
Tentukan berapa banyak inns (jika ada) boleh dialihkan lebih awal daripada baris gilir yang terhenti
masuk ke dalam senarai sedia semasa pas penjadualan kedua. -fno-sched-stalled-inns
bermakna tiada insn dipindahkan sebelum waktunya, -fsched-stalled-insns=0 bermakna tidak ada
hadkan bilangan insn beratur yang boleh dialihkan lebih awal. -fsched-stalled-inns
tanpa nilai adalah bersamaan dengan -fsched-stalled-insns=1.

-fsched-stalled-insns-dep
-fsched-stalled-insns-dep=n
Tentukan bilangan kumpulan insn (kitaran) yang diperiksa untuk pergantungan pada insn yang terhenti
itu adalah calon untuk penyingkiran pramatang daripada barisan insn yang terhenti. Ini mempunyai
kesan hanya semasa pas penjadualan kedua, dan hanya jika -fsched-stalled-inns is
terpakai. -fno-sched-stalled-insns-dep adalah bersamaan dengan -fsched-stalled-insns-dep=0.
-fsched-stalled-insns-dep tanpa nilai adalah bersamaan dengan
-fsched-stalled-insns-dep=1.

-fsched2-use-superblocks
Apabila menjadualkan selepas peruntukan daftar, gunakan penjadualan superblock. Ini membenarkan
gerakan merentasi sempadan blok asas, menghasilkan jadual yang lebih pantas. Pilihan ini adalah
eksperimen, kerana tidak semua penerangan mesin yang digunakan oleh GCC memodelkan CPU dengan cukup rapat
untuk mengelakkan keputusan yang tidak boleh dipercayai daripada algoritma.

Ini hanya masuk akal apabila menjadualkan selepas peruntukan daftar, iaitu dengan
-fschedule-insns2 atau sekurang- -O2 atau lebih tinggi.

-fsched-group-heuristic
Dayakan heuristik kumpulan dalam penjadual. Heuristik ini memihak kepada arahan
yang tergolong dalam kumpulan jadual. Ini didayakan secara lalai apabila penjadualan adalah
didayakan, iaitu dengan -fschedule-inns or -fschedule-insns2 atau sekurang- -O2 atau lebih tinggi.

-fsched-critical-path-heuristic
Dayakan heuristik laluan kritikal dalam penjadual. Heuristik ini nikmat
arahan mengenai laluan kritikal. Ini didayakan secara lalai apabila penjadualan adalah
didayakan, iaitu dengan -fschedule-inns or -fschedule-insns2 atau sekurang- -O2 atau lebih tinggi.

-fsched-spec-insn-heuristic
Dayakan heuristik arahan spekulatif dalam penjadual. Heuristik ini nikmat
arahan spekulatif dengan kelemahan pergantungan yang lebih besar. Ini didayakan secara lalai
apabila penjadualan didayakan, iaitu dengan -fschedule-inns or -fschedule-insns2 atau sekurang- -O2
atau lebih tinggi.

-fsched-rank-heuristic
Dayakan heuristik kedudukan dalam penjadual. Heuristik ini memihak kepada arahan
kepunyaan blok asas dengan saiz atau kekerapan yang lebih besar. Ini didayakan secara lalai
apabila penjadualan didayakan, iaitu dengan -fschedule-inns or -fschedule-insns2 atau sekurang- -O2
atau lebih tinggi.

-fsched-last-insn-heuristic
Dayakan heuristik arahan terakhir dalam penjadual. Heuristik ini memihak kepada
arahan yang kurang bergantung kepada arahan terakhir yang dijadualkan. Ini didayakan
secara lalai apabila penjadualan didayakan, iaitu dengan -fschedule-inns or -fschedule-insns2
atau sekurang- -O2 atau lebih tinggi.

-fsched-dep-count-heuristic
Dayakan heuristik kiraan bergantung dalam penjadual. Heuristik ini memihak kepada
arahan yang mempunyai lebih banyak arahan bergantung padanya. Ini didayakan secara lalai
apabila penjadualan didayakan, iaitu dengan -fschedule-inns or -fschedule-insns2 atau sekurang- -O2
atau lebih tinggi.

-freschedule-modulo-scheduled-gelung
Penjadualan modulo dilakukan sebelum penjadualan tradisional. Jika gelung adalah modulo
dijadualkan, pas penjadualan kemudian boleh menukar jadualnya. Gunakan pilihan ini untuk
mengawal tingkah laku itu.

-penjadualan-selektif
Jadualkan arahan menggunakan algoritma penjadualan terpilih. Penjadualan terpilih berjalan
bukannya pas penjadual pertama.

-penjadualan-selektif2
Jadualkan arahan menggunakan algoritma penjadualan terpilih. Penjadualan terpilih berjalan
bukannya pas penjadual kedua.

-fsel-sched-pipelining
Dayakan saluran paip perisian bagi gelung paling dalam semasa penjadualan terpilih. ini
pilihan tidak mempunyai kesan melainkan salah satu daripada -penjadualan-selektif or -penjadualan-selektif2
dihidupkan.

-fsel-sched-pipelining-outer-gelung
Apabila gelung saluran paip semasa penjadualan terpilih, juga gelung luar saluran paip. ini
pilihan tidak mempunyai kesan melainkan -fsel-sched-pipelining dihidupkan.

-fsemantik-interposisi
Sesetengah format objek, seperti ELF, membenarkan interposing simbol oleh pemaut dinamik.
Ini bermakna bahawa untuk simbol yang dieksport daripada DSO, pengkompil tidak boleh melakukan
penyebaran antara prosedur, inlining dan pengoptimuman lain dengan menjangkakan bahawa
fungsi atau pembolehubah yang dimaksudkan mungkin berubah. Walaupun ciri ini berguna, untuk
contohnya, untuk menulis semula fungsi peruntukan memori dengan pelaksanaan penyahpepijatan, ia adalah
mahal dari segi kualiti kod. Dengan -fno-semantic-interposition penyusunnya
mengandaikan bahawa jika interposisi berlaku untuk fungsi fungsi timpa akan ada
semantik yang sama (dan kesan sampingan). Begitu juga jika interposisi berlaku
untuk pembolehubah, pembina pembolehubah akan sama. Bendera tidak mempunyai
kesan untuk fungsi yang diisytiharkan secara jelas sebaris (di mana ia tidak pernah dibenarkan untuk
interposisi untuk menukar semantik) dan untuk simbol yang diisytiharkan lemah secara eksplisit.

-fshrink-bungkus
Pancarkan prolog fungsi hanya sebelum bahagian fungsi yang memerlukannya, bukannya di
bahagian atas fungsi. Bendera ini didayakan secara lalai di -O dan lebih tinggi.

-fcaller-menjimatkan
Dayakan peruntukan nilai kepada daftar yang dikalahkan oleh panggilan fungsi, oleh
mengeluarkan arahan tambahan untuk menyimpan dan memulihkan daftar di sekitar panggilan tersebut. begitu
peruntukan dilakukan hanya apabila ia kelihatan menghasilkan kod yang lebih baik.

Pilihan ini sentiasa didayakan secara lalai pada mesin tertentu, biasanya yang mempunyai
tiada daftar yang dipelihara panggilan untuk digunakan sebaliknya.

Didayakan pada tahap -O2, -O3, -Os.

-fcombine-stack-adjustments
Menjejaki pelarasan tindanan (tekan dan timbul) dan tindanan rujukan memori dan kemudian cuba
untuk mencari cara untuk menggabungkannya.

Didayakan secara lalai di -O1 dan lebih tinggi.

-fipa-ra
Gunakan daftar simpan pemanggil untuk peruntukan jika daftar tersebut tidak digunakan oleh mana-mana panggilan
fungsi. Dalam kes itu, tidak perlu menyimpan dan memulihkannya semasa panggilan.
Ini hanya boleh dilakukan jika fungsi yang dipanggil adalah sebahagian daripada unit kompilasi yang sama seperti semasa
berfungsi dan ia disusun sebelum itu.

Didayakan pada tahap -O2, -O3, -Os.

-fconserve-stack
Cuba untuk meminimumkan penggunaan tindanan. Pengkompil cuba menggunakan ruang tindanan yang kurang, walaupun
jika itu menjadikan program lebih perlahan. Pilihan ini membayangkan menetapkan bingkai-timbunan besar
parameter kepada 100 dan pertumbuhan-bingkai-timbunan besar parameter kepada 400.

-ftree-assoc
Lakukan perkaitan semula pada pokok. Bendera ini didayakan secara lalai di -O dan lebih tinggi.

-ftree-pra
Lakukan penghapusan redundansi separa (PRE) pada pokok. Bendera ini didayakan oleh
lalai pada -O2 dan -O3.

-ftree-partial-pra
Jadikan penghapusan lebihan separa (PRE) lebih agresif. Bendera ini didayakan oleh
lalai pada -O3.

-ftree-forwprop
Lakukan pembiakan ke hadapan pada pokok. Bendera ini didayakan secara lalai di -O dan
lebih tinggi.

-free
Lakukan penghapusan redundansi penuh (FRE) pada pokok. Perbezaan antara FRE dan
PRE ialah FRE hanya mempertimbangkan ungkapan yang dikira pada semua laluan yang menuju ke
pengiraan berlebihan. Analisis ini lebih pantas daripada PRE, walaupun ia mendedahkan lebih sedikit
redundansi. Bendera ini didayakan secara lalai di -O dan lebih tinggi.

-ftree-phiprop
Lakukan pengangkatan beban dari penunjuk bersyarat pada pokok. Pas ini didayakan oleh
lalai pada -O dan lebih tinggi.

-fhoist-bersebelahan-beban
Angkat beban secara spekulatif dari kedua-dua cabang if-then-else jika beban adalah dari
lokasi bersebelahan dalam struktur yang sama dan seni bina sasaran mempunyai bersyarat
arahan bergerak. Bendera ini didayakan secara lalai di -O2 dan lebih tinggi.

-free-copy-prop
Lakukan pembiakan salinan pada pokok. Pas ini menghapuskan operasi penyalinan yang tidak perlu.
Bendera ini didayakan secara lalai di -O dan lebih tinggi.

-fipa-pure-const
Temui fungsi yang tulen atau malar. Didayakan secara lalai di -O dan lebih tinggi.

-fipa-rujukan
Temui pembolehubah statik yang tidak terlepas daripada unit kompilasi. Didayakan oleh
lalai pada -O dan lebih tinggi.

-fipa-pta
Lakukan analisis penunjuk antara prosedur dan pengubahsuaian antara prosedur dan
analisis rujukan. Pilihan ini boleh menyebabkan memori berlebihan dan penggunaan masa kompilasi dihidupkan
unit kompilasi yang besar. Ia tidak didayakan secara lalai pada mana-mana peringkat pengoptimuman.

-fipa-profil
Lakukan penyebaran profil antara prosedur. Fungsi dipanggil hanya dari sejuk
fungsi ditandakan sebagai sejuk. Juga fungsi dilaksanakan sekali (seperti "sejuk",
"noreturn", pembina statik atau pemusnah) dikenal pasti. Fungsi sejuk dan
gelung kurang bahagian fungsi yang dilaksanakan sekali kemudian dioptimumkan untuk saiz. Didayakan oleh
lalai pada -O dan lebih tinggi.

-fipa-cp
Lakukan perambatan berterusan antara prosedur. Pengoptimuman ini menganalisis program
untuk menentukan apabila nilai yang dihantar kepada fungsi adalah pemalar dan kemudian dioptimumkan
sewajarnya. Pengoptimuman ini boleh meningkatkan prestasi dengan ketara jika
aplikasi mempunyai pemalar yang dihantar ke fungsi. Bendera ini didayakan secara lalai di
-O2, -Os dan -O3.

-fipa-cp-clone
Lakukan pengklonan fungsi untuk menjadikan perambatan berterusan antara prosedur lebih kuat. Bila
didayakan, perambatan berterusan antara prosedur melakukan pengklonan fungsi apabila
fungsi yang boleh dilihat secara luaran boleh dipanggil dengan hujah yang berterusan. Kerana ini
pengoptimuman boleh mencipta beberapa salinan fungsi, ia mungkin meningkat dengan ketara
saiz kod (lihat --param ipcp-unit-growth=nilai). Bendera ini didayakan secara lalai di
-O3.

-penjajaran-fipa-cp
Apabila didayakan, pengoptimuman ini menyebarkan penjajaran parameter fungsi untuk menyokong
pengendalian vektor dan rentetan yang lebih baik.

Bendera ini didayakan secara lalai di -O2 dan -Os. Ia memerlukan itu -fipa-cp Didayakan.

-fipa-icf
Lakukan Lipatan Kod Identical untuk fungsi dan pembolehubah baca sahaja. The
pengoptimuman mengurangkan saiz kod dan boleh mengganggu timbunan unwind dengan menggantikan fungsi
dengan yang setara dengan nama yang berbeza. Pengoptimuman berfungsi dengan lebih berkesan dengan
pengoptimuman masa pautan didayakan.

Namun begitu, tingkah lakunya serupa dengan pengoptimuman ICF Gold Linker, GCC ICF berfungsi
tahap yang berbeza dan dengan itu pengoptimuman tidak sama - terdapat persamaan itu
hanya ditemui oleh GCC dan kesetaraan hanya ditemui oleh Emas.

Bendera ini didayakan secara lalai di -O2 dan -Os.

-fisolate-erroneous-paths-dereference
Kesan laluan yang mencetuskan gelagat yang salah atau tidak ditentukan kerana membatalkan rujukan
penunjuk. Asingkan laluan tersebut daripada aliran kawalan utama dan putar penyataan dengan
tingkah laku yang salah atau tidak jelas menjadi perangkap. Bendera ini didayakan secara lalai di -O2
dan lebih tinggi.

-fisolate-erroneous-paths-attribut
Kesan laluan yang mencetuskan tingkah laku yang salah atau tidak ditentukan kerana nilai nol digunakan
dengan cara yang dilarang oleh atribut "returns_nonnull" atau "nonnull". Asingkan laluan itu
daripada aliran kawalan utama dan pusingkan pernyataan dengan tingkah laku yang salah atau tidak jelas
ke dalam perangkap. Ini tidak didayakan pada masa ini, tetapi mungkin didayakan oleh -O2 pada masa hadapan.

-ftree-sinki
Lakukan gerakan stor ke hadapan pada pokok. Bendera ini didayakan secara lalai di -O dan
lebih tinggi.

-ftree-bit-ccp
Lakukan pembiakan malar bit bersyarat jarang pada pokok dan penuding merambat
maklumat penjajaran. Pas ini hanya beroperasi pada pembolehubah skalar tempatan dan adalah
didayakan secara lalai di -O dan lebih tinggi. Ia memerlukan itu -tiga-ccp Didayakan.

-tiga-ccp
Lakukan pembiakan malar bersyarat jarang (CCP) pada pokok. Pas ini sahaja
beroperasi pada pembolehubah skalar tempatan dan didayakan secara lalai di -O dan lebih tinggi.

-fssa-phiopt
Lakukan pemadanan corak pada nod SSA PHI untuk mengoptimumkan kod bersyarat. Pas ini adalah
didayakan secara lalai di -O dan lebih tinggi.

-penukaran-ftree-switch
Lakukan penukaran pemulaan mudah dalam suis kepada pemulaan daripada a
tatasusunan skalar. Bendera ini didayakan secara lalai di -O2 dan lebih tinggi.

-bercantum-ekor-tiga
Cari urutan kod yang sama. Apabila ditemui, gantikan satu dengan lompat ke yang lain.
Pengoptimuman ini dikenali sebagai penggabungan ekor atau lompat silang. Bendera ini didayakan oleh
lalai pada -O2 dan lebih tinggi. Masa penyusunan dalam pas ini boleh dihadkan menggunakan
max-tail-merge-comparisons parameter dan lelaran gabungan-ekor-maks parameter.

-ftree-dce
Lakukan penghapusan kod mati (DCE) pada pokok. Bendera ini didayakan secara lalai di -O
dan lebih tinggi.

-ftree-built-call-dce
Lakukan penghapusan kod mati bersyarat (DCE) untuk panggilan ke fungsi terbina dalam yang
boleh menetapkan "errno" tetapi sebaliknya bebas kesan sampingan. Bendera ini didayakan secara lalai
at -O2 dan lebih tinggi jika -Os tidak dinyatakan juga.

-ftree-dominator-opts
Lakukan pelbagai pembersihan skalar mudah (penyebaran berterusan/salinan, redundansi
penghapusan, penyebaran julat dan pemudahan ungkapan) berdasarkan dominator
lintasan pokok. Ini juga melakukan lompatan benang (untuk mengurangkan lompatan kepada lompatan). ini
bendera didayakan secara lalai di -O dan lebih tinggi.

-ftree-dse
Lakukan penghapusan stor mati (DSE) pada pokok. Stor mati adalah stor ke dalam ingatan
lokasi yang kemudiannya ditimpa oleh kedai lain tanpa sebarang beban yang mengganggu. Dalam
kes ini kedai yang lebih awal boleh dipadamkan. Bendera ini didayakan secara lalai di -O dan
lebih tinggi.

-ftree-ch
Lakukan penyalinan tajuk gelung pada pokok. Ini berfaedah kerana ia meningkat
keberkesanan pengoptimuman gerakan kod. Ia juga menjimatkan satu lompatan. Bendera ini adalah
didayakan secara lalai di -O dan lebih tinggi. Ia tidak didayakan untuk -Os, kerana ia biasanya
meningkatkan saiz kod.

-ftree-loop-optimumkan
Lakukan pengoptimuman gelung pada pokok. Bendera ini didayakan secara lalai di -O dan
lebih tinggi.

-free-gelung-linear
Lakukan transformasi pertukaran gelung pada pokok. Sama seperti -pertukaran-floop. Untuk menggunakan
transformasi kod ini, GCC perlu dikonfigurasikan dengannya --dengan-isl untuk membolehkan
Infrastruktur transformasi gelung grafit.

-pertukaran-floop
Lakukan transformasi pertukaran gelung pada gelung. Menukar dua gelung bersarang
menukar gelung dalam dan luar. Sebagai contoh, diberi gelung seperti:

DO J = 1, M
DO I = 1, N
A(J, I) = A(J, I) * C
ENDDO
ENDDO

pertukaran gelung mengubah gelung seolah-olah ia ditulis:

DO I = 1, N
DO J = 1, M
A(J, I) = A(J, I) * C
ENDDO
ENDDO

yang boleh memberi manfaat apabila "N" lebih besar daripada cache, kerana di Fortran, the
elemen tatasusunan disimpan dalam ingatan secara bersebelahan mengikut lajur, dan yang asal
gelung berulang ke atas baris, yang berpotensi mencipta kehilangan cache pada setiap akses. ini
pengoptimuman digunakan pada semua bahasa yang disokong oleh GCC dan tidak terhad kepada
Fortran. Untuk menggunakan transformasi kod ini, GCC perlu dikonfigurasikan dengan --dengan-isl kepada
dayakan infrastruktur transformasi gelung Grafit.

-floop-strip-mine
Lakukan transformasi perlombongan jalur gelung pada gelung. Perlombongan jalur membelah gelung ke dalam
dua gelung bersarang. Gelung luar mempunyai langkah yang sama dengan saiz jalur dan dalam
gelung mempunyai langkah daripada gelung asal dalam jalur. Panjang jalur boleh diubah
menggunakan saiz-gelung-blok-jubin parameter. Sebagai contoh, diberi gelung seperti:

DO I = 1, N
A(I) = A(I) + C
ENDDO

perlombongan jalur gelung mengubah gelung seolah-olah ia ditulis:

DO II = 1, N, 51
DO I = II, min (II + 50, N)
A(I) = A(I) + C
ENDDO
ENDDO

Pengoptimuman ini digunakan untuk semua bahasa yang disokong oleh GCC dan tidak terhad kepada
Fortran. Untuk menggunakan transformasi kod ini, GCC perlu dikonfigurasikan dengan --dengan-isl kepada
dayakan infrastruktur transformasi gelung Grafit.

-blok-floop
Lakukan transformasi menyekat gelung pada gelung. Menyekat lombong jalur setiap gelung dalam
sarang gelung supaya akses memori bagi gelung elemen muat di dalam cache. The
panjang jalur boleh diubah menggunakan saiz-gelung-blok-jubin parameter. Sebagai contoh,
diberi gelung seperti:

DO I = 1, N
DO J = 1, M
A(J, I) = B(I) + C(J)
ENDDO
ENDDO

penyekatan gelung mengubah gelung seolah-olah ia ditulis:

DO II = 1, N, 51
DO JJ = 1, M, 51
DO I = II, min (II + 50, N)
DO J = JJ, min (JJ + 50, M)
A(J, I) = B(I) + C(J)
ENDDO
ENDDO
ENDDO
ENDDO

yang boleh memberi manfaat apabila "M" lebih besar daripada cache, kerana gelung paling dalam
mengulangi jumlah data yang lebih kecil yang boleh disimpan dalam cache. ini
pengoptimuman digunakan pada semua bahasa yang disokong oleh GCC dan tidak terhad kepada
Fortran. Untuk menggunakan transformasi kod ini, GCC perlu dikonfigurasikan dengan --dengan-isl kepada
dayakan infrastruktur transformasi gelung Grafit.

-identiti-fgrafit
Dayakan transformasi identiti untuk grafit. Untuk setiap SCoP yang kami hasilkan
perwakilan polihedral dan mengubahnya kembali kepada gimple. menggunakan -identiti-fgrafit
kita boleh semak kos atau manfaat GIMPLE -> GRAPHITE -> GIMPLE transformation.
Beberapa pengoptimuman minimum juga dilakukan oleh penjana kod ISL, seperti indeks
pemisahan dan penghapusan kod mati dalam gelung.

-floop-sarang-optimumkan
Dayakan pengoptimum sarang gelung berasaskan ISL. Ini adalah berasaskan pengoptimum sarang gelung generik
pada algoritma pengoptimuman Pluto. Ia mengira struktur gelung yang dioptimumkan untuk
data-locality dan paralelisme. Pilihan ini adalah percubaan.

-floop-unroll-and-jem
Dayakan buka gulungan dan jem untuk pengoptimum sarang gelung berasaskan ISL. Faktor buka gulungan boleh
diubah menggunakan saiz-gelung-buka-gulung-jem parameter. Dimensi yang dibuka (mengira
daripada yang paling dalam) boleh diubah menggunakan loop-unroll-jam-depth parameter.
.

-floop-parallelize-semua
Gunakan analisis pergantungan data Grafit untuk mengenal pasti gelung yang boleh diselaraskan.
Sejajarkan semua gelung yang boleh dianalisis untuk tidak mengandungi pergantungan yang dibawa gelung
tanpa memeriksa bahawa ia adalah menguntungkan untuk menyelaraskan gelung.

-fcheck-data-deps
Bandingkan keputusan beberapa penganalisis pergantungan data. Pilihan ini digunakan untuk
menyahpepijat penganalisis pergantungan data.

-ftree-gelung-jika-tukar
Cuba mengubah lompatan bersyarat dalam gelung paling dalam kepada tanpa cawangan
setara. Tujuannya adalah untuk mengalih keluar aliran kawalan dari gelung paling dalam mengikut urutan
untuk meningkatkan keupayaan pas vektorisasi untuk mengendalikan gelung ini. Ini adalah
didayakan secara lalai jika vektorisasi didayakan.

-ftree-loop-if-convert-stores
Cuba juga jika menukar lompatan bersyarat yang mengandungi penulisan memori. ini
transformasi boleh menjadi tidak selamat untuk program berbilang benang kerana ia berubah bersyarat
memori menulis ke dalam memori tanpa syarat menulis. Sebagai contoh,

untuk (i = 0; i < N; i++)
jika (cond)
A[i] = expr;

berubah menjadi

untuk (i = 0; i < N; i++)
A[i] = cond ? expr : A[i];

berpotensi menghasilkan perlumbaan data.

-taburan-tiga-gelung
Lakukan pengedaran gelung. Bendera ini boleh meningkatkan prestasi cache pada badan gelung besar
dan membenarkan pengoptimuman gelung selanjutnya, seperti penyejajaran atau vektorisasi, untuk diambil
tempat. Sebagai contoh, gelung

DO I = 1, N
A(I) = B(I) + C
D(I) = E(I) * F
ENDDO

berubah menjadi

DO I = 1, N
A(I) = B(I) + C
ENDDO
DO I = 1, N
D(I) = E(I) * F
ENDDO

-corak-edar-gelung-ftree
Lakukan pengedaran gelung corak yang boleh dijana kod dengan panggilan ke a
perpustakaan. Bendera ini didayakan secara lalai di -O3.

Pas ini mengedarkan gelung permulaan dan menjana panggilan ke memset sifar.
Sebagai contoh, gelung

DO I = 1, N
A(I) = 0
B(I) = A(I) + I
ENDDO

berubah menjadi

DO I = 1, N
A(I) = 0
ENDDO
DO I = 1, N
B(I) = A(I) + I
ENDDO

dan gelung permulaan diubah menjadi panggilan untuk memset sifar.

-ftree-gelung-im
Lakukan gerakan invarian gelung pada pokok. Pas ini hanya menggerakkan invarian yang sukar
untuk mengendalikan pada peringkat RTL (panggilan fungsi, operasi yang berkembang kepada urutan bukan remeh
daripada inns). Dengan -funswitch-gelung ia juga menggerakkan operan keadaan yang
invarian di luar gelung, supaya kita boleh menggunakan hanya analisis invarian yang remeh
gelung menyahsuis. Pas itu juga termasuk gerakan kedai.

-ftree-loop-ivcanon
Cipta pembilang kanonik untuk bilangan lelaran dalam gelung yang menentukannya
bilangan lelaran memerlukan analisis yang rumit. Pengoptimuman kemudian kemudian boleh
tentukan nombor dengan mudah. Berguna terutamanya berkaitan dengan membuka gulungan.

-fivopts
Lakukan pengoptimuman pembolehubah aruhan (pengurangan kekuatan, pembolehubah aruhan
penggabungan dan penyingkiran pembolehubah aruhan) pada pokok.

-free-parallelize-gelung=n
Parallelize gelung, iaitu, belah ruang lelaran mereka untuk dijalankan dalam n benang. Ini adalah
hanya mungkin untuk gelung yang lelarannya bebas dan boleh sewenang-wenangnya
disusun semula. Pengoptimuman hanya menguntungkan pada mesin berbilang pemproses, untuk gelung
yang intensif CPU, dan bukannya dikekang contohnya oleh jalur lebar memori. Pilihan ini
bererti -pthread, dan dengan itu hanya disokong pada sasaran yang mempunyai sokongan untuk
-pthread.

-ftree-pta
Lakukan fungsi-titik tempatan-untuk analisis pada pokok. Bendera ini didayakan secara lalai
at -O dan lebih tinggi.

-ftree-sra
Lakukan penggantian skalar bagi agregat. Pas ini menggantikan rujukan struktur
dengan skalar untuk mengelak daripada melakukan struktur kepada ingatan terlalu awal. Bendera ini adalah
didayakan secara lalai di -O dan lebih tinggi.

-ftree-copyrename
Lakukan penamaan semula salinan pada pokok. Pas ini cuba menamakan semula pengkompil sementara kepada
pembolehubah lain di lokasi salinan, biasanya menghasilkan nama pembolehubah yang lebih banyak
hampir menyerupai pembolehubah asal. Bendera ini didayakan secara lalai di -O dan
lebih tinggi.

-ftree-coalesce-inlined-vars
Beritahu pas copyrename (lihat -ftree-copyrename) untuk cuba menggabungkan pengguna kecil-
pembolehubah yang ditentukan juga, tetapi hanya jika ia sebaris daripada fungsi lain. Ia adalah
bentuk yang lebih terhad -ftree-coalesce-vars. Ini boleh membahayakan maklumat nyahpepijat sedemikian
pembolehubah sebaris, tetapi ia mengekalkan pembolehubah fungsi sebaris ke selain daripada setiap
lain, supaya mereka lebih berkemungkinan mengandungi nilai yang dijangkakan dalam penyahpepijatan
sesi.

-ftree-coalesce-vars
Beritahu pas copyrename (lihat -ftree-copyrename) untuk cuba menggabungkan pengguna kecil-
pembolehubah yang ditentukan juga, bukannya hanya pengkompil sementara. Ini mungkin mengehadkan dengan teruk
keupayaan untuk menyahpepijat atur cara yang dioptimumkan yang disusun bersama -fno-var-tracking-assignments.
Dalam bentuk dinafikan, bendera ini menghalang penggabungan SSA bagi pembolehubah pengguna, termasuk
yang sebaris. Pilihan ini didayakan secara lalai.

-ftree-ter
Lakukan penggantian ekspresi sementara semasa fasa SSA->normal. Bujang
kegunaan/definisi tunggal sementara digantikan di lokasi penggunaannya dengan penentuannya
ungkapan. Ini menghasilkan kod bukan GIMPLE, tetapi memberikan pengembang lebih banyak lagi
pokok kompleks untuk diusahakan menghasilkan penjanaan RTL yang lebih baik. Ini didayakan oleh
lalai pada -O dan lebih tinggi.

-ftree-slsr
Lakukan pengurangan kekuatan garis lurus pada pokok. Ini mengiktiraf berkaitan
ungkapan yang melibatkan pendaraban dan menggantikannya dengan pengiraan yang lebih murah
bila boleh. Ini didayakan secara lalai di -O dan lebih tinggi.

-free-vectorize
Lakukan vektorisasi pada pokok. Bendera ini membolehkan -free-loop-vectorize dan
-ftree-slp-vektorkan jika tidak dinyatakan secara jelas.

-free-loop-vectorize
Lakukan pengvektoran gelung pada pokok. Bendera ini didayakan secara lalai di -O3 dan bila
-free-vectorize Didayakan.

-ftree-slp-vektorkan
Lakukan pemvektoran blok asas pada pokok. Bendera ini didayakan secara lalai di -O3 dan
apabila -free-vectorize Didayakan.

-fvect-cost-model=model
Ubah model kos yang digunakan untuk pengvektoran. The model hujah harus menjadi salah satu daripada
tanpa had, dinamik or murah. Dengan tanpa had model laluan kod tervektor ialah
diandaikan menguntungkan semasa dengan dinamik model cek masa jalan mengawal
laluan kod vektor untuk membolehkannya hanya untuk kiraan lelaran yang mungkin akan dilaksanakan
lebih cepat daripada semasa melaksanakan gelung skalar asal. The murah model dilumpuhkan
pemvektoran gelung di mana berbuat demikian akan memakan kos yang tinggi contohnya disebabkan oleh
pemeriksaan masa jalan yang diperlukan untuk pergantungan atau penjajaran data tetapi sebaliknya adalah sama dengan
dinamik model. Model kos lalai bergantung pada bendera pengoptimuman lain dan adalah
sama ada dinamik or murah.

-fsimd-cost-model=model
Ubah model kos yang digunakan untuk vektorisasi gelung yang ditandakan dengan OpenMP atau Cilk
Ditambah arahan simd. The model hujah harus menjadi salah satu daripada tanpa had, dinamik, murah.
Semua nilai bagi model mempunyai makna yang sama seperti yang diterangkan dalam -model-kos-fvect dan oleh
lalai model kos yang ditakrifkan dengan -model-kos-fvect digunakan.

-ftree-vrp
Lakukan Pembiakan Julat Nilai pada pokok. Ini serupa dengan penyebaran berterusan
lulus, tetapi bukannya nilai, julat nilai disebarkan. Ini membolehkan
pengoptimum untuk mengalih keluar semakan julat yang tidak perlu seperti semakan terikat tatasusunan dan penuding nol
cek. Ini didayakan secara lalai di -O2 dan lebih tinggi. Penyingkiran semakan penuding nol
hanya dilakukan jika -fdelete-null-pointer-checks Didayakan.

-fsplit-ivs-in-unroller
Membolehkan ungkapan nilai pembolehubah aruhan dalam lelaran kemudiannya
gelung dibuka menggunakan nilai dalam lelaran pertama. Ini memecahkan pergantungan yang lama
rantaian, sekali gus meningkatkan kecekapan pas penjadualan.

Gabungan -fweb dan CSE selalunya mencukupi untuk mendapatkan kesan yang sama.
Walau bagaimanapun, itu tidak boleh dipercayai dalam kes di mana badan gelung lebih rumit daripada a
blok asas tunggal. Ia juga tidak berfungsi sama sekali pada beberapa seni bina kerana
sekatan dalam pas CSE.

Pengoptimuman ini didayakan secara lalai.

-fvariable-expansion-in-unroller
Dengan pilihan ini, pengkompil mencipta beberapa salinan beberapa pembolehubah tempatan apabila
membuka gelung, yang boleh menghasilkan kod unggul.

-fpartial-inlining
Bahagian sebaris fungsi. Pilihan ini mempunyai apa-apa kesan hanya apabila inlining sendiri
dihidupkan oleh -finline-fungsi or -finline-kecil-fungsi pilihan.

Didayakan pada tahap -O2.

-fpredictive-commoning
Lakukan pengoptimuman penyatuan ramalan, iaitu, menggunakan semula pengiraan (terutamanya
beban memori dan stor) dilakukan dalam lelaran gelung sebelumnya.

Pilihan ini didayakan pada tahap -O3.

-fprefetch-loop-arrays
Jika disokong oleh mesin sasaran, hasilkan arahan untuk mengambil semula memori
meningkatkan prestasi gelung yang mengakses tatasusunan besar.

Pilihan ini mungkin menjana kod yang lebih baik atau lebih teruk; keputusan sangat bergantung kepada
struktur gelung dalam kod sumber.

Dilumpuhkan pada tahap -Os.

-fno-lubang intip
-fno-lubang intip2
Lumpuhkan sebarang pengoptimuman lubang intip khusus mesin. Perbezaan antara
-fno-lubang intip dan -fno-lubang intip2 adalah bagaimana ia dilaksanakan dalam pengkompil; beberapa
sasaran menggunakan satu, ada yang menggunakan yang lain, beberapa menggunakan kedua-duanya.

-lubang depan didayakan secara lalai. -fpeephole2 didayakan pada tahap -O2, -O3, -Os.

-fno-guess-cawangan-kebarangkalian
Jangan meneka kebarangkalian cawangan menggunakan heuristik.

GCC menggunakan heuristik untuk meneka kebarangkalian cawangan jika ia tidak disediakan oleh
maklum balas profil (-fprofile-arka). Heuristik ini adalah berdasarkan aliran kawalan
graf. Jika beberapa kebarangkalian cawangan ditentukan oleh "__builtin_expect", maka
heuristik digunakan untuk meneka kebarangkalian cabang bagi aliran kawalan yang lain
graf, dengan mengambil kira maklumat "__builtin_expect". Interaksi antara
heuristik dan "__builtin_expect" boleh menjadi rumit, dan dalam beberapa kes, ia mungkin berguna
untuk melumpuhkan heuristik supaya kesan "__builtin_expect" lebih mudah untuk
faham.

Lalai adalah -fguess-cawangan-kebarangkalian pada peringkat -O, -O2, -O3, -Os.

-sekatan-freorder
Susun semula blok asas dalam fungsi yang disusun untuk mengurangkan bilangan yang diambil
cawangan dan meningkatkan lokaliti kod.

Didayakan pada tahap -O2, -O3.

-freorder-blok-dan-sekat
Selain menyusun semula blok asas dalam fungsi yang disusun, untuk mengurangkan
bilangan cawangan yang diambil, sekatan blok asas panas dan sejuk kepada bahagian yang berasingan
pemasangan dan fail .o, untuk meningkatkan prestasi kelokal halaman dan cache.

Pengoptimuman ini dimatikan secara automatik dengan adanya pengendalian pengecualian,
untuk bahagian pautan sekali, untuk fungsi dengan atribut bahagian yang ditentukan pengguna dan pada mana-mana
seni bina yang tidak menyokong bahagian bernama.

Didayakan untuk x86 pada tahap -O2, -O3.

-freorder-fungsi
Susun semula fungsi dalam fail objek untuk meningkatkan lokaliti kod. Ini adalah
dilaksanakan dengan menggunakan subseksyen khas ".text.hot" untuk yang paling kerap dilaksanakan
fungsi dan ".text.unlikely" untuk fungsi yang tidak mungkin dilaksanakan. Penyusunan semula dilakukan oleh
pemaut jadi format fail objek mesti menyokong bahagian bernama dan pemaut mesti diletakkan
mereka dengan cara yang munasabah.

Maklum balas profil juga mesti tersedia untuk menjadikan pilihan ini berkesan. Lihat
-fprofile-arka untuk maklumat lanjut.

Didayakan pada tahap -O2, -O3, -Os.

-fstrict-aliasing
Benarkan pengkompil untuk mengambil alih peraturan aliasing yang paling ketat yang digunakan untuk bahasa tersebut
sedang disusun. Untuk C (dan C++), ini mengaktifkan pengoptimuman berdasarkan jenis
ungkapan. Khususnya, objek daripada satu jenis diandaikan tidak pernah tinggal di
alamat yang sama sebagai objek daripada jenis yang berbeza, melainkan jenisnya hampir sama.
Contohnya, "int tidak ditandatangani" boleh alias "int", tetapi bukan "void*" atau "double". A
jenis aksara boleh alias mana-mana jenis lain.

Beri perhatian khusus kepada kod seperti ini:

union a_union {
int i;
d ganda;
};

int f() {
kesatuan a_kesatuan t;
td = 3.0;
pulangkan ti;
}

Amalan membaca daripada ahli kesatuan yang berbeza daripada yang terbaru
ditulis kepada (dipanggil "type-punning") adalah perkara biasa. Walaupun dengan -fstrict-aliasing, taip-
punning dibenarkan, dengan syarat memori diakses melalui jenis kesatuan. Jadi
kod di atas berfungsi seperti yang diharapkan. Walau bagaimanapun, kod ini mungkin tidak:

int f() {
kesatuan a_kesatuan t;
int* ip;
td = 3.0;
ip = &t.i;
pulangkan *ip;
}

Begitu juga, akses dengan mengambil alamat, menghantar penunjuk yang terhasil dan
membatalkan rujukan keputusan mempunyai gelagat yang tidak ditentukan, walaupun pelakon menggunakan jenis kesatuan,
cth:

int f() {
d ganda = 3.0;
pulangkan ((kesatuan_kesatuan *) &d)->i;
}

. -fstrict-aliasing pilihan didayakan pada tahap -O2, -O3, -Os.

-fstrict-overflow
Benarkan pengkompil mengambil peraturan limpahan yang ditandatangani yang ketat, bergantung pada bahasa
sedang disusun. Untuk C (dan C++) ini bermakna limpahan apabila melakukan aritmetik dengan
nombor yang ditandatangani tidak ditentukan, yang bermaksud bahawa pengkompil mungkin menganggap bahawa ia tidak
berlaku. Ini membenarkan pelbagai pengoptimuman. Sebagai contoh, pengkompil menganggap bahawa
ungkapan seperti "i + 10 > i" sentiasa benar untuk "i" yang ditandatangani. Andaian ini adalah
hanya sah jika limpahan yang ditandatangani tidak ditentukan, kerana ungkapan itu palsu jika "i + 10"
melimpah apabila menggunakan aritmetik pelengkap dua-dua. Apabila pilihan ini berkuat kuasa mana-mana
cuba untuk menentukan sama ada operasi pada limpahan nombor yang ditandatangani mesti ditulis
berhati-hati untuk tidak benar-benar melibatkan limpahan.

Pilihan ini juga membenarkan pengkompil untuk menganggap semantik penunjuk yang ketat: diberikan a
penunjuk ke objek, jika menambah offset pada penunjuk itu tidak menghasilkan penunjuk
kepada objek yang sama, penambahan tidak ditentukan. Ini membenarkan pengkompil untuk membuat kesimpulan
bahawa "p + u > p" sentiasa benar untuk penunjuk "p" dan integer tidak bertanda "u". ini
andaian hanya sah kerana salutan penunjuk tidak ditentukan, sebagaimana ungkapan itu
palsu jika "p + u" melimpah menggunakan aritmetik pelengkap dua.

Lihat juga -fwrapv pilihan. menggunakan -fwrapv bermakna limpahan bertanda integer ialah
ditakrifkan sepenuhnya: ia membungkus. Bila -fwrapv digunakan, tidak ada perbezaan antara
-fstrict-overflow dan -fno-strict-overflow untuk integer. Dengan -fwrapv jenis tertentu
limpahan adalah dibenarkan. Sebagai contoh, jika pengkompil mendapat limpahan apabila melakukan
aritmetik pada pemalar, nilai limpahan masih boleh digunakan dengan -fwrapv, Tetapi tidak
sebaliknya.

. -fstrict-overflow pilihan didayakan pada tahap -O2, -O3, -Os.

-Falign-fungsi
-Falign-functions=n
Jajarkan permulaan fungsi kepada kuasa dua seterusnya yang lebih besar daripada n, melangkau sehingga n
bait. Sebagai contoh, -falign-functions=32 menjajarkan fungsi kepada 32-bait seterusnya
sempadan, tetapi -falign-functions=24 menjajarkan ke sempadan 32-bait seterusnya hanya jika ini
boleh dilakukan dengan melangkau 23 bait atau kurang.

-fno-align-functions dan -falign-functions=1 adalah setara dan bermakna yang berfungsi
tidak sejajar.

Sesetengah pemasang hanya menyokong bendera ini apabila n adalah kuasa dua; dalam kes itu, ia adalah
dibundarkan.

If n tidak dinyatakan atau sifar, gunakan lalai yang bergantung kepada mesin.

Didayakan pada tahap -O2, -O3.

-label-falign
-falign-labels=n
Jajarkan semua sasaran cawangan ke sempadan kuasa dua, langkau sehingga n bait seperti
-Falign-fungsi. Pilihan ini boleh membuat kod lebih perlahan dengan mudah, kerana ia mesti dimasukkan
operasi dummy apabila sasaran cawangan dicapai dalam aliran biasa kod.

-fno-align-labels dan -falign-labels=1 adalah setara dan bermakna bahawa label tidak
sejajar.

If -falign-gelung or -falign-melompat adalah terpakai dan lebih besar daripada nilai ini, maka
nilai mereka digunakan sebaliknya.

If n tidak dinyatakan atau sifar, gunakan lalai bergantung kepada mesin yang berkemungkinan besar
menjadi 1, bermakna tiada penjajaran.

Didayakan pada tahap -O2, -O3.

-falign-gelung
-falign-gelung=n
Jajarkan gelung ke sempadan kuasa dua, langkau sehingga n bait seperti -Falign-fungsi.
Jika gelung dilaksanakan berkali-kali, ini menggantikan sebarang pelaksanaan dummy
operasi.

-fno-align-gelung dan -falign-loops=1 adalah setara dan bermakna gelung tidak
sejajar.

If n tidak dinyatakan atau sifar, gunakan lalai yang bergantung kepada mesin.

Didayakan pada tahap -O2, -O3.

-falign-melompat
-falign-lompat=n
Jajarkan sasaran cawangan kepada sempadan kuasa dua, untuk sasaran cawangan di mana sasaran
hanya boleh dicapai dengan melompat, melompat sehingga n bait seperti -Falign-fungsi. dalam
kes ini, tiada operasi tiruan perlu dilaksanakan.

-fno-align-lompat dan -falign-jumps=1 adalah setara dan bermakna gelung tidak
sejajar.

If n tidak dinyatakan atau sifar, gunakan lalai yang bergantung kepada mesin.

Didayakan pada tahap -O2, -O3.

-funit-at-a-time
Pilihan ini dibiarkan atas sebab keserasian. -funit-at-a-time tidak mempunyai kesan, manakala
-fno-unit-pada-satu-masa bererti -fno-toplevel-reorder dan -fno-bahagian-sauh.

Diaktifkan secara lalai.

-fno-toplevel-reorder
Jangan susun semula fungsi peringkat atas, pembolehubah dan pernyataan "asm". Keluarkan mereka masuk
susunan yang sama yang ia muncul dalam fail input. Apabila pilihan ini digunakan,
pembolehubah statik yang tidak dirujuk tidak dialih keluar. Pilihan ini bertujuan untuk menyokong
kod sedia ada yang bergantung pada susunan tertentu. Untuk kod baru, lebih baik digunakan
atribut apabila boleh.

Didayakan pada tahap -O0. Apabila dilumpuhkan secara eksplisit, ia juga membayangkan -fno-bahagian-sauh,
yang sebaliknya didayakan pada -O0 pada beberapa sasaran.

-fweb
Membina web seperti yang biasa digunakan untuk tujuan daftar peruntukan dan menetapkan setiap web
daftar pseudo individu. Ini membolehkan pas peruntukan daftar beroperasi
pseudos secara langsung, tetapi juga mengukuhkan beberapa pas pengoptimuman lain, seperti CSE,
pengoptimum gelung dan penyingkiran kod mati yang remeh. Walau bagaimanapun, ia boleh membuat penyahpepijatan
mustahil, kerana pembolehubah tidak lagi kekal dalam "daftar rumah".

Didayakan secara lalai dengan -funroll-gelung.

-fwhole-program
Andaikan bahawa unit kompilasi semasa mewakili keseluruhan program yang sedang disusun.
Semua fungsi awam dan pembolehubah dengan pengecualian "utama" dan yang digabungkan oleh
atribut "externally_visible" menjadi fungsi statik dan berkuat kuasa dioptimumkan
lebih agresif oleh pengoptimum antara prosedur.

Pilihan ini tidak boleh digunakan dalam kombinasi dengan -flto. Sebaliknya bergantung pada penghubung
pemalam harus memberikan maklumat yang lebih selamat dan lebih tepat.

-flto[=n]
Pilihan ini menjalankan pengoptimum masa pautan standard. Apabila dipanggil dengan kod sumber, ia
menjana GIMPLE (salah satu perwakilan dalaman GCC) dan menulisnya kepada ELF khas
bahagian dalam fail objek. Apabila fail objek dipautkan bersama, semua fail
badan fungsi dibaca dari bahagian ELF ini dan dibuat instantiated seolah-olah ia telah
sebahagian daripada unit terjemahan yang sama.

Untuk menggunakan pengoptimum masa pautan, -flto dan pilihan pengoptimuman hendaklah dinyatakan di
masa menyusun dan semasa pautan akhir. Sebagai contoh:

gcc -c -O2 -flto foo.c
gcc -c -O2 -flto bar.c
gcc -o myprog -flto -O2 foo.o bar.o

Dua seruan pertama kepada GCC menyimpan perwakilan kod bait GIMPLE ke dalam khas
Bahagian ELF di dalam foo.o dan bar.o. Doa akhir membaca kod bait GIMPLE
dari foo.o dan bar.o, menggabungkan kedua-dua fail ke dalam imej dalaman tunggal, dan menyusun
hasilnya seperti biasa. Sejak kedua-duanya foo.o dan bar.o digabungkan menjadi satu imej, ini
menyebabkan semua analisis dan pengoptimuman antara prosedur dalam GCC berfungsi merentasi
dua fail seolah-olah ia adalah satu. Ini bermakna, sebagai contoh, bahawa inliner adalah
dapat menyelaraskan fungsi dalam bar.o ke dalam fungsi dalam foo.o dan begitu juga sebaliknya.

Satu lagi cara (lebih mudah) untuk mendayakan pengoptimuman masa pautan ialah:

gcc -o myprog -flto -O2 foo.c bar.c

Di atas menjana bytecode untuk foo.c dan bar.c, menggabungkan mereka menjadi satu
Perwakilan GIMPLE dan mengoptimumkannya seperti biasa untuk dihasilkan myprog.

Satu-satunya perkara penting yang perlu diingat ialah untuk membolehkan anda pengoptimuman masa pautan
perlu menggunakan pemacu GCC untuk melaksanakan langkah pautan. GCC kemudiannya berfungsi secara automatik
pengoptimuman masa pautan jika mana-mana objek yang terlibat telah disusun dengan -flto
pilihan baris arahan. Anda biasanya harus menentukan pilihan pengoptimuman yang akan digunakan
untuk pengoptimuman masa pautan walaupun GCC cuba menjadi bijak meneka pengoptimuman
tahap untuk digunakan daripada pilihan yang digunakan pada masa penyusunan jika anda gagal untuk menentukan satu di pautan-
masa. Anda sentiasa boleh mengatasi keputusan automatik untuk melakukan pengoptimuman masa pautan di
pautan-masa dengan berlalu -fno-lto kepada arahan pautan.

Untuk menjadikan pengoptimuman keseluruhan program berkesan, adalah perlu untuk membuat keseluruhan tertentu
andaian program. Pengkompil perlu mengetahui fungsi dan pembolehubah yang boleh
diakses oleh perpustakaan dan masa jalan di luar unit yang dioptimumkan masa pautan. Bila
disokong oleh pemaut, pemalam pemaut (lihat -pemalam-penyambung fius) lulus
maklumat kepada pengkompil tentang simbol yang digunakan dan boleh dilihat secara luaran. Apabila
pemalam pemaut tidak tersedia, -fwhole-program harus digunakan untuk membenarkan pengkompil
untuk membuat andaian ini, yang membawa kepada keputusan pengoptimuman yang lebih agresif.

Bila -pemalam-penyambung fius tidak didayakan kemudian, apabila fail disusun dengan -flto, yang
fail objek yang dijana adalah lebih besar daripada fail objek biasa kerana ia mengandungi GIMPLE
bytecode dan kod akhir biasa (lihat -ffat-lto-objek. Ini bermakna objek itu
fail dengan maklumat LTO boleh dipautkan sebagai fail objek biasa; jika -fno-lto dilalui
kepada pemaut, tiada pengoptimuman antara prosedur digunakan. Perhatikan bahawa apabila
-fno-fat-lto-objek didayakan peringkat penyusunan adalah lebih pantas tetapi anda tidak boleh melakukan a
pautan biasa, bukan LTO pada mereka.

Selain itu, bendera pengoptimuman yang digunakan untuk menyusun fail individu tidak
semestinya berkaitan dengan yang digunakan pada masa pautan. Sebagai contoh,

gcc -c -O0 -ffat-lto-objek -flto foo.c
gcc -c -O0 -ffat-lto-objek -flto bar.c
gcc -o myprog -O3 foo.o bar.o

Ini menghasilkan fail objek individu dengan kod pemasang yang tidak dioptimumkan, tetapi
binari terhasil myprog dioptimumkan pada -O3. Jika, sebaliknya, perduaan akhir ialah
dihasilkan dengan -fno-lto, Maka myprog tidak dioptimumkan.

Apabila menghasilkan perduaan akhir, GCC hanya menggunakan pengoptimuman masa pautan kepada mereka
fail yang mengandungi bytecode. Oleh itu, anda boleh mencampur dan memadankan fail objek dan
perpustakaan dengan kod bait GIMPLE dan kod objek akhir. GCC memilih secara automatik
fail mana yang hendak dioptimumkan dalam mod LTO dan fail mana yang hendak dipautkan tanpa lebih lanjut
pemprosesan.

Terdapat beberapa bendera penjanaan kod yang dipelihara oleh GCC semasa menjana kod bait, sebagai
ia perlu digunakan semasa peringkat pautan akhir. Umumnya pilihan dinyatakan di
masa pautan mengatasi yang ditentukan pada masa penyusunan.

Jika anda tidak menentukan pilihan tahap pengoptimuman -O pada masa pautan kemudian GCC mengira
satu berdasarkan tahap pengoptimuman yang digunakan semasa menyusun fail objek. The
tahap pengoptimuman tertinggi menang di sini.

Pada masa ini, pilihan berikut dan tetapannya diambil daripada fail objek pertama
yang menyatakannya dengan jelas: -fPIC, -fpic, -fpie, -fbiasa, -pengecualian,
-fnon-panggilan-pengecualian, -fgnu-tm dan semua -m bendera sasaran.

Bendera penukaran ABI tertentu diperlukan untuk dipadankan dalam semua unit kompilasi dan percubaan
untuk mengatasi ini pada masa pautan dengan nilai yang bercanggah diabaikan. Ini termasuk
pilihan seperti -freg-struct-return dan -fpcc-struct-return.

Pilihan lain seperti -ffp-kontrak, -fno-strict-overflow, -fwrapv, -fno-trapv or
-fno-strict-aliasing diteruskan ke peringkat pautan dan digabungkan secara konservatif
untuk unit terjemahan yang bercanggah. Secara khusus -fno-strict-overflow, -fwrapv dan
-fno-trapv diutamakan dan contohnya -ffp-contract=off diutamakan
-ffp-contract=cepat. Anda boleh mengatasinya pada masa pautan.

Adalah disyorkan agar anda menyusun semua fail yang mengambil bahagian dalam pautan yang sama dengan
pilihan yang sama dan juga menentukan pilihan tersebut pada masa pautan.

Jika LTO menemui objek dengan kaitan C yang diisytiharkan dengan jenis tidak serasi secara berasingan
unit terjemahan untuk dihubungkan bersama (tingkah laku tidak ditentukan mengikut ISO C99
6.2.7), diagnostik tidak membawa maut boleh dikeluarkan. Tingkah laku masih tidak ditentukan semasa larian
masa. Diagnostik yang serupa mungkin dibangkitkan untuk bahasa lain.

Satu lagi ciri LTO ialah kemungkinan untuk menggunakan pengoptimuman antara prosedur
pada fail yang ditulis dalam bahasa yang berbeza:

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

Perhatikan bahawa pautan terakhir telah selesai dengan g ++ untuk mendapatkan perpustakaan runtime C++ dan
-lgfortran ditambahkan untuk mendapatkan perpustakaan masa jalan Fortran. Secara umum, apabila mencampurkan
bahasa dalam mod LTO, anda harus menggunakan pilihan arahan pautan yang sama seperti semasa mencampurkan
bahasa dalam kompilasi biasa (bukan LTO).

Jika fail objek yang mengandungi kod bait GIMPLE disimpan dalam arkib perpustakaan, katakan
libfoo.a, adalah mungkin untuk mengekstrak dan menggunakannya dalam pautan LTO jika anda menggunakan a
pemaut dengan sokongan pemalam. Untuk mencipta perpustakaan statik yang sesuai untuk LTO, gunakan gcc-ar
dan gcc-ranlib bukan ar dan ranlib; untuk menunjukkan simbol fail objek dengan
GIMPLE bytecode, gunakan gcc-nm. Perintah itu memerlukannya ar, ranlib dan nm telah
disusun dengan sokongan pemalam. Pada masa pautan, gunakan bendera -pemalam-penyambung fius kepada
memastikan perpustakaan mengambil bahagian dalam proses pengoptimuman LTO:

gcc -o myprog -O2 -flto -fuse-linker-plugin ao bo -lfoo

Dengan pemalam pemaut didayakan, pemaut mengekstrak fail GIMPLE yang diperlukan daripada
libfoo.a dan menyerahkannya kepada GCC yang sedang berjalan untuk menjadikannya sebahagian daripada agregat
Imej GIMPLE untuk dioptimumkan.

Jika anda tidak menggunakan pemaut dengan sokongan pemalam dan/atau tidak mendayakan pemaut
pemalam, kemudian objek di dalamnya libfoo.a diekstrak dan dipautkan seperti biasa, tetapi mereka
tidak mengambil bahagian dalam proses pengoptimuman LTO. Untuk membuat perpustakaan statik
sesuai untuk pengoptimuman LTO dan pautan biasa, susun fail objeknya dengan
-flto -ffat-lto-objek.

Pengoptimuman masa pautan tidak memerlukan kehadiran keseluruhan program untuk beroperasi.
Jika program tidak memerlukan sebarang simbol untuk dieksport, adalah mungkin untuk digabungkan
-flto dan -fwhole-program untuk membolehkan pengoptimum antara prosedur menggunakan lebih banyak
andaian agresif yang boleh membawa kepada peluang pengoptimuman yang lebih baik. Penggunaan
-fwhole-program tidak diperlukan apabila pemalam pemaut aktif (lihat -pemalam-penyambung fius).

Pelaksanaan semasa LTO tidak membuat percubaan untuk menjana bytecode iaitu
mudah alih antara pelbagai jenis hos. Fail bytecode adalah versi dan ada
ialah semakan versi yang ketat, jadi fail bytecode yang dijana dalam satu versi GCC tidak
bekerja dengan versi GCC yang lebih lama atau lebih baharu.

Pengoptimuman masa pautan tidak berfungsi dengan baik dengan penjanaan maklumat nyahpepijat.
Menggabungkan -flto dengan -g sedang percubaan dan dijangka menghasilkan yang tidak dijangka
keputusan.

Jika anda nyatakan pilihan n, pengoptimuman dan penjanaan kod yang dilakukan pada masa pautan
dilaksanakan secara selari menggunakan n kerja selari dengan menggunakan yang dipasang membuat program.
Pembolehubah persekitaran JADIKAN boleh digunakan untuk mengatasi program yang digunakan. lalai
nilai untuk n adalah 1.

Anda juga boleh menentukan -flto=pelayan untuk menggunakan mod pelayan kerja GNU make untuk menentukan
bilangan pekerjaan selari. Ini berguna apabila Makefile memanggil GCC sudah ada
melaksanakan secara selari. Anda mesti menyediakan a + kepada resipi arahan dalam induk
Makefile untuk ini berfungsi. Pilihan ini mungkin hanya berfungsi jika JADIKAN adalah buatan GNU.

-flto-partition=alga
Tentukan algoritma pembahagian yang digunakan oleh pengoptimum masa pautan. Nilainya ialah
sama ada 1to1 untuk menentukan pembahagian yang mencerminkan fail sumber asal atau seimbang
untuk menentukan pembahagian kepada ketulan yang sama saiz (bila boleh) atau maks untuk mewujudkan
partition baharu untuk setiap simbol jika boleh. Menentukan tiada sebagai algoritma
melumpuhkan pembahagian dan penstriman sepenuhnya. Nilai lalai ialah seimbang. Walaupun
1to1 boleh digunakan sebagai penyelesaian untuk pelbagai isu pesanan kod, the maks
pembahagian adalah bertujuan untuk ujian dalaman sahaja. Nilai 1 menyatakan bahawa
tepat satu partition harus digunakan manakala nilai tiada memintas pembahagian dan
melaksanakan langkah pengoptimuman masa pautan terus daripada fasa WPA.

-flto-odr-type-cantuman
Dayakan penstriman nama jenis rosak bagi jenis C++ dan penyatuannya di
masa pautan. Ini meningkatkan saiz fail objek LTO, tetapi mendayakan diagnostik tentang One
Pelanggaran Peraturan Definisi.

-flto-compression-level=n
Pilihan ini menentukan tahap pemampatan yang digunakan untuk bahasa perantaraan yang ditulis
kepada fail objek LTO, dan hanya bermakna bersama dengan mod LTO (-flto).
Nilai yang sah ialah 0 (tiada mampatan) hingga 9 (mampatan maksimum). Nilai di luar ini
julat diapit sama ada 0 atau 9. Jika pilihan tidak diberikan, lalai seimbang
tetapan mampatan digunakan.

-flto-laporan
Mencetak laporan dengan butiran dalaman tentang cara kerja pengoptimum masa pautan. The
kandungan laporan ini berbeza dari versi ke versi. Ia bertujuan untuk berguna kepada GCC
pembangun apabila memproses fail objek dalam mod LTO (melalui -flto).

Dinyahaktifkan secara lalai.

-flto-report-wpa
suka -flto-laporan, tetapi hanya mencetak untuk fasa WPA Pengoptimuman Masa Pautan.

-pemalam-penyambung fius
Membolehkan penggunaan pemalam pemaut semasa pengoptimuman masa pautan. Pilihan ini bergantung
pada sokongan pemalam dalam pemaut, yang tersedia dalam emas atau dalam GNU ld 2.21 atau
lebih baru.

Pilihan ini membolehkan pengekstrakan fail objek dengan kod bait GIMPLE daripada perpustakaan
arkib. Ini meningkatkan kualiti pengoptimuman dengan mendedahkan lebih banyak kod kepada pautan-
pengoptimum masa. Maklumat ini menentukan simbol yang boleh diakses secara luaran
(oleh objek bukan LTO atau semasa pemautan dinamik). Menghasilkan peningkatan kualiti kod pada
binari (dan perpustakaan kongsi yang menggunakan keterlihatan tersembunyi) adalah serupa dengan
-fwhole-program. Lihat -flto untuk penerangan tentang kesan bendera ini dan bagaimana untuk
gunakannya.

Pilihan ini didayakan secara lalai apabila sokongan LTO dalam GCC didayakan dan GCC telah didayakan
dikonfigurasikan untuk digunakan dengan pemalam yang menyokong pemaut (GNU ld 2.21 atau lebih baru atau emas).

-ffat-lto-objek
Objek LTO gemuk ialah fail objek yang mengandungi kedua-dua bahasa perantaraan dan
kod objek. Ini menjadikan mereka boleh digunakan untuk kedua-dua pemautan LTO dan pemautan biasa. ini
pilihan hanya berkesan apabila menyusun dengan -flto dan diabaikan pada masa pautan.

-fno-fat-lto-objek menambah baik masa penyusunan berbanding LTO biasa, tetapi memerlukan
rangkaian alat lengkap untuk mengetahui tentang LTO. Ia memerlukan pemaut dengan sokongan pemalam pemaut
untuk fungsi asas. Selain itu, nm, ar dan ranlib perlu menyokong penghubung
pemalam untuk membenarkan persekitaran binaan berciri penuh (mampu membina statik
perpustakaan dll). GCC menyediakan gcc-ar, gcc-nm, gcc-ranlib pembungkus untuk lulus
pilihan yang tepat untuk alat ini. Dengan makefiles LTO bukan lemak perlu diubah suai untuk digunakan
Mereka.

Lalai adalah -fno-fat-lto-objek pada sasaran dengan sokongan pemalam pemaut.

-fcompare-elim
Selepas pembahagian peruntukan daftar dan pembahagian arahan peruntukan selepas pendaftaran, kenal pasti
arahan aritmetik yang mengira bendera pemproses yang serupa dengan operasi perbandingan
berdasarkan aritmetik tersebut. Jika boleh, hapuskan operasi perbandingan eksplisit.

Pas ini hanya terpakai kepada sasaran tertentu yang tidak boleh mewakili secara eksplisit
operasi perbandingan sebelum peruntukan daftar selesai.

Didayakan pada tahap -O, -O2, -O3, -Os.

-fcprop-mendaftar
Selepas pembahagian peruntukan daftar dan pembahagian arahan peruntukan selepas pendaftaran, lakukan
pas penyebaran salinan untuk cuba mengurangkan kebergantungan penjadualan dan sekali-sekala
menghapuskan salinan.

Didayakan pada tahap -O, -O2, -O3, -Os.

-fprofile-pembetulan
Profil yang dikumpul menggunakan binari berinstrumen untuk program berbilang benang mungkin
tidak konsisten kerana terlepas kemas kini kaunter. Apabila pilihan ini ditentukan, GCC menggunakan
heuristik untuk membetulkan atau melicinkan ketidakkonsistenan tersebut. Secara lalai, GCC mengeluarkan an
mesej ralat apabila profil yang tidak konsisten dikesan.

-fprofile-dir=jalan
Tetapkan direktori untuk mencari fail data profil ke dalamnya jalan. Pilihan ini
hanya mempengaruhi data profil yang dijana oleh -fprofile-jana, -perlindungan-ftest,
-fprofile-arka dan digunakan oleh -fprofile-penggunaan dan -fbranch-kebarangkalian dan yang berkaitan dengannya
pilihan. Kedua-dua laluan mutlak dan relatif boleh digunakan. Secara lalai, GCC menggunakan
direktori semasa sebagai jalan, oleh itu fail data profil muncul dalam direktori yang sama seperti
fail objek.

-fprofile-jana
-fprofile-generate=jalan
Dayakan pilihan yang biasanya digunakan untuk aplikasi instrumen untuk menghasilkan profil yang berguna
untuk penyusunan semula kemudian dengan pengoptimuman berasaskan maklum balas profil. Anda mesti menggunakan
-fprofile-jana kedua-dua semasa menyusun dan semasa memautkan program anda.

Pilihan berikut didayakan: -fprofile-arka, -nilai-fprofile, -fvpt.

If jalan ditentukan, GCC melihat pada jalan untuk mencari fail data maklum balas profil.
Lihat -fprofile-dir.

-fprofile-penggunaan
-fprofile-use=jalan
Dayakan pengoptimuman terarah maklum balas profil dan pengoptimuman berikut yang
biasanya hanya menguntungkan dengan maklum balas profil tersedia: -fbranch-kebarangkalian,
-fvpt, -funroll-gelung, -fpeel-gelung, -ftracer, -free-vectorize, dan gelung ftree-
mengedar-corak.

Secara lalai, GCC mengeluarkan mesej ralat jika profil maklum balas tidak sepadan dengan
kod sumber. Ralat ini boleh ditukar menjadi amaran dengan menggunakan -Wliputan-tidak sepadan.
Harap maklum bahawa ini mungkin mengakibatkan kod yang tidak dioptimumkan dengan baik.

If jalan ditentukan, GCC melihat pada jalan untuk mencari fail data maklum balas profil.
Lihat -fprofile-dir.

-fauto-profil
-fauto-profile=jalan
Dayakan pengoptimuman berasaskan maklum balas berasaskan pensampelan, dan pengoptimuman berikut
yang biasanya menguntungkan hanya dengan maklum balas profil tersedia:
-fbranch-kebarangkalian, -fvpt, -funroll-gelung, -fpeel-gelung, -ftracer,
-free-vectorize, -finline-fungsi, -fipa-cp, -fipa-cp-clone,
-fpredictive-commoning, -funswitch-gelung, -fgcse-selepas-muat semula, dan
-corak-edar-gelung-ftree.

jalan ialah nama fail yang mengandungi maklumat profil AutoFDO. Jika ditinggalkan, ia
lalai kepada fbdata.afdo dalam direktori semasa.

Menghasilkan fail data profil AutoFDO memerlukan menjalankan program anda dengan perf
utiliti pada sistem sasaran GNU/Linux yang disokong. Untuk maklumat lanjut, lihat
<https://perf.wiki.kernel.org/>.

Contohnya

rekod perf -e br_inst_retired:near_taken -b -o perf.data \
-- program_anda

Kemudian gunakan create_gcov alat untuk menukar data profil mentah kepada format yang boleh
digunakan oleh GCC. Anda juga mesti membekalkan binari yang tidak dilucutkan untuk program anda kepada ini
alat. Lihathttps://github.com/google/autofdo>.

Contohnya

create_gcov --binary=your_program.unstripped --profile=perf.data \
--gcov=profile.afdo

Pilihan berikut mengawal tingkah laku pengkompil berkenaan aritmetik titik terapung.
Pilihan ini bertukar antara kelajuan dan ketepatan. Semua mesti didayakan secara khusus.

-kedai terapung
Jangan simpan pembolehubah titik terapung dalam daftar, dan menghalang pilihan lain yang
mungkin berubah sama ada nilai titik terapung diambil daripada daftar atau memori.

Pilihan ini menghalang ketepatan berlebihan yang tidak diingini pada mesin seperti 68000 di mana
daftar terapung (daripada 68881) menyimpan lebih ketepatan daripada "berganda" yang sepatutnya
untuk mempunyai. Begitu juga untuk seni bina x86. Bagi kebanyakan program, lebihan ketepatan
hanya berfungsi dengan baik, tetapi beberapa program bergantung pada takrifan tepat IEEE terapung
titik. guna -kedai terapung untuk program sedemikian, selepas mengubah suainya untuk menyimpan semua
pengiraan perantaraan yang berkaitan kepada pembolehubah.

-fexcess-precision=gaya
Pilihan ini membolehkan kawalan lanjut ke atas ketepatan berlebihan pada mesin di mana terapung-
daftar titik mempunyai lebih ketepatan daripada jenis "float" dan "double" IEEE dan
pemproses tidak menyokong operasi pembundaran kepada jenis tersebut. Secara lalai,
-fexcess-precision=cepat sedang berkuat kuasa; ini bermakna bahawa operasi dijalankan dalam
ketepatan daftar dan ia tidak dapat diramalkan apabila dibundarkan kepada jenis
dinyatakan dalam kod sumber berlaku. Apabila menyusun C, jika
-fexcess-precision=standard ditentukan maka ketepatan berlebihan mengikut peraturan
dinyatakan dalam ISO C99; khususnya, kedua-dua pelakon dan tugasan menyebabkan nilai menjadi
dibundarkan kepada jenis semantiknya (sedangkan -kedai terapung hanya menjejaskan tugasan).
Pilihan ini didayakan secara lalai untuk C jika pilihan pematuhan yang ketat seperti
-std=c99 digunakan.

-fexcess-precision=standard tidak dilaksanakan untuk bahasa selain daripada C, dan tidak mempunyai
kesan jika -funsafe-math-optimizations or -fast-matematik dinyatakan. Pada x86, ia
juga tidak memberi kesan jika -mfpmath=sse or -mfpmath=sse+387 dinyatakan; dalam bekas
kes, semantik IEEE digunakan tanpa ketepatan yang berlebihan, dan dalam yang kedua, pembundaran ialah
tidak dapat diramalkan.

-fast-matematik
Menetapkan pilihan -fno-math-errno, -funsafe-math-optimizations, -finite-matematik sahaja,
-fno-rounding-math, -fno-signaling-nans dan -fcx-julat-terhad.

Pilihan ini menyebabkan makro prapemproses "__FAST_MATH__" ditakrifkan.

Pilihan ini tidak dihidupkan oleh mana-mana -O pilihan selain -Ofast kerana ia boleh mengakibatkan
output yang salah untuk program yang bergantung pada pelaksanaan tepat IEEE atau ISO
peraturan/spesifikasi untuk fungsi matematik. Ia mungkin, bagaimanapun, menghasilkan kod yang lebih pantas untuk
program yang tidak memerlukan jaminan spesifikasi ini.

-fno-math-errno
Jangan tetapkan "errno" selepas memanggil fungsi matematik yang dilaksanakan dengan satu
arahan, cth, "sqrt". Program yang bergantung pada pengecualian IEEE untuk ralat matematik
pengendalian mungkin mahu menggunakan bendera ini untuk kelajuan sambil mengekalkan aritmetik IEEE
keserasian.

Pilihan ini tidak dihidupkan oleh mana-mana -O pilihan kerana ia boleh mengakibatkan output yang salah
untuk program yang bergantung pada pelaksanaan tepat IEEE atau ISO
peraturan/spesifikasi untuk fungsi matematik. Ia mungkin, bagaimanapun, menghasilkan kod yang lebih pantas untuk
program yang tidak memerlukan jaminan spesifikasi ini.

Lalai adalah -fmath-errno.

Pada sistem Darwin, perpustakaan matematik tidak pernah menetapkan "errno". Oleh itu tidak ada sebab
untuk pengkompil untuk mempertimbangkan kemungkinan bahawa ia mungkin, dan -fno-math-errno adalah
lalai.

-funsafe-math-optimizations
Benarkan pengoptimuman untuk aritmetik titik terapung yang (a) menganggap bahawa hujah dan
keputusan adalah sah dan (b) mungkin melanggar piawaian IEEE atau ANSI. Apabila digunakan pada masa pautan,
ia mungkin termasuk perpustakaan atau fail permulaan yang menukar perkataan kawalan FPU lalai atau
pengoptimuman lain yang serupa.

Pilihan ini tidak dihidupkan oleh mana-mana -O pilihan kerana ia boleh mengakibatkan output yang salah
untuk program yang bergantung pada pelaksanaan tepat IEEE atau ISO
peraturan/spesifikasi untuk fungsi matematik. Ia mungkin, bagaimanapun, menghasilkan kod yang lebih pantas untuk
program yang tidak memerlukan jaminan spesifikasi ini. Membolehkan
-fno-signed-sifar, -fno-perangkap-matematik, -fasosiatif-matematik dan -freciprocal-matematik.

Lalai adalah -fno-unsafe-math-optimizations.

-fasosiatif-matematik
Benarkan pengaitan semula operan dalam siri operasi titik terapung. ini
melanggar standard bahasa ISO C dan C++ dengan kemungkinan mengubah hasil pengiraan.
NOTA: pesanan semula mungkin mengubah tanda sifar serta mengabaikan NaN dan menghalang atau
buat aliran bawah atau limpahan (dan oleh itu tidak boleh digunakan pada kod yang bergantung pada pembundaran
tingkah laku seperti "(x + 2**52) - 2**52". Boleh juga menyusun semula perbandingan titik terapung dan
oleh itu tidak boleh digunakan apabila perbandingan yang dipesan diperlukan. Pilihan ini memerlukan itu
kedua-dua -fno-signed-sifar dan -fno-perangkap-matematik berkuat kuasa. Lebih-lebih lagi, ia tidak membuat
banyak akal dengan -frounding-matematik. Untuk Fortran pilihan didayakan secara automatik apabila
kedua-dua -fno-signed-sifar dan -fno-perangkap-matematik sedang berkuat kuasa.

Lalai adalah -fno-asosiatif-matematik.

-freciprocal-matematik
Benarkan salingan nilai digunakan dan bukannya membahagikan dengan nilai jika ini
membolehkan pengoptimuman. Contohnya "x / y" boleh digantikan dengan "x * (1/y)", iaitu
berguna jika "(1/y)" tertakluk kepada penghapusan subungkapan biasa. Perhatikan bahawa ini
kehilangan ketepatan dan meningkatkan bilangan flop yang beroperasi pada nilai.

Lalai adalah -fno-reciprocal-math.

-finite-matematik sahaja
Benarkan pengoptimuman untuk aritmetik titik terapung yang menganggap bahawa hujah dan
keputusan bukan NaNs atau +-Infs.

Pilihan ini tidak dihidupkan oleh mana-mana -O pilihan kerana ia boleh mengakibatkan output yang salah
untuk program yang bergantung pada pelaksanaan tepat IEEE atau ISO
peraturan/spesifikasi untuk fungsi matematik. Ia mungkin, bagaimanapun, menghasilkan kod yang lebih pantas untuk
program yang tidak memerlukan jaminan spesifikasi ini.

Lalai adalah -fno-finite-math-sahaja.

-fno-signed-sifar
Benarkan pengoptimuman untuk aritmetik titik terapung yang mengabaikan tanda sifar.
Aritmetik IEEE menentukan kelakuan nilai +0.0 dan -0.0 yang berbeza, yang kemudiannya
melarang penyederhanaan ungkapan seperti x+0.0 atau 0.0*x (walaupun dengan
-finite-matematik sahaja). Pilihan ini menunjukkan bahawa tanda hasil sifar tidak
penting.

Lalai adalah -fsigned-sifar.

-fno-perangkap-matematik
Susun kod dengan mengandaikan bahawa operasi titik terapung tidak dapat menjana kelihatan pengguna
perangkap. Perangkap ini termasuk pembahagian dengan sifar, limpahan, aliran bawah, hasil tidak tepat dan
operasi tidak sah. Pilihan ini memerlukan itu -fno-signaling-nans berkuat kuasa.
Menetapkan pilihan ini mungkin membenarkan kod yang lebih pantas jika seseorang bergantung pada aritmetik IEEE "tanpa henti",
sebagai contoh.

Pilihan ini tidak boleh dihidupkan oleh mana-mana -O pilihan kerana ia boleh mengakibatkan
output yang salah untuk program yang bergantung pada pelaksanaan tepat IEEE atau ISO
peraturan/spesifikasi untuk fungsi matematik.

Lalai adalah -ftrapping-matematik.

-frounding-matematik
Lumpuhkan transformasi dan pengoptimuman yang menganggap pembundaran titik terapung lalai
tingkah laku. Ini ialah bulat-ke-sifar untuk semua penukaran titik terapung kepada integer, dan
bulat-ke-hampir untuk semua pemotongan aritmetik lain. Pilihan ini sepatutnya
ditentukan untuk program yang menukar mod pembundaran FP secara dinamik, atau mungkin
dilaksanakan dengan mod pembundaran bukan lalai. Pilihan ini melumpuhkan lipatan berterusan
ungkapan titik terapung pada masa penyusunan (yang mungkin dipengaruhi oleh mod pembundaran)
dan penjelmaan aritmetik yang tidak selamat jika terdapat tanda bergantung
mod pembulatan.

Lalai adalah -fno-rounding-math.

Pilihan ini adalah percubaan dan pada masa ini tidak menjamin untuk melumpuhkan semua GCC
pengoptimuman yang dipengaruhi oleh mod pembundaran. Versi masa hadapan GCC mungkin menyediakan
kawalan yang lebih baik terhadap tetapan ini menggunakan pragma "FENV_ACCESS" C99. Baris arahan ini
pilihan akan digunakan untuk menentukan keadaan lalai untuk "FENV_ACCESS".

-fsignaling-nans
Susun kod dengan mengandaikan bahawa NaN isyarat IEEE boleh menjana perangkap yang boleh dilihat oleh pengguna semasa
operasi titik terapung. Menetapkan pilihan ini melumpuhkan pengoptimuman yang mungkin berubah
bilangan pengecualian yang boleh dilihat dengan isyarat NaNs. Pilihan ini membayangkan
-ftrapping-matematik.

Pilihan ini menyebabkan makro prapemproses "__SUPPORT_SNAN__" ditakrifkan.

Lalai adalah -fno-signaling-nans.

Pilihan ini adalah percubaan dan pada masa ini tidak menjamin untuk melumpuhkan semua GCC
pengoptimuman yang mempengaruhi tingkah laku NaN isyarat.

-fsingle-precision-constant
Anggap pemalar titik terapung sebagai ketepatan tunggal dan bukannya menukar secara tersirat
mereka kepada pemalar ketepatan dua kali.

-fcx-julat-terhad
Apabila didayakan, pilihan ini menyatakan bahawa langkah pengurangan julat tidak diperlukan apabila
melaksanakan pembahagian kompleks. Juga, tiada semakan sama ada keputusan a
pendaraban atau pembahagian kompleks ialah "NaN + I*NaN", dengan percubaan untuk menyelamatkan
situasi dalam kes itu. Lalainya ialah -fno-cx-julat-terhad, tetapi didayakan oleh
-fast-matematik.

Pilihan ini mengawal tetapan lalai pragma "CX_LIMITED_RANGE" ISO C99.
Namun begitu, pilihan itu terpakai kepada semua bahasa.

-peraturan-fcx-fortran
Pendaraban dan pembahagian kompleks mengikut peraturan Fortran. Pengurangan julat dilakukan sebagai
sebahagian daripada pembahagian kompleks, tetapi tidak ada pemeriksaan sama ada hasil daripada kompleks
pendaraban atau pembahagian ialah "NaN + I*NaN", dengan percubaan untuk menyelamatkan keadaan
kalau macam itu.

Lalai adalah -fno-cx-fortran-peraturan.

Pilihan berikut mengawal pengoptimuman yang mungkin meningkatkan prestasi, tetapi tidak
didayakan oleh mana-mana -O pilihan. Bahagian ini termasuk pilihan percubaan yang mungkin menghasilkan
kod rosak.

-fbranch-kebarangkalian
Selepas menjalankan program yang disusun dengan -fprofile-arka, anda boleh menyusunnya untuk kali kedua
menggunakan -fbranch-kebarangkalian, untuk meningkatkan pengoptimuman berdasarkan bilangan kali
setiap cawangan diambil. Apabila program disusun dengan -fprofile-arka keluar, ia menjimatkan
pelaksanaan arka dikira pada fail yang dipanggil sourcename.gcda untuk setiap fail sumber. The
maklumat dalam fail data ini sangat bergantung kepada struktur yang dihasilkan
kod, jadi anda mesti menggunakan kod sumber yang sama dan pilihan pengoptimuman yang sama untuk kedua-duanya
kompilasi.

Dengan -fbranch-kebarangkalian, GCC meletakkan a REG_BR_PROB nota pada setiap satu JUMP_INSN dan
CALL_INSN. Ini boleh digunakan untuk meningkatkan pengoptimuman. Pada masa ini, ia hanya digunakan
di satu tempat: dalam reorg.c, bukannya meneka laluan mana yang paling mungkin dilalui oleh cawangan
ambil, yang REG_BR_PROB nilai digunakan untuk menentukan dengan tepat laluan mana yang lebih banyak diambil
selalunya.

-nilai-fprofile
Jika digabungkan dengan -fprofile-arka, ia menambah kod supaya beberapa data tentang nilai
ungkapan dalam program dikumpulkan.

Dengan -fbranch-kebarangkalian, ia membaca kembali data yang dikumpul daripada nilai profil bagi
ungkapan untuk kegunaan dalam pengoptimuman.

Didayakan dengan -fprofile-jana dan -fprofile-penggunaan.

-fprofile-atur semula-fungsi
Penyusunan semula fungsi berdasarkan instrumentasi profil mengumpulkan kali pertama pelaksanaan
sesuatu fungsi dan menyusun fungsi ini dalam tertib menaik.

Didayakan dengan -fprofile-penggunaan.

-fvpt
Jika digabungkan dengan -fprofile-arka, pilihan ini mengarahkan pengkompil untuk menambah kod ke
mengumpul maklumat tentang nilai ungkapan.

Dengan -fbranch-kebarangkalian, ia membaca kembali data yang dikumpul dan sebenarnya melaksanakan
pengoptimuman berdasarkan mereka. Pada masa ini pengoptimuman termasuk pengkhususan
operasi bahagi menggunakan pengetahuan tentang nilai penyebut.

-frename-daftar
Cuba untuk mengelakkan kebergantungan palsu dalam kod berjadual dengan menggunakan daftar yang ditinggalkan
selesai selepas daftar peruntukan. Pengoptimuman ini paling banyak memanfaatkan pemproses dengan lot
daripada daftar. Bergantung pada format maklumat nyahpepijat yang diterima pakai oleh sasaran,
walau bagaimanapun, ia boleh menjadikan penyahpepijatan mustahil, kerana pembolehubah tidak lagi berada dalam "home
mendaftar".

Didayakan secara lalai dengan -funroll-gelung dan -fpeel-gelung.

-fschedule-fusion
Melakukan hantaran bergantung sasaran ke atas aliran arahan untuk menjadualkan arahan
daripada jenis yang sama bersama-sama kerana mesin sasaran boleh melaksanakannya dengan lebih cekap jika mereka
bersebelahan antara satu sama lain dalam aliran arahan.

Didayakan pada tahap -O2, -O3, -Os.

-ftracer
Lakukan duplikasi ekor untuk membesarkan saiz superblock. Transformasi ini memudahkan
aliran kawalan fungsi yang membolehkan pengoptimuman lain melakukan kerja yang lebih baik.

Didayakan dengan -fprofile-penggunaan.

-funroll-gelung
Buka gelung yang bilangan lelarannya boleh ditentukan pada masa penyusunan atau selepas itu
kemasukan ke gelung. -funroll-gelung bererti -frerun-cse-after-gelung, -fweb dan
-frename-daftar. Ia juga menghidupkan pengelupasan gelung lengkap (iaitu penyingkiran lengkap
gelung dengan bilangan lelaran malar yang kecil). Pilihan ini menjadikan kod lebih besar, dan
mungkin atau mungkin tidak menjadikannya berjalan lebih pantas.

Didayakan dengan -fprofile-penggunaan.

-funroll-semua-gelung
Buka gulungan semua gelung, walaupun bilangan lelarannya tidak pasti apabila gelung itu
masuk. Ini biasanya menjadikan program berjalan lebih perlahan. -funroll-semua-gelung membayangkan
pilihan yang sama seperti -funroll-gelung.

-fpeel-gelung
Peels gelung yang mempunyai maklumat yang mencukupi bahawa mereka tidak banyak melancarkan (dari
maklum balas profil). Ia juga menghidupkan pengelupasan gelung lengkap (iaitu penyingkiran lengkap
gelung dengan bilangan lelaran malar yang kecil).

Didayakan dengan -fprofile-penggunaan.

-fmove-gelung-invariants
Mendayakan pas gerakan invarian gelung dalam pengoptimum gelung RTL. Didayakan pada tahap
-O1

-funswitch-gelung
Alihkan cawangan dengan keadaan invarian gelung keluar daripada gelung, dengan pendua gelung
gelung pada kedua-dua cawangan (diubah suai mengikut keputusan keadaan).

-ffungsi-bahagian
-fdata-bahagian
Letakkan setiap fungsi atau item data ke dalam bahagian sendiri dalam fail output jika sasaran
menyokong bahagian sewenang-wenangnya. Nama fungsi atau nama item data
menentukan nama bahagian dalam fail output.

Gunakan pilihan ini pada sistem yang mana pemaut boleh melakukan pengoptimuman untuk menambah baik
lokaliti rujukan dalam ruang arahan. Kebanyakan sistem menggunakan objek ELF
pemproses format dan SPARC yang menjalankan Solaris 2 mempunyai penghubung dengan pengoptimuman sedemikian.
AIX mungkin mempunyai pengoptimuman ini pada masa hadapan.

Hanya gunakan pilihan ini apabila terdapat faedah yang ketara daripada berbuat demikian. Bila awak
nyatakan pilihan ini, penghimpun dan pemaut mencipta objek yang lebih besar dan boleh laku
fail dan juga lebih perlahan. Anda tidak boleh menggunakan gprof pada semua sistem jika anda menentukan ini
pilihan, dan anda mungkin menghadapi masalah dengan penyahpepijatan jika anda menentukan kedua-dua pilihan ini dan
-g.

-fbranch-target-load-optimumkan
Lakukan pengoptimuman beban daftar sasaran cawangan sebelum penjalinan prolog / epilog.
Penggunaan daftar sasaran biasanya boleh didedahkan hanya semasa muat semula, dengan itu dinaikkan
memuatkan daripada gelung dan melakukan penjadualan antara blok memerlukan pengoptimuman yang berasingan
lulus.

-fbranch-target-load-optimize2
Lakukan pengoptimuman beban daftar sasaran cawangan selepas penjalinan prolog / epilog.

-fbtr-bb-eksklusif
Apabila melakukan pengoptimuman beban daftar sasaran cawangan, jangan gunakan semula sasaran cawangan
mendaftar dalam mana-mana blok asas.

-fstack-pelindung
Keluarkan kod tambahan untuk menyemak limpahan penimbal, seperti serangan menghancurkan tindanan. ini
dilakukan dengan menambahkan pembolehubah pengawal pada fungsi dengan objek yang terdedah. ini
termasuk fungsi yang memanggil "alloca", dan berfungsi dengan penimbal yang lebih besar daripada 8 bait.
Pengawal dimulakan apabila fungsi dimasukkan dan kemudian diperiksa apabila
keluar fungsi. Jika semakan pengawal gagal, mesej ralat dicetak dan atur cara
jalan keluar.

-fstack-pelindung-semua
suka -fstack-pelindung kecuali semua fungsi dilindungi.

-fstack-protector-strong
suka -fstack-pelindung tetapi termasuk fungsi tambahan untuk dilindungi --- mereka
yang mempunyai definisi tatasusunan setempat, atau mempunyai rujukan kepada alamat bingkai setempat.

-fstack-protector-explicit
suka -fstack-pelindung tetapi hanya melindungi fungsi yang mempunyai
atribut "stack_protect".

-fstdarg-opt
Optimumkan prolog fungsi hujah variadic berkenaan dengan penggunaannya
hujah-hujah.

NOTA: Dalam Ubuntu 14.10 dan versi yang lebih baru, -fstack-protector-strong didayakan oleh
lalai untuk C, C++, ObjC, ObjC++, jika tiada -fno-stack-protector, -nostdlib, tidak
-berdiri bebas dijumpai.

-fsection-anchor
Cuba kurangkan bilangan pengiraan alamat simbolik dengan menggunakan "sauh" kongsi
simbol untuk menangani objek berhampiran. Transformasi ini boleh membantu mengurangkan bilangannya
daripada entri GOT dan akses GOT pada beberapa sasaran.

Sebagai contoh, pelaksanaan fungsi "foo" berikut:

int statik a, b, c;
int foo (void) { kembalikan a + b + c; }

biasanya mengira alamat ketiga-tiga pembolehubah, tetapi jika anda menyusunnya dengan
-fsection-anchor, ia mengakses pembolehubah daripada titik utama biasa sebaliknya. The
kesan adalah serupa dengan pseudokod berikut (yang tidak sah C):

int foo (tidak sah)
{
daftar int *xr = &x;
kembalikan xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
}

Tidak semua sasaran menyokong pilihan ini.

--param nama=nilai
Di sesetengah tempat, GCC menggunakan pelbagai pemalar untuk mengawal jumlah pengoptimuman itu
telah siap. Sebagai contoh, GCC tidak mempunyai fungsi sebaris yang mengandungi lebih daripada yang tertentu
bilangan arahan. Anda boleh mengawal beberapa pemalar ini pada baris arahan
menggunakan --param pilihan.

Nama-nama parameter tertentu, dan makna nilai, terikat pada
dalaman pengkompil, dan tertakluk kepada perubahan tanpa notis pada masa hadapan
siaran.

Dalam setiap kes, yang nilai ialah integer. Pilihan yang dibenarkan untuk nama ialah:

dapat diramalkan-cawangan-hasil
Apabila cawangan diramalkan akan diambil dengan kebarangkalian lebih rendah daripada ambang ini
(dalam peratus), maka ia dianggap boleh diramal dengan baik. Lalai ialah 10.

maks-lompat-tepi
Bilangan maksimum tepi masuk untuk dipertimbangkan untuk lompat silang. Algoritma
digunakan oleh -fcrossjumping ialah O(N^2) dalam bilangan tepi yang masuk ke setiap blok.
Meningkatkan nilai bermakna pengoptimuman yang lebih agresif, menjadikan masa penyusunan
meningkat dengan kemungkinan peningkatan kecil dalam saiz boleh laku.

min-crossjump-inns
Bilangan minimum arahan yang mesti dipadankan pada akhir dua blok
sebelum lompat silang dilakukan ke atas mereka. Nilai ini diabaikan dalam kes itu
di mana semua arahan dalam blok yang dilompat silang adalah dipadankan. The
nilai lalai ialah 5.

max-grow-copy-bb-inns
Faktor pengembangan saiz kod maksimum apabila menyalin blok asas dan bukannya
melompat. Pengembangan adalah relatif kepada arahan lompat. Nilai lalai ialah
8.

max-goto-duplication-inns
Bilangan maksimum arahan untuk digandakan ke blok yang melompat ke a
goto dikira. Untuk mengelakkan tingkah laku O(N^2) dalam beberapa pas, faktor GCC
gotos dikira awal dalam proses penyusunan, dan tidak memfaktorkannya selewat-lewatnya
mungkin. Hanya lompatan yang dikira pada penghujung blok asas dengan tidak lebih daripada maks-
goto-duplication-insns tidak berfaktor. Nilai lalai ialah 8.

max-delay-slot-insn-search
Bilangan maksimum arahan untuk dipertimbangkan semasa mencari arahan untuk
mengisi slot kelewatan. Jika lebih daripada bilangan arahan sewenang-wenang ini adalah
Dicari, penjimatan masa daripada mengisi slot kelewatan adalah minimum, jadi berhenti
mencari. Meningkatkan nilai bermakna pengoptimuman yang lebih agresif, menjadikan
masa kompilasi meningkat dengan peningkatan yang mungkin kecil dalam masa pelaksanaan.

max-delay-slot-live-search
Apabila cuba mengisi slot kelewatan, bilangan maksimum arahan untuk dipertimbangkan
apabila mencari blok dengan maklumat daftar langsung yang sah. Meningkatkan ini
nilai yang dipilih secara sewenang-wenangnya bermakna pengoptimuman yang lebih agresif, meningkatkan
masa kompilasi. Parameter ini harus dialih keluar apabila kod slot kelewatan
ditulis semula untuk mengekalkan graf aliran kawalan.

max-gcse-memori
Anggaran jumlah maksimum memori yang boleh diperuntukkan untuk melaksanakan
pengoptimuman penghapusan subungkapan biasa global. Jika lebih banyak ingatan daripada
dinyatakan diperlukan, pengoptimuman tidak dilakukan.

nisbah pemasukan-maks-gcse
Jika nisbah sisipan ungkapan kepada pemadaman adalah lebih besar daripada nilai ini untuk
sebarang ungkapan, kemudian RTL PRE memasukkan atau mengalih keluar ungkapan dan dengan itu meninggalkannya
pengiraan separa berlebihan dalam aliran arahan. Nilai lalai ialah
20.

max-pending-list-length
Bilangan maksimum penjadualan kebergantungan yang belum selesai membenarkan sebelum membuang
keadaan semasa dan bermula semula. Fungsi besar dengan beberapa cawangan atau panggilan boleh
cipta senarai yang terlalu besar yang tidak perlu menggunakan memori dan sumber.

max-modulo-backtrack-tryts
Bilangan maksimum percubaan backtrack yang harus dibuat oleh penjadual apabila modulo
menjadualkan gelung. Nilai yang lebih besar boleh meningkatkan masa penyusunan secara eksponen.

max-inline-insns-single
Beberapa parameter mengawal inliner pokok yang digunakan dalam GCC. Nombor ini menetapkan
bilangan maksimum arahan (dikira dalam perwakilan dalaman GCC) dalam a
fungsi tunggal yang dipertimbangkan oleh pelapis pokok untuk pelapis. Ini hanya memberi kesan
fungsi yang diisytiharkan sebaris dan kaedah yang dilaksanakan dalam pengisytiharan kelas (C++).
Nilai lalai adalah 400.

max-inline-inns-auto
Apabila anda menggunakan -finline-fungsi (termasuk dalam -O3), banyak fungsi yang akan
sebaliknya tidak dipertimbangkan untuk inlining oleh pengkompil disiasat. Kepada
fungsi tersebut, had yang berbeza (lebih terhad) berbanding dengan fungsi
diisytiharkan sebaris boleh digunakan. Nilai lalai ialah 40.

inline-min-speedup
Apabila anggaran peningkatan prestasi pemanggil + masa jalan pemanggil melebihi ini
ambang (sebelum ini), fungsi boleh diselaraskan tanpa mengira had pada
--param max-inline-insns-single dan --param max-inline-inns-auto.

besar-fungsi-inns
Had yang menentukan fungsi yang sangat besar. Untuk fungsi yang lebih besar daripada had ini
selepas inlining, inlining dikekang oleh --param besar-fungsi-pertumbuhan. ini
parameter berguna terutamanya untuk mengelakkan masa penyusunan melampau yang disebabkan oleh bukan-
algoritma linear yang digunakan oleh bahagian belakang. Nilai lalai ialah 2700.

besar-fungsi-pertumbuhan
Menentukan pertumbuhan maksimum fungsi besar yang disebabkan oleh inlining dalam peratus. The
nilai lalai ialah 100 yang mengehadkan pertumbuhan fungsi besar kepada 2.0 kali ganda daripada asal
saiz.

besar-unit-inns
Had yang menentukan unit terjemahan besar. Pertumbuhan disebabkan oleh inlining unit
lebih besar daripada had ini dihadkan oleh --param pertumbuhan unit sebaris. Untuk unit kecil
ini mungkin terlalu ketat. Sebagai contoh, pertimbangkan unit yang terdiri daripada fungsi A
iaitu sebaris dan B yang hanya memanggil A tiga kali. Jika B adalah kecil berbanding A,
pertumbuhan unit adalah 300\% namun inlining sedemikian adalah sangat waras. Untuk sangat besar
unit yang terdiri daripada fungsi inlineable kecil, bagaimanapun, pertumbuhan unit keseluruhan
had diperlukan untuk mengelakkan letupan eksponen saiz kod. Oleh itu untuk lebih kecil
unit, saiznya ditambah kepada --param besar-unit-inns sebelum memohon --param
pertumbuhan unit sebaris. Lalai ialah 10000.

pertumbuhan unit sebaris
Menentukan pertumbuhan keseluruhan maksimum unit kompilasi yang disebabkan oleh inlining. The
nilai lalai ialah 20 yang mengehadkan pertumbuhan unit kepada 1.2 kali ganda saiz asal. sejuk
fungsi (sama ada ditanda sejuk melalui atribut atau oleh maklum balas profil) tidak
diambil kira dalam saiz unit.

ipcp-unit-pertumbuhan
Menentukan pertumbuhan keseluruhan maksimum unit kompilasi yang disebabkan oleh antara prosedur
penyebaran berterusan. Nilai lalai ialah 10 yang mengehadkan pertumbuhan unit kepada 1.1
kali ganda saiz asal.

bingkai-timbunan besar
Had menentukan bingkai tindanan besar. Semasa menyelaraskan algoritma sedang mencuba
untuk tidak melepasi had ini terlalu banyak. Nilai lalai ialah 256 bait.

pertumbuhan-bingkai-timbunan besar
Menentukan pertumbuhan maksimum bingkai tindanan besar yang disebabkan oleh sebaris dalam peratus.
Nilai lalai ialah 1000 yang mengehadkan pertumbuhan bingkai tindanan besar kepada 11 kali ganda
saiz asal.

max-inline-insns-rekursif
max-inline-insns-recursive-auto
Menentukan bilangan maksimum arahan salinan luar talian bagi
fungsi inline rekursif boleh berkembang menjadi dengan melakukan inlining rekursif.

--param max-inline-insns-rekursif digunakan untuk fungsi yang diisytiharkan sebaris. Untuk
fungsi tidak diisytiharkan sebaris, sebaris rekursif berlaku hanya apabila
-finline-fungsi (termasuk dalam -O3) didayakan; --param max-inline-inns-
rekursif-auto berlaku sebaliknya. Nilai lalai ialah 450.

max-inline-rekursive-depth
max-inline-recursive-depth-auto
Menentukan kedalaman rekursif maksimum yang digunakan untuk inlining rekursif.

--param max-inline-rekursive-depth digunakan untuk fungsi yang diisytiharkan sebaris. Untuk
fungsi tidak diisytiharkan sebaris, sebaris rekursif berlaku hanya apabila
-finline-fungsi (termasuk dalam -O3) didayakan; --param max-inline-recursive-
depth-auto berlaku sebaliknya. Nilai lalai ialah 8.

min-inline-rekursive-probability
Inlining rekursif hanya menguntungkan untuk fungsi yang mempunyai rekursif dalam
purata dan boleh menyakitkan untuk fungsi yang mempunyai kedalaman rekursi yang sedikit dengan meningkatkan
saiz prolog atau kerumitan badan fungsi kepada pengoptimum lain.

Apabila maklum balas profil tersedia (lihat -fprofile-jana) rekursi sebenar
kedalaman boleh diteka daripada kebarangkalian bahawa fungsi berulang melalui panggilan yang diberikan
ungkapan. Parameter ini mengehadkan sebaris hanya untuk memanggil ungkapan yang
kebarangkalian melebihi ambang yang diberikan (dalam peratus). Nilai lalai ialah 10.

awal-inlining-inns
Nyatakan pertumbuhan yang boleh dibuat oleh inliner awal. Sebenarnya ia meningkatkan jumlah
inlineing untuk kod yang mempunyai penalti abstraksi yang besar. Nilai lalai ialah 14.

lelaran-inliner-awal maks
Had lelaran inliner awal. Ini pada asasnya mengehadkan bilangan
panggilan tidak langsung bersarang yang boleh diselesaikan oleh inliner awal. Rantaian yang lebih dalam masih ada
dikendalikan oleh inlining lewat.

comdat-berkongsi-kebarangkalian
Kebarangkalian (dalam peratus) bahawa fungsi sebaris C++ dengan keterlihatan comdat adalah
dikongsi merentas berbilang unit kompilasi. Nilai lalai ialah 20.

profile-func-internal-id
Parameter untuk mengawal sama ada untuk menggunakan id dalaman fungsi dalam pangkalan data profil
carian. Jika nilai ialah 0, pengkompil menggunakan id yang berdasarkan fungsi
nama pemasang dan nama fail, yang menjadikan data profil lama lebih bertolak ansur dengan sumber
perubahan seperti penyusunan semula fungsi dsb. Nilai lalai ialah 0.

min-vect-gelung-terikat
Bilangan minimum lelaran di mana gelung tidak divektorkan apabila
-free-vectorize digunakan. Bilangan lelaran selepas vektorisasi perlu
lebih besar daripada nilai yang ditentukan oleh pilihan ini untuk membenarkan vektorisasi. The
nilai lalai ialah 0.

nisbah-kos-jarak-gcse
Faktor penskalaan dalam pengiraan jarak maksimum ungkapan boleh digerakkan
pengoptimuman GCSE. Pada masa ini, ini hanya disokong dalam pas pengangkat kod.
Lebih besar nisbah, lebih agresif kod angkat adalah dengan mudah
ungkapan, iaitu, ungkapan yang mempunyai kos kurang daripada gcse-unrestricted-
kos. Menentukan 0 melumpuhkan pengangkatan ungkapan mudah. Nilai lalai ialah
10.

gcse-kos-tidak-terhad
Kos, diukur secara kasar sebagai kos satu arahan mesin biasa, pada
yang mana pengoptimuman GCSE tidak mengekang jarak yang boleh dilalui oleh ungkapan.
Pada masa ini, ini hanya disokong dalam pas pengangkat kod. Semakin rendah kos,
peningkatan kod yang lebih agresif adalah. Menentukan 0 membenarkan semua ungkapan untuk
menempuh jarak yang tidak terhad. Nilai lalai ialah 3.

max-hoist-depth
Kedalaman carian dalam pokok dominator untuk ungkapan untuk di angkat. Ini digunakan
untuk mengelakkan tingkah laku kuadratik dalam algoritma angkat. Nilai 0 tidak menghadkan
dalam carian, tetapi mungkin melambatkan penyusunan fungsi yang besar. Nilai lalai
adalah 30.

max-tail-merge-comparisons
Jumlah maksimum bb yang serupa untuk dibandingkan dengan bb. Ini digunakan untuk mengelakkan
tingkah laku kuadratik dalam penggabungan ekor pokok. Nilai lalai ialah 10.

lelaran gabungan-ekor-maks
Jumlah maksimum lelaran bagi lulus ke atas fungsi. Ini sudah biasa
hadkan masa penyusunan dalam penggabungan ekor pokok. Nilai lalai ialah 2.

max-unrolled-inns
Bilangan maksimum arahan yang mungkin perlu dibuka gelung. Jika gelung
dibuka, parameter ini juga menentukan berapa kali kod gelung itu
terbongkar.

max-average-unrolled-inns
Bilangan maksimum arahan yang berat sebelah oleh kebarangkalian pelaksanaannya itu
satu gelung mungkin perlu dibuka. Jika gelung dibuka, parameter ini juga
menentukan berapa kali kod gelung dibuka.

max-unroll-times
Bilangan maksimum pembukaan gelung tunggal.

max-peeled-inns
Bilangan maksimum arahan bahawa gelung mungkin perlu dikupas. Jika gelung
dikupas, parameter ini juga menentukan berapa kali kod gelung dikupas.

max-peel-times
Bilangan maksimum pengelupasan bagi satu gelung.

max-kupas-cabang
Bilangan maksimum cawangan pada laluan panas melalui urutan yang dikupas.

max-completely-dikupas-inns
Bilangan maksimum inns bagi gelung yang dikupas sepenuhnya.

max-sepenuhnya-kupas-kali
Bilangan maksimum lelaran gelung yang sesuai untuk pengelupasan lengkap.

maks-sepenuhnya-kupas-gelung-kedalaman-sarang
Kedalaman maksimum sarang gelung sesuai untuk pengelupasan lengkap.

max-nyahsuis-inns
Bilangan maksimum inns bagi gelung tidak beralih.

maks-nyahsuis-paras
Bilangan maksimum cawangan dinyahsuis dalam satu gelung.

lim-mahal
Kos minimum ungkapan mahal dalam gerakan invarian gelung.

iv-pertimbangkan-semua-calon-terikat
Terikat pada bilangan calon untuk pembolehubah aruhan, di bawahnya semua calon
dipertimbangkan untuk setiap penggunaan dalam pengoptimuman pembolehubah aruhan. Jika ada
lebih ramai calon daripada ini, hanya yang paling relevan sahaja yang dianggap untuk dielakkan
kerumitan masa kuadratik.

iv-maks-dipertimbangkan-kegunaan
Pengoptimuman pembolehubah aruhan menyerah pada gelung yang mengandungi lebih banyak aruhan
kegunaan berubah-ubah.

iv-sentiasa-pangkas-tin-set-terikat
Jika bilangan calon dalam set lebih kecil daripada nilai ini, sentiasa cuba
keluarkan iv yang tidak perlu daripada set apabila menambah yang baharu.

scev-max-expr-size
Terikat pada saiz ungkapan yang digunakan dalam penganalisis evolusi skalar. besar
ungkapan memperlahankan penganalisis.

scev-max-expr-complexity
Terikat pada kerumitan ungkapan dalam penganalisis evolusi skalar.
Ungkapan kompleks memperlahankan penganalisis.

omega-max-vars
Bilangan maksimum pembolehubah dalam sistem kekangan Omega. Nilai lalai
adalah 128.

omega-max-geqs
Bilangan maksimum ketaksamaan dalam sistem kekangan Omega. lalai
nilai ialah 256.

omega-max-eqs
Bilangan maksimum kesamaan dalam sistem kekangan Omega. Nilai lalai
adalah 128.

omega-max-wild-cards
Bilangan maksimum pembolehubah kad bebas yang boleh dimasukkan oleh penyelesai Omega.
Nilai lalai adalah 18.

saiz jadual omega-hash
Saiz jadual cincang dalam penyelesai Omega. Nilai lalai ialah 550.

kunci omega-max
Bilangan maksima kunci yang digunakan oleh penyelesai Omega. Nilai lalai ialah 500.

omega-menghapuskan-berlebihan-kekangan
Apabila ditetapkan kepada 1, gunakan kaedah yang mahal untuk menghapuskan semua kekangan berlebihan. The
nilai lalai ialah 0.

vect-max-version-for-alignment-checks
Bilangan maksimum semakan masa jalan yang boleh dilakukan semasa melakukan gelung
versi untuk penjajaran dalam vectorizer.

vect-max-version-for-alias-checks
Bilangan maksimum semakan masa jalan yang boleh dilakukan semasa melakukan gelung
versi untuk alias dalam vectorizer.

vect-max-peeling-for-alignment
Bilangan maksimum pengelupasan gelung untuk mempertingkatkan penjajaran akses untuk vectorizer. Nilai
-1 bermaksud 'tiada had'.

lelaran-maks-untuk-jejak
Bilangan maksimum lelaran gelung algoritma brute-force untuk analisis
daripada bilangan lelaran gelung yang cuba dinilai.

hot-bb-count-ws-permille
Kiraan profil blok asas dianggap panas jika ia menyumbang kepada yang diberikan
permillage (iaitu 0...1000) daripada keseluruhan pelaksanaan berprofil.

pecahan-frekuensi-bb panas
Pilih pecahan daripada kekerapan blok masuk bagi pelaksanaan blok asas masuk
fungsi yang diberikan blok asas perlu perlu dianggap panas.

lelaran yang diramalkan maks
Bilangan maksimum lelaran gelung yang kami ramalkan secara statik. Ini berguna dalam
kes di mana fungsi mengandungi gelung tunggal dengan terikat yang diketahui dan gelung lain
dengan terikat yang tidak diketahui. Bilangan lelaran yang diketahui diramalkan dengan betul, manakala
bilangan lelaran yang tidak diketahui purata kepada kira-kira 10. Ini bermakna bahawa gelung
tanpa sempadan kelihatan sejuk secara buatan berbanding yang lain.

terbina-jangka-kebarangkalian
Kawal kebarangkalian ungkapan yang mempunyai nilai yang ditentukan. ini
parameter mengambil peratusan (iaitu 0 ... 100) sebagai input. Kebarangkalian lalai
daripada 90 diperolehi secara empirik.

selaras-ambang
Pilih pecahan daripada kekerapan maksimum pelaksanaan blok asas dalam a
berfungsi untuk menyelaraskan blok asas.

align-loop-iteration
Gelung yang dijangka akan berulang sekurang-kurangnya bilangan lelaran yang dipilih adalah sejajar.

tracer-dynamic-liputan
pengesan-dinamik-liputan-maklum balas
Nilai ini digunakan untuk mengehadkan pembentukan superblock setelah peratusan yang diberikan
arahan yang dilaksanakan dilindungi. Ini mengehadkan pengembangan saiz kod yang tidak perlu.

. pengesan-dinamik-liputan-maklum balas parameter digunakan hanya apabila maklum balas profil
boleh didapati. Profil sebenar (berbanding dengan yang dianggarkan secara statik) ialah
lebih kurang seimbang yang membolehkan ambang menjadi nilai yang lebih besar.

tracer-max-code-growth
Hentikan pertindihan ekor setelah pertumbuhan kod telah mencapai peratusan tertentu. Ini adalah
had yang agak tiruan, kerana kebanyakan pendua dihapuskan kemudian secara silang
melompat, jadi ia mungkin ditetapkan kepada nilai yang jauh lebih tinggi daripada pertumbuhan kod yang diingini.

tracer-min-cawangan-nisbah
Hentikan pertumbuhan songsang apabila kebarangkalian songsang kelebihan terbaik adalah kurang daripada ini
ambang (dalam peratus).

tracer-min-cawangan-nisbah
tracer-min-cawangan-maklum balas-nisbah
Hentikan pertumbuhan ke hadapan jika kelebihan terbaik mempunyai kebarangkalian lebih rendah daripada ambang ini.

Begitu juga dengan tracer-dynamic-liputan dua nilai hadir, satu untuk penyusunan
untuk maklum balas profil dan satu untuk kompilasi tanpa. Nilai untuk kompilasi
dengan maklum balas profil perlu lebih konservatif (lebih tinggi) untuk membuat
pengesan berkesan.

max-cse-path-length
Bilangan maksimum blok asas pada laluan yang dipertimbangkan oleh CSE. Lalai ialah 10.

max-cse-inns
Bilangan maksimum arahan yang diproses CSE sebelum siram. Lalainya ialah
1000.

ggc-min-expand
GCC menggunakan pemungut sampah untuk mengurus peruntukan memorinya sendiri. Parameter ini
menentukan peratusan minimum yang sepatutnya digunakan oleh timbunan pemungut sampah
dibenarkan untuk berkembang antara koleksi. Penalaan ini boleh meningkatkan kelajuan kompilasi;
ia tidak mempunyai kesan ke atas penjanaan kod.

Lalai ialah 30% + 70% * (RAM/1GB) dengan sempadan atas 100% apabila RAM >= 1GB.
Jika "getrlimit" tersedia, tanggapan "RAM" ialah yang terkecil daripada RAM sebenar dan
"RLIMIT_DATA" atau "RLIMIT_AS". Jika GCC tidak dapat mengira RAM pada sesuatu tertentu
platform, sempadan bawah 30% digunakan. Menetapkan parameter ini dan ggc-min-
menimbun kepada sifar menyebabkan kutipan penuh berlaku pada setiap peluang. Ini adalah
sangat perlahan, tetapi boleh berguna untuk nyahpepijat.

ggc-min-timbunan
Saiz minimum timbunan pemungut sampah sebelum ia mula mengganggu untuk mengumpul
sampah. Koleksi pertama berlaku selepas timbunan mengembang dengan ggc-min-expand%
Di luar ggc-min-timbunan. Sekali lagi, penalaan ini boleh meningkatkan kelajuan kompilasi, dan
tidak mempunyai kesan ke atas penjanaan kod.

Lalai adalah lebih kecil daripada RAM/8, RLIMIT_RSS, atau had yang cuba dipastikan
bahawa RLIMIT_DATA atau RLIMIT_AS tidak melebihi, tetapi dengan had bawah 4096
(empat megabait) dan batas atas 131072 (128 megabait). Jika GCC tidak mampu
untuk mengira RAM pada platform tertentu, sempadan bawah digunakan. Menetapkan ini
parameter yang sangat besar dengan berkesan melumpuhkan kutipan sampah. Menetapkan ini
parameter dan ggc-min-expand kepada sifar menyebabkan kutipan penuh berlaku pada setiap
peluang.

max-reload-search-inns
Bilangan maksimum muat semula arahan harus melihat ke belakang untuk persamaan
mendaftar. Meningkatkan nilai bermakna pengoptimuman yang lebih agresif, menjadikan
masa kompilasi meningkat dengan prestasi yang mungkin lebih baik sedikit. lalai
nilai ialah 100.

max-cselib-memory-locations
Bilangan maksimum lokasi memori cselib harus diambil kira.
Meningkatkan nilai bermakna pengoptimuman yang lebih agresif, menjadikan masa penyusunan
meningkat dengan prestasi yang mungkin lebih baik sedikit. Nilai lalai ialah 500.

susun semula-blok-pendua
susun semula-sekat-duplikat-maklum balas
Digunakan oleh pas penyusunan semula blok asas untuk memutuskan sama ada untuk menggunakan tanpa syarat
cawangan atau salin kod pada destinasinya. Kod diduplikasi apabila kodnya
saiz anggaran adalah lebih kecil daripada nilai ini didarab dengan anggaran saiz
lompat tanpa syarat di tempat panas program.

. susun semula-sekat-pendua-maklum balas parameter digunakan hanya apabila maklum balas profil
boleh didapati. Ia mungkin ditetapkan kepada nilai yang lebih tinggi daripada susun semula-sekat-pendua sejak
maklumat tentang titik panas adalah lebih tepat.

max-sched-ready-inns
Bilangan maksimum arahan sedia untuk dikeluarkan penjadual sepatutnya
pertimbangkan pada bila-bila masa semasa pas penjadualan pertama. Meningkatkan nilai
bermakna carian yang lebih teliti, menjadikan masa penyusunan meningkat dengan mungkin
sedikit faedah. Nilai lalai ialah 100.

blok-rantau-jadual maks
Bilangan maksimum blok dalam rantau untuk dipertimbangkan untuk antara blok
penjadualan. Nilai lalai ialah 10.

max-pipeline-region-blocks
Bilangan maksimum blok di rantau yang perlu dipertimbangkan untuk saluran paip dalam
penjadual terpilih. Nilai lalai ialah 15.

max-sched-region-inns
Bilangan maksimum penginapan di rantau yang perlu dipertimbangkan untuk sekatan
penjadualan. Nilai lalai ialah 100.

max-pipeline-region-inns
Bilangan maksimum penginapan di rantau yang perlu dipertimbangkan untuk saluran paip di
penjadual terpilih. Nilai lalai ialah 200.

min-spec-prob
Kebarangkalian minimum (dalam peratus) untuk mencapai blok sumber untuk antara blok
penjadualan spekulatif. Nilai lalai ialah 40.

max-sched-extend-regions-iters
Bilangan maksimum lelaran melalui CFG untuk memanjangkan kawasan. Nilai 0 (the
lalai) melumpuhkan sambungan wilayah.

max-sched-insn-conflict-delay
Kelewatan konflik maksimum untuk insn untuk dipertimbangkan untuk usul spekulatif.
Nilai lalai adalah 3.

sched-spec-prob-cutoff
Kebarangkalian minimum kejayaan spekulasi (dalam peratus), supaya spekulatif
inns dijadualkan. Nilai lalai ialah 40.

sched-spec-state-edge-prob-cutoff
Kebarangkalian minimum kelebihan mesti ada untuk penjadual menyelamatkan keadaannya
melintasinya. Nilai lalai ialah 10.

sched-mem-true-dep-cost
Jarak minimum (dalam kitaran CPU) antara simpanan dan beban yang menyasarkan memori yang sama
lokasi. Nilai lalai ialah 1.

selsched-max-lookahead
Saiz maksimum tetingkap pandangan hadapan penjadualan terpilih. Ia adalah kedalaman
daripada mencari arahan yang tersedia. Nilai lalai ialah 50.

selsched-max-sched-times
Bilangan maksimum kali arahan dijadualkan semasa terpilih
penjadualan. Ini ialah had bilangan lelaran yang melaluinya
arahan boleh dibuat secara paip. Nilai lalai ialah 2.

selsched-max-insns-to-rename
Bilangan maksimum arahan terbaik dalam senarai sedia yang dipertimbangkan
menamakan semula dalam penjadual terpilih. Nilai lalai ialah 2.

sms-min-sc
Nilai minimum kiraan peringkat yang dijana oleh penjadual modulo ayunan. The
nilai lalai ialah 2.

max-last-value-rtl
Saiz maksimum diukur sebagai bilangan RTL yang boleh direkodkan dalam ungkapan
dalam penggabung untuk daftar pseudo sebagai nilai terakhir yang diketahui bagi daftar itu. The
lalai adalah 10000.

max-combine-inns
Bilangan maksimum arahan yang cuba digabungkan oleh penggabung RTL. lalai
nilai ialah 2 pada -Og dan 4 sebaliknya.

integer-share-had
Pemalar integer kecil boleh menggunakan struktur data yang dikongsi, mengurangkan pengkompil
penggunaan memori dan meningkatkan kelajuannya. Ini menetapkan nilai maksimum perkongsian
pemalar integer. Nilai lalai ialah 256.

ssp-saiz penimbal
Saiz minimum penimbal (iaitu tatasusunan) yang menerima perlindungan pecah tindanan
apabila -fstack-perlindungan digunakan.

Lalai ini sebelum Ubuntu 10.10 ialah "8". Pada masa ini ia adalah "4", untuk meningkatkan
bilangan fungsi yang dilindungi oleh pelindung tindanan.

saiz-min-untuk-perkongsian-tindanan
Saiz minimum pembolehubah yang mengambil bahagian dalam perkongsian slot tindanan apabila tidak
mengoptimumkan. Nilai lalai ialah 32.

max-jump-thread-duplication-stmts
Bilangan maksimum pernyataan yang dibenarkan dalam blok yang perlu diduplikasi apabila
lompatan benang.

medan-maks-untuk-medan-sensitif
Bilangan maksimum medan dalam struktur yang dirawat dengan cara sensitif medan semasa
analisis penunjuk. Lalai ialah sifar untuk -O0 dan -O1, dan 100 untuk -Os, -O2, dan
-O3.

prafetch-latency
Anggarkan purata bilangan arahan yang dilaksanakan sebelum prefetch
selesai. Jarak yang diambil di hadapan adalah berkadar dengan pemalar ini.
Menambahkan bilangan ini juga boleh menyebabkan kurang strim diambil awal (lihat
serentak-prefetches).

serentak-prefetches
Bilangan maksimum prefetch yang boleh dijalankan pada masa yang sama.

l1-cache-line-saiz
Saiz baris cache dalam cache L1, dalam bait.

l1-saiz-cache
Saiz cache L1, dalam kilobait.

l2-saiz-cache
Saiz cache L2, dalam kilobait.

nisbah min-inn-ke-prefetch
Nisbah minimum antara bilangan arahan dan bilangan prefetch
untuk mendayakan prefetching dalam gelung.

prefetch-min-insn-to-mem-nisbah
Nisbah minimum antara bilangan arahan dan bilangan memori
rujukan untuk membolehkan prefetching dalam gelung.

kegunaan-jenis-jenis
Sama ada pengkompil harus menggunakan sistem jenis "kanonik". Secara lalai, ini
hendaklah sentiasa 1, yang menggunakan mekanisme dalaman yang lebih cekap untuk membandingkan
jenis dalam C++ dan Objective-C++. Walau bagaimanapun, jika pepijat dalam sistem jenis kanonik adalah
menyebabkan kegagalan kompilasi, tetapkan nilai ini kepada 0 untuk melumpuhkan jenis kanonik.

nisbah-penukaran-maks-cawangan
Penukaran permulaan suis enggan membuat tatasusunan yang lebih besar daripada
nisbah-penukaran-maks-cawangan kali bilangan cawangan dalam suis.

maks-separa-antik-panjang
Panjang maksimum set antik separa dikira semasa separa pokok
pengoptimuman penghapusan redundansi (-ftree-pra) apabila mengoptimumkan pada -O3 dan ke atas.
Untuk beberapa jenis kod sumber, penghapusan redundansi separa dipertingkatkan
pengoptimuman boleh lari, memakan semua memori yang tersedia pada hos
mesin. Parameter ini menetapkan had pada panjang set yang dikira,
yang menghalang tingkah laku melarikan diri. Menetapkan nilai 0 untuk parameter ini
membenarkan panjang set tanpa had.

sccvn-max-scc-saiz
Saiz maksimum komponen bersambung kuat (SCC) semasa pemprosesan SCCVN. Jika
had ini dilanda, pemprosesan SCCVN untuk keseluruhan fungsi tidak dilakukan dan
pengoptimuman bergantung padanya dilumpuhkan. Saiz SCC maksimum lalai ialah
10000.

sccvn-max-alias-queries-per-access
Bilangan maksimum pertanyaan alias-oracle yang kami lakukan semasa mencari lebihan
untuk muatan dan stor. Jika had ini dicapai, carian akan dibatalkan dan beban atau
kedai tidak dianggap berlebihan. Bilangan pertanyaan adalah mengikut algoritma
terhad kepada bilangan stor pada semua laluan dari beban ke entri fungsi.
Bilangan maksimum lalai pertanyaan ialah 1000.

ira-max-gelung-num
IRA menggunakan peruntukan daftar serantau secara lalai. Jika fungsi mengandungi lebih banyak
gelung daripada nombor yang diberikan oleh parameter ini, hanya paling banyak bilangan yang diberikan
gelung yang paling kerap dilaksanakan membentuk wilayah untuk peruntukan daftar wilayah.
Nilai lalai parameter ialah 100.

ira-max-konflik-saiz-meja
Walaupun IRA menggunakan algoritma yang canggih untuk memampatkan jadual konflik,
jadual masih boleh memerlukan jumlah memori yang berlebihan untuk fungsi yang besar. Sekiranya
jadual konflik untuk fungsi boleh lebih daripada saiz dalam MB yang diberikan oleh ini
parameter, pengagih daftar sebaliknya menggunakan yang lebih cepat, lebih mudah dan lebih rendah-
algoritma kualiti yang tidak memerlukan membina jadual konflik pendaftaran pseudo.
Nilai lalai parameter ialah 2000.

ira-loop-reserved-regs
IRA boleh digunakan untuk menilai tekanan daftar yang lebih tepat dalam gelung untuk keputusan
untuk memindahkan invarian gelung (lihat -O3). Bilangan daftar yang tersedia dikhaskan untuk
beberapa tujuan lain diberikan oleh parameter ini. Nilai lalai bagi
parameter ialah 2, iaitu bilangan minimum daftar yang diperlukan oleh tipikal
arahan. Nilai ini adalah yang terbaik ditemui daripada pelbagai eksperimen.

lra-inheritance-ebb-probability-cutoff
LRA cuba menggunakan semula nilai yang dimuat semula dalam daftar dalam insn berikutnya. ini
pengoptimuman dipanggil warisan. EBB digunakan sebagai rantau untuk melakukan ini
pengoptimuman. Parameter mentakrifkan kebarangkalian tepi jatuh melalui minimum dalam
peratusan yang digunakan untuk menambah BB pada EBB warisan dalam LRA. Nilai lalai bagi
parameter ialah 40. Nilai telah dipilih daripada banyak larian SPEC2000 pada x86-64.

gelung-invarian-maks-bbs-dalam-gelung
Pergerakan invarian gelung boleh menjadi sangat mahal, dalam masa penyusunan dan dalam
jumlah memori masa kompilasi yang diperlukan, dengan gelung yang sangat besar. Gelung dengan lebih banyak lagi
blok asas daripada parameter ini tidak akan mempunyai pengoptimuman gerakan invarian gelung
dilakukan ke atas mereka. Nilai lalai parameter ialah 1000 untuk -O1 dan 10000
untuk -O2 dan ke atas.

loop-max-datarefs-for-datadeps
Membina ketergantungan data adalah mahal untuk gelung yang sangat besar. Parameter ini
mengehadkan bilangan rujukan data dalam gelung yang dipertimbangkan untuk data
analisis pergantungan. Gelung besar ini tidak dikendalikan oleh pengoptimuman menggunakan
kebergantungan data gelung. Nilai lalai ialah 1000.

max-vartrack-saiz
Menetapkan bilangan maksimum slot jadual cincang untuk digunakan semasa aliran data penjejakan berubah-ubah
analisis mana-mana fungsi. Jika had ini melebihi dengan penjejakan berubah-ubah di
tugasan didayakan, analisis untuk fungsi itu dicuba semula tanpanya, selepas
mengalih keluar semua insn nyahpepijat daripada fungsi. Jika melebihi had walaupun tanpa
nyahpepijat insns, analisis penjejakan var dilumpuhkan sepenuhnya untuk fungsi tersebut.
Menetapkan parameter kepada sifar menjadikannya tidak terhad.

max-vartrack-expr-depth
Menetapkan bilangan maksimum tahap rekursi apabila cuba memetakan nama pembolehubah atau
nyahpepijat sementara kepada ungkapan nilai. Ini memperdagangkan masa penyusunan untuk lebih banyak lagi
maklumat nyahpepijat lengkap. Jika ini ditetapkan terlalu rendah, nilai ungkapan yang
tersedia dan boleh diwakili dalam maklumat nyahpepijat mungkin akhirnya tidak digunakan;
menetapkan ini lebih tinggi mungkin membolehkan pengkompil mencari nyahpepijat yang lebih kompleks
ungkapan, tetapi masa penyusunan dan penggunaan memori mungkin berkembang. Lalai ialah 12.

min-nondebug-insn-uid
Gunakan uid bermula pada parameter ini untuk nondebug insns. Julat di bawah
parameter dikhaskan secara eksklusif untuk ins nyahpepijat yang dibuat oleh
-fvar-tracking-assignments, tetapi insn nyahpepijat mungkin mendapat uid (tidak bertindih) di atas
ia jika julat simpanan telah habis.

ipa-sra-ptr-faktor-pertumbuhan
IPA-SRA menggantikan penunjuk kepada agregat dengan satu atau lebih parameter baharu sahaja
apabila saiz terkumpulnya kurang atau sama dengan ipa-sra-ptr-faktor-pertumbuhan kali
saiz parameter penunjuk asal.

sra-max-scalarization-size-Ospeed
sra-max-scalarization-size-Osize
Dua pas Pengurangan Skalar Agregat (SRA dan IPA-SRA) bertujuan untuk menggantikan
bahagian skalar agregat dengan penggunaan pembolehubah skalar bebas. Ini
parameter mengawal saiz maksimum, dalam unit storan, agregat iaitu
dipertimbangkan untuk penggantian apabila menyusun untuk kelajuan (sra-max-skalarisasi-saiz-
Ospeed) atau saiz (sra-max-scalarization-size-Osize) masing-masing.

tm-max-saiz-agregat
Apabila membuat salinan pembolehubah setempat-benang dalam transaksi, parameter ini
menentukan saiz dalam bait selepas pembolehubah disimpan dengan pengelogan
berfungsi berbanding menyimpan/memulihkan pasangan urutan kod. Pilihan ini sahaja
terpakai apabila menggunakan -fgnu-tm.

graphite-max-nb-scop-params
Untuk mengelakkan kesan eksponen dalam gelung Grafit berubah, bilangan
parameter dalam Bahagian Kawalan Statik (SCoP) adalah terhad. Nilai lalai ialah 10
parameter. Pembolehubah yang nilainya tidak diketahui pada masa penyusunan dan ditakrifkan
di luar SCoP ialah parameter SCoP.

grafit-maks-bbs-per-fungsi
Untuk mengelakkan kesan eksponen dalam pengesanan SCoP, saiz fungsi
dianalisis oleh Grafit adalah terikat. Nilai lalai ialah 100 blok asas.

saiz-gelung-blok-jubin
Transformasi penyekatan gelung atau perlombongan jalur, didayakan dengan -blok-floop or
-floop-strip-mine, keluarkan lombong setiap gelung dalam sarang gelung dengan nombor yang diberikan
lelaran. Panjang jalur boleh diubah menggunakan saiz-gelung-blok-jubin
parameter. Nilai lalai ialah 51 lelaran.

saiz-gelung-buka-gulung-jem
Nyatakan faktor buka gulungan untuk -floop-unroll-and-jem pilihan. Nilai lalai
adalah 4.

loop-unroll-jam-depth
Tentukan dimensi yang akan dibuka (mengira dari gelung paling dalam) untuk
-floop-unroll-and-jem. Nilai lalai ialah 2.

ipa-cp-value-list-size
IPA-CP cuba menjejak semua kemungkinan nilai dan jenis yang dihantar ke fungsi
parameter untuk menyebarkannya dan melakukan penyahvirtualan. ipa-cp-value-
saiz senarai ialah bilangan maksimum nilai dan jenis yang disimpannya setiap satu formal
parameter sesuatu fungsi.

ipa-cp-eval-ambang
IPA-CP mengira skor heuristik keuntungan pengklonannya sendiri dan prestasinya
peluang pengklonan dengan markah yang melebihi ipa-cp-eval-ambang.

ipa-cp-rekursion-penalti
Peratusan penalti yang akan diterima oleh fungsi rekursif apabila ia dinilai
untuk pengklonan.

ipa-cp-single-call-penalti
Peratusan fungsi penalti yang mengandungi satu panggilan ke fungsi lain akan
terima apabila mereka dinilai untuk pengklonan.

ipa-max-agg-item
IPA-CP juga mampu untuk menyebarkan beberapa nilai skalar yang diluluskan dalam
agregat. ipa-max-agg-item mengawal bilangan maksimum nilai tersebut bagi setiap satu
parameter.

ipa-cp-loop-hint-bonus
Apabila IPA-CP menentukan bahawa calon pengklonan akan membuat bilangan
lelaran gelung yang diketahui, ia menambah bonus sebanyak ipa-cp-loop-hint-bonus kepada
markah keuntungan calon.

ipa-cp-array-index-hint-bonus
Apabila IPA-CP menentukan bahawa calon pengklonan akan membuat indeks tatasusunan
akses diketahui, ia menambah bonus sebanyak ipa-cp-array-index-hint-bonus kepada
markah keuntungan calon.

ipa-max-aa-langkah
Semasa analisis badan fungsinya, IPA-CP menggunakan analisis alias untuk
nilai jejak yang ditunjukkan oleh parameter fungsi. Agar tidak menghabiskan terlalu banyak masa
menganalisis fungsi yang besar, ia berputus asa dan menganggap semua memori terkubur selepas itu
memeriksa ipa-max-aa-langkah penyataan mengubah suai ingatan.

lto-partition
Nyatakan bilangan partition yang diingini yang dihasilkan semasa penyusunan WHOPR. The
bilangan partition hendaklah melebihi bilangan CPU yang digunakan untuk penyusunan. The
nilai lalai ialah 32.

lto-minpartition
Saiz partition minimum untuk WHOPR (dalam anggaran arahan). Ini menghalang
perbelanjaan membahagikan program yang sangat kecil kepada terlalu banyak partition.

cxx-max-namespaces-for-diagnostic-help
Bilangan maksimum ruang nama untuk dirujuk untuk cadangan semasa carian nama C++
gagal untuk pengecam. Lalai ialah 1000.

ambang kekerapan sinki
Kekerapan pelaksanaan relatif maksimum (dalam peratus) blok sasaran
relatif kepada blok asal pernyataan untuk membenarkan kenyataan tenggelam a
kenyataan. Nombor yang lebih besar mengakibatkan kenyataan yang lebih agresif tenggelam. The
nilai lalai ialah 75. Pelarasan positif kecil digunakan untuk penyata dengan
operan ingatan kerana ia lebih menguntungkan jadi tenggelam.

max-stores-to-sink
Bilangan maksimum pasangan simpanan bersyarat yang boleh ditenggelamkan. Tetapkan kepada 0 jika
sama ada vektorisasi (-free-vectorize) atau jika-penukaran (-ftree-gelung-jika-tukar)
adalah dilumpuhkan. Lalai ialah 2.

benarkan-stor-data-perlumbaan
Benarkan pengoptimum memperkenalkan perlumbaan data baharu di kedai. Tetapkan kepada 1 untuk membenarkan,
sebaliknya kepada 0. Pilihan ini didayakan secara lalai pada tahap pengoptimuman -Ofast.

nilai kes-ambang
Bilangan terkecil nilai berbeza yang terbaik untuk menggunakan jadual lompat
bukannya pokok dahan bersyarat. Jika nilai ialah 0, gunakan lalai untuk
mesin itu. Lalai ialah 0.

lebar pokok-reassoc
Tetapkan bilangan maksimum arahan yang dilaksanakan secara selari dalam pokok yang dikaitkan semula.
Parameter ini mengatasi heuristik bergantung sasaran yang digunakan secara lalai jika tiada
nilai sifar.

jadual-tekanan-algoritma
Pilih antara dua pelaksanaan yang tersedia bagi -fsched-tekanan. Algoritma 1
adalah pelaksanaan asal dan lebih berkemungkinan menghalang arahan daripada
sedang disusun semula. Algoritma 2 direka bentuk untuk menjadi kompromi antara
pendekatan yang agak konservatif yang diambil oleh algoritma 1 dan agak agresif
pendekatan yang diambil oleh penjadual lalai. Ia lebih banyak bergantung pada mempunyai a
fail daftar biasa dan kelas tekanan daftar tepat. Lihat haifa-sched.c
dalam sumber GCC untuk mendapatkan butiran lanjut.

Pilihan lalai bergantung pada sasaran.

max-slsr-cand-scan
Tetapkan bilangan maksimum calon sedia ada yang dipertimbangkan semasa mencari a
asas untuk calon pengurangan kekuatan garis lurus baharu.

asan-global
Dayakan pengesanan limpahan penimbal untuk objek global. Perlindungan seperti ini adalah
didayakan secara lalai jika anda menggunakan -fsanitize=alamat pilihan. Untuk melumpuhkan global
penggunaan perlindungan objek --param asan-globals=0.

asan-stack
Dayakan pengesanan limpahan penimbal untuk objek tindanan. Perlindungan seperti ini adalah
didayakan secara lalai apabila menggunakan-fsanitize=alamat. Untuk melumpuhkan penggunaan perlindungan tindanan
--param asan-stack=0 pilihan.

asan-instrumen-membaca
Dayakan pengesanan limpahan penimbal untuk bacaan memori. Perlindungan seperti ini adalah
didayakan secara lalai apabila menggunakan -fsanitize=alamat. Untuk melumpuhkan bacaan memori
penggunaan perlindungan --param asan-instrument-reads=0.

asan-instrumen-menulis
Dayakan pengesanan limpahan penimbal untuk penulisan memori. Perlindungan seperti ini adalah
didayakan secara lalai apabila menggunakan -fsanitize=alamat. Untuk melumpuhkan penulisan memori
penggunaan perlindungan --param asan-instrument-writes=0 pilihan.

asan-memintrin
Dayakan pengesanan untuk fungsi terbina dalam. Perlindungan jenis ini didayakan oleh
lalai apabila menggunakan -fsanitize=alamat. Untuk melumpuhkan perlindungan fungsi terbina dalam
penggunaan --param asan-memintrin=0.

asan-guna-selepas-pulangan
Dayakan pengesanan penggunaan selepas pemulangan. Perlindungan jenis ini didayakan oleh
lalai apabila menggunakan -fsanitize=alamat pilihan. Untuk melumpuhkan penggunaan selepas pemulangan
penggunaan pengesanan --param asan-use-after-return=0.

asan-instrumentasi-dengan-panggilan-ambang
Jika bilangan akses memori dalam fungsi yang diinstrumenkan adalah lebih besar atau sama dengan
nombor ini, gunakan panggilan balik dan bukannya semakan sebaris. Cth untuk melumpuhkan kod sebaris
penggunaan --param asan-instrumentasi-dengan-panggilan-ambang=0.

chkp-max-ctor-saiz
Pembina statik yang dihasilkan oleh Pemeriksa Sempadan Penunjuk mungkin menjadi sangat besar dan
meningkatkan masa penyusunan dengan ketara pada tahap pengoptimuman -O1 dan lebih tinggi. ini
parameter ialah bilangan maksimum penyata dalam satu pembina yang dijana.
Nilai lalai ialah 5000.

max-fsm-thread-path-inns
Bilangan maksimum arahan untuk disalin apabila menduplikasi blok pada keadaan terhingga
laluan benang lompat automatik. Lalai ialah 100.

max-fsm-thread-length
Bilangan maksimum blok asas pada laluan benang lompat automatik keadaan terhingga. The
lalai adalah 10.

max-fsm-thread-paths
Bilangan maksimum laluan utas lompat baharu untuk dibuat bagi automasi keadaan terhingga.
Lalai adalah 50.

Pilihan Mengawal yang Prapemproses
Pilihan ini mengawal prapemproses C, yang dijalankan pada setiap fail sumber C sebelum sebenar
penyusunan.

Sekiranya anda menggunakannya -E pilihan, tiada apa yang dilakukan kecuali prapemprosesan. Beberapa pilihan ini
masuk akal hanya bersama-sama dengan -E kerana ia menyebabkan output prapemproses menjadi
tidak sesuai untuk kompilasi sebenar.

-Wp,pilihan
Anda boleh menggunakan -Wp,pilihan untuk memintas pemacu pengkompil dan lulus pilihan terus melalui
kepada prapemproses. Jika pilihan mengandungi koma, ia dibahagikan kepada berbilang pilihan di
koma. Walau bagaimanapun, banyak pilihan diubah suai, diterjemahkan atau ditafsirkan oleh
pemacu pengkompil sebelum dihantar ke prapemproses, dan -Wp memintas secara paksa
fasa ini. Antara muka langsung prapemproses tidak didokumenkan dan tertakluk kepada
tukar, jadi bila boleh anda harus mengelak daripada menggunakan -Wp dan biarkan pemandu mengendalikan
pilihan sebaliknya.

-Xpreprocessor pilihan
Pas pilihan sebagai pilihan kepada prapemproses. Anda boleh menggunakan ini untuk membekalkan sistem-
pilihan prapemproses khusus yang tidak dikenali oleh GCC.

Jika anda ingin meluluskan pilihan yang memerlukan hujah, anda mesti menggunakan -Xpreprocessor
dua kali, sekali untuk pilihan dan sekali untuk hujah.

-no-integrated-cpp
Lakukan prapemprosesan sebagai pas berasingan sebelum penyusunan. Secara lalai, GCC berfungsi
prapemprosesan sebagai bahagian bersepadu tokenisasi dan penghuraian input. Jika pilihan ini
disediakan, bahagian hadapan bahasa yang sesuai (cc1, cc1plus, Atau cc1obj untuk C, C++,
dan Objektif-C, masing-masing) sebaliknya digunakan dua kali, sekali untuk prapemprosesan sahaja
dan sekali untuk penyusunan sebenar input praproses. Pilihan ini mungkin berguna
bersempena dengan -B or -pembungkus pilihan untuk menentukan prapemproses alternatif atau
melaksanakan pemprosesan tambahan sumber program antara prapemprosesan biasa dan
penyusunan.

-D nama
Pratakrif nama sebagai makro, dengan definisi 1.

-D nama=definisi
Kandungan dari definisi ditandakan dan diproses seolah-olah ia muncul semasa
terjemahan fasa tiga dalam a #tentukan arahan. Khususnya, takrifannya ialah
dipenggal oleh aksara baris baharu yang dibenamkan.

Jika anda menggunakan prapemproses daripada program seperti shell atau shell yang anda perlukan
untuk menggunakan sintaks petikan shell untuk melindungi aksara seperti ruang yang mempunyai a
maksud dalam sintaks shell.

Jika anda ingin mentakrifkan makro seperti fungsi pada baris arahan, tulis hujahnya
senaraikan dengan kurungan sekeliling sebelum tanda sama (jika ada). Tanda kurung ialah
bermakna kepada kebanyakan cangkerang, jadi anda perlu memetik pilihan. Dengan sh dan csh,
-D'nama(args...)=definisi' kerja.

-D dan -U pilihan diproses mengikut susunan yang diberikan pada baris arahan. Semua
-imacros fail dan -termasuk fail pilihan diproses selepas semua -D dan -U pilihan.

-U nama
Batalkan sebarang takrifan sebelumnya bagi nama, sama ada terbina dalam atau disediakan dengan a -D pilihan.

-undef
Jangan pratakrif mana-mana makro khusus sistem atau khusus GCC. Piawaian yang telah ditetapkan
makro kekal ditakrifkan.

-I dir
Tambah direktori dir ke senarai direktori yang akan dicari untuk fail pengepala.
Direktori yang dinamakan oleh -I dicari sebelum sistem standard termasuk direktori.
Jika direktori dir adalah sistem standard termasuk direktori, pilihan itu diabaikan
memastikan bahawa perintah carian lalai untuk direktori sistem dan layanan khas
pengepala sistem tidak dikalahkan. Jika dir bermula dengan "=", kemudian "=" akan menjadi
digantikan dengan awalan sysroot; lihat --sysroot dan -isysroot.

-o fail
Tulis output ke fail. Ini adalah sama seperti yang dinyatakan fail sebagai bukan pilihan kedua
hujah untuk cpp. gcc mempunyai tafsiran berbeza tentang hujah bukan pilihan kedua,
jadi anda mesti menggunakan -o untuk menentukan fail output.

-Dinding
Menghidupkan semua amaran pilihan yang diingini untuk kod biasa. Pada masa ini ini
is -Wkomen, -Wtrigraf, -Wmultichar dan amaran tentang promosi integer menyebabkan a
perubahan tanda masuk "#if" ungkapan. Ambil perhatian bahawa banyak amaran prapemproses
dihidupkan secara lalai dan tidak mempunyai pilihan untuk mengawalnya.

-Wkomen
-Wkomen
Beri amaran setiap kali urutan permulaan ulasan /* muncul dalam a /* komen, atau bila-bila masa a
garis serik belakang muncul dalam a // komen. (Kedua-dua bentuk mempunyai kesan yang sama.)

-Wtrigraf
Kebanyakan trigraf dalam ulasan tidak boleh menjejaskan maksud program. Walau bagaimanapun, a
trigraf yang akan membentuk baris baharu yang terlepas (??/ di hujung baris) boleh, oleh
menukar tempat komen bermula atau berakhir. Oleh itu, hanya trigraf yang akan terbentuk
baris baharu yang terlepas menghasilkan amaran di dalam ulasan.

Pilihan ini tersirat oleh -Dinding. Jika -Dinding tidak diberikan, pilihan ini masih didayakan
melainkan trigraf didayakan. Untuk mendapatkan penukaran trigraf tanpa amaran, tetapi dapatkan
yang lain -Dinding amaran, gunakan -trigraf -Dinding -Wno-trigraf.

-Wtradisional
Beri amaran tentang binaan tertentu yang berkelakuan berbeza dalam tradisional dan ISO C. Juga
memberi amaran tentang binaan ISO C yang tidak mempunyai persamaan C tradisional dan bermasalah
binaan yang harus dielakkan.

-Wundef
Beri amaran apabila pengecam yang bukan makro ditemui dalam #jika arahan,
di luar ditakrifkan. Pengecam sedemikian digantikan dengan sifar.

-Wunused-makro
Beri amaran tentang makro yang ditakrifkan dalam fail utama yang tidak digunakan. Makro ialah digunakan sekiranya ia
dikembangkan atau diuji untuk kewujudan sekurang-kurangnya sekali. Prapemproses juga akan memberi amaran jika
makro belum digunakan pada masa ia ditakrifkan semula atau tidak ditentukan.

Makro terbina dalam, makro yang ditakrifkan pada baris arahan dan makro yang ditakrifkan dalam termasuk
fail tidak diberi amaran.

Catatan: Jika makro sebenarnya digunakan, tetapi hanya digunakan dalam blok bersyarat yang dilangkau, maka
CPP akan melaporkannya sebagai tidak digunakan. Untuk mengelakkan amaran dalam kes sedemikian, anda mungkin menambah baik
skop takrifan makro dengan, sebagai contoh, memindahkannya ke yang pertama dilangkau
blok. Sebagai alternatif, anda boleh menyediakan penggunaan tiruan dengan sesuatu seperti:

#jika ditakrifkan_makro_menyebabkan_amaran
#endif

-Wendif-label
Beri amaran setiap kali an #selamat atau #endif diikuti dengan teks. Ini biasanya berlaku dalam
kod borang

#jika FOO
...
#lain FOO
...
#endif FOO

"FOO" kedua dan ketiga sepatutnya dalam ulasan, tetapi selalunya tidak berada dalam program lama.
Amaran ini dihidupkan secara lalai.

-Werror
Jadikan semua amaran menjadi kesilapan yang sukar. Kod sumber yang mencetuskan amaran adalah
ditolak.

-Wsystem-headers
Keluarkan amaran untuk kod dalam pengepala sistem. Ini biasanya tidak membantu dalam mencari
pepijat dalam kod anda sendiri, oleh itu ditindas. Jika anda bertanggungjawab ke atas sistem
perpustakaan, anda mungkin mahu melihatnya.

-w Sekat semua amaran, termasuk amaran yang dikeluarkan oleh GNU CPP secara lalai.

-pedantik
Keluarkan semua diagnostik mandatori yang disenaraikan dalam piawaian C. Sebahagian daripada mereka tinggal
keluar secara lalai, kerana ia sering mencetuskan kod tidak berbahaya.

-kesilapan-pedantik
Keluarkan semua diagnostik mandatori dan jadikan semua diagnostik mandatori menjadi ralat.
Ini termasuk diagnostik mandatori yang tidak dikeluarkan oleh GCC -pedantik tetapi memperlakukan sebagai
amaran.

-M Daripada mengeluarkan hasil prapemprosesan, keluarkan peraturan yang sesuai untuk membuat
menerangkan kebergantungan fail sumber utama. Prapemproses mengeluarkan satu
membuat peraturan yang mengandungi nama fail objek untuk fail sumber itu, titik bertindih dan nama
daripada semua fail yang disertakan, termasuk yang datang dari -termasuk or -imacros perintah-
pilihan baris.

Melainkan dinyatakan secara eksplisit (dengan -MT or -MQ), nama fail objek terdiri daripada
nama fail sumber dengan sebarang akhiran digantikan dengan akhiran fail objek dan dengan sebarang
bahagian direktori utama dialih keluar. Sekiranya terdapat banyak fail yang disertakan maka peraturannya adalah
berpecah kepada beberapa baris menggunakan \-baris baru. Peraturan itu tidak mempunyai perintah.

Pilihan ini tidak menyekat keluaran nyahpepijat prapemproses, seperti -dM. Untuk mengelakkan
mencampurkan output nyahpepijat sedemikian dengan peraturan pergantungan yang anda harus nyatakan secara eksplisit
fail output pergantungan dengan -MF, atau gunakan pembolehubah persekitaran seperti
DEPENDENCE_OUTPUT. Output nyahpepijat masih akan dihantar ke aliran keluaran biasa sebagai
Normal.

Pemergian -M kepada pemandu membayangkan -E, dan menyekat amaran dengan tersirat -w.

-MM suka -M tetapi jangan sebutkan fail pengepala yang terdapat dalam direktori pengepala sistem,
mahupun fail pengepala yang disertakan, secara langsung atau tidak langsung, daripada pengepala sedemikian.

Ini membayangkan bahawa pilihan kurungan sudut atau petikan berganda dalam #include
arahan tidak dengan sendirinya menentukan sama ada pengepala itu akan muncul -MM
keluaran pergantungan. Ini ialah sedikit perubahan dalam semantik daripada GCC versi 3.0 dan
lebih awal.

-MF fail
Apabila digunakan dengan -M or -MM, menentukan fail untuk menulis kebergantungan. Jika tidak -MF
suis diberikan prapemproses menghantar peraturan ke tempat yang sama yang akan dihantar
keluaran praproses.

Apabila digunakan dengan pilihan pemandu -MD or -MMD, -MF mengatasi kebergantungan lalai
fail keluaran.

-MG Bersempena dengan pilihan seperti -M meminta penjanaan pergantungan, -MG menganggap
fail pengepala yang hilang dijana fail dan menambahkannya ke senarai pergantungan tanpa
menimbulkan ralat. Nama fail kebergantungan diambil terus daripada "#include"
arahan tanpa menyediakan sebarang laluan. -MG juga menyekat keluaran praproses, sebagai a
fail pengepala yang hilang menjadikan ini tidak berguna.

Ciri ini digunakan dalam pengemaskinian automatik makefiles.

-MP Pilihan ini mengarahkan CPP untuk menambah sasaran palsu untuk setiap kebergantungan selain daripada
fail utama, menyebabkan masing-masing tidak bergantung pada apa-apa. Peraturan dummy ini mengatasi ralat
membuat memberi jika anda mengalih keluar fail pengepala tanpa mengemas kini Makefile untuk memadankan.

Ini adalah output biasa:

ujian.o: ujian.c ujian.h

test.h:

-MT sasaran
Tukar sasaran peraturan yang dikeluarkan oleh penjanaan pergantungan. Secara lalai CPP mengambil
nama fail input utama, memadam sebarang komponen direktori dan sebarang akhiran fail
seperti .c, dan menambahkan akhiran objek biasa platform. Hasilnya adalah sasaran.

An -MT pilihan akan menetapkan sasaran tepat pada rentetan yang anda tentukan. Jika anda mahu
berbilang sasaran, anda boleh menentukannya sebagai satu hujah untuk -MT, atau gunakan berbilang
-MT pilihan.

Sebagai contoh, -MT '$(objpfx)foo.o' mungkin memberi

$(objpfx)foo.o: foo.c

-MQ sasaran
Sama seperti -MT, tetapi ia memetik mana-mana aksara yang istimewa untuk Dibuat.
-MQ '$(objpfx)foo.o' memberikan

$$(objpfx)foo.o: foo.c

Sasaran lalai dipetik secara automatik, seolah-olah ia diberikan dengan -MQ.

-MD -MD adalah bersamaan dengan -M -MF fail, kecuali itu -E tidak tersirat. Pemandu itu
menentukan fail berdasarkan sama ada an -o pilihan diberi. Jika ya, pemandu menggunakannya
hujah tetapi dengan akhiran daripada .d, jika tidak, ia mengambil nama fail input,
mengalih keluar sebarang komponen direktori dan akhiran, dan menggunakan a .d akhiran.

If -MD digunakan bersama dengan -E, ada -o suis difahami untuk menentukan
fail output kebergantungan, tetapi jika digunakan tanpa -E, masing-masing -o difahami untuk menyatakan a
fail objek sasaran.

Sejak -E tidak tersirat, -MD boleh digunakan untuk menjana fail output kebergantungan sebagai a
kesan sampingan proses penyusunan.

-MMD
suka -MD kecuali menyebut fail pengepala pengguna sahaja, bukan fail pengepala sistem.

-fpch-deps
Apabila menggunakan pengepala yang telah dikompilasi, bendera ini akan menyebabkan bendera keluaran kebergantungan
juga menyenaraikan fail daripada kebergantungan pengepala yang telah disusun sebelumnya. Jika tidak dinyatakan sahaja
pengepala yang telah dikompilasi akan disenaraikan dan bukan fail yang digunakan untuk menciptanya
kerana fail tersebut tidak dirujuk apabila pengepala yang telah dikompilasi digunakan.

-fpch-praproses
Pilihan ini membenarkan penggunaan pengepala yang telah disusun bersama-sama dengan -E. Ia memasukkan khas
"#pragma", "#pragma GCC pch_preprocess "nama fail"" dalam output untuk menandakan tempat
tempat pengepala yang telah dikompilasi ditemui, dan tajuknya nama fail. Apabila -fpraproses dalam
gunakan, GCC mengenali "#pragma" ini dan memuatkan PCH.

Pilihan ini dimatikan secara lalai, kerana output praproses yang terhasil hanyalah
sangat sesuai sebagai input kepada GCC. Ia dihidupkan oleh -jimat-temps.

Anda tidak sepatutnya menulis "#pragma" ini dalam kod anda sendiri, tetapi selamat untuk mengeditnya
nama fail jika fail PCH tersedia di lokasi yang berbeza. Nama fail mungkin
mutlak atau ia mungkin relatif kepada direktori semasa GCC.

-x c
-x C ++
-x objektif-c
-x pemasang-dengan-cpp
Tentukan bahasa sumber: C, C++, Objektif-C atau perhimpunan. Ini tiada kena mengena
dengan pematuhan piawai atau lanjutan; ia hanya memilih sintaks asas yang mana
jangkakan. Jika anda tidak memberikan pilihan ini, cpp akan menyimpulkan bahasa daripada
sambungan fail sumber: .c, . Cc, .m, Atau .S. Beberapa sambungan biasa lain untuk
C++ dan pemasangan juga diiktiraf. Jika cpp tidak mengenali sambungan, ia
akan menganggap fail sebagai C; ini adalah mod yang paling generik.

Catatan: Versi cpp sebelumnya diterima a -bahasa pilihan yang memilih kedua-dua
bahasa dan tahap pematuhan piawai. Pilihan ini telah dialih keluar, kerana
ia bercanggah dengan -l pilihan.

-std=standard
-ansi
Nyatakan standard yang harus dipatuhi oleh kod tersebut. Pada masa ini CPP mengetahui tentang C
dan piawaian C++; yang lain boleh ditambah pada masa hadapan.

standard mungkin salah satu daripada:

"c90"
"c89"
"iso9899:1990"
Piawaian ISO C dari 1990. c90 ialah singkatan biasa untuk versi ini
piawaian.

. -ansi pilihan adalah bersamaan dengan -std=c90.

"iso9899:199409"
Piawaian 1990 C, seperti yang dipinda pada tahun 1994.

"iso9899:1999"
"c99"
"iso9899:199x"
"c9x"
Standard ISO C yang disemak semula, diterbitkan pada Disember 1999. Sebelum diterbitkan, ini
dikenali sebagai C9X.

"iso9899:2011"
"c11"
"c1x"
Standard ISO C yang disemak semula, diterbitkan pada Disember 2011. Sebelum diterbitkan, ini
dikenali sebagai C1X.

"gnu90"
"gnu89"
Standard 1990 C ditambah sambungan GNU. Ini adalah lalai.

"gnu99"
"gnu9x"
Standard 1999 C ditambah sambungan GNU.

"gnu11"
"gnu1x"
Standard 2011 C ditambah sambungan GNU.

"c++98"
Piawaian ISO C++ 1998 ditambah pindaan.

"gnu++98"
Sama seperti -std=c++98 ditambah sambungan GNU. Ini adalah lalai untuk kod C++.

-saya- Pisahkan laluan sertakan. Mana-mana direktori yang ditentukan dengan -I pilihan sebelum ini -saya- adalah
mencari hanya untuk pengepala yang diminta dengan "#include "fail""; mereka tidak dicari
"#termasukfail>". Jika direktori tambahan ditentukan dengan -I pilihan selepas
-saya-, direktori tersebut dicari untuk semua #include arahan.

Di samping itu, -saya- menghalang penggunaan direktori direktori fail semasa sebagai
direktori carian pertama untuk "#include "fail"". Pilihan ini telah ditamatkan.

-nostdinc
Jangan cari direktori sistem standard untuk fail pengepala. Hanya direktori
anda telah tentukan dengan -I pilihan (dan direktori fail semasa, jika
sesuai) dicari.

-nostdinc++
Jangan cari fail pengepala dalam direktori standard khusus C++, tetapi lakukannya
cari direktori standard yang lain. (Pilihan ini digunakan semasa membina C++
perpustakaan.)

-termasuk fail
Proses fail seolah-olah "#include "file"" muncul sebagai baris pertama sumber utama
fail. Walau bagaimanapun, direktori pertama mencari fail adalah prapemproses berfungsi
direktori sebaliknya of direktori yang mengandungi fail sumber utama. Jika tidak ditemui
di sana, ia dicari dalam baki rantai carian "#include "..."" sebagai
Normal.

Sekiranya berganda -termasuk pilihan diberikan, fail disertakan dalam susunan mereka
muncul pada baris arahan.

-imacros fail
Betul-betul suka -termasuk, kecuali mana-mana output yang dihasilkan melalui pengimbasan fail dilemparkan
jauh. Makro yang ditakrifkannya kekal ditakrifkan. Ini membolehkan anda memperoleh semua makro
daripada pengepala tanpa juga memproses pengisytiharannya.

Semua fail yang ditentukan oleh -imacros diproses sebelum semua fail ditentukan oleh -termasuk.

-idirafter dir
Carian dir untuk fail pengepala, tetapi lakukannya selepas semua direktori yang ditentukan dengan -I dan juga
direktori sistem standard telah habis. dir dianggap sebagai sistem termasuk
direktori. Jika dir bermula dengan "=", kemudian "=" akan digantikan oleh sysroot
awalan; lihat --sysroot dan -isysroot.

-iprefix awalan
Tentukan awalan sebagai awalan untuk seterusnya -idengan awalan pilihan. Jika awalan
mewakili direktori, anda harus memasukkan yang terakhir /.

-idengan awalan dir
-idengan awalan sebelum dir
Tambah dir kepada awalan yang dinyatakan sebelum ini dengan -iprefix, dan tambahkan yang terhasil
direktori ke laluan carian sertakan. -idengan awalan sebelum meletakkannya di tempat yang sama -I
akan; -idengan awalan meletakkannya di mana -idirafter akan.

-isysroot dir
Pilihan ini adalah seperti --sysroot pilihan, tetapi terpakai hanya pada fail pengepala (kecuali untuk
Sasaran Darwin, di mana ia digunakan untuk kedua-dua fail pengepala dan perpustakaan). Lihat
--sysroot pilihan untuk maklumat lanjut.

-imultilib dir
Penggunaan dir sebagai subdirektori direktori yang mengandungi pengepala C++ khusus sasaran.

-isistem dir
Carian dir untuk fail pengepala, selepas semua direktori yang ditentukan oleh -I tetapi sebelum
direktori sistem standard. Tandainya sebagai direktori sistem, supaya ia menjadi sama
layanan khas seperti yang digunakan pada direktori sistem standard. Jika dir bermula
dengan "=", maka "=" akan digantikan dengan awalan sysroot; lihat --sysroot dan
-isysroot.

-iquote dir
Carian dir hanya untuk fail pengepala yang diminta dengan "#include "fail""; mereka tidak
mencari "#includefail>", sebelum semua direktori yang ditentukan oleh -I dan sebelum
direktori sistem standard. Jika dir bermula dengan "=", kemudian "=" akan digantikan dengan
awalan sysroot; lihat --sysroot dan -isysroot.

-fdirectives-sahaja
Semasa prapemprosesan, kendalikan arahan, tetapi jangan kembangkan makro.

Tingkah laku pilihan bergantung pada -E dan -fpraproses pilihan.

Dengan -E, prapemprosesan terhad kepada pengendalian arahan seperti "#define",
"#ifdef", dan "#error". Operasi prapemproses lain, seperti pengembangan makro dan
penukaran trigraf tidak dilakukan. Selain itu, -dD pilihan adalah secara tersirat
yang aktif.

Dengan -fpraproses, pratakrif baris arahan dan kebanyakan makro terbina ialah
kurang upaya. Makro seperti "__LINE__", yang bergantung secara kontekstual, dikendalikan
biasalah. Ini membolehkan penyusunan fail yang sebelum ini dipraproses dengan "-E
-fdirectives-sahaja".

Dengan kedua-duanya -E dan -fpraproses, peraturan untuk -fpraproses diutamakan. ini
membolehkan prapemprosesan penuh fail yang sebelum ini dipraproses dengan "-E
-fdirectives-sahaja".

-fdollars-in-identifiers
Terima $ dalam pengecam.

-pengenal-diperpanjang
Terima nama aksara universal dalam pengecam. Pilihan ini didayakan secara lalai
untuk C99 (dan versi standard C yang lebih baru) dan C++.

-fno-canonical-system-headers
Semasa prapemprosesan, jangan pendekkan laluan pengepala sistem dengan kanonik.

-fpraproses
Nyatakan kepada prapemproses bahawa fail input telah pun dipraproses. ini
menyekat perkara seperti pengembangan makro, penukaran trigraf, penyambungan baris baharu yang terlepas,
dan pemprosesan kebanyakan arahan. Prapemproses masih mengecam dan mengalih keluar
komen, supaya anda boleh menghantar fail yang dipraproses dengan -C kepada penyusun tanpa
masalah. Dalam mod ini, prapemproses bersepadu adalah lebih sedikit daripada tokenizer
untuk hujung hadapan.

-fpraproses adalah tersirat jika fail input mempunyai salah satu sambungan .i, .ii or .mi.
Ini ialah sambungan yang GCC gunakan untuk fail praproses yang dibuat oleh -jimat-temps.

-ftabstop=lebar
Tetapkan jarak antara hentian tab. Ini membantu prapemproses melaporkan lajur yang betul
nombor dalam amaran atau ralat, walaupun jika tab muncul pada baris. Jika nilainya kurang
daripada 1 atau lebih daripada 100, pilihan itu diabaikan. Lalai ialah 8.

-fdebug-cpp
Pilihan ini hanya berguna untuk menyahpepijat GCC. Apabila digunakan dengan -E, membuang penyahpepijatan
maklumat tentang peta lokasi. Setiap token dalam output didahului oleh pembuangan
peta kepunyaan lokasinya. Tempat pembuangan peta yang menyimpan lokasi token
akan menjadi:

{"P":F ;"F":F ;"L": ;"C": ;"S": ;"M": ;"E": ,"loc": }

Apabila digunakan tanpa -E, pilihan ini tidak mempunyai kesan.

-ftrack-makro-pengembangan[=tahap]
Jejaki lokasi token merentas pengembangan makro. Ini membolehkan pengkompil memancarkan
diagnostik tentang timbunan pengembangan makro semasa apabila ralat kompilasi berlaku dalam
pengembangan makro. Menggunakan pilihan ini menjadikan prapemproses dan pengkompil menggunakan
lebih banyak ingatan. The tahap parameter boleh digunakan untuk memilih tahap ketepatan token
pengesanan lokasi sekali gus mengurangkan penggunaan memori jika perlu. Nilai 0 of
tahap menyahaktifkan pilihan ini seolah-olah tidak -ftrack-makro-pengembangan hadir pada
baris arahan. Nilai 1 menjejaki lokasi token dalam mod terdegradasi demi kepentingan
overhed memori minimum. Dalam mod ini semua token yang terhasil daripada pengembangan an
hujah makro seperti fungsi mempunyai lokasi yang sama. Nilai 2 menjejaki token
lokasi sepenuhnya. Nilai ini adalah memori yang paling lapar. Apabila pilihan ini diberikan
tiada hujah, nilai parameter lalai ialah 2.

Ambil perhatian bahawa "-ftrack-macro-expansion=2" diaktifkan secara lalai.

-fexec-charset=carta
Tetapkan set aksara pelaksanaan, digunakan untuk rentetan dan pemalar aksara. lalai
ialah UTF-8. carta boleh menjadi sebarang pengekodan yang disokong oleh perpustakaan "iconv" sistem
rutin.

-fwide-exec-charset=carta
Tetapkan set aksara pelaksanaan lebar, digunakan untuk rentetan lebar dan pemalar aksara.
Lalai ialah UTF-32 atau UTF-16, yang mana sepadan dengan lebar "wchar_t". Sebagai
dengan -fexec-charset, carta boleh menjadi sebarang pengekodan yang disokong oleh "iconv" sistem
rutin perpustakaan; walau bagaimanapun, anda akan menghadapi masalah dengan pengekodan yang tidak sesuai
betul-betul dalam "wchar_t".

-finput-charset=carta
Tetapkan set aksara input, digunakan untuk terjemahan daripada set aksara input
fail ke set aksara sumber yang digunakan oleh GCC. Jika tempat tidak menyatakan, atau GCC
tidak boleh mendapatkan maklumat ini dari tempat, lalainya ialah UTF-8. Ini boleh jadi
ditindih oleh sama ada tempat atau pilihan baris arahan ini. Pada masa ini perintah-
pilihan baris diutamakan jika terdapat konflik. carta boleh jadi sebarang pengekodan
disokong oleh rutin perpustakaan "iconv" sistem.

-fworking-direktori
Dayakan penjanaan penanda garis dalam output prapemproses yang akan membenarkan pengkompil
mengetahui direktori kerja semasa pada masa prapemprosesan. Apabila pilihan ini
didayakan, prapemproses akan mengeluarkan, selepas penanda garis awal, penanda garis kedua
dengan direktori kerja semasa diikuti dengan dua garis miring. GCC akan menggunakan ini
direktori, apabila ia hadir dalam input praproses, sebagai direktori yang dipancarkan sebagai
direktori kerja semasa dalam beberapa format maklumat penyahpepijatan. Pilihan ini adalah
didayakan secara tersirat jika maklumat penyahpepijatan didayakan, tetapi ini boleh dihalang dengan
bentuk yang dinafikan -fno-working-directory. Jika -P bendera hadir dalam arahan
baris, pilihan ini tidak mempunyai kesan, kerana tiada arahan "#line" dikeluarkan sama sekali.

-fno-show-lajur
Jangan cetak nombor lajur dalam diagnostik. Ini mungkin perlu jika diagnostik
diimbas oleh program yang tidak memahami nombor lajur, seperti
dejagnu.

-A predikat=menjawab
Buat penegasan dengan predikat predikat dan jawapannya menjawab. Borang ini adalah
lebih disukai daripada bentuk lama -A predikat(menjawab), yang masih disokong, kerana ia
tidak menggunakan aksara khas shell.

-A -predikat=menjawab
Batalkan penegasan dengan predikat predikat dan jawapannya menjawab.

-dCHARS
CAJ ialah urutan satu atau lebih daripada aksara berikut, dan tidak boleh
didahului oleh ruang. Watak lain ditafsirkan oleh pengkompil yang betul, atau
dikhaskan untuk versi masa hadapan GCC, dan oleh itu diabaikan secara senyap. Jika anda nyatakan
watak yang tingkah lakunya bercanggah, hasilnya tidak dapat ditentukan.

M Daripada keluaran biasa, hasilkan senarai #tentukan arahan untuk semua
makro yang ditakrifkan semasa pelaksanaan prapemproses, termasuk pratakrif
makro. Ini memberi anda cara untuk mengetahui perkara yang dipratakrifkan dalam versi anda
prapemproses. Dengan mengandaikan anda tidak mempunyai fail foo.h, arahan

sentuh fo.h; cpp -dM foo.h

akan menunjukkan semua makro yang dipratentukan.

Jika anda menggunakan -dM tanpa -E pilihan, -dM ditafsirkan sebagai sinonim untuk
-fdump-rtl-mach.

D suka M kecuali dalam dua aspek: ia berlaku tidak termasuk makro yang dipratentukan, dan ia
output kedua-dua yang #tentukan arahan dan hasil prapemprosesan. Kedua-dua jenis
daripada output pergi ke fail output standard.

N suka D, tetapi hanya mengeluarkan nama makro, bukan pengembangannya.

I Output #include arahan sebagai tambahan kepada hasil prapemprosesan.

U suka D kecuali bahawa hanya makro yang dikembangkan, atau ketakrifannya diuji
dalam arahan prapemproses, adalah output; output ditangguhkan sehingga penggunaan atau
ujian makro; dan #undef arahan juga output untuk makro yang diuji tetapi
tidak ditentukan pada masa itu.

-P Menghalang penjanaan penanda garis dalam output daripada prapemproses. Ini mungkin
berguna apabila menjalankan prapemproses pada sesuatu yang bukan kod C, dan akan dihantar
kepada program yang mungkin dikelirukan oleh penanda garis.

-C Jangan buang komen. Semua komen dihantar ke fail output, kecuali
untuk ulasan dalam arahan yang diproses, yang dipadamkan bersama arahan.

Anda harus bersedia untuk kesan sampingan apabila menggunakan -C; ia menyebabkan prapemproses
menganggap komen sebagai token dalam hak mereka sendiri. Sebagai contoh, ulasan yang muncul di
permulaan apa yang akan menjadi garis arahan mempunyai kesan mengubah baris itu menjadi
talian sumber biasa, kerana token pertama pada talian itu bukan lagi a #.

-CC Jangan buang ulasan, termasuk semasa pengembangan makro. Ini seperti -C, kecuali
bahawa komen yang terkandung dalam makro juga dihantar ke fail output di mana
makro diperluaskan.

Sebagai tambahan kepada kesan sampingan -C pilihan, -CC pilihan menyebabkan semua gaya C++
ulasan di dalam makro untuk ditukar kepada ulasan gaya C. Ini untuk mengelakkan nanti
penggunaan makro itu daripada mengulas baki baris sumber secara tidak sengaja.

. -CC pilihan biasanya digunakan untuk menyokong komen lint.

-tradisional-cpp
Cuba tiru tingkah laku prapemproses C lama, berbanding ISO C
prapemproses.

-trigraf
Proses urutan trigraf. Ini adalah urutan tiga aksara, semuanya bermula dengan
??, yang ditakrifkan oleh ISO C untuk mewakili aksara tunggal. Sebagai contoh, ??/ berdiri
untuk \, Jadi '??/n' ialah pemalar aksara untuk baris baharu. Secara lalai, GCC mengabaikan
trigraf, tetapi dalam mod pematuhan standard ia menukarnya. Lihat -std dan -ansi
pilihan.

Sembilan trigraf dan penggantinya ialah

Trigraf: ??( ??) ??< ??> ??= ??/ ??' ??! ??-
Penggantian: [ ] { } # \ ^ | ~

-peta semula
Dayakan kod khas untuk bekerja di sekitar sistem fail yang hanya membenarkan fail yang sangat pendek
nama, seperti MS-DOS.

- membantu
--sasaran-bantuan
Cetak teks yang menerangkan semua pilihan baris perintah dan bukannya pramemproses apa-apa.

-v Mod bertele-tele. Cetak nombor versi GNU CPP pada permulaan pelaksanaan, dan
laporkan bentuk akhir laluan sertakan.

-H Cetak nama setiap fail pengepala yang digunakan, sebagai tambahan kepada aktiviti biasa yang lain. setiap satu
nama diinden untuk menunjukkan sejauh mana dalam #include timbunan itu. Pengepala prapenyusun
fail juga dicetak, walaupun ia didapati tidak sah; precompile yang tidak sah
fail pengepala dicetak dengan ...x dan yang sah dengan ...! .

-turun
--versi
Cetak nombor versi GNU CPP. Dengan satu sengkang, teruskan ke praproses seperti biasa.
Dengan dua sengkang, keluar segera.

Pemergian Pilihan kepada yang Pemasang
Anda boleh menghantar pilihan kepada pemasang.

-Wa,pilihan
Pas pilihan sebagai pilihan kepada penghimpun. Jika pilihan mengandungi koma, ia dibelah
menjadi berbilang pilihan pada koma.

-Xassembler pilihan
Pas pilihan sebagai pilihan kepada pemasang. Anda boleh menggunakan ini untuk membekalkan khusus sistem
pilihan pemasang yang tidak dikenali oleh GCC.

Jika anda ingin meluluskan pilihan yang memerlukan hujah, anda mesti menggunakan -Xassembler dua kali,
sekali untuk pilihan dan sekali untuk hujah.

Pilihan untuk Menghubungkan
Pilihan ini mula dimainkan apabila pengkompil memautkan fail objek ke dalam boleh laku
fail keluaran. Mereka tidak bermakna jika pengkompil tidak melakukan langkah pautan.

nama fail objek
Nama fail yang tidak berakhir dengan akhiran khas yang diiktiraf dianggap sebagai nama an
fail objek atau perpustakaan. (Fail objek dibezakan daripada perpustakaan oleh pemaut
mengikut kandungan fail.) Jika pautan dilakukan, fail objek ini digunakan sebagai
input kepada penghubung.

-c
-S
-E Jika mana-mana pilihan ini digunakan, maka pemaut tidak dijalankan, dan nama fail objek
tidak boleh dijadikan hujah.

-fius-ld=bfd
Menggunakan bfd pemaut bukannya pemaut lalai.

-fius-ld=emas
Menggunakan emas pemaut bukannya pemaut lalai.

-lperpustakaan
-l perpustakaan
Cari perpustakaan bernama perpustakaan apabila memaut. (Alternatif kedua dengan
perpustakaan sebagai hujah berasingan hanya untuk pematuhan POSIX dan tidak disyorkan.)

Ia membuat perbezaan di mana dalam arahan anda menulis pilihan ini; penghubung mencari
dan memproses perpustakaan dan fail objek mengikut susunan yang ditentukan. Oleh itu, foo.o
-lz bar.o mencari perpustakaan z selepas fail foo.o tetapi sebelum bar.o. Jika bar.o merujuk kepada
berfungsi di z, fungsi tersebut mungkin tidak dimuatkan.

Pemaut mencari senarai standard direktori untuk perpustakaan, yang sebenarnya
fail bernama perpustakaan.a. Penyambung kemudian menggunakan fail ini seolah-olah ia telah ditentukan
tepat dengan nama.

Direktori yang dicari termasuk beberapa direktori sistem standard serta mana-mana yang anda
nyatakan dengan -L.

Biasanya fail yang ditemui dengan cara ini ialah fail perpustakaan---fail arkib yang ahlinya
fail objek. Penyambung mengendalikan fail arkib dengan mengimbas melaluinya untuk ahli
yang mentakrifkan simbol yang setakat ini telah dirujuk tetapi tidak ditakrifkan. Tetapi jika
fail yang ditemui ialah fail objek biasa, ia dipautkan mengikut cara biasa. The
hanya perbezaan antara menggunakan an -l pilihan dan menentukan nama fail ialah itu -l
mengelilingi perpustakaan dengan lib dan .a dan mencari beberapa direktori.

-lobjc
Anda memerlukan kes khas ini -l pilihan untuk memautkan Objektif-C atau
Program Objektif-C++.

-nostartfiles
Jangan gunakan fail permulaan sistem standard semasa memaut. Sistem piawai
perpustakaan digunakan seperti biasa, melainkan -nostdlib or -nodefaultlibs digunakan.

-nodefaultlibs
Jangan gunakan perpustakaan sistem standard semasa memaut. Hanya perpustakaan yang anda tentukan
dihantar kepada pemaut, dan pilihan yang menentukan pautan pustaka sistem, seperti
as -statik-libgcc or -shared-libgcc, diabaikan. Fail permulaan standard digunakan
biasa, melainkan -nostartfiles digunakan.

Pengkompil boleh menjana panggilan ke "memcmp", "memset", "memcpy" dan "memmove". Ini
entri biasanya diselesaikan oleh entri dalam libc. Pintu masuk ini sepatutnya
dibekalkan melalui beberapa mekanisme lain apabila pilihan ini ditentukan.

-nostdlib
Jangan gunakan fail atau pustaka permulaan sistem standard semasa memaut. Tiada permulaan
fail dan hanya perpustakaan yang anda tentukan dihantar kepada pemaut, dan pilihan
menentukan kaitan perpustakaan sistem, seperti -statik-libgcc or -shared-libgcc,
tidak dipedulikan.

Pengkompil boleh menjana panggilan ke "memcmp", "memset", "memcpy" dan "memmove". Ini
entri biasanya diselesaikan oleh entri dalam libc. Pintu masuk ini sepatutnya
dibekalkan melalui beberapa mekanisme lain apabila pilihan ini ditentukan.

Salah satu perpustakaan standard yang dipintas -nostdlib dan -nodefaultlibs is libgcc.a,
perpustakaan subrutin dalaman yang GCC gunakan untuk mengatasi kelemahan tertentu
mesin, atau keperluan khas untuk beberapa bahasa.

Dalam kebanyakan kes, anda perlukan libgcc.a walaupun anda ingin mengelakkan perpustakaan standard lain.
Dalam erti kata lain, apabila anda menentukan -nostdlib or -nodefaultlibs anda sepatutnya
nyatakan -lgcc juga. Ini memastikan anda tidak mempunyai rujukan yang belum diselesaikan
subrutin perpustakaan GCC dalaman. (Contoh subrutin dalaman tersebut ialah
"__main", digunakan untuk memastikan pembina C++ dipanggil.)

-pai
Menghasilkan kedudukan bebas boleh laku pada sasaran yang menyokongnya. Untuk diramal
keputusan, anda juga mesti menentukan set pilihan yang sama yang digunakan untuk penyusunan (-fpie,
-fPIE, atau subopsyen model) apabila anda menentukan pilihan pemaut ini.

-tiada pai
Jangan menghasilkan jawatan yang boleh dilaksanakan bebas.

-rdinamik
Pas bendera -eksport-dinamik kepada penghubung ELF, pada sasaran yang menyokongnya. ini
mengarahkan penyambung untuk menambah semua simbol, bukan sahaja yang digunakan, pada simbol dinamik
meja. Pilihan ini diperlukan untuk beberapa kegunaan "dlopen" atau untuk membolehkan mendapatkan
jejak belakang dari dalam program.

-s Alih keluar semua jadual simbol dan maklumat penempatan semula daripada boleh laku.

-statik
Pada sistem yang menyokong pemautan dinamik, ini menghalang pemautan dengan perkongsian
perpustakaan. Pada sistem lain, pilihan ini tidak mempunyai kesan.

-berkongsi
Menghasilkan objek kongsi yang kemudiannya boleh dikaitkan dengan objek lain untuk membentuk satu
boleh dilaksanakan. Tidak semua sistem menyokong pilihan ini. Untuk hasil yang boleh diramal, anda mesti
juga tentukan set pilihan yang sama yang digunakan untuk penyusunan (-fpic, -fPIC, atau model
suboptions) apabila anda menentukan pilihan pemaut ini.[1]

-shared-libgcc
-statik-libgcc
Pada sistem yang menyediakan libgcc sebagai perpustakaan kongsi, pilihan ini memaksa penggunaan
sama ada versi kongsi atau statik, masing-masing. Jika tiada versi kongsi libgcc adalah
dibina apabila pengkompil dikonfigurasikan, pilihan ini tidak mempunyai kesan.

Terdapat beberapa situasi di mana aplikasi harus menggunakan perkongsian libgcc
bukannya versi statik. Yang paling biasa ialah apabila permohonan itu
ingin membuang dan menangkap pengecualian merentasi perpustakaan kongsi yang berbeza. Kalau macam itu,
setiap perpustakaan serta aplikasi itu sendiri harus menggunakan perkongsian libgcc.

Oleh itu, pemacu G++ dan GCJ menambah secara automatik -shared-libgcc bila-bila masa anda membina
perpustakaan kongsi atau boleh laku utama, kerana program C++ dan Java biasanya digunakan
pengecualian, jadi ini adalah perkara yang betul untuk dilakukan.

Sebaliknya, jika anda menggunakan pemacu GCC untuk mencipta perpustakaan kongsi, anda mungkin mendapati bahawa ia
tidak selalu dikaitkan dengan perkongsian libgcc. Jika GCC menemui, pada konfigurasinya
masa, bahawa anda mempunyai pemaut bukan GNU atau pemaut GNU yang tidak menyokong pilihan
--eh-frame-hdr, ia memautkan versi kongsi libgcc ke perpustakaan kongsi oleh
lalai. Jika tidak, ia mengambil kesempatan daripada pemaut dan mengoptimumkan pemautan
dengan versi kongsi libgcc, memaut dengan versi statik libgcc oleh
lalai. Ini membenarkan pengecualian untuk disebarkan melalui perpustakaan kongsi tersebut, tanpa
menanggung kos pemindahan pada masa memuatkan perpustakaan.

Walau bagaimanapun, jika perpustakaan atau boleh laku utama sepatutnya membuang atau menangkap pengecualian, anda
mesti memautkannya menggunakan pemacu G++ atau GCJ, mengikut kesesuaian untuk bahasa yang digunakan dalam
program, atau menggunakan pilihan -shared-libgcc, supaya ia dikaitkan dengan perkongsian
libgcc.

-statik-libasan
Apabila -fsanitize=alamat pilihan digunakan untuk memautkan program, pemacu GCC
pautan secara automatik terhadap libasan. Jika libasan tersedia sebagai perpustakaan kongsi, dan
yang -statik pilihan tidak digunakan, maka pautan ini terhadap versi kongsi libasan.
. -statik-libasan pilihan mengarahkan pemacu GCC untuk memaut libasan secara statik, tanpa
semestinya menghubungkan perpustakaan lain secara statik.

-statik-libtsan
Apabila -fsanitize=benang pilihan digunakan untuk memautkan program, pemacu GCC
pautan secara automatik terhadap libtsan. Jika libtsan tersedia sebagai perpustakaan kongsi, dan
yang -statik pilihan tidak digunakan, maka pautan ini terhadap versi kongsi libtsan.
. -statik-libtsan pilihan mengarahkan pemacu GCC untuk memaut libtsan secara statik, tanpa
semestinya menghubungkan perpustakaan lain secara statik.

-statik-liblsan
Apabila -fsanitize=bocor pilihan digunakan untuk memautkan program, pemacu GCC
pautan secara automatik terhadap liblsan. Jika liblsan tersedia sebagai perpustakaan kongsi, dan
yang -statik pilihan tidak digunakan, maka pautan ini terhadap versi kongsi liblsan.
. -statik-liblsan pilihan mengarahkan pemacu GCC untuk memaut liblsan secara statik, tanpa
semestinya menghubungkan perpustakaan lain secara statik.

-statik-libubsan
Apabila -fsanitize=undefined pilihan digunakan untuk memautkan program, pemacu GCC
pautan secara automatik terhadap libubsan. Jika libubsan tersedia sebagai perpustakaan kongsi,
dan juga -statik pilihan tidak digunakan, maka pautan ini terhadap versi kongsi
libubsan. Yang -statik-libubsan pilihan mengarahkan pemacu GCC untuk memaut libubsan
secara statik, tanpa perlu menghubungkan perpustakaan lain secara statik.

-static-libmpx
Apabila -fcheck-pointer Sempadan dan -mmpx pilihan digunakan untuk memautkan program, GCC
pemandu memaut secara automatik terhadap libmpx. Jika libmpx tersedia sebagai perkongsian
perpustakaan, dan -statik pilihan tidak digunakan, maka pautan ini terhadap perkongsian
versi libmpx. Yang -static-libmpx pilihan mengarahkan pemacu GCC untuk memaut libmpx
secara statik, tanpa perlu menghubungkan perpustakaan lain secara statik.

-static-libmpxwrappers
Apabila -fcheck-pointer Sempadan dan -mmpx pilihan digunakan untuk memaut program tanpa
juga menggunakan -fno-chkp-use-wrappers, pemacu GCC memaut secara automatik terhadap
libmpxwrappers. Jika libmpxwrappers tersedia sebagai perpustakaan kongsi, dan -statik
pilihan tidak digunakan, maka pautan ini terhadap versi kongsi libmpxwrappers. Yang
-static-libmpxwrappers pilihan mengarahkan pemacu GCC untuk memaut libmpxwrappers
secara statik, tanpa perlu menghubungkan perpustakaan lain secara statik.

-static-libstdc++
Apabila g ++ atur cara digunakan untuk memautkan program C++, ia biasanya dipautkan secara automatik
terhadap libstdc++. Jika libstdc++ tersedia sebagai perpustakaan kongsi, dan -statik
pilihan tidak digunakan, maka pautan ini terhadap versi kongsi libstdc++. Itu dia
biasa baik. Walau bagaimanapun, kadangkala berguna untuk membekukan versi libstdc++
digunakan oleh program tanpa pergi ke pautan statik sepenuhnya. The
-static-libstdc++ pilihan mengarahkan g ++ pemandu untuk dipautkan libstdc++ secara statik, tanpa
semestinya menghubungkan perpustakaan lain secara statik.

-simbolik
Ikat rujukan kepada simbol global semasa membina objek kongsi. Beri amaran tentang sebarang
rujukan yang tidak diselesaikan (melainkan ditindih oleh pilihan editor pautan -Xlinker -z
-Xlinker kekurangan). Hanya beberapa sistem menyokong pilihan ini.

-T skrip
Penggunaan skrip sebagai skrip penghubung. Pilihan ini disokong oleh kebanyakan sistem yang menggunakan
Penyambung GNU. Pada beberapa sasaran, seperti sasaran papan kosong tanpa sistem pengendalian,
yang -T pilihan mungkin diperlukan semasa memaut untuk mengelakkan rujukan kepada simbol yang tidak ditentukan.

-Xlinker pilihan
Pas pilihan sebagai pilihan kepada penghubung. Anda boleh menggunakan ini untuk membekalkan khusus sistem
pilihan pemaut yang tidak dikenali oleh GCC.

Jika anda ingin meluluskan pilihan yang memerlukan hujah yang berasingan, anda mesti gunakan -Xlinker
dua kali, sekali untuk pilihan dan sekali untuk hujah. Sebagai contoh, untuk lulus -tegaskan
definisi, anda mesti menulis -Xlinker -tegaskan -Xlinker definisi. Ia tidak berfungsi
untuk menulis -Xlinker "-tegaskan definisi", kerana ini melepasi keseluruhan rentetan sebagai a
hujah tunggal, yang bukan apa yang diharapkan oleh penghubung.

Apabila menggunakan pemaut GNU, biasanya lebih mudah untuk menyampaikan hujah kepada pemaut
pilihan menggunakan pilihan=nilai sintaks daripada sebagai hujah yang berasingan. Sebagai contoh, anda
boleh nyatakan -Xlinker -Peta=output.map daripada -Xlinker -Peta -Xlinker keluaran.peta.
Penyambung lain mungkin tidak menyokong sintaks ini untuk pilihan baris arahan.

-Wl,pilihan
Pas pilihan sebagai pilihan kepada penghubung. Jika pilihan mengandungi koma, ia dibahagikan kepada
berbilang pilihan pada koma. Anda boleh menggunakan sintaks ini untuk menyampaikan hujah kepada
pilihan. Sebagai contoh, -Wl,-Peta,output.map pas -Peta keluaran.peta kepada penghubung. Bila
menggunakan pemaut GNU, anda juga boleh mendapatkan kesan yang sama dengan -Wl,-Map=output.map.

NOTA: Dalam Ubuntu 8.10 dan versi yang lebih baru, untuk LDFLAGS, pilihan -Wl,-z,relro digunakan.
Untuk melumpuhkan, gunakan -Wl,-z, norelro.

-u lambang
Berpura-pura simbol lambang tidak ditentukan, untuk memaksa pemautan modul perpustakaan untuk ditakrifkan
ia. Anda boleh gunakan -u berbilang kali dengan simbol berbeza untuk memaksa memuatkan
modul perpustakaan tambahan.

-z kata kunci
-z dihantar terus kepada pemaut bersama-sama dengan kata kunci kata kunci. Lihat bahagian
dalam dokumentasi pemaut anda untuk nilai yang dibenarkan dan maknanya.

Pilihan untuk Direktori Carian
Pilihan ini menentukan direktori untuk mencari fail pengepala, untuk perpustakaan dan untuk bahagian
daripada penyusun:

-Idir
Tambah direktori dir ke kepala senarai direktori untuk dicari pengepala
fail. Ini boleh digunakan untuk mengatasi fail pengepala sistem, menggantikan fail anda sendiri
versi, kerana direktori ini dicari sebelum fail pengepala sistem
direktori. Walau bagaimanapun, anda tidak seharusnya menggunakan pilihan ini untuk menambah direktori yang mengandungi
fail pengepala sistem yang dibekalkan oleh vendor (gunakan -isistem untuk itu). Jika anda menggunakan lebih daripada satu
-I pilihan, direktori diimbas dalam susunan kiri ke kanan; sistem piawai
direktori datang selepas.

Jika sistem standard termasuk direktori, atau direktori yang ditentukan dengan -isistem, Adalah
juga dinyatakan dengan -I, yang -I pilihan diabaikan. Direktori masih dicari tetapi
sebagai direktori sistem pada kedudukan biasa dalam sistem termasuk rantai. Ini adalah untuk
memastikan bahawa prosedur GCC untuk membetulkan pengepala sistem buggy dan pesanan untuk
Arahan "include_next" tidak ditukar secara tidak sengaja. Jika anda benar-benar perlu berubah
perintah carian untuk direktori sistem, gunakan -nostdinc dan / atau -isistem pilihan.

-iplugindir=dir
Tetapkan direktori untuk mencari pemalam yang dilalui -fplugin=nama bukan
-fplugin=jalan/nama.so. Pilihan ini tidak dimaksudkan untuk digunakan oleh pengguna, tetapi hanya
dilalui oleh pemandu itu.

-iquotedir
Tambah direktori dir ke kepala senarai direktori untuk dicari pengepala
fail hanya untuk kes "#include "fail""; mereka tidak dicari untuk "#include
<fail>", jika tidak sama seperti -I.

-Ldir
Tambah direktori dir ke senarai direktori yang hendak dicari -l.

-Bawalan
Pilihan ini menentukan tempat untuk mencari boleh laku, perpustakaan, sertakan fail dan
fail data pengkompil itu sendiri.

Program pemacu pengkompil menjalankan satu atau lebih daripada subprogram cpp, cc1, as dan ld.
Ia cuba awalan sebagai awalan untuk setiap program yang cuba dijalankan, dengan dan tanpa
mesin/versi/.

Untuk setiap subprogram yang akan dijalankan, pemacu pengkompil terlebih dahulu mencuba -B awalan, jika ada.
Jika nama itu tidak dijumpai, atau jika -B tidak dinyatakan, pemandu mencuba dua standard
awalan, /usr/lib/gcc/ dan /usr/local/lib/gcc/. Jika kedua-duanya tidak menghasilkan a
nama fail yang ditemui, nama program yang tidak diubah suai dicari menggunakan
direktori yang dinyatakan dalam anda PATH pembolehubah persekitaran.

Pengkompil menyemak untuk melihat sama ada laluan yang disediakan oleh -B merujuk kepada direktori, dan jika
perlu ia menambah watak pemisah direktori di hujung laluan.

-B awalan yang secara berkesan menentukan nama direktori juga digunakan untuk perpustakaan dalam
penghubung, kerana pengkompil menterjemah pilihan ini ke dalam -L pilihan untuk penyambung.
Mereka juga memohon untuk memasukkan fail dalam prapemproses, kerana pengkompil menterjemah
pilihan ini ke dalam -isistem pilihan untuk prapemproses. Dalam kes ini, pengkompil
melampirkan termasuk kepada awalan.

Fail sokongan masa jalan libgcc.a juga boleh dicari untuk menggunakan -B awalan, jika
diperlukan. Jika ia tidak ditemui di sana, dua awalan standard di atas dicuba, dan itu
semua. Fail itu ditinggalkan daripada pautan jika ia tidak ditemui dengan cara tersebut.

Satu lagi cara untuk menentukan awalan seperti -B awalan ialah menggunakan persekitaran
berubah-ubah GCC_EXEC_PREFIX.

Sebagai kludge khas, jika laluan disediakan oleh -B is [dir/]peringkatN/, Di mana N adalah nombor
dalam julat 0 hingga 9, maka ia digantikan dengan [dir/]sertakan. Ini adalah untuk membantu dengan but-
mengikat pengkompil.

-spesifikasi=fail
Proses fail selepas pengkompil membaca dalam standard ciri-ciri komputer fail, untuk mengatasi
lalai yang gcc program pemacu digunakan apabila menentukan suis yang hendak dilalui
kepada cc1, cc1plus, as, ld, dsb. Lebih daripada satu -spesifikasi=fail boleh dinyatakan pada
baris arahan, dan ia diproses mengikut tertib, dari kiri ke kanan.

--sysroot=dir
Penggunaan dir sebagai direktori akar logik untuk pengepala dan perpustakaan. Sebagai contoh, jika
pengkompil biasanya mencari tajuk masuk / usr / sertakan dan perpustakaan di / usr / lib, Ia
sebaliknya mencari dir/usr/include dan dir/usr/lib.

Jika anda menggunakan kedua-dua pilihan ini dan -isysroot pilihan, kemudian --sysroot pilihan
terpakai kepada perpustakaan, tetapi -isysroot pilihan digunakan pada fail pengepala.

Penyambung GNU (bermula dengan versi 2.16) mempunyai sokongan yang diperlukan untuk ini
pilihan. Jika pemaut anda tidak menyokong pilihan ini, aspek fail pengepala bagi
--sysroot masih berfungsi, tetapi aspek perpustakaan tidak.

--tidak-sysroot-akhiran
Untuk sesetengah sasaran, akhiran ditambahkan pada direktori akar yang ditentukan dengan --sysroot,
bergantung pada pilihan lain yang digunakan, supaya pengepala boleh sebagai contoh ditemui dalam
dir/suffix/usr/include bukan dir/usr/include. Pilihan ini melumpuhkan penambahan
daripada akhiran sedemikian.

-saya- Pilihan ini telah ditamatkan. Sila guna -iquote sebaliknya untuk -I direktori sebelum ini
yang -saya- dan keluarkan -saya- pilihan. Mana-mana direktori yang anda tentukan dengan -I pilihan sebelum ini
yang -saya- pilihan dicari hanya untuk kes "#include "fail""; mereka tidak
mencari "#includefail>".

Jika direktori tambahan ditentukan dengan -I pilihan selepas -saya- pilihan, ini
direktori dicari untuk semua arahan "#include". (Biasanya semua -I
direktori digunakan dengan cara ini.)

Di samping itu, -saya- pilihan menghalang penggunaan direktori semasa (di mana
fail input semasa datang daripada) sebagai direktori carian pertama untuk "#include "fail"".
Tiada cara untuk mengatasi kesan ini -saya-. Dengan -Saya. anda boleh menentukan carian
direktori yang semasa apabila pengkompil dipanggil. Itu bukan sebenarnya
sama seperti yang dilakukan oleh prapemproses secara lalai, tetapi selalunya memuaskan.

-saya- tidak menghalang penggunaan direktori sistem standard untuk fail pengepala.
Oleh itu, -saya- dan -nostdinc berdikari.

Menentukan Sasaran mesin dan Pengkompil versi
Cara biasa untuk menjalankan GCC ialah menjalankan executable dipanggil gcc, Atau mesin-gcc apabila silang-
menyusun, atau mesin-gcc-versi untuk menjalankan versi selain daripada yang telah dipasang
terakhir.

perkakasan model dan Konfigurasi
Setiap jenis mesin sasaran boleh mempunyai pilihan khasnya sendiri, bermula dengan -m, untuk memilih
antara pelbagai model atau konfigurasi perkakasan---contohnya, 68010 vs 68020, terapung
koprosesor atau tiada. Versi tunggal pengkompil yang dipasang boleh menyusun untuk mana-mana model
atau konfigurasi, mengikut pilihan yang ditentukan.

Beberapa konfigurasi pengkompil juga menyokong pilihan khas tambahan, biasanya untuk
keserasian dengan penyusun lain pada platform yang sama.

AAArch64 Pilihan

Pilihan ini ditakrifkan untuk pelaksanaan AArch64:

-mabi=nama
Hasilkan kod untuk model data yang ditentukan. Nilai yang dibenarkan ialah ilp32 untuk SysV-
seperti model data di mana int, int panjang dan penunjuk adalah 32-bit, dan lp64 untuk SysV seperti
model data di mana int adalah 32-bit, tetapi int panjang dan penunjuk adalah 64-bit.

Lalai bergantung pada konfigurasi sasaran tertentu. Ambil perhatian bahawa LP64 dan
ILP32 ABI tidak serasi pautan; anda mesti menyusun keseluruhan program anda dengan yang sama
ABI, dan pautkan dengan set perpustakaan yang serasi.

-besar-endian
Hasilkan kod big-endian. Ini ialah lalai apabila GCC dikonfigurasikan untuk
aarch64_be-*-* sasaran.

-mgeneral-regs-sahaja
Hasilkan kod yang hanya menggunakan daftar umum.

-kecil-endian
Hasilkan kod little-endian. Ini ialah lalai apabila GCC dikonfigurasikan untuk
aarch64-*-* tetapi bukan an aarch64_be-*-* sasaran.

-mcmodel=kecil
Hasilkan kod untuk model kod kecil. Program dan simbol yang ditakrifkan secara statik
mestilah dalam lingkungan 1GB antara satu sama lain. Penunjuk adalah 64 bit. Program boleh statik
atau dipautkan secara dinamik. Model ini tidak dilaksanakan sepenuhnya dan kebanyakannya dianggap sebagai
kecil.

-mcmodel=kecil
Hasilkan kod untuk model kod kecil. Program dan ditakrifkan secara statik
simbol mestilah dalam lingkungan 4GB antara satu sama lain. Penunjuk adalah 64 bit. Program boleh
dipautkan secara statik atau dinamik. Ini ialah model kod lalai.

-mcmodel=besar
Hasilkan kod untuk model kod besar. Ini tidak membuat andaian tentang alamat dan
saiz bahagian. Penunjuk adalah 64 bit. Program boleh dipautkan secara statik sahaja.

-mstrict-align
Jangan menganggap bahawa rujukan memori yang tidak sejajar dikendalikan oleh sistem.

-petunjuk-bingkai-daun-momit
-mno-omit-leaf-frame-pointer
Tinggalkan atau simpan penunjuk bingkai dalam fungsi daun. Tingkah laku dahulu adalah
lalai.

-mtls-dialect=desc
Gunakan deskriptor TLS sebagai mekanisme storan setempat-benang untuk akses dinamik TLS
pembolehubah. Ini adalah lalai.

-mtls-dialect=tradisional
Gunakan TLS tradisional sebagai mekanisme storan setempat-benang untuk akses dinamik TLS
pembolehubah.

-mfix-cortex-a53-835769
-mno-fix-cortex-a53-835769
Dayakan atau lumpuhkan penyelesaian untuk nombor erratum ARM Cortex-A53 835769. Ini
melibatkan memasukkan arahan NOP antara arahan memori dan integer 64-bit
arahan darab-akumulasi.

-mfix-cortex-a53-843419
-mno-fix-cortex-a53-843419
Dayakan atau lumpuhkan penyelesaian untuk nombor erratum ARM Cortex-A53 843419. Ini
penyelesaian erratum dibuat pada masa pautan dan ini hanya akan melepasi bendera yang sepadan
kepada penghubung.

-march=nama
Tentukan nama seni bina sasaran, secara pilihan diakhiri dengan satu atau lebih
pengubahsuai ciri. Pilihan ini mempunyai bentuk -march=gerbang{+[tidak]ciri}*, Dimanakah
hanya nilai yang dibenarkan untuk gerbang is armv8-a. Nilai yang dibenarkan untuk ciri adalah
didokumenkan dalam sub-bahagian di bawah.

Jika pengubah suai ciri bercanggah ditentukan, ciri paling kanan digunakan.

GCC menggunakan nama ini untuk menentukan jenis arahan yang boleh dikeluarkannya semasa menjana
kod pemasangan.

Lokasi -berbaris ditentukan tanpa salah satu daripada -mtune or -mcpu juga dinyatakan, iaitu
kod ditala untuk berprestasi baik merentas pelbagai pemproses sasaran yang melaksanakan
seni bina sasaran.

-mtune=nama
Nyatakan nama pemproses sasaran yang GCC harus menala prestasinya
kod tersebut. Nilai yang dibenarkan untuk pilihan ini ialah: generik, korteks-a53, korteks-a57,
korteks-a72, exynos-m1, thunderx, xgene1.

Selain itu, pilihan ini boleh menentukan bahawa GCC harus menala prestasi kod
untuk sistem yang besar.LITTLE. Nilai yang dibenarkan untuk pilihan ini ialah:
korteks-a57.korteks-a53, korteks-a72.korteks-a53.

Di mana tiada satu pun -mtune=, -mcpu= or -march= ditentukan, kod ditala untuk dilaksanakan
merentasi pelbagai pemproses sasaran.

Pilihan ini tidak boleh diakhiri oleh pengubah suai ciri.

-mcpu=nama
Tentukan nama pemproses sasaran, secara pilihan diakhiri dengan satu atau lebih ciri
pengubahsuai. Pilihan ini mempunyai bentuk -mcpu=cpu{+[tidak]ciri}*, di mana dibenarkan
nilai untuk cpu adalah sama seperti yang tersedia untuk -mtune.

Nilai yang dibenarkan untuk ciri didokumenkan dalam sub-bahagian di bawah.

Jika pengubah suai ciri bercanggah ditentukan, ciri paling kanan digunakan.

GCC menggunakan nama ini untuk menentukan jenis arahan yang boleh dikeluarkannya semasa menjana
kod pemasangan (seolah-olah oleh -berbaris) dan untuk menentukan pemproses sasaran untuk
menala untuk persembahan (seolah-olah oleh -mtune). Di mana pilihan ini digunakan bersama dengan
-berbaris or -mtune, pilihan tersebut diutamakan daripada bahagian yang sesuai dalam ini
pilihan.

-berbaris dan -mcpu Pengubahsuai Ciri

Pengubah suai ciri digunakan dengan -berbaris dan -mcpu boleh menjadi salah satu yang berikut:

crc Dayakan sambungan CRC.

Crypto
Dayakan sambungan Crypto. Ini menunjukkan SIMD Lanjutan didayakan.

fp Dayakan arahan titik terapung.

simd
Dayakan arahan SIMD Lanjutan. Ini membayangkan arahan titik terapung adalah
didayakan. Ini adalah lalai untuk semua nilai semasa yang mungkin untuk pilihan -berbaris dan
-mcpu=.

Adapteva Epiphany Pilihan

Ini -m pilihan ditakrifkan untuk Adapeva Epiphany:

-mhalf-reg-file
Jangan peruntukkan sebarang daftar dalam julat "r32"..."r63". Itu membolehkan kod dijalankan
varian perkakasan yang kekurangan daftar ini.

-prefer-short-insn-regs
Lebih disukai memperuntukkan daftar yang membenarkan penjanaan arahan pendek. Ini boleh
mengakibatkan bilangan arahan bertambah, jadi ini mungkin sama ada mengurangkan atau meningkat secara keseluruhan
saiz kod.

-kos-mbranch=num
Tetapkan kos cawangan kepada kira-kira num arahan "mudah". Kos ini hanya a
heuristik dan tidak dijamin menghasilkan hasil yang konsisten merentas keluaran.

-mcmove
Dayakan penjanaan pergerakan bersyarat.

-mnops=num
Mengeluarkan num NOP sebelum setiap arahan lain yang dihasilkan.

-mno-lembut-cmpsf
Untuk perbandingan titik terapung ketepatan tunggal, keluarkan arahan dan ujian "fsub".
bendera. Ini lebih pantas daripada perbandingan perisian, tetapi boleh mendapatkan hasil yang salah
dengan kehadiran NaNs, atau apabila dua nombor kecil yang berbeza dibandingkan sedemikian
perbezaan mereka dikira sebagai sifar. Lalainya ialah -msoft-cmpsf, Yang kegunaan
perbandingan perisian yang lebih perlahan, tetapi mematuhi IEEE.

-mstack-offset=num
Tetapkan offset antara bahagian atas tindanan dan penuding tindanan. Cth, nilai 8
bermakna lapan bait dalam julat "sp+0...sp+7" boleh digunakan oleh fungsi daun
tanpa peruntukan timbunan. Nilai selain daripada 8 or 16 tidak diuji dan tidak mungkin
kerja. Perhatikan juga bahawa pilihan ini mengubah ABI; menyusun atur cara dengan a
timbunan yang berbeza mengimbangi daripada perpustakaan yang telah disusun dengan umumnya tidak
kerja. Pilihan ini boleh berguna jika anda ingin menilai sama ada tindanan yang berbeza mengimbangi
akan memberi anda kod yang lebih baik, tetapi sebenarnya menggunakan timbunan mengimbangi yang berbeza untuk membina
program kerja, adalah disyorkan untuk mengkonfigurasi rantai alat dengan yang sesuai
--with-stack-offset=num pilihan.

-mno-bulat-terdekat
Jadikan penjadual menganggap bahawa mod pembundaran telah ditetapkan kepada pemangkasan. The
lalai adalah -mround-terdekat.

-mlong-panggilan
Jika tidak dinyatakan sebaliknya oleh atribut, anggap semua panggilan mungkin melebihi
julat mengimbangi arahan "b" / "bl", dan oleh itu muatkan alamat fungsi
ke dalam daftar sebelum melakukan panggilan (jika tidak terus). Ini adalah lalai.

-msshort-panggilan
Jika tidak dinyatakan sebaliknya oleh atribut, anggap semua panggilan langsung berada dalam julat
daripada arahan "b" / "bl", jadi gunakan arahan ini untuk panggilan terus. The
lalai adalah -mlong-panggilan.

-msmall16
Andaikan alamat boleh dimuatkan sebagai nilai tidak bertanda 16-bit. Ini tidak terpakai kepada
alamat fungsi yang -mlong-panggilan semantik berkuat kuasa.

-mfp-mod=mod
Tetapkan mod lazim bagi unit titik terapung. Ini menentukan terapung-
mod titik yang disediakan dan dijangka pada panggilan fungsi dan masa kembali. membuat
mod ini sepadan dengan mod yang anda perlukan pada permulaan fungsi boleh membuat anda
atur cara yang lebih kecil dan lebih pantas dengan mengelakkan suis mod yang tidak perlu.

mod boleh ditetapkan kepada satu nilai berikut:

pemanggil
Sebarang mod pada kemasukan fungsi adalah sah, dan dikekalkan atau dipulihkan apabila fungsi itu
kembali, dan apabila ia memanggil fungsi lain. Mod ini berguna untuk menyusun
perpustakaan atau unit kompilasi lain yang mungkin anda ingin masukkan ke dalam unit yang berbeza
program dengan mod FPU lazim yang berbeza, dan kemudahan untuk dapat
gunakan fail objek tunggal melebihi saiz dan kelajuan overhed untuk sebarang mod tambahan
penukaran yang mungkin diperlukan, berbanding dengan apa yang diperlukan dengan lebih
pilihan khusus mod FPU semasa.

memotong
Ini ialah mod yang digunakan untuk pengiraan titik terapung dengan pemangkasan (iaitu bulat
ke arah sifar) mod pembundaran. Itu termasuk penukaran dari titik terapung ke
bilangan bulat.

bulat-terdekat
Ini ialah mod yang digunakan untuk pengiraan titik terapung dengan bulat-ke-terdekat-atau-
walaupun mod pembulatan.

int Ini ialah mod yang digunakan untuk melakukan pengiraan integer dalam FPU, contohnya integer
darab, atau integer darab-dan-terkumpul.

Lalai adalah -mfp-mode=pemanggil

-mnosplit-lohi
-mno-postinc
-mno-postmodify
Tweak penjanaan kod yang melumpuhkan, masing-masing, pemisahan beban 32-bit,
penjanaan alamat pasca kenaikan, dan penjanaan alamat pasca pengubahsuaian. The
lalai ialah msplit-lohi, -mpost-inc, dan -mpost-ubah suai.

-mnovect-double
Tukar mod SIMD pilihan kepada mod SIM. Lalainya ialah -mvect-double, Yang kegunaan
DImode sebagai mod SIMD pilihan.

-max-vect-align=num
Penjajaran maksimum untuk jenis mod vektor SIMD. num mungkin 4 atau 8. Lalainya ialah
8. Ambil perhatian bahawa ini adalah perubahan ABI, walaupun banyak antara muka fungsi perpustakaan
tidak terjejas jika mereka tidak menggunakan mod vektor SIMD di tempat yang mempengaruhi saiz dan/atau
penjajaran jenis yang berkaitan.

-msplit-vecmove-awal
Pisahkan vektor bergerak ke dalam satu perkataan bergerak sebelum muat semula. Secara teori ini boleh memberi
lebih baik mendaftar peruntukan, tetapi setakat ini sebaliknya nampaknya secara umumnya berlaku.

-m1reg-reg
Tentukan daftar untuk memegang pemalar -1, yang menjadikan pemuatan negatif kecil
pemalar dan bitmask tertentu dengan lebih pantas. Nilai yang dibenarkan untuk reg adalah r43 dan r63,
yang menyatakan penggunaan daftar itu sebagai daftar tetap, dan tiada, yang bermaksud bahawa tidak
daftar digunakan untuk tujuan ini. Lalainya ialah -m1reg-tiada.

ARC Pilihan

Pilihan berikut mengawal varian seni bina untuk kod yang sedang disusun:

-penukar mbarrel
Hasilkan arahan yang disokong oleh pengalih tong. Ini adalah lalai melainkan
-mcpu=ARC601 berkuat kuasa.

-mcpu=cpu
Tetapkan jenis seni bina, daftar penggunaan dan parameter penjadualan arahan untuk cpu.
Terdapat juga pilihan alias pintasan yang tersedia untuk keserasian ke belakang dan
kemudahan. Nilai yang disokong untuk cpu adalah

ARC600
Susun untuk ARC600. Alias: -mA6, -mARC600.

ARC601
Susun untuk ARC601. Alias: -mARC601.

ARC700
Susun untuk ARC700. Alias: -mA7, -mARC700. Ini adalah lalai apabila dikonfigurasikan
dengan --dengan-cpu=arc700.

-mdpfp
-mdpfp-compact
FPX: Hasilkan arahan FPX Ketepatan Berganda, ditala untuk pelaksanaan yang padat.

-mdpfp-cepat
FPX: Hasilkan arahan FPX Ketepatan Berganda, ditala untuk pelaksanaan pantas.

-mno-dpfp-lrsr
Lumpuhkan arahan LR dan SR daripada menggunakan daftar aux sambungan FPX.

-mea
Hasilkan arahan aritmetik Lanjutan. Pada masa ini hanya "divaw", "adds", "subs",
dan "sat16" disokong. Ini sentiasa didayakan untuk -mcpu=ARC700.

-mno-mpy
Jangan jana arahan mpy untuk ARC700.

-mmul32x16
Hasilkan 32x16 bit darab dan arahan mac.

-mmul64
Hasilkan arahan mul64 dan mulu64. Hanya sah untuk -mcpu=ARC600.

-biasa
Menjana arahan norma. Ini adalah lalai jika -mcpu=ARC700 berkuat kuasa.

-mspfp
-mspfp-padat
FPX: Hasilkan arahan FPX Ketepatan Tunggal, ditala untuk pelaksanaan yang padat.

-mspfp-cepat
FPX: Hasilkan arahan FPX Ketepatan Tunggal, ditala untuk pelaksanaan pantas.

-msimd
Dayakan penjanaan arahan ARC SIMD melalui binaan khusus sasaran. Hanya sah
untuk -mcpu=ARC700.

-msoft-float
Pilihan ini diabaikan; ia disediakan untuk tujuan keserasian sahaja. Perisian
kod titik terapung dipancarkan secara lalai, dan lalai ini boleh ditindih oleh FPX
pilihan; mspfp, mspfp-compact, Atau mspfp-cepat untuk ketepatan tunggal, dan mdpfp, mdpfp-
padat, Atau mdpfp-cepat untuk ketepatan berganda.

-mswap
Hasilkan arahan pertukaran.

Pilihan berikut dihantar kepada pemasang, dan juga menentukan prapemproses
simbol makro.

-mdsp-packa
Diturunkan kepada pemasang untuk mendayakan sambungan DSP Pack A. Juga menetapkan
simbol prapemproses "__Xdsp_packa".

-mdvbf
Diturunkan kepada pemasang untuk mendayakan sambungan rama-rama dwi viterbi. Juga
menetapkan simbol prapemproses "__Xdvbf".

-mlock
Diturunkan kepada pemasang untuk mendayakan sambungan Bersyarat Muatan Berkunci/Stor.
Juga menetapkan simbol prapemproses "__Xlock".

-mmac-d16
Diturunkan kepada penghimpun. Juga menetapkan simbol prapemproses "__Xxmac_d16".

-mmac-24
Diturunkan kepada penghimpun. Juga menetapkan simbol prapemproses "__Xxmac_24".

-mrtsc
Diturunkan kepada pemasang untuk mendayakan sambungan Kaunter Setem Masa 64-bit
arahan. Juga menetapkan simbol prapemproses "__Xrtsc".

-mswape
Diturunkan kepada pemasang untuk mendayakan arahan lanjutan pesanan swap byte.
Juga menetapkan simbol prapemproses "__Xswape".

-mtelefoni
Diturunkan kepada pemasang untuk mendayakan arahan operan dwi dan tunggal untuk
telefon. Juga menetapkan simbol prapemproses "__Xtelephony".

-mxy
Diturunkan kepada pemasang untuk mendayakan sambungan Memori XY. Juga menetapkan
simbol prapemproses "__Xxy".

Pilihan berikut mengawal cara kod pemasangan diberi penjelasan:

-misize
Anotasi arahan pemasang dengan anggaran alamat.

-mannotate-align
Terangkan apakah pertimbangan penjajaran yang membawa kepada keputusan untuk membuat arahan
pendek atau panjang.

Pilihan berikut diteruskan ke pemaut:

-marclinux
Dilalui kepada pemaut, untuk menentukan penggunaan emulasi "arclinux". Pilihan ini
didayakan secara lalai dalam rantai alat yang dibina untuk "arc-linux-uclibc" dan
"arceb-linux-uclibc" menyasarkan apabila pemprofilan tidak diminta.

-marclinux_prof
Dilalui kepada pemaut, untuk menentukan penggunaan emulasi "arclinux_prof". ini
pilihan didayakan secara lalai dalam rantai alat yang dibina untuk "arc-linux-uclibc" dan
"arceb-linux-uclibc" menyasarkan apabila pemprofilan diminta.

Pilihan berikut mengawal semantik kod yang dijana:

-mepilog-cfi
Dayakan penjanaan maklumat bingkai panggilan untuk epilog.

-mno-epilog-cfi
Lumpuhkan penjanaan maklumat bingkai panggilan untuk epilog.

-mlong-panggilan
Jana call insn sebagai daftar panggilan tidak langsung, sekali gus menyediakan akses sepenuhnya
Julat alamat 32-bit.

-medium-panggilan
Jangan gunakan kurang daripada 25 bit julat pengalamatan untuk panggilan, yang merupakan offset yang tersedia
untuk arahan cawangan dan pautan tanpa syarat. Perlaksanaan fungsi bersyarat
panggilan dihalang, untuk membenarkan penggunaan julat 25-bit, bukannya julat 21-bit
dengan cawangan-dan-pautan bersyarat. Ini adalah lalai untuk rantai alat yang dibina untuknya
Sasaran "arc-linux-uclibc" dan "arceb-linux-uclibc".

-mno-sdata
Jangan jana rujukan sdata. Ini adalah lalai untuk rantai alat yang dibina untuknya
Sasaran "arc-linux-uclibc" dan "arceb-linux-uclibc".

-mucb-mcount
Instrumen dengan panggilan mcount seperti yang digunakan dalam kod UCB. Iaitu melakukan pengiraan dalam orang yang dipanggil,
bukan pemanggil. Secara lalai, kiraan instrumentasi ARC dalam pemanggil.

-mvolatile-cache
Gunakan capaian memori yang biasa dicache untuk rujukan yang tidak menentu. Ini adalah lalai.

-mno-volatile-cache
Dayakan pintasan cache untuk rujukan yang tidak menentu.

Pilihan berikut penjanaan kod penalaan halus:

-panggilan-malign
Lakukan pengoptimuman penjajaran untuk arahan panggilan.

-mauto-modify-reg
Dayakan penggunaan ubah suai pra/pos dengan anjakan daftar.

-mbbit-lubang intip
Dayakan lubang intip bbit2.

-mno-brcc
Pilihan ini melumpuhkan pas masuk khusus sasaran arc_reorg untuk menjana "BRcc"
arahan. Ia tidak mempunyai kesan pada penjanaan "BRcc" yang didorong oleh pas penggabung.

-mcase-vector-pcrel
Gunakan jadual kes suis relatif pc - ini membolehkan pemendekan jadual kes. Ini adalah
lalai untuk -Os.

-mcompact-casesi
Dayakan corak casei padat. Ini adalah lalai untuk -Os.

-mno-cond-exec
Lumpuhkan pas khusus ARCompact untuk menjana arahan pelaksanaan bersyarat. Kerana
untuk menangguhkan penjadualan slot dan interaksi antara nombor operan, saiz literal,
panjang arahan, dan sokongan untuk pelaksanaan bersyarat, bebas sasaran
pas untuk menjana pelaksanaan bersyarat selalunya kurang, jadi port ARC telah menyimpan a
hantaran khas yang cuba mencari penjanaan pelaksanaan yang lebih bersyarat
peluang selepas peruntukan pendaftaran, pemendekan cawangan, dan penangguhan penjadualan slot
telah dilaksanakan. Pas ini secara amnya, tetapi tidak selalu, meningkatkan prestasi dan kod
saiz, dengan kos masa penyusunan tambahan, itulah sebabnya terdapat pilihan untuk bertukar
ia padam. Jika anda menghadapi masalah dengan arahan panggilan melebihi ofset yang dibenarkan
julat kerana ia bersyarat, anda harus mempertimbangkan untuk menggunakan -medium-panggilan
sebaliknya.

-bercabang-cbranchsi
Dayakan penggunaan pra-muat semula corak cbranchsi.

-mexpand-adddi
Kembangkan "adddi3" dan "subdi3" pada masa penjanaan rtl menjadi "add.f", "adc" dsb.

-mindexed-loads
Dayakan penggunaan beban diindeks. Ini boleh menjadi masalah kerana sesetengah pengoptimum kemudian
menganggap bahawa kedai yang diindeks wujud, yang tidak berlaku.

-mlra
Dayakan Peruntukan Daftar Tempatan. Ini masih percubaan untuk ARC, jadi secara lalai
pengkompil menggunakan muat semula standard (iaitu -mno-lra).

-mlra-keutamaan-tiada
Jangan nyatakan sebarang keutamaan untuk daftar sasaran.

-mlra-keutamaan-padat
Nyatakan keutamaan daftar sasaran untuk r0..r3 / r12..r15.

-mlra-keutamaan-tidak padat
Kurangkan keutamaan pendaftar sasaran untuk r0..r3 / r12..r15.

-mno-milicode
Apabila mengoptimumkan saiz (menggunakan -Os), prolog dan epilog yang perlu menyimpan atau
memulihkan sebilangan besar daftar sering dipendekkan dengan menggunakan panggilan ke khas
fungsi dalam libgcc; ini dirujuk sebagai a milikod panggilan. Kerana panggilan ini boleh menimbulkan
isu prestasi, dan/atau menyebabkan isu pemautan apabila memaut dengan cara yang tidak standard,
pilihan ini disediakan untuk mematikan penjanaan panggilan milikod.

-kod bercampur
Ubah peruntukan daftar untuk membantu penjanaan arahan 16-bit. Ini secara amnya mempunyai
kesan pengurangan saiz arahan purata sambil meningkatkan arahan
kiraan.

-mq-kelas
Dayakan alternatif arahan 'q'. Ini adalah lalai untuk -Os.

-mRcq
Dayakan pengendalian kekangan Rcq - kebanyakan penjanaan kod pendek bergantung pada perkara ini. Ini adalah
lalai.

-mRcw
Dayakan pengendalian kekangan Rcw - ccfsm condexec kebanyakannya bergantung pada ini. Ini adalah
lalai.

-msize-level=tahap
Perhalusi pengoptimuman saiz berkaitan dengan panjang arahan dan penjajaran. The
nilai yang diiktiraf untuk tahap ialah:

0 Tiada pengoptimuman saiz. Tahap ini ditamatkan dan diperlakukan seperti 1.

1 Arahan pendek digunakan secara oportunis.

2 Selain itu, penjajaran gelung dan kod selepas halangan dijatuhkan.

3 Di samping itu, penjajaran data pilihan digugurkan, dan pilihan Os Didayakan.

Ini lalai kepada 3 apabila -Os sedang berkuat kuasa. Jika tidak, tingkah laku apabila ini tidak
set adalah bersamaan dengan tahap 1.

-mtune=cpu
Tetapkan parameter penjadualan arahan untuk cpu, mengatasi mana-mana yang tersirat oleh -mcpu=.

Nilai yang disokong untuk cpu adalah

ARC600
Tala untuk cpu ARC600.

ARC601
Tala untuk cpu ARC601.

ARC700
Tala untuk cpu ARC700 dengan blok pengganda standard.

ARC700-xmac
Tala untuk cpu ARC700 dengan blok XMAC.

ARC725D
Nala untuk cpu ARC725D.

ARC750D
Nala untuk cpu ARC750D.

-multcost=num
Kos untuk ditanggung bagi arahan darab, dengan 4 sama dengan arahan biasa.

-munalign-prob-threshold=kebarangkalian
Tetapkan ambang kebarangkalian untuk menyamakan cawangan. Apabila menala untuk ARC700 dan
mengoptimumkan kelajuan, cawangan tanpa slot tunda yang diisi sebaiknya dipancarkan
tidak sejajar dan panjang, melainkan pemprofilan menunjukkan bahawa kebarangkalian untuk cawangan untuk
diambil adalah di bawah kebarangkalian. Lalai ialah (REG_BR_PROB_BASE/2), iaitu 5000.

Pilihan berikut dikekalkan untuk keserasian ke belakang, tetapi kini tidak digunakan lagi
dan akan dialih keluar dalam keluaran akan datang:

-margonut
FPX usang.

-besar-endian
-EB Susun kod untuk sasaran endian besar. Penggunaan pilihan ini kini ditamatkan. Pengguna
mahukan kod big-endian, harus menggunakan sasaran "arceb-elf32" dan "arceb-linux-uclibc"
apabila membina rantai alat, yang mana big-endian adalah lalai.

-kecil-endian
-EL Susun kod untuk sasaran endian kecil. Penggunaan pilihan ini kini ditamatkan.
Pengguna yang mahukan kod little-endian harus menggunakan "arc-elf32" dan "arc-linux-uclibc"
sasaran semasa membina rantai alat, yang mana little-endian adalah lalai.

-mbarrel_shifter
Digantikan oleh -penukar mbarrel.

-mdpfp_compact
Digantikan oleh -mdpfp-compact.

-mdpfp_fast
Digantikan oleh -mdpfp-cepat.

-mdsp_packa
Digantikan oleh -mdsp-packa.

-mEA
Digantikan oleh -mea.

-mmac_24
Digantikan oleh -mmac-24.

-mmac_d16
Digantikan oleh -mmac-d16.

-mspfp_compact
Digantikan oleh -mspfp-padat.

-mspfp_fast
Digantikan oleh -mspfp-cepat.

-mtune=cpu
Nilai-nilai arc600, arc601, arc700 dan arc700-xmac untuk cpu digantikan oleh ARC600, ARC601,
ARC700 dan ARC700-xmac masing-masing

-multcost=num
Digantikan oleh -multcost.

ARM Pilihan

Ini -m pilihan ditakrifkan untuk port ARM:

-mabi=nama
Hasilkan kod untuk ABI yang ditentukan. Nilai yang dibenarkan ialah: apcs-gnu, atpcs, aapcs,
aapcs-linux dan iwmmxt.

-mapcs-bingkai
Hasilkan bingkai tindanan yang mematuhi Standard Panggilan Prosedur ARM untuk semua
fungsi, walaupun ini tidak diperlukan untuk pelaksanaan kod yang betul.
Menentukan -fomit-frame-pointer dengan pilihan ini menyebabkan bingkai tindanan tidak menjadi
dihasilkan untuk fungsi daun. Lalainya ialah -mno-apcs-bingkai. Pilihan ini adalah
ditamatkan.

-mapcs
Ini adalah sinonim untuk -mapcs-bingkai dan tidak digunakan lagi.

-mthumb-interwork
Hasilkan kod yang menyokong panggilan antara set arahan ARM dan Thumb.
Tanpa pilihan ini, pada seni bina pra-v5, dua set arahan tidak boleh
boleh digunakan dalam satu program. Lalainya ialah -mno-thumb-interwork, sejak sedikit
kod yang lebih besar dijana apabila -mthumb-interwork dinyatakan. Dalam konfigurasi AAPCS
pilihan ini tidak bermakna.

-mno-sched-prolog
Elakkan penyusunan semula arahan dalam prolog fungsi, atau penggabungan
arahan tersebut dengan arahan dalam badan fungsi. Ini bermakna semua
fungsi bermula dengan set arahan yang boleh dikenali (atau sebenarnya salah satu pilihan
daripada set kecil prolog fungsi yang berbeza), dan maklumat ini boleh digunakan untuk
cari permulaan fungsi di dalam sekeping kod boleh laku. Lalainya ialah
-msched-prolog.

-mfloat-abi=nama
Menentukan ABI titik terapung yang hendak digunakan. Nilai yang dibenarkan ialah: lembut, softfp dan
keras.

Menentukan lembut menyebabkan GCC menghasilkan output yang mengandungi panggilan perpustakaan untuk terapung-
operasi titik. softfp membenarkan penjanaan kod menggunakan titik terapung perkakasan
arahan, tetapi masih menggunakan konvensyen panggilan apungan lembut. keras membolehkan
penjanaan arahan titik terapung dan menggunakan konvensyen panggilan khusus FPU.

Lalai bergantung pada konfigurasi sasaran tertentu. Perhatikan bahawa terapung keras
dan ABI terapung lembut tidak serasi dengan pautan; anda mesti menyusun keseluruhan program anda dengan
ABI yang sama, dan pautan dengan set perpustakaan yang serasi.

-kecil-endian
Hasilkan kod untuk pemproses yang berjalan dalam mod little-endian. Ini adalah lalai untuk
semua konfigurasi standard.

-besar-endian
Hasilkan kod untuk pemproses yang berjalan dalam mod big-endian; lalai adalah untuk menyusun
kod untuk pemproses little-endian.

-march=nama
Ini menentukan nama seni bina sasaran ARM. GCC menggunakan nama ini untuk
tentukan jenis arahan yang boleh dikeluarkan semasa menjana kod pemasangan. ini
pilihan boleh digunakan bersama dengan atau bukannya -mcpu= pilihan. dibenarkan
nama ialah: armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5e,
armv5te, armv6, armv6j, armv6t2, armv6z, armv6zk, armv6-m, armv7, armv7-a, armv7-r,
armv7-m, armv7e-m, armv7ve, armv8-a, armv8-a+crc, iwmmxt, iwmmxt2, ep9312.

-march=armv7ve ialah seni bina armv7-a dengan sambungan virtualisasi.

-march=armv8-a+crc membolehkan penjanaan kod untuk seni bina ARMv8-A bersama-sama dengan
sambungan CRC32 pilihan.

-march = asli menyebabkan pengkompil untuk mengesan secara automatik seni bina binaan
komputer. Pada masa ini, ciri ini hanya disokong pada GNU/Linux, dan bukan semua
seni bina diiktiraf. Jika pengesanan automatik tidak berjaya, pilihan mempunyai no
kesan.

-mtune=nama
Pilihan ini menentukan nama pemproses ARM sasaran yang GCC harus ditala
prestasi kod. Untuk sesetengah pelaksanaan ARM prestasi yang lebih baik boleh
diperoleh dengan menggunakan pilihan ini. Nama yang dibenarkan ialah: arm2, arm250, arm3, arm6,
arm60, arm600, arm610, arm620, arm7, lengan7m, lengan7d, lengan7dm, lengan7di, arm7dmi, arm70,
arm700, lengan700i, arm710, lengan710c, arm7100, arm720, arm7500, lengan7500fe, arm7tdmi,
arm7tdmi-s, lengan710t, lengan720t, lengan740t, Lengan yang kuat, lengan kuat110, lengan kuat1100,
lengan kuat1110, arm8, arm810, arm9, lengan9e, arm920, lengan920t, lengan922t, arm946e-s,
arm966e-s, arm968e-s, lengan926ej-s, lengan940t, arm9tdmi, arm10tdmi, lengan1020t, lengan1026ej-s,
lengan10e, lengan1020e, lengan1022e, lengan1136j-s, lengan1136jf-s, mpcore, mpcorenovfp, lengan1156t2-s,
lengan1156t2f-s, lengan1176jz-s, lengan1176jzf-s, korteks-a5, korteks-a7, korteks-a8, korteks-a9,
korteks-a12, korteks-a15, korteks-a53, korteks-a57, korteks-a72, korteks-r4, korteks-r4f,
korteks-r5, korteks-r7, korteks-m7, korteks-m4, korteks-m3, korteks-m1, korteks-m0,
korteks-m0plus, korteks-m1.darab-kecil, korteks-m0.darab-kecil,
korteks-m0plus.darab-kecil, exynos-m1, marvell-pj4, skala x, iwmmxt, iwmmxt2, ep9312,
fa526, fa626, fa606te, fa626te, fmp626, fa726te, xgene1.

Selain itu, pilihan ini boleh menentukan bahawa GCC harus menala prestasi kod
untuk sistem yang besar.LITTLE. Nama yang dibenarkan ialah: korteks-a15.korteks-a7,
korteks-a57.korteks-a53, korteks-a72.korteks-a53.

-mtune=generik-gerbang menentukan bahawa GCC harus menala prestasi untuk gabungan
pemproses dalam seni bina gerbang. Matlamatnya adalah untuk menjana kod yang berjalan dengan baik pada
pemproses paling popular semasa, mengimbangi antara pengoptimuman yang memberi manfaat kepada sesetengah pihak
CPU dalam julat, dan mengelakkan perangkap prestasi CPU lain. Kesan daripada
pilihan ini mungkin berubah dalam versi GCC akan datang apabila model CPU datang dan pergi.

-mtune=asli menyebabkan pengkompil untuk mengesan secara automatik CPU komputer binaan. Pada
kini, ciri ini hanya disokong pada GNU/Linux, dan bukan semua seni bina
dikenali. Jika pengesanan automatik tidak berjaya, pilihan tidak mempunyai kesan.

-mcpu=nama
Ini menentukan nama pemproses ARM sasaran. GCC menggunakan nama ini untuk memperoleh
nama seni bina sasaran ARM (seolah-olah ditentukan oleh -berbaris) dan pemproses ARM
jenis yang hendak ditala untuk prestasi (seolah-olah ditentukan oleh -mtune). Di mana pilihan ini
digunakan bersama dengan -berbaris or -mtune, pilihan tersebut diutamakan daripada
bahagian yang sesuai dalam pilihan ini.

Nama yang dibenarkan untuk pilihan ini adalah sama seperti nama untuk -mtune.

-mcpu=generik-gerbang juga dibenarkan, dan setara dengan -march=gerbang
-mtune=generik-gerbang. Lihat -mtune untuk maklumat lanjut.

-mcpu=asli menyebabkan pengkompil untuk mengesan secara automatik CPU komputer binaan. Pada
kini, ciri ini hanya disokong pada GNU/Linux, dan bukan semua seni bina
dikenali. Jika pengesanan automatik tidak berjaya, pilihan tidak mempunyai kesan.

-mfpu=nama
Ini menentukan perkakasan titik terapung (atau emulasi perkakasan) yang tersedia
sasaran. Nama yang dibenarkan ialah: vfp, vfpv3, vfpv3-fp16, vfpv3-d16, vfpv3-d16-fp16,
vfpv3xd, vfpv3xd-fp16, neon, neon-fp16, vfpv4, vfpv4-d16, fpv4-sp-d16, neon-vfpv4,
fpv5-d16, fpv5-sp-d16, fp-armv8, neon-fp-armv8, dan crypto-neon-fp-armv8.

If -msoft-float ditentukan ini menentukan format nilai titik terapung.

Jika perkakasan titik terapung yang dipilih termasuk sambungan NEON (cth -mfpu=neon),
ambil perhatian bahawa operasi titik terapung tidak dijana oleh pas auto-vektorisasi GCC
melainkan jika -funsafe-math-optimizations juga dinyatakan. Ini kerana perkakasan NEON
tidak melaksanakan sepenuhnya standard IEEE 754 untuk aritmetik titik terapung (dalam
nilai denormal tertentu dianggap sebagai sifar), jadi penggunaan arahan NEON mungkin
membawa kepada kehilangan ketepatan.

-mfp16-format=nama
Tentukan format jenis titik terapung separuh ketepatan "__fp16". dibenarkan
nama adalah tiada, ieee, dan alternatif; lalainya ialah tiada, dalam hal ini "__fp16"
jenis tidak ditentukan.

-sempadan-saiz-struktur=n
Saiz semua struktur dan kesatuan dibundarkan kepada gandaan bilangan
bit yang ditetapkan oleh pilihan ini. Nilai yang dibenarkan ialah 8, 32 dan 64. Nilai lalai
berbeza untuk rantai alat yang berbeza. Untuk rantai alat disasarkan COFF nilai lalai ialah
8. Nilai 64 hanya dibenarkan jika ABI asas menyokongnya.

Menentukan nombor yang lebih besar boleh menghasilkan kod yang lebih pantas, lebih cekap, tetapi boleh juga
meningkatkan saiz program. Nilai yang berbeza berpotensi tidak serasi.
Kod yang disusun dengan satu nilai tidak semestinya mengharapkan untuk berfungsi dengan kod atau perpustakaan
disusun dengan nilai lain, jika mereka bertukar maklumat menggunakan struktur atau kesatuan.

-mabort-on-noreturn
Hasilkan panggilan ke fungsi "abort" pada penghujung fungsi "noreturn". Ia adalah
dilaksanakan jika fungsi cuba kembali.

-mlong-panggilan
-mno-long-panggilan
Memberitahu pengkompil untuk melaksanakan panggilan fungsi dengan terlebih dahulu memuatkan alamat
berfungsi ke dalam daftar dan kemudian melakukan panggilan subrutin pada daftar ini. ini
suis diperlukan jika fungsi sasaran terletak di luar pengalamatan 64 megabait
julat versi berasaskan offset arahan panggilan subrutin.

Walaupun suis ini didayakan, tidak semua panggilan fungsi bertukar menjadi panggilan panjang.
Heuristik ialah fungsi statik, fungsi yang mempunyai "panggilan_pendek"
atribut, fungsi yang berada dalam skop arahan "#pragma no_long_calls",
dan fungsi yang takrifannya telah disusun dalam arus
unit kompilasi tidak ditukar kepada panggilan panjang. Pengecualian kepada peraturan ini ialah
definisi fungsi yang lemah, fungsi dengan atribut "long_call" atau "bahagian"
atribut dan fungsi yang berada dalam skop arahan "#pragma long_calls".
sentiasa bertukar menjadi panggilan panjang.

Ciri ini tidak didayakan secara lalai. Menentukan -mno-long-panggilan mengembalikan
tingkah laku lalai, seperti juga meletakkan panggilan fungsi dalam skop "#pragma
arahan long_calls_off". Perhatikan suis ini tidak mempunyai kesan ke atas cara pengkompil
menjana kod untuk mengendalikan panggilan fungsi melalui penunjuk fungsi.

-msingle-pic-base
Anggap daftar yang digunakan untuk pengalamatan PIC sebagai baca sahaja, bukannya memuatkannya dalam
prolog untuk setiap fungsi. Sistem runtime bertanggungjawab untuk memulakan ini
mendaftar dengan nilai yang sesuai sebelum pelaksanaan bermula.

-mpic-register=reg
Nyatakan daftar yang akan digunakan untuk pengalamatan PIC. Untuk kes asas PIC standard,
lalai ialah sebarang daftar yang sesuai yang ditentukan oleh pengkompil. Untuk kes asas PIC tunggal,
lalai adalah R9 jika sasaran berasaskan EABI atau semakan tindanan didayakan, jika tidak
lalai adalah R10.

-mpic-data-is-text-relative
Andaikan bahawa setiap segmen data adalah relatif kepada segmen teks pada masa muat. Oleh itu,
ia membenarkan menangani data menggunakan operasi relatif PC. Pilihan ini dihidupkan secara lalai
untuk sasaran selain daripada VxWorks RTP.

-nama-fungsi-mpoke
Tulis nama setiap fungsi ke dalam bahagian teks, terus sebelum fungsi tersebut
prolog. Kod yang dihasilkan adalah serupa dengan ini:

t0
.ascii "arm_poke_function_name", 0
.selaraskan
t1
.perkataan 0xff000000 + (t1 - t0)
arm_poke_function_name
mov ip, sp
stmfd sp!, {fp, ip, lr, pc}
sub fp, ip, #4

Apabila melakukan surih belakang tindanan, kod boleh memeriksa nilai "pc" yang disimpan di "fp +
0". Jika fungsi surih kemudian melihat lokasi "pc - 12" dan 8 bit teratas adalah
set, maka kita tahu bahawa terdapat nama fungsi yang dibenamkan sejurus sebelum ini
lokasi dan mempunyai panjang "((pc[-3]) & 0xff000000)".

-ibu jari
-marm
Pilih antara menjana kod yang dilaksanakan dalam keadaan ARM dan Thumb. Lalai untuk
kebanyakan konfigurasi adalah untuk menjana kod yang dilaksanakan dalam keadaan ARM, tetapi lalai
boleh diubah dengan mengkonfigurasi GCC dengan --dengan-mod=adalah konfigurasi pilihan.

-mtpcs-bingkai
Hasilkan bingkai tindanan yang mematuhi Standard Panggilan Prosedur Ibu Jari untuk
semua fungsi bukan daun. (Fungsi daun ialah fungsi yang tidak memanggil yang lain
fungsi.) Lalainya ialah -mno-tpcs-frame.

-mtpcs-bingkai-daun
Hasilkan bingkai tindanan yang mematuhi Standard Panggilan Prosedur Ibu Jari untuk
semua fungsi daun. (Fungsi daun ialah fungsi yang tidak memanggil sebarang fungsi lain.)
Lalai adalah -mno-apcs-bingkai-daun.

-mcallee-super-interworking
Memberi semua fungsi yang boleh dilihat secara luaran dalam fail yang sedang disusun arahan ARM
tetapkan pengepala yang bertukar kepada mod Ibu jari sebelum melaksanakan fungsi yang lain.
Ini membolehkan fungsi ini dipanggil daripada kod yang tidak saling bekerja. Pilihan ini adalah
tidak sah dalam konfigurasi AAPCS kerana kerja antara didayakan secara lalai.

-mcaller-super-interworking
Membenarkan panggilan melalui penunjuk fungsi (termasuk fungsi maya) untuk dilaksanakan dengan betul
tidak kira sama ada kod sasaran telah disusun untuk saling bekerja atau tidak.
Terdapat overhed kecil dalam kos melaksanakan penunjuk fungsi jika pilihan ini
didayakan. Pilihan ini tidak sah dalam konfigurasi AAPCS kerana kerja antara adalah
didayakan secara lalai.

-mtp=nama
Tentukan model akses untuk penuding storan setempat benang. Model yang sah ialah
lembut, yang menjana panggilan ke "__aeabi_read_tp", cp15, yang mengambil benang
penunjuk daripada "cp15" secara langsung (disokong dalam seni bina arm6k), dan auto, Yang
menggunakan kaedah terbaik yang tersedia untuk pemproses yang dipilih. Tetapan lalai ialah
auto.

-mtls-dialek=dialek
Tentukan dialek untuk digunakan untuk mengakses storan setempat benang. dua dialeks adalah
disokong---gnu dan gnu2. Yang gnu dialek memilih skema GNU asal untuk
menyokong model TLS dinamik tempatan dan global. The gnu2 dialek memilih GNU
skema deskriptor, yang memberikan prestasi yang lebih baik untuk perpustakaan kongsi. GNU
skema deskriptor serasi dengan skema asal, tetapi memerlukan yang baru
penghimpun, penghubung dan sokongan perpustakaan. Model TLS eksekutif awal dan tempatan ialah
tidak terjejas oleh pilihan ini dan sentiasa menggunakan skema asal.

-mword-relocations
Hanya jana penempatan semula mutlak pada nilai bersaiz perkataan (iaitu R_ARM_ABS32). Ini adalah
didayakan secara lalai pada sasaran (uClinux, SymbianOS) tempat pemuat masa jalan mengenakan
sekatan ini, dan bila -fpic or -fPIC dinyatakan.

-mfix-korteks-m3-ldrd
Sesetengah teras Cortex-M3 boleh menyebabkan kerosakan data apabila arahan "ldrd" dengan
destinasi bertindih dan daftar asas digunakan. Pilihan ini mengelakkan penjanaan
arahan ini. Pilihan ini didayakan secara lalai apabila -mcpu=korteks-m3 is
dinyatakan.

-munaligned-akses
-mno-unaligned-access
Membolehkan (atau melumpuhkan) membaca dan menulis nilai 16- dan 32-bit daripada alamat
yang tidak sejajar 16- atau 32-bit. Secara lalai, akses tidak sejajar dilumpuhkan untuk semua
pra-ARMv6 dan semua seni bina ARMv6-M, dan didayakan untuk semua seni bina lain. Jika
akses tidak sejajar tidak didayakan maka perkataan dalam struktur data yang dibungkus diakses a
bait pada satu masa.

Atribut ARM "Tag_CPU_unaaligned_access" ditetapkan dalam fail objek yang dijana kepada
sama ada benar atau salah, bergantung pada tetapan pilihan ini. Jika akses tidak sejajar
didayakan maka simbol prapemproses "__ARM_FEATURE_UNALIGNED" juga ditakrifkan.

-mneon-untuk-64bit
Mendayakan penggunaan Neon untuk mengendalikan operasi 64-bit skalar. Ini dilumpuhkan secara lalai
memandangkan kos untuk memindahkan data daripada daftar teras ke Neon adalah tinggi.

-mslow-flash-data
Andaikan memuatkan data daripada denyar adalah lebih perlahan daripada mengambil arahan. Oleh itu literal
beban diminimumkan untuk prestasi yang lebih baik. Pilihan ini hanya disokong apabila
menyusun untuk ARMv7 M-profil dan dimatikan secara lalai.

-masm-sintaks-disatukan
Andaikan pemasang sebaris menggunakan sintaks asm bersatu. Lalai pada masa ini dimatikan
yang membayangkan sintaks terbahagi. Pada masa ini pilihan ini tersedia hanya untuk Thumb1 dan
tidak mempunyai kesan pada keadaan ARM dan Thumb2. Walau bagaimanapun, ini mungkin berubah dalam keluaran masa hadapan
GCC. Sintaks terbahagi harus dianggap tidak digunakan lagi.

-menghalang-itu
Mengehadkan penjanaan blok IT untuk mematuhi peraturan ARMv8. Blok IT boleh
hanya mengandungi satu arahan 16-bit tunggal daripada set arahan terpilih. ini
pilihan dihidupkan secara lalai untuk mod ARMv8 Thumb.

-mprint-tune-info
Cetak maklumat penalaan CPU sebagai ulasan dalam fail pemasang. Ini adalah pilihan yang digunakan
hanya untuk ujian regresi pengkompil dan tidak bertujuan untuk kegunaan biasa dalam
menyusun kod. Pilihan ini dilumpuhkan secara lalai.

AVR Pilihan

Pilihan ini ditakrifkan untuk pelaksanaan AVR:

-mmcu=mcu
Tentukan seni bina set arahan (ISA) atau jenis MCU Atmel AVR.

Lalai untuk pilihan ini ialah@tie{}avr2.

GCC menyokong peranti AVR dan ISA berikut:

"avr2"
Peranti "Klasik" dengan sehingga 8@tie{}KiB memori program. mcu@tie{}= "attiny22",
"attiny26", "at90c8534", "at90s2313", "at90s2323", "at90s2333", "at90s2343",
"at90s4414", "at90s4433", "at90s4434", "at90s8515", "at90s8535".

"avr25"
Peranti "Klasik" dengan sehingga 8@tie{}KiB memori program dan dengan "MOVW"
arahan. mcu@tie{}= "ata5272", "ata6616c", "attiny13", "attiny13a",
"attiny2313", "attiny2313a", "attiny24", "attiny24a", "attiny25", "attiny261",
"attiny261a", "attiny43u", "attiny4313", "attiny44", "attiny44a", "attiny441",
"attiny45", "attiny461", "attiny461a", "attiny48", "attiny828", "attiny84",
"attiny84a", "attiny841", "attiny85", "attiny861", "attiny861a", "attiny87",
"attiny88", "at86rf401".

"avr3"
Peranti "Klasik" dengan 16@tie{}KiB sehingga 64@tie{}KiB memori program.
mcu@tie{}= "at43usb355", "at76c711".

"avr31"
Peranti "Klasik" dengan 128@tie{}KiB memori program. mcu@tie{}= "atmega103",
"at43usb320".

"avr35"
Peranti "Klasik" dengan 16@tie{}KiB sehingga 64@tie{}KiB memori program dan dengan
arahan "MOVW". mcu@tie{}= "ata5505", "ata6617c", "ata664251",
"atmega16u2", "atmega32u2", "atmega8u2", "attiny1634", "attiny167", "at90usb162",
"at90usb82".

"avr4"
Peranti "Dipertingkat" dengan sehingga 8@tie{}KiB memori program. mcu@tie{}= "ata6285",
"ata6286", "ata6289", "ata6612c", "atmega48", "atmega48a", "atmega48p",
"atmega48pa", "atmega8", "atmega8a", "atmega8hva", "atmega8515", "atmega8535",
"atmega88", "atmega88a", "atmega88p", "atmega88pa", "at90pwm1", "at90pwm2",
"at90pwm2b", "at90pwm3", "at90pwm3b", "at90pwm81".

"avr5"
Peranti "Dipertingkat" dengan 16@tie{}KiB sehingga 64@tie{}KiB memori program.
mcu@tie{}= "ata5702m322", "ata5782", "ata5790", "ata5790n", "ata5795", "ata5831",
"ata6613c", "ata6614q", "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", "atmega32", "atmega32a", "atmega32c1", "atmega32hvb",
"atmega32hvbrevb", "atmega32m1", "atmega32u4", "atmega32u6", "atmega323",
"atmega324a", "atmega324p", "atmega324pa", "atmega325", "atmega325a",
"atmega325p", "atmega325pa", "atmega3250", "atmega3250a", "atmega3250p",
"atmega3250pa", "atmega328", "atmega328p", "atmega329", "atmega329a",
"atmega329p", "atmega329pa", "atmega3290", "atmega3290a", "atmega3290p",
"atmega3290pa", "atmega406", "atmega64", "atmega64a", "atmega64c1", "atmega64hve",
"atmega64hve2", "atmega64m1", "atmega64rfr2", "atmega640", "atmega644",
"atmega644a", "atmega644p", "atmega644pa", "atmega644rfr2", "atmega645",
"atmega645a", "atmega645p", "atmega6450", "atmega6450a", "atmega6450p",
"atmega649", "atmega649a", "atmega649p", "atmega6490", "atmega6490a",
"atmega6490p", "at90can32", "at90can64", "at90pwm161", "at90pwm216", "at90pwm316",
"at90scr100", "at90usb646", "at90usb647", "at94k", "m3000".

"avr51"
Peranti "Dipertingkat" dengan 128@tie{}KiB memori program. mcu@tie{}= "atmega128",
"atmega128a", "atmega128rfa1", "atmega128rfr2", "atmega1280", "atmega1281",
"atmega1284", "atmega1284p", "atmega1284rfr2", "at90can128", "at90usb1286",
"at90usb1287".

"avr6"
Peranti "Dipertingkat" dengan PC 3-bait, iaitu dengan lebih daripada 128@tie{}KiB program
memori. mcu@tie{}= "atmega256rfr2", "atmega2560", "atmega2561", "atmega2564rfr2".

"avrxmega2"
Peranti "XMEGA" dengan lebih daripada 8@tie{}KiB dan sehingga 64@tie{}KiB memori program.
mcu@tie{}= "atxmega16a4", "atxmega16a4u", "atxmega16c4", "atxmega16d4",
"atxmega16e5", "atxmega32a4", "atxmega32a4u", "atxmega32c3", "atxmega32c4",
"atxmega32d3", "atxmega32d4", "atxmega32e5", "atxmega8e5".

"avrxmega4"
Peranti "XMEGA" dengan lebih daripada 64@tie{}KiB dan sehingga 128@tie{}KiB program
memori. mcu@tie{}= "atxmega64a3", "atxmega64a3u", "atxmega64a4u", "atxmega64b1",
"atxmega64b3", "atxmega64c3", "atxmega64d3", "atxmega64d4".

"avrxmega5"
Peranti "XMEGA" dengan lebih daripada 64@tie{}KiB dan sehingga 128@tie{}KiB program
memori dan lebih daripada 64@tie{}KiB RAM. mcu@tie{}= "atxmega64a1",
"atxmega64a1u".

"avrxmega6"
Peranti "XMEGA" dengan lebih daripada 128@tie{}KiB memori program. mcu@tali leher{}=
"atxmega128a3", "atxmega128a3u", "atxmega128b1", "atxmega128b3", "atxmega128c3",
"atxmega128d3", "atxmega128d4", "atxmega192a3", "atxmega192a3u", "atxmega192c3",
"atxmega192d3", "atxmega256a3", "atxmega256a3b", "atxmega256a3bu",
"atxmega256a3u", "atxmega256c3", "atxmega256d3", "atxmega384c3", "atxmega384d3".

"avrxmega7"
Peranti "XMEGA" dengan lebih daripada 128@tie{}KiB memori program dan lebih daripada
64@tie{}KiB RAM. mcu@tie{}= "atxmega128a1", "atxmega128a1u", "atxmega128a4u".

"avrtiny"
Peranti teras kecil "TINY" dengan 512@tie{}B sehingga 4@tie{}KiB memori program.
mcu@tie{}= "attiny10", "attiny20", "attiny4", "attiny40", "attiny5", "attiny9".

"avr1"
ISA ini dilaksanakan oleh teras AVR yang minimum dan disokong untuk pemasang sahaja.
mcu@tie{}= "attiny11", "attiny12", "attiny15", "attiny28", "at90s1200".

-maccumulate-args
Kumpul argumen fungsi keluar dan peroleh/lepaskan ruang tindanan yang diperlukan untuk
hujah fungsi keluar sekali dalam prolog/epilog fungsi. Tanpa pilihan ini,
hujah keluar ditolak sebelum memanggil fungsi dan muncul selepas itu.

Menimbulkan hujah selepas panggilan fungsi boleh menjadi mahal pada AVR supaya
mengumpul ruang tindanan mungkin membawa kepada boleh laku yang lebih kecil kerana hujah memerlukan
tidak boleh dialih keluar daripada timbunan selepas panggilan fungsi sedemikian.

Pilihan ini boleh menyebabkan saiz kod dikurangkan untuk fungsi yang melakukan beberapa panggilan ke
fungsi yang mendapatkan hujahnya pada timbunan seperti panggilan ke fungsi seperti printf.

-kos-mbranch=kos
Tetapkan kos cawangan untuk arahan cawangan bersyarat kos. Nilai yang munasabah
untuk kos ialah integer kecil bukan negatif. Kos cawangan lalai ialah 0.

-mcall-prolog
Prolog/epilog fungsi dikembangkan sebagai panggilan ke subrutin yang sesuai. Kod
saiz lebih kecil.

-pudina8
Anggap "int" sebagai integer 8-bit. Ini mempengaruhi saiz semua jenis: "char" ialah 1
bait, "int" ialah 1 bait, "panjang" ialah 2 bait, dan "panjang panjang" ialah 4 bait. Tolonglah
ambil perhatian bahawa pilihan ini tidak mematuhi piawaian C, tetapi ia menghasilkan lebih kecil
saiz kod.

-mn-flash=num
Andaikan bahawa memori denyar mempunyai saiz num kali 64@tie{}KiB.

-mno-gangguan
Kod yang dijana tidak serasi dengan gangguan perkakasan. Saiz kod lebih kecil.

-relax
Cuba gantikan "CALL" resp. Arahan "JMP" oleh resp "RCALL" yang lebih pendek. "RJMP"
arahan jika berkenaan. Tetapan -relax hanya menambah --mlink-berehat pilihan untuk
baris arahan pemasang dan --berehat pilihan kepada baris arahan pemaut.

Lompat santai dilakukan oleh penghubung kerana lompatan mengimbangi tidak diketahui sebelum ini
kod terletak. Oleh itu, kod penghimpun yang dihasilkan oleh pengkompil adalah sama,
tetapi arahan dalam boleh laku mungkin berbeza daripada arahan dalam pemasang
kod.

Bersantai mesti dihidupkan jika stub pemaut diperlukan, lihat bahagian "EIND" dan
rintisan penghubung di bawah.

-mrmw
Andaikan bahawa peranti menyokong arahan Baca-Ubahsuai-Tulis "XCH", "LAC", "LAS"
dan "LAT".

-msp8
Anggap daftar penuding tindanan sebagai daftar 8-bit, iaitu andaikan bait tinggi bagi
penuding tindanan adalah sifar. Secara umum, anda tidak perlu menetapkan pilihan ini dengan tangan.

Pilihan ini digunakan secara dalaman oleh pengkompil untuk memilih dan membina multilib untuk
seni bina "avr2" dan "avr25". Seni bina ini mencampurkan peranti dengan dan tanpa
"SPH". Untuk sebarang tetapan selain daripada -mmcu=avr2 or -mmcu=avr25 pemacu pengkompil menambah
atau mengalih keluar pilihan ini daripada baris arahan pengkompil yang betul, kerana pengkompil
kemudian tahu jika peranti atau seni bina mempunyai penuding tindanan 8-bit dan oleh itu tiada "SPH"
mendaftar atau tidak.

-mstrict-X
Gunakan daftar alamat "X" dengan cara yang dicadangkan oleh perkakasan. Ini bermakna "X" ialah
hanya digunakan dalam pengalamatan tidak langsung, selepas kenaikan atau pra-penurunan.

Tanpa pilihan ini, daftar "X" boleh digunakan dengan cara yang sama seperti "Y" atau "Z" yang
kemudian dicontohi oleh arahan tambahan. Sebagai contoh, memuatkan nilai dengan
"X+const" mengalamatkan dengan kecil bukan negatif "const < 64" pada daftar Rn is
dilakukan sebagai

adiw r26, const ; X += const
ld , X ; = *X
sbiw r26, const; X -= const

-mtiny-stack
Hanya tukar 8@tie{}bit bawah penuding tindanan.

-nodevicelib
Jangan paut ke pustaka khusus peranti AVR-LibC "libdev.a".

-Waddr-ruang-tukar
Beri amaran tentang penukaran antara ruang alamat dalam kes di mana alamat yang terhasil
ruang tidak terkandung dalam ruang alamat masuk.

"EIND" dan Peranti dengan Lebih Daripada 128 Ki Bait Denyar

Penunjuk dalam pelaksanaan adalah 16@tie{}bit lebar. Alamat fungsi atau label
diwakili sebagai alamat perkataan supaya lompatan dan panggilan tidak langsung boleh menyasarkan sebarang kod
alamat dalam julat perkataan 64@tie{}Ki.

Untuk memudahkan lompatan tidak langsung pada peranti dengan lebih daripada 128@tie{}Ki bait
ruang memori program, terdapat daftar fungsi khas yang dipanggil "EIND" yang berfungsi sebagai
bahagian paling penting alamat sasaran apabila arahan "EICALL" atau "EIJMP".
terpakai.

Lompatan dan panggilan tidak langsung pada peranti ini dikendalikan seperti berikut oleh pengkompil dan adalah
tertakluk kepada beberapa batasan:

* Pengkompil tidak pernah menetapkan "EIND".

* Pengkompil menggunakan "EIND" secara tersirat dalam arahan "EICALL"/"EIJMP" atau mungkin membaca
"EIND" secara langsung untuk meniru panggilan/lompat tidak langsung melalui "RET"
arahan.

* Pengkompil menganggap bahawa "EIND" tidak pernah berubah semasa kod permulaan atau semasa
permohonan. Khususnya, "EIND" tidak disimpan/dipulihkan dalam fungsi atau gangguan
prolog/epilog rutin perkhidmatan.

* Untuk panggilan tidak langsung ke fungsi dan goto yang dikira, pemaut menjana rintisan. Stub
adalah pad lompat kadang-kadang juga dipanggil trampolin. Oleh itu, panggilan/lompat tidak langsung melompat ke
rintisan sedemikian. Rintisan mengandungi lompatan terus ke alamat yang dikehendaki.

* Kelonggaran pemaut mesti dihidupkan supaya pemaut menjana rintisan dengan betul
dalam semua keadaan. Lihat pilihan pengkompil -relax dan pilihan pemaut --berehat.
Terdapat kes sudut di mana penyambung sepatutnya menghasilkan stub tetapi membatalkannya
tanpa kelonggaran dan tanpa mesej ralat yang berguna.

* Skrip pemaut lalai disusun untuk kod dengan "EIND = 0". Jika kod sepatutnya
untuk bekerja untuk persediaan dengan "EIND != 0", skrip pemaut tersuai perlu digunakan mengikut susunan
untuk meletakkan bahagian yang namanya bermula dengan ".trampolin" ke dalam segmen di mana
"EIND" menunjuk ke.

* Kod permulaan daripada libgcc tidak pernah menetapkan "EIND". Perhatikan bahawa kod permulaan adalah gabungan
kod daripada libgcc dan AVR-LibC. Untuk kesan AVR-LibC pada "EIND", lihat AVR-
Manual pengguna LibC ("http://nongnu.org/avr-libc/user-manual/").

* Adalah sah untuk kod permulaan khusus pengguna untuk menyediakan "EIND" awal, contohnya dengan
cara kod permulaan yang terletak di bahagian ".init3". Kod sedemikian dijalankan sebelum
kod permulaan am yang memulakan RAM dan memanggil pembina, tetapi selepas sedikit
kod permulaan daripada AVR-LibC yang menetapkan "EIND" kepada segmen di mana jadual vektor berada
berada.

#termasuk

kekosongan statik
__attribute__((section(".init3"),bogel,digunakan,tiada_fungsi_instrumen))
init3_set_eind (kosong)
{
__asm ​​tidak menentu ("ldi r24,pm_hh8(__trampolin_start)\n\t"
"keluar %i0,r24" :: "n" (&EIND): "r24","memori");
}

Simbol "__trampolin_start" ditakrifkan dalam skrip pemaut.

* Stub dijana secara automatik oleh pemaut jika dua syarat berikut
bertemu:

-
(ringkasan untuk menjana rintisan) seperti:

LDI r24, lo8(gs( ))
LDI r25, hi8(gs( ))

-
di luar segmen di mana stub terletak.

* Pengkompil mengeluarkan pengubah "gs" sedemikian untuk label kod dalam situasi berikut:

-
-
- -mcall-prolog>
pilihan baris arahan.

-
jadual yang anda boleh tentukan -fno-jump-tables pilihan baris arahan.

-
-
* Melompat ke alamat bukan simbolik seperti itu tidak disokong:

int utama (kosong)
{
/* Fungsi panggilan pada alamat perkataan 0x2 */
pulangkan ((int(*)(void)) 0x2)();
}

Sebaliknya, stub perlu disediakan, iaitu fungsi perlu dipanggil melalui simbol
("func_4" dalam contoh):

int utama (kosong)
{
extern int func_4 (kosong);

/* Fungsi panggilan pada alamat bait 0x4 */
kembalikan func_4();
}

dan permohonan itu dikaitkan dengan -Wl,--defsym,func_4=0x4. Sebagai alternatif, "func_4"
boleh ditakrifkan dalam skrip penghubung.

Pengendalian Daftar Fungsi Khas "RAMPD", "RAMPX", "RAMPY" dan "RAMPZ"

Sesetengah peranti AVR menyokong kenangan yang lebih besar daripada julat 64@tie{}KiB yang boleh diakses
dengan penunjuk 16-bit. Untuk mengakses lokasi memori di luar julat 64@tie{}KiB ini,
kandungan daftar "RAMP" digunakan sebagai bahagian tinggi alamat: "X", "Y", "Z"
daftar alamat digabungkan dengan fungsi khas "RAMPX", "RAMPY", "RAMPZ".
mendaftar, masing-masing, untuk mendapatkan alamat yang luas. Begitu juga, "RAMPD" digunakan bersama dengan
pengalamatan langsung.

* Kod permulaan memulakan pendaftaran fungsi khas "RAMP" dengan sifar.

* Sekiranya AVR Dinamakan Alamat Ruang, dinamakan alamat ruang selain daripada generik atau "__flash" ialah
digunakan, kemudian "RAMPZ" ditetapkan seperti yang diperlukan sebelum operasi.

* Jika peranti menyokong RAM lebih besar daripada 64@tie{}KiB dan pengkompil perlu ditukar
"RAMPZ" untuk melaksanakan operasi, "RAMPZ" ditetapkan semula kepada sifar selepas operasi.

* Jika peranti disertakan dengan daftar "RAMP" tertentu, prolog/epilog ISR
menyimpan/memulihkan SFR itu dan memulakannya dengan sifar sekiranya kod ISR mungkin
(secara tersirat) menggunakannya.

* RAM lebih besar daripada 64@tie{}KiB tidak disokong oleh GCC untuk sasaran AVR. Jika anda menggunakan
pemasang sebaris untuk membaca dari lokasi di luar julat alamat 16-bit dan berubah
salah satu daripada daftar "RAMP", anda mesti menetapkan semula kepada sifar selepas akses.

Makro Terbina dalam AVR

GCC mentakrifkan beberapa makro terbina dalam supaya kod pengguna boleh menguji kehadiran atau
ketiadaan ciri. Hampir mana-mana makro terbina dalam berikut disimpulkan daripada peranti
keupayaan dan dengan itu dicetuskan oleh -mmcu= pilihan baris arahan.

Untuk lebih banyak makro terbina dalam khusus AVR lihat AVR Dinamakan Alamat Ruangan dan AVR Terbina dalam
Fungsi.

"__AVR_ARCH__"
Makro terbina dalam yang menyelesaikan kepada nombor perpuluhan yang mengenal pasti seni bina dan
bergantung pada -mmcu=mcu pilihan. Nilai yang mungkin adalah:

2, 25, 3, 31, 35, 4, 5, 51, 6

untuk mcu="avr2", "avr25", "avr3", "avr31", "avr35", "avr4", "avr5", "avr51", "avr6",

masing-masing dan

100, 102, 104, 105, 106, 107

untuk mcu="avrtiny", "avrxmega2", "avrxmega4", "avrxmega5", "avrxmega6", "avrxmega7",
masing-masing. Jika mcu menentukan peranti, makro terbina dalam ini ditetapkan dengan sewajarnya. Untuk
contoh, dengan -mmcu=atmega8 makro ditakrifkan kepada 4.

"__AVR_Peranti__"
Menetapkan -mmcu=peranti mentakrifkan makro terbina dalam ini yang mencerminkan nama peranti. Untuk
contohnya, -mmcu=atmega8 mentakrifkan makro terbina dalam "__AVR_ATmega8__", -mmcu=attiny261a
mentakrifkan "__AVR_ATtiny261A__", dsb.

Nama makro terbina dalam mengikut skema "__AVR_Peranti__" di mana Peranti adalah
nama peranti seperti daripada manual pengguna AVR. Perbezaan antara Peranti dalam terbina dalam
makro dan peranti in -mmcu=peranti ialah yang terakhir sentiasa huruf kecil.

If peranti bukan peranti tetapi hanya seni bina teras seperti avr51, makro ini tidak
ditakrifkan.

"__AVR_DEVICE_NAME__"
Menetapkan -mmcu=peranti mentakrifkan makro terbina dalam ini kepada nama peranti. Sebagai contoh,
dengan -mmcu=atmega8 makro ditakrifkan kepada "atmega8".

If peranti bukan peranti tetapi hanya seni bina teras seperti avr51, makro ini tidak
ditakrifkan.

"__AVR_XMEGA__"
Peranti / seni bina tergolong dalam keluarga peranti XMEGA.

"__AVR_HAVE_ELPM__"
Peranti mempunyai arahan "ELPM".

"__AVR_HAVE_ELPMX__"
Peranti ini mempunyai "ELPM Rn,Z" dan "ELPM Rn,Z+" arahan.

"__AVR_HAVE_MOVW__"
Peranti mempunyai arahan "MOVW" untuk melakukan pergerakan daftar-daftar 16-bit.

"__AVR_HAVE_LPMX__"
Peranti ini mempunyai "LPM Rn,Z" dan "LPM Rn,Z+" arahan.

"__AVR_HAVE_MUL__"
Peranti ini mempunyai pengganda perkakasan.

"__AVR_HAVE_JMP_CALL__"
Peranti mempunyai arahan "JMP" dan "CALL". Ini adalah kes untuk peranti dengan
sekurang-kurangnya 16@tie{}KiB memori program.

"__AVR_HAVE_EIJMP_EICALL__"
"__AVR_3_BYTE_PC__"
Peranti mempunyai arahan "EIJMP" dan "EICALL". Ini adalah kes untuk peranti
dengan lebih daripada 128@tie{}KiB memori program. Ini juga bermakna bahawa program
pembilang (PC) ialah 3@tie{}bait lebar.

"__AVR_2_BYTE_PC__"
Pembilang program (PC) adalah 2@tie{}bait lebar. Ini adalah kes untuk peranti dengan sehingga
128@tie{}KiB memori program.

"__AVR_HAVE_8BIT_SP__"
"__AVR_HAVE_16BIT_SP__"
Daftar penuding tindanan (SP) dianggap sebagai daftar 8-bit masing-masing 16-bit oleh
penyusun. Takrifan makro ini dipengaruhi oleh -mtiny-stack.

"__AVR_HAVE_SPH__"
"__AVR_SP8__"
Peranti mempunyai daftar fungsi khas SPH (bahagian tinggi penuding tindanan) atau mempunyai
penunjuk tindanan 8-bit, masing-masing. Takrifan makro ini dipengaruhi oleh
-mmcu= dan dalam kes-kes -mmcu=avr2 dan -mmcu=avr25 juga oleh -msp8.

"__AVR_HAVE_RAMPD__"
"__AVR_HAVE_RAMPX__"
"__AVR_HAVE_RAMPY__"
"__AVR_HAVE_RAMPZ__"
Peranti ini mempunyai daftar fungsi khas "RAMPD", "RAMPX", "RAMPY", "RAMPZ",
masing-masing.

"__TIADA_GANGGU__"
Makro ini mencerminkan -mno-gangguan pilihan baris arahan.

"__AVR_ERRATA_SKIP__"
"__AVR_ERRATA_SKIP_JMP_CALL__"
Sesetengah peranti AVR (AT90S8515, ATmega103) tidak boleh melangkau arahan 32-bit kerana
kesalahan perkakasan. Arahan langkau ialah "SBRS", "SBRC", "SBIS", "SBIC" dan "CPSE".
Makro kedua hanya ditakrifkan jika "__AVR_HAVE_JMP_CALL__" juga ditetapkan.

"__AVR_ISA_RMW__"
Peranti mempunyai arahan Baca-Ubahsuai-Tulis (XCH, LAC, LAS dan LAT).

"__AVR_SFR_OFFSET__=mengimbangi"
Arahan yang boleh menangani daftar fungsi khas I/O secara langsung seperti "IN",
"KELUAR", "SBI", dsb. boleh menggunakan alamat yang berbeza seolah-olah dialamatkan oleh arahan kepada
akses RAM seperti "LD" atau "STS". Offset ini bergantung pada seni bina peranti dan mempunyai
untuk ditolak daripada alamat RAM untuk mendapatkan alamat{}I/O@tie masing-masing.

"__WITH_AVRLIBC__"
Pengkompil dikonfigurasikan untuk digunakan bersama-sama dengan AVR-Libc. Lihat --dengan-avrlibc
konfigurasi pilihan.

Sirip hitam Pilihan

-mcpu=cpu[-sirevision]
Menentukan nama pemproses Blackfin sasaran. Pada masa ini, cpu boleh menjadi salah satu
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.

Pilihannya sirevision menentukan semakan silikon sasaran Blackfin
pemproses. Sebarang penyelesaian yang tersedia untuk semakan silikon yang disasarkan didayakan.
If sirevision is tiada, tiada penyelesaian didayakan. Jika sirevision is mana-mana, semua
penyelesaian untuk pemproses yang disasarkan didayakan. Makro "__SILICON_REVISION__".
ditakrifkan kepada dua digit heksadesimal yang mewakili nombor utama dan nombor kecil dalam
semakan silikon. Jika sirevision is tiada, "__SILICON_REVISION__" tidak ditakrifkan.
If sirevision is mana-mana, "__SILICON_REVISION__" ditakrifkan sebagai 0xffff. Jika ini
pilihan sirevision tidak digunakan, GCC menganggap semakan silikon terkini yang diketahui
pemproses Blackfin yang disasarkan.

GCC mentakrifkan makro prapemproses untuk yang ditentukan cpu. Bagi bfin-elf rantai alat,
pilihan ini menyebabkan BSP perkakasan yang disediakan oleh libgloss dipautkan dalam if -msim is
tidak diberi.

Tanpa pilihan ini, bf532 digunakan sebagai pemproses secara lalai.

Perhatikan bahawa sokongan untuk bf561 tidak lengkap. Untuk bf561, hanya makro prapemproses sahaja
ditakrifkan.

-msim
Menentukan bahawa program akan dijalankan pada simulator. Ini menyebabkan simulator
BSP yang disediakan oleh libgloss untuk dipautkan. Pilihan ini mempunyai kesan hanya untuk bfin-elf
rantai alat. Pilihan lain tertentu, seperti -perpustakaan-perkongsian pertengahan dan -mfdpic, membayangkan
-msim.

-petunjuk-bingkai-daun-momit
Jangan simpan penunjuk bingkai dalam daftar untuk fungsi daun. Ini mengelakkan
arahan untuk menyimpan, menyediakan dan memulihkan penunjuk bingkai dan membuat daftar tambahan
terdapat dalam fungsi daun. Pilihannya -fomit-frame-pointer mengeluarkan bingkai
penunjuk untuk semua fungsi, yang mungkin membuat penyahpepijatan lebih sukar.

-mspecld-anomali
Apabila didayakan, pengkompil memastikan bahawa kod yang dijana tidak mengandungi
beban spekulatif selepas arahan lompat. Jika pilihan ini digunakan,
"__WORKAROUND_SPECULATIVE_LOADS" ditakrifkan.

-mno-specld-anomali
Jangan jana kod tambahan untuk mengelakkan beban spekulatif daripada berlaku.

-mcsync-anomali
Apabila didayakan, pengkompil memastikan bahawa kod yang dijana tidak mengandungi CSYNC atau
Arahan SSYNC terlalu awal selepas cawangan bersyarat. Jika pilihan ini digunakan,
"__WORKAROUND_SPECULATIVE_SYNCS" ditakrifkan.

-mno-csync-anomali
Jangan jana kod tambahan untuk menghalang arahan CSYNC atau SSYNC daripada berlaku juga
tidak lama selepas cawangan bersyarat.

-mlow-64k
Apabila didayakan, pengkompil bebas untuk mengambil kesempatan daripada pengetahuan yang keseluruhannya
program sesuai dengan 64k memori yang rendah.

-mno-rendah-64k
Anggapkan bahawa program itu sewenang-wenangnya besar. Ini adalah lalai.

-mstack-check-l1
Lakukan semakan tindanan menggunakan maklumat yang diletakkan ke dalam memori pad awal L1 oleh uClinux
isirong.

-perpustakaan-perkongsian pertengahan
Hasilkan kod yang menyokong perpustakaan kongsi melalui kaedah ID perpustakaan. Ini membenarkan
untuk melaksanakan di tempat dan perpustakaan kongsi dalam persekitaran tanpa memori maya
pengurusan. Pilihan ini membayangkan -fPIC. Dengan bfin-elf sasaran, pilihan ini membayangkan
-msim.

-mno-id-shared-library
Hasilkan kod yang tidak menganggap perpustakaan kongsi berasaskan ID sedang digunakan. Ini adalah
lalai.

-mleaf-id-shared-library
Hasilkan kod yang menyokong perpustakaan kongsi melalui kaedah ID perpustakaan, tetapi andaikan
bahawa pustaka atau boleh laku ini tidak akan dipautkan dengan mana-mana perpustakaan kongsi ID lain.
Itu membolehkan pengkompil menggunakan kod yang lebih pantas untuk lompatan dan panggilan.

-mno-leaf-id-shared-library
Jangan menganggap bahawa kod yang sedang disusun tidak akan dipautkan dengan mana-mana pustaka kongsi ID.
Kod yang lebih perlahan dijana untuk lompat dan panggilan insns.

-mshared-library-id=n
Menentukan nombor pengenalan perpustakaan kongsi berasaskan ID yang sedang disusun.
Menentukan nilai 0 menjana kod yang lebih padat; menyatakan daya nilai lain
peruntukan nombor itu kepada perpustakaan semasa tetapi tiada lagi ruang atau masa
cekap daripada mengabaikan pilihan ini.

-msep-data
Hasilkan kod yang membolehkan segmen data ditempatkan di kawasan memori yang berbeza
daripada segmen teks. Ini membolehkan untuk melaksanakan di tempat dalam persekitaran tanpa
pengurusan memori maya dengan menghapuskan penempatan semula terhadap bahagian teks.

-mno-sep-data
Hasilkan kod yang menganggap bahawa segmen data mengikuti segmen teks. Ini adalah
lalai.

-mlong-panggilan
-mno-long-panggilan
Memberitahu pengkompil untuk melaksanakan panggilan fungsi dengan terlebih dahulu memuatkan alamat
berfungsi ke dalam daftar dan kemudian melakukan panggilan subrutin pada daftar ini. ini
suis diperlukan jika fungsi sasaran terletak di luar julat pengalamatan 24-bit
versi berasaskan offset arahan panggilan subrutin.

Ciri ini tidak didayakan secara lalai. Menentukan -mno-long-panggilan mengembalikan
tingkah laku lalai. Perhatikan suis ini tidak mempunyai kesan ke atas cara pengkompil menjana
kod untuk mengendalikan panggilan fungsi melalui penunjuk fungsi.

-mfast-fp
Pautan dengan perpustakaan titik terapung yang pantas. Perpustakaan ini melegakan beberapa IEEE
peraturan standard titik terapung untuk menyemak input terhadap Not-a-Number (NAN), dalam
minat prestasi.

-minline-plt
Dayakan penyelarasan entri PLT dalam panggilan fungsi ke fungsi yang tidak diketahui
mengikat secara tempatan. Ia tiada kesan tanpa -mfdpic.

-multicore
Bina aplikasi kendiri untuk pemproses Blackfin berbilang teras. Pilihan ini menyebabkan
fail permulaan yang betul dan skrip pautan yang menyokong multicore untuk digunakan, dan mentakrifkan
makro "__BFIN_MULTICORE". Ia hanya boleh digunakan dengan -mcpu=bf561[-sirevision].

Pilihan ini boleh digunakan dengan -mcorea or -mcoreb, yang memilih satu aplikasi-
model pengaturcaraan per-teras. Tanpa -mcorea or -mcoreb, yang
model pengaturcaraan aplikasi tunggal/dwi-teras digunakan. Dalam model ini, yang utama
fungsi Teras B harus dinamakan sebagai "coreb_main".

Jika pilihan ini tidak digunakan, model pengaturcaraan aplikasi teras tunggal digunakan.

-mcorea
Bina aplikasi kendiri untuk Teras A BF561 apabila menggunakan satu-aplikasi-per-
model pengaturcaraan teras. Fail permulaan dan skrip pautan yang betul digunakan untuk menyokong Teras
A, dan makro "__BFIN_COREA" ditakrifkan. Pilihan ini hanya boleh digunakan dalam
sempena -multicore.

-mcoreb
Bina aplikasi kendiri untuk Teras B BF561 apabila menggunakan satu-aplikasi-per-
model pengaturcaraan teras. Fail permulaan dan skrip pautan yang betul digunakan untuk menyokong Teras
B, dan makro "__BFIN_COREB" ditakrifkan. Apabila pilihan ini digunakan, "coreb_main"
hendaklah digunakan bukannya "utama". Pilihan ini hanya boleh digunakan bersama dengan
-multicore.

-msdram
Bina aplikasi kendiri untuk SDRAM. Fail permulaan dan skrip pautan yang betul digunakan
untuk meletakkan aplikasi ke dalam SDRAM, dan makro "__BFIN_SDRAM" ditakrifkan. The
pemuat harus memulakan SDRAM sebelum memuatkan aplikasi.

-micplb
Andaikan bahawa ICPLB didayakan pada masa berjalan. Ini mempunyai kesan ke atas anomali tertentu
penyelesaian. Untuk sasaran Linux, lalainya ialah menganggap ICPLB didayakan; untuk
aplikasi kendiri lalai dimatikan.

C6X Pilihan

-march=nama
Ini menentukan nama seni bina sasaran. GCC menggunakan nama ini untuk menentukan
jenis arahan yang boleh dikeluarkan semasa menjana kod pemasangan. dibenarkan
nama ialah: c62x, c64x, c64x+, c67x, c67x+, c674x.

-besar-endian
Hasilkan kod untuk sasaran besar-endian.

-kecil-endian
Hasilkan kod untuk sasaran kecil-endian. Ini adalah lalai.

-msim
Pilih fail permulaan dan skrip pemaut yang sesuai untuk simulator.

-msdata=default
Letakkan data global dan statik kecil dalam bahagian ".neardata", yang ditunjuk oleh
daftar "B14". Letakkan data global dan statik kecil yang tidak dimulakan dalam bahagian ".bss",
yang bersebelahan dengan bahagian ".neardata". Letakkan data baca sahaja kecil ke dalam
bahagian ".rodata". Bahagian yang sepadan yang digunakan untuk kepingan data yang besar ialah
".fardata", ".far" dan ".const".

-msdata=semua
Letakkan semua data, bukan hanya objek kecil, ke dalam bahagian yang dikhaskan untuk data kecil, dan
gunakan pengalamatan relatif kepada daftar "B14" untuk mengaksesnya.

-msdata=tiada
Jangan gunakan bahagian yang dikhaskan untuk data kecil, dan gunakan alamat mutlak untuk
capai semua data. Letakkan semua data global dan statik yang dimulakan dalam ".fardata"
bahagian dan semua data yang tidak dimulakan dalam bahagian ".far". Masukkan semua data tetap ke dalam
bahagian ".const".

CRIS Pilihan

Pilihan ini ditakrifkan khusus untuk port CRIS.

-march=jenis seni bina
-mcpu=jenis seni bina
Hasilkan kod untuk seni bina yang ditentukan. Pilihan untuk jenis seni bina adalah
v3, v8 dan v10 untuk masing-masing ETRAX 4, ETRAX 100, dan ETRAX 100 LX. Lalai ialah v0
kecuali untuk cris-axis-linux-gnu, di mana lalainya adalah v10.

-mtune=jenis seni bina
Tune ke jenis seni bina semua yang berkenaan tentang kod yang dihasilkan, kecuali untuk
ABI dan set arahan yang tersedia. Pilihan untuk jenis seni bina adalah
sama seperti untuk -march=jenis seni bina.

-mmax-stack-frame=n
Beri amaran apabila bingkai tindanan fungsi melebihi n bait.

-metrax4
-metrax100
Pilihannya -metrax4 dan -metrax100 adalah sinonim untuk -march=v3 dan -march=v8
masing-masing.

-mmul-bug-workaround
-mno-mul-bug-workaround
Selesaikan pepijat dalam arahan "muls" dan "mulu" untuk model CPU di mana ianya
berlaku. Pilihan ini aktif secara lalai.

-mpdebug
Dayakan maklumat berkaitan nyahpepijat verbose khusus CRIS dalam kod pemasangan. ini
pilihan juga mempunyai kesan mematikan #NO_APP penunjuk kod berformat ke
pemasang pada permulaan fail pemasangan.

-mcc-init
Jangan gunakan keputusan kod syarat daripada arahan sebelumnya; sentiasa mengeluarkan membandingkan dan
arahan ujian sebelum menggunakan kod keadaan.

-mno-kesan sampingan
Jangan keluarkan arahan dengan kesan sampingan dalam mod menangani selain daripada pasca-
kenaikan.

-mstack-align
-mno-stack-align
-mdata-align
-mno-data-align
-mconst-align
-mno-const-align
Pilihan ini (NO- pilihan) susun (hapuskan susunan) untuk bingkai tindanan,
data individu dan pemalar untuk diselaraskan untuk saiz capaian data tunggal maksimum
untuk model CPU yang dipilih. Lalai adalah untuk mengatur penjajaran 32-bit. ABI
butiran seperti susun atur struktur tidak terjejas oleh pilihan ini.

-m32-bit
-m16-bit
-m8-bit
Sama seperti pilihan stack- data- dan const-align di atas, pilihan ini diatur untuk
bingkai tindanan, data boleh tulis dan pemalar semuanya sejajar 32-bit, 16-bit atau 8-bit.
Lalai ialah penjajaran 32-bit.

-mno-prolog-epilog
-mprolog-epilog
Dengan -mno-prolog-epilog, prolog dan epilog fungsi biasa yang ditetapkan
bingkai tindanan ditinggalkan dan tiada arahan pemulangan atau urutan pemulangan
dihasilkan dalam kod. Gunakan pilihan ini hanya bersama-sama dengan pemeriksaan visual
kod tersusun: tiada amaran atau ralat dijana apabila daftar yang disimpan panggilan mesti ada
disimpan, atau storan untuk pembolehubah tempatan perlu diperuntukkan.

-mno-gotplt
-mgotplt
Dengan -fpic dan -fPIC, jangan menjana (menjana) urutan arahan yang dimuatkan
alamat untuk fungsi dari bahagian PLT GOT dan bukannya (tradisional pada yang lain
architectures) memanggil PLT. Lalainya ialah -mgotplt.

-melf
Pilihan no-op warisan hanya diiktiraf dengan cris-axis-elf dan cris-axis-linux-gnu
sasaran.

-mlinux
Pilihan no-op warisan hanya diiktiraf dengan sasaran cris-axis-linux-gnu.

-sim
Pilihan ini, dikenali untuk cris-axis-elf, mengatur untuk memaut dengan input-output
fungsi daripada perpustakaan simulator. Kod, data yang dimulakan dan data yang dimulakan sifar
diperuntukkan secara berturut-turut.

-sim2
suka -sim, tetapi lulus pilihan pemaut untuk mencari data yang dimulakan pada 0x40000000 dan sifar-
data yang dimulakan pada 0x80000000.

CR16 Pilihan

Pilihan ini ditakrifkan khusus untuk port CR16.

-mmac
Dayakan penggunaan arahan darab-akumulasi. Dilumpuhkan secara lalai.

-mcr16cplus
-mcr16c
Hasilkan kod untuk seni bina CR16C atau CR16C+. Seni bina CR16C+ adalah lalai.

-msim
Memautkan perpustakaan libsim.a yang serasi dengan simulator. Berkenaan dengan ELF
penyusun sahaja.

-pudina32
Pilih jenis integer sebagai lebar 32-bit.

-mbit-ops
Menghasilkan arahan "sbit"/"cbit" untuk manipulasi bit.

-mdata-model=model
Pilih model data. Pilihan untuk model adalah berhampiran, jauh or sederhana. sederhana adalah lalai.
Walau bagaimanapun, jauh tidak sah dengan -mcr16c, kerana seni bina CR16C tidak menyokong
model data jauh.

Darwin Pilihan

Pilihan ini ditakrifkan untuk semua seni bina yang menjalankan sistem pengendalian Darwin.

FSF GCC di Darwin tidak mencipta fail objek "gemuk"; ia mencipta fail objek untuk
seni bina tunggal yang GCC dibina untuk disasarkan. GCC Apple pada Darwin memang mencipta "lemak"
fail jika berbilang -gerbang pilihan digunakan; ia melakukannya dengan menjalankan pengkompil atau pemaut
beberapa kali dan menggabungkan keputusan bersama-sama dengan lipo.

Subjenis fail yang dibuat (seperti ppc7400 or ppc970 or i686) ditentukan oleh
bendera yang menyatakan ISA yang disasarkan GCC, seperti -mcpu or -berbaris. Yang
-force_cpusubtype_ALL pilihan boleh digunakan untuk mengatasi ini.

Alat Darwin berbeza dalam tingkah laku mereka apabila dibentangkan dengan ketidakpadanan ISA. The
penghimpun, as, hanya membenarkan arahan digunakan yang sah untuk subjenis
fail yang dijananya, jadi anda tidak boleh meletakkan arahan 64-bit dalam a ppc750 fail objek. The
penghubung untuk perpustakaan kongsi, /usr/bin/libtool, gagal dan mencetak ralat jika diminta
buat perpustakaan kongsi dengan subjenis yang kurang ketat daripada fail inputnya (untuk
contohnya, cuba meletakkan a ppc970 fail objek dalam a ppc7400 perpustakaan). Penghubung untuk
boleh laku, ld, secara senyap-senyap memberikan boleh laku subjenis yang paling ketat daripada mana-mana subjenisnya
fail input.

-Fdir
Tambahkan direktori rangka kerja dir ke kepala senarai direktori yang hendak dicari
untuk fail pengepala. Direktori ini disisipkan dengan yang ditentukan oleh -I
pilihan dan diimbas dalam susunan kiri ke kanan.

Direktori rangka kerja ialah direktori dengan rangka kerja di dalamnya. Rangka kerja ialah a
direktori dengan a Pengepala dan / atau PrivateHeaders direktori yang terkandung secara langsung di dalamnya itu
berakhir dalam .rangka kerja. Nama rangka kerja ialah nama direktori ini tidak termasuk
yang .rangka kerja. Pengepala yang dikaitkan dengan rangka kerja terdapat dalam salah satu daripada dua itu
direktori, dengan Pengepala dicari dahulu. Subframework ialah rangka kerja
direktori yang berada dalam rangka kerja rangka kerja direktori. Termasuk subrangka kerja
pengepala hanya boleh muncul dalam pengepala rangka kerja yang mengandungi subrangka kerja, atau
dalam tajuk subrangka kerja adik beradik. Dua subrangka kerja adalah adik-beradik jika ia berlaku dalam
rangka kerja yang sama. Subrangka kerja tidak seharusnya mempunyai nama yang sama dengan rangka kerja; a
amaran dikeluarkan jika ini dilanggar. Pada masa ini subrangka kerja tidak boleh mempunyai
subrangka kerja; pada masa hadapan, mekanisme ini boleh diperluaskan untuk menyokong ini. The
rangka kerja standard boleh didapati dalam / Sistem / Perpustakaan / Frameworks dan
/ Perpustakaan / Frameworks. Contoh termasuk kelihatan seperti "#include ",
di mana Rangka Kerja menandakan nama rangka kerja dan pengepala.h terdapat di
PrivateHeaders or Pengepala direktori.

-iframeworkdir
suka -F kecuali direktori itu dianggap sebagai direktori sistem. Perbezaan utama
antara ini -iframework dan -F adakah dengan -iframework pengkompil tidak memberi amaran
tentang binaan yang terkandung dalam fail pengepala yang ditemui melalui dir. Pilihan ini sah
hanya untuk keluarga bahasa C.

-berani
Mengeluarkan maklumat penyahpepijatan untuk simbol yang digunakan. Untuk format penyahpepijatan tikaman,
ini membolehkan -memusnahkan-simbol-debug-tidak digunakan. Ini secara lalai HIDUP.

-gfull
Mengeluarkan maklumat penyahpepijatan untuk semua simbol dan jenis.

-mmacosx-version-min=versi
Versi terawal MacOS X yang boleh dilaksanakan ini akan dijalankan ialah versi. Biasa
nilai-nilai versi termasuk 10.1, 10.2, dan 10.3.9.

Jika pengkompil dibina untuk menggunakan pengepala sistem secara lalai, maka lalai untuk
pilihan ini ialah versi sistem di mana pengkompil sedang berjalan, jika tidak
lalai ialah membuat pilihan yang serasi dengan seberapa banyak sistem dan asas kod
mungkin.

-mkernel
Dayakan mod pembangunan kernel. The -mkernel set pilihan -statik, -fno-biasa,
-fno-use-cxa-atexit, -fno-pengecualian, -fno-bukan-panggilan-pengecualian, -fapple-kext,
-fno-lemah dan -fno-rtti di mana berkenaan. Mod ini juga ditetapkan -mno-altivec,
-msoft-float, -fno-dibina dan -mlong-cawangan untuk sasaran PowerPC.

-mone-bait-bool
Gantikan lalai untuk "bool" supaya "sizeof(bool)==1". Secara lalai "sizeof(bool)"
ialah 4 apabila menyusun untuk Darwin/PowerPC dan 1 apabila menyusun untuk Darwin/x86, jadi ini
pilihan tidak mempunyai kesan pada x86.

Amaran: . -mone-bait-bool suis menyebabkan GCC menjana kod yang bukan binari
serasi dengan kod yang dihasilkan tanpa suis itu. Menggunakan suis ini mungkin memerlukan
menyusun semula semua modul lain dalam program, termasuk perpustakaan sistem. Guna ini
beralih untuk mematuhi model data bukan lalai.

-mfix-dan-teruskan
-imbuhan-dan-sambung
-findirect-data
Hasilkan kod yang sesuai untuk pembangunan pemulihan pantas, seperti membenarkan GDB melakukannya
beban secara dinamik .o fail ke dalam program yang sudah berjalan. -findirect-data dan
-imbuhan-dan-sambung disediakan untuk keserasian ke belakang.

-semua_muat
Memuatkan semua ahli perpustakaan arkib statik. Lihat lelaki ld(1) untuk maklumat lanjut.

-arch_errors_fatal
Menyebabkan ralat yang berkaitan dengan fail yang mempunyai seni bina yang salah akan membawa maut.

-ikat_pada_beban
Menyebabkan fail output ditandakan supaya pemaut dinamik akan mengikat semua
rujukan tidak ditentukan apabila fail dimuatkan atau dilancarkan.

-berikat
Hasilkan fail format berkas Mach-o. Lihat lelaki ld(1) untuk maklumat lanjut.

-bundle_loader boleh dilaksanakan
Pilihan ini menentukan boleh dilaksanakan yang akan memuatkan fail output binaan sedang
dipautkan. Lihat lelaki ld(1) untuk maklumat lanjut.

-dynamiclib
Apabila lulus pilihan ini, GCC menghasilkan pustaka dinamik dan bukannya executable when
menghubungkan, menggunakan Darwin libtool perintah.

-force_cpusubtype_ALL
Ini menyebabkan fail output GCC mempunyai SEMUA subjenis, bukannya satu yang dikawal oleh
yang -mcpu or -berbaris pilihan.

-allowable_client nama pelanggan
-nama pelanggan
-versi_keserasian
-versi terkini
-jalur_mati
-fail-bergantung
-dylib_file
-dylinker_install_name
-dinamik
-exported_symbols_list
-senarai fail
-ruang nama_flat
-force_flat_namespace
-headerpad_max_install_names
-dasar_imej
-di dalamnya
-nama_pasang
-keep_private_externs
-multi_module
-multiply_defined
-multiply_defined_unused
-noall_load
-no_dead_strip_inits_and_terms
-nofixprebinding
-nomultidef
-noprebind
-noseglinkedit
-pagezero_size
-prebind
-prebind_all_twolevel_modules
-private_bundle
-baca_sahaja_relok
-sectalign
-sectobjectsymbols
-kenapa beban
-seg1addr
-sectcreate
-sectobjectsymbols
-sektor
-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
-modul_tunggal
-statik
-sub_library
-sub_umbrella
-ruang nama_duatingkat
-payung
-tidak ditentukan
-senarai_simbol_tidak dieksport
-ketakpadanan_rujukan_lemah
-whatsloaded
Pilihan ini diserahkan kepada penyambung Darwin. Halaman manusia pemaut Darwin menerangkan
mereka secara terperinci.

Disember Alfa Pilihan

Ini -m pilihan ditakrifkan untuk pelaksanaan DEC Alpha:

-mno-soft-float
-msoft-float
Gunakan (jangan gunakan) arahan titik terapung perkakasan untuk titik terapung
operasi. Bila -msoft-float ditentukan, berfungsi dalam libgcc.a digunakan untuk membuat persembahan
operasi titik terapung. Melainkan ia digantikan dengan rutin yang mencontohi
operasi titik terapung, atau disusun sedemikian rupa untuk memanggil emulasi sedemikian
rutin, rutin ini mengeluarkan operasi titik terapung. Jika anda sedang menyusun untuk
Alpha tanpa operasi titik terapung, anda mesti memastikan bahawa perpustakaan dibina
supaya tidak memanggil mereka.

Ambil perhatian bahawa pelaksanaan Alpha tanpa operasi titik terapung perlu ada
daftar titik terapung.

-mfp-reg
-mno-fp-regs
Hasilkan kod yang menggunakan (tidak menggunakan) set daftar titik terapung. -mno-fp-regs
bererti -msoft-float. Jika set daftar titik terapung tidak digunakan, titik terapung
operan dihantar dalam daftar integer seolah-olah ia adalah integer dan titik terapung
keputusan diluluskan dalam $0 dan bukannya $f0. Ini ialah urutan panggilan bukan standard, jadi
sebarang fungsi dengan argumen titik terapung atau nilai pulangan yang dipanggil oleh kod yang disusun
dengan -mno-fp-regs mesti juga disusun dengan pilihan itu.

Penggunaan tipikal pilihan ini ialah membina kernel yang tidak digunakan, dan oleh itu perlu
tidak menyimpan dan memulihkan, sebarang daftar titik terapung.

-meeee
Seni bina Alpha melaksanakan perkakasan titik terapung yang dioptimumkan untuk maksimum
prestasi. Ia kebanyakannya mematuhi piawaian titik terapung IEEE. Walau bagaimanapun,
untuk pematuhan penuh, bantuan perisian diperlukan. Pilihan ini menjana kod
kod mematuhi IEEE sepenuhnya kecuali bahawa bendera tidak tepat tidak diselenggara (lihat di bawah).
Jika pilihan ini dihidupkan, makro prapemproses "_IEEE_FP" ditakrifkan semasa
kompilasi. Kod yang terhasil adalah kurang cekap tetapi dapat menyokong dengan betul
nombor tidak normal dan nilai IEEE yang luar biasa seperti bukan-nombor dan tambah/tolak
infiniti. Penyusun Alpha lain memanggil pilihan ini -ieee_dengan_tiada_tidak tepat.

-mieee-dengan-tak tepat
Ini seperti -meeee kecuali kod yang dihasilkan juga mengekalkan IEEE bendera tidak tepat.
Menghidupkan pilihan ini menyebabkan kod yang dijana melaksanakan IEEE yang mematuhi sepenuhnya
matematik. Selain "_IEEE_FP", "_IEEE_FP_EXACT" ditakrifkan sebagai makro prapemproses.
Pada sesetengah pelaksanaan Alpha, kod yang terhasil mungkin dilaksanakan jauh lebih perlahan daripada
kod yang dijana secara lalai. Oleh kerana terdapat sedikit kod yang bergantung pada
bendera tidak tepat, anda biasanya tidak harus menentukan pilihan ini. Penyusun Alpha lain memanggil
pilihan ini -ieee_dengan_tidak tepat.

-mfp-trap-mode=mod perangkap
Pilihan ini mengawal perangkap berkaitan titik terapung yang didayakan. Alpha yang lain
penyusun memanggil pilihan ini -fptm mod perangkap. Mod perangkap boleh ditetapkan kepada salah satu daripada empat
nilai:

n Ini ialah tetapan lalai (biasa). Satu-satunya perangkap yang didayakan ialah
yang tidak boleh dilumpuhkan dalam perisian (cth, pembahagian dengan perangkap sifar).

u Sebagai tambahan kepada perangkap yang didayakan oleh n, perangkap aliran bawah juga didayakan.

su suka u, tetapi arahan ditandakan sebagai selamat untuk penyiapan perisian (lihat
Manual seni bina Alpha untuk butiran).

sui suka su, tetapi perangkap tidak tepat juga didayakan.

-mfp-rounding-mode=mod pembulatan
Memilih mod pembundaran IEEE. Penyusun Alpha lain memanggil pilihan ini -fprm
mod pembulatan. Yang mod pembulatan boleh menjadi salah satu daripada:

n Mod pembundaran IEEE biasa. Nombor titik terapung dibundarkan ke arah yang terdekat
nombor mesin atau ke arah nombor mesin genap sekiranya berlaku seri.

m Bulat ke arah tolak infiniti.

c Mod pembundaran cincang. Nombor titik terapung dibundarkan ke arah sifar.

d Mod pembulatan dinamik. Medan dalam daftar kawalan titik terapung (fpcr, Lihat
Manual rujukan seni bina Alpha) mengawal mod pembundaran yang berkuat kuasa. C
perpustakaan memulakan daftar ini untuk pembundaran ke arah tambah infiniti. Oleh itu,
melainkan program anda mengubah suai fpcr, d sepadan dengan bulat ke arah tambah
infiniti.

-mtrap-precision=perangkap-ketepatan
Dalam seni bina Alpha, perangkap titik terapung adalah tidak tepat. Ini bermakna tanpa
bantuan perisian adalah mustahil untuk pulih daripada perangkap terapung dan program
pelaksanaan biasanya perlu ditamatkan. GCC boleh menjana kod yang boleh membantu
pengendali perangkap sistem operasi dalam menentukan lokasi tepat yang menyebabkan a
perangkap titik terapung. Bergantung pada keperluan permohonan, berbeza
tahap ketepatan boleh dipilih:

p Ketepatan program. Pilihan ini ialah lalai dan bermakna pengendali perangkap boleh sahaja
mengenal pasti program yang menyebabkan pengecualian titik terapung.

f Ketepatan fungsi. Pengendali perangkap boleh menentukan fungsi yang menyebabkan a
pengecualian titik terapung.

i Ketepatan arahan. Pengendali perangkap boleh menentukan arahan yang tepat itu
menyebabkan pengecualian titik terapung.

Penyusun Alpha lain menyediakan pilihan yang setara yang dipanggil -skop_selamat dan
-selamat_semula.

-mieee-conformant
Pilihan ini menandakan kod yang dijana sebagai pematuhan IEEE. Anda tidak boleh menggunakan pilihan ini
melainkan anda juga nyatakan -mtrap-precision=i dan sama ada -mfp-trap-mode=su or
-mfp-trap-mode=sui. Kesannya hanya untuk mengeluarkan garisan .bendera 48 dalam fungsi
prolog fail pemasangan yang dijana.

-membina-pemalar
Biasanya GCC memeriksa pemalar integer 32- atau 64-bit untuk melihat sama ada ia boleh membinanya
daripada pemalar yang lebih kecil dalam dua atau tiga arahan. Jika ia tidak boleh, ia mengeluarkan
pemalar sebagai literal dan menjana kod untuk memuatkannya daripada segmen data pada masa jalankan.

Gunakan pilihan ini untuk menghendaki GCC membina semua pemalar integer menggunakan kod, walaupun jika
ia memerlukan lebih banyak arahan (maksimum ialah enam).

Anda biasanya menggunakan pilihan ini untuk membina pemuat dinamik perpustakaan kongsi. Sendiri a
perpustakaan kongsi, ia mesti menempatkan semula dirinya dalam ingatan sebelum ia boleh mencari pembolehubah dan
pemalar dalam segmen datanya sendiri.

-mbwx
-mno-bwx
-mcix
-mno-cix
-mfix
-mno-fix
-maks
-mno-maks
Nyatakan sama ada GCC harus menjana kod untuk menggunakan BWX, CIX, FIX dan MAX pilihan
set arahan. Lalai adalah menggunakan set arahan yang disokong oleh CPU
jenis yang ditentukan melalui -mcpu= pilihan atau CPU yang GCC dibina jika tiada
dinyatakan.

-mfloat-vax
-mfloat-ieee
Hasilkan kod yang menggunakan (tidak menggunakan) VAX F dan G aritmetik titik terapung
daripada IEEE ketepatan tunggal dan berganda.

-eksplisit-reloks
-mno-explicit-relocs
Penghimpun Alpha yang lebih lama tidak menyediakan cara untuk menjana penempatan semula simbol kecuali melalui
makro penghimpun. Penggunaan makro ini tidak membenarkan penjadualan arahan yang optimum.
GNU binutils pada versi 2.12 menyokong sintaks baharu yang membenarkan pengkompil untuk
tandakan secara eksplisit penempatan semula yang harus digunakan pada arahan yang mana. Pilihan ini adalah
kebanyakannya berguna untuk penyahpepijatan, kerana GCC mengesan keupayaan pemasang apabila ia
dibina dan menetapkan lalai sewajarnya.

-msmall-data
-mlarge-data
Bila -eksplisit-reloks sedang berkuat kuasa, data statik diakses melalui gp-relatif
penempatan semula. Bila -msmall-data digunakan, objek 8 bait panjang atau lebih kecil diletakkan di dalamnya
a kecil data kawasan (bahagian ".sdata" dan ".sbss") dan diakses melalui 16-bit
penempatan semula daripada daftar $gp. Ini mengehadkan saiz kawasan data kecil kepada
64KB, tetapi membenarkan pembolehubah diakses terus melalui satu arahan.

Lalai adalah -mlarge-data. Dengan pilihan ini kawasan data dihadkan hanya di bawah
2GB. Program yang memerlukan lebih daripada 2GB data mesti menggunakan "malloc" atau "mmap" untuk
memperuntukkan data dalam timbunan dan bukannya dalam segmen data program.

Apabila menjana kod untuk perpustakaan kongsi, -fpic bererti -msmall-data dan -fPIC
bererti -mlarge-data.

-msmall-text
-mlarge-text
Bila -msmall-text digunakan, pengkompil menganggap bahawa kod keseluruhan program
(atau perpustakaan kongsi) muat dalam 4MB, dan dengan itu boleh dicapai dengan arahan cawangan.
Bila -msmall-data digunakan, pengkompil boleh menganggap bahawa semua simbol tempatan berkongsi
nilai $gp yang sama, dan dengan itu mengurangkan bilangan arahan yang diperlukan untuk fungsi
panggilan dari 4 hingga 1.

Lalai adalah -mlarge-text.

-mcpu=cpu_type
Tetapkan set arahan dan parameter penjadualan arahan untuk jenis mesin
cpu_type. Anda boleh menentukan sama ada EV nama gaya atau nombor cip yang sepadan.
GCC menyokong parameter penjadualan untuk keluarga pemproses EV4, EV5 dan EV6 dan
memilih nilai lalai untuk set arahan daripada pemproses yang anda tentukan. Jika
anda tidak menyatakan jenis pemproses, GCC secara lalai kepada pemproses yang
pengkompil telah dibina.

Nilai yang disokong untuk cpu_type adalah

ev4
ev45
21064
Jadual sebagai EV4 dan tidak mempunyai sambungan set arahan.

ev5
21164
Jadual sebagai EV5 dan tidak mempunyai sambungan set arahan.

ev56
21164a
Jadualkan sebagai EV5 dan menyokong sambungan BWX.

pca56
21164pc
21164PC
Jadualkan sebagai EV5 dan menyokong sambungan BWX dan MAX.

ev6
21264
Jadualkan sebagai EV6 dan menyokong sambungan BWX, FIX dan MAX.

ev67
21264a
Jadualkan sebagai EV6 dan menyokong sambungan BWX, CIX, FIX dan MAX.

Rantai alat asli juga menyokong nilai asli, yang memilih seni bina terbaik
pilihan untuk pemproses hos. -mcpu=asli tidak mempunyai kesan jika GCC tidak mengenali
pemproses.

-mtune=cpu_type
Tetapkan hanya parameter penjadualan arahan untuk jenis mesin cpu_type. Yang
set arahan tidak diubah.

Rantai alat asli juga menyokong nilai asli, yang memilih seni bina terbaik
pilihan untuk pemproses hos. -mtune=asli tidak mempunyai kesan jika GCC tidak mengenali
pemproses.

-mmemory-latensi=masa
Menetapkan kependaman yang harus diandaikan oleh penjadual untuk rujukan memori biasa seperti yang dilihat oleh
permohonan. Nombor ini sangat bergantung pada corak capaian memori yang digunakan
oleh aplikasi dan saiz cache luaran pada mesin.

Pilihan yang sah untuk masa adalah

nombor
Nombor perpuluhan yang mewakili kitaran jam.

L1
L2
L3
utama
Pengkompil mengandungi anggaran bilangan kitaran jam untuk "tipikal" EV4 &
Perkakasan EV5 untuk cache Tahap 1, 2 & 3 (juga dipanggil Dcache, Scache dan
Bcache), serta memori utama. Ambil perhatian bahawa L3 hanya sah untuk EV5.

FR30 Pilihan

Pilihan ini ditakrifkan khusus untuk port FR30.

-msmall-model
Gunakan model ruang alamat kecil. Ini boleh menghasilkan kod yang lebih kecil, tetapi ia menganggap
bahawa semua nilai dan alamat simbolik sesuai dengan julat 20-bit.

-mno-lsim
Anggapkan bahawa sokongan masa jalan telah disediakan dan oleh itu tidak perlu memasukkan
perpustakaan simulator (libsim.a) pada baris arahan pemaut.

FRV Pilihan

-mgpr-32
Hanya gunakan 32 daftar tujuan umum yang pertama.

-mgpr-64
Gunakan semua 64 daftar tujuan umum.

-mfpr-32
Gunakan hanya 32 daftar titik terapung yang pertama.

-mfpr-64
Gunakan semua 64 daftar titik terapung.

-mhard-terapung
Gunakan arahan perkakasan untuk operasi titik terapung.

-msoft-float
Gunakan rutin perpustakaan untuk operasi titik terapung.

-mallok-cc
Peruntukkan daftar kod syarat secara dinamik.

-mfixed-cc
Jangan cuba memperuntukkan daftar kod syarat secara dinamik, hanya gunakan "icc0" dan
"fcc0".

-mdword
Tukar ABI untuk menggunakan kata ganda insns.

-mno-dword
Jangan gunakan arahan kata ganda.

-mdouble
Gunakan arahan berganda titik terapung.

-mno-double
Jangan gunakan arahan berganda titik terapung.

-mmedia
Gunakan arahan media.

-mno-media
Jangan gunakan arahan media.

-mmuladd
Gunakan arahan darab dan tambah/tolak.

-mno-muladd
Jangan gunakan arahan darab dan tambah/tolak.

-mfdpic
Pilih FDPIC ABI, yang menggunakan deskriptor fungsi untuk mewakili penunjuk kepada
fungsi. Tanpa sebarang pilihan berkaitan PIC/PIE, ia membayangkan -fPIE. Dengan -fpic or
-fpie, ia menganggap entri GOT dan data kecil berada dalam julat 12-bit daripada GOT
alamat pangkalan; dengan -fPIC or -fPIE, ofset GOT dikira dengan 32 bit. Dengan
bfin-elf sasaran, pilihan ini membayangkan -msim.

-minline-plt
Dayakan penyelarasan entri PLT dalam panggilan fungsi ke fungsi yang tidak diketahui
mengikat secara tempatan. Ia tiada kesan tanpa -mfdpic. Ia didayakan secara lalai jika
mengoptimumkan kelajuan dan menyusun untuk perpustakaan kongsi (iaitu, -fPIC or -fpic), atau
apabila pilihan pengoptimuman seperti -O3 atau di atas terdapat dalam baris arahan.

-mTLS
Anggap segmen TLS yang besar apabila menjana kod setempat-benang.

-mtls
Jangan menganggap segmen TLS yang besar apabila menjana kod setempat-benang.

-mgprel-ro
Dayakan penggunaan penempatan semula "GPREL" dalam FDPIC ABI untuk data yang diketahui berada dalam
bahagian baca sahaja. Ia didayakan secara lalai, kecuali untuk -fpic or -fpie: walaupun
ia boleh membantu menjadikan jadual ofset global lebih kecil, ia memperdagangkan 1 arahan untuk 4. Dengan
-fPIC or -fPIE, ia berdagang 3 arahan untuk 4, satu daripadanya mungkin dikongsi oleh berbilang
simbol, dan ia mengelakkan keperluan untuk entri GOT untuk simbol yang dirujuk, jadi begitu
lebih berkemungkinan menang. Jika tidak, -mno-gprel-ro boleh digunakan untuk melumpuhkannya.

-multilib-library-pic
Pautkan dengan perpustakaan gambar (perpustakaan, bukan FD). Ia tersirat oleh -mlibrary-pic, juga
seperti oleh -fPIC dan -fpic tanpa -mfdpic. Anda tidak sepatutnya menggunakannya secara eksplisit.

-mlinked-fp
Ikut keperluan EABI untuk sentiasa mencipta penuding bingkai apabila bingkai tindanan
diperuntukkan. Pilihan ini didayakan secara lalai dan boleh dilumpuhkan dengan
-mno-linked-fp.

-mlong-panggilan
Gunakan pengalamatan tidak langsung untuk memanggil fungsi di luar unit penyusunan semasa. ini
membolehkan fungsi diletakkan di mana-mana dalam ruang alamat 32-bit.

-label-malign
Cuba selaraskan label ke sempadan 8-bait dengan memasukkan NOP ke dalam paket sebelumnya.
Pilihan ini hanya mempunyai kesan apabila pembungkusan VLIW didayakan. Ia tidak mencipta baharu
paket; ia hanya menambah NOP kepada yang sedia ada.

-mlibrary-pic
Hasilkan kod EABI bebas kedudukan.

-macc-4
Gunakan hanya empat daftar penumpuk media yang pertama.

-macc-8
Gunakan kesemua lapan daftar penumpuk media.

-pek
Pek arahan VLIW.

-mno-pack
Jangan bungkus arahan VLIW.

-mno-bendera
Jangan tandakan suis ABI dalam e_flags.

-mcond-move
Dayakan penggunaan arahan pergerakan bersyarat (lalai).

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mno-cond-move
Lumpuhkan penggunaan arahan pergerakan bersyarat.

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mscc
Dayakan penggunaan arahan set bersyarat (lalai).

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mno-scc
Lumpuhkan penggunaan arahan set bersyarat.

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mcond-exec
Dayakan penggunaan pelaksanaan bersyarat (lalai).

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mno-cond-exec
Lumpuhkan penggunaan pelaksanaan bersyarat.

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mvliw-cawangan
Jalankan pas untuk mengemas cawangan ke dalam arahan VLIW (lalai).

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mno-vliw-cawangan
Jangan jalankan pas untuk membungkus cawangan ke dalam arahan VLIW.

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mmulti-cond-exec
Dayakan pengoptimuman "&&" dan "||" dalam pelaksanaan bersyarat (lalai).

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mno-multi-cond-exec
Lumpuhkan pengoptimuman "&&" dan "||" dalam pelaksanaan bersyarat.

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mnested-cond-exec
Dayakan pengoptimuman pelaksanaan bersyarat bersarang (lalai).

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mno-nested-cond-exec
Lumpuhkan pengoptimuman pelaksanaan bersyarat bersarang.

Suis ini terutamanya untuk menyahpepijat pengkompil dan mungkin akan dialih keluar dalam a
versi masa hadapan.

-mengoptimumkan-membar
Suis ini mengalih keluar arahan "membar" yang berlebihan daripada kod yang dijana pengkompil.
Ia didayakan secara lalai.

-mno-optimum-membar
Suis ini menyahdayakan penyingkiran automatik arahan "membar" yang berlebihan daripada
kod yang dihasilkan.

-mtomcat-stats
Menyebabkan gas mencetak statistik tomcat.

-mcpu=cpu
Pilih jenis pemproses untuk menjana kod. Nilai yang mungkin adalah frv, fr550,
kucing jantan, fr500, fr450, fr405, fr400, fr300 dan mudah.

GNU / Linux Pilihan

Ini -m pilihan ditakrifkan untuk sasaran GNU/Linux:

-mglibc
Gunakan perpustakaan GNU C. Ini ialah lalai kecuali pada *-*-linux-*uclibc* dan
*-*-linux-*android* sasaran.

-muclibc
Gunakan perpustakaan uClibc C. Ini adalah lalai hidup *-*-linux-*uclibc* sasaran.

-mbionik
Gunakan perpustakaan Bionic C. Ini adalah lalai hidup *-*-linux-*android* sasaran.

-android
Susun kod yang serasi dengan platform Android. Ini adalah lalai hidup
*-*-linux-*android* sasaran.

Apabila menyusun, pilihan ini membolehkan -mbionik, -fPIC, -fno-pengecualian dan -fno-rtti by
lalai. Apabila memaut, pilihan ini menjadikan pemandu GCC melepasi pilihan khusus Android
kepada penghubung. Akhir sekali, pilihan ini menyebabkan makro prapemproses "__ANDROID__" menjadi
ditakrifkan.

-tno-android-cc
Lumpuhkan kesan kompilasi daripada -android, iaitu, jangan dayakan -mbionik, -fPIC,
-fno-pengecualian dan -fno-rtti secara lalai.

-tno-android-ld
Lumpuhkan kesan pemautan bagi -android, iaitu, luluskan pilihan pemautan Linux standard kepada
penghubung.

H8 / 300 Pilihan

Ini -m pilihan ditakrifkan untuk pelaksanaan H8/300:

-relax
Pendekkan beberapa rujukan alamat pada masa pautan, apabila boleh; menggunakan pilihan pemaut
-berehat.

-mh Hasilkan kod untuk H8/300H.

-Cik Hasilkan kod untuk H8S.

-mn Hasilkan kod untuk H8S dan H8/300H dalam mod biasa. Suis ini mesti digunakan
sama ada dengan -mh or -Cik.

-ms2600
Hasilkan kod untuk H8S/2600. Suis ini mesti digunakan dengan -Cik.

-mexr
Daftar lanjutan disimpan pada tindanan sebelum pelaksanaan fungsi dengan monitor
atribut. Pilihan lalai ialah -mexr. Pilihan ini hanya sah untuk sasaran H8S.

-mno-exr
Daftar lanjutan tidak disimpan pada tindanan sebelum pelaksanaan fungsi dengan monitor
atribut. Pilihan lalai ialah -mno-exr. Pilihan ini hanya sah untuk sasaran H8S.

-pudina32
Jadikan data "int" 32 bit secara lalai.

-malign-300
Pada H8/300H dan H8S, gunakan peraturan penjajaran yang sama seperti untuk H8/300. lalai
untuk H8/300H dan H8S adalah untuk menjajarkan panjang dan terapung pada sempadan 4-bait.
-malign-300 menyebabkan mereka diselaraskan pada sempadan 2-bait. Pilihan ini tidak mempunyai kesan
pada H8/300.

HPPA Pilihan

Ini -m pilihan ditakrifkan untuk keluarga komputer HPPA:

-march=jenis seni bina
Hasilkan kod untuk seni bina yang ditentukan. Pilihan untuk jenis seni bina adalah
1.0 untuk PA 1.0, 1.1 untuk PA 1.1, dan 2.0 untuk pemproses PA 2.0. Rujuk kepada
/usr/lib/sched.models pada sistem HP-UX untuk menentukan pilihan seni bina yang betul
untuk mesin anda. Kod yang disusun untuk seni bina bernombor rendah berjalan pada lebih tinggi
seni bina bernombor, tetapi bukan sebaliknya.

-mpa-risc-1-0
-mpa-risc-1-1
-mpa-risc-2-0
Sinonim untuk -mac=1.0, -mac=1.1, dan -mac=2.0 masing-masing.

-mlompat-dalam-kelewatan
Pilihan ini diabaikan dan disediakan untuk tujuan keserasian sahaja.

-lumpuhkan-fpregs
Elakkan daftar titik terapung daripada digunakan dalam apa jua cara. Ini adalah perlu untuk
menyusun kernel yang melakukan penukaran konteks malas bagi daftar titik terapung. Jika
anda menggunakan pilihan ini dan cuba melakukan operasi titik terapung, pengkompil
menggugurkan kandungan.

-lumpuhkan-pengindeksan
Halang pengkompil daripada menggunakan mod alamat pengindeksan. Ini mengelakkan beberapa agak
masalah kabur apabila menyusun kod yang dijana MIG di bawah MACH.

-mno-space-regs
Hasilkan kod yang menganggap sasaran tidak mempunyai daftar ruang. Ini membolehkan GCC untuk
menjana panggilan tidak langsung yang lebih pantas dan menggunakan mod alamat indeks tidak berskala.

Kod sedemikian sesuai untuk sistem dan kernel PA tahap 0.

-mfast-indirect-panggilan
Hasilkan kod yang menganggap panggilan tidak pernah melepasi sempadan ruang. Ini membolehkan GCC untuk
mengeluarkan kod yang melakukan panggilan tidak langsung yang lebih pantas.

Pilihan ini tidak berfungsi dengan kehadiran perpustakaan kongsi atau fungsi bersarang.

-mfixed-range=julat daftar
Hasilkan kod yang menganggap julat daftar yang diberikan sebagai daftar tetap. Daftar tetap
adalah salah satu yang tidak boleh digunakan oleh pengagih daftar. Ini berguna apabila menyusun kernel
kod. Julat daftar ditentukan sebagai dua daftar yang dipisahkan oleh sengkang. Pelbagai
julat daftar boleh ditentukan dipisahkan dengan koma.

-mlong-load-store
Hasilkan beban 3 arahan dan urutan simpan seperti yang kadangkala diperlukan oleh HP-UX 10
penghubung. Ini bersamaan dengan +k pilihan kepada penyusun HP.

-mportable-runtime
Gunakan konvensyen panggilan mudah alih yang dicadangkan oleh HP untuk sistem ELF.

-mgas
Dayakan penggunaan arahan pemasang yang hanya GAS faham.

-mschedule=jenis cpu
Jadualkan kod mengikut kekangan untuk jenis mesin jenis cpu. Pilihan
untuk jenis cpu adalah 700 7100, 7100LC, 7200, 7300 dan 8000. Rujuk kepada
/usr/lib/sched.models pada sistem HP-UX untuk menentukan pilihan penjadualan yang sesuai untuk
mesin anda. Penjadualan lalai ialah 8000.

-mlinker-opt
Dayakan pas pengoptimuman dalam pemaut HP-UX. Perhatikan ini menjadikan penyahpepijatan simbolik
mustahil. Ia juga mencetuskan pepijat dalam penyambung HP-UX 8 dan HP-UX 9 di mana ianya
berikan mesej ralat palsu apabila memautkan beberapa program.

-msoft-float
Hasilkan output yang mengandungi panggilan perpustakaan untuk titik terapung. Amaran: yang diperlukan
perpustakaan tidak tersedia untuk semua sasaran HPPA. Biasanya kemudahan di
pengkompil C biasa mesin digunakan, tetapi ini tidak boleh dilakukan secara langsung dalam
kompilasi. Anda mesti membuat pengaturan anda sendiri untuk menyediakan perpustakaan yang sesuai
fungsi untuk kompilasi silang.

-msoft-float menukar konvensyen panggilan dalam fail output; oleh itu, ia hanya
berguna jika anda menyusun semua program dengan pilihan ini. Khususnya, anda perlu
menyusun libgcc.a, perpustakaan yang disertakan dengan GCC, dengan -msoft-float untuk ini
untuk bekerja.

-msio
Hasilkan pratakrif, "_SIO", untuk pelayan IO. Lalainya ialah -mwsio. Ini menjana
pratakrif, "__hp9000s700", "__hp9000s700__" dan "_WSIO", untuk IO stesen kerja.
Pilihan ini tersedia di bawah HP-UX dan HI-UX.

-mgnu-ld
Gunakan pilihan khusus untuk GNU ld. Ini berlalu -berkongsi kepada ld apabila membina perkongsian
perpustakaan. Ia adalah lalai apabila GCC dikonfigurasikan, secara eksplisit atau tersirat, dengan
Penyambung GNU. Pilihan ini tidak menjejaskan yang mana ld dipanggil; ia hanya mengubah apa
parameter diserahkan kepada itu ld. Yang ld yang dipanggil ditentukan oleh
--dengan-ld pilihan konfigurasi, laluan carian program GCC, dan akhirnya oleh pengguna PATH.
Penyambung yang digunakan oleh GCC boleh dicetak menggunakan yang `gcc -print-prog-name=ld`. ini
pilihan hanya tersedia pada HP-UX GCC 64-bit, iaitu dikonfigurasikan dengan
hppa*64*-*-hpux*.

-mhp-ld
Gunakan pilihan khusus untuk HP ld. Ini berlalu -b kepada ld apabila membina perpustakaan kongsi
dan lulus +Terima Jenis Tidak Padan kepada ld pada semua pautan. Ia adalah lalai apabila GCC adalah
dikonfigurasikan, secara eksplisit atau tersirat, dengan penyambung HP. Pilihan ini tidak menjejaskan
yang ld dipanggil; ia hanya mengubah parameter yang dihantar kepadanya ld. Yang ld
yang dipanggil ditentukan oleh --dengan-ld pilihan konfigurasi, carian program GCC
laluan, dan akhirnya oleh pengguna PATH. Penyambung yang digunakan oleh GCC boleh dicetak menggunakan
yang `gcc -print-prog-name=ld`. Pilihan ini hanya tersedia pada HP-UX 64-bit
GCC, iaitu dikonfigurasikan dengan hppa*64*-*-hpux*.

-mlong-panggilan
Hasilkan kod yang menggunakan urutan panggilan panjang. Ini memastikan bahawa panggilan sentiasa boleh
untuk mencapai stub yang dijana pemaut. Lalai adalah untuk menjana panggilan panjang hanya apabila
jarak dari tapak panggilan ke permulaan fungsi atau unit terjemahan, sebagai
kes itu mungkin, melebihi had yang telah ditetapkan oleh jenis cawangan yang digunakan. The
had untuk panggilan biasa ialah 7,600,000 dan 240,000 bait, masing-masing untuk PA 2.0
dan seni bina PA 1.X. Sibcalls sentiasa terhad pada 240,000 bait.

Jarak diukur dari permulaan fungsi apabila menggunakan
-ffungsi-bahagian pilihan, atau apabila menggunakan -mgas dan -mno-portable-runtime pilihan
bersama di bawah HP-UX dengan pemaut SOM.

Ia biasanya tidak diingini untuk menggunakan pilihan ini kerana ia merendahkan prestasi. Walau bagaimanapun,
ia mungkin berguna dalam aplikasi besar, terutamanya apabila pemautan separa digunakan
membina aplikasi.

Jenis panggilan panjang yang digunakan bergantung pada keupayaan pemasang dan penyambung,
dan jenis kod yang dijana. Kesan ke atas sistem yang menyokong panjang
panggilan mutlak, dan perbezaan simbol pic panjang atau panggilan relatif pc sepatutnya
agak kecil. Walau bagaimanapun, panggilan tidak langsung digunakan pada sistem ELF 32-bit dalam kod gambar
dan ia agak panjang.

-munix=unix-std
Hasilkan pratakrif pengkompil dan pilih fail permulaan untuk standard UNIX yang ditentukan.
Pilihan untuk unix-std adalah 93, 95 dan 98. 93 disokong pada semua versi HP-UX.
95 tersedia pada HP-UX 10.10 dan lebih baru. 98 tersedia pada HP-UX 11.11 dan lebih baru.
Nilai lalai ialah 93 untuk HP-UX 10.00, 95 untuk HP-UX 10.10 walaupun hingga 11.00, dan 98
untuk HP-UX 11.11 dan lebih baru.

-munix=93 menyediakan pratakrif yang sama seperti GCC 3.3 dan 3.4. -munix=95 menyediakan
pratakrif tambahan untuk "XOPEN_UNIX" dan "_XOPEN_SOURCE_EXTENDED", dan fail permulaan
unix95.o. -munix=98 menyediakan pratakrif tambahan untuk "_XOPEN_UNIX",
"_XOPEN_SOURCE_EXTENDED", "_INCLUDE__STDC_A1_SOURCE" dan "_INCLUDE_XOPEN_SOURCE_500",
dan fail permulaan unix98.o.

Ia adalah penting untuk ambil perhatian bahawa pilihan ini menukar antara muka untuk pelbagai perpustakaan
rutin. Ia juga mempengaruhi tingkah laku operasi perpustakaan C. Oleh itu, melampau
penjagaan diperlukan dalam menggunakan pilihan ini.

Kod perpustakaan yang bertujuan untuk beroperasi dengan lebih daripada satu standard UNIX mesti diuji,
tetapkan dan pulihkan pembolehubah "__xpg4_extended_mask" mengikut kesesuaian. Kebanyakan perisian GNU
tidak menyediakan keupayaan ini.

-nolibdld
Sekat penjanaan pilihan pautan untuk mencari libdld.sl apabila -statik pilihan adalah
dinyatakan pada HP-UX 10 dan lebih baru.

-statik
Pelaksanaan HP-UX setlocale dalam libc mempunyai pergantungan pada libdld.sl. di sana
bukan versi arkib libdld.sl. Justeru, apabila -statik pilihan ditentukan,
pilihan pautan khas diperlukan untuk menyelesaikan pergantungan ini.

Pada HP-UX 10 dan lebih baru, pemacu GCC menambah pilihan yang diperlukan untuk dipautkan
libdld.sl apabila -statik pilihan ditentukan. Ini menyebabkan binari yang terhasil kepada
menjadi dinamik. Pada port 64-bit, pemaut menjana binari dinamik secara lalai dalam
apa-apa hal. The -nolibdld pilihan boleh digunakan untuk menghalang pemacu GCC daripada menambah
pilihan pautan ini.

-benang
Tambahkan sokongan untuk multithreading dengan dce thread perpustakaan di bawah HP-UX. Pilihan ini
menetapkan bendera untuk kedua-dua prapemproses dan pemaut.

IA-64 Pilihan

Ini adalah -m pilihan yang ditentukan untuk seni bina Intel IA-64.

-besar-endian
Hasilkan kod untuk sasaran besar-endian. Ini ialah lalai untuk HP-UX.

-kecil-endian
Hasilkan kod untuk sasaran kecil-endian. Ini adalah lalai untuk AIX5 dan GNU/Linux.

-mgnu-as
-mno-gnu-as
Hasilkan (atau jangan) kod untuk pemasang GNU. Ini adalah lalai.

-mgnu-ld
-mno-gnu-ld
Hasilkan (atau jangan) kod untuk pemaut GNU. Ini adalah lalai.

-mno-pic
Hasilkan kod yang tidak menggunakan daftar penunjuk global. Hasilnya bukan kedudukan
kod bebas, dan melanggar IA-64 ABI.

-mvolatile-asm-stop
-mno-volatile-asm-stop
Hasilkan (atau jangan) sedikit berhenti sebelum dan selepas penyataan asm yang tidak menentu.

-mendaftar-nama
-mno-daftar-nama
Hasilkan (atau jangan) in, loc, dan keluar daftarkan nama untuk daftar bertindan. ini
boleh menjadikan output pemasang lebih mudah dibaca.

-mno-sdata
-msdata
Lumpuhkan (atau dayakan) pengoptimuman yang menggunakan bahagian data kecil. Ini mungkin berguna
untuk mengatasi pepijat pengoptimum.

-mconstant-gp
Hasilkan kod yang menggunakan satu nilai penunjuk global malar. Ini berguna apabila
menyusun kod kernel.

-mauto-pic
Hasilkan kod yang boleh dipindahkan sendiri. Ini bermakna -mconstant-gp. Ini berguna
semasa menyusun kod perisian tegar.

-minline-float-divide-min-latency
Hasilkan kod untuk pembahagian sebaris nilai titik terapung menggunakan kependaman minimum
algoritma.

-minline-float-divide-max-throughput
Hasilkan kod untuk pembahagian sebaris nilai titik terapung menggunakan daya pemprosesan maksimum
algoritma.

-mno-inline-float-divide
Jangan jana kod sebaris untuk pembahagian nilai titik terapung.

-minline-int-divide-min-latency
Hasilkan kod untuk pembahagian sebaris nilai integer menggunakan kependaman minimum
algoritma.

-minline-int-divide-max-throughput
Hasilkan kod untuk pembahagian sebaris nilai integer menggunakan daya pemprosesan maksimum
algoritma.

-mno-inline-int-divide
Jangan jana kod sebaris untuk pembahagian nilai integer.

-minline-sqrt-min-latency
Hasilkan kod untuk punca kuasa dua sebaris menggunakan algoritma kependaman minimum.

-minline-sqrt-max-throughput
Hasilkan kod untuk punca kuasa dua sebaris menggunakan algoritma pemprosesan maksimum.

-mno-inline-sqrt
Jangan jana kod sebaris untuk "sqrt".

-mfused-gila
-mno-fused-madd
Jangan (jangan) jana kod yang menggunakan darab/tambah atau darab/tolak bercantum
arahan. Lalai adalah menggunakan arahan ini.

-mno-kerdil2-asm
-mdwarf2-asm
Jangan (atau lakukan) jana kod pemasang untuk maklumat penyahpepijatan nombor baris DWARF 2.
Ini mungkin berguna apabila tidak menggunakan penghimpun GNU.

-mearly-stop-bits
-mno-early-stop-bits
Benarkan bit henti diletakkan lebih awal daripada sejurus sebelum arahan itu
mencetuskan bit berhenti. Ini boleh meningkatkan penjadualan arahan, tetapi tidak selalu
berbuat demikian.

-mfixed-range=julat daftar
Hasilkan kod yang menganggap julat daftar yang diberikan sebagai daftar tetap. Daftar tetap
adalah salah satu yang tidak boleh digunakan oleh pengagih daftar. Ini berguna apabila menyusun kernel
kod. Julat daftar ditentukan sebagai dua daftar yang dipisahkan oleh sengkang. Pelbagai
julat daftar boleh ditentukan dipisahkan dengan koma.

-saiz-mtls=saiz tls
Tentukan saiz bit pengimbangan TLS segera. Nilai yang sah ialah 14, 22, dan 64.

-mtune=jenis cpu
Tala penjadualan arahan untuk CPU tertentu, Nilai sah adalah itanium,
itanium1, bergabung, itanium2, dan mckinley.

-milp32
-mlp64
Hasilkan kod untuk persekitaran 32-bit atau 64-bit. Persekitaran 32-bit menetapkan int,
panjang dan penunjuk kepada 32 bit. Persekitaran 64-bit menetapkan int kepada 32 bit dan panjang dan
penunjuk kepada 64 bit. Ini adalah bendera khusus HP-UX.

-mno-sched-br-data-spec
-msched-br-data-spec
(Dis/En)penjadualan spekulatif data boleh sebelum muat semula. Ini mengakibatkan penjanaan
arahan "ld.a" dan arahan semak yang sepadan ("ld.c" / "chk.a"). The
lalai ialah 'lumpuhkan'.

-msched-ar-data-spec
-mno-sched-ar-data-spec
(En/Dis)penjadualan spekulatif data boleh selepas muat semula. Ini mengakibatkan penjanaan
arahan "ld.a" dan arahan semak yang sepadan ("ld.c" / "chk.a"). The
lalai ialah 'dayakan'.

-mno-sched-control-spec
-msched-control-spec
(Dis/En)boleh mengawal penjadualan spekulatif. Ciri ini tersedia hanya semasa
penjadualan rantau (iaitu sebelum muat semula). Ini menghasilkan penjanaan "ld.s"
arahan dan arahan semak yang sepadan "chk.s". Lalainya ialah
'lumpuhkan'.

-msched-br-in-data-spec
-mno-sched-br-in-data-spec
(En/Dis)boleh penjadualan spekulatif arahan yang bergantung pada data
beban spekulatif sebelum muat semula. Ini berkesan hanya dengan -msched-br-data-spec
didayakan. Lalai ialah 'dayakan'.

-msched-ar-in-data-spec
-mno-sched-ar-in-data-spec
(En/Dis)boleh penjadualan spekulatif arahan yang bergantung pada data
beban spekulatif selepas muat semula. Ini berkesan hanya dengan -msched-ar-data-spec
didayakan. Lalai ialah 'dayakan'.

-msched-in-control-spec
-mno-sched-in-control-spec
(En/Dis)penjadualan spekulatif arahan yang boleh bergantung pada
mengawal beban spekulatif. Ini berkesan hanya dengan -msched-control-spec yang aktif.
Lalai ialah 'dayakan'.

-mno-sched-prefer-non-data-spec-inns
-msched-prefer-bukan-data-spec-inns
Jika didayakan, arahan spekulatif data dipilih untuk jadual hanya jika tiada
pilihan lain pada masa ini. Ini menjadikan penggunaan spekulasi data lebih banyak
konservatif. Lalai ialah 'lumpuhkan'.

-mno-sched-prefer-non-control-spec-inns
-msched-prefer-non-control-spec-insns
Jika didayakan, arahan spekulatif kawalan dipilih untuk jadual hanya jika ada
tiada pilihan lain buat masa ini. Ini menjadikan penggunaan spekulasi kawalan banyak
lebih konservatif. Lalai ialah 'lumpuhkan'.

-mno-sched-count-spec-in-critical-path
-msched-count-spec-in-critical-path
Jika didayakan, kebergantungan spekulatif dipertimbangkan semasa pengiraan
keutamaan arahan. Ini menjadikan penggunaan spekulasi lebih sedikit
konservatif. Lalai ialah 'lumpuhkan'.

-msched-spec-ldc
Gunakan semakan spekulasi data mudah. Pilihan ini dihidupkan secara lalai.

-msched-control-spec-ldc
Gunakan semakan mudah untuk spekulasi kawalan. Pilihan ini dihidupkan secara lalai.

-msched-stop-bits-selepas-setiap-kitaran
Letakkan sedikit berhenti selepas setiap kitaran semasa menjadualkan. Pilihan ini dihidupkan secara lalai.

-msched-fp-mem-deps-sifar-kos
Anggapkan bahawa storan titik terapung dan muatan tidak mungkin menyebabkan konflik apabila
diletakkan dalam kumpulan arahan yang sama. Pilihan ini dilumpuhkan secara lalai.

-msel-sched-dont-check-control-spec
Hasilkan semakan untuk spekulasi kawalan dalam penjadualan terpilih. Bendera ini adalah
dilumpuhkan secara lalai.

-msched-max-memory-insns=max-inns
Hadkan bilangan inns memori bagi setiap kumpulan arahan, memberikan keutamaan yang lebih rendah kepada
inns ingatan seterusnya cuba menjadualkan dalam kumpulan arahan yang sama.
Selalunya berguna untuk mengelakkan konflik bank cache. Nilai lalai ialah 1.

-msched-max-memory-insns-hard-had
Membuat had yang ditentukan oleh msched-max-memory-inns had keras, tidak membenarkan lebih
daripada nombor itu dalam kumpulan arahan. Jika tidak, hadnya adalah "lembut", maksudnya
bahawa operasi bukan ingatan lebih disukai apabila had dicapai, tetapi ingatan
operasi mungkin masih dijadualkan.

LM32 Pilihan

Ini -m pilihan ditakrifkan untuk seni bina LatticeMico32:

-anjakan-mbarrel-didayakan
Dayakan arahan anjakan tong.

-mdivide-enabled
Dayakan arahan bahagi dan modulus.

-membiak-didayakan
Dayakan arahan darab.

-msign-extend-enabled
Dayakan arahan lanjutkan tanda.

-didayakan muser
Dayakan arahan yang ditentukan pengguna.

M32C Pilihan

-mcpu=nama
Pilih CPU untuk kod yang dihasilkan. nama mungkin salah satunya r8c untuk R8C/Tiny
siri, m16c untuk siri M16C (sehingga /60), m32cm untuk siri M16C/80, atau m32c
untuk siri M32C/80.

-msim
Menentukan bahawa program akan dijalankan pada simulator. Ini menyebabkan alternatif
perpustakaan runtime untuk dipautkan yang menyokong, sebagai contoh, fail I/O. Anda tidak boleh
gunakan pilihan ini apabila menjana program yang akan dijalankan pada perkakasan sebenar; kamu mesti
menyediakan perpustakaan masa jalan anda sendiri untuk apa-apa fungsi I/O yang diperlukan.

-memgregs=nombor
Menentukan bilangan pseudo-register berasaskan memori yang digunakan GCC semasa penjanaan kod.
Pendaftar pseudo ini digunakan seperti daftar sebenar, jadi terdapat pertukaran antara
Keupayaan GCC untuk memasukkan kod ke dalam daftar yang tersedia, dan penalti prestasi
menggunakan memori dan bukannya daftar. Ambil perhatian bahawa semua modul dalam program mestilah
disusun dengan nilai yang sama untuk pilihan ini. Kerana itu, anda tidak boleh menggunakan ini
pilihan dengan perpustakaan masa jalan lalai GCC.

M32R/D Pilihan

Ini -m pilihan ditakrifkan untuk seni bina Renesas M32R/D:

-m32r2
Hasilkan kod untuk M32R/2.

-m32rx
Hasilkan kod untuk M32R/X.

-m32r
Hasilkan kod untuk M32R. Ini adalah lalai.

-mmodel=kecil
Andaikan semua objek tinggal dalam memori 16MB yang lebih rendah (supaya alamatnya boleh
dimuatkan dengan arahan "ld24"), dan andaikan semua subrutin boleh dicapai dengan
arahan "bl". Ini adalah lalai.

Kebolehalamatan objek tertentu boleh ditetapkan dengan atribut "model".

-mmodel=sederhana
Andaikan objek mungkin berada di mana-mana dalam ruang alamat 32-bit (pengkompil menjana
arahan "seth/add3" untuk memuatkan alamat mereka), dan anggap semua subrutin adalah
boleh dicapai dengan arahan "bl".

-mmodel=besar
Andaikan objek mungkin berada di mana-mana dalam ruang alamat 32-bit (pengkompil menjana
arahan "seth/add3" untuk memuatkan alamatnya), dan menganggap subrutin mungkin tidak
boleh dicapai dengan arahan "bl" (pengkompil menjana lebih perlahan
"seth/add3/jl" urutan arahan).

-msdata=tiada
Lumpuhkan penggunaan kawasan data kecil. Pembolehubah dimasukkan ke dalam salah satu ".data", ".bss", atau
".rodata" (melainkan atribut "section" telah ditentukan). Ini adalah lalai.

Kawasan data kecil terdiri daripada bahagian ".sdata" dan ".sbss". Objek mungkin
secara eksplisit dimasukkan ke dalam kawasan data kecil dengan atribut "bahagian" menggunakan salah satu daripada ini
bahagian.

-msdata=sdata
Letakkan data global dan statik kecil dalam kawasan data kecil, tetapi jangan jana khas
kod untuk merujuk mereka.

-msdata=gunakan
Letakkan data global dan statik kecil dalam kawasan data kecil, dan jana khas
arahan untuk merujuk mereka.

-G num
Letakkan objek global dan statik kurang daripada atau sama dengan num bait ke dalam data kecil atau
Bahagian BSS dan bukannya data biasa atau bahagian BSS. Nilai lalai bagi num is
8. The -msdata pilihan mesti ditetapkan kepada salah satu daripada sdata or penggunaan untuk pilihan ini mempunyai sebarang
kesan.

Semua modul harus disusun dengan yang sama -G num nilai. Menyusun dengan berbeza
nilai-nilai num mungkin atau mungkin tidak berfungsi; jika ia tidak pemaut memberikan ralat
mesej --- kod yang salah tidak dihasilkan.

-mdebug
Menjadikan kod khusus M32R dalam pengkompil memaparkan beberapa statistik yang mungkin membantu
dalam program penyahpepijatan.

-malign-gelung
Jajarkan semua gelung ke sempadan 32 bait.

-mno-align-gelung
Jangan kuatkuasakan penjajaran 32-bait untuk gelung. Ini adalah lalai.

-kadar kesilapan=nombor
Isu nombor arahan setiap kitaran. nombor hanya boleh 1 atau 2.

-kos-mbranch=nombor
nombor hanya boleh 1 atau 2. Jika 1 maka cawangan diutamakan daripada bersyarat
kod, jika ia adalah 2, maka berlaku sebaliknya.

-mflush-trap=nombor
Menentukan nombor perangkap untuk digunakan untuk mengepam cache. Lalai ialah 12. Sah
nombor adalah antara 0 dan 15 termasuk.

-mno-flush-perangkap
Menentukan bahawa cache tidak boleh disiram dengan menggunakan perangkap.

-mflush-func=nama
Menentukan nama fungsi sistem pengendalian untuk dipanggil untuk mengepam cache. The
lalai adalah _flush_cache, tetapi panggilan fungsi hanya digunakan jika perangkap tidak tersedia.

-mno-flush-func
Menunjukkan bahawa tiada fungsi OS untuk mengepam cache.

M680x0 Pilihan

Ini adalah -m pilihan yang ditentukan untuk pemproses M680x0 dan ColdFire. Tetapan lalai
bergantung pada seni bina yang dipilih apabila pengkompil dikonfigurasikan; lalai
untuk pilihan yang paling biasa diberikan di bawah.

-march=gerbang
Hasilkan kod untuk seni bina set arahan M680x0 atau ColdFire tertentu.
Nilai yang dibenarkan bagi gerbang untuk seni bina M680x0 ialah: 68000, 68010, 68020, 68030,
68040, 68060 dan cpu32. Seni bina ColdFire dipilih mengikut Freescale
Klasifikasi ISA dan nilai yang dibenarkan ialah: isaah, isaaplus, isab dan Isac.

GCC mentakrifkan makro "__mcfgerbang__" setiap kali ia menjana kod untuk ColdFire
sasaran. The gerbang dalam makro ini adalah salah satu -berbaris hujah yang diberikan di atas.

Apabila digunakan bersama, -berbaris dan -mtune pilih kod yang dijalankan pada keluarga yang serupa
pemproses tetapi itu dioptimumkan untuk seni bina mikro tertentu.

-mcpu=cpu
Hasilkan kod untuk pemproses M680x0 atau ColdFire tertentu. M680x0 cpus adalah:
68000, 68010, 68020, 68030, 68040, 68060, 68302, 68332 dan cpu32. The ColdFire cpus
diberikan oleh jadual di bawah, yang juga mengklasifikasikan CPU kepada keluarga:

Keluarga : -mcpu hujah
51 : 51 51ac 51ag 51cn 51em 51je 51jf 51jg 51jm 51mm 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 mengatasi -march=gerbang if gerbang bersesuaian dengan cpu. Kombinasi lain daripada
-mcpu dan -berbaris ditolak.

GCC mentakrifkan makro "__mcf_cpu_CPU" apabila ColdFire menyasarkan cpu dipilih. Ia juga
mentakrifkan "__mcf_family_keluarga", di mana nilai keluarga diberikan oleh jadual di atas.

-mtune=lagu
Tarik kod untuk seni bina mikro tertentu dalam kekangan yang ditetapkan oleh -berbaris
dan -mcpu. Arkitek mikro M680x0 ialah: 68000, 68010, 68020, 68030, 68040,
68060 dan cpu32. Arkitek mikro ColdFire ialah: cfv1, cfv2, cfv3, cfv4 dan
cfv4e.

Vous penggunaan pouvez aussi -mtune=68020-40 untuk kod yang perlu berjalan dengan baik pada 68020,
68030 dan 68040 sasaran. -mtune=68020-60 adalah serupa tetapi termasuk 68060 sasaran sebagai
baiklah. Kedua-dua pilihan ini memilih keputusan penalaan yang sama seperti -m68020-40 dan -m68020-60
masing-masing.

GCC mentakrifkan makro "__mcgerbang" dan "__mcgerbang__" apabila menala untuk seni bina 680x0
gerbang. Ia juga mentakrifkan "mcgerbang" melainkan sama ada -ansi atau bukan GNU -std pilihan digunakan.
Jika GCC sedang menala untuk pelbagai seni bina, seperti yang dipilih oleh -mtune=68020-40 or
-mtune=68020-60, ia mentakrifkan makro untuk setiap seni bina dalam julat.

GCC juga mentakrifkan makro "__muarch__" apabila menala untuk microarchitecture ColdFire
uarch, Di mana uarch adalah salah satu hujah yang diberikan di atas.

-m68000
-mc68000
Hasilkan output untuk 68000. Ini adalah lalai apabila pengkompil dikonfigurasikan untuk
Sistem berasaskan 68000. Ia bersamaan dengan -mac=68000.

Gunakan pilihan ini untuk mikropengawal dengan teras 68000 atau EC000, termasuk 68008,
68302, 68306, 68307, 68322, 68328 dan 68356.

-m68010
Hasilkan output untuk 68010. Ini adalah lalai apabila pengkompil dikonfigurasikan untuk
Sistem berasaskan 68010. Ia bersamaan dengan -mac=68010.

-m68020
-mc68020
Hasilkan output untuk 68020. Ini adalah lalai apabila pengkompil dikonfigurasikan untuk
Sistem berasaskan 68020. Ia bersamaan dengan -mac=68020.

-m68030
Hasilkan output untuk 68030. Ini adalah lalai apabila pengkompil dikonfigurasikan untuk
Sistem berasaskan 68030. Ia bersamaan dengan -mac=68030.

-m68040
Hasilkan output untuk 68040. Ini adalah lalai apabila pengkompil dikonfigurasikan untuk
Sistem berasaskan 68040. Ia bersamaan dengan -mac=68040.

Pilihan ini menghalang penggunaan arahan 68881/68882 yang perlu dicontohi oleh
perisian pada 68040. Gunakan pilihan ini jika 68040 anda tidak mempunyai kod untuk dicontohi
arahan tersebut.

-m68060
Hasilkan output untuk 68060. Ini adalah lalai apabila pengkompil dikonfigurasikan untuk
Sistem berasaskan 68060. Ia bersamaan dengan -mac=68060.

Pilihan ini menghalang penggunaan arahan 68020 dan 68881/68882 yang perlu
dicontohi oleh perisian pada 68060. Gunakan pilihan ini jika 68060 anda tidak mempunyai kod
untuk mencontohi arahan tersebut.

-mcpu32
Hasilkan output untuk CPU32. Ini adalah lalai apabila pengkompil dikonfigurasikan untuk
Sistem berasaskan CPU32. Ia bersamaan dengan -march=cpu32.

Gunakan pilihan ini untuk mikropengawal dengan teras CPU32 atau CPU32+, termasuk 68330,
68331, 68332, 68333, 68334, 68336, 68340, 68341, 68349 dan 68360.

-m5200
Hasilkan output untuk CPU ColdFire 520X. Ini adalah lalai apabila pengkompil adalah
dikonfigurasikan untuk sistem berasaskan 520X. Ia bersamaan dengan -mcpu=5206, dan sekarang
ditamatkan memihak kepada pilihan itu.

Gunakan pilihan ini untuk mikropengawal dengan teras 5200, termasuk MCF5202, MCF5203,
MCF5204 dan MCF5206.

-m5206e
Hasilkan output untuk CPU ColdFire 5206e. Pilihan itu kini ditamatkan memihak kepada
yang setara -mcpu=5206e.

-m528x
Hasilkan output untuk ahli keluarga ColdFire 528X. Pilihannya sekarang
ditamatkan memihak kepada yang setara -mcpu=528x.

-m5307
Hasilkan output untuk CPU ColdFire 5307. Pilihan itu kini ditamatkan memihak kepada
bersamaan -mcpu=5307.

-m5407
Hasilkan output untuk CPU ColdFire 5407. Pilihan itu kini ditamatkan memihak kepada
bersamaan -mcpu=5407.

-mcfv4e
Hasilkan output untuk CPU keluarga ColdFire V4e (cth 547x/548x). Ini termasuk penggunaan
arahan titik terapung perkakasan. Pilihan itu bersamaan dengan -mcpu=547x, Dan
kini ditamatkan memihak kepada pilihan itu.

-m68020-40
Hasilkan output untuk 68040, tanpa menggunakan mana-mana arahan baharu. Ini terhasil
dalam kod yang boleh berjalan dengan agak cekap pada sama ada 68020/68881 atau 68030 atau
68040. Kod yang dihasilkan menggunakan arahan 68881 yang dicontohi pada
68040.

Pilihan itu bersamaan dengan -mac=68020 -mtune=68020-40.

-m68020-60
Hasilkan output untuk 68060, tanpa menggunakan mana-mana arahan baharu. Ini terhasil
dalam kod yang boleh berjalan dengan agak cekap pada sama ada 68020/68881 atau 68030 atau
68040. Kod yang dihasilkan menggunakan arahan 68881 yang dicontohi pada
68060.

Pilihan itu bersamaan dengan -mac=68020 -mtune=68020-60.

-mhard-terapung
-m68881
Hasilkan arahan titik terapung. Ini ialah lalai untuk 68020 dan ke atas, dan
untuk peranti ColdFire yang mempunyai FPU. Ia mentakrifkan makro "__HAVE_68881__" dihidupkan
Sasaran M680x0 dan "__mcffpu__" pada sasaran ColdFire.

-msoft-float
Jangan jana arahan titik terapung; gunakan panggilan perpustakaan sebaliknya. Ini adalah
lalai untuk sasaran 68000, 68010 dan 68832. Ia juga merupakan lalai untuk ColdFire
peranti yang tidak mempunyai FPU.

-mdiv
-mno-div
Hasilkan (jangan jana) pembahagian perkakasan ColdFire dan arahan baki. Jika
-berbaris digunakan tanpa -mcpu, lalai ialah "hidup" untuk seni bina ColdFire dan "mati"
untuk seni bina M680x0. Jika tidak, lalai diambil daripada CPU sasaran (sama ada
CPU lalai, atau yang ditentukan oleh -mcpu). Sebagai contoh, lalai ialah "dimatikan"
untuk -mcpu=5206 dan "hidup" untuk -mcpu=5206e.

GCC mentakrifkan makro "__mcfhwdiv__" apabila pilihan ini didayakan.

-mspendek
Pertimbangkan jenis "int" menjadi 16 bit lebar, seperti "int pendek". Selain itu, parameter
yang dihantar pada tindanan juga diselaraskan dengan sempadan 16-bit walaupun pada sasaran yang APInya
mewajibkan promosi kepada 32-bit.

-mno-pendek
Jangan anggap jenis "int" sebagai 16 bit lebar. Ini adalah lalai.

-mnobitfield
-mno-bitfield
Jangan gunakan arahan medan bit. The -m68000, -mcpu32 dan -m5200 pilihan membayangkan
-mnobitfield.

-mbitfield
Gunakan arahan medan bit. The -m68020 pilihan membayangkan -mbitfield. Ini adalah
lalai jika anda menggunakan konfigurasi yang direka untuk 68020.

-mrtd
Gunakan konvensyen panggilan fungsi yang berbeza, di mana fungsi yang mengambil tetap
bilangan argumen kembali dengan arahan "rtd", yang memaparkan hujahnya
semasa balik. Ini menjimatkan satu arahan dalam pemanggil kerana tidak perlu
pop hujah di sana.

Konvensyen panggilan ini tidak serasi dengan yang biasa digunakan pada Unix, jadi anda
tidak boleh menggunakannya jika anda perlu memanggil perpustakaan yang disusun dengan pengkompil Unix.

Selain itu, anda mesti menyediakan prototaip fungsi untuk semua fungsi yang mengambil pembolehubah
bilangan hujah (termasuk "printf"); jika tidak kod yang salah dijana untuk
panggilan ke fungsi tersebut.

Di samping itu, keputusan kod yang salah jika anda memanggil fungsi dengan terlalu banyak
hujah. (Biasanya, hujah tambahan diabaikan tanpa bahaya.)

Arahan "rtd" disokong oleh 68010, 68020, 68030, 68040, 68060 dan CPU32
pemproses, tetapi bukan oleh 68000 atau 5200.

-mno-rtd
Jangan gunakan konvensyen panggilan yang dipilih oleh -mrtd. Ini adalah lalai.

-malign-int
-mno-align-int
Kawal sama ada GCC menjajarkan "int", "long", "long long", "float", "double" dan "long
ganda" pembolehubah pada sempadan 32-bit (-malign-int) atau sempadan 16-bit
(-mno-align-int). Menjajarkan pembolehubah pada sempadan 32-bit menghasilkan kod yang berjalan
agak lebih pantas pada pemproses dengan bas 32-bit dengan mengorbankan lebih banyak memori.

Amaran: jika anda menggunakan -malign-int suis, GCC menjajarkan struktur yang mengandungi perkara di atas
jenis secara berbeza daripada kebanyakan spesifikasi antara muka binari aplikasi yang diterbitkan untuk
m68k itu.

-mpcrel
Gunakan mod pengalamatan relatif pc 68000 secara langsung, bukannya menggunakan global
meja mengimbangi. Pada masa ini, pilihan ini membayangkan -fpic, membenarkan paling banyak offset 16-bit
untuk pengalamatan saudara pc. -fPIC pada masa ini tidak disokong dengan -mpcrel, walaupun
ini boleh disokong untuk pemproses 68020 dan lebih tinggi.

-mno-strict-align
-mstrict-align
Jangan (buat) menganggap bahawa rujukan memori tidak sejajar dikendalikan oleh sistem.

-msep-data
Hasilkan kod yang membolehkan segmen data ditempatkan di kawasan memori yang berbeza
daripada segmen teks. Ini membolehkan untuk melaksanakan di tempat dalam persekitaran tanpa
pengurusan ingatan maya. Pilihan ini membayangkan -fPIC.

-mno-sep-data
Hasilkan kod yang menganggap bahawa segmen data mengikuti segmen teks. Ini adalah
lalai.

-perpustakaan-perkongsian pertengahan
Hasilkan kod yang menyokong perpustakaan kongsi melalui kaedah ID perpustakaan. Ini membenarkan
untuk melaksanakan di tempat dan perpustakaan kongsi dalam persekitaran tanpa memori maya
pengurusan. Pilihan ini membayangkan -fPIC.

-mno-id-shared-library
Hasilkan kod yang tidak menganggap perpustakaan kongsi berasaskan ID sedang digunakan. Ini adalah
lalai.

-mshared-library-id=n
Menentukan nombor pengenalan perpustakaan kongsi berasaskan ID yang sedang disusun.
Menentukan nilai 0 menjana kod yang lebih padat; menyatakan daya nilai lain
peruntukan nombor itu kepada perpustakaan semasa, tetapi bukan lagi ruang atau masa-
cekap daripada mengabaikan pilihan ini.

-mxgot
-mno-xgot
Apabila menjana kod bebas kedudukan untuk ColdFire, hasilkan kod yang berfungsi jika
GOT mempunyai lebih daripada 8192 penyertaan. Kod ini lebih besar dan lebih perlahan daripada kod
dihasilkan tanpa pilihan ini. Pada pemproses M680x0, pilihan ini tidak diperlukan; -fPIC
sudah memadai.

GCC biasanya menggunakan satu arahan untuk memuatkan nilai daripada GOT. Sedangkan ini
agak cekap, ia hanya berfungsi jika GOT lebih kecil daripada kira-kira 64k. apa-apa sahaja
lebih besar menyebabkan pemaut melaporkan ralat seperti:

penempatan semula dipotong supaya muat: R_68K_GOT16O bar kaki

Jika ini berlaku, anda harus menyusun semula kod anda dengan -mxgot. Ia sepatutnya berfungsi dengan
GOT yang sangat besar. Walau bagaimanapun, kod dijana dengan -mxgot adalah kurang cekap, kerana ia
mengambil 4 arahan untuk mengambil nilai simbol global.

Ambil perhatian bahawa sesetengah pemaut, termasuk versi yang lebih baharu bagi pemaut GNU, boleh mencipta
berbilang GOT dan mengisih entri GOT. Jika anda mempunyai penghubung sedemikian, anda hanya perlu
untuk digunakan -mxgot apabila menyusun fail objek tunggal yang mengakses lebih daripada 8192 GOT
entri. Sangat sedikit yang melakukannya.

Pilihan ini tidak mempunyai kesan melainkan GCC menjana kod bebas kedudukan.

MCore Pilihan

Ini adalah -m pilihan yang ditentukan untuk pemproses Motorola M*Core.

-mhardlit
-mno-lampu tegar
Pemalar sebaris ke dalam aliran kod jika ia boleh dilakukan dalam dua arahan atau kurang.

-mdiv
-mno-div
Gunakan arahan bahagi. (Didayakan secara lalai).

-mrelax-segera
-mno-santai-segera
Benarkan saiz sewenang-wenangnya serta-merta dalam operasi bit.

-mwide-bitfields
-mno-wide-bitfields
Sentiasa layan medan bit sebagai bersaiz "int".

-m4byte-fungsi
-mno-4bait-fungsi
Paksa semua fungsi diselaraskan dengan sempadan 4-bait.

-mcallgraph-data
-mno-callgraph-data
Mengeluarkan maklumat graf panggilan.

-mslow-bait
-mno-slow-bait
Lebih suka akses perkataan apabila membaca kuantiti bait.

-kecil-endian
-besar-endian
Hasilkan kod untuk sasaran kecil-endian.

-m210
-m340
Hasilkan kod untuk pemproses 210.

-mno-lsim
Andaikan bahawa sokongan masa jalan telah disediakan dan jadi tinggalkan perpustakaan simulator
(libsim.a) daripada baris arahan penghubung.

-mstack-increment=saiz
Tetapkan jumlah maksimum untuk operasi kenaikan tindanan tunggal. Nilai besar boleh
meningkatkan kelajuan program yang mengandungi fungsi yang memerlukan sejumlah besar
ruang tindanan, tetapi ia juga boleh mencetuskan kesalahan pembahagian jika tindanan dilanjutkan
terlalu banyak. Nilai lalai ialah 0x1000.

MeP Pilihan

-mabsdiff
Mendayakan arahan "abs", yang merupakan perbezaan mutlak antara dua daftar.

-mall-opts
Membolehkan semua arahan pilihan --- purata, darab, bahagi, operasi bit,
mendahului sifar, perbezaan mutlak, min/maks, klip dan ketepuan.

-maverage
Mendayakan arahan "ave", yang mengira purata dua daftar.

-mbased=n
Pembolehubah saiz n bait atau lebih kecil diletakkan dalam bahagian ".based" secara lalai.
Pembolehubah berasaskan menggunakan daftar $tp sebagai daftar asas, dan terdapat had 128 bait
ke bahagian ".based".

-mbitops
Mendayakan arahan operasi bit---ujian bit ("btstm"), set ("bsetm"), kosongkan
("bclrm"), songsang ("bnotm") dan test-and-set ("tas").

-mc=nama
Memilih bahagian mana data tetap diletakkan. nama mungkin kecil, berhampiran, Atau jauh.

-mclip
Mendayakan arahan "klip". Perhatikan bahawa -mclip tidak berguna melainkan anda juga
menyediakan -mminmax.

-mconfig=nama
Memilih salah satu konfigurasi teras terbina dalam. Setiap cip MeP mempunyai satu atau lebih
modul di dalamnya; setiap modul mempunyai CPU teras dan pelbagai pemproses bersama, pilihan
arahan, dan perkakasan. Alat "MeP-Integrator", bukan sebahagian daripada GCC, menyediakan
konfigurasi ini melalui pilihan ini; menggunakan pilihan ini adalah sama seperti menggunakan semua
pilihan baris arahan yang sepadan. Konfigurasi lalai ialah lalai.

-mcop
Mendayakan arahan coprocessor. Secara lalai, ini ialah coprocessor 32-bit. Catatan
bahawa coprocessor biasanya didayakan melalui -mconfig= pilihan.

-mcop32
Mendayakan arahan coprocessor 32-bit.

-mcop64
Mendayakan arahan coprocessor 64-bit.

-mivc2
Mendayakan penjadualan IVC2. IVC2 ialah pemproses bersama VLIW 64-bit.

-mdc
Menyebabkan pembolehubah malar diletakkan di bahagian ".berhampiran".

-mdiv
Mendayakan arahan "div" dan "divu".

-meb
Hasilkan kod big-endian.

-mel
Hasilkan kod little-endian.

-mio-volatile
Memberitahu pengkompil bahawa mana-mana pembolehubah yang ditandakan dengan atribut "io" akan menjadi
dianggap tidak menentu.

-ml Menyebabkan pembolehubah diperuntukkan kepada bahagian ".far" secara lalai.

-mleadz
Mendayakan arahan "leadz" (sifar terkemuka).

-mm Menyebabkan pembolehubah diperuntukkan kepada bahagian ".near" secara lalai.

-mminmax
Mendayakan arahan "min" dan "maks".

-mult
Membolehkan arahan pendaraban dan pendaraban terkumpul.

-mno-opts
Melumpuhkan semua arahan pilihan yang didayakan oleh -mall-opts.

-ulang
Mendayakan arahan "ulang" dan "ulang", digunakan untuk gelung overhed rendah.

-Cik Menyebabkan semua pembolehubah menjadi lalai ke bahagian ".tiny". Perhatikan bahawa terdapat a
Had 65536-bait kepada bahagian ini. Akses kepada pembolehubah ini menggunakan asas %gp
daftar.

-msatur
Mendayakan arahan ketepuan. Ambil perhatian bahawa pengkompil tidak pada masa ini
menjana ini sendiri, tetapi pilihan ini disertakan untuk keserasian dengan alat lain,
seperti "sebagai".

-msdram
Pautkan masa jalan berasaskan SDRAM dan bukannya masa jalan berasaskan ROM lalai.

-msim
Pautkan perpustakaan masa jalan simulator.

-msimnovec
Pautkan perpustakaan masa jalan simulator, tidak termasuk sokongan terbina dalam untuk tetapan semula dan
vektor dan jadual pengecualian.

-mtf
Menyebabkan semua fungsi menjadi lalai ke bahagian ".far". Tanpa pilihan ini, berfungsi
lalai kepada bahagian ".near".

-mtiny=n
Pembolehubah iaitu n bait atau lebih kecil diperuntukkan kepada bahagian ".tiny". Ini
pembolehubah menggunakan daftar asas $gp. Lalai untuk pilihan ini ialah 4, tetapi ambil perhatian bahawa
terdapat had 65536-bait pada bahagian ".tiny".

MicroBlaze Pilihan

-msoft-float
Gunakan emulasi perisian untuk titik terapung (lalai).

-mhard-terapung
Gunakan arahan titik terapung perkakasan.

-mmemcpy
Jangan optimumkan pergerakan blok, gunakan "memcpy".

-mno-clearbss
Pilihan ini ditamatkan. guna -fno-sifar-dimulakan-dalam-bss sebaliknya.

-mcpu=jenis cpu
Gunakan ciri, dan kod jadualkan untuk, CPU yang diberikan. Nilai yang disokong adalah dalam
format vX.YY.Z, Di mana X adalah versi utama, YY ialah versi kecil, dan Z is
kod keserasian. Nilai contoh ialah v3.00.a, v4.00.b, v5.00.a, v5.00.b, v5.00.b,
v6.00.a.

-mxl-soft-mul
Gunakan emulasi darab perisian (lalai).

-mxl-soft-div
Gunakan emulasi perisian untuk pembahagian (lalai).

-mxl-barrel-shift
Gunakan penukar tong perkakasan.

-mxl-pattern-compare
Gunakan arahan perbandingan corak.

-msmall-membahagikan
Gunakan pengoptimuman carian jadual untuk pembahagian integer bertanda kecil.

-mxl-stack-check
Pilihan ini ditamatkan. guna -fstack-check sebaliknya.

-mxl-gp-opt
Gunakan bahagian ".sdata"/".sbss" relatif GP.

-mxl-darab-tinggi
Gunakan arahan darab tinggi untuk bahagian tinggi darab 32x32.

-mxl-float-convert
Gunakan arahan penukaran titik terapung perkakasan.

-mxl-float-sqrt
Gunakan arahan punca kuasa dua titik terapung perkakasan.

-besar-endian
Hasilkan kod untuk sasaran besar-endian.

-kecil-endian
Hasilkan kod untuk sasaran kecil-endian.

-mxl-susun semula
Gunakan arahan susun semula (swap dan byte terbalik beban/simpan).

-mxl-mod-model aplikasi
Pilih model aplikasi model aplikasi. Model yang sah ialah

boleh dilaksanakan
boleh laku biasa (lalai), menggunakan kod permulaan crt0.o.

xmdstub
untuk digunakan dengan Xilinx Microprocessor Debugger (XMD) berasaskan perisian nyahpepijat mengganggu
ejen dipanggil xmdstub. Ini menggunakan fail permulaan crt1.o dan menetapkan alamat permulaan bagi
program kepada 0x800.

bootstrap
untuk aplikasi yang dimuatkan menggunakan pemuat but. Model ini menggunakan fail permulaan
crt2.o yang tidak mengandungi pengendali vektor tetapan semula pemproses. Ini sesuai
untuk memindahkan kawalan pada tetapan semula pemproses kepada pemuat but dan bukannya
permohonan.

novectors
untuk aplikasi yang tidak memerlukan mana-mana vektor MicroBlaze. Pilihan ini
mungkin berguna untuk aplikasi yang berjalan dalam aplikasi pemantauan. model ini
menggunakan crt3.o sebagai fail permulaan.

Lebih Baik -xl-mod-model aplikasi ialah alias tidak digunakan lagi untuk -mxl-mod-model aplikasi.

MIPS Pilihan

-EB Hasilkan kod big-endian.

-EL Hasilkan kod little-endian. Ini adalah lalai untuk mips*el-*-* konfigurasi.

-march=gerbang
Hasilkan kod yang berjalan gerbang, yang boleh menjadi nama MIPS ISA generik, atau
nama pemproses tertentu. Nama-nama ISA ialah: mips1, mips2, mips3, mips4,
mips32, mips32r2, mips32r3, mips32r5, mips32r6, mips64, mips64r2, mips64r3, mips64r5
dan mips64r6. Nama pemproses adalah: 4kc, 4km, 4kp, 4ksc, 4kec, 4kem, 4kep, 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,
loongson2e, loongson2f, loongson3a, M4K, M14K, m14kc, m14ke, m14kec, okteon, okteon+,
oktober2, oktober3, orion, p5600, 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 dan xlp. Yang
nilai istimewa dari-abi memilih seni bina yang paling serasi untuk ABI yang dipilih
(itu dia, mips1 untuk ABI 32-bit dan mips3 untuk ABI 64-bit).

Rantaian alat Linux/GNU asli juga menyokong nilai tersebut asli, yang memilih yang terbaik
pilihan seni bina untuk pemproses hos. -march = asli tidak mempunyai kesan jika GCC melakukannya
tidak mengenali pemproses.

Dalam nama pemproses, perlawanan akhir 000 boleh disingkatkan sebagai k (sebagai contoh, -march=r2k).
Awalan adalah pilihan, dan vr boleh ditulis r.

Nama-nama borang nf2_1 merujuk kepada pemproses dengan FPU mencatatkan separuh daripada kadar
teras, nama bentuk nf1_1 rujuk kepada pemproses dengan FPU yang mencatatkan masa pada kadar yang sama
sebagai inti, dan nama bentuk nf3_2 rujuk kepada pemproses dengan FPU mencatatkan nisbah
daripada 3:2 berkenaan dengan teras. Atas sebab keserasian, nf diterima sebagai a
sinonim untuk nf2_1 manakala nx dan bfx diterima sebagai sinonim untuk nf1_1.

GCC mentakrifkan dua makro berdasarkan nilai pilihan ini. Yang pertama ialah "_MIPS_ARCH",
yang memberikan nama seni bina sasaran, sebagai rentetan. Yang kedua mempunyai bentuk
"_MIPS_ARCH_foo", Di mana foo ialah nilai huruf besar "_MIPS_ARCH". Sebagai contoh,
-mac=r2000 menetapkan "_MIPS_ARCH" kepada "r2000" dan mentakrifkan makro "_MIPS_ARCH_R2000".

Ambil perhatian bahawa makro "_MIPS_ARCH" menggunakan nama pemproses yang diberikan di atas. Dalam lain
perkataan, ia mempunyai awalan penuh dan tidak menyingkat 000 as k. Dalam kes dari-
abi, makro menamakan seni bina yang diselesaikan (sama ada "mips1" atau "mips3"). Ia menamakan
seni bina lalai apabila tidak -berbaris pilihan diberi.

-mtune=gerbang
Optimumkan untuk gerbang. Antara lain, pilihan ini mengawal cara arahan
dijadualkan, dan kos yang dirasakan bagi operasi aritmetik. senarai gerbang nilai
sama seperti untuk -berbaris.

Apabila pilihan ini tidak digunakan, GCC mengoptimumkan pemproses yang ditentukan oleh -berbaris. Oleh
menggunakan -berbaris dan -mtune bersama-sama, adalah mungkin untuk menjana kod yang berjalan pada a
keluarga pemproses, tetapi mengoptimumkan kod untuk satu ahli tertentu keluarga itu.

-mtune mentakrifkan makro "_MIPS_TUNE" dan "_MIPS_TUNE_foo", yang berfungsi sama
cara sebagai -berbaris yang diterangkan di atas.

-mips1
Bersamaan dengan -march=mips1.

-mips2
Bersamaan dengan -march=mips2.

-mips3
Bersamaan dengan -march=mips3.

-mips4
Bersamaan dengan -march=mips4.

-mips32
Bersamaan dengan -march=mips32.

-mips32r3
Bersamaan dengan -march=mips32r3.

-mips32r5
Bersamaan dengan -march=mips32r5.

-mips32r6
Bersamaan dengan -march=mips32r6.

-mips64
Bersamaan dengan -march=mips64.

-mips64r2
Bersamaan dengan -march=mips64r2.

-mips64r3
Bersamaan dengan -march=mips64r3.

-mips64r5
Bersamaan dengan -march=mips64r5.

-mips64r6
Bersamaan dengan -march=mips64r6.

-mips16
-mno-mips16
Jana (jangan jana) kod MIPS16. Jika GCC menyasarkan MIPS32 atau MIPS64
seni bina, ia menggunakan MIPS16e ASE.

Penjanaan kod MIPS16 juga boleh dikawal pada asas per fungsi melalui
Atribut "mips16" dan "nomips16".

-mflip-mips16
Hasilkan kod MIPS16 pada fungsi berselang-seli. Pilihan ini disediakan untuk regresi
ujian penjanaan kod MIPS16/bukan MIPS16 bercampur, dan tidak bertujuan untuk biasa
digunakan dalam menyusun kod pengguna.

-minterlink-mampat
-mno-interlink-compressed
Memerlukan (tidak memerlukan) kod yang menggunakan standard (tidak dimampat) MIPS ISA menjadi pautan-
serasi dengan kod MIPS16 dan microMIPS, dan sebaliknya.

Contohnya, kod menggunakan pengekodan ISA standard tidak boleh melompat terus ke MIPS16 atau
kod microMIPS; ia mesti sama ada menggunakan panggilan atau lompatan tidak langsung. -minterlink-mampat
oleh itu melumpuhkan lompatan terus melainkan GCC mengetahui bahawa sasaran lompatan itu bukan
dimampatkan.

-minterlink-mips16
-mno-interlink-mips16
Alias ​​daripada -minterlink-mampat dan -mno-interlink-compressed. Pilihan ini
mendahului ASE microMIPS dan dikekalkan untuk keserasian ke belakang.

-mabi=32
-mabi=o64
-mabi=n32
-mabi=64
-mabi=eabi
Hasilkan kod untuk ABI yang diberikan.

Ambil perhatian bahawa EABI mempunyai varian 32-bit dan 64-bit. GCC biasanya menjana 64-bit
kod apabila anda memilih seni bina 64-bit, tetapi anda boleh menggunakannya -mgp32 untuk mendapatkan kod 32-bit
sebaliknya.

Untuk maklumat tentang O64 ABI, lihathttp://gcc.gnu.org/projects/mipso64-abi.html>.

GCC menyokong varian o32 ABI di mana daftar titik terapung adalah 64
daripada 32 bit lebar. Anda boleh memilih gabungan ini dengan -mabi=32 -mfp64. ABI ini
bergantung pada arahan "mthc1" dan "mfhc1" dan oleh itu hanya disokong untuk
Pemproses MIPS32R2, MIPS32R3 dan MIPS32R5.

Tugasan daftar untuk argumen dan nilai pulangan kekal sama, tetapi setiap satu
nilai skalar diluluskan dalam daftar 64-bit tunggal dan bukannya sepasang 32-bit
daftar. Sebagai contoh, nilai titik terapung skalar dikembalikan $f0 sahaja, bukan a
$f0/$f1 sepasang. Set daftar yang disimpan panggilan juga kekal sama kerana genap-
daftar ketepatan dua bernombor disimpan.

Dua varian tambahan o32 ABI disokong untuk membolehkan peralihan daripada
Daftar 32-bit hingga 64-bit. Ini adalah FPXX (-mfpxx) dan FP64A (-mfp64
-mno-ganjil-spreg). Sambungan FPXX memberi mandat bahawa semua kod mesti dilaksanakan dengan betul
apabila dijalankan menggunakan daftar 32-bit atau 64-bit. Kod tersebut boleh saling berkait dengan sama ada
FP32 atau FP64, tetapi bukan kedua-duanya. Sambungan FP64A serupa dengan sambungan FP64 tetapi
melarang penggunaan daftar ketepatan tunggal bernombor ganjil. Ini boleh digunakan dalam
bersempena dengan mod "FRE" FPU dalam pemproses MIPS32R5 dan membenarkan kedua-dua FP32
dan kod FP64A untuk saling berpaut dan berjalan dalam proses yang sama tanpa menukar mod FPU.

-mabicalls
-mno-abicalls
Hasilkan (jangan jana) kod yang sesuai untuk objek dinamik gaya SVR4.
-mabicalls ialah lalai untuk sistem berasaskan SVR4.

-mshared
-mno-kongsi
Hasilkan (jangan jana) kod yang bebas kedudukan sepenuhnya, dan boleh
oleh itu dipautkan ke dalam perpustakaan kongsi. Pilihan ini hanya memberi kesan -mabicalls.

Semua -mabicalls kod secara tradisinya adalah bebas kedudukan, tanpa mengira pilihan
seperti -fPIC dan -fpic. Walau bagaimanapun, sebagai lanjutan, rantai alat GNU membenarkan boleh laku
untuk menggunakan akses mutlak untuk simbol yang mengikat setempat. Ia juga boleh menggunakan GP yang lebih pendek
urutan permulaan dan menjana panggilan terus ke fungsi yang ditentukan secara tempatan. ini
mod dipilih oleh -mno-kongsi.

-mno-kongsi bergantung pada binutils 2.16 atau lebih tinggi dan menghasilkan objek yang hanya boleh
dipautkan oleh pemaut GNU. Bagaimanapun, pilihan itu tidak menjejaskan ABI perlawanan akhir
boleh dilaksanakan; ia hanya menjejaskan ABI objek yang boleh dipindahkan. menggunakan -mno-kongsi
secara amnya menjadikan boleh laku lebih kecil dan lebih cepat.

-mshared adalah lalai.

-mplt
-mno-plt
Anggap (jangan anggap) bahawa pemaut statik dan dinamik menyokong PLT dan salinan
penempatan semula. Pilihan ini hanya memberi kesan -mno-kongsi -mabicalls. Untuk n64 ABI, ini
pilihan tidak mempunyai kesan tanpa -msym32.

Anda boleh buat -mplt lalai dengan mengkonfigurasi GCC dengan --dengan-mips-plt. Lalai
is -mno-plt sebaliknya.

-mxgot
-mno-xgot
Angkat (jangan angkat) sekatan biasa pada saiz jadual ofset global.

GCC biasanya menggunakan satu arahan untuk memuatkan nilai daripada GOT. Sedangkan ini
agak cekap, ia hanya berfungsi jika GOT lebih kecil daripada kira-kira 64k. apa-apa sahaja
lebih besar menyebabkan pemaut melaporkan ralat seperti:

penempatan semula dipotong supaya muat: R_MIPS_GOT16 foobar

Jika ini berlaku, anda harus menyusun semula kod anda dengan -mxgot. Ini berfungsi dengan sangat
GOT yang besar, walaupun kod itu juga kurang cekap, kerana ia memerlukan tiga
arahan untuk mengambil nilai simbol global.

Ambil perhatian bahawa sesetengah pemaut boleh mencipta berbilang GOT. Jika anda mempunyai penghubung sedemikian, anda
sepatutnya hanya perlu digunakan -mxgot apabila fail objek tunggal mengakses lebih daripada 64k
nilai penyertaan GOT. Sangat sedikit yang melakukannya.

Pilihan ini tidak mempunyai kesan melainkan GCC menjana kod bebas kedudukan.

-mgp32
Andaikan bahawa daftar tujuan umum adalah 32 bit lebar.

-mgp64
Andaikan bahawa daftar tujuan umum adalah 64 bit lebar.

-mfp32
Andaikan bahawa daftar titik terapung adalah 32 bit lebar.

-mfp64
Andaikan bahawa daftar titik terapung adalah 64 bit lebar.

-mfpxx
Jangan anggap lebar daftar titik terapung.

-mhard-terapung
Gunakan arahan koprosesor titik terapung.

-msoft-float
Jangan gunakan arahan koprosesor titik terapung. Laksanakan titik terapung
pengiraan menggunakan panggilan perpustakaan sebaliknya.

-mno-float
Bersamaan dengan -msoft-float, tetapi juga menegaskan bahawa program sedang disusun
tidak melakukan sebarang operasi titik terapung. Pilihan ini kini disokong
hanya dengan beberapa konfigurasi MIPS tanpa logam, di mana ia boleh memilih set khas
perpustakaan yang tidak mempunyai semua sokongan floating-point (termasuk, sebagai contoh, floating-point
titik "printf" format). Jika kod disusun dengan -mno-float tidak sengaja mengandungi
operasi titik terapung, ia berkemungkinan mengalami kegagalan masa pautan atau masa jalanan.

-msingle-float
Andaikan bahawa coprocessor titik terapung hanya menyokong operasi ketepatan tunggal.

-mdouble-float
Andaikan bahawa coprocessor titik terapung menyokong operasi berketepatan dua kali. ini
adalah lalai.

-modd-spreg
-mno-ganjil-spreg
Dayakan penggunaan daftar titik terapung ketepatan tunggal bernombor ganjil untuk o32
ABI. Ini adalah lalai untuk pemproses yang diketahui menyokong daftar ini.
Apabila menggunakan o32 FPXX ABI, -mno-ganjil-spreg ditetapkan secara lalai.

-mabs=2008
-mabs=warisan
Pilihan ini mengawal rawatan IEEE 754 bukan nombor (NaN) khas
data titik terapung dengan "abs.fmt" dan "neg.fmt" arahan mesin.

Secara lalai atau bila -mabs=warisan digunakan rawatan warisan dipilih. Di dalam ini
kes arahan ini dianggap aritmetik dan dielakkan di mana operasi yang betul
diperlukan dan operan input mungkin NaN. Urutan arahan yang lebih panjang
yang memanipulasi bit tanda datum titik terapung secara manual digunakan sebaliknya melainkan
yang -finite-matematik sahaja pilihan juga telah ditetapkan.

. -mabs=2008 pilihan memilih rawatan IEEE 754-2008. Dalam kes ini ini
arahan dianggap bukan aritmetik dan oleh itu beroperasi dengan betul dalam semua
kes, termasuk khususnya di mana operan input ialah NaN. Arahan ini
oleh itu sentiasa digunakan untuk operasi masing-masing.

-mnan=2008
-mnan=warisan
Pilihan ini mengawal pengekodan IEEE 754 bukan nombor (NaN) khas
data titik terapung.

. -mnan=warisan pilihan memilih pengekodan warisan. Dalam kes ini NaNs senyap (qNaNs)
dilambangkan dengan bit pertama medan significand mengekorinya ialah 0, sedangkan
isyarat NaNs (sNaNs) dilambangkan dengan bit pertama significand mengekori mereka
bidang menjadi 1.

. -mnan=2008 pilihan memilih pengekodan IEEE 754-2008. Dalam kes ini qNaNs adalah
dilambangkan dengan bit pertama medan signifikan mengekorinya ialah 1, manakala sNaNs
dilambangkan dengan bit pertama medan significand mengekorinya ialah 0.

Lalai adalah -mnan=warisan melainkan GCC telah dikonfigurasikan dengan --dengan-nan=2008.

-mllsc
-mno-llsc
Gunakan (jangan gunakan) ll, sc, dan menyegerakkan arahan untuk melaksanakan memori atom terbina dalam
fungsi. Apabila tiada pilihan dinyatakan, GCC menggunakan arahan jika sasaran
seni bina menyokong mereka.

-mllsc berguna jika persekitaran masa jalan boleh meniru arahan dan -mno-llsc
boleh berguna apabila menyusun untuk ISA bukan standard. Anda boleh membuat salah satu pilihan
lalai dengan mengkonfigurasi GCC dengan --dengan-llsc dan --tanpa-llsc masing-masing.
--dengan-llsc ialah lalai untuk beberapa konfigurasi; lihat dokumentasi pemasangan
untuk maklumat lanjut.

-mdsp
-mno-dsp
Gunakan (jangan gunakan) semakan 1 MIPS DSP ASE.
Pilihan ini mentakrifkan makro prapemproses "__mips_dsp". Ia juga mentakrifkan
"__mips_dsp_rev" kepada 1.

-mdspr2
-mno-dspr2
Gunakan (jangan gunakan) semakan 2 MIPS DSP ASE.
Pilihan ini mentakrifkan makro prapemproses "__mips_dsp" dan "__mips_dspr2". Ia
juga mentakrifkan "__mips_dsp_rev" kepada 2.

-msmartmips
-mno-smartmips
Gunakan (jangan gunakan) MIPS SmartMIPS ASE.

-bermasalah-bujang
-mno-berpasangan-bujang
Gunakan (jangan gunakan) arahan titik terapung berpasangan.
Pilihan ini memerlukan sokongan titik terapung perkakasan untuk didayakan.

-mdmx
-mno-mdmx
Gunakan (jangan gunakan) arahan Sambungan Media Digital MIPS. Pilihan ini hanya boleh
digunakan apabila menjana kod 64-bit dan memerlukan sokongan titik terapung perkakasan
yang aktif.

-mips3d
-mno-mips3d
Gunakan (jangan gunakan) MIPS-3D ASE. Pilihannya -mips3d bererti -bermasalah-bujang.

-micromips
-mno-mikromip
Hasilkan (jangan jana) kod microMIPS.

Penjanaan kod MicroMIPS juga boleh dikawal secara per-fungsi melalui
atribut "micromips" dan "nomicromips".

-mmt
-mno-mt
Gunakan (jangan gunakan) arahan MT Multithreading.

-mmcu
-mno-mcu
Gunakan (jangan gunakan) arahan MIPS MCU ASE.

-meva
-mno-eva
Gunakan (jangan gunakan) arahan Pengalamatan Maya Dipertingkatkan MIPS.

-mvirt
-mno-virt
Gunakan (jangan gunakan) arahan Khusus Aplikasi Virtualisasi MIPS.

-mxpa
-mno-xpa
Gunakan (jangan gunakan) arahan MIPS eXtended Physical Address (XPA).

-mlong64
Paksa jenis "panjang" menjadi 64 bit lebar. Lihat -mlong32 untuk penjelasan lalai
dan cara saiz penunjuk ditentukan.

-mlong32
Paksa jenis "panjang", "int", dan penunjuk menjadi 32 bit lebar.

Saiz lalai "int", "long" dan penunjuk bergantung pada ABI. Semua
ABI yang disokong menggunakan "int" 32-bit. ABI n64 menggunakan "panjang" 64-bit, begitu juga dengan 64-bit
EABI; yang lain menggunakan "panjang" 32-bit. Penunjuk adalah saiz yang sama dengan "panjang", atau
saiz yang sama dengan daftar integer, yang mana lebih kecil.

-msym32
-mno-sym32
Anggap (jangan anggap) bahawa semua simbol mempunyai nilai 32-bit, tanpa mengira yang dipilih
ABI. Pilihan ini berguna dalam kombinasi dengan -mabi=64 dan -mno-abicalls kerana ia
membolehkan GCC menjana rujukan yang lebih pendek dan pantas kepada alamat simbolik.

-G num
Letakkan takrifan data yang boleh dilihat secara luaran dalam bahagian data kecil jika data itu tidak
lebih besar daripada num bait. GCC kemudiannya boleh menjana akses yang lebih cekap kepada data; lihat
-mgpopt untuk maklumat lanjut.

Lalai -G pilihan bergantung pada konfigurasi.

-mlocal-sdata
-mno-local-sdata
Panjangkan (jangan panjangkan) itu -G tingkah laku kepada data tempatan juga, seperti pembolehubah statik
di C. -mlocal-sdata ialah lalai untuk semua konfigurasi.

Jika pemaut mengadu bahawa aplikasi menggunakan terlalu banyak data kecil, anda mungkin
ingin mencuba membina semula bahagian yang kurang kritikal prestasi dengan -mno-local-sdata. Anda
mungkin juga ingin membina perpustakaan besar dengan -mno-local-sdata, supaya perpustakaan
meninggalkan lebih banyak ruang untuk program utama.

-mextern-sdata
-mno-extern-sdata
Anggap (jangan anggap) bahawa data yang ditakrifkan secara luaran berada dalam bahagian data kecil jika
saiz data itu adalah dalam -G had. -mextern-sdata adalah lalai untuk semua
konfigurasi.

Jika anda menyusun modul Mod dengan -mextern-sdata -G num -mgpopt, dan Mod rujukan a
berubah-ubah Setiap itu tidak lebih besar daripada num bait, anda mesti memastikannya Setiap diletakkan
dalam bahagian data yang kecil. Jika Setiap ditakrifkan oleh modul lain, anda mesti sama ada menyusun
modul itu dengan cukup tinggi -G menetapkan atau melampirkan atribut "bahagian" ke Setiap's
takrifan. Jika Setiap adalah perkara biasa, anda mesti memautkan aplikasi dengan cukup tinggi -G
penetapan.

Cara paling mudah untuk memenuhi sekatan ini adalah dengan menyusun dan memautkan setiap modul
dengan yang sama -G pilihan. Walau bagaimanapun, anda mungkin ingin membina perpustakaan yang menyokong
beberapa had data kecil yang berbeza. Anda boleh melakukan ini dengan menyusun perpustakaan dengan
tertinggi disokong -G tetapan dan tambahan menggunakan -mno-extern-sdata untuk menghentikan
perpustakaan daripada membuat andaian tentang data yang ditentukan secara luaran.

-mgpopt
-mno-gpopt
Gunakan (jangan gunakan) akses relatif GP untuk simbol yang diketahui terdapat dalam data kecil
bahagian; lihat -G, -mlocal-sdata dan -mextern-sdata. -mgpopt adalah lalai untuk semua
konfigurasi.

-mno-gpopt berguna untuk kes di mana daftar $gp mungkin tidak memegang nilai
"_gp". Contohnya, jika kod adalah sebahagian daripada perpustakaan yang mungkin digunakan dalam but
monitor, program yang memanggil rutin monitor but melepasi nilai yang tidak diketahui dalam $gp. (Dalam
situasi sedemikian, monitor but itu sendiri biasanya disusun bersama -G0.)

-mno-gpopt bererti -mno-local-sdata dan -mno-extern-sdata.

-benam-data
-mno-embedded-data
Peruntukkan pembolehubah ke bahagian data baca sahaja dahulu jika boleh, kemudian seterusnya dalam
bahagian data kecil jika boleh, sebaliknya dalam data. Ini memberikan kod yang lebih perlahan
daripada lalai, tetapi mengurangkan jumlah RAM yang diperlukan semasa melaksanakan, dan dengan itu boleh
diutamakan untuk beberapa sistem terbenam.

-muninit-const-in-rodata
-mno-uninit-const-in-rodata
Letakkan pembolehubah "const" yang tidak dimulakan dalam bahagian data baca sahaja. Pilihan ini adalah
hanya bermakna sempena -benam-data.

-mcode-readable=menetapkan
Tentukan sama ada GCC boleh menjana kod yang dibaca daripada bahagian boleh laku. Disana ada
tiga tetapan yang mungkin:

-mcode-readable=ya
Arahan boleh mengakses bahagian boleh laku secara bebas. Ini ialah tetapan lalai.

-mcode-readable=pcrel
Arahan beban relatif PC MIPS16 boleh mengakses bahagian boleh laku, tetapi lain-lain
arahan tidak boleh berbuat demikian. Pilihan ini berguna pada pemproses 4KSc dan 4KSd
apabila kod TLBs mempunyai set bit Read Inhibit. Ia juga berguna pada pemproses
yang boleh dikonfigurasikan untuk mempunyai antara muka SRAM arahan/data dwi dan itu,
seperti M4K, secara automatik mengubah hala beban relatif PC ke RAM arahan.

-mcode-readable=tidak
Arahan tidak boleh mengakses bahagian boleh laku. Pilihan ini boleh berguna pada
sasaran yang dikonfigurasikan untuk mempunyai antara muka SRAM arahan/data dwi tetapi
yang (tidak seperti M4K) tidak mengalihkan secara automatik beban relatif PC ke
arahan RAM.

-msplit-alamat
-mno-split-alamat
Dayakan (lumpuhkan) penggunaan operator penempatan semula pemasang "%hi()" dan "%lo()". ini
pilihan telah digantikan oleh -eksplisit-reloks tetapi dikekalkan untuk ke belakang
keserasian.

-eksplisit-reloks
-mno-explicit-relocs
Gunakan (jangan gunakan) operator penempatan semula pemasang apabila berurusan dengan alamat simbolik.
Alternatif, dipilih oleh -mno-explicit-relocs, sebaliknya menggunakan makro pemasang.

-eksplisit-reloks ialah lalai jika GCC dikonfigurasikan untuk menggunakan pemasang itu
menyokong pengendali penempatan semula.

-mcheck-sifar-bahagian
-mno-check-sifar-bahagian
Perangkap (jangan perangkap) pada pembahagian integer dengan sifar.

Lalai adalah -mcheck-sifar-bahagian.

-mbahagi-perangkap
-mbahagi-pecah
Sistem MIPS menyemak pembahagian dengan sifar dengan menghasilkan sama ada perangkap bersyarat atau a
patah arahan. Menggunakan perangkap menghasilkan kod yang lebih kecil, tetapi hanya disokong pada MIPS
II dan kemudiannya. Selain itu, beberapa versi kernel Linux mempunyai pepijat yang menghalang perangkap
daripada menjana isyarat yang betul ("SIGFPE"). guna -mbahagi-perangkap untuk membenarkan bersyarat
perangkap pada seni bina yang menyokong mereka dan -mbahagi-pecah untuk memaksa penggunaan
rehat.

Lazimnya ialah -mbahagi-perangkap, tetapi ini boleh ditindih pada masa konfigurasi
menggunakan --with-divide=break. Cek bahagi dengan sifar boleh dilumpuhkan sepenuhnya menggunakan
-mno-check-sifar-bahagian.

-mmemcpy
-mno-memcpy
Paksa (jangan paksa) penggunaan "memcpy" untuk pergerakan blok yang tidak remeh. Lalainya ialah
-mno-memcpy, yang membolehkan GCC menyelaraskan kebanyakan salinan bersaiz malar.

-mlong-panggilan
-mno-long-panggilan
Lumpuhkan (jangan lumpuhkan) penggunaan arahan "jal". Fungsi panggilan menggunakan "jal"
adalah lebih cekap tetapi memerlukan pemanggil dan penerima berada dalam 256 megabait yang sama
segmen.

Pilihan ini tidak mempunyai kesan pada kod abicalls. Lalainya ialah -mno-long-panggilan.

-mmad
-mno-gila
Dayakan (lumpuhkan) penggunaan arahan "mad", "madu" dan "mul", seperti yang disediakan oleh
R4650 ISA.

-mimadd
-mno-imadd
Dayakan (lumpuhkan) penggunaan arahan integer "madd" dan "msub". Lalainya ialah
-mimadd pada seni bina yang menyokong "madd" dan "msub" kecuali untuk 74k
seni bina di mana ia didapati menjana kod yang lebih perlahan.

-mfused-gila
-mno-fused-madd
Dayakan (lumpuhkan) penggunaan arahan darab-terkumpul titik terapung, apabila arahan itu
boleh didapati. Lalainya ialah -mfused-gila.

Pada CPU R8000 apabila arahan darab-akumulasi digunakan, perantaraan
produk dikira dengan ketepatan tak terhingga dan tidak tertakluk kepada Flush FCSR
Sifar sedikit. Ini mungkin tidak diingini dalam beberapa keadaan. Pada pemproses lain
keputusan adalah sama secara berangka dengan pengiraan setara menggunakan darab berasingan,
tambah, tolak dan tolak arahan.

-nocpp
Beritahu pemasang MIPS untuk tidak menjalankan prapemprosesnya ke atas fail pemasang pengguna (dengan a
.s akhiran) apabila memasangnya.

-mfix-24k
-mno-fix-24k
Mengatasi kesalahan 24K E48 (data yang hilang pada kedai semasa pengisian semula). Penyelesaian
dilaksanakan oleh pemasang dan bukannya oleh GCC.

-mfix-r4000
-mno-fix-r4000
Mengatasi kesilapan CPU R4000 tertentu:

- Kata ganda atau anjakan berubah mungkin memberikan hasil yang salah jika dilaksanakan
serta-merta selepas memulakan pembahagian integer.

- Kata ganda atau anjakan berubah mungkin memberikan hasil yang salah jika dilaksanakan semasa
pendaraban integer sedang berjalan.

- Pembahagian integer mungkin memberikan hasil yang salah jika dimulakan dalam slot kelewatan a
diambil dahan atau lompatan.

-mfix-r4400
-mno-fix-r4400
Mengatasi kesilapan CPU R4400 tertentu:

- Kata ganda atau anjakan berubah mungkin memberikan hasil yang salah jika dilaksanakan
serta-merta selepas memulakan pembahagian integer.

-mfix-r10000
-mno-fix-r10000
Bekerja di sekitar R10000 kesalahan tertentu:

- Urutan "ll"/"sc" mungkin tidak berfungsi secara atom pada semakan sebelum 3.0. Mereka mungkin
kebuntuan pada semakan 2.6 dan lebih awal.

Pilihan ini hanya boleh digunakan jika seni bina sasaran menyokong kemungkinan cawangan
arahan. -mfix-r10000 ialah lalai apabila -mac=r10000 digunakan; -mno-fix-r10000
adalah lalai sebaliknya.

-mfix-rm7000
-mno-fix-rm7000
Kerja sekitar RM7000 "dmult"/"dmultu" kesalahan. Penyelesaian dilaksanakan oleh
pemasang dan bukannya oleh GCC.

-mfix-vr4120
-mno-fix-vr4120
Mengatasi kesilapan VR4120 tertentu:

- "dmultu" tidak selalu menghasilkan hasil yang betul.

- "div" dan "ddiv" tidak selalu menghasilkan hasil yang betul jika salah satu operan
adalah negatif.

Penyelesaian untuk kesalahan bahagian bergantung pada fungsi khas dalam libgcc.a. Pada
kini, fungsi ini hanya disediakan oleh konfigurasi "mips64vr*-elf".

Errata VR4120 lain memerlukan NOP untuk dimasukkan antara pasangan tertentu
arahan. Kesilapan ini dikendalikan oleh pemasang, bukan oleh GCC sendiri.

-mfix-vr4130
Mengatasi kesalahan "mflo"/"mfhi" VR4130. Penyelesaian dilaksanakan oleh
penghimpun dan bukannya oleh GCC, walaupun GCC mengelak daripada menggunakan "mflo" dan "mfhi" jika
Arahan VR4130 "macc", "macchi", "dmacc" dan "dmacchi" tersedia sebaliknya.

-mfix-sb1
-mno-fix-sb1
Selesaikan kesilapan teras CPU SB-1 tertentu. (Bendera ini pada masa ini berfungsi di sekitar SB-1
semakan 2 "F1" dan "F2" titik terapung kesilapan.)

-mr10k-cache-barrier=menetapkan
Tentukan sama ada GCC harus memasukkan halangan cache untuk mengelakkan kesan sampingan
spekulasi mengenai pemproses R10K.

Sama seperti kebanyakan pemproses, R10K cuba meramalkan hasil sesuatu bersyarat
cawangan dan secara spekulatif melaksanakan arahan daripada cawangan "diambil". Ia kemudian
membatalkan arahan ini jika hasil yang diramalkan adalah salah. Walau bagaimanapun, pada R10K,
arahan yang digugurkan pun boleh memberi kesan sampingan.

Masalah ini hanya menjejaskan kedai kernel dan, bergantung pada sistem, beban kernel.
Sebagai contoh, kedai yang dilaksanakan secara spekulatif mungkin memuatkan memori sasaran ke dalam cache
dan tandai baris cache sebagai kotor, walaupun kedai itu sendiri kemudiannya dibatalkan. Jika DMA
operasi menulis ke kawasan memori yang sama sebelum baris "kotor" disiram, the
data cache menimpa data DMA-ed. Lihat manual pemproses R10K untuk maklumat penuh
penerangan, termasuk masalah lain yang berpotensi.

Satu penyelesaian adalah dengan memasukkan arahan penghalang cache sebelum setiap akses memori itu
mungkin dilaksanakan secara spekulatif dan itu mungkin mempunyai kesan sampingan walaupun digugurkan.
-mr10k-cache-barrier=menetapkan mengawal pelaksanaan GCC bagi penyelesaian ini. Ia
menganggap bahawa akses yang dihentikan kepada mana-mana bait di kawasan berikut tidak mempunyai sisi
kesan:

1. memori yang diduduki oleh bingkai tindanan fungsi semasa;

2. ingatan yang diduduki oleh hujah timbunan masuk;

3. ingatan yang diduduki oleh objek dengan alamat pemalar masa pautan.

Adalah menjadi tanggungjawab kernel untuk memastikan bahawa akses spekulatif ke kawasan ini
memang selamat.

Jika program input mengandungi pengisytiharan fungsi seperti:

void foo (kosong);

maka pelaksanaan "foo" mesti membenarkan "j foo" dan "jal foo" dilaksanakan
secara spekulatif. GCC menghormati sekatan ini untuk fungsi yang dikompilasinya sendiri. Ia
mengharapkan fungsi bukan GCC (seperti kod pemasangan tulisan tangan) untuk melakukan perkara yang sama.

Pilihan mempunyai tiga bentuk:

-mr10k-cache-barrier=simpan-beban
Masukkan penghalang cache sebelum memuatkan atau stor yang mungkin dilaksanakan secara spekulatif
dan itu mungkin mempunyai kesan sampingan walaupun digugurkan.

-mr10k-cache-barrier=stor
Masukkan penghalang cache sebelum kedai yang mungkin dilaksanakan secara spekulatif dan
yang mungkin mempunyai kesan sampingan walaupun digugurkan.

-mr10k-cache-barrier=tiada
Lumpuhkan pemasukan halangan cache. Ini ialah tetapan lalai.

-mflush-func=func
-mno-flush-func
Menentukan fungsi untuk memanggil untuk membuang cache I dan D, atau untuk tidak memanggil mana-mana yang sedemikian
fungsi. Jika dipanggil, fungsi mesti mengambil hujah yang sama seperti yang biasa
"_flush_func", iaitu alamat julat memori yang mana cache berada
disiram, saiz julat memori, dan nombor 3 (untuk menyiram kedua-dua cache). The
lalai bergantung pada sasaran GCC yang dikonfigurasikan, tetapi lazimnya adalah sama ada
"_flush_func" atau "__cpu_flush".

kos-mbranch=num
Tetapkan kos cawangan kepada kira-kira num arahan "mudah". Kos ini hanya a
heuristik dan tidak dijamin menghasilkan hasil yang konsisten merentas keluaran. Satu sifar
kos berlebihan memilih lalai, yang berdasarkan pada -mtune penetapan.

-berkemungkinan besar
-mno-cawangan-kemungkinan
Dayakan atau lumpuhkan penggunaan arahan Kemungkinan Cawangan, tanpa mengira lalai untuk
seni bina yang dipilih. Secara lalai, arahan Kemungkinan Cawangan boleh dijana jika
mereka disokong oleh seni bina yang dipilih. Pengecualian adalah untuk MIPS32 dan
Seni bina dan pemproses MIPS64 yang melaksanakan seni bina tersebut; untuk mereka,
Arahan Kemungkinan Cawangan tidak dijana secara lalai kerana MIPS32 dan
Seni bina MIPS64 secara khusus menafikan penggunaannya.

-mfp-exceptions
-mno-fp-exceptions
Menentukan sama ada pengecualian FP didayakan. Ini mempengaruhi cara arahan FP
dijadualkan untuk beberapa pemproses. Lalainya ialah pengecualian FP didayakan.

Sebagai contoh, pada SB-1, jika pengecualian FP dilumpuhkan, dan kami memancarkan 64-bit
kod, maka kita boleh menggunakan kedua-dua paip FP. Jika tidak, kita hanya boleh menggunakan satu paip FP.

-mvr4130-align
-mno-vr4130-align
Saluran paip VR4130 ialah superscalar dua hala, tetapi hanya boleh mengeluarkan dua arahan
bersama-sama jika yang pertama adalah sejajar 8-bait. Apabila pilihan ini didayakan, GCC menjajarkan
sepasang arahan yang difikirkannya harus dilaksanakan secara selari.

Pilihan ini hanya mempunyai kesan apabila mengoptimumkan VR4130. Ia biasanya membuat kod
lebih cepat, tetapi dengan mengorbankan menjadikannya lebih besar. Ia didayakan secara lalai di
tahap pengoptimuman -O3.

-msynci
-mno-synci
Dayakan (lumpuhkan) penjanaan arahan "synci" pada seni bina yang menyokongnya.
Arahan "synci" (jika didayakan) dijana apabila "__builtin___clear_cache" adalah
disusun.

Pilihan ini lalai kepada -mno-synci, tetapi lalai boleh diganti dengan mengkonfigurasi
GCC dengan --dengan-synci.

Apabila menyusun kod untuk sistem pemproses tunggal, secara amnya selamat untuk menggunakan "synci".
Walau bagaimanapun, pada banyak sistem berbilang teras (SMP), ia tidak membatalkan arahan
cache pada semua teras dan boleh membawa kepada tingkah laku yang tidak ditentukan.

-mrelax-pic-calls
-mno-santai-gambar-panggilan
Cuba tukar panggilan PIC yang biasanya dihantar melalui daftar $25 menjadi panggilan langsung.
Ini hanya boleh dilakukan jika pemaut boleh menyelesaikan destinasi pada masa pautan dan jika
destinasi berada dalam lingkungan untuk panggilan terus.

-mrelax-pic-calls ialah lalai jika GCC dikonfigurasikan untuk menggunakan pemasang dan a
pemaut yang menyokong arahan pemasangan ".reloc" dan -eksplisit-reloks dalam
kesan. Dengan -mno-explicit-relocs, pengoptimuman ini boleh dilakukan oleh
penghimpun dan penghubung sahaja tanpa bantuan daripada pengkompil.

-mmcount-ra-alamat
-mno-mcount-ra-alamat
Pancarkan (jangan keluarkan) kod yang membenarkan "_mcount" mengubah suai pengembalian fungsi panggilan
alamat. Apabila didayakan, pilihan ini memanjangkan antara muka "_mcount" biasa dengan yang baharu
ra-alamat parameter, yang mempunyai jenis "intptr_t *" dan diluluskan dalam daftar $12.
"_mcount" kemudiannya boleh mengubah suai alamat pemulangan dengan melakukan kedua-dua perkara berikut:

* Mengembalikan alamat baru dalam daftar $31.

* Menyimpan alamat baharu dalam "*ra-alamat", Jika ra-alamat adalah tidak batal.

Lalai adalah -mno-mcount-ra-alamat.

MMIX Pilihan

Pilihan ini ditakrifkan untuk MMIX:

-mlibfuncs
-mno-libfuncs
Tentukan bahawa fungsi perpustakaan intrinsik sedang disusun, menghantar semua nilai masuk
mendaftar, tidak kira saiz.

-mepsilon
-mno-epsilon
Hasilkan arahan perbandingan titik terapung yang membandingkan berkenaan dengan "rE"
daftar epsilon.

-mabi=mmixware
-mabi=gnu
Hasilkan kod yang melepasi parameter fungsi dan mengembalikan nilai yang (dalam dipanggil
function) dilihat sebagai daftar $0 dan ke atas, berbanding dengan GNU ABI yang menggunakan global
mendaftar $231 dan ke atas.

-mzero-lanjutkan
-mno-sifar-lanjutkan
Apabila membaca data dari memori dalam saiz yang lebih pendek daripada 64 bit, gunakan (jangan gunakan) sifar-
melanjutkan arahan beban secara lalai, dan bukannya melanjutkan tanda.

-mknuthdiv
-mno-knuthdiv
Jadikan hasil pembahagian yang menghasilkan baki mempunyai tanda yang sama dengan pembahagi.
Dengan lalai, -mno-knuthdiv, tanda baki mengikut tanda
dividen. Kedua-dua kaedah adalah sah dari segi aritmetik, yang terakhir hampir secara eksklusif
terpakai.

-simbol-mtoplevel
-simbol-mno-toplevel
Prepend (jangan prepend) a : kepada semua simbol global, jadi kod pemasangan boleh digunakan
dengan arahan pemasangan "PREFIX".

-melf
Hasilkan boleh laku dalam format ELF, bukannya lalai MMO format yang digunakan oleh
yang mmix simulator.

-mbranch-ramalkan
-mno-cawangan-ramalkan
Gunakan (jangan gunakan) arahan cawangan berkemungkinan, apabila ramalan cawangan statik
menunjukkan cawangan yang mungkin.

-mbase-alamat
-mno-base-alamat
Hasilkan (jangan jana) kod yang menggunakan asas alamat. Menggunakan alamat asas
secara automatik menjana permintaan (dikendalikan oleh pemasang dan penyambung) untuk a
tetap untuk disediakan dalam daftar global. Daftar digunakan untuk satu atau lebih pangkalan
alamat permintaan dalam julat 0 hingga 255 daripada nilai yang dipegang dalam daftar. The
secara amnya membawa kepada kod pendek dan pantas, tetapi bilangan item data yang berbeza itu
boleh ditangani adalah terhad. Ini bermakna program yang menggunakan banyak data statik
mungkin memerlukan -mno-base-alamat.

-msingle-keluar
-mno-tunggal-keluar
Paksa (jangan paksa) kod yang dihasilkan untuk mempunyai satu titik keluar dalam setiap fungsi.

MN10300 Pilihan

Ini -m pilihan ditakrifkan untuk seni bina Matsushita MN10300:

-mult-bug
Hasilkan kod untuk mengelakkan pepijat dalam arahan darab untuk pemproses MN10300.
Ini adalah lalai.

-mno-mult-bug
Jangan jana kod untuk mengelakkan pepijat dalam arahan darab untuk MN10300
pemproses.

-mam33
Hasilkan kod menggunakan ciri khusus untuk pemproses AM33.

-mno-am33
Jangan jana kod menggunakan ciri khusus untuk pemproses AM33. Ini adalah
lalai.

-mam33-2
Hasilkan kod menggunakan ciri khusus untuk pemproses AM33/2.0.

-mam34
Hasilkan kod menggunakan ciri khusus untuk pemproses AM34.

-mtune=jenis cpu
Gunakan ciri pemasaan jenis CPU yang ditunjukkan semasa menjadualkan arahan.
Ini tidak mengubah jenis pemproses yang disasarkan. Jenis CPU mestilah salah satu daripada
mn10300, am33, pagi 33-2 or am34.

-mreturn-pointer-on-d0
Apabila menjana fungsi yang mengembalikan penunjuk, kembalikan penunjuk dalam kedua-dua "a0" dan
"d0". Jika tidak, penunjuk dikembalikan hanya dalam "a0", dan cuba memanggil sedemikian
fungsi tanpa prototaip mengakibatkan ralat. Ambil perhatian bahawa pilihan ini dihidupkan oleh
lalai; guna -mno-return-pointer-on-d0 untuk mematikannya.

-mno-crt0
Jangan pautkan dalam fail objek permulaan masa jalan C.

-relax
Tunjukkan kepada pemaut bahawa ia harus melakukan pas pengoptimuman kelonggaran kepada
memendekkan cawangan, panggilan dan alamat ingatan mutlak. Pilihan ini hanya mempunyai kesan
apabila digunakan pada baris arahan untuk langkah pautan terakhir.

Pilihan ini menjadikan penyahpepijatan simbolik mustahil.

-mliw
Benarkan pengkompil menjana Panjang Arahan Perkataan arahan jika sasaran adalah
AM33 atau kemudian. Ini adalah lalai. Pilihan ini mentakrifkan makro prapemproses
"__LIW__".

-mnoliw
Jangan benarkan pengkompil menjana Panjang Arahan Perkataan arahan. Pilihan ini
mentakrifkan makro prapemproses "__NO_LIW__".

-msetlb
Benarkan pengkompil menjana SETLB dan Lcc arahan jika sasaran adalah
AM33 atau kemudian. Ini adalah lalai. Pilihan ini mentakrifkan makro prapemproses
"__SETLB__".

-mnosetlb
Jangan benarkan pengkompil menjana SETLB or Lcc arahan. Pilihan ini mentakrifkan
makro prapemproses "__NO_SETLB__".

Moxie Pilihan

-meb
Hasilkan kod big-endian. Ini adalah lalai untuk moxie-*-* konfigurasi.

-mel
Hasilkan kod little-endian.

-mmul.x
Hasilkan arahan mul.x dan umul.x. Ini adalah lalai untuk moxiebox-*-*
konfigurasi.

-mno-crt0
Jangan pautkan dalam fail objek permulaan masa jalan C.

MSP430 Pilihan

Pilihan ini ditakrifkan untuk MSP430:

-masm-hex
Paksa output pemasangan untuk sentiasa menggunakan pemalar hex. Biasanya pemalar sedemikian ditandatangani
perpuluhan, tetapi pilihan ini tersedia untuk testsuite dan/atau tujuan estetik.

-mmcu=
Pilih MCU untuk disasarkan. Ini digunakan untuk mencipta simbol prapemproses C berdasarkan
nama MCU, ditukar kepada huruf besar dan pra dan pasca tetap dengan __. Ini pula
digunakan oleh msp430.h fail pengepala untuk memilih pengepala tambahan khusus MCU
fail.

Pilihan itu juga menetapkan ISA untuk digunakan. Jika nama MCU adalah nama yang diketahui sahaja
menyokong 430 ISA maka itu dipilih, jika tidak 430X ISA dipilih. A
nama generik MCU bagi msp430 juga boleh digunakan untuk memilih 430 ISA. Begitu juga dengan
generik msp430x Nama MCU memilih 430X ISA.

Selain itu skrip pemaut khusus MCU ditambahkan pada baris arahan pemaut. The
nama skrip ialah nama MCU dengan .ld dilampirkan. Dengan itu menyatakan -mmcu=xxx on
yang gcc baris arahan mentakrifkan simbol prapemproses C "__XXX__" dan menyebabkan pemaut
untuk mencari skrip yang dipanggil xxx.ld.

Pilihan ini juga diserahkan kepada pemasang.

-mcpu=
Menentukan ISA untuk digunakan. Nilai yang diterima ialah msp430, msp430x dan msp430xv2. ini
pilihan ditamatkan. The -mmcu= pilihan hendaklah digunakan untuk memilih ISA.

-msim
Pautan ke perpustakaan masa jalan simulator dan skrip pemaut. Mengatasi mana-mana skrip yang
akan dipilih oleh -mmcu= pilihan.

-mbesar
Gunakan pengalamatan model besar (penunjuk 20-bit, "size_t" 32-bit).

-msmall
Gunakan pengalamatan model kecil (penunjuk 16-bit, "size_t" 16-bit).

-relax
Pilihan ini diserahkan kepada pemasang dan pemaut, dan membenarkan pemaut untuk melakukan
pengoptimuman tertentu yang tidak boleh dilakukan sehingga pautan akhir.

mhwmult=
Menerangkan jenis darab perkakasan yang disokong oleh sasaran. Nilai yang diterima ialah
tiada kerana tiada penggandaan perkakasan, 16bit untuk pendaraban asal 16-bit sahaja disokong
oleh MCU awal. 32bit untuk darab 16/32-bit yang disokong oleh MCU kemudiannya dan siri f5
untuk darab 16/32-bit yang disokong oleh MCU siri F5. Nilai daripada auto juga boleh menjadi
diberi. Ini memberitahu GCC untuk menyimpulkan sokongan penggandaan perkakasan berdasarkan nama MCU
disediakan oleh -mmcu pilihan. Jika tidak -mmcu pilihan ditentukan kemudian 32bit perkakasan
sokongan berganda diandaikan. auto ialah tetapan lalai.

Penggandaan perkakasan biasanya dilakukan dengan memanggil rutin perpustakaan. Ini menjimatkan
ruang dalam kod yang dihasilkan. Apabila menyusun di -O3 atau lebih tinggi walau bagaimanapun perkakasan
pengganda dipanggil sebaris. Ini menjadikan kod yang lebih besar, tetapi lebih pantas.

Rutin penggandaan perkakasan melumpuhkan gangguan semasa menjalankan dan memulihkan
keadaan gangguan sebelumnya apabila mereka selesai. Ini menjadikan ia selamat untuk digunakan di dalam
pengendali sampukan serta dalam kod biasa.

-minrt
Dayakan penggunaan persekitaran masa jalan minimum - tiada pemula statik atau
pembina. Ini bertujuan untuk peranti terhad memori. Penyusun termasuk
simbol khas dalam beberapa objek yang memberitahu pemaut dan masa jalan yang serpihan kod
diperlukan.

NDS32 Pilihan

Pilihan ini ditakrifkan untuk pelaksanaan NDS32:

-besar-endian
Hasilkan kod dalam mod big-endian.

-kecil-endian
Hasilkan kod dalam mod little-endian.

-reduced-regs
Gunakan daftar set terkurang untuk peruntukan daftar.

-mfull-regs
Gunakan daftar set penuh untuk peruntukan daftar.

-mcmov
Hasilkan arahan pergerakan bersyarat.

-mno-cmov
Jangan jana arahan pergerakan bersyarat.

-perf-ext
Hasilkan arahan sambungan prestasi.

-mno-perf-ext
Jangan jana arahan sambungan prestasi.

-mv3push
Hasilkan arahan push3/pop25 v25.

-mno-v3push
Jangan jana arahan push3/pop25 v25.

-m16-bit
Hasilkan arahan 16-bit.

-mno-16-bit
Jangan jana arahan 16-bit.

-saiz-vektor-misr=num
Nyatakan saiz setiap vektor sampukan, yang mestilah 4 atau 16.

-mcache-block-size=num
Tentukan saiz setiap blok cache, yang mestilah kuasa 2 antara 4 dan 512.

-march=gerbang
Nyatakan nama seni bina sasaran.

-mcmodel=model kod
Tetapkan model kod kepada salah satu daripada

kecil
Semua data dan segmen data baca sahaja mestilah dalam ruang alamat 512KB.
Segmen teks mestilah dalam ruang alamat 16MB.

sederhana
Segmen data mestilah dalam lingkungan 512KB manakala segmen data baca sahaja boleh
dalam ruang alamat 4GB. Segmen teks mestilah dalam lingkungan 16MB
ruang alamat.

besar
Semua segmen teks dan data boleh berada dalam ruang alamat 4GB.

-mctor-dtor
Dayakan ciri pembina/pemusnah.

-relax
Pemaut panduan untuk melonggarkan arahan.

Nios II Pilihan

Ini ialah pilihan yang ditakrifkan untuk pemproses Altera Nios II.

-G num
Letakkan objek global dan statik kurang daripada atau sama dengan num bait ke dalam data kecil atau
Bahagian BSS dan bukannya data biasa atau bahagian BSS. Nilai lalai bagi num is
8.

-mgpopt=pilihan
-mgpopt
-mno-gpopt
Jana (jangan jana) akses relatif GP. Yang berikut pilihan nama adalah
dikenali:

tiada
Jangan jana akses relatif GP.

tempatan
Hasilkan akses relatif GP untuk objek data kecil yang bukan luaran atau
lemah. Juga gunakan pengalamatan relatif GP untuk objek yang telah secara eksplisit
diletakkan dalam bahagian data kecil melalui atribut "bahagian".

global
Untuk tempatan, tetapi juga menjana akses relatif GP untuk objek data kecil yang
adalah luaran atau lemah. Jika anda menggunakan pilihan ini, anda mesti memastikan bahawa semua bahagian
program anda (termasuk perpustakaan) disusun dengan yang sama -G penetapan.

data
Hasilkan akses relatif GP untuk semua objek data dalam program. Jika anda menggunakan
pilihan ini, keseluruhan data dan segmen BSS program anda mesti muat dalam 64K daripada
memori dan anda mesti menggunakan skrip penghubung yang sesuai untuk memperuntukkannya dalam
julat boleh alamat penunjuk global.

semua Hasilkan alamat relatif GP untuk penunjuk fungsi serta penunjuk data. Jika
anda menggunakan pilihan ini, keseluruhan teks, data dan segmen BSS program anda mesti
muat dalam 64K memori dan anda mesti menggunakan skrip penghubung yang sesuai untuk diperuntukkan
mereka dalam julat boleh alamat penunjuk global.

-mgpopt adalah bersamaan dengan -mgpopt=tempatan, dan -mno-gpopt adalah bersamaan dengan -mgpopt=tiada.

Lalai adalah -mgpopt kecuali bila -fpic or -fPIC ditentukan untuk menjana kedudukan-
kod bebas. Ambil perhatian bahawa Nios II ABI tidak membenarkan akses relatif GP daripada
perpustakaan kongsi.

Anda mungkin perlu menentukan -mno-gpopt secara eksplisit apabila membina program yang merangkumi
sejumlah besar data kecil, termasuk bahagian data GOT yang besar. Dalam kes ini,
Offset 16-bit untuk pengalamatan relatif GP mungkin tidak cukup besar untuk membenarkan akses kepada
keseluruhan bahagian data kecil.

-mel
-meb
Hasilkan kod little-endian (lalai) atau big-endian (eksperimen).

-mbypass-cache
-mno-bypass-cache
Paksa semua memuatkan dan menyimpan arahan untuk sentiasa memintas cache dengan menggunakan varian I/O
arahan. Lalai adalah untuk tidak memintas cache.

-mno-cache-volatile
-mcache-volatile
Akses memori yang tidak menentu memintas cache menggunakan varian I/O bagi memuatkan dan menyimpan
arahan. Lalai adalah untuk tidak memintas cache.

-mno-fast-sw-div
-mfast-sw-div
Jangan gunakan pembahagian pantas berasaskan jadual untuk nombor kecil. Lalai adalah menggunakan cepat
bahagikan pada -O3 dan ke atas.

-mno-hw-mul
-mhw-mul
-mno-hw-mulx
-mhw-mulx
-mno-hw-div
-mhw-div
Dayakan atau lumpuhkan pemancaran keluarga arahan "mul", "mulx" dan "div" oleh
penyusun. Lalai adalah untuk memancarkan "mul" dan tidak mengeluarkan "div" dan "mulx".

-biasa-rumah penginapan=N
-mno-adat-rumah penginapan
setiap -biasa-rumah penginapan=N pilihan membolehkan penggunaan arahan tersuai dengan pengekodan N apabila
menjana kod yang menggunakan rumah penginapan. Sebagai contoh, -mcustom-fadds=253 menjana adat
arahan 253 untuk operasi tambah titik terapung ketepatan tunggal dan bukannya
tingkah laku lalai menggunakan panggilan perpustakaan.

Nilai berikut bagi rumah penginapan disokong. Kecuali seperti yang dinyatakan sebaliknya, titik terapung
operasi dijangka akan dilaksanakan dengan semantik IEEE 754 biasa dan
sepadan terus dengan pengendali C atau fungsi terbina dalam GCC yang setara.

Titik terapung ketepatan tunggal:

fesyen, fsubs, fdivs, fmuls
Operasi aritmetik binari.

fnegs
Penafian unary.

fabss
Nilai mutlak unary.

fcmpeqs, fcmpges, fcmpgts, fcmples, fcmplts, fcmpnes
Operasi perbandingan.

fmins, fmaxs
Titik terapung minimum dan maksimum. Arahan ini hanya dihasilkan jika
-finite-matematik sahaja dinyatakan.

fsqrts
Operasi punca kuasa dua unari.

fcoss, fsins, ftan, fatan, fexps, cambuk
Fungsi trigonometri dan eksponen titik terapung. Arahan ini adalah
hanya dijana jika -funsafe-math-optimizations juga dinyatakan.

Titik terapung berketepatan dua kali:

faddd, fsubd, fdivd, fmuld
Operasi aritmetik binari.

fnegd
Penafian unary.

fabsd
Nilai mutlak unary.

fcmpeqd, fcmpged, fcmpgtd, fcmpled, fcmpltd, fcmpned
Operasi perbandingan.

fmind, fmaxd
Ketepatan dua kali ganda minimum dan maksimum. Arahan ini hanya dihasilkan jika
-finite-matematik sahaja dinyatakan.

fsqrtd
Operasi punca kuasa dua unari.

fcosd, fsind, ftand, fatand, fexpd, flogd
Fungsi trigonometri dan eksponen ketepatan dua kali. Arahan ini adalah
hanya dijana jika -funsafe-math-optimizations juga dinyatakan.

Penukaran:

fexsd
Penukaran daripada ketepatan tunggal kepada ketepatan berganda.

ftruncds
Penukaran daripada ketepatan berganda kepada ketepatan tunggal.

fixsi, fixsu, fixdi, fixdu
Penukaran daripada titik terapung kepada jenis integer yang ditandatangani atau tidak ditandatangani, dengan
pemangkasan ke arah sifar.

keliling
Penukaran daripada titik terapung ketepatan tunggal kepada integer yang ditandatangani, membundarkan kepada
integer terdekat dan ikatan jauh dari sifar. Ini sepadan dengan
"__builtin_lroundf" berfungsi apabila -fno-math-errno digunakan.

floatis, floatus, terapung, terapung
Penukaran daripada jenis integer yang ditandatangani atau tidak ditandatangani kepada jenis titik terapung.

Di samping itu, semua arahan pemindahan berikut untuk daftar dalaman X dan Y
mesti disediakan untuk menggunakan mana-mana arahan titik terapung berketepatan dua.
Arahan tersuai yang mengambil dua operan sumber berketepatan dua mengharapkan yang pertama
operan dalam daftar 64-bit X. Operan lain (atau hanya operan unari
operasi) diberikan kepada arahan aritmetik tersuai dengan paling tidak signifikan
separuh dalam daftar sumber src1 dan separuh yang paling ketara dalam src2. Suatu kebiasaan
arahan yang mengembalikan hasil ketepatan berganda mengembalikan yang paling ketara 32
bit dalam daftar destinasi dan separuh lagi dalam daftar 32-bit Y. GCC
secara automatik menjana urutan kod yang diperlukan untuk menulis daftar X dan/atau membaca
daftar Y apabila arahan titik terapung berketepatan dua digunakan.

fwrx
Tulis src1 ke dalam separuh bererti terkecil X dan src2 menjadi yang paling ketara
separuh daripada X.

fwry
Tulis src1 ke dalam Y.

frdxhi, frdxlo
Baca separuh atau paling sedikit (masing-masing) ketara X dan simpannya destinasi.

frdy
Baca nilai Y dan simpan ke dalam destinasi.

Ambil perhatian bahawa anda boleh memperoleh lebih banyak kawalan tempatan ke atas penjanaan tersuai Nios II
arahan dengan menggunakan "target("custom-insn=N")" dan "target("no-custom-insn")"
atribut fungsi atau pragma.

-mcustom-fpu-cfg=nama
Pilihan ini membolehkan set pengekodan arahan tersuai yang dipratentukan dan dinamakan (lihat
-biasa-rumah penginapan di atas). Pada masa ini, set berikut ditakrifkan:

-mcustom-fpu-cfg=60-1 bersamaan dengan: -mcustom-fmuls=252 -mcustom-fadds=253
-mcustom-fsubs=254 -fsingle-precision-constant

-mcustom-fpu-cfg=60-2 bersamaan dengan: -mcustom-fmuls=252 -mcustom-fadds=253
-mcustom-fsubs=254 -mcustom-fdivs=255 -fsingle-precision-constant

-mcustom-fpu-cfg=72-3 bersamaan dengan: -mcustom-floatus=243 -mcustom-fixsi=244
-mcustom-floatis=245 -mcustom-fcmpgts=246 -mcustom-fcmples=249 -mcustom-fcmpeqs=250
-mcustom-fcmpnes=251 -mcustom-fmuls=252 -mcustom-fadds=253 -mcustom-fsubs=254
-mcustom-fdivs=255 -fsingle-precision-constant

Tugasan arahan tersuai yang diberikan oleh individu -biasa-rumah penginapan= pilihan menimpa
yang diberikan oleh -mcustom-fpu-cfg=, tanpa mengira susunan pilihan pada
baris perintah.

Ambil perhatian bahawa anda boleh mendapatkan lebih banyak kawalan setempat ke atas pemilihan konfigurasi FPU dengan
menggunakan "target("custom-fpu-cfg=nama")" atribut fungsi atau pragma.

Tambahan ini -m pilihan tersedia untuk sasaran Altera Nios II ELF (logam kosong):

-mhal
Pautan dengan HAL BSP. Ini menyekat pemautan dengan permulaan masa jalan C yang disediakan oleh GCC
dan kod penamatan, dan biasanya digunakan bersama dengan -msys-crt0= untuk menentukan
lokasi kod permulaan ganti yang disediakan oleh HAL BSP.

-msmallc
Pautan dengan versi terhad perpustakaan C, -lsmallc, bukannya Newlib.

-msys-crt0=fail permulaan
fail permulaan ialah nama fail bagi fail permulaan (crt0) untuk digunakan semasa memaut. Pilihan ini
hanya berguna bersama dengan -mhal.

-msys-lib=systemlib
systemlib ialah nama perpustakaan perpustakaan yang menyediakan panggilan sistem peringkat rendah
diperlukan oleh perpustakaan C, contohnya "baca" dan "tulis". Pilihan ini biasanya digunakan untuk
pautan dengan perpustakaan yang disediakan oleh HAL BSP.

Nvidia PTX Pilihan

Pilihan ini ditakrifkan untuk Nvidia PTX:

-m32
-m64
Hasilkan kod untuk ABI 32-bit atau 64-bit.

-mmainkernel
Pautan dalam kod untuk kernel __main. Ini adalah untuk bersendirian dan bukannya memunggah
pelaksanaan.

PDP-11 Pilihan

Pilihan ini ditakrifkan untuk PDP-11:

-mfpu
Gunakan titik terapung FPP perkakasan. Ini adalah lalai. (Titik terapung FIS pada
PDP-11/40 tidak disokong.)

-msoft-float
Jangan gunakan titik terapung perkakasan.

-mac0
Kembalikan hasil titik terapung dalam ac0 (fr0 dalam sintaks pemasang Unix).

-mno-ac0
Kembalikan hasil titik terapung dalam ingatan. Ini adalah lalai.

-m40
Hasilkan kod untuk PDP-11/40.

-m45
Hasilkan kod untuk PDP-11/45. Ini adalah lalai.

-m10
Hasilkan kod untuk PDP-11/10.

-mbcopy-builtin
Gunakan corak "movmemhi" sebaris untuk menyalin ingatan. Ini adalah lalai.

-mbcopy
Jangan gunakan corak "movmemhi" sebaris untuk menyalin ingatan.

-pudina16
-mno-int32
Gunakan 16-bit "int". Ini adalah lalai.

-pudina32
-mno-int16
Gunakan 32-bit "int".

-mfloat64
-mno-float32
Gunakan "terapung" 64-bit. Ini adalah lalai.

-mfloat32
-mno-float64
Gunakan "float" 32-bit.

-mabshi
Gunakan corak "abshi2". Ini adalah lalai.

-mno-abshi
Jangan gunakan corak "abshi2".

-mbranch-mahal
Berpura-pura bahawa cawangan itu mahal. Ini adalah untuk bereksperimen dengan penjanaan kod
sahaja.

-mbranch-murah
Jangan berpura-pura bahawa cawangan itu mahal. Ini adalah lalai.

-munix-asm
Gunakan sintaks pemasang Unix. Ini adalah lalai apabila dikonfigurasikan untuk pdp11-*-bsd.

-mdec-asm
Gunakan sintaks pemasang DEC. Ini adalah lalai apabila dikonfigurasikan untuk mana-mana sasaran PDP-11
selain daripada pdp11-*-bsd.

picoChip Pilihan

Ini -m pilihan ditakrifkan untuk pelaksanaan picoChip:

-mae=ae_type
Tetapkan set arahan, set daftar dan parameter penjadualan arahan untuk tatasusunan
jenis elemen ae_type. Nilai yang disokong untuk ae_type adalah APA-APA, MUL, dan MAC.

-mae=SEBARANG memilih jenis AE generik sepenuhnya. Kod yang dijana dengan pilihan ini dijalankan
pada mana-mana jenis AE yang lain. Kod itu tidak secekap jika dikompilasi
untuk jenis AE tertentu, dan beberapa jenis operasi (cth, pendaraban) tidak berfungsi
betul pada semua jenis AE.

-mae=MUL memilih jenis MUL AE. Ini adalah jenis AE yang paling berguna untuk kod yang disusun,
dan merupakan lalai.

-mae=MAC memilih MAC AE gaya DSP. Kod yang disusun dengan pilihan ini mungkin mengalami masalah
prestasi manipulasi bait (char) yang lemah, kerana DSP AE tidak menyediakannya
sokongan perkakasan untuk beban/storan bait.

-msymbol-as-alamat
Dayakan pengkompil untuk terus menggunakan nama simbol sebagai alamat dalam muat/stor
arahan, tanpa terlebih dahulu memuatkannya ke dalam daftar. Biasanya, penggunaan ini
pilihan menjana atur cara yang lebih besar, yang berjalan lebih cepat daripada apabila pilihan itu tidak digunakan.
Walau bagaimanapun, keputusan berbeza dari program ke program, jadi ia dibiarkan sebagai pilihan pengguna,
dan bukannya didayakan secara kekal.

-mno-tidak cekap-amaran
Melumpuhkan amaran tentang penjanaan kod tidak cekap. Amaran ini boleh
dijana, sebagai contoh, apabila menyusun kod yang melaksanakan operasi memori peringkat bait
pada jenis MAC AE. MAC AE tidak mempunyai sokongan perkakasan untuk memori peringkat bait
operasi, jadi semua beban/simpan bait mesti disintesis daripada beban/simpan perkataan
operasi. Ini tidak cekap dan amaran dijana untuk menunjukkan bahawa anda
harus menulis semula kod untuk mengelakkan operasi bait, atau untuk menyasarkan jenis AE yang mempunyai
sokongan perkakasan yang diperlukan. Pilihan ini melumpuhkan amaran ini.

PowerPC Pilihan

Ini disenaraikan di bawah

RL78 Pilihan

-msim
Pautan dalam perpustakaan sasaran tambahan untuk menyokong operasi dalam simulator.

-mmul=tiada
-mmul=g13
-mmul=rl78
Menentukan jenis sokongan pendaraban perkakasan yang akan digunakan. Lalainya ialah
tiada, yang menggunakan fungsi pendaraban perisian. The g13 pilihan adalah untuk
perkakasan darab/bahagi persisian hanya pada sasaran RL78/G13. The rl78 pilihan adalah
untuk pendaraban perkakasan standard yang ditakrifkan dalam manual perisian RL78.

-m64bit-ganda
-m32bit-ganda
Jadikan jenis data "double" menjadi 64 bit (-m64bit-ganda) atau 32 bit (-m32bit-ganda)
dalam saiz. Lalainya ialah -m32bit-ganda.

IBM RS / 6000 dan PowerPC Pilihan

Ini -m pilihan ditakrifkan untuk IBM RS/6000 dan 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-hard-dfp
Anda menggunakan pilihan ini untuk menentukan arahan yang tersedia pada pemproses anda
sedang menggunakan. Nilai lalai bagi pilihan ini ditentukan semasa mengkonfigurasi GCC.
Menyatakan -mcpu=cpu_type mengatasi spesifikasi pilihan ini. Kami
mengesyorkan anda menggunakan -mcpu=cpu_type pilihan dan bukannya pilihan yang disenaraikan di atas.

Menentukan -mpowerpc-gpopt membenarkan GCC menggunakan seni bina PowerPC pilihan
arahan dalam kumpulan Tujuan Am, termasuk punca kuasa dua titik terapung.
Menentukan -mpowerpc-gfxopt membenarkan GCC menggunakan seni bina PowerPC pilihan
arahan dalam kumpulan Grafik, termasuk pilihan titik terapung.

. -mmfcrf pilihan membolehkan GCC menjana pergerakan daripada medan daftar syarat
arahan yang dilaksanakan pada pemproses POWER4 dan pemproses lain yang menyokong
Seni bina PowerPC V2.01. The -mpopcntb pilihan membolehkan GCC menjana popcount
dan arahan anggaran timbal balik FP berketepatan dua yang dilaksanakan pada POWER5
pemproses dan pemproses lain yang menyokong seni bina PowerPC V2.02. The
-mpopcntd pilihan membolehkan GCC menjana arahan popcount yang dilaksanakan pada
Pemproses POWER7 dan pemproses lain yang menyokong seni bina PowerPC V2.06.
. -mfprnd pilihan membolehkan GCC menjana pusingan FP kepada arahan integer
dilaksanakan pada pemproses POWER5+ dan pemproses lain yang menyokong PowerPC
Seni bina V2.03. The -mcmpb pilihan membolehkan GCC menjana bait perbandingan
arahan yang dilaksanakan pada pemproses POWER6 dan pemproses lain yang menyokong
Seni bina PowerPC V2.05. The -mmfpgpr pilihan membolehkan GCC menjana langkah FP
kepada/dari arahan daftar tujuan umum yang dilaksanakan pada pemproses POWER6X dan
pemproses lain yang menyokong seni bina PowerPC V2.05 yang dilanjutkan. The -mhard-dfp
pilihan membolehkan GCC menjana arahan titik terapung perpuluhan yang dilaksanakan pada
beberapa pemproses POWER.

. -mpowerpc64 pilihan membolehkan GCC menjana arahan 64-bit tambahan yang
ditemui dalam seni bina PowerPC64 penuh dan untuk menganggap GPR sebagai 64-bit, kata ganda
kuantiti. GCC lalai kepada -mno-powerpc64.

-mcpu=cpu_type
Tetapkan jenis seni bina, daftar penggunaan dan parameter penjadualan arahan untuk
jenis mesin cpu_type. Nilai yang disokong untuk cpu_type adalah 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, titan, power3, power4, power5, kuasa5+, power6,
kuasa6x, power7, power8, powerpc, kuasapc64, powerpc64le, dan rs64.

-mcpu=powerpc, -mcpu=powerpc64, dan -mcpu=powerpc64le nyatakan PowerPC 32-bit tulen
(sama ada endian), PowerPC endian besar 64-bit dan PowerPC endian kecil 64-bit
jenis mesin seni bina, dengan model pemproses generik yang sesuai diandaikan untuk
tujuan penjadualan.

Pilihan lain menentukan pemproses tertentu. Kod yang dijana di bawah pilihan tersebut
berjalan terbaik pada pemproses itu, dan mungkin tidak berjalan sama sekali pada yang lain.

. -mcpu pilihan secara automatik membolehkan atau melumpuhkan pilihan berikut:

-maltifc -mfprnd -mhard-terapung -mmfcrf -berbilang -mpopcntb -mpopcntd -mpowerpc64
-mpowerpc-gpopt -mpowerpc-gfxopt -msingle-float -mdouble-float -msimple-fpu -mstring
-mmulhw -mdlmzb -mmfpgpr -mvsx -mcrypto -mdirect-move -mpower8-fusion
-mpower8-vektor -mquad-memori -mquad-memori-atom

Pilihan tertentu yang ditetapkan untuk mana-mana CPU tertentu berbeza antara versi pengkompil,
bergantung pada tetapan yang kelihatan menghasilkan kod optimum untuk CPU itu; ia tidak
semestinya mencerminkan keupayaan perkakasan sebenar. Jika anda ingin menetapkan satu
pilihan individu kepada nilai tertentu, anda boleh menentukannya selepas -mcpu pilihan,
seperti -mcpu=970 -mno-altivec.

Pada AIX, -maltifc dan -mpowerpc64 pilihan tidak didayakan atau dilumpuhkan oleh -mcpu
pilihan pada masa ini kerana AIX tidak mempunyai sokongan penuh untuk pilihan ini. Anda boleh
masih mendayakan atau melumpuhkannya secara individu jika anda pasti ia akan berfungsi dalam anda
persekitaran.

-mtune=cpu_type
Tetapkan parameter penjadualan arahan untuk jenis mesin cpu_type, tetapi jangan tetapkan
jenis seni bina atau daftar penggunaan, sebagai -mcpu=cpu_type tidak. Nilai yang sama untuk
cpu_type digunakan untuk -mtune untuk -mcpu. Jika kedua-duanya dinyatakan, kod dijana
menggunakan seni bina dan daftar yang ditetapkan oleh -mcpu, tetapi parameter penjadualan ditetapkan oleh
-mtune.

-mcmodel=kecil
Jana kod PowerPC64 untuk model kecil: TOC adalah terhad kepada 64k.

-mcmodel=sederhana
Jana kod PowerPC64 untuk model sederhana: TOC dan data statik lain mungkin sudah habis
kepada jumlah saiz 4G.

-mcmodel=besar
Jana kod PowerPC64 untuk model besar: TOC mungkin bersaiz sehingga 4G. Lain-lain
data dan kod hanya dihadkan oleh ruang alamat 64-bit.

-maltifc
-mno-altivec
Hasilkan kod yang menggunakan (tidak menggunakan) arahan AltiVec, dan juga membolehkan penggunaannya
fungsi terbina dalam yang membenarkan lebih banyak akses terus kepada set arahan AltiVec.
Anda juga mungkin perlu menetapkan -mabi=altivec untuk melaraskan ABI semasa dengan AltiVec ABI
penambahbaikan.

Bila -maltifc digunakan, bukannya -maltivec=le or -maltivec=menjadi, susunan unsur
untuk intrinsik Altivec seperti "vec_splat", "vec_extract" dan "vec_insert" padanan
susunan elemen tatasusunan sepadan dengan endianness sasaran. Iaitu unsur
sifar mengenal pasti elemen paling kiri dalam daftar vektor apabila menyasarkan big-endian
platform, dan mengenal pasti elemen paling kanan dalam daftar vektor apabila menyasarkan a
platform little-endian.

-maltivec=menjadi
Hasilkan arahan Altivec menggunakan susunan elemen big-endian, tidak kira sama ada
sasarannya adalah besar atau kecil-endian. Ini ialah lalai apabila menyasarkan big-endian
platform.

Susunan unsur digunakan untuk mentafsir nombor unsur dalam intrinsik Altivec seperti
"vec_splat", "vec_extract", dan "vec_insert". Secara lalai, elemen tatasusunan ini sepadan
pesanan sepadan dengan endianness untuk sasaran.

-maltivec=le
Hasilkan arahan Altivec menggunakan susunan elemen little-endian, tidak kira sama ada
sasarannya adalah besar atau kecil-endian. Ini adalah lalai apabila menyasarkan sedikit-
platform endian. Pilihan ini diabaikan pada masa ini apabila menyasarkan big-endian
platform.

Susunan unsur digunakan untuk mentafsir nombor unsur dalam intrinsik Altivec seperti
"vec_splat", "vec_extract", dan "vec_insert". Secara lalai, elemen tatasusunan ini sepadan
pesanan sepadan dengan endianness untuk sasaran.

-mvrsave
-mno-vrsave
Hasilkan arahan VRSAVE apabila menjana kod AltiVec.

-mgen-sel-mikrokod
Hasilkan arahan mikrokod Sel.

-mwarn-sel-mikrokod
Beri amaran apabila arahan mikrokod Sel dikeluarkan. Contoh kod mikro Sel
arahan adalah anjakan berubah-ubah.

-msecure-plt
Hasilkan kod yang membolehkan ld dan ld.so untuk membina boleh laku dan perpustakaan kongsi dengan
bahagian ".plt" dan ".got" yang tidak boleh dilaksanakan. Ini ialah pilihan SYSV ABI PowerPC 32-bit.

-mbss-plt
Hasilkan kod yang menggunakan bahagian ".plt" BSS yang ld.so mengisi dan memerlukan ".plt"
dan bahagian ".got" yang boleh ditulis dan boleh dilaksanakan. Ini ialah PowerPC 32-bit
Pilihan SYSV ABI.

-misel
-mno-isel
Suis ini mendayakan atau melumpuhkan penjanaan arahan ISEL.

-misel=Ya tidak
Suis ini telah ditamatkan. guna -misel dan -mno-isel sebaliknya.

-mspe
-mno-spe
Suis ini membolehkan atau melumpuhkan penjanaan arahan simd SPE.

-bermasalah
-mno-berpasangan
Suis ini membolehkan atau melumpuhkan penjanaan arahan simd PAIRED.

-mspe=Ya tidak
Pilihan ini telah ditamatkan. guna -mspe dan -mno-spe sebaliknya.

-mvsx
-mno-vsx
Hasilkan kod yang menggunakan (tidak menggunakan) arahan vektor/skala (VSX), dan juga
membolehkan penggunaan fungsi terbina dalam yang membolehkan lebih banyak akses terus kepada VSX
set arahan.

-mcrypto
-mno-crypto
Dayakan penggunaan (lumpuhkan) fungsi terbina dalam yang membenarkan akses terus ke
arahan kriptografi yang telah ditambahkan dalam versi 2.07 PowerPC ISA.

-mdirect-move
-mno-direct-move
Hasilkan kod yang menggunakan (tidak menggunakan) arahan untuk memindahkan data antara
daftar tujuan am dan daftar vektor/skalar (VSX) yang telah ditambahkan
versi 2.07 PowerPC ISA.

-mpower8-fusion
-mno-power8-fusion
Hasilkan kod yang menyimpan (tidak menyimpan) beberapa operasi integer bersebelahan supaya
arahan boleh digabungkan bersama pada pemproses power8 dan kemudian.

-mpower8-vektor
-mno-kuasa8-vektor
Hasilkan kod yang menggunakan (tidak menggunakan) vektor dan arahan skalar yang telah
ditambah dalam versi 2.07 PowerPC ISA. Juga membolehkan penggunaan fungsi terbina dalam
yang membenarkan lebih banyak akses terus kepada arahan vektor.

-mquad-memori
-mno-quad-memori
Hasilkan kod yang menggunakan (tidak menggunakan) arahan memori quad word bukan atom.
. -mquad-memori pilihan memerlukan penggunaan mod 64-bit.

-mquad-memori-atom
-mno-quad-memory-atom
Hasilkan kod yang menggunakan (tidak menggunakan) arahan memori perkataan quad atom. The
-mquad-memori-atom pilihan memerlukan penggunaan mod 64-bit.

-mupper-regs-df
-mno-upper-regs-df
Hasilkan kod yang menggunakan (tidak menggunakan) arahan ketepatan berganda skalar itu
sasaran semua 64 daftar dalam set daftar titik terapung vektor/skalar yang
ditambah dalam versi 2.06 PowerPC ISA. -mupper-regs-df dihidupkan secara lalai jika
anda menggunakan mana-mana -mcpu=kuasa7, -mcpu=kuasa8, Atau -mvsx pilihan.

-mupper-regs-sf
-mno-atas-regs-sf
Hasilkan kod yang menggunakan (tidak menggunakan) arahan ketepatan tunggal skalar itu
sasaran semua 64 daftar dalam set daftar titik terapung vektor/skalar yang
ditambah dalam versi 2.07 PowerPC ISA. -mupper-regs-sf dihidupkan secara lalai jika
anda menggunakan salah satu daripada -mcpu=kuasa8 or -mpower8-vektor pilihan.

-mupper-regs
-mno-atas-regs
Hasilkan kod yang menggunakan (tidak menggunakan) arahan skalar yang menyasarkan semua 64
daftar dalam set daftar titik terapung vektor/skalar, bergantung pada model
mesin itu.

Jika -mno-atas-regs pilihan digunakan, ia mematikan kedua-duanya -mupper-regs-sf dan
-mupper-regs-df pilihan.

-mfloat-gprs=ya/bujang/berganda/tidak
-mfloat-gprs
Suis ini membolehkan atau melumpuhkan penjanaan operasi titik terapung pada
daftar tujuan umum untuk seni bina yang menyokongnya.

Hujahnya yes or tunggal membolehkan penggunaan titik terapung ketepatan tunggal
operasi.

Hujahnya dua kali ganda membolehkan penggunaan titik terapung ketepatan tunggal dan dua kali ganda
operasi.

Hujahnya tidak melumpuhkan operasi titik terapung pada daftar tujuan umum.

Pilihan ini pada masa ini hanya tersedia pada MPC854x.

-m32
-m64
Hasilkan kod untuk persekitaran 32-bit atau 64-bit sasaran Darwin dan SVR4 (termasuk
GNU/Linux). Persekitaran 32-bit menetapkan int, panjang dan penunjuk kepada 32 bit dan
menjana kod yang berjalan pada mana-mana varian PowerPC. Persekitaran 64-bit ditetapkan ke
32 bit dan panjang dan penunjuk kepada 64 bit, dan menjana kod untuk PowerPC64, seperti untuk
-mpowerpc64.

-mfull-toc
-mno-fp-in-toc
-mno-sum-in-toc
-minimal-toc
Ubah suai penjanaan TOC (Jadual Kandungan), yang dibuat untuk setiap
fail boleh laku. The -mfull-toc pilihan dipilih secara lalai. Dalam kes itu, GCC
memperuntukkan sekurang-kurangnya satu entri TOC untuk setiap rujukan pembolehubah bukan automatik yang unik
program anda. GCC juga meletakkan pemalar titik terapung dalam TOC. Namun, hanya
16,384 penyertaan tersedia dalam TOC.

Jika anda menerima mesej ralat pemaut yang mengatakan anda telah melimpahi yang tersedia
Ruang TOC, anda boleh mengurangkan jumlah ruang TOC yang digunakan dengan -mno-fp-in-toc dan
-mno-sum-in-toc pilihan. -mno-fp-in-toc menghalang GCC daripada meletakkan titik terapung
pemalar dalam TOC dan -mno-sum-in-toc memaksa GCC menjana kod untuk mengira
jumlah alamat dan pemalar pada masa jalan dan bukannya memasukkan jumlah itu ke dalam TOC.
Anda boleh menentukan satu atau kedua-dua pilihan ini. Setiap satu menyebabkan GCC menghasilkan sangat
kod yang lebih perlahan dan lebih besar dengan mengorbankan pemuliharaan ruang TOC.

Jika anda masih kehabisan ruang dalam TOC walaupun anda menentukan kedua-dua pilihan ini,
nyatakan -minimal-toc sebaliknya. Pilihan ini menyebabkan GCC membuat hanya satu entri TOC untuk
setiap fail. Apabila anda menentukan pilihan ini, GCC menghasilkan kod yang lebih perlahan dan lebih besar
tetapi yang menggunakan ruang TOC yang sangat sedikit. Anda mungkin ingin menggunakan pilihan ini hanya pada
fail yang mengandungi kod yang kurang kerap dilaksanakan.

-maix64
-maix32
Dayakan AIX ABI 64-bit dan konvensyen panggilan: penunjuk 64-bit, jenis "panjang" 64-bit dan
infrastruktur yang diperlukan untuk menyokong mereka. Menentukan -maix64 bererti -mpowerpc64,
manakala -maix32 melumpuhkan ABI 64-bit dan membayangkan -mno-powerpc64. GCC lalai kepada
-maix32.

-mxl-compat
-mno-xl-compat
Hasilkan kod yang lebih mematuhi semantik pengkompil IBM XL apabila menggunakan AIX-
ABI yang serasi. Hantar argumen titik terapung kepada fungsi prototaip di luar
daftar kawasan simpan (RSA) pada timbunan sebagai tambahan kepada FPR hujah. Jangan beranggapan
gandaan paling ketara dalam nilai berganda panjang 128-bit dibundarkan dengan betul apabila
membandingkan nilai dan menukar kepada dua kali ganda. Gunakan nama simbol XL untuk ganda panjang
rutin sokongan.

Konvensyen panggilan AIX telah dilanjutkan tetapi pada mulanya tidak didokumenkan untuk mengendalikan a
kes K&R C yang tidak jelas memanggil fungsi yang mengambil alamat hujahnya dengan
lebih sedikit hujah daripada yang diisytiharkan. Penyusun IBM XL mengakses argumen titik terapung yang
tidak muat dalam RSA dari timbunan apabila subrutin disusun tanpa
pengoptimuman. Kerana sentiasa menyimpan argumen titik terapung pada timbunan adalah
tidak cekap dan jarang diperlukan, pilihan ini tidak didayakan secara lalai dan hanya
diperlukan apabila memanggil subrutin yang disusun oleh penyusun IBM XL tanpa pengoptimuman.

-mpe
Sokongan IBM RS / 6000 SP Selari alam Sekitar (PE). Pautkan aplikasi yang ditulis untuk digunakan
penghantaran mesej dengan kod permulaan khas untuk membolehkan aplikasi berjalan. The
sistem mesti mempunyai PE dipasang di lokasi standard (/usr/lpp/ppe.poe/), atau
ciri-ciri komputer fail mesti diganti dengan -spesifikasi= pilihan untuk menentukan yang sesuai
lokasi direktori. Persekitaran Selari tidak menyokong benang, jadi -mpe
pilihan dan -pthread pilihan tidak serasi.

-malign-natural
-kuasa jahat
Pada AIX, Darwin 32-bit dan 64-bit PowerPC GNU/Linux, pilihan -malign-natural
mengatasi penjajaran yang ditentukan ABI bagi jenis yang lebih besar, seperti beregu titik terapung,
pada sempadan berasaskan saiz semula jadi mereka. Pilihannya -kuasa jahat mengarahkan GCC untuk
ikut peraturan penjajaran yang ditentukan oleh ABI. GCC lalai kepada penjajaran standard
ditakrifkan dalam ABI.

Pada Darwin 64-bit, penjajaran semula jadi ialah lalai, dan -kuasa jahat tidak
disokong.

-msoft-float
-mhard-terapung
Hasilkan kod yang tidak menggunakan (menggunakan) set daftar titik terapung. Perisian
emulasi titik terapung disediakan jika anda menggunakan -msoft-float pilihan, dan lulus
pilihan kepada GCC apabila memaut.

-msingle-float
-mdouble-float
Hasilkan kod untuk operasi titik terapung ketepatan tunggal atau dua kali ganda.
-mdouble-float bererti -msingle-float.

-msimple-fpu
Jangan jana arahan "sqrt" dan "div" untuk unit titik terapung perkakasan.

-mfpu=nama
Nyatakan jenis unit titik terapung. Nilai yang sah untuk nama adalah sp_lite (bersamaan dengan
-msingle-float -msimple-fpu), dp_lite (bersamaan dengan -mdouble-float -msimple-fpu),
sp_full (bersamaan dengan -msingle-float), Dan dp_penuh (bersamaan dengan -mdouble-float).

-mxilinx-fpu
Lakukan pengoptimuman untuk unit titik terapung pada Xilinx PPC 405/440.

-berbilang
-mno-berbilang
Hasilkan kod yang menggunakan (tidak menggunakan) memuatkan arahan berbilang perkataan dan
menyimpan beberapa arahan perkataan. Arahan ini dijana secara lalai pada
Sistem POWER, dan tidak dijana pada sistem PowerPC. Jangan guna -berbilang pada sedikit-
sistem PowerPC endian, kerana arahan tersebut tidak berfungsi apabila pemproses berada dalam
mod little-endian. Pengecualian adalah PPC740 dan PPC750 yang membenarkannya
arahan dalam mod little-endian.

-mstring
-mno-rentetan
Hasilkan kod yang menggunakan (tidak menggunakan) arahan rentetan beban dan stor
arahan perkataan rentetan untuk menyimpan berbilang daftar dan melakukan pergerakan blok kecil. Ini
arahan dijana secara lalai pada sistem POWER, dan tidak dijana pada PowerPC
sistem. Jangan guna -mstring pada sistem PowerPC little-endian, sejak itu
arahan tidak berfungsi apabila pemproses berada dalam mod little-endian. Pengecualian
ialah PPC740 dan PPC750 yang membenarkan arahan ini dalam mod little-endian.

-mupdate
-mno-kemas kini
Hasilkan kod yang menggunakan (tidak menggunakan) memuatkan atau menyimpan arahan yang mengemas kini
daftar asas ke alamat lokasi memori yang dikira. Arahan ini
dijana secara lalai. Jika anda menggunakan -mno-kemas kini, terdapat tingkap kecil di antara
masa penuding tindanan dikemas kini dan alamat bingkai sebelumnya
disimpan, yang bermaksud kod yang berjalan pada bingkai tindanan merentasi gangguan atau isyarat mungkin
dapatkan data yang rosak.

-mavoid-diindeks-alamat
-mno-avoid-indexed-addresses
Hasilkan kod yang cuba mengelak (bukan mengelak) penggunaan muatan atau stor yang diindeks
arahan. Arahan ini boleh dikenakan penalti prestasi pada pemproses Power6
dalam situasi tertentu, seperti apabila melangkah melalui tatasusunan besar yang melintasi 16M
sempadan. Pilihan ini didayakan secara lalai apabila menyasarkan Power6 dan dilumpuhkan
sebaliknya.

-mfused-gila
-mno-fused-madd
Hasilkan kod yang menggunakan (tidak menggunakan) titik terapung darab dan terkumpul
arahan. Arahan ini dijana secara lalai jika titik terapung perkakasan
digunakan. Yang bergantung kepada mesin -mfused-gila pilihan kini dipetakan ke mesin-
bebas -ffp-contract=cepat pilihan, dan -mno-fused-madd dipetakan ke
-ffp-contract=off.

-mmulhw
-mno-mulhw
Hasilkan kod yang menggunakan (tidak menggunakan) separuh perkataan darab dan darab-terkumpul
arahan mengenai pemproses IBM 405, 440, 464 dan 476. Arahan ini adalah
dijana secara lalai apabila menyasarkan pemproses tersebut.

-mdlmzb
-mno-dlmzb
Hasilkan kod yang menggunakan (tidak menggunakan) carian rentetan dlmzb arahan mengenai IBM
405, 440, 464 dan 476 pemproses. Arahan ini dijana secara lalai apabila
menyasarkan pemproses tersebut.

-mno-bit-align
-mbit-align
Pada Sistem V.4 dan sistem PowerPC terbenam tidak (melakukan) memaksa struktur dan kesatuan
yang mengandungi medan-bit untuk diselaraskan dengan jenis asas medan-bit.

Sebagai contoh, secara lalai struktur tidak mengandungi apa-apa kecuali 8 medan bit "tidak ditandatangani".
panjang 1 dijajarkan dengan sempadan 4-bait dan mempunyai saiz 4 bait. Dengan menggunakan
-mno-bit-align, struktur dijajarkan dengan sempadan 1 bait dan bersaiz 1 bait.

-mno-strict-align
-mstrict-align
Pada Sistem V.4 dan sistem PowerPC terbenam tidak (melakukan) menganggap bahawa memori tidak sejajar
rujukan dikendalikan oleh sistem.

-boleh dipindahkan
-mno-boleh dipindahkan
Hasilkan kod yang membenarkan (tidak membenarkan) boleh laku statik dipindahkan ke a
alamat yang berbeza pada masa berjalan. Pemuat sistem PowerPC tertanam mudah sepatutnya
letakkan semula keseluruhan kandungan ".got2" dan lokasi 4-bait yang disenaraikan dalam ".fixup"
bahagian, jadual alamat 32-bit yang dijana oleh pilihan ini. Untuk ini berfungsi, semua
objek yang dihubungkan bersama mesti disusun dengan -boleh dipindahkan or -mrelocatable-lib.
-boleh dipindahkan kod menjajarkan tindanan kepada sempadan 8-bait.

-mrelocatable-lib
-mno-relocatable-lib
suka -boleh dipindahkan, -mrelocatable-lib menjana bahagian ".fixup" untuk membenarkan statik
boleh laku untuk dipindahkan pada masa berjalan, tetapi -mrelocatable-lib tidak menggunakan
penjajaran tindanan yang lebih kecil daripada -boleh dipindahkan. Objek disusun dengan -mrelocatable-lib mungkin
dipautkan dengan objek yang disusun dengan mana-mana gabungan -boleh dipindahkan pilihan.

-mno-toc
-mtoc
Pada Sistem V.4 dan sistem PowerPC terbenam jangan (buat) menganggap bahawa daftar 2 mengandungi
penunjuk ke kawasan global yang menunjuk ke alamat yang digunakan dalam program.

-sedikit
-kecil-endian
Pada Sistem V.4 dan sistem PowerPC terbenam menyusun kod untuk pemproses dalam sedikit-
mod endian. The -kecil-endian pilihan adalah sama seperti -sedikit.

-besar
-besar-endian
Pada Sistem V.4 dan sistem PowerPC terbenam menyusun kod untuk pemproses dalam
mod endian. The -besar-endian pilihan adalah sama seperti -besar.

-mdynamic-no-pic
Pada sistem Darwin dan Mac OS X, susun kod supaya ia tidak boleh dipindahkan, tetapi itu
rujukan luarannya boleh dipindahkan. Kod yang terhasil sesuai untuk
aplikasi, tetapi bukan perpustakaan kongsi.

-msingle-pic-base
Anggap daftar yang digunakan untuk pengalamatan PIC sebagai baca sahaja, bukannya memuatkannya dalam
prolog untuk setiap fungsi. Sistem runtime bertanggungjawab untuk memulakan ini
mendaftar dengan nilai yang sesuai sebelum pelaksanaan bermula.

-utamakan-terhad-inns=keutamaan
Pilihan ini mengawal keutamaan yang diberikan kepada dihadkan slot penghantaran
arahan semasa pas penjadualan kedua. Hujahnya keutamaan mengambil nilai
0, 1, Atau 2 untuk memberikan keutamaan tidak, tertinggi atau kedua tertinggi (masing-masing) kepada
arahan terhad slot penghantaran.

-msched-costly-dep=jenis_pergantungan
Pilihan ini mengawal pergantungan yang dianggap mahal oleh sasaran semasa
penjadualan arahan. Hujahnya jenis_pergantungan mengambil salah satu daripada yang berikut
nilai:

tidak Tiada pergantungan yang mahal.

semua Semua pergantungan adalah mahal.

true_store_to_load
Pergantungan sebenar dari kedai ke memuatkan adalah mahal.

store_to_load
Sebarang pergantungan dari kedai untuk memuatkan adalah mahal.

nombor
Sebarang pergantungan yang kependamannya lebih besar daripada atau sama nombor adalah mahal.

-minsert-sched-nops=skim
Pilihan ini mengawal skema sisipan NOP yang digunakan semasa penjadualan kedua
lulus. Hujahnya skim mengambil salah satu daripada nilai berikut:

tidak Jangan masukkan NOP.

pad Pad dengan NOP mana-mana kumpulan penghantaran yang mempunyai slot keluaran kosong, menurut
kumpulan penjadual.

kumpulan semula_tepat
Masukkan NOP untuk memaksa ins yang bergantung kepada kos ke dalam kumpulan yang berasingan. Masukkan betul-betul
seberapa banyak NOP yang diperlukan untuk memaksa insn ke kumpulan baharu, mengikut anggaran
kumpulan pemproses.

nombor
Masukkan NOP untuk memaksa ins yang bergantung kepada kos ke dalam kumpulan yang berasingan. Sisipkan nombor
NOP untuk memaksa insn ke kumpulan baharu.

-mcall-sysv
Pada Sistem V.4 dan sistem PowerPC terbenam menyusun kod menggunakan konvensyen panggilan itu
mematuhi draf Mac 1995 Antara Muka Binari Aplikasi Sistem V, PowerPC
suplemen pemproses. Ini adalah lalai melainkan anda mengkonfigurasi GCC menggunakan
powerpc-*-eabiaix.

-mcall-sysv-eabi
-mcall-eabi
Nyatakan kedua-duanya -mcall-sysv dan -meabi pilihan.

-mcall-sysv-noeabi
Nyatakan kedua-duanya -mcall-sysv dan -mno-eabi pilihan.

-mcall-aixdesc
Pada Sistem V.4 dan sistem PowerPC terbenam menyusun kod untuk sistem pengendalian AIX.

-mcall-linux
Pada Sistem V.4 dan sistem PowerPC terbenam menyusun kod untuk GNU berasaskan Linux
sistem.

-mcall-freebsd
Pada Sistem V.4 dan sistem PowerPC terbenam menyusun kod untuk pengendalian FreeBSD
sistem.

-mcall-netbsd
Pada Sistem V.4 dan sistem PowerPC terbenam menyusun kod untuk operasi NetBSD
sistem.

-mcall-openbsd
Pada Sistem V.4 dan sistem PowerPC terbenam menyusun kod untuk operasi OpenBSD
sistem.

-maix-struct-return
Kembalikan semua struktur dalam ingatan (seperti yang ditentukan oleh AIX ABI).

-msvr4-struct-return
Kembalikan struktur yang lebih kecil daripada 8 bait dalam daftar (seperti yang ditentukan oleh SVR4 ABI).

-mabi=jenis abi
Panjangkan ABI semasa dengan sambungan tertentu atau alih keluar sambungan sedemikian. sah
nilai adalah altivec, tiada-altivec, spe, tiada-spe, ibmlongdouble, ieeelongdouble, elfv1,
elfv2.

-mabi=spe
Panjangkan ABI semasa dengan sambungan SPE ABI. Ini tidak mengubah ABI lalai,
sebaliknya ia menambahkan sambungan SPE ABI pada ABI semasa.

-mabi=tiada-spe
Lumpuhkan sambungan Book-E SPE ABI untuk ABI semasa.

-mabi=ibmlongdouble
Tukar ABI semasa untuk menggunakan berganda panjang berketepatan lanjutan IBM. Ini ialah PowerPC
Pilihan SYSV ABI 32-bit.

-mabi=ieeelongdouble
Tukar ABI semasa untuk menggunakan IEEE extended-precision long double. Ini ialah PowerPC
Pilihan ABI Linux 32-bit.

-mabi=elfv1
Tukar ABI semasa untuk menggunakan ELFv1 ABI. Ini ialah ABI lalai untuk big-endian
PowerPC Linux 64-bit. Mengatasi ABI lalai memerlukan sokongan sistem khas dan
berkemungkinan gagal dengan cara yang menakjubkan.

-mabi=elfv2
Tukar ABI semasa untuk menggunakan ELFv2 ABI. Ini ialah ABI lalai untuk little-
endian PowerPC Linux 64-bit. Mengatasi ABI lalai memerlukan sistem khas
sokongan dan berkemungkinan gagal dengan cara yang menakjubkan.

-prototaip
-mno-prototaip
Pada Sistem V.4 dan sistem PowerPC terbenam menganggap bahawa semua panggilan kepada hujah berubah-ubah
fungsi dibuat prototaip dengan betul. Jika tidak, pengkompil mesti memasukkan arahan
sebelum setiap panggilan bukan prototaip untuk menetapkan atau mengosongkan bit 6 daftar kod syarat
("CR") untuk menunjukkan sama ada nilai titik terapung diluluskan dalam titik terapung
mendaftar sekiranya fungsi mengambil hujah berubah-ubah. Dengan -prototaip, hanya panggilan
kepada prototaip fungsi hujah pembolehubah yang ditetapkan atau kosongkan bit.

-msim
Pada sistem PowerPC terbenam, anggap bahawa modul permulaan dipanggil sim-crt0.o dan
bahawa perpustakaan C standard adalah libsim.a dan libc.a. Ini adalah lalai untuk
powerpc-*-eabisim konfigurasi.

-mmvme
Pada sistem PowerPC terbenam, anggap bahawa modul permulaan dipanggil crt0.o dan juga
perpustakaan standard C ialah libmvme.a dan libc.a.

-gila
Pada sistem PowerPC terbenam, anggap bahawa modul permulaan dipanggil crt0.o dan juga
perpustakaan standard C ialah libads.a dan libc.a.

-pisau myellow
Pada sistem PowerPC terbenam, anggap bahawa modul permulaan dipanggil crt0.o dan juga
perpustakaan standard C ialah libyk.a dan libc.a.

-mvxworks
Pada Sistem V.4 dan sistem PowerPC terbenam, nyatakan bahawa anda sedang menyusun untuk a
sistem VxWorks.

-memb
Pada sistem PowerPC terbenam, tetapkan bit "PPC_EMB" dalam pengepala bendera ELF untuk menunjukkan
Bahawa eabi pemindahan lanjutan digunakan.

-meabi
-mno-eabi
Pada Sistem V.4 dan sistem PowerPC terbenam (tidak) mematuhi Embedded
Antara Muka Binari Aplikasi (EABI), iaitu satu set pengubahsuaian kepada Sistem
spesifikasi V.4. Memilih -meabi bermakna tindanan itu diselaraskan dengan 8-bait
sempadan, fungsi "__eabi" dipanggil daripada "utama" untuk menyediakan persekitaran EABI,
dan juga -msdata pilihan boleh menggunakan kedua-dua "r2" dan "r13" untuk menunjuk kepada dua data kecil yang berasingan
kawasan-kawasan. Memilih -mno-eabi bermakna tindanan itu dijajarkan dengan sempadan 16 bait, tidak
Fungsi permulaan EABI dipanggil daripada "utama", dan -msdata pilihan hanya menggunakan
"r13" untuk menunjuk ke satu kawasan data kecil. The -meabi pilihan dihidupkan secara lalai jika anda
mengkonfigurasi GCC menggunakan salah satu daripada powerpc*-*-eabi* pilihan.

-msdata=eabi
Pada Sistem V.4 dan sistem PowerPC terbenam, letakkan "const" yang dimulakan kecil secara global dan
data statik dalam bahagian ".sdata2", yang ditunjukkan oleh daftar "r2". Letakkan kecil
data global dan statik bukan "const" yang dimulakan dalam bahagian ".sdata", iaitu
ditunjukkan oleh daftar "r13". Letakkan data global dan statik kecil yang tidak dimulakan dalam
Bahagian ".sbss", yang bersebelahan dengan bahagian ".sdata". The -msdata=eabi pilihan
tidak serasi dengan -boleh dipindahkan pilihan. The -msdata=eabi pilihan juga menetapkan
-memb pilihan.

-msdata=sysv
Pada Sistem V.4 dan sistem PowerPC terbenam, letakkan data global dan statik yang kecil dalam
Bahagian ".sdata", yang ditunjuk oleh daftar "r13". Letakkan kecil yang tidak dimulakan
data global dan statik dalam bahagian ".sbss", yang bersebelahan dengan ".sdata"
bahagian. The -msdata=sysv pilihan tidak serasi dengan -boleh dipindahkan pilihan.

-msdata=default
-msdata
Pada Sistem V.4 dan sistem PowerPC terbenam, jika -meabi digunakan, susun kod yang sama
as -msdata=eabi, jika tidak, susun kod yang sama seperti -msdata=sysv.

-msdata=data
Pada Sistem V.4 dan sistem PowerPC terbenam, letakkan data global yang kecil dalam ".sdata"
bahagian. Letakkan data global kecil yang tidak dimulakan dalam bahagian ".sbss". Jangan guna
daftar "r13" untuk menangani data kecil walau bagaimanapun. Ini ialah tingkah laku lalai melainkan
lain -msdata pilihan digunakan.

-msdata=tiada
-mno-sdata
Pada sistem PowerPC terbenam, letakkan semua data global dan statik yang dimulakan dalam ".data"
bahagian dan semua data yang tidak dimulakan dalam bahagian ".bss".

-mblock-move-inline-limit=num
Sebaris semua pergerakan blok (seperti panggilan ke "memcpy" atau salinan struktur) kurang daripada atau
sama dengan num bait. Nilai minimum untuk num ialah 32 bait pada sasaran 32-bit dan 64
bait pada sasaran 64-bit. Nilai lalai adalah khusus sasaran.

-G num
Pada sistem PowerPC terbenam, letakkan item global dan statik kurang daripada atau sama dengan num
bait ke dalam data kecil atau bahagian BSS dan bukannya data biasa atau bahagian BSS.
Secara lalai, num ialah 8. The -G num suis juga dihantar ke pemaut. Semua modul
harus disusun dengan yang sama -G num nilai.

-nama nama
-mno-nama semula
Pada Sistem V.4 dan sistem PowerPC terbenam (jangan) mengeluarkan nama daftar dalam
hasil bahasa himpunan menggunakan bentuk simbolik.

-mlongcall
-mno-longcall
Secara lalai menganggap bahawa semua panggilan adalah jauh supaya lebih lama dan lebih mahal
urutan panggilan diperlukan. Ini diperlukan untuk panggilan yang lebih jauh daripada 32 megabait
(33,554,432 bait) daripada lokasi semasa. Panggilan pendek dijana jika
pengkompil tahu panggilan tidak boleh sejauh itu. Tetapan ini boleh ditindih oleh
atribut fungsi "panggilan pendek", atau oleh "#pragma panggilan panjang(0) ".

Sesetengah pemaut mampu mengesan panggilan di luar julat dan menjana kod gam
lalat itu. Pada sistem ini, panggilan panjang tidak diperlukan dan menjana kod yang lebih perlahan. Sebagai
daripada penulisan ini, pemaut AIX boleh melakukan ini, begitu juga dengan pemaut GNU untuk PowerPC/64. Ia
merancang untuk menambah ciri ini pada pemaut GNU untuk sistem PowerPC 32-bit juga.

Pada sistem Darwin/PPC, "#pragma longcall" menjana "jbsr callee, L42", ditambah dengan cawangan
pulau (kod gam). Dua alamat sasaran mewakili penerima dan cawangan
pulau. Penyambung Darwin/PPC memilih alamat pertama dan menghasilkan "bl callee"
jika arahan "bl" PPC sampai kepada penerima secara langsung; jika tidak, penghubung
menjana "bl L42" untuk memanggil pulau cawangan. Pulau cawangan dilampirkan kepada
badan fungsi panggilan; ia mengira alamat penuh 32-bit penerima dan
melompat kepadanya.

Pada sistem Mach-O (Darwin), pilihan ini mengarahkan pemancar pengkompil ke gam untuk
setiap panggilan terus, dan pemaut Darwin memutuskan sama ada untuk menggunakan atau membuangnya.

Pada masa hadapan, GCC mungkin mengabaikan semua spesifikasi panggilan panjang apabila pemaut diketahui
menjana gam.

-mtls-penanda
-mno-tls-penanda
Tandai (jangan tanda) panggilan ke "__tls_get_addr" dengan penempatan semula yang menentukan fungsi
hujah. Penempatan semula membolehkan pemaut mengaitkan panggilan fungsi dengan pasti
arahan persediaan argumen untuk pengoptimuman TLS, yang seterusnya membolehkan GCC menjadi lebih baik
jadualkan urutan.

-pthread
Menambah sokongan untuk multithreading dengan pthreads perpustakaan. Pilihan ini menetapkan bendera untuk
kedua-dua prapemproses dan penghubung.

-mrecip
-mno-resipi
Pilihan ini membolehkan penggunaan anggaran timbal balik dan anggaran punca kuasa dua timbal balik
arahan dengan langkah Newton-Raphson tambahan untuk meningkatkan ketepatan dan bukannya
melakukan pembahagian atau punca kuasa dua dan bahagi untuk hujah titik terapung. Anda harus menggunakan
yang -fast-matematik pilihan apabila menggunakan -mrecip (atau sekurang-kurangnya -funsafe-math-optimizations,
-finite-matematik sahaja, -freciprocal-matematik dan -fno-perangkap-matematik). Perhatikan bahawa semasa
daya tampung jujukan biasanya lebih tinggi daripada daya tampung bukan
arahan timbal balik, ketepatan urutan boleh dikurangkan sehingga 2 ulp
(iaitu songsangan 1.0 bersamaan dengan 0.99999994) untuk punca kuasa dua salingan.

-mrecip=pilih
Pilihan ini mengawal arahan anggaran timbal balik yang boleh digunakan. pilih ialah
senarai pilihan yang dipisahkan koma, yang mungkin didahului dengan "!" untuk menyongsangkan pilihan:

semua Dayakan semua arahan anggaran.

lalai
Dayakan arahan lalai, bersamaan dengan -mrecip.

tiada
Lumpuhkan semua arahan anggaran, bersamaan dengan -mno-resipi.

div Dayakan arahan anggaran timbal balik untuk kedua-dua tunggal dan berganda
ketepatan.

divf
Dayakan arahan penghampiran timbal balik ketepatan tunggal.

divd
Dayakan arahan penghampiran timbal balik ketepatan dua.

rsqrt
Dayakan arahan penghampiran punca kuasa dua salingan untuk kedua-dua tunggal dan
ketepatan berganda.

rsqrtf
Dayakan arahan penghampiran punca kuasa dua salingan ketepatan tunggal.

rsqrtd
Dayakan arahan penghampiran punca kuasa dua kepersisan ganda.

Jadi, sebagai contoh, -mrecip=semua,!rsqrtd membolehkan semua anggaran timbal balik
arahan, kecuali untuk arahan "FRSQRTE", "XSRSQRTEDP" dan "XVRSQRTEDP"
yang mengendalikan pengiraan punca kuasa dua salingan berketepatan ganda.

-mrecip-precision
-mno-resip-ketepatan
Andaikan (jangan anggap) bahawa arahan anggaran timbal balik menyediakan lebih tinggi-
anggaran ketepatan daripada yang dimandatkan oleh PowerPC ABI. Memilih -mcpu=kuasa6,
-mcpu=kuasa7 or -mcpu=kuasa8 secara automatik memilih -mrecip-precision. yang berganda-
arahan anggaran punca kuasa dua ketepatan tidak dijana secara lalai pada
mesin ketepatan, kerana ia tidak memberikan anggaran yang menumpu selepas tiga
langkah-langkah.

-mveclibabi=jenis
Menentukan jenis ABI untuk digunakan untuk menvelokkan intrinsik menggunakan perpustakaan luaran.
Satu-satunya jenis yang disokong pada masa ini ialah besar-besaran, yang menentukan untuk menggunakan Matematik IBM
Pustaka Subsistem Pecutan (MASS) untuk menvelokkan intrinsik menggunakan luaran
perpustakaan. GCC pada masa ini mengeluarkan panggilan ke "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", "tanhd2", dan
"tanhf4" apabila menjana kod untuk power7. Kedua-duanya -free-vectorize dan
-funsafe-math-optimizations mesti juga didayakan. Perpustakaan MASS mestilah
ditentukan pada masa pautan.

-mfriz
-mno-friz
Hasilkan (jangan jana) arahan "friz" apabila -funsafe-math-optimizations
pilihan digunakan untuk mengoptimumkan pembundaran nilai titik terapung kepada integer 64-bit dan
kembali ke titik terapung. Arahan "friz" tidak mengembalikan nilai yang sama jika
nombor titik terapung terlalu besar untuk dimuatkan dalam integer.

-penunjuk-ke-fungsi-bersarang
-mno-penunjuk-ke-fungsi-bersarang
Hasilkan (jangan jana) kod untuk memuatkan daftar rantai statik ("r11") apabila
memanggil melalui penuding pada sistem AIX dan Linux 64-bit di mana penunjuk fungsi
menunjuk kepada deskriptor 3 perkataan yang memberikan alamat fungsi, nilai TOC untuk dimuatkan
daftar "r2", dan nilai rantai statik untuk dimuatkan dalam daftar "r11". The
-penunjuk-ke-fungsi-bersarang dihidupkan secara lalai. Anda tidak boleh memanggil melalui penunjuk ke
fungsi bersarang atau penunjuk kepada fungsi yang disusun dalam bahasa lain yang menggunakan
rantai statik jika anda menggunakan -mno-penunjuk-ke-fungsi-bersarang.

-msave-toc-indirect
-mno-save-toc-indirect
Hasilkan (jangan jana) kod untuk menyimpan nilai TOC di lokasi tindanan yang dikhaskan
dalam prolog fungsi jika fungsi memanggil melalui penunjuk pada AIX dan 64-bit
sistem Linux. Jika nilai TOC tidak disimpan dalam prolog, ia disimpan sebelum ini
panggilan melalui penunjuk. The -mno-save-toc-indirect pilihan ialah lalai.

-mcompat-align-parm
-mno-compat-align-parm
Hasilkan (jangan jana) kod untuk lulus parameter struktur dengan penjajaran maksimum
daripada 64 bit, untuk keserasian dengan versi lama GCC.

Versi lama GCC (sebelum 4.9.0) tidak menjajarkan parameter struktur dengan betul
pada sempadan 128-bit apabila struktur itu mengandungi ahli yang memerlukan 128-bit
penjajaran. Ini diperbetulkan dalam versi GCC yang lebih terkini. Pilihan ini boleh digunakan
untuk menjana kod yang serasi dengan fungsi yang disusun dengan versi lama
GCC.

. -mno-compat-align-parm pilihan ialah lalai.

RX Pilihan

Pilihan baris arahan ini ditakrifkan untuk sasaran RX:

-m64bit-ganda
-m32bit-ganda
Jadikan jenis data "double" menjadi 64 bit (-m64bit-ganda) atau 32 bit (-m32bit-ganda)
dalam saiz. Lalainya ialah -m32bit-ganda. Nota Perkakasan titik terapung RX hanya berfungsi
pada nilai 32-bit, itulah sebabnya lalai adalah -m32bit-ganda.

-fpu
-nofpu
Membolehkan (-fpu) atau melumpuhkan (-nofpu) penggunaan perkakasan titik terapung RX. The
lalai didayakan untuk siri RX600 dan dilumpuhkan untuk siri RX200.

Arahan titik terapung hanya dijana untuk nilai titik terapung 32-bit,
walau bagaimanapun, jadi perkakasan FPU tidak digunakan untuk beregu jika -m64bit-ganda pilihan adalah
terpakai.

Nota Jika -fpu pilihan didayakan kemudian -funsafe-math-optimizations juga didayakan
secara automatik. Ini kerana arahan RX FPU itu sendiri tidak selamat.

-mcpu=nama
Memilih jenis CPU RX untuk disasarkan. Pada masa ini tiga jenis disokong, iaitu
generik RX600 dan RX200 perkakasan siri dan khusus RX610 CPU. Lalainya ialah
RX600.

Satu-satunya perbezaan antara RX600 dan RX610 est que le RX610 tidak menyokong
Arahan "MVTIPL".

. RX200 siri tidak mempunyai unit titik terapung perkakasan dan sebagainya -nofpu didayakan
secara lalai apabila jenis ini dipilih.

-big-endian-data
-sedikit-endian-data
Simpan data (tetapi bukan kod) dalam format big-endian. Lalainya ialah
-sedikit-endian-data, iaitu untuk menyimpan data dalam format little-endian.

-msmall-data-limit=N
Menentukan saiz maksimum dalam bait pembolehubah global dan statik yang boleh diletakkan
ke dalam kawasan data kecil. Menggunakan kawasan data yang kecil boleh membawa kepada yang lebih kecil dan lebih pantas
kod, tetapi saiz kawasan adalah terhad dan terpulang kepada pengaturcara untuk memastikannya
kawasan itu tidak melimpah. Juga apabila kawasan data kecil digunakan salah satu daripada RX
registers (biasanya "r13") dikhaskan untuk kegunaan menunjuk ke kawasan ini, jadi tidak
lebih lama tersedia untuk digunakan oleh pengkompil. Ini boleh mengakibatkan lebih perlahan dan/atau lebih besar
kod jika pembolehubah ditolak ke tindanan dan bukannya dipegang dalam daftar ini.

Perhatikan, pembolehubah biasa (pembolehubah yang belum dimulakan) dan pemalar adalah
tidak diletakkan ke dalam kawasan data kecil kerana ia ditugaskan kepada bahagian lain dalam
keluaran boleh dilaksanakan.

Nilai lalai ialah sifar, yang melumpuhkan ciri ini. Perhatikan, ciri ini tidak
didayakan secara lalai dengan tahap pengoptimuman yang lebih tinggi (-O2 dll) kerana
kesan yang berpotensi memudaratkan tempahan daftar. Terpulang kepada pengaturcara
untuk mencuba dan mengetahui sama ada ciri ini memberi manfaat kepada program mereka. Lihat
penerangan tentang -mpid pilihan untuk penerangan tentang cara pendaftaran sebenar untuk
tahan penunjuk kawasan data kecil dipilih.

-msim
-mno-sim
Gunakan masa jalan simulator. Lalai ialah menggunakan masa jalan khusus papan libgloss.

-mas100-sintaks
-mno-as100-sintaks
Apabila menjana output pemasang gunakan sintaks yang serasi dengan AS100 Renesas
penghimpun. Sintaks ini juga boleh dikendalikan oleh penghimpun GAS, tetapi ia mempunyai beberapa
sekatan supaya ia tidak dijana secara lalai.

-mmax-saiz-malar=N
Menentukan saiz maksimum, dalam bait, pemalar yang boleh digunakan sebagai operan masuk
arahan RX. Walaupun set arahan RX membenarkan pemalar sehingga 4
bait panjang untuk digunakan dalam arahan, nilai yang lebih panjang bersamaan dengan lebih panjang
arahan. Oleh itu, dalam beberapa keadaan, ia boleh memberi manfaat untuk menyekat saiz
pemalar yang digunakan dalam arahan. Pemalar yang terlalu besar adalah sebaliknya
diletakkan ke dalam kolam malar dan dirujuk melalui arahan daftar.

Nilai N boleh antara 0 dan 4. Nilai 0 (lalai) atau 4 bermakna itu
pemalar dalam sebarang saiz dibenarkan.

-relax
Dayakan kelonggaran pemaut. Kelonggaran penghubung ialah satu proses di mana penghubung cuba
untuk mengurangkan saiz program dengan mencari versi yang lebih pendek daripada pelbagai arahan.
Dinyahaktifkan secara lalai.

-daftar-mint=N
Nyatakan bilangan daftar untuk ditempah bagi fungsi pengendali gangguan pantas. The
nilai N boleh antara 0 dan 4. Nilai 1 bermakna daftar "r13" dikhaskan
untuk kegunaan eksklusif pengendali gangguan pantas. Nilai 2 rizab "r13" dan
"r12". Nilai 3 rizab "r13", "r12" dan "r11", dan nilai 4 rizab "r13"
melalui "r10". Nilai 0, lalai, tidak menyimpan sebarang daftar.

-msave-acc-in-interrupts
Menentukan bahawa fungsi pengendali gangguan harus mengekalkan daftar penumpuk.
Ini hanya perlu jika kod biasa mungkin menggunakan daftar penumpuk, contohnya
kerana ia melakukan pendaraban 64-bit. Lalai adalah untuk mengabaikan penumpuk
kerana ini menjadikan pengendali gangguan lebih pantas.

-mpid
-mno-pid
Membolehkan penjanaan data bebas kedudukan. Apabila didayakan sebarang akses kepada
data tetap dilakukan melalui offset daripada alamat asas yang disimpan dalam daftar. ini
membolehkan lokasi data malar ditentukan pada masa berjalan tanpa memerlukan
boleh laku untuk dipindahkan, yang merupakan faedah kepada aplikasi terbenam dengan ketat
kekangan ingatan. Data yang boleh diubah suai tidak terjejas oleh pilihan ini.

Perhatikan, menggunakan ciri ini menyimpan daftar, biasanya "r13", untuk data tetap
alamat pangkalan. Ini boleh mengakibatkan kod yang lebih perlahan dan/atau lebih besar, terutamanya dalam kod yang rumit
fungsi.

Daftar sebenar yang dipilih untuk menyimpan alamat pangkalan data malar bergantung kepada sama ada
yang -msmall-data-had dan / atau -mint-daftar pilihan baris arahan didayakan.
Bermula dengan daftar "r13" dan meneruskan ke bawah, daftar diperuntukkan terlebih dahulu
untuk memenuhi keperluan -mint-daftar, Maka -mpid dan akhirnya
-msmall-data-had. Oleh itu adalah mungkin untuk daftar kawasan data kecil menjadi "r8"
jika kedua-duanya -daftar-mint=4 dan -mpid dinyatakan pada baris arahan.

Secara lalai ciri ini tidak didayakan. Lalai boleh dipulihkan melalui -mno-pid
pilihan baris arahan.

-mno-warn-multiple-fast-interrupts
-mwarn-berbilang-cepat-gangguan
Menghalang GCC daripada mengeluarkan mesej amaran jika ia mendapati lebih daripada satu gangguan pantas
pengendali apabila ia menyusun fail. Lalai adalah mengeluarkan amaran untuk setiap tambahan
pengendali gangguan pantas ditemui, kerana RX hanya menyokong satu gangguan tersebut.

Catatan: Pilihan baris arahan GCC generik -diikat-reg mempunyai kepentingan khusus kepada RX
port apabila digunakan dengan atribut fungsi "gangguan". Atribut ini menunjukkan a
fungsi yang bertujuan untuk memproses gangguan pantas. GCC memastikan bahawa ia hanya menggunakan daftar
"r10", "r11", "r12" dan/atau "r13" dan hanya dengan syarat penggunaan biasa
daftar yang sepadan telah dihadkan melalui -diikat-reg or -mint-daftar
pilihan baris arahan.

S / 390 dan zSeries Pilihan

Ini adalah -m pilihan yang ditentukan untuk seni bina S/390 dan zSeries.

-mhard-terapung
-msoft-float
Gunakan (jangan gunakan) arahan titik terapung perkakasan dan daftar untuk terapung-
operasi titik. Bila -msoft-float ditentukan, berfungsi dalam libgcc.a Digunakan untuk
melakukan operasi titik terapung. Bila -mhard-terapung ditentukan, pengkompil
menjana arahan titik terapung IEEE. Ini adalah lalai.

-mhard-dfp
-mno-hard-dfp
Gunakan (jangan gunakan) arahan titik terapung perpuluhan perkakasan untuk perpuluhan-
operasi titik terapung. Bila -mno-hard-dfp ditentukan, berfungsi dalam libgcc.a adalah
digunakan untuk melakukan operasi titik terapung perpuluhan. Bila -mhard-dfp dinyatakan, iaitu
pengkompil menjana arahan perkakasan titik terapung perpuluhan. Ini adalah lalai
untuk -march=z9-ec atau lebih tinggi.

-mlong-double-64
-mlong-double-128
Suis ini mengawal saiz jenis "ganda panjang". Saiz 64 bit menjadikan
jenis "double panjang" bersamaan dengan jenis "double". Ini adalah lalai.

-rantai belakang
-mno-rantai belakang
Simpan (jangan simpan) alamat bingkai pemanggil sebagai penuding rantai belakang ke dalam
bingkai timbunan callee. Rantai belakang mungkin diperlukan untuk membenarkan penyahpepijatan menggunakan alatan yang
tidak memahami maklumat rangka panggilan DWARF 2. Bila -mno-packed-stack dalam
kesan, penuding rantai belakang disimpan di bahagian bawah bingkai tindanan; bila
-tumpukan-berbungkus berkuat kuasa, rantai belakang diletakkan pada perkataan paling atas
96/160 bait daftar simpan kawasan.

Secara umum, kod disusun dengan -rantai belakang adalah serasi panggilan dengan kod yang disusun dengan
-mmo-rantai belakang; walau bagaimanapun, penggunaan rantai belakang untuk tujuan penyahpepijatan biasanya memerlukan
bahawa binari keseluruhan dibina dengan -rantai belakang. Perhatikan bahawa gabungan
-rantai belakang, -tumpukan-berbungkus dan -mhard-terapung tidak disokong. Untuk membina a
penggunaan kernel linux -msoft-float.

Perkara lalai adalah untuk tidak mengekalkan rantai belakang.

-tumpukan-berbungkus
-mno-packed-stack
Gunakan (jangan gunakan) susun atur tindanan yang dibungkus. Bila -mno-packed-stack dinyatakan, iaitu
pengkompil menggunakan semua medan kawasan simpan daftar 96/160 bait sahaja untuk mereka
tujuan lalai; medan yang tidak digunakan masih menggunakan ruang tindanan. Bila -tumpukan-berbungkus is
dinyatakan, slot simpan daftar padat padat di bahagian atas simpanan daftar
kawasan; ruang yang tidak digunakan digunakan semula untuk tujuan lain, membolehkan penggunaan yang lebih cekap
ruang timbunan yang tersedia. Namun, apabila -rantai belakang juga berkuat kuasa, paling atas
perkataan kawasan simpan sentiasa digunakan untuk menyimpan rantai belakang, dan alamat pemulangan
daftar sentiasa disimpan dua perkataan di bawah rantai belakang.

Selagi rantai belakang bingkai tindanan tidak digunakan, kod dijana dengan -tumpukan-berbungkus
adalah serasi panggilan dengan kod yang dihasilkan dengan -mno-packed-stack. Ambil perhatian bahawa sesetengah bukan FSF
keluaran GCC 2.95 untuk kod terjana S/390 atau zSeries yang menggunakan bingkai tindanan
rantai belakang pada masa berjalan, bukan hanya untuk tujuan penyahpepijatan. Kod sedemikian bukan panggilan-
serasi dengan kod yang disusun dengan -tumpukan-berbungkus. Juga, ambil perhatian bahawa gabungan
-rantai belakang, -tumpukan-berbungkus dan -mhard-terapung tidak disokong. Untuk membina a
penggunaan kernel linux -msoft-float.

Lalai adalah untuk tidak menggunakan susun atur tindanan yang dibungkus.

-msmall-exec
-mno-small-exec
Hasilkan (atau jangan jana) kod menggunakan arahan "bras" untuk melakukan subrutin
panggilan. Ini hanya berfungsi dengan pasti jika jumlah saiz boleh laku tidak melebihi 64k.
Lalainya ialah menggunakan arahan "basr" sebaliknya, yang tidak mempunyai ini
had.

-m64
-m31
Bila -m31 ditentukan, jana kod yang mematuhi GNU/Linux untuk S/390 ABI. Bila
-m64 ditentukan, jana kod yang mematuhi GNU/Linux untuk zSeries ABI. ini
membolehkan GCC khususnya menjana arahan 64-bit. Untuk s390 sasaran, yang
lalai adalah -m31, Sementara s390x sasaran lalai kepada -m64.

-mzarch
-mesa
Bila -mzarch ditentukan, jana kod menggunakan arahan yang tersedia pada
z/Seni bina. Bila -mesa ditentukan, hasilkan kod menggunakan arahan
tersedia di ESA/390. Perhatikan bahawa -mesa tidak mungkin dengan -m64. Apabila menjana
kod mematuhi GNU/Linux untuk S/390 ABI, lalainya ialah -mesa. Apabila menjana
kod yang mematuhi GNU/Linux untuk zSeries ABI, lalainya ialah -mzarch.

-mmvcle
-mno-mvcle
Hasilkan (atau jangan jana) kod menggunakan arahan "mvcle" untuk melaksanakan blok
bergerak. Bila -mno-mvcle ditentukan, sebaliknya gunakan gelung "mvc". Ini adalah lalai
melainkan mengoptimumkan saiz.

-mdebug
-mno-debug
Cetak (atau jangan cetak) maklumat nyahpepijat tambahan semasa menyusun. Lalainya ialah
untuk tidak mencetak maklumat nyahpepijat.

-march=jenis cpu
Hasilkan kod yang berjalan jenis cpu, iaitu nama sistem yang mewakili a
jenis pemproses tertentu. Nilai yang mungkin untuk jenis cpu adalah g5, g6, z900, z990, z9-109,
z9-ec, z10, z196, zEC12, dan z13. Apabila menjana kod menggunakan arahan
tersedia pada z/Architecture, lalainya ialah -march=z900. Jika tidak, lalainya ialah
-mac=g5.

-mtune=jenis cpu
Tune ke jenis cpu semua yang berkenaan tentang kod yang dijana, kecuali untuk ABI
dan set arahan yang tersedia. senarai jenis cpu nilai adalah sama seperti untuk
-berbaris. Lalai ialah nilai yang digunakan untuk -berbaris.

-mtpf-jejak
-mno-tpf-trace
Hasilkan kod yang menambah (tidak menambah) dalam cawangan khusus OS TPF untuk mengesan rutin
dalam sistem pengendalian. Pilihan ini dimatikan secara lalai, walaupun semasa menyusun untuk
OS TPF.

-mfused-gila
-mno-fused-madd
Hasilkan kod yang menggunakan (tidak menggunakan) titik terapung darab dan terkumpul
arahan. Arahan ini dijana secara lalai jika titik terapung perkakasan
digunakan.

-mwarn-framesize=saiz bingkai
Pancarkan amaran jika fungsi semasa melebihi saiz bingkai yang diberikan. Kerana ini adalah
semakan masa kompilasi ia tidak perlu menjadi masalah sebenar apabila program berjalan. Ia
bertujuan untuk mengenal pasti fungsi yang kemungkinan besar menyebabkan limpahan tindanan. Ia adalah
berguna untuk digunakan dalam persekitaran dengan saiz tindanan terhad contohnya kernel linux.

-mwarn-dynamicstack
Pancarkan amaran jika fungsi memanggil "alloca" atau menggunakan tatasusunan bersaiz dinamik. ini
umumnya merupakan idea yang tidak baik dengan saiz tindanan yang terhad.

-mstack-guard=stack-guard
-saiz-mstack=saiz timbunan
Jika pilihan ini disediakan bahagian belakang S/390 mengeluarkan arahan tambahan dalam
prolog fungsi yang mencetuskan perangkap jika saiz tindanan adalah stack-guard bait di atas
saiz timbunan (ingat bahawa timbunan pada S/390 tumbuh ke bawah). Sekiranya stack-guard
pilihan ditinggalkan kuasa terkecil 2 lebih besar daripada saiz bingkai yang disusun
fungsi dipilih. Pilihan ini bertujuan untuk digunakan untuk membantu menyahpepijat tindanan
masalah limpahan. Kod tambahan yang dipancarkan menyebabkan hanya sedikit overhed dan
oleh itu juga boleh digunakan dalam sistem seperti pengeluaran tanpa prestasi yang lebih baik
kemerosotan. Nilai yang diberikan mestilah kuasa tepat 2 dan saiz timbunan mesti ada
lebih besar daripada stack-guard tanpa melebihi 64k. Untuk menjadi cekap tambahan
kod membuat andaian bahawa timbunan bermula pada alamat yang sejajar dengan nilai
diberikan oleh saiz timbunan. Yang stack-guard pilihan hanya boleh digunakan bersama dengan
saiz timbunan.

-mhotpatch=pra-separuh perkataan,post-halfwords
Jika pilihan hotpatch didayakan, prolog fungsi "hot-patching" dijana untuk
semua fungsi dalam unit kompilasi. Label fungsi disertakan dengan yang diberikan
bilangan arahan NOP dua bait (pra-separuh perkataan, maksimum 1000000). Selepas
label, 2 * post-halfwords bait dilampirkan, menggunakan arahan seperti NOP terbesar
seni bina membenarkan (maksimum 1000000).

Jika kedua-dua hujah adalah sifar, hotpatching dilumpuhkan.

Pilihan ini boleh ditindih untuk fungsi individu dengan atribut "hotpatch".

Skor Pilihan

Pilihan ini ditakrifkan untuk pelaksanaan Skor:

-meb
Susun kod untuk mod big-endian. Ini adalah lalai.

-mel
Susun kod untuk mod little-endian.

-mnhwloop
Lumpuhkan penjanaan arahan "bcnz".

-muls
Dayakan penjanaan beban tidak sejajar dan arahan simpan.

-mmac
Dayakan penggunaan arahan darab-akumulasi. Dilumpuhkan secara lalai.

-mscore5
Tentukan SCORE5 sebagai seni bina sasaran.

-mscore5u
Tentukan SCORE5U seni bina sasaran.

-mscore7
Tentukan SCORE7 sebagai seni bina sasaran. Ini adalah lalai.

-mscore7d
Tentukan SCORE7D sebagai seni bina sasaran.

SH Pilihan

Ini -m pilihan ditakrifkan untuk pelaksanaan SH:

-m1 Hasilkan kod untuk SH1.

-m2 Hasilkan kod untuk SH2.

-m2e
Hasilkan kod untuk SH2e.

-m2a-nofpu
Hasilkan kod untuk SH2a tanpa FPU, atau untuk SH2a-FPU dengan cara yang
unit titik terapung tidak digunakan.

-m2a-bujang-sahaja
Hasilkan kod untuk SH2a-FPU, dengan cara yang tiada titik terapung berketepatan ganda
operasi digunakan.

-m2a-tunggal
Hasilkan kod untuk SH2a-FPU dengan mengandaikan unit titik terapung berada dalam ketepatan tunggal
mod secara lalai.

-m2a
Hasilkan kod untuk SH2a-FPU dengan mengandaikan unit titik terapung berada dalam ketepatan dua kali
mod secara lalai.

-m3 Hasilkan kod untuk SH3.

-m3e
Hasilkan kod untuk SH3e.

-m4-nofpu
Hasilkan kod untuk SH4 tanpa unit titik terapung.

-m4-tunggal-sahaja
Hasilkan kod untuk SH4 dengan unit titik terapung yang hanya menyokong satu-
aritmetik ketepatan.

-m4-tunggal
Hasilkan kod untuk SH4 dengan mengandaikan unit titik terapung berada dalam mod ketepatan tunggal
secara lalai.

-m4 Hasilkan kod untuk SH4.

-m4-100
Hasilkan kod untuk SH4-100.

-m4-100-nofpu
Hasilkan kod untuk SH4-100 sedemikian rupa sehingga unit titik terapung tidak digunakan.

-m4-100-tunggal
Hasilkan kod untuk SH4-100 dengan mengandaikan unit titik terapung berada dalam mod ketepatan tunggal
secara lalai.

-m4-100-bujang-sahaja
Hasilkan kod untuk SH4-100 sedemikian rupa sehingga tiada titik terapung berketepatan ganda
operasi digunakan.

-m4-200
Hasilkan kod untuk SH4-200.

-m4-200-nofpu
Hasilkan kod untuk SH4-200 tanpa sedemikian rupa sehingga unit titik terapung tidak
terpakai.

-m4-200-tunggal
Hasilkan kod untuk SH4-200 dengan mengandaikan unit titik terapung berada dalam mod ketepatan tunggal
secara lalai.

-m4-200-bujang-sahaja
Hasilkan kod untuk SH4-200 sedemikian rupa sehingga tiada titik terapung berketepatan ganda
operasi digunakan.

-m4-300
Hasilkan kod untuk SH4-300.

-m4-300-nofpu
Hasilkan kod untuk SH4-300 tanpa sedemikian rupa sehingga unit titik terapung tidak
terpakai.

-m4-300-tunggal
Hasilkan kod untuk SH4-300 sedemikian rupa sehingga tiada titik terapung berketepatan ganda
operasi digunakan.

-m4-300-bujang-sahaja
Hasilkan kod untuk SH4-300 sedemikian rupa sehingga tiada titik terapung berketepatan ganda
operasi digunakan.

-m4-340
Hasilkan kod untuk SH4-340 (tiada MMU, tiada FPU).

-m4-500
Hasilkan kod untuk SH4-500 (tiada FPU). pas -isa=sh4-nofpu kepada penghimpun.

-m4a-nofpu
Hasilkan kod untuk SH4al-dsp, atau untuk SH4a sedemikian rupa sehingga titik terapung
unit tidak digunakan.

-m4a-bujang-sahaja
Hasilkan kod untuk SH4a, sedemikian rupa sehingga tiada titik terapung berketepatan ganda
operasi digunakan.

-m4a-tunggal
Hasilkan kod untuk SH4a dengan mengandaikan unit titik terapung berada dalam ketepatan tunggal
mod secara lalai.

-m4a
Hasilkan kod untuk SH4a.

-m4al
Sama seperti -m4a-nofpu, kecuali ia lulus secara tersirat -dsp kepada penghimpun. GCC
tidak menjana sebarang arahan DSP pada masa ini.

-m5-32media
Hasilkan kod 32-bit untuk SHmedia.

-m5-32media-nofpu
Hasilkan kod 32-bit untuk SHmedia sedemikian rupa sehingga unit titik terapung tidak
terpakai.

-m5-64media
Hasilkan kod 64-bit untuk SHmedia.

-m5-64media-nofpu
Hasilkan kod 64-bit untuk SHmedia sedemikian rupa sehingga unit titik terapung tidak
terpakai.

-m5-padat
Hasilkan kod untuk SHcompact.

-m5-compact-nofpu
Hasilkan kod untuk SHcompact sedemikian rupa sehingga unit titik terapung tidak digunakan.

-mb Susun kod untuk pemproses dalam mod big-endian.

-ml Susun kod untuk pemproses dalam mod little-endian.

-mdalign
Jajarkan dua kali ganda pada sempadan 64-bit. Ambil perhatian bahawa ini mengubah konvensyen panggilan,
dan oleh itu beberapa fungsi dari perpustakaan C standard tidak berfungsi melainkan anda menyusun semula
ia dahulu dengan -mdalign.

-relax
Pendekkan beberapa rujukan alamat pada masa pautan, apabila boleh; menggunakan pilihan pemaut
-berehat.

-boleh jadi besar
Gunakan offset 32-bit dalam jadual "suis". Lalai adalah menggunakan offset 16-bit.

-mbitops
Dayakan penggunaan arahan manipulasi bit pada SH2A.

-mfmovd
Dayakan penggunaan arahan "fmovd". Semak -mdalign untuk kekangan penjajaran.

-mrenesas
Mematuhi konvensyen panggilan yang ditakrifkan oleh Renesas.

-mno-renesas
Mematuhi konvensyen panggilan yang ditakrifkan untuk GCC sebelum konvensyen Renesas
telah tersedia. Pilihan ini ialah lalai untuk semua sasaran rantai alat SH.

-mnomacsave
Tandai daftar "MAC" sebagai call-clobbered, walaupun jika -mrenesas diberikan.

-meeee
-mno-ieee
Kawal pematuhan IEEE bagi perbandingan titik terapung, yang menjejaskan pengendalian
kes di mana keputusan perbandingan tidak tertib. Secara lalai -meeee is
didayakan secara tersirat. Jika -finite-matematik sahaja didayakan -mno-ieee ditetapkan secara tersirat,
yang menghasilkan lebih cepat floating-point perbandingan yang lebih besar-sama dan kurang-sama. The
tetapan implisit boleh ditindih dengan menentukan sama ada -meeee or -mno-ieee.

-minline-ic_invalidate
Kod sebaris untuk membatalkan entri cache arahan selepas menyediakan fungsi bersarang
trampolin. Pilihan ini tidak mempunyai kesan jika -musermode sedang berkuat kuasa dan yang dipilih
pilihan penjanaan kod (cth -m4) tidak membenarkan penggunaan arahan "icbi".
Jika pilihan penjanaan kod yang dipilih tidak membenarkan penggunaan "icbi"
arahan, dan -musermode tidak berkuat kuasa, kod sebaris memanipulasi
tatasusunan alamat cache arahan secara langsung dengan penulisan bersekutu. Ini bukan sahaja
memerlukan mod istimewa pada masa jalankan, tetapi ia juga gagal jika talian cache telah
dipetakan melalui TLB dan telah menjadi tidak dipetakan.

-misize
Buang saiz arahan dan lokasi dalam kod pemasangan.

-mpadstruct
Pilihan ini ditamatkan. Ia melapis struktur kepada berbilang 4 bait, iaitu
tidak serasi dengan SH ABI.

-model-matomik=model
Tetapkan model operasi atom dan parameter tambahan sebagai dipisahkan koma
senarai. Untuk butiran tentang fungsi terbina dalam atom lihat __atom terbina. Yang
model dan parameter berikut disokong:

tiada
Lumpuhkan jujukan atom terjana pengkompil dan keluarkan panggilan perpustakaan untuk atom
operasi. Ini adalah lalai jika sasarannya bukan "sh*-*-linux*".

lembut-gusa
Hasilkan urutan atom perisian gUSA yang serasi dengan GNU/Linux untuk atom terbina-
dalam fungsi. Urutan atom yang dihasilkan memerlukan sokongan tambahan daripada
kod pengendalian gangguan/pengecualian sistem dan hanya sesuai untuk SH3* dan
Sistem teras tunggal SH4*. Pilihan ini didayakan secara lalai apabila sasaran adalah
"sh*-*-linux*" dan SH3* atau SH4*. Apabila sasaran adalah SH4A, pilihan ini juga
sebahagiannya menggunakan arahan atom perkakasan "movli.l" dan "movco.l" untuk
cipta kod yang lebih cekap, melainkan ketat dinyatakan.

lembut-tcb
Hasilkan urutan atom perisian yang menggunakan pembolehubah dalam kawalan benang
blok. Ini ialah variasi jujukan gUSA yang juga boleh digunakan pada SH1*
dan sasaran SH2*. Urutan atom yang dihasilkan memerlukan sokongan tambahan daripada
kod pengendalian gangguan/pengecualian sistem dan hanya sesuai untuk
sistem teras tunggal. Apabila menggunakan model ini, gbr-offset= parameter mestilah
dinyatakan juga.

soft-mask
Hasilkan urutan atom perisian yang melumpuhkan gangguan buat sementara waktu dengan menetapkan
"SR.IMASK = 1111". Model ini hanya berfungsi apabila program berjalan dalam mod istimewa
dan hanya sesuai untuk sistem teras tunggal. Sokongan tambahan daripada
kod pengendalian gangguan/pengecualian sistem tidak diperlukan. Model ini adalah
didayakan secara lalai apabila sasaran ialah "sh*-*-linux*" dan SH1* atau SH2*.

keras-llcs
Hasilkan jujukan atom perkakasan menggunakan arahan "movli.l" dan "movco.l".
sahaja. Ini hanya tersedia pada SH4A dan sesuai untuk sistem berbilang teras.
Memandangkan arahan perkakasan hanya menyokong pembolehubah atom 32 bit akses kepada 8
atau pembolehubah 16 bit dicontohi dengan akses 32 bit. Kod disusun dengan ini
pilihan juga serasi dengan gangguan/pengecualian model atom perisian lain
sistem pengendalian jika dilaksanakan pada sistem SH4A. Sokongan tambahan daripada
kod pengendalian gangguan/pengecualian sistem tidak diperlukan untuk model ini.

gbr-offset=
Parameter ini menentukan offset dalam bait pembolehubah dalam kawalan benang
struktur blok yang harus digunakan oleh jujukan atom yang dihasilkan apabila
lembut-tcb model telah dipilih. Untuk model lain parameter ini diabaikan.
Nilai yang ditentukan mestilah gandaan integer bagi empat dan dalam julat 0-1020.

ketat
Parameter ini menghalang penggunaan bercampur berbilang model atom, walaupun ia berlaku
serasi, dan menjadikan pengkompil menjana urutan atom yang ditentukan
model sahaja.

-mtas
Hasilkan opcode "tas.b" untuk "__atomic_test_and_set". Perhatikan bahawa bergantung pada
konfigurasi perkakasan dan perisian tertentu ini boleh merendahkan prestasi keseluruhan
disebabkan oleh garisan cache operan yang disiramkan oleh arahan "tas.b". hidup
pemproses SH4A berbilang teras arahan "tas.b" mesti digunakan dengan berhati-hati kerana ia
boleh mengakibatkan kerosakan data untuk konfigurasi cache tertentu.

-prefergot
Apabila menjana kod bebas kedudukan, keluarkan panggilan fungsi menggunakan Global Offset
Jadual dan bukannya Jadual Hubungan Prosedur.

-musermode
-mno-usermode
Jangan benarkan (benarkan) pengkompil menjana kod mod istimewa. Menentukan
-musermode juga membayangkan -mno-inline-ic_invalidate jika kod sebaris tidak akan berfungsi
dalam mod pengguna. -musermode ialah lalai apabila sasaran ialah "sh*-*-linux*". Sekiranya
sasaran ialah SH1* atau SH2* -musermode tidak mempunyai kesan, kerana tiada mod pengguna.

-multcost=nombor
Tetapkan kos untuk andaikan untuk insn berganda.

-mdiv=strategi
Tetapkan strategi bahagi yang akan digunakan untuk operasi bahagi integer. Untuk SHmedia
strategi boleh menjadi salah satu daripada:

fp Menjalankan operasi dalam titik terapung. Ini mempunyai kependaman yang sangat tinggi, tetapi memerlukan
hanya beberapa arahan, jadi ini mungkin pilihan yang baik jika kod anda mencukupi
ILP yang mudah dieksploitasi untuk membolehkan pengkompil menjadualkan titik terapung
arahan bersama dengan arahan lain. Pembahagian dengan punca sifar a
pengecualian titik terapung.

inv Menggunakan operasi integer untuk mengira songsangan pembahagi, dan kemudian
mendarabkan dividen dengan songsang. Strategi ini membolehkan CSE dan angkat
daripada pengiraan songsang. Pembahagian dengan sifar mengira hasil yang tidak ditentukan,
tetapi tidak memerangkap.

inv:minlat
Satu varian dari inv di mana, jika tiada CSE atau peluang angkat telah ditemui, atau jika
keseluruhan operasi telah dinaikkan ke tempat yang sama, peringkat terakhir
pengiraan songsang dijalin dengan darab akhir untuk mengurangkan keseluruhan
kependaman, dengan mengorbankan penggunaan beberapa arahan lagi, dan dengan itu menawarkan lebih sedikit
peluang penjadualan dengan kod lain.

memanggil
Memanggil fungsi perpustakaan yang biasanya melaksanakan inv:minlat strategi. ini
memberikan ketumpatan kod tinggi untuk kompilasi "m5-*media-nofpu".

call2
Menggunakan titik masuk yang berbeza bagi fungsi perpustakaan yang sama, di mana ia menganggap bahawa a
penunjuk ke jadual carian telah disediakan, yang mendedahkan beban penunjuk
kepada CSE dan pengoptimuman pengangkatan kod.

inv:panggilan
inv:panggilan2
inv:fp
Menggunakan inv algoritma untuk penjanaan kod awal, tetapi jika kod itu kekal
tidak dioptimumkan, kembali kepada memanggil, call2, Atau fp strategi, masing-masing. Perhatikan bahawa
kesan sampingan yang berpotensi memerangkap pembahagian dengan sifar dibawa oleh yang berasingan
arahan, jadi mungkin semua arahan integer dinaikkan keluar,
tetapi penanda untuk kesan sampingan kekal di tempatnya. Gabungan semula kepada
operasi titik terapung atau panggilan tidak boleh dilakukan dalam kes itu.

inv20u
inv20l
Varian daripada inv:minlat strategi. Dalam kes bahawa pengiraan songsang adalah
tidak dipisahkan dari darab, mereka mempercepatkan pembahagian yang sesuai dengan dividen
ke dalam 20 bit (tanda tambah jika berkenaan) dengan memasukkan ujian untuk melangkau beberapa
operasi dalam kes ini; ujian ini memperlahankan kes dividen yang lebih besar.
inv20u menganggap kes dividen yang kecil itu tidak mungkin, dan inv20l
menganggap ia berkemungkinan.

Untuk sasaran selain SHmedia strategi boleh menjadi salah satu daripada:

panggilan-div1
Memanggil fungsi perpustakaan yang menggunakan arahan bahagian satu langkah "div1" kepada
melakukan operasi. Pembahagian dengan sifar mengira hasil yang tidak ditentukan dan melakukannya
bukan perangkap. Ini adalah lalai kecuali untuk SH4, SH2A dan SHcompact.

panggilan-fp
Memanggil fungsi perpustakaan yang melaksanakan operasi dalam terapung berketepatan ganda
titik. Pembahagian dengan sifar menyebabkan pengecualian titik terapung. Ini adalah lalai
untuk SHcompact dengan FPU. Menentukan ini untuk sasaran yang tidak mempunyai dua kali ganda
FPU ketepatan lalai kepada "panggilan-div1".

meja panggilan
Memanggil fungsi perpustakaan yang menggunakan jadual carian untuk pembahagi kecil dan
Arahan "div1" dengan pembezaan kes untuk pembahagi yang lebih besar. Pembahagian dengan sifar
mengira hasil yang tidak ditentukan dan tidak memerangkap. Ini ialah lalai untuk SH4.
Menentukan ini untuk sasaran yang tidak mempunyai lalai arahan anjakan dinamik
kepada "panggilan-div1".

Apabila strategi pembahagian belum ditentukan, strategi lalai dipilih berdasarkan
pada sasaran semasa. Untuk SH2A strategi lalai adalah menggunakan "divs" dan "divu"
arahan dan bukannya panggilan fungsi perpustakaan.

-maccumulate-outgoing-args
Simpan ruang sekali untuk hujah keluar dalam prolog fungsi dan bukannya sekeliling
setiap panggilan. Secara amnya bermanfaat untuk prestasi dan saiz. Juga diperlukan untuk berehat
untuk mengelak menukar bingkai tindanan di sekeliling kod bersyarat.

-mdivsi3_libfunc=nama
Tetapkan nama fungsi perpustakaan yang digunakan untuk bahagian bertandatangan 32-bit kepada nama. ini
hanya mempengaruhi nama yang digunakan dalam memanggil dan inv:panggilan strategi bahagian, dan
pengkompil masih mengharapkan set daftar input/output/clobbered yang sama seperti ini
pilihan tidak hadir.

-mfixed-range=julat daftar
Hasilkan kod yang menganggap julat daftar yang diberikan sebagai daftar tetap. Daftar tetap
adalah salah satu yang tidak boleh digunakan oleh pengagih daftar. Ini berguna apabila menyusun kernel
kod. Julat daftar ditentukan sebagai dua daftar yang dipisahkan oleh sengkang. Pelbagai
julat daftar boleh ditentukan dipisahkan dengan koma.

-mindexed-addressing
Dayakan penggunaan mod pengalamatan diindeks untuk SHmedia32/SHcompact. Ini sahaja
selamat jika perkakasan dan/atau OS melaksanakan semantik lilitan 32-bit untuk yang diindeks
mod pengalamatan. Seni bina membenarkan pelaksanaan pemproses dengan 64-bit
MMU, yang OS boleh gunakan untuk mendapatkan pengalamatan 32-bit, tetapi kerana tiada perkakasan semasa
pelaksanaan menyokong ini atau apa-apa cara lain untuk menjadikan mod pengalamatan diindeks selamat
untuk digunakan dalam ABI 32-bit, lalainya ialah -mno-indexed-addressing.

-mgettrcost=nombor
Tetapkan kos yang diandaikan untuk arahan "gettr" kepada nombor. Lalai ialah 2 jika
-mpt-tetap berkuat kuasa, 100 sebaliknya.

-mpt-tetap
Anggap arahan "pt*" tidak akan memerangkap. Ini biasanya menjana kod berjadual lebih baik,
tetapi tidak selamat pada perkakasan semasa. Takrif seni bina semasa mengatakan bahawa
Perangkap "ptabs" dan "ptrel" apabila sasaran dan dengan 3 ialah 3. Ini mempunyai
kesan yang tidak disengajakan menyebabkan ia tidak selamat untuk menjadualkan arahan ini sebelum a
cawangan, atau angkat mereka keluar dari gelung. Contohnya, "__do_global_ctors", sebahagian daripada
libgcc yang menjalankan pembina pada permulaan program, memanggil fungsi dalam senarai iaitu
dihadkan oleh -1. Dengan -mpt-tetap pilihan, "ptabs" dilakukan sebelum ujian
terhadap -1. Ini bermakna bahawa semua pembina berjalan sedikit lebih cepat, tetapi apabila
gelung sampai ke penghujung senarai, program ranap kerana "ptabs" memuatkan -1 ke dalam a
daftar sasaran.

Memandangkan pilihan ini tidak selamat untuk mana-mana perkakasan yang melaksanakan seni bina semasa
spesifikasi, lalainya ialah -mno-pt-tetap. Melainkan dinyatakan secara eksplisit dengan
-mgettrcost, -mno-pt-tetap juga membayangkan -mgettrcost=100; ini menghalang pendaftaran
peruntukan daripada menggunakan daftar sasaran untuk menyimpan integer biasa.

-simbol-minvalid
Andaikan simbol mungkin tidak sah. Simbol fungsi biasa yang dihasilkan oleh pengkompil
sentiasa sah untuk memuatkan dengan "movi"/"shori"/"ptabs" atau "movi"/"shori"/"ptrel", tetapi
dengan helah pemasang dan/atau penghubung adalah mungkin untuk menjana simbol yang menyebabkan
"ptabs" atau "ptrel" untuk memerangkap. Pilihan ini hanya bermakna apabila -mno-pt-tetap dalam
kesan. Ia menghalang CSE blok asas silang, pengangkatan dan kebanyakan penjadualan simbol
bebanan. Lalainya ialah -mno-invalid-simbol.

-kos-mbranch=num
Anggap num menjadi kos untuk arahan cawangan. Nombor yang lebih tinggi menjadikan pengkompil
cuba jana lebih banyak kod bebas cawangan jika boleh. Jika tidak dinyatakan nilainya ialah
dipilih bergantung pada jenis pemproses yang sedang disusun.

-mzdcbranch
-mno-zdcbranch
Andaikan (jangan anggap) bahawa arahan cawangan bersyarat anjakan sifar "bt" dan
"bf" cepat. Jika -mzdcbranch ditentukan, pengkompil lebih suka anjakan sifar
urutan kod cawangan. Ini didayakan secara lalai apabila menjana kod untuk SH4 dan
SH4A. Ia boleh dilumpuhkan secara eksplisit dengan menyatakan -mno-zdcbranch.

-mcbranch-force-delay-slot
Paksa penggunaan slot tunda untuk cawangan bersyarat, yang menyumbat slot tunda
dengan "nop" jika arahan yang sesuai tidak dapat ditemui. Secara lalai pilihan ini ialah
kurang upaya. Ia boleh didayakan untuk mengatasi pepijat perkakasan seperti yang terdapat dalam asal
SH7055.

-mfused-gila
-mno-fused-madd
Hasilkan kod yang menggunakan (tidak menggunakan) titik terapung darab dan terkumpul
arahan. Arahan ini dijana secara lalai jika titik terapung perkakasan
digunakan. Yang bergantung kepada mesin -mfused-gila pilihan kini dipetakan ke mesin-
bebas -ffp-contract=cepat pilihan, dan -mno-fused-madd dipetakan ke
-ffp-contract=off.

-mfsca
-mno-fsca
Benarkan atau tidak benarkan pengkompil mengeluarkan arahan "fsca" untuk sinus dan kosinus
anggaran. Pilihannya -mfsca mesti digunakan dalam kombinasi dengan
-funsafe-math-optimizations. Ia didayakan secara lalai apabila menjana kod untuk SH4A.
Menggunakan -mno-fsca melumpuhkan penghampiran sinus dan kosinus walaupun jika
-funsafe-math-optimizations berkuat kuasa.

-mfsrra
-mno-fsrra
Benarkan atau tidak benarkan pengkompil mengeluarkan arahan "fsrra" untuk segi empat sama salingan
anggaran akar. Pilihannya -mfsrra mesti digunakan dalam kombinasi dengan
-funsafe-math-optimizations dan -finite-matematik sahaja. Ia didayakan secara lalai apabila
menjana kod untuk SH4A. menggunakan -mno-fsrra melumpuhkan punca kuasa dua timbal balik
anggaran walaupun -funsafe-math-optimizations dan -finite-matematik sahaja berada dalam
kesan.

-berpura-pura-cmove
Lebih suka cawangan bersyarat anjakan sifar untuk arahan pergerakan bersyarat
corak. Ini boleh menghasilkan kod yang lebih pantas pada pemproses SH4.

Solaris 2 Pilihan

Ini -m pilihan disokong pada Solaris 2:

-mclear-hwcap
-mclear-hwcap memberitahu pengkompil untuk mengalih keluar keupayaan perkakasan yang dihasilkan oleh
Penghimpun Solaris. Ini hanya perlu apabila fail objek tidak menggunakan sambungan ISA
disokong oleh mesin semasa, tetapi semak pada masa jalan sama ada untuk menggunakannya atau tidak.

-teks najis
-teks najis, digunakan sebagai tambahan kepada -berkongsi, memberitahu pengkompil untuk tidak lulus -z teks kepada
penghubung apabila memautkan objek yang dikongsi. Menggunakan pilihan ini, anda boleh memautkan kedudukan-
kod bergantung ke dalam objek kongsi.

-teks najis menindas "penempatan semula kekal bertentangan dengan peruntukan tetapi tidak boleh ditulis
mesej ralat pemaut bahagian". Walau bagaimanapun, penempatan semula yang diperlukan mencetuskan salinan pada-
tulis, dan objek yang dikongsi sebenarnya tidak dikongsi merentas proses. Sebaliknya
menggunakan -teks najis, anda harus menyusun semua kod sumber dengan -fpic or -fPIC.

Suis ini disokong sebagai tambahan kepada yang di atas pada Solaris 2:

-pthreads
Tambahkan sokongan untuk multithreading menggunakan pustaka benang POSIX. Pilihan ini ditetapkan
bendera untuk kedua-dua prapemproses dan pemaut. Pilihan ini tidak menjejaskan benang
keselamatan kod objek yang dihasilkan oleh pengkompil atau perpustakaan yang dibekalkan dengannya.

-pthread
Ini adalah sinonim untuk -pthreads.

SPARC Pilihan

Ini -m pilihan disokong pada SPARC:

-mno-app-regs
-mapp-regs
Tentukan -mapp-regs untuk menjana output menggunakan daftar global 2 hingga 4, yang
rizab SPARC SVR4 ABI untuk permohonan. Seperti daftar global 1, setiap global
daftar 2 hingga 4 kemudiannya dianggap sebagai daftar boleh peruntukan yang dikalahkan oleh
panggilan fungsi. Ini adalah lalai.

Untuk mematuhi sepenuhnya SVR4 ABI pada kos beberapa kehilangan prestasi, nyatakan
-mno-app-regs. Anda harus menyusun perpustakaan dan perisian sistem dengan pilihan ini.

-mflat
-mno-flat
Dengan -mflat, pengkompil tidak menjana arahan simpan/pulihkan dan menggunakan a
"flat" atau model tetingkap daftar tunggal. Model ini serasi dengan model biasa
daftar model tingkap. Daftar tempatan dan daftar input (0--5) masih
dianggap sebagai daftar "simpan panggilan" dan disimpan pada timbunan seperti yang diperlukan.

Dengan -mno-flat (lalai), pengkompil menjana arahan simpan/pulihkan (kecuali
untuk fungsi daun). Ini adalah mod operasi biasa.

-mfpu
-mhard-terapung
Hasilkan output yang mengandungi arahan titik terapung. Ini adalah lalai.

-mno-fpu
-msoft-float
Hasilkan output yang mengandungi panggilan perpustakaan untuk titik terapung. Amaran: yang diperlukan
perpustakaan tidak tersedia untuk semua sasaran SPARC. Biasanya kemudahan di
pengkompil C biasa mesin digunakan, tetapi ini tidak boleh dilakukan secara langsung dalam
kompilasi. Anda mesti membuat pengaturan anda sendiri untuk menyediakan perpustakaan yang sesuai
fungsi untuk kompilasi silang. Sasaran tertanam sparc-*-aout dan sparclite-*-*
menyediakan sokongan titik terapung perisian.

-msoft-float menukar konvensyen panggilan dalam fail output; oleh itu, ia hanya
berguna jika anda menyusun semua program dengan pilihan ini. Khususnya, anda perlu
menyusun libgcc.a, perpustakaan yang disertakan dengan GCC, dengan -msoft-float untuk ini
untuk bekerja.

-mhard-quad-float
Hasilkan output yang mengandungi arahan titik terapung empat perkataan (ganda panjang).

-msoft-quad-float
Hasilkan output yang mengandungi panggilan perpustakaan untuk titik terapung empat perkataan (ganda panjang).
arahan. Fungsi yang dipanggil adalah yang dinyatakan dalam SPARC ABI. Ini adalah
lalai.

Sehingga penulisan ini, tiada pelaksanaan SPARC yang mempunyai sokongan perkakasan
arahan titik terapung empat perkataan. Mereka semua memanggil pengendali perangkap untuk salah satu daripadanya
arahan ini, dan kemudian pengendali perangkap meniru kesan arahan tersebut.
Kerana overhed pengendali perangkap, ini adalah lebih perlahan daripada memanggil perpustakaan ABI
rutin. Justeru itu -msoft-quad-float pilihan ialah lalai.

-mno-tidak selaras-beregu
-munaligned-double
Andaikan bahawa rangkap dua mempunyai penjajaran 8-bait. Ini adalah lalai.

Dengan -munaligned-double, GCC menganggap bahawa rangkap dua mempunyai penjajaran 8-bait hanya jika ia
terkandung dalam jenis lain, atau jika ia mempunyai alamat mutlak. Jika tidak, ia
menganggap mereka mempunyai penjajaran 4-bait. Menentukan pilihan ini mengelakkan beberapa yang jarang berlaku
masalah keserasian dengan kod yang dihasilkan oleh penyusun lain. Ia bukan lalai
kerana ia mengakibatkan kehilangan prestasi, terutamanya untuk kod titik terapung.

-mod-muser
-mno-mod-pengguna
Jangan jana kod yang hanya boleh dijalankan dalam mod penyelia. Ini hanya relevan untuk
arahan "casa" yang dikeluarkan untuk pemproses LEON3. Ini adalah lalai.

-mno-faster-structs
-mfaster-structs
Dengan -mfaster-structs, pengkompil menganggap bahawa struktur harus mempunyai 8-bait
penjajaran. Ini membolehkan penggunaan pasangan arahan "ldd" dan "std" untuk salinan
dalam penugasan struktur, menggantikan pasangan "ld" dan "st" dua kali lebih banyak. Walau bagaimanapun
penggunaan penjajaran yang diubah ini secara langsung melanggar SPARC ABI. Oleh itu, ia bertujuan
hanya untuk digunakan pada sasaran di mana pembangun mengakui bahawa kod yang terhasil adalah
tidak selaras langsung dengan peraturan ABI.

-mcpu=cpu_type
Tetapkan set arahan, set daftar dan parameter penjadualan arahan untuk
jenis mesin cpu_type. Nilai yang disokong untuk cpu_type adalah v7, Cypress, v8, supersparc,
hypersparc, leon, leon3, leon3v7, sparclite, f930, f934, sparclite86x, kilauan,
tsc701, v9, ultrasparc, ultrasparc3, Niagara, niagara2, niagara3 dan niagara4.

Rangkaian alat Solaris asli dan GNU/Linux juga menyokong nilai tersebut asli, yang memilih
pilihan seni bina terbaik untuk pemproses hos. -mcpu=asli tiada kesan jika
GCC tidak mengenali pemproses.

Parameter penjadualan arahan lalai digunakan untuk nilai yang memilih a
seni bina dan bukan pelaksanaan. Ini adalah v7, v8, sparclite, kilauan, v9.

Berikut ialah senarai setiap seni bina yang disokong dan pelaksanaannya yang disokong.

v7 cypress, leon3v7

v8 supersparc, hypersparc, leon, leon3

sparclite
f930, f934, sparclite86x

kilauan
tsc701

v9 ultrasparc, ultrasparc3, ​​niagara, niagara2, niagara3, niagara4

Secara lalai (melainkan dikonfigurasikan sebaliknya), GCC menjana kod untuk varian V7
Seni bina SPARC. Dengan -mcpu=cypress, pengkompil juga mengoptimumkannya untuk
cip Cypress CY7C602, seperti yang digunakan dalam siri SPARCStation/SPARCServer 3xx. Ini adalah
juga sesuai untuk SPARCStation 1, 2, IPX yang lebih lama dsb.

Dengan -mcpu=v8, GCC menjana kod untuk varian V8 seni bina SPARC. The
hanya perbezaan dari kod V7 ialah pengkompil mengeluarkan darab integer dan
arahan bahagi integer yang wujud dalam SPARC-V8 tetapi tidak dalam SPARC-V7. Dengan
-mcpu=supersparc, pengkompil juga mengoptimumkannya untuk cip SuperSPARC, sebagai
digunakan dalam siri SPARCStation 10, 1000 dan 2000.

Dengan -mcpu=sparclite, GCC menjana kod untuk varian SPARClite SPARC
seni bina. Ini menambahkan darab integer, langkah bahagi integer dan imbasan ("ffs")
arahan yang wujud dalam SPARClite tetapi tidak dalam SPARC-V7. Dengan -mcpu=f930, yang
pengkompil juga mengoptimumkannya untuk cip Fujitsu MB86930, yang merupakan yang asal
SPARClite, tanpa FPU. Dengan -mcpu=f934, pengkompil juga mengoptimumkannya untuk
cip Fujitsu MB86934, iaitu SPARClite yang lebih terkini dengan FPU.

Dengan -mcpu=sparclet, GCC menjana kod untuk varian SPARClet SPARC
seni bina. Ini menambah integer darab, darab/terkumpul, bahagi integer
arahan langkah dan imbasan ("ffs") yang wujud dalam SPARClet tetapi tidak dalam SPARC-V7. Dengan
-mcpu=tsc701, pengkompil juga mengoptimumkannya untuk cip TEMIC SPARClet.

Dengan -mcpu=v9, GCC menjana kod untuk varian V9 seni bina SPARC. ini
menambah integer 64-bit dan arahan pergerakan titik terapung, 3 titik terapung tambahan
daftar kod syarat dan arahan pergerakan bersyarat. Dengan -mcpu=ultraparc,
pengkompil juga mengoptimumkannya untuk cip Sun UltraSPARC I/II/IIi. Dengan
-mcpu=ultraparc3, pengkompil juga mengoptimumkannya untuk Sun UltraSPARC
Cip III/III+/IIIi/IIIi+/IV/IV+. Dengan -mcpu=niagara, penyusun tambahan
mengoptimumkannya untuk cip Sun UltraSPARC T1. Dengan -mcpu=niagara2, penyusun
selain itu mengoptimumkannya untuk cip Sun UltraSPARC T2. Dengan -mcpu=niagara3, yang
pengkompil juga mengoptimumkannya untuk cip Sun UltraSPARC T3. Dengan -mcpu=niagara4,
pengkompil juga mengoptimumkannya untuk cip Sun UltraSPARC T4.

-mtune=cpu_type
Tetapkan parameter penjadualan arahan untuk jenis mesin cpu_type, tetapi jangan tetapkan
set arahan atau set daftar bahawa pilihan -mcpu=cpu_type tidak.

Nilai yang sama untuk -mcpu=cpu_type boleh digunakan untuk -mtune=cpu_type, tetapi satu-satunya
nilai berguna ialah nilai yang memilih pelaksanaan CPU tertentu. Mereka adalah
Cypress, supersparc, hypersparc, leon, leon3, leon3v7, f930, f934, sparclite86x,
tsc701, ultrasparc, ultrasparc3, Niagara, niagara2, niagara3 dan niagara4. Dengan
rangkaian alat Solaris dan GNU/Linux asli, asli juga boleh digunakan.

-mv8plus
-mno-v8plus
Dengan -mv8plus, GCC menjana kod untuk SPARC-V8+ ABI. Perbezaan dari V8
ABI ialah daftar global dan keluar dianggap 64 bit lebar. Ini didayakan
secara lalai pada Solaris dalam mod 32-bit untuk semua pemproses SPARC-V9.

-mvis
-mno-vis
Dengan -mvis, GCC menjana kod yang memanfaatkan Visual UltraSPARC
Sambungan Set Arahan. Lalainya ialah -mno-vis.

-mvis2
-mno-vis2
Dengan -mvis2, GCC menjana kod yang memanfaatkan versi 2.0 UltraSPARC
Sambungan Set Arahan Visual. Lalainya ialah -mvis2 apabila menyasarkan cpu itu
menyokong arahan sedemikian, seperti UltraSPARC-III dan yang lebih baru. Tetapan -mvis2 Juga
set -mvis.

-mvis3
-mno-vis3
Dengan -mvis3, GCC menjana kod yang memanfaatkan versi 3.0 UltraSPARC
Sambungan Set Arahan Visual. Lalainya ialah -mvis3 apabila menyasarkan cpu itu
menyokong arahan sedemikian, seperti niagara-3 dan lebih baru. Tetapan -mvis3 juga menetapkan
-mvis2 dan -mvis.

-mcbcond
-mno-cbcond
Dengan -mcbcond, GCC menjana kod yang memanfaatkan perbandingan-dan-cawangan
arahan, seperti yang ditakrifkan dalam Sparc Architecture 2011. Lalainya ialah -mcbcond apabila
menyasarkan cpu yang menyokong arahan sedemikian, seperti niagara-4 dan lebih baru.

-mpopc
-mno-popc
Dengan -mpopc, GCC menjana kod yang memanfaatkan populasi UltraSPARC
arahan mengira. Lalainya ialah -mpopc apabila menyasarkan cpu yang menyokong sedemikian
arahan, seperti Niagara-2 dan lebih baru.

-mfmaf
-mno-fmaf
Dengan -mfmaf, GCC menjana kod yang memanfaatkan UltraSPARC Fused Multiply-
Tambah sambungan titik terapung. Lalainya ialah -mfmaf apabila menyasarkan cpu itu
menyokong arahan sedemikian, seperti Niagara-3 dan lebih baru.

-mfix-at697f
Dayakan penyelesaian yang didokumenkan untuk erratum tunggal pemproses Atmel AT697F
(yang sepadan dengan erratum #13 pemproses AT697E).

-mfix-ut699
Dayakan penyelesaian yang didokumenkan untuk kesilapan titik terapung dan cache data
membatalkan kesilapan pemproses UT699.

Ini -m pilihan disokong sebagai tambahan kepada pemproses SPARC-V9 di atas dalam 64-bit
persekitaran:

-m32
-m64
Hasilkan kod untuk persekitaran 32-bit atau 64-bit. Persekitaran 32-bit menetapkan int,
panjang dan penunjuk kepada 32 bit. Persekitaran 64-bit menetapkan int kepada 32 bit dan panjang dan
penunjuk kepada 64 bit.

-mcmodel=yang
Tetapkan model kod kepada salah satu daripada

campur aduk
Model kod Sederhana/Rendah: alamat 64-bit, program mesti dipautkan dalam 32 rendah
cebisan ingatan. Program boleh dipautkan secara statik atau dinamik.

medmid
Model kod Sederhana/Tengah: alamat 64-bit, program mesti dipautkan dalam rendah
44 bit memori, teks dan segmen data mestilah kurang daripada 2GB dalam saiz dan
segmen data mesti terletak dalam 2GB daripada segmen teks.

medany
Model kod Medium/Anywhere: alamat 64-bit, program boleh dipautkan di mana-mana sahaja
dalam ingatan, segmen teks dan data mestilah kurang daripada 2GB saiz dan data
segmen mesti terletak dalam 2GB daripada segmen teks.

embmedany
Model kod Medium/Anywhere untuk sistem terbenam: alamat 64-bit, teks
dan segmen data mestilah kurang daripada 2GB dalam saiz, kedua-duanya bermula di mana-mana dalam memori
(ditentukan pada masa pautan). Daftar global %g4 menunjuk ke pangkalan data
segmen. Program dipautkan secara statik dan PIC tidak disokong.

-mmemory-model=model mem
Tetapkan model memori berkuat kuasa pada pemproses kepada salah satu daripada

lalai
Model memori lalai untuk pemproses dan sistem pengendalian.

rmo Pesanan Memori Santai

pso Pesanan Kedai Separa

tso Jumlah Pesanan Kedai

sc Konsistensi Berurutan

Model memori ini ditakrifkan secara rasmi dalam Lampiran D seni bina Sparc V9
manual, seperti yang ditetapkan dalam medan "PSTATE.MM" pemproses.

-mstack-bias
-mno-stack-bias
Dengan -mstack-bias, GCC menganggap bahawa penuding tindanan dan penuding bingkai jika ada,
diimbangi oleh -2047 yang mesti ditambah semula apabila membuat rujukan bingkai tindanan. ini
ialah lalai dalam mod 64-bit. Jika tidak, anggap tiada offset sedemikian wujud.

SPU Pilihan

Ini -m pilihan disokong pada SPU:

-mwarn-reloc
-merror-reloc
Pemuat untuk SPU tidak mengendalikan penempatan semula dinamik. Secara lalai, GCC memberikan
ralat apabila ia menjana kod yang memerlukan penempatan semula dinamik. -mno-error-reloc
melumpuhkan ralat, -mwarn-reloc sebaliknya menjana amaran.

-msafe-dma
-munsafe-dma
Arahan yang memulakan atau menguji penyiapan DMA tidak boleh disusun semula
berkenaan dengan beban dan simpanan memori yang sedang diakses. Dengan -munsafe-dma
anda mesti menggunakan kata kunci "tidak menentu" untuk melindungi akses memori, tetapi itu boleh menyebabkan
kod yang tidak cekap di tempat yang ingatan diketahui tidak berubah. Daripada menandakan
memori sebagai tidak menentu, anda boleh gunakan -msafe-dma untuk memberitahu pengkompil untuk merawat DMA
arahan yang berpotensi menjejaskan semua ingatan.

-petunjuk-mbranch
Secara lalai, GCC menjana arahan pembayang cawangan untuk mengelakkan gerai saluran paip
cawangan yang selalu diambil atau mungkin diambil. Pembayang tidak dihasilkan lebih dekat daripada 8
arahan dari cawangannya. Terdapat sedikit sebab untuk melumpuhkan mereka, kecuali untuk
tujuan penyahpepijatan, atau untuk menjadikan objek lebih kecil sedikit.

-msmall-mem
-mlarge-mem
Secara lalai, GCC menjana kod dengan mengandaikan bahawa alamat tidak pernah lebih besar daripada 18 bit.
Dengan -mlarge-mem kod dijana yang menganggap alamat 32-bit penuh.

-mstdmain
Secara lalai, GCC memaut dengan kod permulaan yang menganggap fungsi utama gaya SPU
antara muka (yang mempunyai senarai parameter yang tidak konvensional). Dengan -mstdmain, pautan GCC
program anda terhadap kod permulaan yang menganggap antara muka gaya C99 menjadi "utama",
termasuk salinan tempatan rentetan "argv".

-mfixed-range=julat daftar
Hasilkan kod yang menganggap julat daftar yang diberikan sebagai daftar tetap. Daftar tetap
adalah salah satu yang tidak boleh digunakan oleh pengagih daftar. Ini berguna apabila menyusun kernel
kod. Julat daftar ditentukan sebagai dua daftar yang dipisahkan oleh sengkang. Pelbagai
julat daftar boleh ditentukan dipisahkan dengan koma.

-mea32
-mea64
Susun kod dengan mengandaikan bahawa penunjuk ke ruang alamat PPU diakses melalui "__ea"
kelayakan ruang alamat dinamakan sama ada 32 atau 64 bit lebar. Lalai ialah 32 bit.
Memandangkan ini adalah pilihan yang mengubah ABI, semua kod objek dalam boleh laku mesti disusun
dengan tetapan yang sama.

-penukaran-ruang-maddress
-mno-address-space-conversion
Benarkan/tidak benarkan menganggap ruang alamat "__ea" sebagai superset alamat generik
angkasa lepas. Ini membolehkan hantaran jenis eksplisit antara "__ea" dan penunjuk generik serta
penukaran tersirat penunjuk generik kepada penunjuk "__ea". Lalai adalah untuk membenarkan
penukaran penuding ruang alamat.

-saiz-mcache=saiz cache
Pilihan ini mengawal versi libgcc yang dipautkan pengkompil kepada boleh laku
dan memilih cache yang diuruskan perisian untuk mengakses pembolehubah dalam alamat "__ea".
ruang dengan saiz cache tertentu. Pilihan yang mungkin untuk saiz cache adalah 8, 16, 32, 64
dan 128. Saiz cache lalai ialah 64KB.

-kemas kini-matomik
-mno-atomic-kemas kini
Pilihan ini mengawal versi libgcc yang dipautkan pengkompil kepada boleh laku
dan memilih sama ada kemas kini atom pada cache yang diuruskan perisian bagi pembolehubah sisi PPU
digunakan. Jika anda menggunakan kemas kini atom, tukar kepada pembolehubah PPU daripada kod SPU menggunakan
kelayakan ruang alamat bernama "__ea" tidak mengganggu perubahan pada PPU lain
pembolehubah yang berada dalam baris cache yang sama daripada kod PPU. Jika anda tidak menggunakan atom
kemas kini, gangguan sedemikian mungkin berlaku; walau bagaimanapun, menulis kembali baris cache adalah lebih
cekap. Tingkah laku lalai adalah menggunakan kemas kini atom.

-mdual-nops
-mdual-nops=n
Secara lalai, GCC memasukkan nop untuk meningkatkan dua keluaran apabila ia menjangkakan ia meningkat
prestasi. n boleh menjadi nilai dari 0 hingga 10. Lebih kecil n memasukkan lebih sedikit nops. 10 ialah
lalai, 0 adalah sama seperti -mno-dual-nops. Dilumpuhkan dengan -Os.

-mhint-max-nops=n
Bilangan maksimum nop untuk disisipkan untuk pembayang cawangan. Pembayang cawangan mestilah sekurang-kurangnya 8
arahan dari cawangan yang terjejas. GCC memasukkan sehingga n nops ke
menguatkuasakan ini, jika tidak, ia tidak menjana petunjuk cawangan.

-mhint-max-jarak=n
Pengekodan arahan pembayang cawangan mengehadkan pembayang berada dalam 256
arahan cawangan yang terjejas. Secara lalai, GCC memastikan ia berada di dalam
125.

-msafe-petunjuk
Selesaikan pepijat perkakasan yang menyebabkan SPU terhenti selama-lamanya. Secara lalai, GCC
memasukkan arahan "hbrp" untuk memastikan gerai ini tidak akan berlaku.

Pilihan untuk sistem V

Pilihan tambahan ini tersedia pada Sistem V Keluaran 4 untuk keserasian dengan yang lain
penyusun pada sistem tersebut:

-G Buat objek kongsi. Adalah disyorkan bahawa -simbolik or -berkongsi digunakan sebaliknya.

-Qy Kenal pasti versi setiap alat yang digunakan oleh pengkompil, dalam penghimpun ".ident".
arahan dalam output.

-Qn Elakkan daripada menambah arahan ".ident" pada fail output (ini adalah lalai).

-YP,dirs
Cari direktori dirs, dan tiada yang lain, untuk perpustakaan yang ditentukan dengan -l.

-Ym,dir
Lihat dalam direktori dir untuk mencari prapemproses M4. Penghimpun menggunakan ini
pilihan.

TILE-Gx Pilihan

Ini -m pilihan disokong pada TILE-Gx:

-mcmodel=kecil
Hasilkan kod untuk model kecil. Jarak untuk panggilan terus dihadkan kepada 500M
dalam mana-mana arah. Alamat relatif PC ialah 32 bit. Sokongan alamat mutlak
julat alamat penuh.

-mcmodel=besar
Hasilkan kod untuk model besar. Tiada had pada jarak panggilan, pc-
alamat relatif, atau alamat mutlak.

-mcpu=nama
Memilih jenis CPU untuk disasarkan. Pada masa ini satu-satunya jenis yang disokong ialah tilegx.

-m32
-m64
Hasilkan kod untuk persekitaran 32-bit atau 64-bit. Persekitaran 32-bit menetapkan int,
panjang, dan penunjuk kepada 32 bit. Persekitaran 64-bit menetapkan int kepada 32 bit dan panjang dan
penunjuk kepada 64 bit.

-besar-endian
-kecil-endian
Hasilkan kod dalam mod endian besar/kecil, masing-masing.

TILEPro Pilihan

Ini -m pilihan disokong pada TILEPro:

-mcpu=nama
Memilih jenis CPU untuk disasarkan. Pada masa ini satu-satunya jenis yang disokong ialah tilepro.

-m32
Hasilkan kod untuk persekitaran 32-bit, yang menetapkan int, panjang dan penunjuk kepada 32 bit.
Ini adalah satu-satunya tingkah laku yang disokong jadi bendera pada dasarnya diabaikan.

V850 Pilihan

Ini -m pilihan ditakrifkan untuk pelaksanaan V850:

-mlong-panggilan
-mno-long-panggilan
Anggap semua panggilan sebagai jauh (dekat). Jika panggilan diandaikan jauh,
pengkompil sentiasa memuatkan alamat fungsi ke dalam daftar, dan memanggil secara tidak langsung
melalui penunjuk.

-mno-ep
-mep
Jangan optimumkan (buat mengoptimumkan) blok asas yang menggunakan penunjuk indeks yang sama 4 atau lebih
kali untuk menyalin penunjuk ke dalam daftar "ep", dan gunakan "sld" dan "sst" yang lebih pendek
arahan. The -mep pilihan dihidupkan secara lalai jika anda mengoptimumkan.

-mno-prolog-fungsi
-mprolog-fungsi
Jangan gunakan (gunakan) fungsi luaran untuk menyimpan dan memulihkan daftar pada prolog
dan epilog sesuatu fungsi. Fungsi luaran adalah lebih perlahan, tetapi menggunakan kurang kod
ruang jika lebih daripada satu fungsi menyimpan bilangan daftar yang sama. The
-mprolog-fungsi pilihan dihidupkan secara lalai jika anda mengoptimumkan.

-mspace
Cuba buat kod sekecil mungkin. Pada masa ini, ini hanya menghidupkan -mep
dan -mprolog-fungsi pilihan.

-mtda=n
Letakkan pembolehubah statik atau global yang saiznya n bait atau kurang ke dalam kawasan data kecil
yang mendaftar "ep" menunjuk ke. Kawasan data yang kecil boleh memuatkan sehingga 256 bait secara keseluruhan
(128 bait untuk rujukan bait).

-msda=n
Letakkan pembolehubah statik atau global yang saiznya n bait atau kurang ke dalam kawasan data kecil
yang mendaftar "gp" menunjuk ke. Kawasan data kecil boleh memuatkan sehingga 64 kilobait.

-mzda=n
Letakkan pembolehubah statik atau global yang saiznya n bait atau kurang ke dalam 32 yang pertama
kilobait memori.

-mv850
Nyatakan bahawa pemproses sasaran ialah V850.

-mv850e3v5
Tentukan bahawa pemproses sasaran ialah V850E3V5. Pemalar prapemproses
"__v850e3v5__" ditakrifkan jika pilihan ini digunakan.

-mv850e2v4
Tentukan bahawa pemproses sasaran ialah V850E3V5. Ini adalah alias untuk
-mv850e3v5 pilihan.

-mv850e2v3
Tentukan bahawa pemproses sasaran ialah V850E2V3. Pemalar prapemproses
"__v850e2v3__" ditakrifkan jika pilihan ini digunakan.

-mv850e2
Tentukan bahawa pemproses sasaran ialah V850E2. Pemalar prapemproses
"__v850e2__" ditakrifkan jika pilihan ini digunakan.

-mv850e1
Tentukan bahawa pemproses sasaran ialah V850E1. Pemalar prapemproses
"__v850e1__" dan "__v850e__" ditakrifkan jika pilihan ini digunakan.

-mv850es
Tentukan bahawa pemproses sasaran ialah V850ES. Ini adalah alias untuk -mv850e1
pilihan.

-mv850e
Tentukan bahawa pemproses sasaran ialah V850E. Pemalar prapemproses "__v850e__"
ditakrifkan jika pilihan ini digunakan.

Jika tiada -mv850 tidak -mv850e tidak -mv850e1 tidak -mv850e2 tidak -mv850e2v3 tidak -mv850e3v5
ditakrifkan maka pemproses sasaran lalai dipilih dan yang berkaitan __v850*__
pemalar prapemproses ditakrifkan.

Pemalar prapemproses "__v850" dan "__v851__" sentiasa ditakrifkan, tanpa mengira
varian pemproses yang manakah menjadi sasaran.

-lumpuhkan-panggilan
-mno-disable-callt
Pilihan ini menyekat penjanaan arahan "CALLT" untuk v850e, v850e1,
v850e2, v850e2v3 dan v850e3v5 perisa seni bina v850.

Pilihan ini didayakan secara lalai apabila RH850 ABI sedang digunakan (lihat -mrh850-abi), Dan
dilumpuhkan secara lalai apabila GCC ABI sedang digunakan. Jika arahan "CALLT" sedang dijalankan
dijana maka simbol prapemproses C "__V850_CALLT__" ditakrifkan.

-relax
-mno-santai
Sampaikan (atau jangan sampaikan) itu -relax pilihan baris arahan kepada pemasang.

-mlong-lompat
-mno-lompat jauh
Lumpuhkan (atau dayakan semula) penjanaan arahan lompat relatif PC.

-msoft-float
-mhard-terapung
Lumpuhkan (atau dayakan semula) penjanaan arahan titik terapung perkakasan. ini
pilihan hanya penting apabila seni bina sasaran adalah V850E2V3 atau lebih tinggi. Jika
arahan titik terapung perkakasan sedang dijana kemudian prapemproses C
simbol "__FPU_OK__" ditakrifkan, jika tidak simbol "__NO_FPU__" ditakrifkan.

-mloop
Membolehkan penggunaan arahan LOOP e3v5. Penggunaan arahan ini tidak
didayakan secara lalai apabila seni bina e3v5 dipilih kerana penggunaannya masih
percubaan.

-mrh850-abi
-mghs
Mendayakan sokongan untuk versi RH850 ABI V850. Ini adalah lalai. Dengan
versi ABI ini peraturan berikut dikenakan:

* Struktur dan kesatuan bersaiz integer dikembalikan melalui penuding memori dan bukannya
sebuah daftar.

* Struktur dan kesatuan yang besar (bersaiz lebih daripada 8 bait) diluluskan mengikut nilai.

* Fungsi diselaraskan dengan sempadan 16-bit.

* The -m8byte-align pilihan baris arahan disokong.

* The -lumpuhkan-panggilan pilihan baris arahan didayakan secara lalai. The
-mno-disable-callt pilihan baris arahan tidak disokong.

Apabila versi ABI ini didayakan simbol prapemproses C "__V850_RH850_ABI__"
ditakrifkan.

-mgcc-abi
Mendayakan sokongan untuk versi GCC lama V850 ABI. Dengan versi ABI ini
peraturan berikut terpakai:

* Struktur dan kesatuan bersaiz integer dikembalikan dalam daftar "r10".

* Struktur dan kesatuan yang besar (bersaiz lebih daripada 8 bait) diluluskan melalui rujukan.

* Fungsi diselaraskan dengan sempadan 32-bit, melainkan mengoptimumkan saiz.

* The -m8byte-align pilihan baris arahan tidak disokong.

* The -lumpuhkan-panggilan pilihan baris arahan disokong tetapi tidak didayakan secara lalai.

Apabila versi ABI ini didayakan simbol prapemproses C "__V850_GCC_ABI__"
ditakrifkan.

-m8byte-align
-mno-8byte-align
Membolehkan sokongan untuk jenis "double" dan "long long" diselaraskan pada sempadan 8-bait.
Lalai adalah untuk mengehadkan penjajaran semua objek kepada paling banyak 4-bait. Bila
-m8byte-align adalah berkuat kuasa simbol C prapemproses "__V850_8BYTE_ALIGN__" ialah
ditakrifkan.

-suis besar
Hasilkan kod yang sesuai untuk jadual suis besar. Gunakan pilihan ini hanya jika
pemasang/penghubung mengadu tentang cawangan di luar julat dalam jadual suis.

-mapp-regs
Pilihan ini menyebabkan r2 dan r5 digunakan dalam kod yang dihasilkan oleh pengkompil. ini
tetapan adalah lalai.

-mno-app-regs
Pilihan ini menyebabkan r2 dan r5 dianggap sebagai daftar tetap.

VAX Pilihan

Ini -m pilihan ditakrifkan untuk VAX:

-munix
Jangan keluarkan arahan lompatan tertentu ("aobleq" dan sebagainya) yang pemasang Unix
kerana VAX tidak boleh mengendalikan merentasi julat yang jauh.

-mgnu
Keluarkan arahan lompat itu, dengan andaian bahawa penghimpun GNU sedang
terpakai.

-mg Kod output untuk nombor titik terapung format G dan bukannya format D.

Visium Pilihan

-mdebug
Program yang melaksanakan I/O fail dan ditakdirkan untuk dijalankan pada sasaran MCM sepatutnya
dipautkan dengan pilihan ini. Ia menyebabkan perpustakaan libc.a dan libdebug.a dipautkan.
Program ini harus dijalankan pada sasaran di bawah kawalan penyahpepijatan jauh GDB
rintisan.

-msim
Program yang melaksanakan fail I/O dan ditakdirkan untuk dijalankan pada simulator sepatutnya
dikaitkan dengan pilihan. Ini menyebabkan perpustakaan libc.a dan libsim.a dipautkan.

-mfpu
-mhard-terapung
Hasilkan kod yang mengandungi arahan titik terapung. Ini adalah lalai.

-mno-fpu
-msoft-float
Hasilkan kod yang mengandungi panggilan perpustakaan untuk titik terapung.

-msoft-float menukar konvensyen panggilan dalam fail output; oleh itu, ia hanya
berguna jika anda menyusun semua program dengan pilihan ini. Khususnya, anda perlu
menyusun libgcc.a, perpustakaan yang disertakan dengan GCC, dengan -msoft-float untuk ini
untuk bekerja.

-mcpu=cpu_type
Tetapkan set arahan, set daftar dan parameter penjadualan arahan untuk
jenis mesin cpu_type. Nilai yang disokong untuk cpu_type adalah mcm, gr5 dan gr6.

mcm adalah sinonim daripada gr5 hadir untuk keserasian ke belakang.

Secara lalai (melainkan dikonfigurasikan sebaliknya), GCC menjana kod untuk varian GR5
seni bina Visium.

Dengan -mcpu=gr6, GCC menjana kod untuk varian GR6 seni bina Visium.
Satu-satunya perbezaan daripada kod GR5 ialah pengkompil akan menjana pergerakan blok
arahan.

-mtune=cpu_type
Tetapkan parameter penjadualan arahan untuk jenis mesin cpu_type, tetapi jangan tetapkan
set arahan atau set daftar bahawa pilihan -mcpu=cpu_type akan.

-msv-mod
Hasilkan kod untuk mod penyelia, di mana tiada sekatan ke atas akses
kepada daftar am. Ini adalah lalai.

-mod-muser
Hasilkan kod untuk mod pengguna, di mana akses kepada beberapa daftar umum adalah
dilarang: pada GR5, daftar r24 hingga r31 tidak boleh diakses dalam mod ini; pada
GR6, hanya daftar r29 hingga r31 terjejas.

VMS Pilihan

Ini -m pilihan ditakrifkan untuk pelaksanaan VMS:

-mvms-return-codes
Kembalikan kod keadaan VMS daripada "utama". Lalai adalah untuk mengembalikan keadaan gaya POSIX
(cth ralat) kod.

-mdebug-utama=awalan
Tandakan rutin pertama yang namanya bermula dengan awalan sebagai rutin utama untuk
penyahpepijat.

-mmalloc64
Lalai kepada rutin peruntukan memori 64-bit.

-saiz penunjuk=saiz
Tetapkan saiz lalai penunjuk. Pilihan yang mungkin untuk saiz adalah 32 or pendek untuk 32 bit
petunjuk, 64 or lama untuk penunjuk 64 bit, dan tidak untuk menyokong hanya 32 bit penunjuk.
Pilihan kemudian melumpuhkan "pragma pointer_size".

Kerja Vx Pilihan

Pilihan dalam bahagian ini ditakrifkan untuk semua sasaran VxWorks. Pilihan khusus untuk
perkakasan sasaran disenaraikan dengan pilihan lain untuk sasaran tersebut.

-mrtp
GCC boleh menjana kod untuk kedua-dua kernel VxWorks dan proses masa nyata (RTP). ini
pilihan bertukar daripada yang pertama kepada yang terakhir. Ia juga mentakrifkan makro prapemproses
"__RTP__".

-tidak statik
Pautkan RTP boleh laku terhadap perpustakaan kongsi dan bukannya perpustakaan statik. The
pilihan -statik dan -berkongsi juga boleh digunakan untuk RTP; -statik adalah lalai.

-Bstatik
-Bdinamik
Pilihan ini diturunkan kepada pemaut. Mereka ditakrifkan untuk keserasian dengan
Diab.

-Xbind-malas
Dayakan pengikatan malas bagi panggilan fungsi. Pilihan ini bersamaan dengan -Wl,-z, sekarang dan adalah
ditakrifkan untuk keserasian dengan Diab.

-Xbind-sekarang
Lumpuhkan pengikatan malas panggilan fungsi. Pilihan ini adalah lalai dan ditakrifkan untuk
keserasian dengan Diab.

x86 Pilihan

Ini -m pilihan ditakrifkan untuk keluarga komputer x86.

-march=jenis cpu
Hasilkan arahan untuk jenis mesin jenis cpu. Berbeza dengan -mtune=jenis cpu,
yang hanya menala kod yang dijana untuk yang ditentukan jenis cpu, -march=jenis cpu
membenarkan GCC menjana kod yang mungkin tidak berjalan sama sekali pada pemproses selain yang satu
ditunjukkan. Menentukan -march=jenis cpu bererti -mtune=jenis cpu.

Pilihan untuk jenis cpu ialah:

asli
Ini memilih CPU untuk menjana kod pada masa penyusunan dengan menentukan
jenis pemproses mesin penyusun. menggunakan -march = asli membolehkan semua
subset arahan yang disokong oleh mesin tempatan (oleh itu hasilnya mungkin tidak berjalan
pada mesin yang berbeza). menggunakan -mtune=asli menghasilkan kod yang dioptimumkan untuk tempatan
mesin di bawah kekangan set arahan yang dipilih.

i386
CPU Intel i386 asal.

i486
CPU Intel i486. (Tiada penjadualan dilaksanakan untuk cip ini.)

i586
pentium
CPU Intel Pentium tanpa sokongan MMX.

pentium-mmx
CPU Intel Pentium MMX, berasaskan teras Pentium dengan sokongan set arahan MMX.

pentiumpro
CPU Intel Pentium Pro.

i686
Apabila digunakan dengan -berbaris, set arahan Pentium Pro digunakan, jadi kod berjalan
pada semua cip keluarga i686. Apabila digunakan dengan -mtune, ia mempunyai maksud yang sama dengan
generik.

pentium2
CPU Intel Pentium II, berdasarkan teras Pentium Pro dengan sokongan set arahan MMX.

pentium3
pentium3m
CPU Intel Pentium III, berdasarkan teras Pentium Pro dengan set arahan MMX dan SSE
sokongan.

pentium-m
Intel Pentium M; versi berkuasa rendah CPU Intel Pentium III dengan MMX, SSE dan SSE2
sokongan set arahan. Digunakan oleh buku nota Centrino.

pentium4
pentium4m
CPU Intel Pentium 4 dengan sokongan set arahan MMX, SSE dan SSE2.

prescott
Versi CPU Intel Pentium 4 yang dipertingkatkan dengan arahan MMX, SSE, SSE2 dan SSE3
tetapkan sokongan.

nocona
Versi CPU Intel Pentium 4 yang dipertingkatkan dengan sambungan 64-bit, MMX, SSE, SSE2 dan
Sokongan set arahan SSE3.

core2
CPU Intel Core 2 dengan sambungan 64-bit, MMX, SSE, SSE2, SSE3 dan SSSE3
sokongan set arahan.

nehalem
CPU Intel Nehalem dengan sambungan 64-bit, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
Sokongan set arahan SSE4.2 dan POPCNT.

westmere
CPU Intel Westmere dengan sambungan 64-bit, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
Sokongan set arahan SSE4.2, POPCNT, AES dan PCLMUL.

jambatan pasir
CPU Intel Sandy Bridge dengan sambungan 64-bit, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, AVX, AES dan sokongan set arahan PCLMUL.

ivybridge
CPU Intel Ivy Bridge dengan sambungan 64-bit, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
Set arahan SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND dan F16C
sokongan.

Haswell
CPU Intel Haswell dengan sambungan 64-bit, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2
dan sokongan set arahan F16C.

broadwell
CPU Intel Broadwell dengan sambungan 64-bit, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2,
Sokongan set arahan F16C, RDSEED, ADCX dan PREFETCHW.

bonnell
CPU Intel Bonnell dengan sambungan 64-bit, MOVBE, MMX, SSE, SSE2, SSE3 dan SSSE3
sokongan set arahan.

perakmont
CPU Intel Silvermont dengan sambungan 64-bit, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
Sokongan set arahan SSE4.1, SSE4.2, POPCNT, AES, PCLMUL dan RDRND.

knl CPU Pendaratan Intel Knight dengan sambungan 64-bit, MOVBE, MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER dan AVX512CD
sokongan set arahan.

k6 CPU AMD K6 dengan sokongan set arahan MMX.

k6-2
k6-3
Versi CPU AMD K6 yang dipertingkatkan dengan MMX dan 3DNow! sokongan set arahan.

Athlon
athlon-tbird
CPU AMD Athlon dengan MMX, 3dNOW!, 3DNow dipertingkatkan! dan arahan prefetch SSE
sokongan.

atlon-4
athlon-xp
athlon-mp
CPU AMD Athlon yang dipertingkatkan dengan MMX, 3DNow!, 3DNow dipertingkatkan! dan arahan SSE penuh
tetapkan sokongan.

k8
opteron
atlet64
athlon-fx
Pemproses berdasarkan teras AMD K8 dengan sokongan set arahan x86-64, termasuk
pemproses AMD Opteron, Athlon 64 dan Athlon 64 FX. (Ini superset MMX,
SSE, SSE2, 3DNow!, 3DNow dipertingkatkan! dan sambungan set arahan 64-bit.)

k8-sse3
opteron-sse3
athlon64-sse3
Versi teras AMD K8 yang dipertingkatkan dengan sokongan set arahan SSE3.

amdfam10
Barcelona
CPU berdasarkan teras AMD Family 10h dengan sokongan set arahan x86-64. (Ini
superset MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, 3DNow!, ABM dan 64-bit dipertingkatkan
sambungan set arahan.)

bdver1
CPU berdasarkan teras AMD Family 15h dengan sokongan set arahan x86-64. (Ini
superset FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A,
SSSE3, SSE4.1, SSE4.2, ABM dan sambungan set arahan 64-bit.)

bdver2
CPU berasaskan teras Keluarga AMD 15j dengan sokongan set arahan x86-64. (Ini
superset BMI, TBM, F16C, FMA, FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE,
SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM dan set arahan 64-bit
sambungan.)

bdver3
CPU berasaskan teras Keluarga AMD 15j dengan sokongan set arahan x86-64. (Ini
superset BMI, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, XOP, LWP, AES, PCL_MUL, CX16,
MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM dan set arahan 64-bit
sambungan.

bdver4
CPU berasaskan teras Keluarga AMD 15j dengan sokongan set arahan x86-64. (Ini
superset BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP, AES,
PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM dan
Sambungan set arahan 64-bit.

btver1
CPU berdasarkan teras AMD Family 14h dengan sokongan set arahan x86-64. (Ini
superset MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM dan set arahan 64-bit
sambungan.)

btver2
CPU berdasarkan teras AMD Family 16h dengan sokongan set arahan x86-64. ini
termasuk MOVBE, F16C, BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM, SSE4A,
SSSE3, SSE3, SSE2, SSE, MMX dan sambungan set arahan 64-bit.

winchip-c6
CPU IDT WinChip C6, ditangani dengan cara yang sama seperti i486 dengan set arahan MMX tambahan
sokongan.

winchip2
CPU IDT WinChip 2, ditangani dengan cara yang sama seperti i486 dengan tambahan MMX dan 3DNow!
sokongan set arahan.

c3 MELALUI CPU C3 dengan MMX dan 3DNow! sokongan set arahan. (Tiada penjadualan
dilaksanakan untuk cip ini.)

c3-2
VIA C3-2 (Nehemiah/C5XL) CPU dengan sokongan set arahan MMX dan SSE. (Tidak
penjadualan dilaksanakan untuk cip ini.)

geode
Pemproses terbenam AMD Geode dengan MMX dan 3DNow! sokongan set arahan.

-mtune=jenis cpu
Tune ke jenis cpu semua yang berkenaan tentang kod yang dijana, kecuali untuk ABI
dan set arahan yang tersedia. Semasa memilih tertentu jenis cpu jadual
perkara yang sesuai untuk cip tertentu itu, pengkompil tidak menjana sebarang kod
yang tidak boleh dijalankan pada jenis mesin lalai melainkan anda menggunakan a -march=jenis cpu pilihan.
Sebagai contoh, jika GCC dikonfigurasikan untuk i686-pc-linux-gnu maka -mtune=pentium4 menjana
kod yang ditala untuk Pentium 4 tetapi masih berjalan pada mesin i686.

Pilihan untuk jenis cpu sama seperti untuk -berbaris. Sebagai tambahan, -mtune menyokong 2
pilihan tambahan untuk jenis cpu:

generik
Hasilkan kod yang dioptimumkan untuk pemproses IA32/AMD64/EM64T yang paling biasa. Jika awak
tahu CPU di mana kod anda akan dijalankan, maka anda harus menggunakan yang sepadan
-mtune or -berbaris pilihan dan bukannya -mtune=generik. Tetapi, jika anda tidak tahu
apa yang pengguna CPU aplikasi anda akan miliki, maka anda harus menggunakan ini
pilihan.

Memandangkan pemproses baharu digunakan di pasaran, gelagat pilihan ini
akan berubah. Oleh itu, jika anda menaik taraf kepada versi GCC yang lebih baharu, penjanaan kod
dikawal oleh pilihan ini akan berubah untuk mencerminkan pemproses yang paling banyak
biasa pada masa versi GCC dikeluarkan.

Tidak ada -march=generik pilihan kerana -berbaris menunjukkan arahan yang ditetapkan
pengkompil boleh digunakan, dan tiada set arahan generik yang boleh digunakan untuk semua
pemproses. Berbeza, -mtune menunjukkan pemproses (atau, dalam kes ini,
koleksi pemproses) yang mana kod itu dioptimumkan.

Intel
Hasilkan kod yang dioptimumkan untuk pemproses Intel terkini, iaitu Haswell
dan Silvermont untuk versi GCC ini. Jika anda tahu CPU di mana kod anda
akan berjalan, maka anda harus menggunakan yang sepadan -mtune or -berbaris pilihan dan bukannya
-mtune=intel. Tetapi, jika anda mahu aplikasi anda berprestasi lebih baik pada kedua-dua Haswell
dan Silvermont, maka anda harus menggunakan pilihan ini.

Memandangkan pemproses Intel baharu digunakan di pasaran, tingkah laku ini
pilihan akan berubah. Oleh itu, jika anda menaik taraf kepada versi GCC yang lebih baharu, kod
generasi yang dikawal oleh pilihan ini akan berubah untuk mencerminkan Intel terkini
pemproses pada masa versi GCC dikeluarkan.

Tidak ada -march=intel pilihan kerana -berbaris menunjukkan arahan yang ditetapkan
pengkompil boleh digunakan, dan tiada set arahan biasa digunakan untuk semua
pemproses. Berbeza, -mtune menunjukkan pemproses (atau, dalam kes ini,
koleksi pemproses) yang mana kod itu dioptimumkan.

-mcpu=jenis cpu
Sinonim yang tidak digunakan lagi untuk -mtune.

-mfpmath=unit
Hasilkan aritmetik titik terapung untuk unit yang dipilih unit. Pilihan untuk unit ialah:

387 Gunakan pemproses bersama titik terapung standard 387 yang terdapat pada kebanyakan cip
dan dicontohi sebaliknya. Kod yang disusun dengan pilihan ini berjalan hampir di mana-mana.
Keputusan sementara dikira dalam ketepatan 80-bit dan bukannya ketepatan
ditentukan mengikut jenis, menghasilkan keputusan yang sedikit berbeza berbanding kebanyakan
kerepek lain. Lihat -kedai terapung untuk penerangan yang lebih terperinci.

Ini ialah pilihan lalai untuk sasaran x86-32.

ess Gunakan arahan titik terapung skalar yang terdapat dalam set arahan SSE. ini
set arahan disokong oleh Pentium III dan cip yang lebih baru, dan dalam barisan AMD
oleh Athlon-4, Athlon XP dan cip MP Athlon. Versi terdahulu SSE
set arahan hanya menyokong aritmetik ketepatan tunggal, oleh itu double dan
aritmetik kepersisan lanjutan masih dilakukan menggunakan 387. Versi kemudian, kini
hanya dalam cip Pentium 4 dan AMD x86-64, menyokong aritmetik berketepatan ganda juga.

Untuk pengkompil x86-32, anda mesti menggunakan -march=jenis cpu, -msse or -msse2 beralih ke
dayakan sambungan SSE dan jadikan pilihan ini berkesan. Untuk pengkompil x86-64,
sambungan ini didayakan secara lalai.

Kod yang terhasil seharusnya jauh lebih pantas dalam kebanyakan kes dan
elakkan masalah ketidakstabilan berangka kod 387, tetapi mungkin memecahkan beberapa kod sedia ada
kod yang menjangkakan sementara ialah 80 bit.

Ini ialah pilihan lalai untuk pengkompil x86-64.

sse,387
sse+387
kedua-dua
Cuba gunakan kedua-dua set arahan sekaligus. Ini dengan berkesan menggandakan
jumlah daftar yang tersedia, dan pada cip dengan unit pelaksanaan berasingan untuk 387
dan SSE sumber pelaksanaan juga. Gunakan pilihan ini dengan berhati-hati, kerana ia masih
eksperimen, kerana pengalokasi daftar GCC tidak membuat model berasingan
unit berfungsi dengan baik, mengakibatkan prestasi tidak stabil.

-masm=dialek
Arahan pemasangan output menggunakan pilihan dialek. Juga mempengaruhi dialek mana
digunakan untuk asas "asm" dan lanjutan "asm". Pilihan yang disokong (dalam susunan dialek) ialah att
or Intel. Lalai adalah att. Darwin tidak menyokong Intel.

-mieee-fp
-mno-ieee-fp
Kawal sama ada pengkompil menggunakan perbandingan titik terapung IEEE atau tidak. Ini
mengendalikan dengan betul kes di mana hasil perbandingan tidak tersusun.

-msoft-float
Hasilkan output yang mengandungi panggilan perpustakaan untuk titik terapung.

Amaran: perpustakaan yang diperlukan bukan sebahagian daripada GCC. Biasanya kemudahan di
pengkompil C biasa mesin digunakan, tetapi ini tidak boleh dilakukan secara langsung dalam
kompilasi. Anda mesti membuat pengaturan anda sendiri untuk menyediakan perpustakaan yang sesuai
fungsi untuk kompilasi silang.

Pada mesin di mana fungsi mengembalikan hasil titik terapung dalam daftar 80387
tindanan, beberapa opcode titik terapung mungkin dipancarkan walaupun jika -msoft-float digunakan.

-mno-fp-ret-in-387
Jangan gunakan daftar FPU untuk mengembalikan nilai fungsi.

Konvensyen panggilan biasa mempunyai fungsi mengembalikan nilai jenis "float" dan "double"
dalam daftar FPU, walaupun tiada FPU. Ideanya ialah sistem pengendalian
harus mencontohi FPU.

pilihan -mno-fp-ret-in-387 menyebabkan nilai tersebut dikembalikan dalam CPU biasa
mendaftar sebaliknya.

-mno-fancy-math-387
Sebilangan 387 emulator tidak menyokong arahan "sin", "cos" dan "sqrt" untuk
387. Tentukan pilihan ini untuk mengelak daripada menjana arahan tersebut. Pilihan ini ialah
lalai pada OpenBSD dan NetBSD. Pilihan ini ditindih apabila -berbaris menunjukkan bahawa
CPU sasaran sentiasa mempunyai FPU dan oleh itu arahan tidak memerlukan emulasi.
Arahan ini tidak dijana melainkan anda juga menggunakan
-funsafe-math-optimizations suis.

-malign-double
-mno-align-double
Kawal sama ada GCC menjajarkan pembolehubah "double", "long double" dan "long long" pada a
sempadan dua perkataan atau sempadan satu perkataan. Menjajarkan pembolehubah "berganda" pada dua perkataan
sempadan menghasilkan kod yang berjalan agak cepat pada Pentium dengan mengorbankan lebih banyak
memori.

Pada x86-64, -malign-double didayakan secara lalai.

Amaran: jika anda menggunakan -malign-double suis, struktur yang mengandungi jenis di atas
diselaraskan secara berbeza daripada spesifikasi antara muka binari aplikasi yang diterbitkan
untuk x86-32 dan tidak serasi binari dengan struktur dalam kod yang disusun tanpa
suis itu.

-m96bit-long-double
-m128bit-long-double
Suis ini mengawal saiz jenis "ganda panjang". Perduaan aplikasi x86-32
antara muka menentukan saiz menjadi 96 bit, jadi -m96bit-long-double ialah lalai dalam
Mod 32-bit.

Seni bina moden (Pentium dan lebih baru) lebih suka "berganda panjang" untuk diselaraskan dengan 8-
atau sempadan 16 bait. Dalam tatasusunan atau struktur yang mematuhi ABI, ini tidak
mungkin. Jadi menentukan -m128bit-long-double menjajarkan "ganda panjang" kepada 16-bait
sempadan dengan mengalas "ganda panjang" dengan sifar 32-bit tambahan.

Dalam pengkompil x86-64, -m128bit-long-double ialah pilihan lalai sebagai ABInya
menentukan bahawa "ganda panjang" dijajarkan pada sempadan 16-bait.

Perhatikan bahawa kedua-dua pilihan ini tidak membolehkan sebarang ketepatan tambahan berbanding standard x87
sebanyak 80 bit untuk "ganda panjang".

Amaran: jika anda mengatasi nilai lalai untuk ABI sasaran anda, ini mengubah saiz
struktur dan tatasusunan yang mengandungi pembolehubah "berganda panjang", serta mengubah suai
konvensyen panggilan fungsi untuk fungsi yang mengambil "ganda panjang". Oleh itu mereka tidak
serasi binari dengan kod yang disusun tanpa suis itu.

-mlong-double-64
-mlong-double-80
-mlong-double-128
Suis ini mengawal saiz jenis "ganda panjang". Saiz 64 bit menjadikan
jenis "double panjang" bersamaan dengan jenis "double". Ini adalah lalai untuk 32-bit
Perpustakaan Bionic C. Saiz 128 bit menjadikan jenis "ganda panjang" bersamaan dengan
Jenis "__float128". Ini adalah lalai untuk perpustakaan Bionic C 64-bit.

Amaran: jika anda mengatasi nilai lalai untuk ABI sasaran anda, ini mengubah saiz
struktur dan tatasusunan yang mengandungi pembolehubah "berganda panjang", serta mengubah suai
konvensyen panggilan fungsi untuk fungsi yang mengambil "ganda panjang". Oleh itu mereka tidak
serasi binari dengan kod yang disusun tanpa suis itu.

-malign-data=jenis
Kawal cara GCC menjajarkan pembolehubah. Nilai yang disokong untuk jenis adalah compat penggunaan meningkat
nilai penjajaran serasi menggunakan GCC 4.8 dan lebih awal, abi menggunakan nilai penjajaran sebagai
ditentukan oleh psABI, dan talian cache menggunakan peningkatan nilai penjajaran untuk memadankan
saiz baris cache. compat adalah lalai.

-mlarge-data-threshold=ambang
Bila -mcmodel=sederhana ditentukan, objek data lebih besar daripada ambang diletakkan di
bahagian data yang besar. Nilai ini mestilah sama merentas semua objek yang dipautkan
binari, dan lalai kepada 65535.

-mrtd
Gunakan konvensyen panggilan fungsi yang berbeza, di mana fungsi yang mengambil tetap
bilangan argumen kembali dengan "ret nombor" arahan, yang menimbulkan hujah mereka
semasa balik. Ini menjimatkan satu arahan dalam pemanggil kerana tidak perlu
pop hujah di sana.

Anda boleh menentukan bahawa fungsi individu dipanggil dengan urutan panggilan ini dengan
atribut fungsi "stdcall". Anda juga boleh mengatasi -mrtd pilihan dengan menggunakan
atribut fungsi "cdecl".

Amaran: konvensyen panggilan ini tidak serasi dengan yang biasa digunakan pada Unix,
jadi anda tidak boleh menggunakannya jika anda perlu memanggil perpustakaan yang disusun dengan pengkompil Unix.

Selain itu, anda mesti menyediakan prototaip fungsi untuk semua fungsi yang mengambil pembolehubah
bilangan hujah (termasuk "printf"); jika tidak kod yang salah dijana untuk
panggilan ke fungsi tersebut.

Di samping itu, keputusan kod yang salah jika anda memanggil fungsi dengan terlalu banyak
hujah. (Biasanya, hujah tambahan diabaikan tanpa bahaya.)

-mregparm=num
Kawal bilangan daftar yang digunakan untuk menghantar hujah integer. Secara lalai, tidak
daftar digunakan untuk lulus hujah, dan paling banyak 3 daftar boleh digunakan. Awak boleh
mengawal tingkah laku ini untuk fungsi tertentu dengan menggunakan atribut fungsi
"regparm".

Amaran: jika anda menggunakan suis ini, dan num adalah bukan sifar, maka anda mesti membina semua modul
dengan nilai yang sama, termasuk mana-mana perpustakaan. Ini termasuk perpustakaan sistem dan
modul permulaan.

-msseregparm
Gunakan konvensyen lulus daftar SSE untuk argumen apungan dan berganda serta nilai pulangan.
Anda boleh mengawal tingkah laku ini untuk fungsi tertentu dengan menggunakan atribut fungsi
"sseregparm".

Amaran: jika anda menggunakan suis ini maka anda mesti membina semua modul dengan nilai yang sama,
termasuk mana-mana perpustakaan. Ini termasuk perpustakaan sistem dan modul permulaan.

-mvect8-ret-in-mem
Kembalikan vektor 8-bait dalam ingatan dan bukannya daftar MMX. Ini adalah lalai hidup
Solaris@tie{}8 dan 9 serta VxWorks untuk memadankan ABI penyusun Studio Sun sehingga
versi 12. Versi pengkompil kemudian (bermula dengan Studio 12 Update@tie{}1) mengikuti
ABI yang digunakan oleh sasaran x86 lain, yang merupakan lalai pada Solaris@tie{}10 ​​dan lebih baru.
Hanya gunakan pilihan ini jika anda perlu kekal serasi dengan kod sedia ada yang dihasilkan oleh
versi pengkompil sebelumnya atau versi lama GCC.

-mpc32
-mpc64
-mpc80
Tetapkan ketepatan titik terapung 80387 kepada 32, 64 atau 80 bit. Bila -mpc32 dinyatakan,
signifikan hasil operasi titik terapung dibundarkan kepada 24 bit
(ketepatan tunggal); -mpc64 membundarkan kepentingan hasil titik terapung
operasi kepada 53 bit (kepersisan berganda) dan -mpc80 membulatkan kepentingan keputusan
operasi titik terapung kepada 64 bit (kepersisan berganda lanjutan), iaitu
lalai. Apabila pilihan ini digunakan, operasi titik terapung dalam ketepatan yang lebih tinggi adalah
tidak tersedia kepada pengaturcara tanpa menetapkan perkataan kawalan FPU secara eksplisit.

Menetapkan pembundaran operasi titik terapung kepada kurang daripada 80 bit lalai boleh
mempercepatkan beberapa program sebanyak 2% atau lebih. Ambil perhatian bahawa sesetengah perpustakaan matematik menganggapnya
operasi titik terapung berketepatan lanjutan (80-bit) didayakan secara lalai; rutin
dalam perpustakaan sedemikian boleh mengalami kehilangan ketepatan yang ketara, biasanya melalui
dipanggil "pembatalan bencana", apabila pilihan ini digunakan untuk menetapkan ketepatan kepada
kurang daripada ketepatan lanjutan.

-mstackrealign
Selaraskan semula tindanan pada kemasukan. Pada x86, yang -mstackrealign pilihan menjana an
prolog dan epilog ganti yang menjajarkan semula timbunan masa jalan jika perlu. ini
menyokong pencampuran kod warisan yang mengekalkan penjajaran tindanan 4-bait dengan kod moden yang
simpan penjajaran tindanan 16-bait untuk keserasian SSE. Lihat juga atribut
"force_align_arg_pointer", terpakai kepada fungsi individu.

-sempadan-timbunan-pilihan=num
Cuba untuk memastikan sempadan tindanan sejajar dengan 2 dinaikkan ke num sempadan bait. Jika
-sempadan-timbunan-pilihan tidak ditentukan, lalainya ialah 4 (16 bait atau 128 bit).

Amaran: Apabila menjana kod untuk seni bina x86-64 dengan sambungan SSE
kurang upaya, -sempadan-timbunan-pilihan=3 boleh digunakan untuk memastikan sempadan tindanan sejajar
kepada sempadan 8 bait. Memandangkan x86-64 ABI memerlukan penjajaran tindanan 16 bait, ini ialah ABI
tidak serasi dan bertujuan untuk digunakan dalam persekitaran terkawal di mana ruang tindanan berada
had penting. Pilihan ini membawa kepada kod yang salah apabila fungsi disusun dengan 16
penjajaran timbunan bait (seperti fungsi daripada perpustakaan standard) dipanggil dengan
timbunan tidak sejajar. Dalam kes ini, arahan SSE mungkin membawa kepada akses memori yang tidak sejajar
perangkap. Di samping itu, argumen pembolehubah dikendalikan secara salah untuk 16 bait sejajar
objek (termasuk x87 long double dan __int128), membawa kepada hasil yang salah. Kamu mesti
membina semua modul dengan -sempadan-timbunan-pilihan=3, termasuk mana-mana perpustakaan. ini
termasuk perpustakaan sistem dan modul permulaan.

-sempadan-tindanan-mincoming=num
Andaikan tindanan masuk diselaraskan dengan 2 yang dinaikkan ke num sempadan bait. Jika
-sempadan-tindanan-mincoming tidak dinyatakan, yang ditentukan oleh
-sempadan-timbunan-pilihan digunakan.

Pada Pentium dan Pentium Pro, nilai "double" dan "long double" hendaklah diselaraskan dengan a
Sempadan 8-bait (lihat -malign-double) atau mengalami prestasi masa larian yang ketara
penalti. Pada Pentium III, jenis data Sambungan SIMD Penstriman (SSE) "__m128" mungkin
tidak berfungsi dengan betul jika ia tidak sejajar 16-bait.

Untuk memastikan penjajaran yang betul bagi nilai ini pada tindanan, sempadan tindanan mestilah seperti
diselaraskan seperti yang diperlukan oleh mana-mana nilai yang disimpan pada tindanan. Selanjutnya, setiap fungsi
mesti dijana supaya ia memastikan timbunan sejajar. Oleh itu memanggil fungsi
disusun dengan sempadan tindanan pilihan yang lebih tinggi daripada fungsi yang disusun dengan yang lebih rendah
sempadan tindanan yang diutamakan berkemungkinan besar tidak menjajarkan tindanan. Adalah disyorkan bahawa
perpustakaan yang menggunakan panggilan balik sentiasa menggunakan tetapan lalai.

Penjajaran tambahan ini menggunakan ruang tindanan tambahan dan secara amnya meningkatkan kod
saiz. Kod yang sensitif terhadap penggunaan ruang tindanan, seperti sistem terbenam dan
kernel sistem pengendalian, mungkin mahu mengurangkan penjajaran pilihan kepada
-sempadan-timbunan-pilihan=2.

-mmmx
-msse
-msse2
-msse3
-mssse3
-msse4
-msse4a
-msse4.1
-msse4.2
-mavx
-mavx2
-mavx512f
-mavx512pf
-mavx512er
-mavx512cd
-msha
-maes
-mpclmul
-mclfushopt
-mfsgsbase
-mrdrnd
-mf16c
-mfma
-mfma4
-mno-fma4
-mprefetchwt1
-mxop
-mlwp
-m3dnow
-mpopcnt
-mabm
-mbmi
-mbmi2
-mlzcnt
-mfxsr
-mxsave
-mxsaveopt
-mxsavec
-mxsaves
-mrtm
-mtbm
-mmpx
-mmwaitx
Suis ini membolehkan penggunaan arahan dalam MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, AVX, AVX2, AVX512F, AVX512PF, AVX512ER, AVX512CD, SHA, AES, PCLMUL, FSGSBASE,
RDRND, F16C, FMA, SSE4A, FMA4, XOP, LWP, ABM, BMI, BMI2, FXSR, XSAVE, XSAVEOPT, LZCNT,
RTM, MPX, MWAITX atau 3DNow! set arahan lanjutan. Masing-masing ada yang sepadan -mno-
pilihan untuk melumpuhkan penggunaan arahan ini.

Sambungan ini juga tersedia sebagai fungsi terbina dalam: lihat x86 Terbina dalam Fungsi,
untuk butiran fungsi yang didayakan dan dilumpuhkan oleh suis ini.

Untuk menjana arahan SSE/SSE2 secara automatik daripada kod titik terapung (sebagai lawan
kepada 387 arahan), lihat -mfpmath=sse.

GCC menekan arahan SSEx apabila -mavx digunakan. Sebaliknya, ia menjana AVX baharu
arahan atau kesetaraan AVX untuk semua arahan SSEx apabila diperlukan.

Pilihan ini membolehkan GCC menggunakan arahan lanjutan ini dalam kod yang dijana, malah
tanpa -mfpmath=sse. Aplikasi yang melakukan pengesanan CPU masa jalan mesti disusun
fail berasingan untuk setiap seni bina yang disokong, menggunakan bendera yang sesuai. Dalam
khususnya, fail yang mengandungi kod pengesanan CPU harus disusun tanpa
pilihan ini.

-mdump-tune-features
Pilihan ini mengarahkan GCC untuk membuang nama ciri penalaan prestasi x86 dan
tetapan lalai. Nama boleh digunakan dalam -mtune-ctrl=senarai ciri.

-mtune-ctrl=senarai ciri
Pilihan ini digunakan untuk melakukan kawalan butiran halus bagi ciri penjanaan kod x86.
senarai ciri ialah senarai dipisahkan koma bagi ciri nama. Lihat juga
-mdump-tune-features. Apabila dinyatakan, ciri dihidupkan jika ia tidak didahului
dengan ^, jika tidak, ia dimatikan. -mtune-ctrl=senarai ciri adalah bertujuan untuk digunakan
oleh pemaju GCC. Menggunakannya boleh membawa kepada laluan kod yang tidak dilindungi oleh ujian dan boleh
berpotensi mengakibatkan ICE pengkompil atau ralat masa jalan.

-mno-lalai
Pilihan ini mengarahkan GCC untuk mematikan semua ciri boleh tala. Lihat juga
-mtune-ctrl=senarai ciri dan -mdump-tune-features.

-mcld
Pilihan ini mengarahkan GCC untuk mengeluarkan arahan "cld" dalam prolog fungsi
yang menggunakan arahan rentetan. Arahan rentetan bergantung pada bendera DF untuk dipilih
antara mod autoincrement atau autodeccrement. Manakala ABI menentukan bendera DF kepada
dibersihkan pada kemasukan fungsi, sesetengah sistem pengendalian melanggar spesifikasi ini dengan tidak
membersihkan bendera DF dalam penghantar pengecualian mereka. Pengendali pengecualian boleh
digunakan dengan set bendera DF, yang membawa kepada mod arah yang salah apabila rentetan
arahan digunakan. Pilihan ini boleh didayakan secara lalai pada sasaran x32 86-bit dengan
mengkonfigurasi GCC dengan --dayakan-cld konfigurasi pilihan. Penjanaan "cld"
arahan boleh ditindas dengan -mno-cld pilihan pengkompil dalam kes ini.

-mvzeroupper
Pilihan ini mengarahkan GCC untuk mengeluarkan arahan "vzeroupper" sebelum pemindahan
mengawal aliran keluar daripada fungsi untuk meminimumkan penalti peralihan AVX ke SSE juga
sebagai membuang intrinsik "sifar" yang tidak perlu.

-prefer-avx128
Pilihan ini mengarahkan GCC untuk menggunakan arahan AVX 128-bit dan bukannya AVX 256-bit
arahan dalam auto-vectorizer.

-mcx16
Pilihan ini membolehkan GCC menjana arahan "CMPXCHG16B". "CMPXCHG16B" membenarkan
untuk operasi atom pada jenis data 128-bit double quadword (atau oword). Ini adalah
berguna untuk kaunter resolusi tinggi yang boleh dikemas kini oleh berbilang pemproses (atau
teras). Arahan ini dijana sebagai sebahagian daripada fungsi terbina dalam atom: lihat
__sync terbina or __atom terbina untuk maklumat lanjut.

-msahf
Pilihan ini membolehkan penjanaan arahan "SAHF" dalam kod 64-bit. Intel awal
CPU Pentium 4 dengan sokongan Intel 64, sebelum pengenalan langkah Pentium 4 G1
pada Disember 2005, tidak mempunyai arahan "LAHF" dan "SAHF" yang disokong oleh
AMD64. Ini adalah arahan muat dan simpan, masing-masing, untuk bendera status tertentu.
Dalam mod 64-bit, arahan "SAHF" digunakan untuk mengoptimumkan "fmod", "drem", dan
"baki" fungsi terbina dalam; lihat lain-lain terbina untuk maklumat lanjut.

-mmovbe
Pilihan ini membolehkan penggunaan arahan "movbe" untuk melaksanakan "__builtin_bswap32"
dan "__builtin_bswap64".

-mcrc32
Pilihan ini membolehkan fungsi terbina dalam "__builtin_ia32_crc32qi",
"__builtin_ia32_crc32hi", "__builtin_ia32_crc32si" dan "__builtin_ia32_crc32di" kepada
jana arahan mesin "crc32".

-mrecip
Pilihan ini membolehkan penggunaan arahan "RCPSS" dan "RSQRTSS" (dan arahan vektornya
varian "RCPPS" dan "RSQRTPS") dengan langkah Newton-Raphson tambahan untuk meningkat
ketepatan dan bukannya "DIVSS" dan "SQRTSS" (dan varian vektornya) untuk satu-
hujah titik terapung ketepatan. Arahan ini dijana hanya apabila
-funsafe-math-optimizations didayakan bersama-sama dengan -finite-matematik sahaja dan
-fno-perangkap-matematik. Ambil perhatian bahawa walaupun pemprosesan jujukan adalah lebih tinggi daripada
throughput arahan bukan timbal balik, ketepatan urutan boleh
menurun sehingga 2 ulp (iaitu songsangan 1.0 bersamaan 0.99999994).

Ambil perhatian bahawa GCC melaksanakan "1.0f/sqrtf(x)" dari segi "RSQRTSS" (atau "RSQRTPS") sudah pun
dengan -fast-matematik (atau gabungan pilihan di atas), dan tidak perlu -mrecip.

Juga ambil perhatian bahawa GCC mengeluarkan urutan di atas dengan langkah Newton-Raphson tambahan untuk
pembahagian apungan tunggal tervektor dan divektorkan "sqrtf(x)" sudah dengan -fast-matematik
(atau gabungan pilihan di atas), dan tidak perlu -mrecip.

-mrecip=pilih
Pilihan ini mengawal arahan anggaran timbal balik yang boleh digunakan. pilih ialah
senarai pilihan yang dipisahkan koma, yang mungkin didahului dengan a ! untuk menyongsangkan pilihan:

semua Dayakan semua arahan anggaran.

lalai
Dayakan arahan lalai, bersamaan dengan -mrecip.

tiada
Lumpuhkan semua arahan anggaran, bersamaan dengan -mno-resipi.

div Dayakan anggaran untuk pembahagian skalar.

vec-div
Dayakan anggaran untuk pembahagian tervektor.

persegi
Dayakan anggaran untuk punca kuasa dua skalar.

vec-sqrt
Dayakan anggaran untuk punca kuasa dua tervektor.

Jadi, sebagai contoh, -mrecip=semua,!sqrt membolehkan semua anggaran timbal balik,
kecuali punca kuasa dua.

-mveclibabi=jenis
Menentukan jenis ABI untuk digunakan untuk menvelokkan intrinsik menggunakan perpustakaan luaran.
Nilai yang disokong untuk jenis adalah svml untuk perpustakaan matematik vektor pendek Intel dan acml
untuk perpustakaan teras matematik AMD. Untuk menggunakan pilihan ini, kedua-duanya -free-vectorize dan
-funsafe-math-optimizations perlu didayakan dan serasi SVML atau ACML ABI
perpustakaan mesti dinyatakan pada masa pautan.

GCC pada masa ini mengeluarkan panggilan ke "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" dan "vmlsAcos4" untuk jenis fungsi yang sepadan apabila -mveclibabi=svml is
digunakan dan "__vrd2_sin", "__vrd2_cos", "__vrd2_exp", "__vrd2_log", "__vrd2_log2",
"__vrd2_log10", "__vrs4_sinf", "__vrs4_cosf", "__vrs4_expf", "__vrs4_logf",
"__vrs4_log2f", "__vrs4_log10f" dan "__vrs4_powf" untuk jenis fungsi yang sepadan
apabila -mveclibabi=acml digunakan.

-mabi=nama
Hasilkan kod untuk konvensyen panggilan yang ditentukan. Nilai yang dibenarkan ialah sysv untuk
ABI yang digunakan pada GNU/Linux dan sistem lain, dan ms untuk Microsoft ABI. The
lalai ialah menggunakan Microsoft ABI apabila menyasarkan Microsoft Windows dan SysV ABI
pada semua sistem lain. Anda boleh mengawal tingkah laku ini untuk fungsi tertentu dengan menggunakan
fungsi atribut "ms_abi" dan "sysv_abi".

-mtls-dialek=jenis
Hasilkan kod untuk mengakses storan setempat-benang menggunakan gnu or gnu2 konvensyen. gnu
ialah lalai konservatif; gnu2 adalah lebih cekap, tetapi ia boleh menambah penyusunan dan jalankan
keperluan masa yang tidak dapat dipenuhi pada semua sistem.

-push-args
-mno-push-args
Gunakan operasi PUSH untuk menyimpan parameter keluar. Kaedah ini lebih pendek dan biasanya
sama pantas seperti kaedah menggunakan operasi SUB/MOV dan didayakan secara lalai. Di sesetengah
kes melumpuhkannya mungkin meningkatkan prestasi kerana penjadualan yang lebih baik dan dikurangkan
kebergantungan.

-maccumulate-outgoing-args
Jika didayakan, jumlah maksimum ruang yang diperlukan untuk argumen keluar dikira masuk
prolog fungsi. Ini lebih pantas pada kebanyakan CPU moden kerana dikurangkan
kebergantungan, penjadualan yang lebih baik dan penggunaan tindanan yang dikurangkan apabila tindanan pilihan
sempadan tidak sama dengan 2. Kelemahannya ialah peningkatan ketara dalam saiz kod. ini
suis membayangkan -mno-push-args.

-mthreads
Sokong pengendalian pengecualian selamat benang pada MinGW. Program yang bergantung pada thread-safe
pengendalian pengecualian mesti menyusun dan memautkan semua kod dengan -mthreads pilihan. Bila
menyusun, -mthreads mentakrifkan -D_MT; apabila memaut, ia memaut dalam pembantu benang khas
perpustakaan -lmingwthrd yang membersihkan data pengendalian pengecualian setiap utas.

-mno-align-stringops
Jangan selaraskan destinasi operasi rentetan sebaris. Suis ini mengurangkan kod
saiz dan meningkatkan prestasi sekiranya destinasi sudah sejajar, tetapi GCC
tidak tahu mengenainya.

-minline-semua-stringops
Secara lalai GCC menyelaraskan operasi rentetan hanya apabila destinasi diketahui
diselaraskan dengan sekurang-kurangnya sempadan 4-bait. Ini membolehkan lebih banyak sebaris dan meningkatkan kod
saiz, tetapi boleh meningkatkan prestasi kod yang bergantung pada "memcpy" pantas, "strlen", dan
"memset" untuk panjang pendek.

-minline-stringops-dinamik
Untuk operasi rentetan saiz yang tidak diketahui, gunakan semakan masa jalan dengan kod sebaris untuk kecil
blok dan panggilan perpustakaan untuk blok besar.

-mstringop-strategi=alga
Gantikan heuristik keputusan dalaman untuk algoritma tertentu untuk digunakan
operasi rentetan sebaris. Nilai yang dibenarkan untuk alga ialah:

rep_bait
rep_4bait
rep_8bait
Kembangkan menggunakan awalan "rep" i386 dengan saiz yang ditentukan.

gelung_bait
gelung
gelung_terbuka
Kembangkan ke dalam gelung sebaris.

libcall
Sentiasa gunakan panggilan perpustakaan.

-mmemcpy-strategi=strategi
Gantikan heuristik keputusan dalaman untuk memutuskan sama ada "__builtin_memcpy" sepatutnya
sebaris dan apa algoritma sebaris untuk digunakan apabila saiz dijangka operasi salin
dikenali. strategi ialah senarai yang dipisahkan koma bagi alga:max_size:destin_align kembar tiga. alga
dinyatakan dalam -mstringop-strategi, max_size menentukan saiz bait maksimum yang digunakan
algoritma sebaris alga dibenarkan. Untuk triplet terakhir, yang max_size mestilah "-1". The
max_size daripada kembar tiga dalam senarai mesti dinyatakan dalam susunan yang semakin meningkat. The
saiz bait minimum untuk alga ialah 0 untuk triplet pertama dan "max_size + 1" daripada
julat sebelumnya.

-mmemset-strategi=strategi
Pilihannya serupa dengan -mmemcpy-strategi= kecuali ia adalah untuk mengawal
Pengembangan "__builtin_memset".

-petunjuk-bingkai-daun-momit
Jangan simpan penunjuk bingkai dalam daftar untuk fungsi daun. Ini mengelakkan
arahan untuk menyimpan, menyediakan dan memulihkan penunjuk bingkai dan membuat daftar tambahan
terdapat dalam fungsi daun. Pilihannya -fomit-leaf-frame-pointer mengeluarkan bingkai
penunjuk untuk fungsi daun, yang mungkin membuat penyahpepijatan lebih sukar.

-mtls-direct-seg-refs
-mno-tls-direct-seg-refs
Mengawal sama ada pembolehubah TLS boleh diakses dengan offset daripada segmen TLS
daftar (%gs untuk 32-bit, %fs untuk 64-bit), atau sama ada penuding asas benang mestilah
tambah. Sama ada ini sah atau tidak bergantung pada sistem pengendalian, dan sama ada ia
memetakan segmen untuk meliputi seluruh kawasan TLS.

Untuk sistem yang menggunakan Pustaka GNU C, lalai dihidupkan.

-msse2avx
-mno-sse2avx
Tentukan bahawa pemasang harus mengekod arahan SSE dengan awalan VEX. Pilihannya
-mavx menghidupkan ini secara lalai.

-mfentry
-mno-fentry
Jika profil aktif (-pg), letakkan panggilan kaunter pemprofilan sebelum prolog.
Nota: Pada seni bina x86 atribut "ms_hook_prologue" tidak boleh dilakukan di
seketika untuk -mfentry dan -pg.

-mrecord-mcount
-mno-record-mcount
Jika profil aktif (-pg), jana bahagian __mcount_loc yang mengandungi penunjuk
untuk setiap panggilan profil. Ini berguna untuk menampal dan mengeluarkan panggilan secara automatik.

-mnop-mcount
-mno-nop-mcount
Jika profil aktif (-pg), menjana panggilan ke fungsi pemprofilan sebagai nops.
Ini berguna apabila ia perlu ditampal kemudian secara dinamik. Ini berkemungkinan sahaja
berguna bersama-sama dengan -mrecord-mcount.

-mskip-rax-setup
-mno-skip-rax-setup
Apabila menjana kod untuk seni bina x86-64 dengan sambungan SSE dilumpuhkan,
-langkau-rax-setup boleh digunakan untuk melangkau penyediaan daftar RAX apabila tiada pembolehubah
hujah yang diluluskan dalam daftar vektor.

Amaran: Memandangkan daftar RAX digunakan untuk mengelak daripada menyimpan daftar vektor secara tidak perlu
timbunan apabila menghantar hujah pembolehubah, kesan pilihan ini ialah pemanggil boleh
buang sedikit ruang timbunan, berkelakuan buruk atau melompat ke lokasi rawak. GCC 4.4 atau lebih baharu
tidak mempunyai isu tersebut, tanpa mengira nilai daftar RAX.

-m8bit-idiv
-mno-8bit-idiv
Pada sesetengah pemproses, seperti Intel Atom, pembahagian integer tidak bertanda 8-bit adalah lebih pantas daripada
Pembahagian integer 32-bit/64-bit. Pilihan ini menjana semakan masa jalan. Jika kedua-duanya
dividen dan pembahagi berada dalam julat 0 hingga 255, pembahagian integer tidak bertanda 8-bit ialah
digunakan dan bukannya pembahagian integer 32-bit/64-bit.

-mavx256-split-unaligned-load
-mavx256-split-unaligned-store
Pisahkan muatan tidak sejajar 32-bait AVX dan simpan.

-mstack-protector-guard=pengawal
Hasilkan kod perlindungan tindanan menggunakan kenari di pengawal. Lokasi yang disokong ialah global
untuk kenari global atau tls untuk kenari per-benang dalam blok TLS (lalai). ini
pilihan mempunyai kesan hanya apabila -fstack-pelindung or -fstack-pelindung-semua dinyatakan.

Ini -m suis disokong sebagai tambahan kepada yang di atas pada pemproses x86-64 dalam 64-bit
persekitaran.

-m32
-m64
-mx32
-m16
Hasilkan kod untuk persekitaran 16-bit, 32-bit atau 64-bit. The -m32 set pilihan "int",
"panjang", dan jenis penunjuk kepada 32 bit, dan menjana kod yang berjalan pada mana-mana sistem i386.

. -m64 pilihan menetapkan "int" kepada 32 bit dan "panjang" dan jenis penunjuk kepada 64 bit, dan
menjana kod untuk seni bina x86-64. Untuk Darwin sahaja -m64 pilihan juga
mematikan -fno-pic dan -mdynamic-no-pic pilihan.

. -mx32 pilihan menetapkan "int", "long", dan jenis penunjuk kepada 32 bit, dan menjana kod
untuk seni bina x86-64.

. -m16 pilihan adalah sama seperti -m32, kecuali untuk itu ia mengeluarkan ".code16gcc"
arahan pemasangan pada permulaan output pemasangan supaya binari boleh berjalan
dalam mod 16-bit.

-mno-red-zon
Jangan gunakan apa yang dipanggil "zon merah" untuk kod x86-64. Zon merah diberi mandat oleh
x86-64 ABI; ia adalah kawasan 128-bait di luar lokasi penuding tindanan yang tidak
diubah suai oleh isyarat atau pengendali gangguan dan oleh itu boleh digunakan untuk data sementara
tanpa melaraskan penuding tindanan. Bendera -mno-red-zon melumpuhkan zon merah ini.

-mcmodel=kecil
Hasilkan kod untuk model kod kecil: program dan simbolnya mesti dipautkan
2 GB ruang alamat yang lebih rendah. Penunjuk adalah 64 bit. Program boleh
dipautkan secara statik atau dinamik. Ini ialah model kod lalai.

-mcmodel=kernel
Hasilkan kod untuk model kod kernel. Kernel berjalan dalam 2 GB negatif daripada
ruang alamat. Model ini perlu digunakan untuk kod kernel Linux.

-mcmodel=sederhana
Hasilkan kod untuk model sederhana: program dipautkan dalam 2 GB bahagian bawah
ruang alamat. Simbol-simbol kecil juga diletakkan di situ. Simbol dengan saiz lebih besar daripada
-mlarge-data-ambang dimasukkan ke dalam data besar atau bahagian BSS dan boleh dikesan
melebihi 2GB. Program boleh dipautkan secara statik atau dinamik.

-mcmodel=besar
Hasilkan kod untuk model besar. Model ini tidak membuat andaian tentang alamat
dan saiz bahagian.

-maddress-mode=panjang
Hasilkan kod untuk mod alamat panjang. Ini hanya disokong untuk 64-bit dan x32
persekitaran. Ia ialah mod alamat lalai untuk persekitaran 64-bit.

-maddress-mode=pendek
Hasilkan kod untuk mod alamat pendek. Ini hanya disokong untuk 32-bit dan x32
persekitaran. Ia ialah mod alamat lalai untuk persekitaran 32-bit dan x32.

x86 Windows Pilihan

Pilihan tambahan ini tersedia untuk sasaran Microsoft Windows:

-mconsole
Pilihan ini menentukan bahawa aplikasi konsol akan dijana, dengan mengarahkan
pemaut untuk menetapkan jenis subsistem pengepala PE yang diperlukan untuk aplikasi konsol.
Pilihan ini tersedia untuk sasaran Cygwin dan MinGW dan didayakan secara lalai pada
sasaran tersebut.

-mdll
Pilihan ini tersedia untuk sasaran Cygwin dan MinGW. Ia menyatakan bahawa DLL---a
perpustakaan pautan dinamik --- akan dijana, membolehkan pemilihan yang diperlukan
objek permulaan masa jalan dan titik masuk.

-mnop-fun-dllimport
Pilihan ini tersedia untuk sasaran Cygwin dan MinGW. Ia menyatakan bahawa
Atribut "dllimport" harus diabaikan.

-mthread
Pilihan ini tersedia untuk sasaran MinGW. Ia menentukan urutan khusus MinGW itu
sokongan akan digunakan.

-municode
Pilihan ini tersedia untuk sasaran MinGW-w64. Ia menyebabkan prapemproses "UNICODE".
makro untuk dipratentukan dan memilih kod permulaan masa jalan yang berkeupayaan Unicode.

-mwin32
Pilihan ini tersedia untuk sasaran Cygwin dan MinGW. Ia menyatakan bahawa tipikal
Makro pratakrif Microsoft Windows perlu ditetapkan dalam prapemproses, tetapi tidak
mempengaruhi pilihan perpustakaan masa jalan/kod permulaan.

-mwindows
Pilihan ini tersedia untuk sasaran Cygwin dan MinGW. Ia menyatakan bahawa GUI
aplikasi akan dijana dengan mengarahkan penghubung untuk menetapkan pengepala PE
jenis subsistem dengan sewajarnya.

-fno-set-stack-executable
Pilihan ini tersedia untuk sasaran MinGW. Ia menyatakan bahawa bendera boleh laku untuk
timbunan yang digunakan oleh fungsi bersarang tidak ditetapkan. Ini adalah perlu untuk binari berjalan
dalam mod kernel Microsoft Windows, kerana terdapat API User32, yang digunakan untuk menetapkan
keistimewaan boleh laku, tidak tersedia.

-fwritable-relocated-rdata
Pilihan ini tersedia untuk sasaran MinGW dan Cygwin. Ia menyatakan bahawa penempatan semula-
data dalam bahagian baca sahaja dimasukkan ke dalam bahagian .data. Ini adalah keperluan untuk orang yang lebih tua
runtimes tidak menyokong pengubahsuaian bahagian .rdata untuk pseudo-relocation.

-mpe-aligned-commons
Pilihan ini tersedia untuk sasaran Cygwin dan MinGW. Ia menyatakan bahawa GNU
sambungan kepada format fail PE yang membenarkan penjajaran pembolehubah BIASA yang betul
harus digunakan semasa menjana kod. Ia didayakan secara lalai jika GCC mengesan bahawa
pemasang sasaran yang ditemui semasa konfigurasi menyokong ciri tersebut.

Lihat juga di bawah x86 Pilihan untuk pilihan standard.

Xstormy16 Pilihan

Pilihan ini ditakrifkan untuk Xstormy16:

-msim
Pilih fail permulaan dan skrip pemaut yang sesuai untuk simulator.

Xtensa Pilihan

Pilihan ini disokong untuk sasaran Xtensa:

-mconst16
-mno-const16
Dayakan atau lumpuhkan penggunaan arahan "CONST16" untuk memuatkan nilai tetap. The
Arahan "CONST16" pada masa ini bukan pilihan standard daripada Tensilica. Bila
didayakan, arahan "CONST16" sentiasa digunakan sebagai ganti "L32R" standard
arahan. Penggunaan "CONST16" didayakan secara lalai hanya jika "L32R"
arahan tidak tersedia.

-mfused-gila
-mno-fused-madd
Dayakan atau lumpuhkan penggunaan arahan darab/tambah dan darab/tolak bercantum dalam
pilihan titik terapung. Ini tidak mempunyai kesan jika pilihan titik terapung tidak juga
didayakan. Melumpuhkan arahan darab/tambah dan darab/tolak bercantum memaksa
pengkompil untuk menggunakan arahan berasingan untuk operasi darab dan tambah/tolak.
Ini mungkin wajar dalam beberapa kes di mana keputusan yang mematuhi IEEE 754 yang ketat adalah
diperlukan: arahan tambah/tolak darab bercantum tidak membundarkan perantaraan
hasil, dengan itu menghasilkan hasil dengan lebih bit ketepatan daripada yang ditentukan oleh
piawaian IEEE. Melumpuhkan arahan tambah/tolak darab gabungan juga memastikannya
output atur cara tidak sensitif kepada keupayaan pengkompil untuk menggabungkan darab dan
operasi tambah/tolak.

-mserialize-volatile
-mno-serialize-volatile
Apabila pilihan ini didayakan, GCC memasukkan arahan "MEMW" sebelum memori "tidak menentu".
rujukan untuk menjamin konsistensi berurutan. Lalainya ialah -mserialize-volatile.
Penggunaan -mno-serialize-volatile untuk meninggalkan arahan "MEMW".

-mforce-no-pic
Untuk sasaran, seperti GNU/Linux, di mana semua kod Xtensa mod pengguna mesti diletakkan-
kod bebas (PIC), pilihan ini melumpuhkan PIC untuk menyusun kod kernel.

-mtext-section-literals
-mno-text-section-literals
Pilihan ini mengawal rawatan kolam literal. Lalainya ialah
-mno-text-section-literals, yang meletakkan literal dalam bahagian berasingan dalam output
fail. Ini membolehkan kumpulan literal diletakkan dalam RAM/ROM data, dan ia juga membenarkan
pemaut untuk menggabungkan kumpulan literal daripada fail objek berasingan untuk mengalih keluar berlebihan
literal dan meningkatkan saiz kod. Dengan -mtext-section-literals, hurufnya ialah
diselang-seli dalam bahagian teks untuk memastikan mereka sedekat mungkin dengan mereka
rujukan. Ini mungkin diperlukan untuk fail pemasangan yang besar.

-mtarget-align
-mno-target-align
Apabila pilihan ini didayakan, GCC mengarahkan pemasang untuk menjajarkan secara automatik
arahan untuk mengurangkan penalti cawangan dengan mengorbankan beberapa ketumpatan kod. The
assembler cuba untuk meluaskan arahan ketumpatan untuk menyelaraskan sasaran cawangan dan
arahan mengikut arahan panggilan. Jika tidak mencukupi sebelum selamat
arahan ketumpatan untuk menjajarkan sasaran, tiada pelebaran dilakukan. Lalainya ialah
-mtarget-align. Pilihan ini tidak menjejaskan rawatan penjajaran automatik
arahan seperti "LOOP", yang sentiasa diselaraskan oleh pemasang, sama ada dengan melebarkan
arahan ketumpatan atau dengan memasukkan arahan NOP.

-mlongcalls
-mno-panggilan panjang
Apabila pilihan ini didayakan, GCC mengarahkan pemasang untuk menterjemah panggilan terus ke
panggilan tidak langsung melainkan ia boleh menentukan bahawa sasaran panggilan langsung adalah dalam
julat yang dibenarkan oleh arahan panggilan. Terjemahan ini biasanya berlaku untuk panggilan ke
berfungsi dalam fail sumber lain. Khususnya, penghimpun menterjemah langsung
Arahan "CALL" ke dalam "L32R" diikuti dengan arahan "CALLX". Lalainya ialah
-mno-panggilan panjang. Pilihan ini harus digunakan dalam program yang boleh digunakan oleh sasaran panggilan
berpotensi berada di luar jangkauan. Pilihan ini dilaksanakan dalam pemasang, bukan pada
pengkompil, jadi kod pemasangan yang dijana oleh GCC masih menunjukkan panggilan terus
arahan---lihat kod objek yang dibongkar untuk melihat arahan sebenar.
Ambil perhatian bahawa pemasang menggunakan panggilan tidak langsung untuk setiap panggilan silang fail, bukan sahaja
mereka yang benar-benar berada di luar jangkauan.

zSeries Pilihan

Ini disenaraikan di bawah

Pilihan untuk Kod Generasi konvensyen
Pilihan bebas mesin ini mengawal konvensyen antara muka yang digunakan dalam kod
Generasi.

Kebanyakan daripada mereka mempunyai kedua-dua bentuk positif dan negatif; bentuk negatif daripada -ffoo is
-fno-foo. Dalam jadual di bawah, hanya satu daripada borang yang disenaraikan---yang bukan
lalai. Anda boleh mengetahui bentuk lain dengan sama ada mengalih keluar NO- atau menambahnya.

-fbounds-semak
Untuk hujung hadapan yang menyokongnya, hasilkan kod tambahan untuk menyemak indeks yang digunakan
tatasusunan akses berada dalam julat yang diisytiharkan. Ini pada masa ini hanya disokong oleh
Hadapan Java dan Fortran berakhir, di mana pilihan ini lalai kepada benar dan salah
masing-masing.

-fstack-reuse=peringkat guna semula
Pilihan ini mengawal penggunaan semula ruang tindanan untuk pembolehubah tempatan/auto yang diisytiharkan pengguna dan
pengkompil menghasilkan sementara. reuse_level boleh semua, bernama_vars, Atau tiada. semua
membolehkan penggunaan semula tindanan untuk semua pembolehubah tempatan dan sementara, bernama_vars membolehkan
guna semula hanya untuk pembolehubah tempatan yang ditentukan pengguna dengan nama, dan tiada melumpuhkan penggunaan semula tindanan
sepenuhnya. Nilai lalai ialah semua. Pilihan itu diperlukan apabila program dilanjutkan
jangka hayat pembolehubah tempatan berskop atau pengkompil yang dijana sementara di luar
titik akhir ditakrifkan oleh bahasa. Apabila seumur hidup pembolehubah berakhir, dan jika
pembolehubah hidup dalam ingatan, pengkompil pengoptimuman mempunyai kebebasan untuk menggunakan semula timbunannya
ruang dengan sementara lain atau pembolehubah tempatan berskop yang julat langsungnya tidak
bertindih dengannya. Kod warisan yang memanjangkan hayat tempatan berkemungkinan terputus dengan
pengoptimuman penggunaan semula tindanan.

Sebagai contoh,

int *p;
{
int local1;

p = &local1;
setempat1 = 10;
....
}
{
int local2;
setempat2 = 20;
...
}

if (*p == 10) // di luar skop penggunaan local1
{

}

Satu lagi contoh:

struktur A
{
A(int k) : i(k), j(k) { }
int i;
int j;
};

A *ap;

void foo(const A& ar)
{
ap = &ar;
}

bar kosong()
{
foo(A(10)); // jangka hayat objek temp tamat apabila foo kembali

{
A a(20);
....
}
ap->i+= 10; // rujukan ap daripada suhu skop yang ruangnya
// digunakan semula dengan a. Apakah nilai ap->i?
}

Jangka hayat pengkompil yang dijana sementara ditakrifkan dengan baik oleh piawaian C++.
Apabila seumur hidup yang sementara berakhir, dan jika yang sementara tinggal dalam ingatan, yang
pengoptimuman pengkompil mempunyai kebebasan untuk menggunakan semula ruang timbunannya dengan sementara lain atau
pembolehubah tempatan berskop yang julat langsungnya tidak bertindih dengannya. Bagaimanapun beberapa daripada
kod warisan bergantung pada gelagat penyusun lama di mana timbunan sementara
ruang tidak digunakan semula, penggunaan semula tindanan yang agresif boleh membawa kepada ralat masa jalan. ini
pilihan digunakan untuk mengawal pengoptimuman penggunaan semula timbunan sementara.

-ftrapv
Pilihan ini menjana perangkap untuk limpahan yang ditandatangani pada penambahan, penolakan,
operasi darab.

-fwrapv
Pilihan ini mengarahkan pengkompil untuk menganggap limpahan aritmetik yang ditandatangani
penambahan, penolakan dan pendaraban membalut menggunakan pelengkap dua-dua
perwakilan. Bendera ini membolehkan beberapa pengoptimuman dan melumpuhkan yang lain. ini
pilihan didayakan secara lalai untuk hujung hadapan Java, seperti yang diperlukan oleh bahasa Java
spesifikasi.

-pengecualian
Dayakan pengendalian pengecualian. Menjana kod tambahan yang diperlukan untuk menyebarkan pengecualian. Untuk
beberapa sasaran, ini membayangkan GCC menjana maklumat rehat bingkai untuk semua fungsi,
yang boleh menghasilkan overhed saiz data yang ketara, walaupun ia tidak menjejaskan
perlaksanaan. Jika anda tidak menentukan pilihan ini, GCC mendayakannya secara lalai untuk bahasa
seperti C++ yang biasanya memerlukan pengendalian pengecualian, dan melumpuhkannya untuk bahasa seperti
C yang biasanya tidak memerlukannya. Walau bagaimanapun, anda mungkin perlu mendayakan pilihan ini apabila
menyusun kod C yang perlu saling beroperasi dengan betul dengan pengendali pengecualian ditulis
dalam C++. Anda juga mungkin ingin melumpuhkan pilihan ini jika anda menyusun C++ yang lebih lama
program yang tidak menggunakan pengendalian pengecualian.

-fnon-panggilan-pengecualian
Hasilkan kod yang membenarkan arahan perangkap untuk membuang pengecualian. Perhatikan bahawa ini
memerlukan sokongan masa jalan khusus platform yang tidak wujud di mana-mana. Lebih-lebih lagi,
ia hanya membenarkan memerangkap arahan untuk membuang pengecualian, iaitu rujukan memori atau
arahan titik terapung. Ia tidak membenarkan pengecualian dibuang dari sewenang-wenangnya
pengendali isyarat seperti "SIGALRM".

-fdelete-mati-pengecualian
Pertimbangkan arahan yang mungkin membuang pengecualian tetapi sebaliknya tidak menyumbang kepada
pelaksanaan program boleh dioptimumkan. Pilihan ini didayakan secara lalai
untuk hujung hadapan Ada, seperti yang dibenarkan oleh spesifikasi bahasa Ada. Pengoptimuman
pas yang menyebabkan pengecualian mati dialih keluar didayakan secara bebas pada berbeza
tahap pengoptimuman.

-funwind-meja
Sama seperti -pengecualian, kecuali ia hanya menjana sebarang data statik yang diperlukan, tetapi
tidak menjejaskan kod yang dijana dengan cara lain. Anda biasanya tidak perlu
dayakan pilihan ini; sebaliknya, pemproses bahasa yang memerlukan pengendalian ini membolehkannya
bagi pihak anda.

-fasynchronous-unwind-tables
Hasilkan jadual berehat dalam format DWARF 2, jika disokong oleh mesin sasaran. Meja adalah
tepat pada setiap sempadan arahan, jadi ia boleh digunakan untuk melonggarkan timbunan
peristiwa tak segerak (seperti penyahpepijat atau pengumpul sampah).

-fno-gnu-unik
Pada sistem dengan penghimpun GNU dan perpustakaan C terkini, pengkompil C++ menggunakan
"STB_GNU_UNIQUE" mengikat untuk memastikan bahawa definisi ahli data statik templat
dan pembolehubah tempatan statik dalam fungsi sebaris adalah unik walaupun dengan kehadiran
"RTLD_LOCAL"; ini adalah perlu untuk mengelakkan masalah dengan perpustakaan yang digunakan oleh dua orang yang berbeza
Pemalam "RTLD_LOCAL" bergantung pada definisi dalam salah satu daripadanya dan oleh itu
tidak bersetuju dengan yang lain tentang pengikatan simbol. Tetapi ini menyebabkan
"dlclose" untuk diabaikan untuk DSO yang terjejas; jika program anda bergantung pada pemulaan semula
DSO melalui "dlclose" dan "dlopen", anda boleh gunakan -fno-gnu-unik.

-fpcc-struct-return
Kembalikan nilai "short" "struct" dan "union" dalam ingatan seperti yang lebih panjang, bukannya dalam
daftar. Konvensyen ini kurang cekap, tetapi ia mempunyai kelebihan membenarkan
saling panggil antara fail yang disusun GCC dan fail yang disusun dengan penyusun lain,
terutamanya Pengkompil C Mudah Alih (pcc).

Konvensyen yang tepat untuk mengembalikan struktur dalam ingatan bergantung pada sasaran
makro konfigurasi.

Struktur pendek dan kesatuan ialah struktur yang saiz dan penjajarannya sepadan dengan beberapa
jenis integer.

Amaran: kod yang disusun dengan -fpcc-struct-return suis tidak serasi binari
dengan kod yang disusun dengan -freg-struct-return suis. Gunakannya untuk mematuhi bukan
antara muka binari aplikasi lalai.

-freg-struct-return
Kembalikan nilai "struct" dan "union" dalam daftar apabila boleh. Ini lebih cekap
untuk struktur kecil daripada -fpcc-struct-return.

Jika anda tidak menyatakan kedua-duanya -fpcc-struct-return tidak -freg-struct-return, GCC lalai kepada
mana-mana konvensyen adalah standard untuk sasaran. Jika tiada konvensyen standard,
GCC lalai kepada -fpcc-struct-return, kecuali pada sasaran yang GCC adalah prinsipal
penyusun. Dalam kes tersebut, kita boleh memilih standard, dan kita memilih yang lebih cekap
daftar alternatif pulangan.

Amaran: kod yang disusun dengan -freg-struct-return suis tidak serasi binari
dengan kod yang disusun dengan -fpcc-struct-return suis. Gunakannya untuk mematuhi bukan
antara muka binari aplikasi lalai.

-fshort-enums
Peruntukkan kepada jenis "enum" hanya seberapa banyak bait yang diperlukan untuk julat yang diisytiharkan
nilai yang mungkin. Secara khusus, jenis "enum" adalah bersamaan dengan integer terkecil
jenis yang mempunyai ruang yang cukup.

Amaran: yang -fshort-enums suis menyebabkan GCC menjana kod yang bukan binari
serasi dengan kod yang dihasilkan tanpa suis itu. Gunakannya untuk mematuhi bukan
antara muka binari aplikasi lalai.

-fsshort-double
Gunakan saiz yang sama untuk "double" seperti untuk "float".

Amaran: yang -fsshort-double suis menyebabkan GCC menjana kod yang bukan binari
serasi dengan kod yang dihasilkan tanpa suis itu. Gunakannya untuk mematuhi bukan
antara muka binari aplikasi lalai.

-fshort-wchar
Gantikan jenis asas untuk "wchar_t" menjadi "short unsigned int" dan bukannya
lalai untuk sasaran. Pilihan ini berguna untuk membina program untuk dijalankan di bawah
WINE.

Amaran: yang -fshort-wchar suis menyebabkan GCC menjana kod yang bukan binari
serasi dengan kod yang dihasilkan tanpa suis itu. Gunakannya untuk mematuhi bukan
antara muka binari aplikasi lalai.

-fno-biasa
Dalam kod C, mengawal penempatan pembolehubah global yang tidak dimulakan. Penyusun Unix C
secara tradisinya membenarkan definisi berbilang pembolehubah sedemikian dalam berbeza
unit penyusunan dengan meletakkan pembolehubah dalam blok sepunya. Beginilah perangainya
ditentukan oleh -fbiasa, dan merupakan lalai untuk GCC pada kebanyakan sasaran. Selain itu,
tingkah laku ini tidak diperlukan oleh ISO C, dan pada sesetengah sasaran mungkin membawa kelajuan atau kod
penalti saiz pada rujukan berubah-ubah. The -fno-biasa pilihan menyatakan bahawa
pengkompil harus meletakkan pembolehubah global yang tidak dimulakan dalam bahagian data objek
fail, dan bukannya menjananya sebagai blok biasa. Ini mempunyai kesan bahawa jika
pembolehubah yang sama diisytiharkan (tanpa "luaran") dalam dua kompilasi berbeza, anda mendapat a
ralat berbilang definisi apabila anda memautkannya. Dalam kes ini, anda mesti menyusun dengan
-fbiasa sebaliknya. Menyusun dengan -fno-biasa berguna pada sasaran yang mana ianya
memberikan prestasi yang lebih baik, atau jika anda ingin mengesahkan bahawa program akan berfungsi
sistem lain yang sentiasa memperlakukan pengisytiharan pembolehubah yang tidak dimulakan dengan cara ini.

-fno-ident
Abaikan arahan "#ident".

-arahan saiz-finhibit
Jangan keluarkan arahan pemasang ".size", atau apa-apa lagi yang boleh menyebabkan masalah
jika fungsi terbelah di tengah, dan dua bahagian diletakkan di lokasi yang jauh
terpisah dalam ingatan. Pilihan ini digunakan semasa menyusun crtstuff.c; anda tidak sepatutnya memerlukan
untuk menggunakannya untuk perkara lain.

-fverbose-asm
Letakkan maklumat ulasan tambahan dalam kod pemasangan yang dijana untuk menjadikannya lebih banyak
boleh dibaca. Pilihan ini secara amnya hanya berguna kepada mereka yang benar-benar perlu membaca
menjana kod pemasangan (mungkin semasa menyahpepijat pengkompil itu sendiri).

-fno-verbose-asm, lalai, menyebabkan maklumat tambahan ditinggalkan dan adalah
berguna apabila membandingkan dua fail pemasang.

-frecord-gcc-suis
Suis ini menyebabkan baris arahan yang digunakan untuk memanggil pengkompil untuk direkodkan ke dalam
fail objek yang sedang dibuat. Suis ini hanya dilaksanakan pada sesetengah orang
sasaran dan format sebenar rakaman adalah sasaran dan format fail binari
bergantung, tetapi ia biasanya berbentuk bahagian yang mengandungi teks ASCII. ini
suis adalah berkaitan dengan -fverbose-asm suis, tetapi suis itu hanya merekodkan
maklumat dalam fail output pemasang sebagai ulasan, jadi ia tidak pernah sampai ke objek
fail. Lihat juga -grecord-gcc-suis untuk cara lain untuk menyimpan pilihan pengkompil ke dalam
fail objek.

-fpic
Hasilkan kod bebas kedudukan (PIC) yang sesuai untuk digunakan dalam perpustakaan kongsi, jika
disokong untuk mesin sasaran. Kod sedemikian mengakses semua alamat tetap melalui a
jadual ofset global (GOT). Pemuat dinamik menyelesaikan entri GOT apabila
program bermula (pemuat dinamik bukan sebahagian daripada GCC; ia adalah sebahagian daripada operasi
sistem). Jika saiz GOT untuk boleh laku dipautkan melebihi maksimum khusus mesin
saiz, anda mendapat mesej ralat daripada pemaut yang menunjukkan bahawa -fpic tidak berfungsi; dalam
kes itu, susun semula dengan -fPIC sebaliknya. (Maksimum ini ialah 8k pada SPARC dan 32k
pada m68k dan RS/6000. x86 tidak mempunyai had sedemikian.)

Kod bebas kedudukan memerlukan sokongan khas, dan oleh itu hanya berfungsi
mesin tertentu. Untuk x86, GCC menyokong PIC untuk Sistem V tetapi bukan untuk Matahari
386i. Kod yang dijana untuk IBM RS/6000 sentiasa bebas kedudukan.

Apabila bendera ini ditetapkan, makro "__pic__" dan "__PIC__" ditakrifkan kepada 1.

-fPIC
Jika disokong untuk mesin sasaran, keluarkan kod bebas kedudukan, sesuai untuk
pemautan dinamik dan mengelakkan sebarang had pada saiz jadual ofset global. ini
pilihan membuat perbezaan pada m68k, PowerPC dan SPARC.

Kod bebas kedudukan memerlukan sokongan khas, dan oleh itu hanya berfungsi
mesin tertentu.

Apabila bendera ini ditetapkan, makro "__pic__" dan "__PIC__" ditakrifkan kepada 2.

-fpie
-fPIE
Pilihan ini serupa dengan -fpic dan -fPIC, tetapi menjana kod bebas kedudukan
hanya boleh dipautkan ke dalam boleh laku. Biasanya pilihan ini digunakan apabila -pai GCC
pilihan digunakan semasa memaut.

-fpie dan -fPIE kedua-duanya mentakrifkan makro "__pie__" dan "__PIE__". Makro mempunyai
nilai 1 untuk -fpie dan 2 untuk -fPIE.

-fno-jump-tables
Jangan gunakan jadual lompat untuk penyataan suis walaupun ia lebih cekap
daripada strategi penjanaan kod yang lain. Pilihan ini digunakan bersama dengan
-fpic or -fPIC untuk kod bangunan yang membentuk sebahagian daripada pemaut dinamik dan tidak boleh
rujuk alamat jadual lompat. Pada beberapa sasaran, lompat jadual tidak memerlukan a
GOT dan pilihan ini tidak diperlukan.

-diikat-reg
Rawat daftar bernama reg sebagai daftar tetap; kod yang dihasilkan tidak boleh merujuk kepada
ia (kecuali mungkin sebagai penuding tindanan, penuding bingkai atau dalam beberapa peranan tetap lain).

reg mestilah nama daftar. Nama daftar yang diterima adalah khusus mesin
dan ditakrifkan dalam makro "REGISTER_NAMES" dalam fail makro perihalan mesin.

Bendera ini tidak mempunyai bentuk negatif, kerana ia menentukan pilihan tiga hala.

-fcall-digunakan-reg
Rawat daftar bernama reg sebagai daftar yang boleh diperuntukkan yang disekat oleh fungsi
panggilan. Ia mungkin diperuntukkan untuk sementara atau pembolehubah yang tidak hidup merentasi a
panggilan. Fungsi yang disusun dengan cara ini tidak menyimpan dan memulihkan daftar reg.

Ia adalah ralat untuk menggunakan bendera ini dengan penuding bingkai atau penuding tindanan. Penggunaan ini
bendera untuk daftar lain yang mempunyai peranan meresap tetap dalam pelaksanaan mesin
model menghasilkan hasil yang buruk.

Bendera ini tidak mempunyai bentuk negatif, kerana ia menentukan pilihan tiga hala.

-fcall-disimpan-reg
R