EnglishFrenchSpanyol

Jalankan pelayan | Ubuntu > | Fedora > |


Favicon OnWorks

g++-4.7 - Dalam Talian di Awan

Jalankan g++-4.7 dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan g++-4.7 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...] [-pedantik]
[-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 akan menjadi -fno-foo. Manual ini hanya mendokumenkan satu daripada
kedua-dua borang ini, 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] -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 -fopenmp -fms-sambungan -fplan9-sambungan -trigraf
-no-integrated-cpp -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 -fconserve-ruang
-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 -fstats -ftemplate-depth=n
-fno-threadsafe-statik -fius-cxa-atexit -fno-lemah -nostdinc++ -fno-default-inline
-kebolehlihatan-sebaris-tersembunyi -fvisibility-ms-compat -Wabi -Wconversion-null
-Wctor-dtor-privacy -Wdelete-bukan-maya-dtor -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 -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]
-fno-diagnostics-show-option

Amaran Pilihan
-fsyntax sahaja -fmax-errors=n -pedantik -kesilapan-pedantik -w -Wextra -Dinding
-Waddress -Waggregate-pulangan -Warray-bounds -Wno-atribut
-Wno-builtin-makro-ditakrifkan semula -Wc++-compat -Wc++11-compat -Wcast-align -Wcast-qual
-Wchar-subskrip -Wclobbered -Wkomen -Wpenukaran -Wliputan-tidak sepadan -Wno-cpp
-Wno-ditamatkan -Perisytiharan-tidak-ditamatkan -Wdisabled-optimization -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-y2k
-Wframe-larger-than=len -Wno-free-nonheap-objek -Wjump-rindu-init
-Wignore-qualifiers -Wimplisit -Pengisytiharan-fungsi-wimplicit -Wimplicit-int
-Winit-diri -Winline -Wmungkin-tidak dimulakan -Wno-int-to-pointer-cast
-Wno-invalid-offsetof -Winvalid-pch -Lebih besar daripada=len -Wunsafe-loop-optimizations
-Wlogical-op -Wlong-long -Wmain -Wmungkin-tidak dimulakan -Wmissing-braces
-Wmissing-field-initializers -Wmissing-format-attribut -Wmissing-include-dirs
-Wno-mudflap -Wno-multichar -Wnonnull -Wno-limpahan -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
-jenis wreturn -Wsequence-point -Wshadow -Wsign-bandingkan -Wsign-penukaran
-Wstack-pelindung -Wstack-penggunaan=len -Pengalian ketat -Wstrict-aliasing=n
-Limpahan-terbatas -Limpahan-terbatas=n -Wsuggest-attribute=[tulen|malar|noreturn]
-Wswitch -Wswitch-lalai -Wswitch-enum -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
-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 -fdbg-cnt-senarai -fdbg-cnt=kaunter-
senarai nilai -fdisable-ipa-nama_laluan -fdisable-rtl-nama_laluan -fdisable-rtl-pas-
nama=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-vcg -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-mudflap[-n]
-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-vrp[-n] -ftree-vectorizer-verbose=n -fdump-tree-storeccp[-n]
-fdump-final-insns=fail -fcompare-debug[=memilih] -fcompare-debug-second
-feliminate-dwarf2-dups -feliminate-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-laporan -fpre-ipa-mem-report
-fpost-ipa-mem-report -fprofile-arka -frandom-seed=rentetan -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+ -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
-falign-functions[=n] -falign-lompat[=n] -falign-labels[=n] -falign-gelung[=n]
-fasosiatif-matematik -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 -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
-lima-penukaran -lima-penukaran2 -findirect-inlining -finline-fungsi
-fungsi-finline-dipanggil-sekali -had-finline=n -finline-kecil-fungsi -fipa-cp
-fipa-cp-clone -fipa-matriks-reorg -fipa-pta -fipa-profil -fipa-pure-const
-fipa-rujukan -fira-algoritma=algoritma -fira-region=rantau -fira-gelung-tekanan
-fno-ira-kongsi-simpan-slot -fno-ira-share-spill-slot -fira-verbose=n -fivopts
-fkeep-inline-functions -fkeep-static-consts -blok-floop -floop-ratakan
-pertukaran-floop -floop-strip-mine -floop-parallelize-semua -flto
-flto-tahap mampatan -flto-partition=alga -flto-laporan -fmerge-semua-pemalar
-fmerge-pemalar -fmodulo-jadual -fmodulo-sched-allow-regmoves -fmove-gelung-invariants
fmudflap -fmudflapir -fmudflapth -fno-cawangan-count-reg -fno-default-inline
-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-register-move
-foptimize-sibling-panggilan -fpartial-inlining -fpeel-gelung -fpredictive-commoning
-fprefetch-loop-arrays -fprofile-pembetulan -fprofile-dir=jalan -fprofile-jana
-fprofile-generate=jalan -fprofile-penggunaan -fprofile-use=jalan -nilai-fprofile
-freciprocal-matematik -free -fregmove -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-inns
-fschedule-insns2 -fsection-anchor -penjadualan-selektif -penjadualan-selektif2
-fsel-sched-pipelining -fsel-sched-pipelining-outer-gelung -fshrink-bungkus
-fsignaling-nans -fsingle-precision-constant -fsplit-ivs-in-unroller
-fsplit-wide-types -fstack-pelindung -fstack-pelindung-semua -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 -gelung-parallelize-ftree=n
-ftree-pra -ftree-partial-pra -ftree-pta -ftree-assoc -ftree-sinki -ftree-sra
-penukaran-ftree-switch -bercantum-ekor-tiga -ftree-ter -versi-free-vect-loop
-free-vectorize -ftree-vrp -funit-at-a-time -funroll-semua-gelung -funroll-gelung
-funsafe-loop-optimizations -funsafe-math-optimizations -funswitch-gelung
-fvariable-expansion-in-unroller -model-kos-fvect -fvpt -fweb -fwhole-program -fwpa
-fius-ld=Pautan -pemalam-penyambung fius --param nama=nilai -O -O0 -O1 -O2 -O3 -Os
-Ofast

Prapemproses Pilihan
-Asoalan=menjawab -SUDAH-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

Pemasang Lebih Baik
-Wa,pilihan -Xassembler pilihan

Pautan Pilihan
nama fail objek -lperpustakaan -nostartfiles -nodefaultlibs -nostdlib -pai -rdinamik -s
-statik -statik-libgcc -static-libstdc++ -berkongsi -shared-libgcc -simbolik -T skrip
-Wl,pilihan -Xlinker pilihan -u lambang

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

mesin Bergantung Pilihan
AAArch64 Pilihan -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 -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

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
-mwords-little-endian -mfloat-abi=nama -mfpe -mfp16-format=nama -mthumb-interwork
-mno-thumb-interwork -mcpu=nama -march=nama -mfpu=nama -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 -mcirrus-fix-invalid-inns
-mno-cirrus-fix-invalid-insns -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

AVR Pilihan -mmcu=mcu -maccumulate-args -kos-mbranch=kos -mcall-prolog -pudina8
-mno-gangguan -relax -msshort-panggilan -mstrict-X -mtiny-stack

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 -malpha-as -mgas -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

Disember Alpha/VMS Pilihan -mvms-return-codes -mdebug-utama=awalan -mmalloc64

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 -pudina32 -malign-300

HPPA Pilihan -march=jenis seni bina -suis besar -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-besar-suis -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

i386 dan x86-64 Pilihan -mtune=jenis cpu -march=jenis cpu -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 -maes -mpclmul
-mfsgsbase -mrdrnd -mf16c -mfma -msse4a -m3dnow -mpopcnt -mabm -mbmi -mtbm -mfma4
-mxop -mlzcnt -mbmi2 -mlwp -mthreads -mno-align-stringops -minline-semua-stringops
-minline-stringops-dinamik -mstringop-strategi=alga -push-args
-maccumulate-outgoing-args -m128bit-long-double -m96bit-long-double -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 -mlarge-data-threshold=num -msse2avx
-mfentry -m8bit-idiv -mavx256-split-unaligned-load -mavx256-split-unaligned-store

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

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

IA-64/VMS Pilihan -mvms-return-codes -mdebug-utama=awalan -mmalloc64

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
-mxl-mod-model aplikasi

MIPS Pilihan -THE -EB -march=gerbang -mtune=gerbang -mips1 -mips2 -mips3 -mips4
-mips32 -mips32r2 -mips64 -mips64r2 -mips16 -mno-mips16 -mflip-mips16
-minterlink-mips16 -mno-interlink-mips16 -mabi=abi -mabicalls -mno-abicalls
-mshared -mno-kongsi -mplt -mno-plt -mxgot -mno-xgot -mgp32 -mgp64 -mfp32
-mfp64 -mhard-terapung -msoft-float -msingle-float -mdouble-float -mdsp -mno-dsp
-mdspr2 -mno-dspr2 -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
-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-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

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

RS / 6000 dan PowerPC Pilihan -mcpu=jenis cpu -mtune=jenis cpu -mcmodel=model kod -memberi kuasa
-mno-kuasa -memberi kuasa2 -mno-kuasa2 -mpowerpc -mpowerpc64 -mno-powerpc -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
-mnemonik-baru -acuan-mnemonik -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

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 -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

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 -mlaras-buka gulungan
-mindexed-addressing -mgettrcost=nombor -mpt-tetap -maccumulate-outgoing-args
-simbol-minvalid -msoft-atom -kos-mbranch=num -mcbranchdi -mcmpeqdi -mfused-gila
-berpura-pura-cmove

Solaris 2 Pilihan -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 -mv8plus -mno-v8plus -mvis -mno-vis -mvis2 -mno-vis2
-mvis3 -mno-vis3 -mfmaf -mno-fmaf -mpopc -mno-popc -mfix-at697f

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

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 -suis besar

VAX Pilihan -mg -mgnu -munix

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

x86-64 Pilihan Lihat Pilihan i386 dan x86-64.

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
-funwind-meja -fasynchronous-unwind-tables -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 -ftrapv
-fwrapv -fbounds-semak -kebolehlihatan -fstrict-volatile-bitfields

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 akan keluar dengan kod 1 jika ada fasa pengkompil
mengembalikan kod pulangan yang tidak berjaya. Jika anda nyatakan -kod-laluan-keluar, yang gcc program
sebaliknya akan kembali dengan ralat tertinggi secara berangka yang dihasilkan oleh mana-mana fasa yang kembali
petunjuk ralat. Bahagian hadapan C, C++ dan Fortran mengembalikan 4, jika dalaman
ralat pengkompil 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 tanpa mengira apa jua jenis output
sedang dihasilkan, sama ada fail boleh laku, fail objek, fail pemasang atau
kod C praproses.

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 akan diteruskan kepada
pelbagai proses yang digunakan oleh gcc, supaya mereka boleh memaparkan pilihan baris arahan
mereka terima. Sekiranya -Wextra pilihan juga telah ditentukan (sebelum - membantu
pilihan), kemudian pilihan baris arahan yang tidak mempunyai dokumentasi yang berkaitan dengannya
juga akan 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
Ini akan memaparkan semua pilihan pengoptimuman yang disokong oleh pengkompil.

amaran
Ini akan memaparkan semua pilihan yang mengawal mesej amaran yang dihasilkan oleh
penyusun

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

params
Ini akan memaparkan nilai yang diiktiraf oleh --param pilihan.

bahasa
Ini akan memaparkan pilihan yang disokong untuk bahasa, Di mana bahasa adalah namanya
daripada salah satu bahasa yang disokong dalam versi GCC ini.

biasa
Ini akan memaparkan 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 yang berikut boleh digunakan:

--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 menyekat output oleh
sehinggakan tiada apa-apa untuk dipaparkan. Satu kes di mana ia berfungsi walau bagaimanapun adalah bila
salah satu kelas ialah sasaran. Jadi sebagai contoh untuk memaparkan semua khusus sasaran
pilihan pengoptimuman yang berikut boleh digunakan:

--help=target,pengoptimum

. --bantuan= pilihan boleh diulang pada baris arahan. Setiap penggunaan berturut-turut akan
memaparkan kelas pilihan yang dimintanya, melangkau pilihan yang telah ada
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 akan menggunakan semua subprogram daripada gcc di bawah gdb --args, dengan itu seruan kepada cc1
akan 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.

-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
merawat .c, .h dan .i fail sebagai fail sumber C++ dan bukannya fail sumber C melainkan -x is
digunakan, dan secara automatik menentukan pemautan terhadap perpustakaan C++. Program ini juga
berguna apabila menyusun semula fail pengepala C dengan a .h sambungan untuk digunakan dalam kompilasi C++.
Pada 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, -pedantik 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 akan dibina tetapi tidak mempunyai semantik yang ditakrifkan oleh ISO C
(seperti "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. Dengan menentukan standard asas, the
pengkompil akan menerima semua program mengikut piawaian itu dan yang menggunakan GNU
sambungan yang tidak bercanggah dengannya. Sebagai contoh, -std=c90 mematikan tertentu
ciri GCC yang tidak serasi dengan ISO C90, seperti "asm" dan "typeof"
kata kunci, tetapi bukan sambungan GNU lain yang tidak mempunyai makna dalam ISO C90, seperti
meninggalkan istilah tengah ungkapan "?:". Sebaliknya, dengan menyatakan GNU
dialek standard, semua ciri sokongan pengkompil didayakan, walaupun ketika itu
ciri mengubah maksud standard asas dan beberapa program yang mematuhi ketat
boleh ditolak. Piawaian tertentu digunakan oleh -pedantik untuk mengenal pasti yang mana
ciri adalah sambungan GNU memandangkan versi standard itu. Sebagai contoh -std=gnu90
-pedantik akan memberi amaran tentang gaya C++ // komen, manakala -std=gnu99 -pedantik akan
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. Ambil perhatian bahawa piawaian ini belum lagi disokong sepenuhnya; lihat
<http://gcc.gnu.org/gcc-4.7/c99status.html> untuk maklumat lanjut. Nama-nama c9x
dan iso9899:199x tidak digunakan lagi.

c11
c1x
iso9899:2011
ISO C11, semakan 2011 bagi standard ISO C. Sokongan tidak lengkap dan
percubaan. Nama c1x tidak digunakan lagi.

gnu90
gnu89
Dialek GNU ISO C90 (termasuk beberapa ciri C99). Ini adalah lalai untuk C
kod.

gnu99
gnu9x
Dialek GNU ISO C99. Apabila ISO C99 dilaksanakan sepenuhnya dalam GCC, ini akan
menjadi lalai. Nama gnu9x tidak digunakan lagi.

gnu11
gnu1x
Dialek GNU ISO C11. Sokongan tidak lengkap dan percubaan. Nama gnu1x
tidak digunakan lagi.

c ++ 98
Piawaian ISO C++ 1998 ditambah pindaan. Sama seperti -ansi untuk kod C++.

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

c ++ 11
Pindaan tambah standard ISO C++ 2011. Sokongan untuk C++11 masih ada
percubaan, dan mungkin berubah dalam cara yang tidak serasi dalam keluaran akan datang.

gnu++11
Dialek GNU daripada -std=c++11. Sokongan untuk C++11 masih dalam percubaan dan mungkin 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.
Pilihan ini diterima dan diabaikan oleh GCC versi 4.1.3 sehingga tetapi tidak termasuk
4.3. Dalam GCC versi 4.3 dan kemudiannya ia mengubah tingkah laku GCC dalam mod C99. menggunakan
pilihan ini lebih kurang 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 pertama kali disokong dalam GCC 4.3. Pilihan ini 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" ialah
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 berlaku dalam persekitaran yang dihoskan. Ini bermakna -fbuitin.
Persekitaran yang dihoskan ialah persekitaran yang menyediakan keseluruhan perpustakaan standard, 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 berlaku dalam 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.

-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 v3.0http://www.openmp.org/>. Pilihan ini
bererti -pthread, dan dengan itu hanya disokong pada sasaran yang mempunyai sokongan untuk
-pthread.

-fgnu-tm
Apabila pilihan -fgnu-tm ditentukan, pengkompil akan 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.

-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.

-no-integrated-cpp
Melaksanakan kompilasi dalam dua laluan: prapemprosesan dan penyusunan. Pilihan ini membolehkan
pengguna membekalkan "cc1", "cc1plus", atau "cc1obj" melalui -B pilihan. Pengguna membekalkan
langkah penyusunan kemudian boleh menambah langkah prapemprosesan tambahan selepas biasa
prapemprosesan tetapi sebelum menyusun. Lalai adalah menggunakan cpp bersepadu
(cpp dalaman)

Semantik pilihan ini akan berubah jika "cc1", "cc1plus" dan "cc1obj" digabungkan.

-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++;
tetapi anda juga boleh menggunakan kebanyakan pilihan pengkompil GNU tanpa mengira bahasa anda
program 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. Versi 2 ialah versi C++ ABI yang pertama
muncul dalam G++ 3.4. Versi 1 ialah versi C++ ABI yang pertama kali muncul
G++ 3.2. Versi 0 akan sentiasa menjadi versi yang paling sesuai dengan C++
spesifikasi ABI. Oleh itu, ABI yang diperoleh menggunakan versi 0 akan berubah sebagai ABI
pepijat telah diperbaiki.

Lalai ialah versi 2.

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.

Lihat juga -Wabi.

-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 akan mengembalikan 0 jika ia diisytiharkan membuang(),
dalam kes ini pengkompil akan sentiasa menyemak nilai pulangan walaupun tanpa ini
pilihan. Dalam semua kes lain, apabila "pengendali baharu" mempunyai pengecualian bukan kosong
spesifikasi, keletihan memori ditandakan dengan melontar "std::bad_alloc". Lihat juga
baru (nothrow).

-fconserve-ruang
Letakkan pembolehubah global yang tidak dimulakan atau dimulakan masa jalan ke dalam segmen biasa, sebagai
C lakukan. Ini menjimatkan ruang dalam boleh laku dengan kos tidak mendiagnosis pendua
takrifan. Jika anda menyusun dengan bendera ini dan program anda ranap secara misteri
selepas "main()" selesai, anda mungkin mempunyai objek yang sedang dimusnahkan dua kali
kerana dua definisi telah digabungkan.

Pilihan ini tidak lagi berguna pada kebanyakan sasaran, kini sokongan telah ditambahkan untuknya
meletakkan pembolehubah ke dalam BSS tanpa menjadikannya biasa.

-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, dan versi G++ sebelum ini
4.1 sentiasa berfungsi seperti itu. Walau bagaimanapun, dalam ISO C++ fungsi rakan yang tidak
diisytiharkan dalam skop yang disertakan hanya boleh didapati menggunakan carian bergantung kepada hujah.
Pilihan ini menyebabkan rakan disuntik seperti dalam keluaran terdahulu.

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 membina, sama seperti mentakrifkan NDEBUG. Ini tidak memberikan kebenaran kod pengguna
untuk membuang pengecualian yang melanggar spesifikasi pengecualian; pengkompil akan
masih mengoptimumkan berdasarkan spesifikasi, jadi membuang pengecualian yang tidak dijangka akan
mengakibatkan tingkah laku yang tidak ditentukan.

-untuk-skop
-fno-untuk-skop
If -untuk-skop ditentukan, skop pembolehubah yang diisytiharkan dalam a for-init-statement
adalah terhad kepada untuk gelung 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++.

Lalai jika kedua-dua bendera tidak diberikan untuk mengikut piawaian, tetapi untuk membenarkan dan memberi a
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 pengoptimuman akan
memerlukan set instantiasi eksplisit yang sama.

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

-fms-sambungan
Lumpuhkan amaran pedantik 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
Anggap spesifikasi pengecualian "throw()" seolah-olah ia adalah spesifikasi "noexcept".
untuk 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 akan menjadikan fungsi lebih kecil
kerana pembersihan EH untuk pembolehubah tersebut boleh dioptimumkan. Semantik
kesannya ialah pengecualian dibuang daripada fungsi dengan pengecualian sedemikian
spesifikasi akan menyebabkan 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 akan membenarkan beberapa kod yang tidak mematuhi untuk disusun.

-fno-cantik-templat
Apabila mesej ralat merujuk kepada pengkhususan templat fungsi, pengkompil
biasanya akan 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 akan 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, menggunakan -fno-cantik-templat akan 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 C++ run-time (siaran_ dinamik dan Typeid). Jika anda tidak
gunakan bahagian bahasa tersebut, anda boleh menjimatkan sedikit ruang dengan menggunakan bendera ini. Catatan
pengendalian pengecualian itu menggunakan maklumat yang sama, tetapi ia akan menjananya mengikut keperluan.
. siaran_ dinamik operator masih boleh digunakan untuk cast yang tidak memerlukan run-time
taip maklumat, iaitu hantar ke "kosong *" atau ke kelas asas yang tidak jelas.

-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-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 akan berfungsi jika C anda
perpustakaan menyokong "__cxa_atexit".

-fno-use-cxa-get-exception-ptr
Jangan gunakan rutin masa jalan "__cxa_get_exception_ptr". Ini akan 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 akan memberi 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 yang berbeza: mereka
pengisytiharan dibenarkan jika ia dibenarkan semasa 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 akan berbeza, jadi
menukar satu tidak akan 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.

-fno-lemah
Jangan gunakan sokongan simbol yang lemah, walaupun ia disediakan oleh pemaut. Secara lalai, G++
akan menggunakan simbol yang lemah jika tersedia. Pilihan ini wujud hanya untuk ujian, dan
tidak boleh digunakan oleh pengguna akhir; ia akan 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++:

-fno-default-inline
Jangan anggap sebaris untuk fungsi yang ditakrifkan dalam skop kelas.
Ambil perhatian bahawa fungsi ini akan mempunyai pautan seperti fungsi sebaris; mereka tidak akan
sebaris secara lalai.

-Wabi (C, Objective-C, C++ dan Objective-C++ sahaja)
Beri amaran apabila G++ menjana kod yang mungkin tidak serasi dengan vendor neutral
C++ ABI. Walaupun usaha telah dibuat untuk memberi amaran tentang semua kes sedemikian, ada
mungkin beberapa kes yang tidak diberi amaran, walaupun G++ sedang menjana
kod yang tidak serasi. Mungkin terdapat juga kes di mana amaran dikeluarkan walaupun
kod yang dihasilkan akan 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.

Ketidakserasian yang diketahui dalam -fabi-version=2 (lalai) termasuk:

· Templat dengan parameter templat bukan jenis bagi jenis rujukan rosak
salah:

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

Ini ditetapkan dalam -fabi-version=3.

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

Mangling ditukar masuk -fabi-version=4.

Ketidakserasian yang diketahui dalam -fabi-version=1 termasuk:

· Pengendalian padding ekor yang salah untuk medan bit. G++ mungkin cuba membungkus data
ke dalam bait yang sama dengan kelas asas. Sebagai contoh:

struct A { virtual void f(); int f1 : 1; };
struct B : awam A { int f2 : 1; };

Dalam kes ini, G++ akan meletakkan "B::f2" ke dalam bait yang sama dengan"A::f1"; penyusun lain
tidak akan. Anda boleh mengelakkan masalah ini dengan melapik "A" secara eksplisit supaya saiznya
ialah gandaan saiz bait pada platform anda; yang akan menyebabkan G++ dan lain-lain
penyusun kepada susun atur "B" secara identik.

· Pengendalian pelapik ekor yang salah untuk pangkalan maya. G++ tidak menggunakan ekor
padding apabila meletakkan pangkalan maya. Sebagai contoh:

struct A { virtual void f(); char c1; };
struct B { B(); char c2; };
struct C : awam A, awam maya B {};

Dalam kes ini, G++ tidak akan meletakkan "B" ke dalam pelapik ekor untuk "A"; lain
penyusun akan. Anda boleh mengelakkan masalah ini dengan meletakkan "A" secara eksplisit supaya ia
saiz ialah gandaan penjajarannya (mengabaikan kelas asas maya); itu akan
menyebabkan G++ dan penyusun lain menyusun atur "C" secara sama.

· Pengendalian medan bit yang salah dengan lebar yang diisytiharkan lebih besar daripada lebarnya
jenis asas, apabila medan bit muncul dalam kesatuan. Sebagai contoh:

kesatuan U { int i : 4096; };

Dengan mengandaikan bahawa "int" tidak mempunyai 4096 bit, G++ akan menjadikan kesatuan terlalu kecil
dengan bilangan bit dalam "int".

· Kelas kosong boleh diletakkan pada offset yang salah. Sebagai contoh:

struct A {};

struct B {
A a;
kekosongan maya f ();
};

struct C : awam B, awam A {};

G++ akan meletakkan kelas asas "A" bagi "C" pada offset bukan sifar; ia harus diletakkan
pada sifar mengimbangi. G++ tersilap percaya bahawa ahli data "A" bagi "B" ialah
sudah pada sifar offset.

· Nama fungsi templat yang jenisnya melibatkan "nama taip" atau templat templat
parameter boleh rosak secara tidak betul.

templat
void f(nama taip Q::X) {}

templat kelas Q>
void f(nama taip Q ::X) {}

Instasiasi templat ini mungkin tidak betul.

Ia juga memberi amaran kepada perubahan berkaitan psABI. Perubahan psABI yang diketahui pada ketika ini termasuk:

· Untuk SYSV/x86-64, apabila melepasi kesatuan dengan gandaan panjang, ia ditukar kepada lulus masuk
ingatan seperti yang dinyatakan dalam psABI. Sebagai contoh:

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

"union U" akan sentiasa dilalui dalam ingatan.

-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.

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

-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 lontaran (cth membuang() or tiada kecuali)
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, in
yang mana mungkin tetapi tidak selamat untuk memadamkan contoh kelas terbitan
melalui penunjuk ke kelas asas. Amaran ini juga didayakan jika -Weffc++ is
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 akan menyusun semula pemula ahli untuk i dan j untuk memadankan
perintah pengisytiharan ahli-ahli, mengeluarkan amaran mengenainya. Amaran ini adalah
didayakan oleh -Dinding.

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++, kedua Edisi buku:

· Perkara 11: Tentukan pembina salinan dan pengendali tugasan untuk kelas dengan
memori yang diperuntukkan secara dinamik.

· Perkara 12: Lebih suka pemula daripada tugasan dalam pembina.

· Perkara 14: Jadikan pemusnah maya dalam kelas asas.

· Perkara 15: Minta "operator=" mengembalikan rujukan kepada *ini.

· Perkara 23: Jangan cuba mengembalikan rujukan apabila anda mesti mengembalikan objek.

Juga memberi amaran tentang pelanggaran garis panduan gaya berikut daripada Scott Meyers' lebih
Berkesan C + + buku:

· Perkara 6: Bezakan antara bentuk awalan dan postfix bagi penambahan dan pengurangan
pengendali.

· Perkara 7: Jangan sekali-kali membebankan "&&", "||", atau ",".

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 juga tentang penggunaan "NULL" yang tidak dibuang sebagai sentinel. Apabila menyusun hanya dengan
GCC ini ialah sentinel yang sah, kerana "NULL" ditakrifkan kepada "__null". Walaupun ia adalah batal
pemalar penunjuk bukan penunjuk nol, ia dijamin sama saiznya dengan a
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++.
Barisan pelakon gaya baharu (siaran_ dinamik, siaran_ statik, tafsirkan semula_ siaran, dan const_cast) adalah
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 {
batal f(int);
};

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

B* b;
b->f();

akan gagal untuk disusun.

-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++ akan cuba untuk mengekalkan unsignedness, tetapi piawaian mewajibkan
tingkah laku semasa.

struct A {
operator int ();
A& operator = (int);
};

utama ()
{
A a,b;
a = b;
}

Dalam contoh ini, G++ akan mensintesis lalai A& operator = (const A&);, sambil cfront
akan menggunakan yang ditentukan pengguna operator =.

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 Objective-C++, tetapi 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, akan 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 akan 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 akan menjalankan semua pemusnah lalai tersebut,
dalam urutan terbalik.

Kaedah "- (id) .cxx_construct" dan "- (void) .cxx_destruct" yang dihasilkan akan
hanya beroperasi pada pembolehubah contoh yang diisytiharkan dalam kelas Objektif-C semasa, dan bukan
yang diwarisi daripada superclass. Ia adalah tanggungjawab Objektif-C
runtime untuk menggunakan semua kaedah sedemikian dalam hierarki pewarisan objek. "- (id)
Kaedah .cxx_construct" akan digunakan oleh masa jalan serta-merta selepas objek baharu
contoh diperuntukkan; kaedah "- (void) .cxx_destruct" akan digunakan
serta-merta sebelum masa larian menetapkan 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.

-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 akan meninggalkan amaran sedemikian jika sebarang perbezaan yang ditemui terhad kepada jenis itu
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, ...). Pilihan yang diterangkan di bawah boleh digunakan untuk mengawal
algoritma pemformatan mesej diagnostik, cth berapa banyak aksara setiap baris, berapa kerap
maklumat lokasi sumber hendaklah dilaporkan. Pada masa ini, hanya bahagian hadapan C++ boleh
hormati pilihan ini. Walau bagaimanapun ia dijangka, dalam masa terdekat, bahawa hadapan yang tinggal
hujung akan dapat mencernanya dengan betul.

-fmessage-length=n
Cuba formatkan mesej ralat supaya muat pada baris kira-kira n watak. The
lalai ialah 72 aksara untuk g ++ dan 0 untuk bahagian hujung hadapan yang lain disokong oleh
GCC. Jika n adalah sifar, maka tiada pembalut baris akan dilakukan; setiap mesej ralat akan muncul
pada satu baris.

-fdiagnostics-show-location=sekali
Hanya bermakna dalam mod pembalut baris. Arahkan pelapor mesej diagnostik untuk
mengeluarkan sekali maklumat lokasi sumber; 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.

-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.

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 -W, Sebagai contoh -Wimplisit
untuk meminta amaran mengenai pengisytiharan tersirat. Setiap pilihan amaran khusus ini 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 lebih lanjut,
pilihan khusus bahasa juga merujuk kepada C + + Dialek Pilihan dan Objektif-C dan
Objektif-C++ Dialek Pilihan.

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

-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 yang jarang diperlukan -ansi atau -std pilihan yang menyatakan versi yang diperlukan
daripada ISO C). Walau bagaimanapun, tanpa pilihan ini, sambungan GNU tertentu dan C tradisional dan
Ciri C++ juga disokong. Dengan pilihan ini, mereka ditolak.

-pedantik 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 -pedantik 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
-pedantik. 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 -pedantik 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
suka -pedantik, kecuali ralat dihasilkan dan bukannya amaran.

-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 (hanya dengan -O2) -Wc++11-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 -Wnonnull -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 mendaftar.

· (C++ sahaja) Mengambil alamat pembolehubah yang telah diisytiharkan mendaftar.

· (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 telah ditukar antara -fprofile-gen dan -fprofile-penggunaan, fail dengan
maklum balas profil boleh gagal sepadan dengan fail sumber dan GCC tidak boleh menggunakan profil
maklumat maklum balas. Secara lalai, amaran ini didayakan dan dianggap sebagai ralat.
-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 akan melaksanakan keseluruhan pengiraan dengan "berganda" kerana terapung-
titik literal ialah "berganda".

-Wformat
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 -pedantik digunakan dengan -Wformat,
amaran akan diberikan tentang ciri format yang bukan dalam versi standard yang dipilih (tetapi
bukan untuk format "strfmon", kerana ia bukan dalam mana-mana versi standard C).

Sejak -Wformat juga menyemak argumen format nol untuk beberapa fungsi, -Wformat
juga membayangkan -Wnonnull.

-Wformat termasuk dalam -Dinding. Untuk lebih kawalan ke atas beberapa aspek semakan format,
pilihan -Wformat-y2k, -Wno-format-extra-args, -Wno-format-sifar-panjang,
-Wformat-bukan huruf, -Wformat-security, dan -Wformat=2 tersedia, tetapi tidak
Termasuk dalam -Dinding.

NOTA: Dalam Ubuntu 8.10 dan versi yang lebih baru pilihan ini didayakan secara lalai untuk C, C++,
ObjC, ObjC++. Untuk melumpuhkan, gunakan -Wformat=0.

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

-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 "scanf"
fungsi format. Piawaian C menyatakan bahawa hujah sedemikian 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 akan menyekat
amaran jika argumen yang tidak digunakan adalah semua penunjuk, sejak Spesifikasi Unix Tunggal
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-bukan huruf
If -Wformat ditentukan, juga memberi amaran jika rentetan format bukan rentetan literal dan
jadi tidak boleh disemak, melainkan fungsi format mengambil argumen formatnya sebagai a
"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 format
rentetan datang daripada input yang tidak dipercayai dan mengandungi %n. (Ini pada masa ini merupakan subset daripada apa
-Wformat-bukan huruf memberi amaran tentang, tetapi pada masa hadapan amaran boleh ditambah kepada
-Wformat-security yang tidak termasuk dalam -Wformat-bukan huruf.)

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 amaran format
dengan -Wformat=0. Untuk menjadikan amaran keselamatan format membawa maut, nyatakan
-Werror=format-security.

-Wformat=2
enable -Wformat serta semakan format tidak termasuk dalam -Wformat. Pada masa ini bersamaan dengan
-Wformat -Wformat-bukan huruf -Wformat-security -Wformat-y2k.

-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 akan memberi amaran tentang "i" yang tidak dimulakan dalam coretan berikut sahaja
apabila -Winit-diri telah ditentukan:

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

-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 adalah mencurigakan. utama harus 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 -pedantik.

-Wmissing-braces
Beri amaran jika agregat atau pemula kesatuan tidak dikurung sepenuhnya. Dalam yang berikut
contoh, pemula untuk a tidak dikurung sepenuhnya, tetapi itu untuk b sepenuhnya
kurungan.

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 notasi matematik biasa.

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 akan mengeluarkan amaran apabila bendera ini
ditentukan. Untuk menghapuskan amaran, tambahkan pendakap eksplisit di sekeliling "jika" paling dalam
pernyataan jadi tidak mungkin "lain" boleh tergolong dalam "jika" yang disertakan. The
kod yang terhasil akan kelihatan seperti ini:

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

Juga memberi amaran untuk kegunaan berbahaya ?: dengan sambungan GNU operan tengah yang ditinggalkan. Bila
syarat dalam operator ?: ialah ungkapan boolean nilai yang ditinggalkan akan menjadi
sentiasa 1. Selalunya pengguna 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++.

-jenis wreturn
Beri amaran apabila sesuatu 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 adalah utama dan fungsi
ditakrifkan dalam pengepala sistem.

Amaran ini didayakan oleh -Dinding.

-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".

-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 tidak digunakan atribut.

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 tidak digunakan atribut.

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 tidak digunakan atribut.

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

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

Untuk menyekat amaran ini gunakan tidak digunakan atribut.

-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 tidak digunakan atribut.

-Wunused-nilai
Beri amaran apabila kenyataan mengira hasil yang tidak digunakan secara eksplisit. Untuk menindas
amaran ini memberikan ungkapan yang tidak digunakan kepada membatalkan. Ini termasuk pernyataan ungkapan
atau sebelah kiri ungkapan koma yang tidak mengandungi kesan sampingan. Untuk
contoh, ungkapan seperti x[i,j] akan menyebabkan amaran, manakala x[(kosong)i,j] akan
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-
statik malar ahli 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
amaran akan 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 yang bukan pembolehubah itu
dimulakan, pengkompil akan mengeluarkan amaran jika ia tidak dapat membuktikan yang tidak dimulakan
laluan tidak berlaku pada masa larian. Amaran ini dijadikan pilihan kerana GCC tidak
cukup bijak untuk melihat semua sebab mengapa kod itu mungkin betul walaupun muncul
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, pengguna 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 juga akan dikeluarkan untuk pragma yang tidak diketahui dalam
fail pengepala sistem. 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 cara -O berfungsi. -Pengalian ketat is
bersamaan dengan -Wstrict-aliasing=n, dengan n=3.

Tahap 1: Paling agresif, cepat, paling kurang tepat. Mungkin berguna apabila tahap yang lebih tinggi
jangan beri amaran tetapi -fstrict-aliasing masih melanggar 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 apabila
menentukan sama ada gelung akan dilaksanakan sama sekali.

-Limpahan-Wstrict=1
Beri amaran tentang kes yang boleh dipersoalkan dan mudah dielakkan. Contohnya: "x +
1 > x"; dengan -fstrict-overflow, pengkompil akan memudahkan ini kepada 1. Tahap ini
of -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" akan 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" akan 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" akan dipermudahkan kepada "x + 1
>= y". Ini dilaporkan hanya pada tahap amaran tertinggi kerana ini
penyederhanaan terpakai kepada banyak perbandingan, jadi tahap amaran ini akan memberikan yang sangat
sejumlah besar positif palsu.

-Wsuggest-attribute=[tulen|malar|noreturn]
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 mahupun kembali secara tidak normal dengan membaling, memanggil "abort()" atau memerangkap. ini
analisis memerlukan pilihan -fipa-pure-const, yang didayakan secara lalai di -O dan
lebih tinggi. Tahap pengoptimuman yang lebih tinggi meningkatkan ketepatan analisis.

-Warray-bounds
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.

-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
akan 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 sekeping kecil data atau kod yang dibuat semasa larian
masa pada timbunan apabila alamat fungsi bersarang diambil, dan
digunakan untuk memanggil fungsi bersarang secara tidak langsung. Untuk beberapa 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
untuk dijadikan 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 akan 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 tidak
dalam ISO C.

· Dalam C tradisional, beberapa arahan prapemproses tidak wujud. tradisional
prapemproses hanya akan menganggap garis sebagai arahan jika # muncul dalam
lajur 1 pada baris. Oleh itu -Wtradisional memberi amaran tentang arahan itu
tradisional C memahami tetapi akan mengabaikan kerana # tidak muncul sebagai
watak pertama dalam talian. Ia juga mencadangkan anda menyembunyikan arahan seperti #pragma
tidak difahami oleh C tradisional dengan memasukkannya. Beberapa tradisional
pelaksanaan tidak akan mengenali #elif, jadi ia mencadangkan untuk mengelakkannya sama sekali.

· Makro seperti fungsi yang muncul tanpa hujah.

· Operator tambah unary.

· 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 tamatnya
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 bagi 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 akan menyebabkan serius
masalah. Ini ialah subset daripada 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 akan
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 dan tidak disokong oleh versi GCC sebelum GCC 3.0.

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

-Wno-endif-labels
Jangan memberi amaran bila-bila masa an #selamat atau #endif diikuti dengan teks.

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

-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 dapat 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)
Melumpuhkan amaran tentang penentu lebar format "printf" / "scanf" bukan ISO "I32",
"I64", dan "I" digunakan pada sasaran Windows bergantung pada masa jalan MS, apabila anda menggunakan
pilihan -Wformat dan -pedantik tanpa sambungan-gnu.

-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 -pedantik.

-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 < or >=. 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. Sebagai contoh, beri amaran jika
"int malloc()" dihantar ke "apa-apa *".

-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.

-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 penunjuk bukan "const" "char *" akan mendapat amaran. Ini
amaran akan 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 akan menjadi gangguan. 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
Amaran untuk pembolehubah yang mungkin diubah oleh longjmp or vfork. Amaran ini juga
didayakan oleh -Wextra.

-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 akan menggunakan operator penukaran jenis: penukaran kepada "kosong", yang
jenis yang sama, kelas asas atau rujukan kepada mereka. Amaran tentang penukaran antara
integer yang ditandatangani dan tidak ditandatangani dilumpuhkan secara lalai dalam C++ melainkan -Wsign-penukaran
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.

-Badan kosong
Beri amaran jika badan kosong berlaku dalam if, lagi or do manakala kenyataan. Amaran ini adalah
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.

-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.

-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-atribut
Jangan amaran jika "__attribute__" yang tidak dijangka digunakan, seperti atribut yang tidak dikenali,
atribut fungsi digunakan pada pembolehubah, dll. Ini tidak akan 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. Matlamatnya adalah untuk
mengesan fungsi global yang tidak diisytiharkan dalam fail pengepala.

-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
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 akan menyebabkan amaran sedemikian, kerana "xh" secara tersirat sifar:

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

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

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

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

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

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

-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 =
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.

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. Anda
hanya mahu melakukan ini jika anda menggunakan beberapa skim normalisasi lain (seperti
"D"), kerana jika tidak, anda boleh mencipta pepijat yang benar-benar mustahil
lihat.

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", akan dipaparkan sama seperti "n" biasa
yang telah diletakkan dalam superskrip. ISO 10646 mentakrifkan NFKC normalisasi
skim untuk menukar semua ini ke dalam bentuk standard juga, dan GCC akan memberi amaran jika anda
kod tiada dalam NFKC jika anda menggunakan -Wnormalized=nfkc. Amaran ini setanding dengan
memberi amaran tentang setiap pengecam yang mengandungi huruf O kerana ia mungkin keliru
dengan digit 0, dan begitu juga bukan lalai, tetapi mungkin berguna sebagai pengekodan tempatan
konvensyen jika persekitaran pengaturcaraan tidak dapat diperbaiki untuk memaparkannya
watak 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.

-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" akan
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.

-Winline
Beri amaran jika fungsi tidak boleh diselaraskan dan ia telah diisytiharkan sebagai sebaris. Walaupun dengan ini
pilihan, pengkompil tidak akan 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 mengimbangi makro kepada jenis bukan POD. mengikut
piawaian ISO C++ 1998, terpakai mengimbangi kepada jenis bukan POD tidak ditentukan. Dalam
pelaksanaan C++ sedia ada, bagaimanapun, mengimbangi biasanya memberikan hasil yang bermakna
walaupun digunakan pada jenis bukan POD tertentu. (Seperti yang mudah struktur Bahawa
gagal menjadi jenis POD hanya kerana mempunyai pembina.) Bendera ini adalah untuk
pengguna yang menyedari bahawa mereka sedang menulis kod bukan mudah alih dan yang telah dengan sengaja
dipilih untuk mengabaikan amaran mengenainya.

Sekatan ke atas mengimbangi boleh 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 lama lama jenis digunakan. Ini didayakan oleh sama ada -pedantik 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 pedantik, atau sintaks alternatif GNU
apabila dalam mod ISO C99 pedantik. Ini adalah lalai. Untuk menghalang mesej amaran, gunakan
-Wno-variadic-makro.

-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.

-Wvla
Beri amaran jika tatasusunan panjang berubah digunakan dalam kod. -Wno-vla akan menghalang
-pedantik 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
kod anda terlalu besar atau terlalu kompleks; GCC akan menolak untuk mengoptimumkan program apabila
pengoptimuman itu sendiri mungkin mengambil masa yang terlalu banyak.

-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
-pedantik, 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 akan dilindungi daripada pecah tindanan.

-Wno-mudflap
Sekat amaran tentang binaan yang tidak boleh digunakan -fmudflap.

-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 -pedantik, dan boleh dilumpuhkan dengan -Wno-terlalu panjang-rentetan.

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

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 akan membuat penyahpepijat lain ranap atau enggan membaca program. Jika anda mahu
untuk 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
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.

-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.

-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 akan meningkatkan saiz maklumat penyahpepijatan
sebanyak faktor dua.

-fno-debug-types-section
Secara lalai apabila menggunakan DWARF v4 atau lebih tinggi jenis DIES akan 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 penyambung kemudiannya
dapat mengalih keluar pendua. Tetapi tidak semua pengguna DWARF menyokong bahagian .debug_types
lagi.

-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). Ini adalah
format yang digunakan oleh DBX pada IRIX 6. Nilai bagi versi mungkin sama ada 2, 3 atau 4; yang
versi lalai ialah 2.

Ambil perhatian bahawa dengan versi DWARF 2 beberapa port memerlukan, dan akan sentiasa menggunakan, beberapa port bukan-
sambungan DWARF 3 yang bercanggah 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.

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

-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.

-gvms
Hasilkan maklumat nyahpepijat dalam format nyahpepijat VMS (jika disokong). Ini adalah
format yang digunakan oleh DEBUG pada sistem 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, tetapi tiada maklumat tentang pembolehubah tempatan dan tiada nombor baris.

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 akan menghasilkannya,
atau hidupkannya pada tahap 2 sebaliknya. Kedudukan hujah ini dalam baris arahan
tidak mengapa, ia berkuat kuasa selepas semua pilihan lain diproses, dan ia berlaku
sekali sahaja, tidak kira berapa kali diberikan. Ini terutamanya bertujuan untuk digunakan
dengan -fcompare-debug.

-fdump-final-insns[=fail]
Buang perwakilan dalaman akhir (RTL) ke fail. Jika hujah pilihan ialah
ditinggalkan (atau jika fail ialah "."), nama fail dump akan 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 akan ditolak oleh GCC sebagai pilihan yang tidak sah dalam mana-mana
kompilasi sebenar (bukannya prapemprosesan, pemasangan atau pemautan). Untuk mendapatkan hanya a
amaran, penetapan 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 DWARF2 dengan menghapuskan maklumat pendua tentang setiap satu
simbol. Pilihan ini hanya masuk akal apabila menjana maklumat penyahpepijatan DWARF2
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 ditakrifkan,
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 akan menjana maklumat nyahpepijat.
Tujuannya adalah untuk mengurangkan maklumat nyahpepijat struct pendua antara objek yang berbeza
fail dalam program yang sama.

Pilihan ini ialah versi terperinci bagi -femit-struct-debug-dikurangkan dan
-femit-struct-debug-baseonly, yang akan memenuhi 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
akan 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 jenis diisytiharkan dalam foo.c dan foo.h akan mempunyai maklumat nyahpepijat, tetapi
jenis yang diisytiharkan dalam pengepala lain tidak akan. Nilai sys bermakna jenis-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.

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

-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 akan 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, ITU dbg_cnt()
kembali benar sentiasa melainkan sempadan atas ditetapkan oleh pilihan ini. cth Dengan
-fdbg-cnt=dce:10,tail_call:0 dbg_cnt(dce) akan kembali benar hanya untuk 10 yang pertama
seruan

-boleh dilawan-jenis-lulus
-fdisable-jenis-lulus=senarai julat
Ini ialah satu set pilihan penyahpepijatan yang digunakan untuk melumpuhkan/mendayakan secara eksplisit
pas pengoptimuman. Untuk pengguna pengkompil, pilihan biasa untuk mendayakan/melumpuhkan pas
hendaklah digunakan 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 rtl pass 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 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 cgraph fungsi itu uid is
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 disalahkan-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.

*<-fenable-rtl-lulus>
*<-fenable-rtl-lulus=senarai julat>
Dayakan rtl pass lulus. Lihat -fdisable-rtl untuk penerangan hujah pilihan dan
contoh.

*<-pokok-fenable-lulus>
*<-pokok-fenable-lulus=senarai julat>
Dayakan pas pokok lulus. Lihat -fdisable-rtl untuk penerangan hujah pilihan.

# 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
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. Ambil perhatian bahawa nombor pas ialah
dikira secara statik apabila pas didaftarkan ke dalam pengurus pas. Justeru itu
penomboran tidak berkaitan dengan susunan dinamik pelaksanaan pas. khususnya,
pas yang dipasang oleh pemalam boleh mempunyai nombor melebihi 200 walaupun ia dilaksanakan agak
awal. nama sampah dijana daripada nama fail output, jika secara eksplisit
ditentukan dan ia bukan boleh laku, jika tidak ia adalah nama asas sumber
fail. 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 sub-
penyingkiran ekspresi 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-regmove
Buang selepas pas pindah daftar.

-fdump-rtl-sched1
-fdump-rtl-sched2
-fdump-rtl-sched1 dan -fdump-rtl-sched2 membolehkan lambakan selepas blok asas
pas penjadualan.

-fdump-rtl-lihat
Buang selepas penyingkiran sambungan tanda.

-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
-fdump-rtl-split1, -fdump-rtl-split2, -fdump-rtl-split3, -fdump-rtl-split4 dan
-fdump-rtl-split5 membolehkan lambakan selepas lima pusingan pembahagian 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 telah digunakan. Panjang setiap arahan juga dicetak.

-dP Buang RTL dalam output pemasang sebagai ulasan sebelum setiap arahan. Juga
hidupkan -dp penjelasan.

-dv Untuk setiap fail dump lain yang ditunjukkan (-fdump-rtl-lulus), buang a
perwakilan graf aliran kawalan yang sesuai untuk dilihat dengan VCG ke
file.pass.vcg.

-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.

-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 akan menyebabkan pembilang dijumlahkan ke atas keseluruhan unit kompilasi sambil
-perincian akan membuang setiap acara kerana pas menjananya. Lalai dengan no
pilihan adalah untuk menjumlahkan pembilang untuk setiap fungsi yang disusun.

-fdump-pokok-bertukar
-fdump-pokok-bertukar-pilihan
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.
Jika -pilihan borang digunakan, pilihan adalah senarai - pilihan berasingan yang mengawal
butiran tempat pembuangan sampah. Tidak semua pilihan boleh digunakan untuk semua tempat pembuangan sampah; mereka yang
tidak bermakna akan diabaikan. 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
Menghalang lambakan ahli skop atau badan fungsi semata-mata kerana itu
skop telah dicapai. Hanya buang item tersebut apabila ia boleh dicapai secara terus
beberapa jalan lain. Apabila membuang pokok bercetak cantik, pilihan ini menghalang lambakan
badan struktur kawalan.

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).

stats
Dayakan lambakan pelbagai statistik tentang pas (tidak dihormati oleh setiap pembuangan
pilihan).

blok
Dayakan menunjukkan sempadan blok asas (dilumpuhkan dalam pembuangan mentah).

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.

semua Hidupkan semua pilihan, kecuali mentah, nipis, kata kerja dan lineno.

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.

vcg Buang graf aliran kawalan setiap fungsi ke fail dalam format VCG. Fail
nama dibuat dengan melampirkan .vcg kepada nama fail sumber. Ambil perhatian bahawa jika fail
mengandungi lebih daripada satu fungsi, fail yang dihasilkan tidak boleh digunakan secara langsung oleh
VCG. Anda perlu memotong dan menampal setiap graf fungsi ke dalam bahagian tersendiri
fail dulu.

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.

kepak lumpur
Buang setiap fungsi selepas menambah instrumentasi mudflap. Nama fail dibuat oleh
menambah .mudflap 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.

vp 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.

-ftree-vectorizer-verbose=n
Pilihan ini mengawal jumlah output penyahpepijatan yang dicetak oleh vectorizer. ini
maklumat ditulis kepada ralat piawai, melainkan -fdump-tree-semua or -fdump-tree-vect
ditentukan, dalam hal ini ia dikeluarkan kepada fail penyenaraian dump biasa, .vect. Untuk
n=0 tiada maklumat diagnostik dilaporkan. Jika n=1 vectorizer melaporkan setiap gelung
yang telah divektorkan, dan jumlah bilangan gelung yang telah divektorkan. Jika n=2 itu
vectorizer juga melaporkan gelung bukan vektor yang melepasi fasa analisis pertama
(vect_analyze_loop_form) - iaitu boleh dikira, paling dalam, satu-bb, satu-masuk/keluar
gelung. Ini adalah tahap verbositi yang sama -fdump-tree-vect-stats kegunaan. lebih tinggi
tahap verbositi bermaksud sama ada lebih banyak maklumat dibuang untuk setiap gelung yang dilaporkan, atau sama
jumlah maklumat yang dilaporkan untuk lebih banyak gelung: jika n=3, model kos vectorizer
maklumat dilaporkan. Jika n=4, maklumat berkaitan penjajaran ditambahkan pada
laporan. Jika n=5, maklumat berkaitan rujukan data (cth pergantungan memori, ingatan
capaian-corak) ditambahkan pada laporan. Jika n=6, laporan vectorizer juga tidak
gelung paling dalam tervektor yang tidak melepasi fasa analisis pertama (iaitu, mungkin tidak
boleh dikira, atau mungkin mempunyai aliran kawalan yang rumit). Jika n=7, laporan vectorizer
juga gelung bersarang bukan vektor. Jika n=8, maklumat berkaitan SLP ditambah pada
laporan. Untuk n=9, semua maklumat yang dijana oleh vectorizer semasa analisisnya
dan transformasi dilaporkan. Ini adalah tahap verbositi yang sama
-fdump-tree-vect-details kegunaan.

-frandom-seed=rentetan
Pilihan ini menyediakan benih yang GCC gunakan apabila ia sebaliknya menggunakan nombor rawak.
Ia digunakan untuk menjana 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 menghasilkannya. Anda boleh menggunakan -frandom-benih pilihan untuk menghasilkan
fail objek yang serupa secara semula.

. rentetan 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 akan 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

akan mencipta 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 akan menjadi
dicipta dan dikekalkan, tetapi dibuang pada akhirnya.

-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 cangkerang.

-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 akan mencari---dan tidak melakukan 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 akan 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 buat apa-apa lagi.

-dumpspek
Cetak spesifikasi terbina dalam pengkompil---dan jangan lakukan apa-apa lagi. (Ini digunakan apabila
GCC sendiri sedang dibina.)

-feliminate-unsed-debug-types
Biasanya, apabila menghasilkan output DWARF2, GCC akan mengeluarkan maklumat penyahpepijatan untuk semua
jenis yang diisytiharkan dalam unit kompilasi, tidak kira sama ada ia sebenarnya atau tidak
digunakan dalam unit penyusunan itu. Kadangkala ini berguna, seperti jika, dalam penyahpepijat,
anda ingin menghantar nilai kepada jenis yang sebenarnya tidak digunakan dalam program anda (tetapi adalah
diisytiharkan). Walau bagaimanapun, lebih kerap, ini mengakibatkan sejumlah besar ruang terbuang.
Dengan pilihan ini, GCC akan mengelak daripada menghasilkan output simbol nyahpepijat untuk jenis yang
tiada tempat digunakan dalam fail sumber yang sedang disusun.

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 -fcompare-elim -fcprop-mendaftar -fdce -fdefer-pop -fdelayed-cawangan
-fdse -fguess-cawangan-kebarangkalian -lima-penukaran2 -lima-penukaran -fipa-pure-const
-fipa-profil -fipa-rujukan -fmerge-pemalar -fsplit-wide-types -ftree-bit-ccp
-ftree-built-call-dce -tiga-ccp -ftree-ch -ftree-copyrename -ftree-dce
-ftree-dominator-opts -ftree-dse -ftree-forwprop -free -ftree-phiprop -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 -pengoptimuman yang mahal -fgcse
-fgcse-lm -finline-kecil-fungsi -findirect-inlining -fipa-sra
-foptimize-sibling-panggilan -fpartial-inlining -fpeephole2 -fregmove -sekatan-freorder
-freorder-fungsi -frerun-cse-after-gelung -fsched-interblock -fsched-spec
-fschedule-inns -fschedule-insns2 -fstrict-aliasing -fstrict-overflow
-penukaran-ftree-switch -bercantum-ekor-tiga -ftree-pra -ftree-vrp

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-vectorize, -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 -versi-free-vect-loop

-Ofast
Abaikan pematuhan standard yang ketat. -Ofast membolehkan semua -O3 pengoptimuman. Ia juga
membolehkan pengoptimuman yang tidak sah untuk semua program pematuhan standard. Ia
hidupkan -fast-matematik dan khusus Fortran -fno-protect-parents dan -fstack-arrays.

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 akan menjadi -fno-foo. Dalam jadual
di bawah, hanya satu daripada borang yang disenaraikan---yang biasanya anda akan gunakan. Anda boleh fikirkan
keluar borang lain dengan sama ada mengalih keluar 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-default-inline
Jangan jadikan fungsi ahli sebaris secara lalai hanya kerana ia ditakrifkan di dalam
skop kelas (C++ sahaja). Jika tidak, apabila anda nyatakan -O, fungsi ahli ditakrifkan
dalam skop kelas disusun sebaris secara lalai; iaitu, anda tidak perlu menambah sebaris
di hadapan nama fungsi ahli.

-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.

Bermula dengan GCC versi 4.6, tetapan lalai (apabila tidak mengoptimumkan saiz) untuk
Sasaran Linux x32 86-bit dan Darwin x32 86-bit telah ditukar kepada
-fomit-frame-pointer. Lalai boleh dikembalikan kepada -fno-omit-frame-pointer by
mengkonfigurasi GCC dengan --dayakan-bingkai-penunjuk konfigurasi pilihan.

Didayakan pada tahap -O, -O2, -O3, -Os.

-foptimize-sibling-panggilan
Optimumkan panggilan rekursif adik-beradik dan ekor.

Didayakan pada tahap -O2, -O3, -Os.

-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 fail
pembolehubah telah 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 akan mengakibatkan tingkah laku tidak mematuhi.

-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 akan dipadamkan yang akan mencetuskan
penjanaan reg-moves berdasarkan analisis julat hayat. Pilihan ini adalah
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.

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. Contohnya, supaya boleh laku yang terhasil boleh mencari
permulaan bahagian itu dan/atau membuat andaian berdasarkan itu.

Lalai adalah -fzero-dimulakan-dalam-bss.

-fmudflap -fmudflapth -fmudflapir
Untuk bahagian hadapan yang menyokongnya (C dan C++), instrumen semua penunjuk/tatasusunan berisiko
operasi dereferencing, beberapa fungsi rentetan/timbunan perpustakaan standard, dan beberapa fungsi lain
binaan yang berkaitan dengan ujian julat/kesahan. Modul yang diperalatkan sedemikian sepatutnya
kebal terhadap limpahan penimbal, penggunaan timbunan tidak sah dan beberapa kelas C/C++ yang lain
ralat pengaturcaraan. Instrumentasi bergantung pada perpustakaan masa jalan yang berasingan
(libmudflap), yang akan dipautkan ke dalam program jika -fmudflap diberikan pada masa pautan.
Tingkah laku masa larian program berinstrumen dikawal oleh MUDFLAP_OPTIONS
pembolehubah persekitaran. Lihat "env MUDFLAP_OPTIONS=-help a.out" untuk pilihannya.

Penggunaan -fmudflapth bukan -fmudflap untuk menyusun dan memaut jika program anda berbilang
berulir. guna -fmudflapir, Di samping -fmudflap or -fmudflapth, Jika
instrumentasi harus mengabaikan bacaan penunjuk. Ini menghasilkan kurang instrumentasi (dan
oleh itu pelaksanaan yang lebih pantas) dan masih memberikan sedikit perlindungan terhadap ingatan langsung
merosakkan penulisan, tetapi membenarkan tersilap membaca data untuk disebarkan dalam atur cara.

-fthread-lompat
Lakukan pengoptimuman di mana kami menyemak untuk melihat sama ada lompatan bercabang ke lokasi di mana
satu lagi perbandingan yang dikemukakan oleh yang pertama ditemui. Jika ya, cawangan pertama ialah
dihalakan sama ada ke destinasi cawangan kedua atau titik serta-merta
mengikutinya, bergantung pada 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 akan mengikuti lompatan apabila syarat
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 telah 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, penghapusan subungkapan biasa global akan cuba
memindahkan beban yang hanya dibunuh oleh kedai ke dalam diri mereka sendiri. Ini membolehkan gelung
mengandungi jujukan beban/simpan untuk ditukar kepada beban di luar gelung, dan a
salin/simpan dalam gelung.

Didayakan secara lalai apabila gcse didayakan.

-fgcse-sm
Bila -fgcse-sm didayakan, pas gerakan kedai dijalankan selepas biasa global
penghapusan subungkapan. Pas ini akan cuba mengalihkan stor daripada gelung. Bila
digunakan bersama dengan -fgcse-lm, gelung yang mengandungi urutan beban/simpan 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.

-funsafe-loop-optimizations
Jika diberikan, pengoptimum gelung akan menganggap bahawa indeks gelung tidak melimpah, dan itu
gelung dengan keadaan keluar bukan remeh adalah tidak terhingga. Ini membolehkan julat yang lebih luas
pengoptimuman gelung walaupun pengoptimum gelung itu sendiri tidak dapat membuktikan bahawa ini
andaian adalah sah. menggunakan -Wunsafe-loop-optimizations, pengkompil akan memberi amaran kepada anda
jika ia menjumpai gelung seperti ini.

-fcrossjumping
Lakukan transformasi lompat silang. Transformasi ini menyatukan kod setara dan
simpan 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 "if-conversion2".

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.

-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 peringkat -O2, -O3, -Os.

-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 x86 pada tahap -O2, -O3.

-foptimize-register-move
-fregmove
Cuba untuk menetapkan semula nombor daftar dalam arahan pergerakan dan sebagai operan yang lain
arahan mudah untuk memaksimumkan jumlah ikatan daftar. Ini adalah
amat membantu pada mesin dengan arahan dua operan.

Nota -fregmove dan -foptimize-register-move adalah pengoptimuman yang sama.

Didayakan pada tahap -O2, -O3, -Os.

-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-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.

-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 peruntukan daftar.
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 ada dan sebagai akibatnya daftar tumpahan dalam daftar
peruntukan.

-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 akan dipindahkan lebih awal,
-fsched-stalled-insns=0 bermakna tiada had berapa banyak insn beratur boleh dialihkan
sebelum waktunya. -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 akan diperiksa untuk pergantungan pada yang terhenti
insn yang merupakan calon untuk penyingkiran pramatang daripada barisan insn yang terhenti. ini
mempunyai kesan hanya semasa pas penjadualan kedua, dan hanya jika
-fsched-stalled-inns digunakan. -fno-sched-stalled-insns-dep adalah bersamaan dengan
-fsched-stalled-insns-dep=0. -fsched-stalled-insns-dep tanpa nilai adalah setara
kepada -fsched-stalled-insns-dep=1.

-fsched2-use-superblocks
Apabila menjadualkan selepas peruntukan daftar, gunakan algoritma penjadualan superblock.
Penjadualan superblock membolehkan pergerakan merentasi sempadan blok asas menghasilkan lebih pantas
jadual. Pilihan ini adalah percubaan, kerana bukan semua perihalan mesin digunakan oleh GCC
model 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 datang sebelum penjadualan tradisional, jika gelung adalah modulo
dijadualkan kita mungkin mahu menghalang pas penjadualan kemudian daripada menukarnya
jadual, kami menggunakan pilihan ini untuk mengawalnya.

-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 sehingga salah satu daripada -penjadualan-selektif or -penjadualan-selektif2 is
terangsang.

-fsel-sched-pipelining-outer-gelung
Apabila gelung saluran paip semasa penjadualan terpilih, juga gelung luar saluran paip. ini
pilihan tidak mempunyai kesan sehingga -fsel-sched-pipelining dihidupkan.

-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 nilai untuk diperuntukkan dalam daftar yang akan dikalahkan oleh panggilan fungsi,
dengan mengeluarkan arahan tambahan untuk menyimpan dan memulihkan daftar di sekitar panggilan tersebut.
Peruntukan sedemikian dilakukan hanya apabila ia kelihatan menghasilkan kod yang lebih baik daripada yang akan berlaku
sebaliknya dihasilkan.

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.

-fconserve-stack
Cuba untuk meminimumkan penggunaan tindanan. Pengkompil akan cuba menggunakan kurang ruang tindanan,
walaupun itu menjadikan program lebih perlahan. Pilihan ini membayangkan menetapkan timbunan besar-
bingkai 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.

-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 mana yang tidak dapat melarikan diri daripada unit penyusunan.
Didayakan secara lalai di -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 akan melaksanakan 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.

-fipa-matriks-reorg
Lakukan perataan matriks dan transposing. Matrix flattening cuba menggantikan an
matriks m-dimensi dengan matriks n-dimensi yang setara, dengan n < m. ini
mengurangkan tahap tidak arah yang diperlukan untuk mengakses unsur matriks. The
pengoptimuman kedua ialah pemindahan matriks, yang cuba mengubah susunan
dimensi matriks untuk meningkatkan lokaliti cache. Kedua-dua pengoptimuman memerlukan
-fwhole-program bendera. Transposing didayakan hanya jika maklumat pemprofilan
diperlukan.

-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.

-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 itu
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-ppl dan --dengan-cloog kepada
dayakan 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 akan mengubah gelung seolah-olah pengguna telah menulis:

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-ppl
dan --dengan-cloog untuk membolehkan 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 akan mengubah gelung seolah-olah pengguna telah menulis:

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-ppl
dan --dengan-cloog untuk membolehkan 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 akan mengubah gelung seolah-olah pengguna telah menulis:

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
akan berulang pada 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-ppl
dan --dengan-cloog untuk membolehkan 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 CLooG, seperti indeks
pemisahan dan penghapusan kod mati dalam gelung.

-floop-ratakan
Mengeluarkan struktur sarang gelung: mengubah sarang gelung menjadi gelung tunggal. ini
transformasi boleh berguna sebagai transformasi pembolehan untuk vektorisasi dan
keselarian. Ciri ini adalah percubaan. Untuk menggunakan transformasi kod ini, GCC
perlu dikonfigurasikan dengan --dengan-ppl dan --dengan-cloog untuk mendayakan gelung Grafit
infrastruktur transformasi.

-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;

akan 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 akan berlaku
sukar dikendalikan pada peringkat RTL (panggilan fungsi, operasi yang berkembang kepada bukan remeh
urutan inns). Dengan -funswitch-gelung ia juga menggerakkan operan keadaan yang
adalah invarian di luar gelung, supaya kita boleh menggunakan hanya analisis invarian yang remeh
dalam 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 diselaraskan daripada fungsi lain. Ia adalah
bentuk yang lebih terhad -ftree-coalesce-vars. Ini boleh membahayakan maklumat nyahpepijat sedemikian
pembolehubah sebaris, tetapi ia akan mengekalkan pembolehubah fungsi sebaris ke selain daripada
satu sama lain, supaya mereka lebih berkemungkinan mengandungi nilai yang dijangkakan dalam a
sesi penyahpepijatan. Ini ialah lalai dalam versi GCC yang lebih lama daripada 4.7.

-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.

-free-vectorize
Lakukan pengvektoran gelung pada pokok. Bendera ini didayakan secara lalai di -O3.

-ftree-slp-vektorkan
Lakukan pemvektoran blok asas pada pokok. Bendera ini didayakan secara lalai di -O3 dan
apabila -free-vectorize Didayakan.

-versi-free-vect-loop
Lakukan versi gelung apabila melakukan vektorisasi gelung pada pokok. Apabila gelung muncul
boleh divektorkan kecuali penjajaran data atau pergantungan data tidak dapat ditentukan
pada masa penyusunan, kemudian versi gelung tervektor dan tidak tervektor dijana
bersama-sama dengan semakan masa jalan untuk penjajaran atau pergantungan untuk mengawal versi yang mana
dilaksanakan. Pilihan ini didayakan secara lalai kecuali pada tahap -Os di mana ia dilumpuhkan.

-model-kos-fvect
Dayakan model kos untuk pengvektoran.

-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.

-ftracer
Lakukan duplikasi ekor untuk membesarkan saiz superblock. Transformasi ini memudahkan
aliran kawalan fungsi yang membolehkan pengoptimuman lain melakukan kerja yang lebih baik.

-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. Pilihan ini membuat
kod lebih besar, dan mungkin atau mungkin tidak menjadikannya berjalan lebih pantas.

-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,

-fsplit-ivs-in-unroller
Membolehkan menyatakan 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. Namun begitu
dalam kes badan gelung lebih rumit daripada satu blok asas, ini tidak
boleh dipercayai. 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 akan mencipta berbilang 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 akan 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 __dibina_jangka, maka
heuristik akan digunakan untuk meneka kebarangkalian cawangan untuk aliran kawalan yang lain
graf, mengambil __dibina_jangka maklumat dikira. Interaksi antara
heuristik dan __dibina_jangka boleh menjadi rumit, dan dalam beberapa kes, ia mungkin berguna untuk
melumpuhkan heuristik supaya kesan daripada __dibina_jangka lebih senang 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.

-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 akan 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 akan
berlaku. Ini membenarkan pelbagai pengoptimuman. Sebagai contoh, pengkompil akan menganggap
bahawa ungkapan seperti "i + 10 > i" akan sentiasa benar untuk "i" yang ditandatangani. ini
andaian 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 masuk
kesan sebarang percubaan untuk menentukan sama ada operasi pada nombor yang ditandatangani akan melimpah
mesti ditulis dengan teliti 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 akan sejajar dengan 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 akan diselaraskan.

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 akan menjadi
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.
Harapan adalah bahawa gelung akan dilaksanakan berkali-kali, yang akan menggantikan mana-mana
pelaksanaan operasi dummy.

-fno-align-gelung dan -falign-loops=1 adalah setara dan bermakna bahawa gelung tidak akan menjadi
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 bahawa gelung tidak akan menjadi
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 akan dialih keluar. Pilihan ini bertujuan untuk menyokong
kod sedia ada yang bergantung pada susunan tertentu. Untuk kod baru, lebih baik digunakan
sifat.

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. Jika emas digunakan sebagai pemalam pemaut,
Atribut "externally_visible" ditambah secara automatik pada fungsi (belum berubah lagi
disebabkan arus emas isu) yang diakses di luar objek LTO mengikut
fail resolusi yang dihasilkan oleh emas. Untuk pemaut lain yang tidak dapat menjana resolusi
fail, atribut "externally_visible" eksplisit masih diperlukan. Manakala pilihan ini
adalah bersamaan dengan penggunaan kata kunci "statik" yang betul untuk program yang terdiri daripada a
fail tunggal, dalam kombinasi dengan pilihan -flto bendera ini boleh digunakan untuk menyusun banyak
program skala yang lebih kecil kerana fungsi dan pembolehubah menjadi setempat untuk keseluruhannya
unit kompilasi gabungan, bukan untuk fail sumber tunggal itu sendiri.

Pilihan ini membayangkan -fwhole-file untuk program Fortran.

-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 perlu dinyatakan pada masa penyusunan dan semasa
pautan terakhir. 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 pengoptimuman masa pautan
-flto bendera perlu dihantar kepada kedua-dua kompil dan 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.

Ambil perhatian bahawa apabila fail disusun dengan -flto, fail objek yang dijana adalah lebih besar daripada
fail objek biasa kerana ia mengandungi kod bait GIMPLE dan kod akhir biasa.
Ini bermakna fail objek dengan maklumat LTO boleh dipautkan sebagai objek biasa
fail; jika -flto tidak dihantar kepada pemaut, tiada pengoptimuman antara prosedur
terpakai.

Selain itu, bendera pengoptimuman yang digunakan untuk menyusun fail individu tidak
semestinya berkaitan dengan yang digunakan pada masa pautan. Sebagai contoh,

gcc -c -O0 -flto foo.c
gcc -c -O0 -flto bar.c
gcc -o myprog -flto -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 tanpa -flto, Maka myprog tidak dioptimumkan.

Apabila menghasilkan binari akhir dengan -flto, GCC hanya menggunakan pengoptimuman masa pautan
kepada 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. Pada masa ini, pilihan berikut
disimpan ke dalam fail bytecode GIMPLE: -fPIC, -fbiasa dan semua -m bendera sasaran.

Pada masa pautan, pilihan ini dibaca dan digunakan semula. Perhatikan bahawa semasa
pelaksanaan tidak membuat percubaan untuk mengenali nilai yang bercanggah untuk pilihan ini. Jika
fail yang berbeza mempunyai nilai pilihan yang bercanggah (cth, satu fail disusun dengan -fPIC
dan satu lagi tidak), pengkompil hanya menggunakan nilai terakhir yang dibaca daripada bytecode
fail. Oleh itu, disyorkan supaya anda menyusun semua fail yang mengambil bahagian dalam
pautan yang sama dengan pilihan yang sama.

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
pada bila-bila masa.

Satu lagi ciri LTO ialah kemungkinan untuk menggunakan pengoptimuman antara prosedur
pada fail yang ditulis dalam bahasa yang berbeza. Ini memerlukan sokongan dari segi bahasa
tamat. Pada masa ini, hujung hadapan C, C++ dan Fortran mampu memancarkan GIMPLE
bytecodes, jadi sesuatu seperti ini sepatutnya berfungsi:

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); apa yang anda perlu tambah ialah -flto kepada semua
menyusun dan memaut arahan.

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 mendayakan ciri ini, gunakan bendera -pemalam-penyambung fius
pada masa pautan:

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.

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 akan
bekerja dengan versi GCC yang lebih lama/baru.

Pengoptimuman masa pautan tidak berfungsi dengan baik dengan penjanaan maklumat nyahpepijat.
Menggabungkan -flto dengan -g sedang percubaan dan dijangka menghasilkan salah
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.

Pilihan ini dilumpuhkan secara lalai

-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 bersaiz sama (bila boleh).
Menentukan "tiada" sebagai algoritma melumpuhkan pembahagian dan penstriman sepenuhnya. The
nilai lalai ialah "seimbang".

-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.

-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).

Lalai adalah -ffat-lto-objek tetapi lalai ini bertujuan untuk berubah pada masa hadapan
dikeluarkan apabila persekitaran yang didayakan pemalam pemaut menjadi lebih biasa.

-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.

-fius-ld=emas
Menggunakan emas pemaut bukannya pemaut lalai.

-fius-ld=bfd
Menggunakan ld.bfd pemaut bukannya pemaut lalai.

-fcprop-mendaftar
Selepas pembahagian peruntukan daftar dan pembahagian arahan peruntukan selepas pendaftaran, kami
lakukan pas penyebaran salinan untuk cuba mengurangkan kebergantungan penjadualan dan
sekali-sekala hapuskan salinan itu.

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 akan
gunakan heuristik untuk membetulkan atau melicinkan ketidakkonsistenan tersebut. Secara lalai, GCC akan
mengeluarkan 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 akan menggunakan
direktori semasa sebagai jalan, dengan itu fail data profil akan muncul dalam yang sama
direktori sebagai 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-arcs", "-fprofile-values", "-fvpt".

If jalan ditentukan, GCC akan melihat pada jalan untuk mencari data maklum balas profil
fail. Lihat -fprofile-dir.

-fprofile-penggunaan
-fprofile-use=jalan
Dayakan pengoptimuman terarah maklum balas profil dan pengoptimuman secara umumnya menguntungkan
hanya dengan maklum balas profil tersedia.

Pilihan berikut didayakan: "-fbranch-probability", "-fvpt",
"-funroll-loops", "-fpeel-loops", "-ftracer"

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 akan melihat pada jalan untuk mencari data maklum balas profil
fail. Lihat -fprofile-dir.

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 yang berlebihan akan 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
Set -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.

-fvpt
Jika digabungkan dengan -fprofile-arka, ia mengarahkan pengkompil untuk menambah kod untuk dikumpulkan
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 akan memanfaatkan kebanyakan pemproses dengan
banyak daftar. Bergantung pada format maklumat nyahpepijat yang diterima pakai oleh sasaran,
walau bagaimanapun, ia boleh menjadikan penyahpepijatan mustahil, kerana pembolehubah tidak akan kekal dalam a
"daftar rumah".

Didayakan secara lalai dengan -funroll-gelung dan -fpeel-gelung.

-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 penghubung akan mencipta objek yang lebih besar dan
fail boleh laku dan juga akan menjadi lebih perlahan. Anda tidak akan dapat menggunakan "gprof" pada semua
sistem jika anda menentukan pilihan ini dan anda mungkin menghadapi masalah dengan penyahpepijatan jika anda
nyatakan 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 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.

NOTA: Dalam Ubuntu 6.10 dan versi yang lebih baru pilihan ini didayakan secara lalai untuk C, C++,
ObjC, ObjC++, jika tiada -fno-stack-protector, -nostdlib, tidak -berdiri bebas adalah
dijumpai.

-fstack-pelindung-semua
suka -fstack-pelindung kecuali semua fungsi dilindungi.

-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 akan mengira alamat ketiga-tiga pembolehubah, tetapi jika anda menyusunnya
dengan -fsection-anchor, ia akan mengakses pembolehubah dari titik utama yang sama
sebaliknya. Kesannya 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 akan sebaris fungsi 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 diberikan dalam
jadual berikut:

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 akan dilakukan ke atas mereka. Nilai ini diabaikan dalam kes itu
di mana semua arahan dalam blok yang dilompat silang 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 akan menjadi 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 akan diperuntukkan untuk
melaksanakan pengoptimuman penghapusan subungkapan biasa global. Jika lebih banyak ingatan
daripada yang ditentukan diperlukan, pengoptimuman tidak akan dilakukan.

nisbah pemasukan-maks-gcse
Jika nisbah sisipan ungkapan kepada pemadaman adalah lebih besar daripada nilai ini untuk
sebarang ungkapan, maka RTL PRE akan memasukkan atau mengalih keluar ungkapan dan dengan itu pergi
pengiraan separa berlebihan dalam aliran arahan. Nilai lalai ialah
20.

max-pending-list-length
Bilangan maksimum penjadualan kebergantungan belum selesai akan dibenarkan sebelum dibilas
keadaan semasa dan bermula semula. Fungsi besar dengan beberapa cawangan atau panggilan
boleh mencipta 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 akan dipertimbangkan oleh pelapis pokok untuk pelapis. Ini sahaja
mempengaruhi fungsi yang diisytiharkan sebaris dan kaedah yang dilaksanakan dalam pengisytiharan kelas
(C++). Nilai lalai ialah 400.

max-inline-inns-auto
Apabila anda menggunakan -finline-fungsi (termasuk dalam -O3), banyak fungsi yang akan
jika tidak, tidak dipertimbangkan untuk inlining oleh pengkompil akan disiasat. Kepada
fungsi tersebut, had yang berbeza (lebih terhad) berbanding dengan fungsi
diisytiharkan sebaris boleh digunakan. Nilai lalai ialah 40.

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 (pertimbangkan unit yang terdiri daripada fungsi A yang sebaris dan
B yang hanya memanggil A tiga kali. Jika B adalah kecil berbanding A, pertumbuhan unit
adalah 300\% namun sebaris sedemikian adalah sangat waras. Untuk unit yang sangat besar yang terdiri daripada
fungsi inlineable kecil namun had pertumbuhan unit keseluruhan diperlukan untuk
elakkan letupan eksponen saiz kod. Oleh itu untuk unit yang lebih kecil, saiznya adalah
meningkat 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 30 yang mengehadkan pertumbuhan unit kepada 1.3 kali ganda saiz asal.

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 sebaris rekursif sendiri
fungsi boleh berkembang menjadi dengan melakukan inlining rekursif.

Untuk fungsi yang diisytiharkan sebaris --param max-inline-insns-rekursif diambil ke dalam
akaun. Untuk fungsi yang tidak diisytiharkan sebaris, sebaris rekursif berlaku hanya apabila
-finline-fungsi (termasuk dalam -O3) didayakan dan --param max-inline-inns-
rekursif-auto digunakan. Nilai lalai ialah 450.

max-inline-rekursive-depth
max-inline-recursive-depth-auto
Menentukan kedalaman rekursif maksimum yang digunakan oleh inlining rekursif.

Untuk fungsi yang diisytiharkan sebaris --param max-inline-rekursive-depth diambil ke dalam
akaun. Untuk fungsi yang tidak diisytiharkan sebaris, sebaris rekursif berlaku hanya apabila
-finline-fungsi (termasuk dalam -O3) didayakan dan --param max-inline-recursive-
depth-auto digunakan. 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 dari kebarangkalian bahawa fungsi akan 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 dihasilkan oleh inliner awal. Sebenarnya ia meningkatkan jumlah
inlining untuk kod yang mempunyai penalti abstraksi yang besar. Nilai lalai ialah 10.

lelaran-inliner-awal maks
lelaran-inliner-awal maks
Had lelaran inliner awal. Ini pada asasnya mengehadkan bilangan bersarang
panggilan tidak langsung inliner awal boleh diselesaikan. Rantaian yang lebih dalam masih dikendalikan sehingga lewat
inlining.

comdat-berkongsi-kebarangkalian
comdat-berkongsi-kebarangkalian
Kebarangkalian (dalam peratus) bahawa fungsi sebaris C++ dengan keterlihatan comdat akan menjadi
dikongsi merentas berbilang unit kompilasi. Nilai lalai ialah 20.

min-vect-gelung-terikat
Bilangan minimum lelaran di mana gelung tidak akan 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 akan dengan mudah
ungkapan, iaitu, ungkapan yang mempunyai kos kurang daripada gcse-unrestricted-
kos. Menentukan 0 akan melumpuhkan pengangkatan ungkapan mudah. lalai
nilai ialah 10.

gcse-kos-tidak-terhad
Kos, diukur secara kasar sebagai kos satu arahan mesin biasa, pada
pengoptimuman GCSE yang tidak akan 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 akan berlaku. Menentukan 0 akan 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 akan dielakkan
mengehadkan carian, tetapi mungkin melambatkan penyusunan fungsi yang besar. lalai
nilai ialah 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 perlu ada pada gelung jika gelung itu adalah
dibuka, dan jika gelung dibuka, ia menentukan berapa kali kod gelung
dibuka.

max-average-unrolled-inns
Bilangan maksimum arahan yang berat sebelah oleh kebarangkalian pelaksanaannya itu
gelung harus mempunyai jika gelung itu dibuka, dan jika gelung dibuka, gelung itu
menentukan berapa kali kod gelung dibuka.

max-unroll-times
Bilangan maksimum pembukaan gelung tunggal.

max-peeled-inns
Bilangan maksimum arahan yang perlu ada pada gelung jika gelung itu dikupas,
dan jika gelung dikupas, ia menentukan berapa kali kod gelung dikupas.

max-peel-times
Bilangan maksimum pengelupasan bagi satu gelung.

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 bawah semua calon
dipertimbangkan untuk setiap penggunaan dalam pengoptimuman pembolehubah aruhan. Hanya yang paling
calon yang berkaitan akan dipertimbangkan sekiranya terdapat lebih ramai calon, untuk mengelak
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 adalah lebih kecil daripada nilai ini, kami sentiasa cuba
alih keluar iv yang tidak diperlukan daripada set semasa pengoptimumannya apabila iv baharu ditambah
ke set.

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 dilakukan oleh penyelesai Omega
masukkan. Nilai lalai ialah 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. Lihat pilihan ftree-vect-loop-version
untuk maklumat lanjut.

vect-max-version-for-alias-checks
Bilangan maksimum semakan masa jalan yang boleh dilakukan semasa melakukan gelung
versi untuk alias dalam vectorizer. Lihat pilihan ftree-vect-loop-version untuk
maklumat lanjut.

lelaran-maks-untuk-jejak
Bilangan maksimum lelaran bagi satu gelung algoritma brute force untuk analisis
daripada # lelaran gelung cuba menilai.

pecahan-kira-bb panas
Pilih pecahan daripada kiraan maksimum ulangan blok asas dalam program
diberikan blok asas perlu perlu dianggap panas.

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
tidak diketahui. Kami meramalkan bilangan lelaran yang diketahui dengan betul, manakala yang tidak diketahui
bilangan lelaran purata kepada kira-kira 10. Ini bermakna gelung tanpa
sempadan akan kelihatan sejuk secara buatan berbanding yang lain.

selaras-ambang
Pilih pecahan daripada kekerapan maksimum pelaksanaan blok asas dalam fungsi
blok asas yang diberikan akan diselaraskan.

align-loop-iteration
Gelung dijangka akan berulang sekurang-kurangnya bilangan lelaran yang dipilih akan diperolehi
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 digunakan hanya apabila maklum balas profil digunakan
tersedia. Profil sebenar (berbanding dengan yang dianggarkan secara statik) adalah banyak
kurang seimbang membolehkan ambang menjadi nilai yang lebih besar.

tracer-max-code-growth
Hentikan pertindihan ekor setelah pertumbuhan kod telah mencapai peratusan tertentu. Ini adalah
hujah yang agak hokey, kerana kebanyakan pendua akan dihapuskan kemudian dalam tanda 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 ini
ambang.

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 cse pertimbangkan. Lalai ialah 10.

max-cse-inns
Arahan maksimum proses CSE sebelum siram. Lalai 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 akan menggunakan cawangan tanpa syarat
atau salin kod pada destinasinya. Kod diduakan apabila dianggarkan
saiz adalah lebih kecil daripada nilai ini didarab dengan anggaran saiz tanpa syarat
melompat di tempat panas program.

. susun semula-sekat-pendua-maklum balas digunakan hanya apabila maklum balas profil digunakan
tersedia dan boleh 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. 0 - lumpuhkan
sambungan rantau, N - lakukan paling banyak lelaran N. Nilai lalai ialah 0.

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
insn akan dijadualkan. Nilai lalai ialah 40.

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 akan 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 akan dihasilkan 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.

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.

min-pemetaan maya
Menentukan bilangan minimum pemetaan maya dalam pengemas kini SSA tambahan
yang harus didaftarkan untuk mencetuskan heuristik pemetaan maya yang ditakrifkan oleh
nisbah-pemetaan maya. Nilai lalai ialah 100.

nisbah-pemetaan maya
Jika bilangan pemetaan maya adalah nisbah pemetaan maya lebih besar daripada nombor itu
simbol maya yang akan dikemas kini, kemudian pengemas kini SSA tambahan bertukar kepada a
kemas kini penuh untuk simbol tersebut. Nisbah lalai ialah 3.

ssp-saiz penimbal
Saiz minimum penimbal (iaitu tatasusunan) yang akan menerima pecah tindanan
perlindungan 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.

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 akan kami uruskan 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 kita ambil 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 akan menolak untuk 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 akan
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 akan dilakukan dan
pengoptimuman bergantung padanya akan dilumpuhkan. Saiz SCC maksimum lalai ialah
10000.

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.

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 akan dikendalikan oleh itu
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 akan menggantikan penunjuk kepada agregat dengan satu atau lebih parameter baharu
hanya apabila saiz terkumpulnya kurang atau sama dengan ipa-sra-ptr-faktor-pertumbuhan
kali saiz parameter penunjuk asal.

tm-max-saiz-agregat
Apabila membuat salinan pembolehubah setempat-benang dalam transaksi, parameter ini
menentukan saiz dalam bait selepas pembolehubah akan 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.

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.

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-muat-data-perlumbaan
Benarkan pengoptimum memperkenalkan perlumbaan data baharu pada muatan. Tetapkan kepada 1 untuk membenarkan,
sebaliknya kepada 0. Pilihan ini didayakan secara lalai melainkan ditetapkan secara tersirat oleh
-fmemory-model= pilihan.

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 melainkan ditetapkan secara tersirat oleh
-fmemory-model= pilihan.

benarkan-padan-memuatkan-perlumbaan-data
Benarkan pengoptimum memperkenalkan perlumbaan data baharu pada pemuatan data yang dibungkus. Tetapkan kepada 1 kepada
benarkan, sebaliknya kepada 0. Pilihan ini didayakan secara lalai melainkan ditetapkan secara tersirat oleh
yang -fmemory-model= pilihan.

benarkan-packed-store-data-races
Benarkan pengoptimum memperkenalkan perlumbaan data baharu pada stor data yang padat. Tetapkan kepada 1 kepada
benarkan, sebaliknya kepada 0. Pilihan ini didayakan secara lalai melainkan ditetapkan secara tersirat oleh
yang -fmemory-model= pilihan.

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.

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 tertentu yang GCC tidak tahu bagaimana untuk mengenali.

Jika anda ingin meluluskan pilihan yang memerlukan hujah, anda mesti menggunakan -Xpreprocessor
dua kali, sekali untuk pilihan dan sekali untuk hujah.

-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 arahan
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 adalah percubaan; didalam
versi masa hadapan GCC, ia akan didayakan secara lalai untuk C99 dan C++.

-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.

-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 arahan
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 arahan 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 GCC tidak tahu bagaimana untuk mengenali.

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.

-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
akan dihantar kepada pemaut, pilihan yang menentukan pautan pustaka sistem, seperti
sebagai "-static-libgcc" atau "-shared-libgcc", akan diabaikan. Fail permulaan standard
digunakan secara normal, melainkan -nostartfiles digunakan. Pengkompil boleh menjana panggilan ke
"memcmp", "memset", "memcpy" dan "memmove". Entri ini biasanya diselesaikan oleh
entri dalam libc. Pintu masuk ini harus 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 akan dihantar kepada pemaut, pilihan
menentukan pautan pustaka sistem, seperti "-static-libgcc" atau
"-shared-libgcc", akan diabaikan. Pengkompil boleh menjana panggilan ke "memcmp",
"memset", "memcpy" dan "memmove". Entri ini biasanya diselesaikan dengan entri dalam
libc. Pintu masuk ini harus dibekalkan melalui beberapa mekanisme lain apabila ini
pilihan 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. (Sebagai contoh, __utama, digunakan untuk memastikan C++
pembina akan 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 menjana kod
(-fpie, -fPIE, atau subpilihan model) apabila anda menentukan pilihan ini.

-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 menjana kod (-fpic, -fPIC, Atau
subopsyen model) apabila anda menentukan pilihan 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 akan sentiasa dikaitkan dengan yang dikongsi libgcc. Jika GCC menemui, pada konfigurasinya
masa, bahawa anda mempunyai pemaut bukan GNU atau pemaut GNU yang tidak menyokong pilihan
--eh-frame-hdr, ia akan memautkan versi kongsi libgcc ke perpustakaan kongsi oleh
lalai. Jika tidak, ia akan mengambil kesempatan daripada penghubung dan mengoptimumkan
memaut dengan versi kongsi libgcc, memaut dengan versi statik libgcc
secara lalai. Ini membenarkan pengecualian untuk disebarkan melalui perpustakaan kongsi tersebut,
tanpa menanggung kos penempatan semula 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.

-static-libstdc++
Apabila g ++ program digunakan untuk memautkan program C++, ia biasanya akan secara automatik
pautan terhadap libstdc++. Jika libstdc++ tersedia sebagai perpustakaan kongsi, dan
-statik pilihan tidak digunakan, maka ini akan dipautkan dengan versi kongsi
libstdc++. Itu biasanya baik. Walau bagaimanapun, kadangkala berguna untuk membekukan
versi libstdc++ digunakan oleh program tanpa pergi ke statik sepenuhnya
pautan. The -static-libstdc++ pilihan mengarahkan g ++ pemandu untuk dipautkan libstdc++
secara statik, tanpa perlu 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.

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 akan diabaikan. Direktori akan tetap ada
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 diubah secara tidak sengaja. Jika anda benar-benar perlu
tukar susunan 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 #include <fail>,
sebaliknya 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 akan menyemak untuk melihat sama ada laluan yang disediakan oleh -B merujuk kepada direktori,
dan jika perlu ia akan 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.
Ia juga digunakan 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 akan digantikan dengan [dir/]sertakan. Ini untuk membantu
but-strapping 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 akan mencari tajuk masuk / usr / sertakan dan perpustakaan di / usr / lib,
ia sebaliknya akan mencari dir/usr/include dan dir/usr/lib.

Jika anda menggunakan kedua-dua pilihan ini dan -isysroot pilihan, kemudian --sysroot pilihan akan
digunakan untuk perpustakaan, tetapi -isysroot pilihan akan 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 akan berfungsi, tetapi aspek perpustakaan tidak akan berfungsi.

-saya- Pilihan ini telah ditamatkan. Sila guna -iquote sebaliknya untuk -I direktori sebelum ini
yang -saya- dan keluarkan -saya-. Mana-mana direktori yang anda tentukan dengan -I pilihan sebelum
-saya- pilihan dicari hanya untuk kes #include "fail"; mereka tidak dicari
untuk #include <fail>.

Jika direktori tambahan ditentukan dengan -I pilihan selepas -saya-, ini
direktori dicari untuk semua #include arahan. (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 semasa 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.

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 jika ini mengurangkan atau meningkatkan saiz kod
mungkin berbeza dari kes ke kes.

-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 tidak sebelum setiap arahan lain yang dihasilkan.

-mno-lembut-cmpsf
Untuk perbandingan titik terapung ketepatan tunggal, keluarkan arahan fsub dan uji
bendera. Ini lebih pantas daripada perbandingan perisian, tetapi boleh mendapatkan hasil yang salah
kehadiran NaNs, atau apabila dua nombor kecil yang berbeza dibandingkan supaya mereka
perbezaan dikira sebagai sifar. Lalainya ialah -msoft-cmpsf, yang menggunakan lebih perlahan, tetapi
Perbandingan perisian yang 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 biasanya tidak akan
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. lalai
is -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 ialah perubahan ABI, walaupun banyak antara muka fungsi perpustakaan akan
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 ialah r43 dan r63,
yang menentukan untuk menggunakan daftar itu sebagai daftar tetap, dan tiada, yang bermaksud bahawa tidak
daftar digunakan untuk tujuan ini. Lalainya ialah -m1reg-tiada.

AAArch64 Pilihan

Pilihan ini ditakrifkan untuk pelaksanaan AArch64:

-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 akan 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.

-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 untuk gerbang is armv8-a. Nilai yang mungkin 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. Pilihan ini boleh digunakan bersama dengan atau bukannya -mcpu=
pilihan.

-mcpu=nama
Tentukan nama pemproses sasaran, secara pilihan diakhiri dengan satu atau lebih ciri
pengubahsuai. Pilihan ini mempunyai bentuk -mcpu=cpu{+[tidak]ciri}*, jika boleh
nilai untuk cpu adalah generik, besar. Nilai yang mungkin 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.

-mtune=nama
Nyatakan nama pemproses untuk menala prestasi. Kod akan ditala
seolah-olah pemproses sasaran adalah daripada jenis yang dinyatakan dalam pilihan ini, tetapi masih menggunakan
arahan yang serasi dengan pemproses sasaran yang ditentukan oleh a -mcpu= pilihan. Ini
pilihan tidak boleh diakhiri oleh pengubah suai ciri.

-berbaris dan -mcpu pengubahsuai ciri

Pengubah suai ciri digunakan dengan -berbaris dan -mcpu boleh menjadi salah satu yang berikut:

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=.

ARM Pilihan

Ini -m pilihan ditakrifkan untuk seni bina Mesin RISC Lanjutan (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 akan menyebabkan bingkai tindanan tidak menjadi
dihasilkan untuk fungsi daun. Lalainya ialah -mno-apcs-bingkai.

-mapcs
Ini adalah sinonim untuk -mapcs-bingkai.

-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 akan bermula dengan set arahan yang boleh dikenali (atau sebenarnya salah satu daripada a
pilihan daripada set kecil prolog fungsi yang berbeza), dan maklumat ini boleh
digunakan untuk mencari permulaan jika berfungsi di dalam sekeping kod boleh laku. lalai
is -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.

-mwords-little-endian
Pilihan ini hanya terpakai apabila menjana kod untuk pemproses big-endian. Menjana
kod untuk susunan perkataan little-endian tetapi susunan byte big-endian. Iaitu, bait
susunan borang 32107654. Nota: pilihan ini hanya boleh digunakan jika anda memerlukan
keserasian dengan kod untuk pemproses ARM big-endian yang dijana oleh versi
pengkompil sebelum 2.8. Pilihan ini kini ditamatkan.

-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, iwmmxt, iwmmxt2, ep9312.

-march = asli menyebabkan pengkompil untuk mengesan secara automatik seni bina binaan
komputer. Pada masa ini, ciri ini hanya disokong pada 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-a15, korteks-r4, korteks-r4f, korteks-r5, korteks-m4, korteks-m3, korteks-m1,
korteks-m0, skala x, iwmmxt, iwmmxt2, ep9312, fa526, fa626, fa606te, fa626te, fmp626,
fa726te.

-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 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 Linux, dan bukan semua seni bina
dikenali. Jika pengesanan automatik tidak berjaya, pilihan tidak mempunyai kesan.

-mfpu=nama
-mfpe=nombor
-mfp=nombor
Ini menentukan perkakasan titik terapung (atau emulasi perkakasan) yang tersedia
sasaran. Nama yang dibenarkan ialah: fpa, fpe2, fpe3, penyeleweng, vfp, vfpv3, vfpv3-fp16,
vfpv3-d16, vfpv3-d16-fp16, vfpv3xd, vfpv3xd-fp16, neon, neon-fp16, vfpv4, vfpv4-d16,
fpv4-sp-d16 dan neon-vfpv4. -mfp dan -mfpe adalah sinonim untuk -mfpu=fpenombor, Bagi
keserasian dengan versi lama GCC.

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 akan digunakan 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 akan dibundarkan kepada gandaan nombor
daripada 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 bilangan 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 akan
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 akan bertukar menjadi panggilan panjang.
Heuristik ialah fungsi statik, fungsi yang mempunyai panggilan pendek sifat,
fungsi yang berada dalam skop a #pragma tiada_panggilan_panjang arahan dan fungsi
yang takrifannya telah pun disusun dalam unit penyusunan semasa, akan
tidak dijadikan panggilan panjang. Pengecualian kepada peraturan ini ialah fungsi yang lemah itu
definisi, fungsi dengan panggilan panjang atribut atau seksyen atribut, dan
fungsi yang berada dalam skop a #pragma panggilan_panjang arahan, akan sentiasa
bertukar menjadi panggilan panjang.

Ciri ini tidak didayakan secara lalai. Menentukan -mno-long-panggilan akan memulihkan
tingkah laku lalai, seperti yang akan meletakkan panggilan fungsi dalam skop a #pragma
long_calls_off arahan. 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. Lalai ialah R10 melainkan tindanan-
pemeriksaan didayakan, apabila R9 digunakan.

-mcirrus-fix-invalid-inns
Masukkan NOP ke dalam aliran arahan untuk untuk menyelesaikan masalah dengan
kombinasi arahan Maverick tidak sah. Pilihan ini hanya sah jika
-mcpu=ep9312 pilihan telah digunakan untuk membolehkan penjanaan arahan untuk Cirrus
Pemproses bersama titik terapung Maverick. Pilihan ini tidak didayakan secara lalai, kerana
masalahnya hanya terdapat dalam pelaksanaan Maverick yang lebih lama. Lalai boleh di-
didayakan dengan menggunakan -mno-cirrus-fix-invalid-insns suis.

-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 dialek ialah
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 akan diakses
satu bait pada satu masa.

Atribut ARM "Tag_CPU_unaaligned_access" akan ditetapkan dalam fail objek yang dijana
kepada sama ada benar atau salah, bergantung pada tetapan pilihan ini. Jika tidak sejajar
akses didayakan maka simbol prapemproses "__ARM_FEATURE_UNALIGNED" juga akan
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.

AVR Pilihan

-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{}= "ata6289", "attiny13", "attiny13a", "attiny2313",
"attiny2313a", "attiny24", "attiny24a", "attiny25", "attiny261", "attiny261a",
"attiny43u", "attiny4313", "attiny44", "attiny44a", "attiny45", "attiny461",
"attiny461a", "attiny48", "attiny84", "attiny84a", "attiny85", "attiny861",
"attiny861a", "attiny87", "attiny88", "at86rf401".

"avr3"
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{}= "atmega16u2", "atmega32u2", "atmega8u2",
"attiny167", "at90usb162", "at90usb82".

"avr4"
Peranti "Dipertingkat" dengan sehingga 8@tie{}KiB memori program. mcu@tali leher{}=
"atmega48", "atmega48a", "atmega48p", "atmega8", "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{}= "atmega16", "atmega16a", "atmega16hva", "atmega16hva2", "atmega16hvb",
"atmega16m1", "atmega16u4", "atmega161", "atmega162", "atmega163", "atmega164a",
"atmega164p", "atmega165", "atmega165a", "atmega165p", "atmega168", "atmega168a",
"atmega168p", "atmega169", "atmega169a", "atmega169p", "atmega169pa", "atmega32",
"atmega32c1", "atmega32hvb", "atmega32m1", "atmega32u4", "atmega32u6",
"atmega323", "atmega324a", "atmega324p", "atmega324pa", "atmega325", "atmega325a",
"atmega325p", "atmega3250", "atmega3250a", "atmega3250p", "atmega328",
"atmega328p", "atmega329", "atmega329a", "atmega329p", "atmega329pa",
"atmega3290", "atmega3290a", "atmega3290p", "atmega406", "atmega64", "atmega64c1",
"atmega64hve", "atmega64m1", "atmega640", "atmega644", "atmega644a", "atmega644p",
"atmega644pa", "atmega645", "atmega645a", "atmega645p", "atmega6450",
"atmega6450a", "atmega6450p", "atmega649", "atmega649a", "atmega649p",
"atmega6490", "at90can32", "at90can64", "at90pwm216", "at90pwm316", "at90scr100",
"at90usb646", "at90usb647", "at94k", "m3000".

"avr51"
Peranti "Dipertingkat" dengan 128@tie{}KiB memori program. mcu@tie{}= "atmega128",
"atmega128rfa1", "atmega1280", "atmega1281", "atmega1284p", "at90can128",
"at90usb1286", "at90usb1287".

"avr6"
Peranti "Dipertingkat" dengan PC 3-bait, iaitu dengan lebih daripada 128@tie{}KiB program
memori. mcu@tie{}= "atmega2560", "atmega2561".

"avrxmega2"
Peranti "XMEGA" dengan lebih daripada 8@tie{}KiB dan sehingga 64@tie{}KiB memori program.
mcu@tie{}= "atxmega16a4", "atxmega16d4", "atxmega16x1", "atxmega32a4",
"atxmega32d4", "atxmega32x1".

"avrxmega4"
Peranti "XMEGA" dengan lebih daripada 64@tie{}KiB dan sehingga 128@tie{}KiB program
memori. mcu@tie{}= "atxmega64a3", "atxmega64d3".

"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", "atxmega128d3", "atxmega192a3", "atxmega192d3", "atxmega256a3",
"atxmega256a3b", "atxmega256a3bu", "atxmega256d3".

"avrxmega7"
Peranti "XMEGA" dengan lebih daripada 128@tie{}KiB memori program dan lebih daripada
64@tie{}KiB RAM. mcu@tie{}= "atxmega128a1", "atxmega128a1u".

"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.

-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 "-mrelax" hanya menambah pilihan "--relax" pada
baris arahan penghubung apabila pemaut dipanggil.

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.

-msshort-panggilan
Pilihan ini telah ditamatkan dan akan dialih keluar dalam GCC 4.8. Lihat "-mrelax" untuk a
penggantian.

Gunakan arahan "RCALL"/"RJMP" walaupun pada peranti dengan 16@tie{}KiB atau lebih program
memori, iaitu pada peranti yang mempunyai arahan "CALL" dan "JMP".

-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" atau "-mmcu=avr25" pemacu pengkompil
akan menambah atau mengalih keluar pilihan ini daripada baris arahan pengkompil yang betul, kerana
pengkompil kemudian mengetahui sama ada peranti atau seni bina mempunyai penuding tindanan 8-bit dan dengan itu
tiada daftar "SPH" 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.

"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 penyambung mesti dihidupkan supaya penyambung akan menjana stub
betul semua situasi. Lihat pilihan pengkompil "-mrelax" dan pilihan linler
"--berehat". Terdapat kes sudut di mana penyambung sepatutnya menghasilkan stub tetapi
dibatalkan 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 aplikasi dipautkan 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 menukar
"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 pilihan baris arahan "-mmcu=".

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, 102, 104, 105, 106, 107

untuk mcu="avr2", "avr25", "avr3", "avr31", "avr35", "avr4", "avr5", "avr51", "avr6",
"avrxmega2", "avrxmega4", "avrxmega5", "avrxmega6", "avrxmega7", masing-masing. Jika mcu
menentukan peranti, makro terbina dalam ini ditetapkan dengan sewajarnya. Contohnya, dengan
"-mmcu=atmega8" makro akan ditakrifkan kepada 4.

"__AVR_Peranti__"
Tetapan "-mmcu=peranti" mentakrifkan makro terbina dalam ini yang mencerminkan nama peranti.
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 dalam "-mmcu=peranti" ialah yang terakhir sentiasa huruf kecil.

If peranti bukan peranti tetapi hanya seni bina teras seperti "avr51", makro ini akan
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 dan jika "-mshort-calls" tidak ditetapkan.

"__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 "-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 pilihan baris arahan "-mno-interrupts".

"__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_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
Pilihan konfigurasi "--with-avrlibc".

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. Pilihan sirevision menentukan
semakan silikon pemproses Blackfin sasaran. Sebarang penyelesaian yang tersedia untuk
semakan silikon yang disasarkan akan didayakan. Jika sirevision is tiada, tiada penyelesaian
didayakan. Jika sirevision is mana-mana, semua penyelesaian untuk pemproses yang disasarkan ialah
didayakan. Makro "__SILICON_REVISION__" ditakrifkan kepada dua digit heksadesimal
mewakili nombor utama dan kecil dalam semakan silikon. Jika sirevision is
tiada, "__SILICON_REVISION__" tidak ditakrifkan. Jika sirevision is mana-mana, yang
"__SILICON_REVISION__" ditakrifkan sebagai 0xffff. Jika ini pilihan sirevision tidak
digunakan, GCC menganggap semakan silikon terkini yang diketahui bagi Blackfin yang disasarkan
pemproses.

Sokongan untuk bf561 tidak lengkap. Untuk bf561, Hanya makro pemproses ditakrifkan.
Tanpa pilihan ini, bf532 digunakan sebagai pemproses secara lalai. Yang sepadan
makro pemproses yang dipratentukan untuk cpu adalah untuk ditakrifkan. Dan untuk bfin-elf rantai alat,
ini menyebabkan BSP perkakasan yang disediakan oleh libgloss dipautkan dalam if -msim tidak
diberi.

-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 akan memastikan bahawa kod yang dihasilkan 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 akan 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 akan dijana untuk lompat dan panggilan insns.

-mshared-library-id=n
Menentukan nombor pengenalan pustaka kongsi berasaskan ID yang sedang disusun.
Menentukan nilai 0 akan menghasilkan kod yang lebih padat, menentukan nilai lain akan
memaksa peruntukan nombor itu ke perpustakaan semasa tetapi tiada lagi ruang atau
cekap masa daripada meninggalkan 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 akan memulihkan
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. Fail permulaan yang betul dan
skrip pautan akan digunakan untuk menyokong berbilang teras. Pilihan ini mentakrifkan
"__BFIN_MULTICORE". Ia hanya boleh digunakan dengan -mcpu=bf561[-sirevision]. Ia boleh digunakan
dengan -mcorea or -mcoreb. Jika ia digunakan tanpa -mcorea or -mcoreb, bujang
model pengaturcaraan aplikasi/dwi teras digunakan. Dalam model ini, fungsi utama
Teras B hendaklah dinamakan sebagai coreb_main. Jika ia digunakan dengan -mcorea or -mcoreb, satu
aplikasi per model pengaturcaraan teras digunakan. Jika pilihan ini tidak digunakan, tunggal
model pengaturcaraan aplikasi teras digunakan.

-mcorea
Bina aplikasi kendiri untuk Teras A BF561 apabila menggunakan satu aplikasi bagi setiap teras
model pengaturcaraan. Fail permulaan dan skrip pautan yang betul akan digunakan untuk menyokong Teras A.
Pilihan ini mentakrifkan "__BFIN_COREA". Ia mesti digunakan dengan -multicore.

-mcoreb
Bina aplikasi kendiri untuk Teras B BF561 apabila menggunakan satu aplikasi bagi setiap teras
model pengaturcaraan. Fail permulaan dan skrip pautan yang betul akan digunakan untuk menyokong Teras B.
Pilihan ini mentakrifkan "__BFIN_COREB". Apabila pilihan ini digunakan, coreb_main sepatutnya
digunakan bukannya utama. Ia mesti digunakan dengan -multicore.

-msdram
Bina aplikasi kendiri untuk SDRAM. Fail permulaan yang betul dan skrip pautan akan menjadi
digunakan untuk meletakkan aplikasi ke dalam SDRAM. Pemuat harus memulakan SDRAM sebelum memuatkan
aplikasi ke dalam SDRAM. Pilihan ini mentakrifkan "__BFIN_SDRAM".

-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 .neardata bahagian, yang ditunjuk oleh
daftar "B14". Letakkan data global dan statik kecil yang tidak dimulakan dalam .bss seksyen,
yang bersebelahan dengan .neardata bahagian. Letakkan data baca sahaja kecil ke dalam .rodata
bahagian. Bahagian yang sepadan yang digunakan untuk kepingan data yang besar ialah .fardata, .jauh
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 seksyen,
dan semua data yang tidak dimulakan dalam .jauh bahagian. Masukkan semua data tetap ke dalam .const
bawah seksyen ini.

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 untuk 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 (tiada pilihan) menyusun (menghapuskan 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 kepada semua 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 apabila pilihan -mcr16c dipilih 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 akan mencipta fail objek untuk
seni bina tunggal yang dibina untuk disasarkan. GCC Apple pada Darwin memang mencipta
fail "gemuk" jika berbilang -gerbang pilihan digunakan; ia melakukannya dengan menjalankan pengkompil atau
penghubung beberapa kali dan menggabungkan hasil 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 akan membenarkan arahan digunakan yang sah untuk subjenis
fail yang dijananya, jadi anda tidak boleh meletakkan arahan 64-bit dalam a ppc750 fail objek.
Penghubung untuk perpustakaan kongsi, /usr/bin/libtool, akan gagal dan mencetak ralat jika ditanya
untuk mencipta pustaka 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 akan memberikan subjenis yang paling ketat kepada boleh laku daripada mana-mana
fail inputnya.

-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 "Tajuk" dan / atau "Pengepala Peribadi" direktori yang terkandung secara langsung di dalamnya
yang berakhir dengan ".framework". Nama rangka kerja ialah nama direktori ini
tidak termasuk ".framework". Pengepala yang dikaitkan dengan rangka kerja terdapat dalam salah satu daripada
kedua-dua direktori itu, dengan "Tajuk" dicari dahulu. Subrangka kerja ialah a
direktori rangka kerja yang ada dalam rangka kerja "Kerangka" direktori. Termasuk daripada
pengepala subrangka kerja hanya boleh muncul dalam pengepala rangka kerja yang mengandungi
subframework, atau dalam tajuk subframework adik beradik. Dua subframework adalah adik beradik jika
ia berlaku dalam rangka kerja yang sama. Subrangka kerja tidak sepatutnya mempunyai nama yang sama dengan a
rangka kerja, amaran akan dikeluarkan jika ini dilanggar. Pada masa ini subrangka kerja
tidak boleh mempunyai subrangka kerja, pada masa hadapan, mekanisme itu boleh diperluaskan untuk menyokong
ini. Rangka kerja standard boleh didapati dalam "/System/Library/Frameworks" dan
"/Library/Frameworks". Contoh termasuk kelihatan seperti "#include ",
di mana Rangka Kerja menandakan nama rangka kerja dan header.h terdapat dalam
"Pengepala Peribadi" or "Tajuk" 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 STABS,
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-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 saiz(bool)==1. Secara lalai saiz(bool) is 4
apabila menyusun untuk Darwin/PowerPC dan 1 apabila menyusun untuk Darwin/x86, jadi pilihan ini
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 pusingan pantas. Diperlukan untuk membolehkan gdb to
memuatkan fail ".o" secara dinamik ke dalam atur cara 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 akan menghasilkan perpustakaan dinamik dan bukannya boleh laku
apabila memaut, 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 akan digunakan untuk
melakukan operasi titik terapung. Melainkan ia digantikan dengan rutin yang dicontohi
operasi titik terapung, atau disusun sedemikian rupa untuk memanggil emulasi tersebut
rutin, rutin ini akan mengeluarkan operasi titik terapung. Jika anda sedang menyusun
untuk Alpha tanpa operasi titik terapung, anda mesti memastikan bahawa perpustakaan adalah
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. Di bawah DEC Unix, ini mempunyai kesan yang
Rutin perpustakaan matematik pematuhan IEEE akan dipautkan.

-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 tidak, ia akan mengeluarkan
malar 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 akan menggunakan pilihan ini untuk membina pemuat dinamik perpustakaan kongsi. Sendiri
perpustakaan kongsi, ia mesti menempatkan semula dirinya dalam ingatan sebelum ia boleh mencari pembolehubah
dan pemalar dalam segmen datanya sendiri.

-malpha-as
-mgas
Pilih sama ada untuk menjana kod untuk dipasang oleh pemasang yang dibekalkan oleh vendor
(-malpha-as) atau oleh penghimpun GNU -mgas.

-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
akan memilih nilai lalai untuk set arahan daripada pemproses yang anda tentukan.
Jika anda tidak menyatakan jenis pemproses, GCC akan lalai kepada pemproses yang digunakan
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.

Disember Alpha/VMS Pilihan

Ini -m pilihan ditakrifkan untuk pelaksanaan DEC Alpha/VMS:

-mvms-return-codes
Kembalikan kod keadaan VMS dari 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.

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 akan dimuatkan ke dalam 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 nops 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 dihasilkan 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.

-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 akan dijalankan 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.

-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.

-mlompat-dalam-kelewatan
Isi slot kelewatan panggilan fungsi dengan arahan lompat tanpa syarat dengan mengubah suai
penunjuk kembali untuk panggilan fungsi menjadi sasaran lompatan bersyarat.

-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 akan 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 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 mempunyai apa-apa kesan yang ld dipanggil, ia sahaja
menukar parameter yang dihantar ke ld itu. ld yang dipanggil ditentukan oleh
yang --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`.
Pilihan ini hanya tersedia pada HP-UX GCC 64-bit, iaitu dikonfigurasikan dengan
hppa*64*-*-hpux*.

-mhp-ld
Gunakan pilihan khusus HP ld. Ini berlalu -b kepada ld apabila membina perpustakaan kongsi dan
pas +Terima Jenis Tidak Padan untuk ld pada semua pautan. Ia adalah lalai apabila GCC adalah
dikonfigurasikan, secara eksplisit atau tersirat, dengan penyambung HP. Pilihan ini tidak mempunyai
sebarang kesan yang ld dipanggil, ia hanya mengubah parameter yang dihantar kepadanya
ld. ld yang dipanggil ditentukan oleh --dengan-ld konfigurasikan pilihan, GCC
laluan carian program, dan akhirnya oleh pengguna PATH. Penghubung yang digunakan oleh GCC boleh
dicetak menggunakan yang `gcc -print-prog-name=ld`. Pilihan ini hanya tersedia pada
64-bit HP-UX 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 akan merendahkan prestasi.
Walau bagaimanapun, ia mungkin berguna dalam aplikasi besar, terutamanya apabila pemautan separa
digunakan untuk 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.

Intel 386 dan AMD x86-64 Pilihan

Ini -m pilihan ditakrifkan untuk keluarga komputer i386 dan x86-64:

-mtune=jenis cpu
Tune ke jenis cpu semua yang berkenaan tentang kod yang dijana, kecuali untuk ABI
dan set arahan yang tersedia. Pilihan untuk jenis cpu ialah:

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 pilihan dan bukannya -mtune=generik. Tetapi, jika anda tidak tahu apa CPU
pengguna aplikasi anda akan mempunyai, maka anda harus menggunakan pilihan ini.

Memandangkan pemproses baharu digunakan di pasaran, gelagat pilihan ini
akan berubah. Oleh itu, jika anda menaik taraf kepada versi GCC yang lebih baharu, kod tersebut
pilihan yang dijana akan berubah untuk mencerminkan pemproses yang paling biasa apabila
versi GCC itu telah 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.

asli
Ini memilih CPU untuk ditala pada masa penyusunan dengan menentukan pemproses
jenis mesin penyusun. menggunakan -mtune=asli akan menghasilkan kod yang dioptimumkan
untuk mesin tempatan di bawah kekangan set arahan yang dipilih.
Menggunakan -march = asli akan membolehkan semua subset arahan yang disokong oleh tempatan
mesin (oleh itu hasilnya mungkin tidak berjalan pada mesin yang berbeza).

i386
CPU i386 Intel asal.

i486
CPU i486 Intel. (Tiada penjadualan dilaksanakan untuk cip ini.)

i586, pentium
CPU Intel Pentium tanpa sokongan MMX.

pentium-mmx
CPU Intel PentiumMMX berasaskan teras Pentium dengan sokongan set arahan MMX.

pentiumpro
CPU Intel PentiumPro.

i686
Sama seperti "generik", tetapi apabila digunakan sebagai pilihan "perarakan", set arahan PentiumPro
akan digunakan, jadi kod akan dijalankan pada semua cip keluarga i686.

pentium2
CPU Intel Pentium2 berdasarkan teras PentiumPro dengan sokongan set arahan MMX.

pentium3, pentium3m
CPU Intel Pentium3 berdasarkan teras PentiumPro dengan set arahan MMX dan SSE
sokongan.

pentium-m
Versi kuasa rendah CPU Intel Pentium3 dengan set arahan MMX, SSE dan SSE2
sokongan. Digunakan oleh buku nota Centrino.

pentium4, pentium4m
CPU Intel Pentium4 dengan sokongan set arahan MMX, SSE dan SSE2.

prescott
Versi CPU Intel Pentium4 yang dipertingkatkan dengan arahan MMX, SSE, SSE2 dan SSE3
tetapkan sokongan.

nocona
Versi CPU Intel Pentium4 yang dipertingkatkan dengan sambungan 64-bit, MMX, SSE, SSE2 dan
Sokongan set arahan SSE3.

core2
CPU Intel Core2 dengan sambungan 64-bit, arahan MMX, SSE, SSE2, SSE3 dan SSSE3
tetapkan sokongan.

corei7
CPU Intel Core i7 dengan sambungan 64-bit, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 dan
Sokongan set arahan SSE4.2.

corei7-avx
CPU Intel Core i7 dengan sambungan 64-bit, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
Sokongan set arahan SSE4.2, AVX, AES dan PCLMUL.

teras-avx-i
CPU Intel Core dengan sambungan 64-bit, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
Sokongan set arahan SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND dan F16C.

atom
CPU Intel Atom dengan sambungan 64-bit, arahan MMX, SSE, SSE2, SSE3 dan SSSE3
tetapkan sokongan.

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.

atlon, 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, athlon64, athlon-fx
CPU berasaskan teras AMD K8 dengan sokongan set arahan x86-64. (Ini superset MMX,
SSE, SSE2, 3DNow!, 3DNow dipertingkatkan! dan sambungan set arahan 64-bit.)

k8-sse3, opteron-sse3, athlon64-sse3
Versi k8, opteron dan athlon64 yang dipertingkatkan dengan sokongan set arahan SSE3.

amdfam10, Barcelona
CPU berasaskan teras Keluarga AMD 10j 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 berasaskan teras Keluarga AMD 15j 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, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2,
SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM dan sambungan set arahan 64-bit.)

btver1
CPU berasaskan teras Keluarga AMD 14j dengan sokongan set arahan x86-64. (Ini
superset MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM dan set arahan 64-bit
sambungan.)

winchip-c6
CPU IDT Winchip C6, ditangani dengan cara yang sama seperti i486 dengan set arahan MMX tambahan
sokongan.

winchip2
CPU IDT Winchip2, 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
Melalui CPU C3-2 dengan sokongan set arahan MMX dan SSE. (Tiada penjadualan
dilaksanakan untuk cip ini.)

geode
CPU AMD terbenam dengan MMX dan 3DNow! sokongan set arahan.

Semasa memilih tertentu jenis cpu akan menjadualkan perkara yang sesuai untuk itu
cip tertentu, pengkompil tidak akan menjana sebarang kod yang tidak berjalan pada
jenis mesin lalai tanpa -march=jenis cpu pilihan yang digunakan. Sebagai contoh, jika
GCC dikonfigurasikan untuk i686-pc-linux-gnu kemudian -mtune=pentium4 akan menjana kod itu
ditala untuk Pentium4 tetapi masih akan berjalan pada mesin i686.

-march=jenis cpu
Hasilkan arahan untuk jenis mesin jenis cpu. Pilihan untuk jenis cpu adalah
sama seperti untuk -mtune. Lebih-lebih lagi, menyatakan -march=jenis cpu bererti -mtune=jenis cpu.

-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 pengkompil i386.

ess Gunakan arahan titik terapung skalar yang terdapat dalam set arahan SSE. ini
set arahan disokong oleh Pentium3 dan cip yang lebih baru, dalam barisan AMD oleh
Cip Athlon-4, Athlon-xp dan Athlon-mp. Versi awal arahan SSE
set hanya menyokong aritmetik kepersisan tunggal, oleh itu penggandaan dan dilanjutkan-
aritmetik ketepatan masih dilakukan menggunakan 387. Versi yang lebih baru, hadir hanya dalam
Pentium4 dan cip AMD x86-64 masa depan, menyokong aritmetik berketepatan dua kali
juga.

Untuk pengkompil i386, anda perlu menggunakan -march=jenis cpu, -msse or -msse2 suis
untuk mendayakan sambungan SSE dan menjadikan 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 secara 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 menghasilkan prestasi yang tidak stabil.

-masm=dialek
Keluarkan arahan asm menggunakan terpilih dialek. Pilihan yang disokong ialah Intel or att
(yang lalai). 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: yang diperlukan
perpustakaan bukan sebahagian daripada GCC. Biasanya kemudahan mesin biasa C
pengkompil digunakan, tetapi ini tidak boleh dilakukan secara langsung dalam kompilasi silang. Kamu mesti
membuat pengaturan anda sendiri untuk menyediakan fungsi perpustakaan yang sesuai untuk
penyusunan.

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 FreeBSD, OpenBSD dan NetBSD. Pilihan ini ditindih apabila -berbaris
menunjukkan bahawa CPU sasaran akan sentiasa mempunyai FPU dan oleh itu arahan tidak akan
perlukan emulasi. Mulai semakan 2.6.1, arahan ini tidak dihasilkan 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
boundary menghasilkan kod yang berjalan agak cepat pada a Pentium dengan mengorbankan lebih
memori.

Pada x86-64, -malign-double didayakan secara lalai.

Amaran: jika anda menggunakan -malign-double suis, struktur yang mengandungi jenis di atas
akan diselaraskan secara berbeza daripada antara muka binari aplikasi yang diterbitkan
spesifikasi untuk 386 dan tidak akan serasi binari dengan struktur dalam kod
disusun tanpa suis itu.

-m96bit-long-double
-m128bit-long-double
Suis ini mengawal saiz jenis "ganda panjang". Perduaan aplikasi i386
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" akan diselaraskan 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, struktur dan
tatasusunan yang mengandungi pembolehubah "berganda panjang" akan menukar saiz serta fungsinya
konvensyen panggilan untuk fungsi mengambil "ganda panjang" akan diubah suai. Oleh itu mereka
tidak akan serasi binari dengan tatasusunan atau struktur dalam kod yang disusun tanpa itu
suis.

-mlarge-data-threshold=nombor
Bila -mcmodel=sederhana ditentukan, data lebih besar daripada ambang diletakkan secara besar-besaran
bahagian data. Nilai ini mestilah sama merentas semua objek yang dipautkan ke dalam binari
dan lalai kepada 65535.

-mrtd
Gunakan konvensyen panggilan fungsi yang berbeza, di mana fungsi yang mengambil tetap
bilangan argumen kembali dengan "ret" num 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 akan dihasilkan
untuk panggilan ke fungsi tersebut.

Di samping itu, kod yang salah akan terhasil 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 Intel x86, -mstackrealign pilihan akan menjana
prolog dan epilog alternatif yang menjajarkan semula timbunan masa jalan jika perlu.
Ini menyokong pencampuran kod warisan yang menyimpan tindanan sejajar 4-bait dengan kod moden
yang menyimpan timbunan 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. Anda 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 akan digunakan.

Pada Pentium dan PentiumPro, 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 akan salah penjajaran 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
-mno-mmx
-msse
-mno-sse
-msse2
-mno-sse2
-msse3
-mno-sse3
-mssse3
-mno-ssse3
-msse4.1
-mno-sse4.1
-msse4.2
-mno-sse4.2
-msse4
-mno-sse4
-mavx
-mno-avx
-mavx2
-mno-avx2
-maes
-mno-aes
-mpclmul
-mno-pclmul
-mfsgsbase
-mno-fsgsbase
-mrdrnd
-mno-rdrnd
-mf16c
-mno-f16c
-mfma
-mno-fma
-msse4a
-mno-sse4a
-mfma4
-mno-fma4
-mxop
-mno-xop
-mlwp
-mno-lwp
-m3dnow
-mno-3dnow
-mpopcnt
-mno-popcnt
-mabm
-mno-abm
-mbmi
-mbmi2
-mno-bmi
-mno-bmi2
-mlzcnt
-mno-lzcnt
-mtbm
-mno-tbm
Suis ini mendayakan atau melumpuhkan penggunaan arahan dalam MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A, FMA4, XOP,
LWP, ABM, BMI, BMI2, LZCNT atau 3DNow!
set arahan lanjutan. Sambungan ini juga tersedia sebagai terbina dalam
fungsi: lihat X86 Terbina dalam Fungsi, untuk butiran fungsi yang didayakan dan
dilumpuhkan oleh suis ini.

Untuk mendapatkan arahan SSE/SSE2 yang dijana secara automatik daripada kod titik terapung (seperti
bertentangan dengan 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 akan membolehkan GCC menggunakan arahan lanjutan ini dalam kod yang dijana,
walaupun tanpa -mfpmath=sse. Aplikasi yang melaksanakan pengesanan CPU masa jalan mesti
susun fail berasingan untuk setiap seni bina yang disokong, menggunakan bendera yang sesuai.
Khususnya, fail yang mengandungi kod pengesanan CPU harus disusun tanpa
pilihan ini.

-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 serta
keluarkan intrinsik zeroupper 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 akan membolehkan GCC menggunakan arahan CMPXCHG16B dalam kod yang dijana.
CMPXCHG16B membenarkan operasi atom pada data 128-bit double quadword (atau oword)
jenis. Ini berguna untuk kaunter resolusi tinggi yang boleh dikemas kini dengan berbilang
pemproses (atau teras). Arahan ini dijana sebagai sebahagian daripada atom terbina dalam
fungsi: lihat __sync terbina or __atom terbina untuk maklumat lanjut.

-msahf
Pilihan ini akan membolehkan GCC menggunakan arahan SAHF dalam kod 64-bit yang dijana. awal
CPU Intel dengan Intel 64 tidak mempunyai arahan LAHF dan SAHF yang disokong oleh AMD64 sehingga
pengenalan langkah Pentium 4 G1 pada Disember 2005. LAHF dan SAHF adalah memuatkan dan menyimpan
arahan, masing-masing, untuk bendera status tertentu. Dalam mod 64-bit, SAHF
arahan digunakan untuk mengoptimumkan fungsi terbina dalam "fmod", "drem" atau "baki": lihat
lain-lain terbina untuk maklumat lanjut.

-mmovbe
Pilihan ini akan membolehkan GCC menggunakan arahan movbe untuk melaksanakan "__builtin_bswap32"
dan "__builtin_bswap64".

-mcrc32
Pilihan ini akan mendayakan fungsi terbina dalam, "__builtin_ia32_crc32qi",
"__builtin_ia32_crc32hi". "__builtin_ia32_crc32si" dan "__builtin_ia32_crc32di" kepada
menjana arahan mesin crc32.

-mrecip
Pilihan ini akan membolehkan GCC menggunakan arahan RCPSS dan RSQRTSS (dan arahannya
varian vektor RCPPS dan RSQRTPS) dengan langkah Newton-Raphson tambahan untuk
meningkatkan ketepatan dan bukannya DIVSS dan SQRTSS (dan varian vektornya) untuk
hujah titik terapung ketepatan tunggal. 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 membolehkan untuk 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 lalai
arahan, bersamaan dengan -mrecip, "tiada": lumpuhkan semua arahan anggaran,
bersamaan dengan -mno-resipi, "div": dayakan anggaran untuk pembahagian skalar,
"vec-div": dayakan anggaran untuk pembahagian bervektor, "sqrt": dayakan
anggaran untuk punca kuasa dua skalar, "vec-sqrt": dayakan anggaran untuk
punca kuasa dua bervektor.

Jadi sebagai contoh, -mrecip=semua,!sqrt akan membolehkan semua anggaran timbal balik,
kecuali punca kuasa dua.

-mveclibabi=jenis
Menentukan jenis ABI untuk digunakan untuk menvelokkan intrinsik menggunakan perpustakaan luaran.
Jenis yang disokong ialah "svml" untuk pustaka matematik vektor pendek Intel dan "acml" untuk
Gaya perpustakaan teras matematik AMD antara muka. GCC pada masa ini akan 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 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. Kedua-duanya -free-vectorize dan -funsafe-math-optimizations mempunyai
untuk didayakan. Pustaka serasi SVML atau ACML ABI perlu dinyatakan pada pautan
pada bila-bila masa.

-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. lalai
ialah menggunakan Microsoft ABI apabila menyasarkan Windows. Pada semua sistem lain, lalai
ialah SYSV ABI. Anda boleh mengawal tingkah laku ini untuk fungsi tertentu dengan menggunakan
atribut fungsi ms_abi/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 ialah
dikira dalam prolog fungsi. Ini lebih pantas pada kebanyakan CPU moden kerana
mengurangkan kebergantungan, penjadualan yang lebih baik dan mengurangkan penggunaan tindanan apabila timbunan 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 dihidupkan Mingw32. Kod 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 setiap data pengendalian pengecualian benang.

-mno-align-stringops
Jangan selaraskan destinasi operasi rentetan sebaris. Suis ini mengurangkan saiz kod
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 sebaris, meningkatkan saiz kod,
tetapi boleh meningkatkan prestasi kod yang bergantung pada memcpy, strlen dan memset pantas 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
Tulis ganti heuristik keputusan dalaman tentang algoritma tertentu kepada rentetan sebaris
operasi dengan. Nilai yang dibenarkan ialah "rep_byte", "rep_4byte", "rep_8byte" untuk
berkembang menggunakan i386 "rep" awalan saiz yang ditentukan, "byte_loop", "gelung",
"unrolled_loop" untuk mengembangkan gelung sebaris, "libcall" untuk sentiasa mengembangkan perpustakaan
panggil.

-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.

-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 GNU libc, 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: Hidup
seni bina x86 atribut "ms_hook_prologue" tidak boleh dilakukan pada masa ini
-mfentry dan -pg.

-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.

Ini -m suis disokong sebagai tambahan kepada pemproses AMD x86-64 di atas
persekitaran 64-bit.

-m32
-m64
-mx32
Hasilkan kod untuk persekitaran 32-bit atau 64-bit. The -m32 set pilihan int, panjang dan
penunjuk kepada 32 bit dan menjana kod yang berjalan pada mana-mana sistem i386. The -m64 pilihan
menetapkan int kepada 32 bit dan panjang dan penunjuk kepada 64 bit dan menjana kod untuk AMD
seni bina x86-64. The -mx32 pilihan menetapkan int, panjang dan penunjuk kepada 32 bit dan
menjana kod untuk seni bina x86-64 AMD. Untuk darwin sahaja -m64 pilihan bertukar
daripada -fno-pic dan -mdynamic-no-pic pilihan.

-mno-red-zon
Jangan gunakan zon merah yang dipanggil untuk kod x86-64. Zon merah diberi mandat oleh
x86-64 ABI, ia adalah kawasan 128-bait di luar lokasi penuding tindanan yang akan
tidak boleh 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 ini 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.

i386 dan x86-64 Windows Pilihan

Pilihan tambahan ini tersedia untuk sasaran Windows:

-mconsole
Pilihan ini tersedia untuk sasaran Cygwin dan MinGW. Ia menyatakan bahawa konsol
aplikasi akan dijana, dengan mengarahkan pemaut untuk menetapkan pengepala PE
jenis subsistem yang diperlukan untuk aplikasi konsol. Ini ialah tingkah laku lalai untuk
Sasaran Cygwin dan MinGW.

-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
dllimport atribut 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 menyatakan bahawa makro UNICODE
semakin dipratakrifkan dan kod permulaan masa jalan yang berkebolehan unicode dipilih.

-mwin32
Pilihan ini tersedia untuk sasaran Cygwin dan MinGW. Ia menyatakan bahawa tipikal
Makro pratakrif Windows hendaklah 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
tindanan yang digunakan oleh fungsi bersarang tidak ditetapkan. Ini adalah perlu untuk binari berjalan masuk
mod kernel Windows, kerana terdapat API user32, yang digunakan untuk menetapkan boleh laku
keistimewaan, tidak tersedia.

-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 akan didayakan secara lalai jika GCC mengesan
bahawa pemasang sasaran yang ditemui semasa konfigurasi menyokong ciri tersebut.

Lihat juga di bawah i386 dan x86-64 Pilihan untuk pilihan standard.

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 DWARF2. 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
Sesuaikan penjadualan arahan untuk CPU tertentu, Nilai sah ialah itanium,
itanium1, merced, 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 akan mengakibatkan
penjanaan arahan ld.a dan arahan semak yang sepadan (ld.c /
chk.a). Lalai ialah 'lumpuhkan'.

-msched-ar-data-spec
-mno-sched-ar-data-spec
(En/Dis)penjadualan spekulatif data boleh selepas muat semula. Ini akan menghasilkan generasi
daripada 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 akan mengakibatkan 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 akan dipilih untuk jadual hanya jika ada
tiada pilihan lain buat masa ini. Ini akan menggunakan spekulasi data
jauh lebih konservatif. Lalai ialah 'lumpuhkan'.

-mno-sched-prefer-non-control-spec-inns
-msched-prefer-non-control-spec-insns
Jika didayakan, arahan spekulatif kawalan akan dipilih untuk jadual hanya jika ada
tiada pilihan lain buat masa ini. Ini akan menggunakan spekulasi kawalan
jauh lebih konservatif. Lalai ialah 'lumpuhkan'.

-mno-sched-count-spec-in-critical-path
-msched-count-spec-in-critical-path
Jika didayakan, kebergantungan spekulatif akan dipertimbangkan semasa pengiraan
keutamaan arahan. Ini akan 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
Tidak membenarkan lebih daripada `msched-max-memory-inns' dalam kumpulan arahan. Jika tidak, hadkan
adalah `lembut' bermaksud bahawa kami lebih suka operasi bukan memori apabila had dicapai tetapi
mungkin masih menjadualkan operasi ingatan.

IA-64/VMS Pilihan

Ini -m pilihan ditakrifkan untuk pelaksanaan IA-64/VMS:

-mvms-return-codes
Kembalikan kod keadaan VMS dari 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.

LM32 Pilihan

Ini -m pilihan ditakrifkan untuk seni bina Lattice Mico32:

-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 akan digunakan oleh GCC semasa kod
generasi. Pendaftar pseudo ini akan digunakan seperti daftar sebenar, jadi terdapat a
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 a
program mesti disusun dengan nilai yang sama untuk pilihan ini. Kerana itu, awak
tidak boleh menggunakan pilihan ini dengan binaan gcc perpustakaan masa jalan lalai.

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 akan 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 akan menjana
arahan "seth/add3" untuk memuatkan alamatnya), dan menganggap subrutin mungkin tidak
boleh dicapai dengan arahan "bl" (pengkompil akan menjana lebih perlahan
"seth/add3/jl" urutan arahan).

-msdata=tiada
Lumpuhkan penggunaan kawasan data kecil. Pembolehubah akan dimasukkan ke dalam salah satu daripada .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
masukkan ke dalam kawasan data kecil dengan atribut "bahagian" menggunakan salah satu bahagian ini.

-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 tidak, penghubung akan memberikan ralat
mesej---kod yang salah tidak akan 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 akan diutamakan
kod bersyarat, jika ia adalah 2, maka sebaliknya akan digunakan.

-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 akan digunakan jika perangkap tidak
diperlukan.

-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 sasaran ColdFire.
. 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 51cn 51em 51qe
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
Laraskan 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 __PUNYA_68881__ pada M680x0
sasaran 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 akan dihasilkan
untuk panggilan ke fungsi tersebut.

Di samping itu, kod yang salah akan terhasil 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 akan menjajarkan struktur yang mengandungi
jenis di atas berbeza daripada kebanyakan antara muka binari aplikasi yang diterbitkan
spesifikasi untuk m68k.

-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 yang tidak sejajar akan 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 pustaka kongsi berasaskan ID yang sedang disusun.
Menentukan nilai 0 akan menghasilkan kod yang lebih padat, menentukan nilai lain akan
memaksa peruntukan nombor itu ke perpustakaan semasa tetapi tiada lagi ruang atau
cekap masa daripada meninggalkan 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 anggap 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 akan diletakkan di bahagian ".based" oleh
lalai. Pembolehubah berasaskan menggunakan daftar $tp sebagai daftar asas, dan terdapat a
Had 128-bait kepada 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 akan diletakkan. nama mungkin "kecil", "dekat", atau
"jauh".

-mclip
Mendayakan arahan "klip". Ambil perhatian bahawa "-mclip" tidak berguna melainkan anda juga
sediakan "-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 pilihan "-mconfig=".

-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 akan 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 jadual untuk CPU tertentu. Nilai yang disokong adalah dalam format
vX.YY.Z, Di mana X adalah versi utama, YY ialah versi kecil, dan Z ialah keserasian
kod. 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. Gunakan -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.

-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 menjadi 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.

-THE Hasilkan kod little-endian. Ini adalah lalai untuk mips*el-*-* konfigurasi.

-march=gerbang
Hasilkan kod yang akan dijalankan gerbang, yang boleh menjadi nama MIPS ISA generik, atau
nama pemproses tertentu. Nama-nama ISA ialah: mips1, mips2, mips3, mips4,
mips32, mips32r2, mips64 dan mips64r2. 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, 74kc, 74kf2_1, 74kf1_1, 74kf3_2, 1004kc, 1004kf2_1,
1004kf1_1, loongson2e, loongson2f, loongson3a, M4K, okteon, okteon+, oktober2, orion,
r2000, r3000, r3900, r4000, r4400, r4600, r4650, r6000, r8000, rm7000, rm9000, r10000,
r12000, r14000, r16000, sb1, sr71000, vr4100, vr4111, vr4120, vr4130, vr4300, vr5000,
vr5400, vr5500 dan xlr. Nilai istimewa dari-abi memilih yang paling serasi
seni bina untuk ABI yang dipilih (iaitu, mips1 untuk ABI 32-bit dan mips3 untuk 64-bit
ABI).

Rantai alat Linux/GNU dan IRIX asli juga menyokong nilai tersebut asli, yang memilih
pilihan seni bina terbaik untuk pemproses hos. -march = asli tiada kesan jika GCC
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 bagi _MIPS_ARCH. Sebagai contoh,
-mac=r2000 akan ditetapkan _MIPS_ARCH kepada "r2000" dan tentukan makro _MIPS_ARCH_R2000.

Ambil perhatian bahawa _MIPS_ARCH makro menggunakan nama pemproses yang diberikan di atas. Dalam kata lain,
ia akan mempunyai awalan penuh dan tidak akan dipendekkan 000 as k. Dalam kes dari-
abi, makro menamakan seni bina yang diselesaikan (sama ada "mips1" or "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 akan mengoptimumkan pemproses yang ditentukan oleh -berbaris.
Dengan menggunakan -berbaris dan -mtune bersama-sama, adalah mungkin untuk menjana kod yang akan dijalankan
keluarga pemproses, tetapi mengoptimumkan kod untuk satu ahli tertentu itu
keluarga.

-mtune mentakrifkan makro _MIPS_TUNE dan _MIPS_TUNE_foo, yang berfungsi dengan cara yang sama seperti
yang -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.

-mips32r2
Bersamaan dengan -march=mips32r2.

-mips64
Bersamaan dengan -march=mips64.

-mips64r2
Bersamaan dengan -march=mips64r2.

-mips16
-mno-mips16
Jana (jangan jana) kod MIPS16. Jika GCC menyasarkan MIPS32 atau MIPS64
seni bina, ia akan 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-mips16
-mno-interlink-mips16
Memerlukan (tidak memerlukan) kod bukan MIPS16 serasi dengan pautan dengan kod MIPS16.

Contohnya, kod bukan MIPS16 tidak boleh melompat terus ke kod MIPS16; ia mesti sama ada menggunakan a
panggilan atau lompatan tidak langsung. -minterlink-mips16 oleh itu melumpuhkan lompatan terus melainkan
GCC tahu bahawa sasaran lompatan bukanlah MIPS16.

-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 mthc1 dan mfhc1 arahan dan oleh itu hanya disokong untuk
Pemproses MIPS32R2.

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, tetapi semua 64 bit
disimpan.

-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.

Kedai -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 akan
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 akan berfungsi jika GOT lebih kecil daripada kira-kira 64k.
Apa-apa yang lebih besar akan 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. Ia sepatutnya berfungsi dengan
GOT yang sangat besar, walaupun ia juga akan menjadi kurang cekap, kerana ia akan mengambil masa 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.

-mhard-terapung
Gunakan arahan koprosesor titik terapung.

-msoft-float
Jangan gunakan arahan koprosesor titik terapung. Laksanakan titik terapung
pengiraan menggunakan panggilan perpustakaan sebaliknya.

-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.

-mllsc
-mno-llsc
Gunakan (jangan gunakan) ll, sc, dan menyegerakkan arahan untuk melaksanakan memori atom terbina dalam
fungsi. Apabila tiada pilihan dinyatakan, GCC akan menggunakan arahan jika
seni bina sasaran 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 untuk 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 untuk 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.

-mmt
-mno-mt
Gunakan (jangan gunakan) arahan MT Multithreading.

-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 mengakses data dengan lebih cekap; lihat -mgpopt untuk
butiran.

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 akan berada dalam bahagian data kecil jika
data itu berada 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 akan melepasi nilai yang tidak diketahui dalam $gp.
(Dalam situasi sedemikian, monitor but itu sendiri biasanya akan disusun dengan -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 bukan remeh. lalai
is -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.

-mfused-gila
-mno-fused-madd
Dayakan (lumpuhkan) penggunaan arahan darab-terkumpul titik terapung, apabila arahan itu
boleh didapati. Lalainya ialah -mfused-gila.

Apabila arahan darab-akumulasi digunakan, hasil perantaraan dikira
kepada ketepatan yang tidak terhingga dan tidak tertakluk kepada bit FCSR Flush to Zero. Ini mungkin
tidak diingini dalam beberapa keadaan.

-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-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
pemasang dan bukannya oleh GCC, walaupun GCC akan 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 akan 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 akan 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 or __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 akan 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 kami menjadualkan FP
arahan 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 akan
selaraskan pasangan 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) akan dijana apabila
"__builtin___clear_cache()" disusun.

Pilihan ini lalai kepada "-mno-synci", tetapi lalai boleh diganti dengan mengkonfigurasi
dengan "--with-synci".

Apabila menyusun kod untuk sistem pemproses tunggal, secara amnya selamat untuk menggunakan "synci".
Walau bagaimanapun, pada banyak sistem berbilang teras (SMP), ia tidak akan membatalkan arahan tersebut
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 "-mexplicit-relocs" berada 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 baharu 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 akan 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 __TIADA_SETLB__.

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 akan
dijalankan pada mana-mana jenis AE yang lain. Kod itu tidak akan cekap seperti jika
disusun untuk jenis AE tertentu, dan beberapa jenis operasi (cth, pendaraban)
tidak akan berfungsi dengan 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 akan 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 pengguna
pilihan, 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 adalah tidak cekap dan amaran akan dijana menunjukkan kepada
pengaturcara bahawa mereka harus menulis semula kod untuk mengelakkan operasi bait, atau untuk menyasarkan
Jenis AE yang mempunyai sokongan perkakasan yang diperlukan. Pilihan ini membolehkan amaran untuk
dimatikan.

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. Pilihan "g13" adalah untuk
perkakasan darab/bahagi persisian hanya pada sasaran RL78/G13. Pilihan "rl78".
adalah untuk pendaraban perkakasan standard yang ditakrifkan dalam manual perisian RL78.

IBM RS / 6000 dan PowerPC Pilihan

Ini -m pilihan ditakrifkan untuk IBM RS/6000 dan PowerPC:

-memberi kuasa
-mno-kuasa
-memberi kuasa2
-mno-kuasa2
-mpowerpc
-mno-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
GCC menyokong dua seni bina set arahan berkaitan untuk RS/6000 dan PowerPC.
. POWER set arahan ialah arahan yang disokong oleh sungai set cip digunakan
dalam sistem RS/6000 asal dan PowerPC set arahan adalah seni bina
mikropemproses Freescale MPC5xx, MPC6xx, MPC8xx dan IBM 4xx, 6xx dan
mikropemproses susulan.

Kedua-dua seni bina adalah subset daripada yang lain. Walau bagaimanapun terdapat subset biasa yang besar
arahan yang disokong oleh kedua-duanya. Daftar MQ disertakan dalam pemproses
menyokong seni bina POWER.

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.

. -memberi kuasa pilihan membolehkan GCC menjana arahan yang hanya terdapat dalam
seni bina POWER dan menggunakan daftar MQ. Menentukan -memberi kuasa2 bererti Kuasa dan
juga membenarkan GCC menjana arahan yang terdapat dalam seni bina POWER2
tetapi bukan seni bina POWER yang asal.

. -mpowerpc pilihan membolehkan GCC menjana arahan yang hanya terdapat dalam
Subset 32-bit seni bina PowerPC. Menentukan -mpowerpc-gpopt bererti
-mpowerpc dan juga membenarkan GCC menggunakan arahan seni bina PowerPC pilihan dalam
kumpulan Tujuan Am, termasuk punca kuasa dua titik terapung. Menentukan
-mpowerpc-gfxopt bererti -mpowerpc dan juga membenarkan GCC menggunakan PowerPC pilihan
arahan seni bina dalam kumpulan Grafik, termasuk pilih 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.

Jika anda nyatakan kedua-duanya -mno-kuasa dan -mno-powerpc, GCC hanya akan menggunakan arahan dalam
subset biasa kedua-dua seni bina serta beberapa panggilan mod biasa AIX khas, dan
tidak akan menggunakan daftar MQ. Menentukan kedua-duanya -memberi kuasa dan -mpowerpc membenarkan GCC untuk
menggunakan sebarang arahan daripada sama ada seni bina dan membenarkan penggunaan daftar MQ;
nyatakan ini untuk Motorola MPC601.

-mnemonik-baru
-acuan-mnemonik
Pilih mnemonik yang hendak digunakan dalam kod pemasang yang dijana. Dengan -mnemonik-baru,
GCC menggunakan mnemonik pemasang yang ditakrifkan untuk seni bina PowerPC. Dengan
-acuan-mnemonik ia menggunakan mnemonik pemasang yang ditakrifkan untuk seni bina POWER.
Arahan yang ditakrifkan dalam hanya satu seni bina mempunyai hanya satu mnemonik; GCC menggunakan itu
mnemonik tanpa mengira pilihan mana yang dinyatakan.

GCC lalai kepada mnemonik yang sesuai untuk seni bina yang digunakan. Menentukan
-mcpu=cpu_type kadangkala mengatasi nilai pilihan ini. Kecuali anda sedang membina
pengkompil silang, anda biasanya tidak boleh menentukan sama ada -mnemonik-baru or
-acuan-mnemonik, tetapi sebaliknya harus menerima lalai.

-mcpu=cpu_type
Tetapkan jenis seni bina, daftar penggunaan, pilihan mnemonik dan penjadualan arahan
parameter 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, ec603e, G3, G4, G5, titan, kuasa, power2, power3, power4, power5,
kuasa5+, power6, kuasa6x, power7, biasa, pc kuasa, kuasapc64, sungai, sungai1, sungai2, rsc,
dan rs64.

-mcpu=biasa memilih pemproses generik sepenuhnya. Kod yang dijana di bawah pilihan ini
akan berjalan pada mana-mana pemproses POWER atau PowerPC. GCC hanya akan menggunakan arahan dalam
subset biasa kedua-dua seni bina, dan tidak akan menggunakan daftar MQ. GCC menganggap a
model pemproses generik untuk tujuan penjadualan.

-mcpu=kuasa, -mcpu=kuasa2, -mcpu=powerpc, dan -mcpu=powerpc64 nyatakan KUASA generik,
POWER2, ​​PowerPC 32-bit tulen (iaitu, bukan MPC601) dan seni bina PowerPC 64-bit
jenis mesin, dengan model pemproses generik yang sesuai diandaikan untuk penjadualan
tujuan.

Pilihan lain menentukan pemproses tertentu. Kod yang dijana di bawah pilihan tersebut
akan 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 -mnemonik-baru -mpopcntb
-mpopcntd -memberi kuasa -memberi kuasa2 -mpowerpc64 -mpowerpc-gpopt -mpowerpc-gfxopt
-msingle-float -mdouble-float -msimple-fpu -mstring -mmulhw -mdlmzb -mmfpgpr -mvsx

Pilihan tertentu yang ditetapkan untuk mana-mana CPU tertentu akan 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, penggunaan daftar, atau pilihan mnemonik, sebagai -mcpu=cpu_type
akan. Nilai yang sama untuk cpu_type digunakan untuk -mtune untuk -mcpu. Jika kedua-duanya
ditentukan, kod yang dihasilkan akan menggunakan set seni bina, daftar dan mnemonik
by -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.

-mvrsave
-mno-vrsave
Hasilkan arahan VRSAVE apabila menjana kod AltiVec.

-mgen-sel-mikrokod
Hasilkan arahan mikrokod Sel

-mwarn-sel-mikrokod
Amaran apabila arahan mikrokod Sel akan dikeluarkan. Contoh Sel
arahan mikrokod ialah anjakan berubah-ubah.

-msecure-plt
Hasilkan kod yang membolehkan ld dan ld.so membina boleh laku dan perpustakaan kongsi dengan
bahagian bukan eksekutif .plt dan .dapat. Ini ialah pilihan SYSV ABI PowerPC 32-bit.

-mbss-plt
Hasilkan kod yang menggunakan bahagian .plt BSS yang ld.so diisi dan memerlukan .plt dan
.mendapat bahagian yang boleh ditulis dan boleh dilaksanakan. Ini ialah SYSV 32-bit PowerPC
Pilihan 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.

-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
akan memperuntukkan sekurang-kurangnya satu entri TOC untuk setiap rujukan pembolehubah bukan automatik yang unik
dalam program anda. GCC juga akan meletakkan pemalar titik terapung dalam TOC. Walau bagaimanapun,
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 akan menghasilkan kod yang lebih perlahan dan
lebih besar tetapi 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 dan
-mpowerpc, 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
Nyatakan jenis unit titik terapung. Nilai yang sah ialah 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 akan 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 / 2 untuk menetapkan tidak/tertinggi/kedua tertinggi keutamaan untuk menghantar slot terhad
arahan.

-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 adalah mahal, semua: semua pergantungan adalah mahal,
true_store_to_load: pergantungan sebenar dari kedai untuk memuatkan adalah mahal, store_to_load: mana-mana
pergantungan dari kedai ke pemuatan adalah mahal, nombor: sebarang pergantungan untuk kependaman mana >=
nombor adalah mahal.

-minsert-sched-nops=skim
Pilihan ini mengawal skema sisipan nop yang akan digunakan semasa detik
pas penjadualan. Hujahnya skim mengambil salah satu daripada nilai berikut: tidak: Jangan
masukkan nops. pad: Pad dengan nops mana-mana kumpulan penghantaran yang mempunyai slot keluaran kosong,
mengikut kumpulan penjadual. kumpulan semula_tepat: Masukkan nops untuk memaksa mahal
inns bergantung kepada kumpulan yang berasingan. Masukkan tepat sebanyak nop yang diperlukan untuk memaksa
insn kepada kumpulan baharu, mengikut anggaran kumpulan pemproses. nombor: Masukkan
nops untuk memaksa inns yang bergantung kepada kos ke dalam kumpulan yang berasingan. Sisipkan nombor nops ke
memaksa insn ke kumpulan baru.

-mcall-sysv
Pada Sistem V.4 dan sistem PowerPC terbenam menyusun kod menggunakan konvensyen panggilan itu
mematuhi draf Mac 1995 bagi 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.

-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 Booke 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.

-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 telah diluluskan dalam titik terapung
mendaftar sekiranya fungsi mengambil hujah berubah-ubah. Dengan -prototaip, hanya panggilan
kepada prototaip fungsi hujah pembolehubah akan menetapkan atau mengosongkan 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 PPC_EMB bit 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 V.4
spesifikasi. 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 diselaraskan dengan sempadan 16 bait, lakukan
tidak memanggil fungsi permulaan daripada "utama", dan -msdata pilihan hanya akan digunakan
"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 .sdata2 bahagian, yang ditunjukkan oleh daftar "r2". Letakkan kecil
data global dan statik bukan "const" dimulakan dalam .sdata bahagian, yang runcing
kepada dengan mendaftar "r13". Letakkan data global dan statik kecil yang tidak dimulakan dalam .sbss
bahagian, yang bersebelahan dengan .sdata bahagian. The -msdata=eabi pilihan adalah
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
.sdata bahagian, yang ditunjukkan oleh daftar "r13". Letakkan global kecil yang tidak dimulakan
dan data statik dalam .sbss bahagian, 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 .sbss bahagian. 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 .bss bawah seksyen ini.

-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 anggap semua panggilan berada jauh supaya panggilan yang lebih lama lebih mahal
urutan diperlukan. Ini diperlukan untuk panggilan yang melebihi 32 megabait
(33,554,432 bait) daripada lokasi semasa. Panggilan pendek akan 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" akan menjana "jbsr callee, L42", ditambah dengan
"pulau cawangan" (kod gam). Dua alamat sasaran mewakili penerima dan
"pulau cawangan". Penghubung Darwin/PPC akan memilih alamat pertama dan menjana a
"bl callee" jika arahan PPC "bl" akan sampai terus callee; jika tidak, yang
penghubung akan menjana "bl L42" untuk memanggil "pulau cawangan". "Pulau cawangan" ialah
dilampirkan pada badan fungsi panggilan; ia mengira alamat 32-bit penuh
orang yang dipanggil 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, kami mungkin menyebabkan GCC mengabaikan semua spesifikasi panggilan panjang apabila pemaut
diketahui menghasilkan gam.

-mtls-penanda
-mno-tls-penanda
Tandai (jangan tanda) panggilan ke "__tls_get_addr" dengan penempatan semula yang menentukan fungsi
hujah. Penempatan semula membolehkan ld mengaitkan panggilan fungsi dengan hujah dengan pasti
arahan persediaan untuk pengoptimuman TLS, yang seterusnya membolehkan gcc membuat jadual yang lebih baik
urutan itu.

-pthread
Menambah sokongan untuk multithreading dengan pthreads perpustakaan. Pilihan ini menetapkan bendera untuk
kedua-dua prapemproses dan penghubung.

-mrecip
-mno-resipi
Pilihan ini akan membolehkan GCC menggunakan anggaran timbal balik dan punca kuasa dua timbal balik
anggaran arahan dengan langkah Newton-Raphson tambahan untuk meningkatkan ketepatan
bukannya melakukan pembahagian atau punca kuasa dua dan bahagikan untuk hujah titik terapung. awak
harus menggunakan -fast-matematik pilihan apabila menggunakan -mrecip (atau sekurang-kurangnya
-funsafe-math-optimizations, -finite-matematik sahaja, -freciprocal-matematik dan
-fno-perangkap-matematik). Ambil perhatian bahawa sementara pemprosesan jujukan secara amnya
lebih tinggi daripada daya pemprosesan arahan bukan timbal balik, ketepatan
jujukan boleh dikurangkan sehingga 2 ulp (iaitu songsangan 1.0 bersamaan 0.99999994)
untuk punca kuasa dua salingan.

-mrecip=pilih
Pilihan ini membolehkan untuk 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 lalai
arahan, bersamaan dengan -mrecip, "tiada": lumpuhkan semua arahan anggaran,
bersamaan dengan -mno-resipi; "div": dayakan arahan penghampiran timbal balik untuk
kedua-dua ketepatan tunggal dan berganda; "divf": dayakan timbal balik ketepatan tunggal
arahan anggaran; "divd": dayakan timbal balik ketepatan berganda
arahan anggaran; "rsqrt": dayakan penghampiran punca kuasa dua timbal balik
arahan untuk ketepatan tunggal dan ganda; "rsqrtf": dayakan satu-
arahan penghampiran punca kuasa dua salingan ketepatan; "rsqrtd": dayakan
arahan penghampiran punca kuasa dua ketepatan berketepatan;

Jadi sebagai contoh, -mrecip=semua,!rsqrtd akan 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 or
-mcpu=kuasa7 secara automatik memilih -mrecip-precision. Petak dua ketepatan
arahan anggaran akar tidak dijana secara lalai pada mesin berketepatan rendah,
kerana mereka tidak memberikan anggaran yang menumpu selepas tiga langkah.

-mveclibabi=jenis
Menentukan jenis ABI untuk digunakan untuk menvelokkan intrinsik menggunakan perpustakaan luaran.
Satu-satunya jenis yang disokong pada masa ini ialah "jisim", yang menentukan untuk menggunakan IBM
Perpustakaan Subsistem Pecutan Matematik (MASS) untuk menvektorkan intrinsik menggunakan
perpustakaan luar. GCC pada masa ini akan 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 perlu didayakan. Perpustakaan MASS mesti ada
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) bila
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
mendaftar r2, dan nilai rantai statik untuk dimuatkan dalam daftar r11. Yang
-penunjuk-ke-fungsi-bersarang dihidupkan secara lalai. Anda tidak akan dapat membuat panggilan melalui
penunjuk kepada fungsi bersarang atau penunjuk kepada fungsi yang disusun dalam bahasa lain yang
gunakan 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.

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 RX600 siri dan dilumpuhkan untuk RX200 siri.

Arahan titik terapung hanya akan dijana untuk nilai titik terapung 32-bit
walau bagaimanapun, jadi jika -m64bit-ganda pilihan sedang digunakan maka perkakasan FPU tidak akan
digunakan untuk beregu.

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 yang pernah boleh disimpan dalam daftar simpanan sekarang
ditolak ke atas timbunan.

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 adalah 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 jadi menjananya bukan pilihan 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 akan
cuba mengurangkan saiz program dengan mencari pelbagai versi yang lebih pendek
arahan. Dilumpuhkan 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" akan menjadi
dikhaskan untuk penggunaan eksklusif pengendali gangguan pantas. Nilai 2 rizab
"r13" dan "r12". Nilai 3 rizab "r13", "r12" dan "r11", dan nilai 4
rizab "r13" hingga "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 akan 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.

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 akan memastikan bahawa ia hanya menggunakan
mendaftarkan "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 akan digunakan
untuk melaksanakan 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
akan digunakan untuk melakukan operasi titik terapung perpuluhan. Bila -mhard-dfp is
ditentukan, 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 akan dijalankan 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 dan z10. Apabila menjana kod menggunakan arahan yang 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 adalah
umumnya idea yang tidak baik dengan saiz tindanan yang terhad.

-mstack-guard=stack-guard
-saiz-mstack=saiz timbunan
Jika pilihan ini disediakan hujung belakang s390 mengeluarkan arahan tambahan dalam
prolog fungsi yang mencetuskan perangkap jika saiz tindanan adalah stack-guard bait di atas
yang saiz timbunan (ingat bahawa timbunan pada s390 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 pengeluaran seperti sistem 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.

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 jana arahan bcnz.

-muls
Dayakan hasilkan 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.

-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.

-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 akan 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.

-mhitachi
Mematuhi konvensyen panggilan yang ditakrifkan oleh Renesas.

-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 -mhitachi 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 berkuat kuasa dan dipilih
pilihan penjanaan kod (cth -m4) tidak membenarkan penggunaan arahan icbi. Jika
pilihan penjanaan kod yang dipilih tidak membenarkan penggunaan arahan icbi,
dan -musermode tidak berkuat kuasa, kod sebaris akan memanipulasi arahan
tatasusunan alamat cache secara langsung dengan penulisan bersekutu. Ini bukan sahaja memerlukan
mod istimewa, tetapi ia juga akan gagal jika garisan cache telah dipetakan melalui TLB
dan telah 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.

-msoft-atom
Hasilkan urutan atom perisian gUSA yang serasi dengan GNU/Linux untuk atom terbina dalam
fungsi. Urutan atom yang dihasilkan memerlukan sokongan daripada gangguan /
kod pengendalian pengecualian sistem dan hanya sesuai untuk sistem teras tunggal.
Mereka tidak akan berfungsi dengan betul pada sistem berbilang teras. Pilihan ini didayakan oleh
lalai apabila sasaran ialah "sh-*-linux*". Untuk butiran tentang atom terbina dalam
fungsi lihat __atom terbina.

-mspace
Optimumkan untuk ruang dan bukannya kelajuan. Tersirat oleh -Os.

-prefergot
Apabila menjana kod bebas kedudukan, keluarkan panggilan fungsi menggunakan Global Offset
Jadual dan bukannya Jadual Hubungan Prosedur.

-musermode
Jangan jana kod mod istimewa sahaja; membayangkan -mno-inline-ic_invalidate jika
kod sebaris tidak akan berfungsi dalam mod pengguna. Ini adalah lalai apabila sasaran adalah
"sh-*-linux*".

-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 akan 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 arahan anjakan dinamik akan
lalai kepada "panggilan-div1".

Apabila strategi pembahagian belum ditentukan, strategi lalai akan dipilih
berdasarkan sasaran semasa. Untuk SH2A strategi lalai adalah menggunakan "divs" dan
arahan "divu" 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 strategi pembahagian panggilan dan inv:panggilan, dan
pengkompil masih akan mengharapkan set daftar input/output/clobbered yang sama seolah-olah
pilihan ini 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.

-mlaras-buka gulungan
Pendikit membuka gulungan untuk mengelakkan daftar sasaran membelasah. Pilihan ini hanya mempunyai
kesan jika pangkalan kod gcc menyokong cangkuk sasaran TARGET_ADJUST_UNROLL_MAX.

-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
Andaikan arahan pt* tidak akan memerangkap. Ini secara amnya akan menghasilkan jadual yang lebih baik
kod, tetapi tidak selamat pada perkakasan semasa. Definisi seni bina semasa berkata
bahawa ptabs dan ptrel perangkap apabila sasaran daned dengan 3 ialah 3. Ini mempunyai
kesan tidak disengajakan menyebabkan ia tidak selamat untuk menjadualkan ptabs / ptrel sebelum cawangan, atau
angkat ia keluar dari gelung. Contohnya, __do_global_ctors, sebahagian daripada libgcc yang dijalankan
pembina semasa permulaan program, memanggil fungsi dalam senarai yang dibatasi oleh -1.
Dengan pilihan -mpt-fixed, ptabs akan dilakukan sebelum menguji terhadap -1. Itu
bermakna bahawa semua pembina akan dijalankan sedikit lebih cepat, tetapi apabila gelung datang ke
penghujung senarai, program ranap kerana ptabs memuatkan -1 ke dalam sasaran
mendaftar. Memandangkan pilihan ini tidak selamat untuk mana-mana perkakasan yang melaksanakan semasa
spesifikasi seni bina, lalai ialah -mno-pt-fixed. Melainkan pengguna menyatakan a
kos tertentu dengan -mgettrcost, -mno-pt-fixed juga membayangkan -mgettrcost=100; ini
menghalang peruntukan mendaftar menggunakan daftar sasaran untuk menyimpan integer biasa.

-simbol-minvalid
Andaikan simbol mungkin tidak sah. Simbol fungsi biasa yang dihasilkan oleh pengkompil
akan sentiasa sah untuk memuatkan dengan movi/shori/ptabs atau movi/shori/ptrel, tetapi dengan
penghimpun dan/atau helah penghubung adalah mungkin untuk menjana simbol yang akan menyebabkan
ptabs / ptrel untuk memerangkap. Pilihan ini hanya bermakna apabila -mno-pt-tetap dalam
kesan. Ia kemudiannya akan menghalang cse blok asas silang, pengangkatan dan kebanyakan penjadualan
simbol dimuatkan. Lalainya ialah -mno-invalid-simbol.

-kos-mbranch=num
Anggap num menjadi kos untuk arahan cawangan. Nombor yang lebih tinggi akan menjadikan
pengkompil cuba menjana lebih banyak kod bebas cawangan jika boleh. Jika tidak dinyatakan
nilai dipilih bergantung pada jenis pemproses yang sedang disusun.

-mcbranchdi
Dayakan corak arahan "cbranchdi4".

-mcmpeqdi
Pancarkan corak arahan "cmpeqdi_t" walaupun ketika itu -mcbranchdi berkuat kuasa.

-mfused-gila
Benarkan penggunaan arahan "fmac" (titik terapung darab-terkumpul) jika
jenis pemproses menyokongnya. Mendayakan pilihan ini mungkin menjana kod yang menghasilkan
keputusan titik terapung berangka yang berbeza berbanding dengan aritmetik IEEE 754 yang ketat.

-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:

-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 akan mencetuskan salinan-
on-write, 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 akan 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.

-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
tidak akan 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, 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 cemara

v8 supersparc, hypersparc, leon

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 akan.

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, f930, f934, sparclite86x, tsc701, ultrasparc,
ultrasparc3, Niagara, niagara2, niagara3 dan niagara4. Dengan Solaris asli dan
Rantai alat GNU/Linux, 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.

-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).

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 akan memberikan
ralat apabila ia menjana kod yang memerlukan penempatan semula dinamik. -mno-error-reloc
melumpuhkan ralat, -mwarn-reloc sebaliknya akan 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. Pengguna biasanya
tangani masalah ini menggunakan kata kunci yang tidak menentu, tetapi itu boleh membawa kepada kod yang tidak cekap
di tempat di mana ingatan diketahui tidak berubah. Daripada menandakan ingatan sebagai
tidak menentu kami menganggap arahan DMA sebagai berpotensi mempengaruhi semua ingatan. Dengan
-munsafe-dma pengguna mesti menggunakan kata kunci yang tidak menentu untuk melindungi capaian memori.

-petunjuk-mbranch
Secara lalai, GCC akan menjana arahan pembayang cawangan untuk mengelakkan gerai saluran paip
selalu diambil atau mungkin diambil cawangan. Pembayang tidak akan 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, GCC akan memautkan
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.
Oleh kerana ini ialah pilihan menukar 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 akan 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 semula baris cache akan lebih banyak
cekap. Tingkah laku lalai adalah menggunakan kemas kini atom.

-mdual-nops
-mdual-nops=n
Secara lalai, GCC akan memasukkan nop untuk meningkatkan dua keluaran apabila ia menjangkakan ia meningkat
prestasi. n boleh menjadi nilai dari 0 hingga 10. Lebih kecil n akan memasukkan lebih sedikit nops. 10
ialah lalai, 0 adalah sama dengan -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 sedang dilaksanakannya. GCC akan memasukkan sehingga n nops ke
menguatkuasakan ini, jika tidak, ia tidak akan menjana pembayang cawangan.

-mhint-max-jarak=n
Pengekodan arahan pembayang cawangan mengehadkan pembayang berada dalam 256
arahan cawangan yang sedang dilaksanakannya. Secara lalai, GCC memastikan ia berada di dalam
125.

-msafe-petunjuk
Selesaikan pepijat perkakasan yang menyebabkan SPU terhenti selama-lamanya. Secara lalai, GCC
akan 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:

-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.

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 akan 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.

-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 akan menyebabkan r2 dan r5 digunakan dalam kod yang dihasilkan oleh pengkompil.
Tetapan ini adalah lalai.

-mno-app-regs
Pilihan ini akan menyebabkan r2 dan r5 dianggap sebagai daftar tetap.

-mv850e2v3
Nyatakan bahawa pemproses sasaran ialah V850E2V3. Pemalar prapemproses
__v850e2v3__ akan ditakrifkan jika pilihan ini digunakan.

-mv850e2
Tentukan bahawa pemproses sasaran ialah V850E2. Pemalar prapemproses
__v850e2__ akan ditakrifkan jika pilihan ini digunakan.

-mv850e1
Tentukan bahawa pemproses sasaran ialah V850E1. Pemalar prapemproses
__v850e1__ dan __v850e__ akan 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__
akan ditakrifkan jika pilihan ini digunakan.

Jika tiada -mv850 tidak -mv850e tidak -mv850e1 tidak -mv850e2 tidak -mv850e2v3 ditakrifkan
maka pemproses sasaran lalai akan dipilih dan yang berkaitan __v850*__ prapemproses
pemalar akan ditakrifkan.

Pemalar prapemproses __v850 dan __v851__ sentiasa ditakrifkan, tidak kira yang mana
varian pemproses adalah sasaran.

-lumpuhkan-panggilan
Pilihan ini akan menyekat penjanaan arahan CALLT untuk v850e, v850e1,
v850e2 dan v850e2v3 perisa seni bina v850. Lalainya ialah
-mno-disable-callt yang membenarkan arahan CALLT digunakan.

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 anda akan memasang dengan
Penghimpun GNU.

-mg Kod output untuk nombor titik terapung format G dan bukannya format D.

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-64 Pilihan

Ini disenaraikan di bawah

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
Kawal rawatan kolam literal. Lalainya ialah -mno-text-section-literals,
yang meletakkan literal dalam bahagian berasingan dalam fail output. Ini membolehkan
kolam literal untuk diletakkan dalam RAM/ROM data, dan ia juga membenarkan penyambung untuk digabungkan
kolam literal daripada fail objek berasingan untuk mengalih keluar literal berlebihan dan menambah baik kod
saiz. Dengan -mtext-section-literals, huruf tersurat diselang seli dalam bahagian teks
untuk memastikan mereka sedekat mungkin dengan rujukan mereka. Ini mungkin perlu
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 akan dilakukan. Lalainya ialah
-mtarget-align. Pilihan ini tidak menjejaskan rawatan penjajaran automatik
arahan seperti "LOOP", yang pemasang akan sentiasa selaras, sama ada dengan melebarkan
arahan ketumpatan atau dengan memasukkan arahan no-op.

-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 akan menunjukkan panggilan terus
arahan---lihat kod objek yang dibongkar untuk melihat arahan sebenar.
Ambil perhatian bahawa pemasang akan menggunakan panggilan tidak langsung untuk setiap panggilan silang fail, bukan sahaja
yang benar-benar akan 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 akan menjadi
-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.

-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
sesetengah sasaran, ini membayangkan GCC akan menjana maklumat rehat bingkai untuk semua
fungsi, yang boleh menghasilkan overhed saiz data yang ketara, walaupun tidak
menjejaskan pelaksanaan. Jika anda tidak menyatakan pilihan ini, GCC akan mendayakannya secara lalai
untuk bahasa seperti C++ yang biasanya memerlukan pengendalian pengecualian, dan lumpuhkannya untuk
bahasa seperti C yang biasanya tidak memerlukannya. Walau bagaimanapun, anda mungkin perlu mendayakan
pilihan ini apabila menyusun kod C yang perlu beroperasi dengan betul dengan pengecualian
pengendali yang ditulis dalam C++. Anda juga mungkin ingin melumpuhkan pilihan ini jika anda mahu
menyusun atur cara C++ lama 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".

-funwind-meja
Sama seperti -pengecualian, kecuali ia hanya akan menjana sebarang data statik yang diperlukan, tetapi
tidak akan menjejaskan kod yang dijana dengan cara lain. Anda biasanya tidak akan mendayakan
pilihan ini; sebaliknya, pemproses bahasa yang memerlukan pengendalian ini akan membolehkannya dihidupkan
bagi pihak anda.

-fasynchronous-unwind-tables
Hasilkan jadual berehat dalam format dwarf2, 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).

-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" akan bersamaan dengan yang terkecil
jenis integer 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 pendek tidak ditandatangani int 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 akan
dapatkan 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 #identitas arahan.

-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 menjadi
direkodkan ke dalam fail objek yang sedang dibuat. Suis ini hanya dilaksanakan
pada beberapa 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. 386 tidak mempunyai had sedemikian.)

Kod bebas kedudukan memerlukan sokongan khas, dan oleh itu hanya berfungsi
mesin tertentu. Untuk 386, 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 akan 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 akan menyimpan dan memulihkan daftar reg.

Ralat menggunakan bendera ini dengan penuding bingkai atau penuding tindanan. Penggunaan ini
bendera untuk daftar lain yang mempunyai peranan meresap tetap dalam pelaksanaan mesin
model akan menghasilkan hasil yang buruk.

Bendera ini tidak mempunyai bentuk negatif, kerana ia menentukan pilihan tiga hala.

-fcall-disimpan-reg
Rawat daftar bernama reg sebagai daftar yang boleh diperuntukkan disimpan oleh fungsi. Ia mungkin
diperuntukkan walaupun untuk sementara atau pembolehubah yang hidup merentas panggilan. Fungsi
disusun dengan cara ini akan menyimpan dan memulihkan daftar reg jika mereka menggunakannya.

Ralat menggunakan bendera ini dengan penuding bingkai atau penuding tindanan. Penggunaan ini
bendera untuk daftar lain yang mempunyai peranan meresap tetap dalam pelaksanaan mesin
model akan menghasilkan hasil yang buruk.

Jenis bencana yang berbeza akan terhasil daripada penggunaan bendera ini untuk daftar masuk
nilai fungsi yang manakah boleh dikembalikan.

Bendera ini tidak mempunyai bentuk negatif, kerana ia menentukan pilihan tiga hala.

-fpack-struct[=n]
Tanpa nilai yang ditentukan, bungkus semua ahli struktur bersama-sama tanpa lubang. Apabila a
nilai ditentukan (yang mestilah kuasa kecil dua), ahli struktur pek
mengikut nilai ini, mewakili penjajaran maksimum (iaitu, objek dengan
keperluan penjajaran lalai yang lebih besar daripada ini akan menjadi output yang berpotensi tidak sejajar
di lokasi pemasangan seterusnya.

Amaran: yang -fpack-struct suis menyebabkan GCC menjana kod yang bukan binari
serasi dengan kod yang dihasilkan tanpa suis itu. Selain itu, ia membuat kod
kurang optimum. Gunakannya untuk mematuhi antara muka binari aplikasi bukan lalai.

-fungsi-alatan
Hasilkan panggilan instrumentasi untuk masuk dan keluar ke fungsi. Selepas sahaja majlis
entri dan sejurus sebelum fungsi keluar, fungsi pemprofilan berikut akan dipanggil
dengan alamat fungsi semasa dan tapak panggilannya. (Pada beberapa platform,
"__builtin_return_address" tidak berfungsi di luar fungsi semasa, jadi tapak panggilan
maklumat mungkin tidak tersedia untuk fungsi pemprofilan sebaliknya.)

batal __cyg_profile_func_enter (kosong *ini_fn,
batal *panggilan_tapak);
batal __cyg_profile_func_exit (batal *this_fn,
batal *panggilan_tapak);

Argumen pertama ialah alamat permulaan fungsi semasa, yang mungkin
mendongak tepat di dalam jadual simbol.

Instrumentasi ini juga dilakukan untuk fungsi yang dikembangkan sebaris dalam fungsi lain.
Panggilan pemprofilan akan menunjukkan di mana, secara konsep, fungsi sebaris dimasukkan
dan keluar. Ini bermakna versi yang boleh dialamatkan bagi fungsi tersebut mesti tersedia.
Jika semua penggunaan fungsi anda dikembangkan sebaris, ini mungkin bermakna tambahan
pengembangan saiz kod. Jika anda menggunakan luar sebaris dalam kod C anda, yang boleh dialamatkan
versi fungsi tersebut mesti disediakan. (Ini biasanya berlaku, tetapi
jika anda bernasib baik dan pengoptimum sentiasa mengembangkan fungsi sebaris, anda mungkin mempunyai
melarikan diri tanpa memberikan salinan statik.)

Fungsi boleh diberikan atribut "no_instrument_function", dalam hal ini
instrumentasi tidak akan dilakukan. Ini boleh digunakan, sebagai contoh, untuk pemprofilan
fungsi yang disenaraikan di atas, rutin gangguan keutamaan tinggi, dan sebarang fungsi yang daripadanya
fungsi pemprofilan tidak boleh dipanggil dengan selamat (mungkin pengendali isyarat, jika
rutin pemprofilan menjana output atau memperuntukkan memori).

-finstrument-functions-exclude-file-list=fail,fail, ...
Tetapkan senarai fungsi yang dikecualikan daripada instrumentasi (lihat penerangan
daripada "-fungsi-fungsi"). Jika fail yang mengandungi definisi fungsi sepadan
dengan salah satu daripada fail, maka fungsi itu tidak diperalatkan. Perlawanan selesai pada
subrentetan: jika fail parameter ialah subrentetan nama fail, ia dianggap sebagai
menjadi perlawanan.

Sebagai contoh:

-finstrument-functions-exclude-file-list=/bits/stl,include/sys

akan mengecualikan sebarang fungsi sebaris yang ditakrifkan dalam fail yang nama laluannya mengandungi "/bits/stl"
atau "termasuk/sys".

Jika, atas sebab tertentu, anda ingin memasukkan huruf ',' dalam salah satu daripada sym, tulis ','. Untuk
contoh, "-finstrument-functions-exclude-file-list=',,tmp'" (perhatikan petikan tunggal
mengelilingi pilihan).

-finstrument-functions-exclude-function-list=sym,sym, ...
Ini serupa dengan "-finstrument-functions-exclude-file-list", tetapi pilihan ini ditetapkan
senarai nama fungsi yang akan dikecualikan daripada instrumentasi. Nama fungsi kepada
be matched ialah nama yang boleh dilihat oleh pengguna, seperti "vector blah(vektor const &)",
bukan nama dalaman yang rosak (cth, "_Z4blahRSt6vectorIiSaIiEE"). Perlawanan telah selesai
pada subrentetan: jika sym parameter ialah subrentetan nama fungsi, ia adalah
dianggap sebagai perlawanan. Untuk pengecam lanjutan C99 dan C++, nama fungsinya
mesti diberikan dalam UTF-8, tidak menggunakan nama aksara universal.

-fstack-check
Hasilkan kod untuk mengesahkan bahawa anda tidak melampaui sempadan timbunan. awak
harus menentukan bendera ini jika anda berjalan dalam persekitaran dengan berbilang benang,
tetapi jarang sekali perlu menentukannya dalam persekitaran satu benang sejak tindanan
limpahan dikesan secara automatik pada hampir semua sistem jika terdapat hanya satu timbunan.

Ambil perhatian bahawa suis ini sebenarnya tidak menyebabkan pemeriksaan dilakukan; operasi
sistem atau masa jalan bahasa mesti melakukannya. Suis menyebabkan penjanaan kod kepada
memastikan bahawa mereka melihat timbunan dilanjutkan.

Anda juga boleh menentukan parameter rentetan: "tidak" bermaksud tiada semakan, "generik"
bermaksud memaksa penggunaan semakan gaya lama, "spesifik" bermaksud menggunakan semakan terbaik
kaedah dan bersamaan dengan telanjang -fstack-check.

Pemeriksaan gaya lama ialah mekanisme generik yang tidak memerlukan sokongan sasaran khusus
pengkompil tetapi datang dengan kelemahan berikut:

1. Strategi peruntukan yang diubah suai untuk objek besar: ia akan sentiasa diperuntukkan
secara dinamik jika saiznya melebihi ambang tetap.

2. Had tetap pada saiz bingkai statik fungsi: apabila ia di atas oleh a
fungsi tertentu, semakan tindanan tidak boleh dipercayai dan amaran dikeluarkan oleh
penyusun

3. Ketidakcekapan: kerana kedua-dua strategi peruntukan diubah suai dan generik
pelaksanaan, prestasi kod terhalang.

Ambil perhatian bahawa semakan tindanan gaya lama juga merupakan kaedah sandaran untuk "khusus" jika tidak
sokongan sasaran telah ditambah dalam pengkompil.

-fstack-limit-register=reg
-fstack-limit-symbol=sym
-fno-stack-had
Hasilkan kod untuk memastikan timbunan tidak berkembang melebihi nilai tertentu, sama ada
nilai daftar atau alamat simbol. Jika timbunan akan berkembang melebihi
nilai, isyarat dinaikkan. Bagi kebanyakan sasaran, isyarat dinaikkan sebelum
timbunan melepasi sempadan, jadi adalah mungkin untuk menangkap isyarat tanpa mengambil
langkah berjaga-jaga khas.

Sebagai contoh, jika timbunan bermula pada alamat mutlak 0x80000000 dan tumbuh ke bawah,
anda boleh menggunakan bendera -fstack-limit-symbol=__stack_limit dan
-Wl,--defsym,__stack_limit=0x7ffe0000 untuk menguatkuasakan had tindanan sebanyak 128KB. Perhatikan bahawa
ini mungkin hanya berfungsi dengan pemaut GNU.

-fsplit-stack
Hasilkan kod untuk membelah tindanan secara automatik sebelum ia melimpah. Yang terhasil
program mempunyai timbunan tidak bersebelahan yang hanya boleh melimpah jika program tidak dapat melakukannya
memperuntukkan apa-apa lagi ingatan. Ini paling berguna apabila menjalankan program berulir, kerana ia
tidak lagi perlu mengira saiz tindanan yang baik untuk digunakan bagi setiap benang. Ini adalah
pada masa ini hanya dilaksanakan untuk bahagian belakang i386 dan x86_64 yang menjalankan GNU/Linux.

Apabila kod disusun dengan -fsplit-stack kod panggilan disusun tanpa -fsplit-stack, di sana
mungkin tidak banyak ruang tindanan yang tersedia untuk kod yang terakhir dijalankan. Jika menyusun semua
kod, termasuk kod perpustakaan, dengan -fsplit-stack bukan pilihan, maka penghubung boleh
betulkan panggilan ini supaya kod disusun tanpa -fsplit-stack sentiasa mempunyai yang besar
timbunan. Sokongan untuk ini dilaksanakan dalam penyambung emas dalam keluaran binutil GNU
2.21 dan seterusnya.

-fleading-garis bawah
Pilihan ini dan rakan sejawatnya, -fno-terajui-garis bawah, ubah cara C secara paksa
simbol diwakili dalam fail objek. Satu kegunaan adalah untuk membantu memautkan warisan
kod pemasangan.

Amaran: yang -fleading-garis bawah suis menyebabkan GCC menjana kod yang tidak
serasi binari dengan kod yang dihasilkan tanpa suis itu. Gunakannya untuk mematuhi a
antara muka binari aplikasi bukan lalai. Tidak semua sasaran memberikan sokongan lengkap
untuk suis ini.

-ftls-model=model
Ubah model storan setempat-benang untuk digunakan. The model hujah harus menjadi salah satu daripada
"global-dynamic", "local-dynamic", "initial-exec" atau "local-exec".

Lalai tanpa -fpic ialah "initial-exec"; dengan -fpic lalai adalah
"global-dinamik".

-kebolehlihatan=lalai|dalaman|tersembunyi|dilindungi
Tetapkan keterlihatan simbol imej ELF lalai kepada pilihan yang ditentukan---semua simbol akan
ditandakan dengan ini melainkan ditindih dalam kod. Menggunakan ciri ini boleh sangat
meningkatkan dengan ketara masa pemautan dan muatkan perpustakaan objek kongsi, menghasilkan lebih banyak
kod yang dioptimumkan, menyediakan eksport API yang hampir sempurna dan mengelakkan pertembungan simbol. Ia adalah
kuat mengesyorkan agar anda menggunakan ini dalam mana-mana objek kongsi yang anda edarkan.

Walaupun tatanama, "lalai" sentiasa bermaksud awam; iaitu, tersedia untuk dipautkan
terhadap dari luar objek yang dikongsi. "dilindungi" dan "dalaman" agak tidak berguna
dalam penggunaan dunia nyata jadi satu-satunya pilihan lain yang biasa digunakan akan "tersembunyi". The
lalai jika -kebolehlihatan tidak dinyatakan adalah "lalai", iaitu, buat setiap simbol
awam---ini menyebabkan tingkah laku yang sama seperti versi GCC sebelumnya.

Penjelasan yang baik tentang faedah yang ditawarkan dengan memastikan simbol ELF mempunyai betul
keterlihatan diberikan oleh "Cara Menulis Pustaka Dikongsi" oleh Ulrich Drepper (yang boleh
ditemui dihttp://people.redhat.com/~drepper/>)---namun penyelesaian yang unggul dibuat
mungkin dengan pilihan ini untuk menandakan perkara yang tersembunyi apabila lalai adalah umum adalah untuk membuat
lalai tersembunyi dan tandakan perkara awam. Ini adalah norma dengan DLL pada Windows dan
dengan -fvisibility=tersembunyi dan "__attribute__ ((visibility("default")))" bukannya
"__declspec(dllexport)" anda mendapat semantik yang hampir sama dengan sintaks yang sama.
Ini adalah rahmat yang besar kepada mereka yang bekerja dengan projek merentas platform.

Bagi mereka yang menambah sokongan keterlihatan pada kod sedia ada, anda mungkin dapati #pragma GCC
penglihatan penggunaan. Ini berfungsi dengan anda melampirkan pengisytiharan yang anda ingin tetapkan
keterlihatan untuk dengan (contohnya) #pragma GCC penglihatan tolak (tersembunyi) dan #pragma GCC
penglihatan pop. Perlu diingat bahawa keterlihatan simbol harus dilihat as sebahagian of yang
API antara muka kontrak dan dengan itu semua kod baharu hendaklah sentiasa menyatakan keterlihatan apabila ia
bukan lalai; iaitu, pengisytiharan hanya untuk kegunaan dalam DSO tempatan sepatutnya sentiasa
ditandakan secara eksplisit sebagai tersembunyi untuk mengelakkan overhed arahan PLT---membuat ini
sangat jelas juga membantu kebolehbacaan dan dokumentasi diri kod. Perhatikan bahawa
disebabkan keperluan spesifikasi ISO C++, operator baharu dan operator perlu memadam
sentiasa keterlihatan lalai.

Ambil perhatian bahawa pengepala dari luar projek anda, khususnya pengepala sistem dan
pengepala daripada mana-mana pustaka lain yang anda gunakan, mungkin tidak menjangkakan untuk dikompilasi
keterlihatan selain daripada lalai. Anda mungkin perlu menyatakan dengan jelas #pragma GCC
penglihatan tolak (lalai) sebelum memasukkan mana-mana tajuk sedemikian.

luar pengisytiharan tidak terjejas oleh -kebolehlihatan, jadi banyak kod boleh
disusun semula dengan -fvisibility=tersembunyi tanpa pengubahsuaian. Walau bagaimanapun, ini bermakna bahawa
panggilan ke luar fungsi tanpa keterlihatan eksplisit akan menggunakan PLT, jadi lebih banyak lagi
berkesan untuk digunakan __atribut ((keterlihatan)) dan / atau #pragma GCC penglihatan untuk memberitahu
penyusun yang luar pengisytiharan harus dianggap sebagai tersembunyi.

Perhatikan bahawa -kebolehlihatan tidak menjejaskan entiti kaitan C++ yang tidak jelas. Ini bermakna bahawa, untuk
contoh, kelas pengecualian yang akan dilemparkan antara DSO mestilah secara eksplisit
ditandakan dengan keterlihatan lalai supaya type_info nod akan disatukan antara
DSO.

Gambaran keseluruhan teknik ini, faedahnya dan cara menggunakannya ada di
<http://gcc.gnu.org/wiki/Visibility>.

-fstrict-volatile-bitfields
Pilihan ini harus digunakan jika akses kepada medan bit yang tidak menentu (atau struktur lain
medan, walaupun pengkompil biasanya menghormati jenis tersebut) harus menggunakan satu
akses lebar jenis medan, sejajar dengan penjajaran semula jadi jika boleh.
Sebagai contoh, sasaran dengan daftar persisian dipetakan memori mungkin memerlukan semua itu
akses menjadi 16 bit lebar; dengan bendera ini pengguna boleh mengisytiharkan semua bit persisian-
medan sebagai "pendek tidak ditandatangani" (dengan andaian pendek ialah 16 bit pada sasaran ini) untuk memaksa GCC
untuk menggunakan akses 16-bit dan bukannya, mungkin, akses 32-bit yang lebih cekap.

Jika pilihan ini dilumpuhkan, pengkompil akan menggunakan arahan yang paling cekap. Dalam
contoh sebelumnya, itu mungkin arahan beban 32-bit, walaupun itu akan berlaku
akses bait yang tidak mengandungi mana-mana bahagian medan bit, atau dipetakan memori
daftar yang tidak berkaitan dengan yang sedang dikemas kini.

Jika sasaran memerlukan penjajaran yang ketat, dan penghormatan jenis medan akan diperlukan
melanggar penjajaran ini, amaran dikeluarkan. Jika medan mempunyai atribut "dibungkus",
akses dilakukan tanpa menghormati jenis medan. Jika bidang tidak mempunyai
atribut "packed", akses dilakukan mengikut jenis medan. Dalam kedua-dua kes, GCC
menganggap bahawa pengguna mengetahui sesuatu tentang perkakasan sasaran yang tidak diketahuinya.

Nilai lalai pilihan ini ditentukan oleh antara muka binari aplikasi untuk
pemproses sasaran.

ALAM


Bahagian ini menerangkan beberapa pembolehubah persekitaran yang mempengaruhi cara GCC beroperasi. Beberapa
daripadanya berfungsi dengan menentukan direktori atau awalan untuk digunakan semasa mencari pelbagai jenis
daripada fail. Sesetengahnya digunakan untuk menentukan aspek lain persekitaran kompilasi.

Ambil perhatian bahawa anda juga boleh menentukan tempat untuk mencari menggunakan pilihan seperti -B, -I dan -L.
Ini mengambil keutamaan daripada tempat yang ditentukan menggunakan pembolehubah persekitaran, yang seterusnya
mengambil keutamaan daripada yang ditentukan oleh konfigurasi GCC.

BAHASA
LC_CTYPE
LC_MESSAGES
LC_ALL
Pembolehubah persekitaran ini mengawal cara GCC menggunakan maklumat penyetempatan
yang membolehkan GCC bekerjasama dengan konvensyen kebangsaan yang berbeza. GCC memeriksa setempat
kategori LC_CTYPE dan LC_MESSAGES jika ia telah dikonfigurasikan untuk berbuat demikian. Tempatan ini
kategori boleh ditetapkan kepada sebarang nilai yang disokong oleh pemasangan anda. Nilai biasa ialah
en_GB.UTF-8 untuk bahasa Inggeris di United Kingdom yang dikodkan dalam UTF-8.

. LC_CTYPE pembolehubah persekitaran menentukan klasifikasi aksara. GCC menggunakannya untuk
tentukan sempadan aksara dalam rentetan; ini diperlukan untuk beberapa bait
pengekodan yang mengandungi aksara petikan dan melarikan diri yang sebaliknya akan ditafsirkan
sebagai hujung rentetan atau melarikan diri.

. LC_MESSAGES pembolehubah persekitaran menentukan bahasa untuk digunakan dalam diagnostik
mesej.

Jika LC_ALL pembolehubah persekitaran ditetapkan, ia mengatasi nilai LC_CTYPE dan
LC_MESSAGES; jika tidak, LC_CTYPE dan LC_MESSAGES lalai kepada nilai BAHASA
pembolehubah persekitaran. Jika tiada pembolehubah ini ditetapkan, GCC lalai kepada tradisional
C tingkah laku Inggeris.

TMPDIR
If TMPDIR ditetapkan, ia menentukan direktori untuk digunakan untuk fail sementara. kegunaan GCC
fail sementara untuk menyimpan output satu peringkat penyusunan yang akan digunakan sebagai
input ke peringkat seterusnya: contohnya, output prapemproses, iaitu
input kepada pengkompil yang betul.

GCC_COMPARE_DEBUG
Menetapkan GCC_COMPARE_DEBUG hampir sama dengan lulus -fcompare-debug kepada
pemacu penyusun. Lihat dokumentasi pilihan ini untuk butiran lanjut.

GCC_EXEC_PREFIX
If GCC_EXEC_PREFIX ditetapkan, ia menentukan awalan untuk digunakan dalam nama
subprogram yang dilaksanakan oleh pengkompil. Tiada garis miring ditambahkan apabila awalan ini digabungkan
dengan nama subprogram, tetapi anda boleh menentukan awalan yang berakhir dengan garis miring jika
anda mahu.

If GCC_EXEC_PREFIX tidak ditetapkan, GCC akan cuba memikirkan awalan yang sesuai untuk
gunakan berdasarkan nama laluan yang digunakan.

Jika GCC tidak dapat mencari subprogram menggunakan awalan yang ditentukan, ia cuba mencari dalam
tempat biasa untuk subprogram.

Nilai lalai bagi GCC_EXEC_PREFIX is awalan/lib/gcc/ di mana awalan ialah awalan kepada
pengkompil yang dipasang. Dalam banyak kes awalan ialah nilai "awalan" apabila anda menjalankan
mengkonfigurasi skrip.

Awalan lain yang ditentukan dengan -B diutamakan daripada awalan ini.

Awalan ini juga digunakan untuk mencari fail seperti crt0.o yang digunakan untuk menghubungkan.

Selain itu, awalan digunakan dengan cara yang luar biasa dalam mencari direktori untuk dicari
untuk fail pengepala. Untuk setiap direktori standard yang namanya biasanya bermula
dengan /usr/local/lib/gcc (lebih tepat lagi, dengan nilai GCC_INCLUDE_DIR), GCC cuba
menggantikan yang bermula dengan awalan yang ditentukan untuk menghasilkan direktori ganti
nama. Justeru, dengan -Bfoo/, GCC akan mencari foo/bar di mana ia biasanya akan mencari
/usr/local/lib/bar. Direktori alternatif ini dicari dahulu; piawaian
direktori datang seterusnya. Jika direktori standard bermula dengan konfigurasi awalan kemudian
nilai awalan digantikan oleh GCC_EXEC_PREFIX apabila mencari fail pengepala.

COMPILER_PATH
Nilai COMPILER_PATH ialah senarai direktori yang dipisahkan dengan kolon, sama seperti PATH.
GCC mencuba direktori yang dinyatakan semasa mencari subprogram, jika tidak
cari subprogram yang menggunakan GCC_EXEC_PREFIX.

LIBRARY_PATH
Nilai LIBRARY_PATH ialah senarai direktori yang dipisahkan dengan kolon, sama seperti PATH.
Apabila dikonfigurasikan sebagai pengkompil asli, GCC mencuba direktori yang ditentukan apabila
mencari fail pemaut khas, jika ia tidak menemuinya menggunakan GCC_EXEC_PREFIX.
Memautkan menggunakan GCC juga menggunakan direktori ini apabila mencari perpustakaan biasa
bagi -l pilihan (tetapi direktori ditentukan dengan -L datang dulu).

BAHASA
Pembolehubah ini digunakan untuk menghantar maklumat tempat kepada pengkompil. Satu cara di mana
maklumat ini digunakan adalah untuk menentukan set aksara yang akan digunakan apabila aksara
literal, literal rentetan dan komen dihuraikan dalam C dan C++. Apabila pengkompil adalah
dikonfigurasikan untuk membenarkan aksara multibait, nilai berikut untuk BAHASA adalah
dikenali:

C-JIS
Mengenali aksara JIS.

C-SJIS
Mengenali aksara SJIS.

C-EUCJP
Kenali aksara EUCJP.

If BAHASA tidak ditakrifkan, atau jika ia mempunyai beberapa nilai lain, maka pengkompil akan menggunakan
mlen dan mbtowc seperti yang ditakrifkan oleh tempat lalai untuk mengenali dan menterjemah multibait
watak-watak.

Beberapa pembolehubah persekitaran tambahan mempengaruhi kelakuan prapemproses.

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
Nilai setiap pembolehubah ialah senarai direktori yang dipisahkan oleh aksara khas, banyak
seperti PATH, untuk mencari fail pengepala. Watak istimewa,
"PATH_SEPARATOR", bergantung kepada sasaran dan ditentukan pada masa binaan GCC. Untuk Microsoft
Sasaran berasaskan Windows ia adalah koma bertitik, dan untuk hampir semua sasaran lain ia adalah a
usus besar.

CPATH menentukan senarai direktori untuk dicari seolah-olah ditentukan dengan -I, Tetapi
selepas mana-mana laluan yang diberikan dengan -I pilihan pada baris arahan. Pembolehubah persekitaran ini
digunakan tanpa mengira bahasa yang sedang dipraproses.

Pembolehubah persekitaran yang selebihnya digunakan hanya apabila pramemproses yang tertentu
bahasa yang ditunjukkan. Setiap satu menentukan senarai direktori yang hendak dicari seolah-olah
ditentukan dengan -isistem, tetapi selepas mana-mana laluan yang diberikan dengan -isistem pilihan pada
baris perintah.

Dalam semua pembolehubah ini, elemen kosong mengarahkan pengkompil untuk mencari semasanya
direktori kerja. Elemen kosong boleh muncul pada permulaan atau penghujung laluan. Untuk
contoh, jika nilai CPATH ialah ":/special/include", yang mempunyai kesan yang sama seperti
-Saya. -Saya/khas/termasuk.

DEPENDENCE_OUTPUT
Jika pembolehubah ini ditetapkan, nilainya menentukan cara untuk mengeluarkan kebergantungan untuk berasaskan Make
pada fail pengepala bukan sistem yang diproses oleh pengkompil. Fail pengepala sistem ialah
diabaikan dalam keluaran kebergantungan.

Nilai DEPENDENCE_OUTPUT boleh menjadi hanya nama fail, dalam hal ini peraturan Make
ditulis pada fail itu, meneka nama sasaran daripada nama fail sumber. Atau
nilai boleh mempunyai bentuk fail sasaran, dalam hal ini peraturan ditulis untuk difailkan fail
menggunakan sasaran sebagai nama sasaran.

Dalam erti kata lain, pembolehubah persekitaran ini bersamaan dengan menggabungkan pilihan -MM
dan -MF, dengan pilihan -MT tukar juga.

SUNPRO_DEPENDENCY
Pembolehubah ini adalah sama seperti DEPENDENCE_OUTPUT (lihat di atas), kecuali sistem itu
fail pengepala tidak diabaikan, jadi ia membayangkan -M daripada -MM. Walau bagaimanapun
pergantungan pada fail input utama ditinggalkan.

Gunakan g++-4.7 dalam talian menggunakan perkhidmatan onworks.net


Ad


Ad