İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

g++-4.7 - Bulutta Çevrimiçi

Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden OnWorks ücretsiz barındırma sağlayıcısında g++-4.7 çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen g++-4.7 komutudur.

Program:

ADI


gcc - GNU projesi C ve C++ derleyicisi

SİNOPSİS


[-c|-S|-E] [-std=standart]
[-g] [-pg] [-Oseviye]
[-Wuyarmak...] [- bilgiçlik]
[-Idir...] [-Ldir...]
[-Dmakro[=tanım]...] [-Umakro]
[-fseçenek...] [-mmakine seçeneği...]
[-o dış dosya] [@dosya] dosyada...

Burada yalnızca en kullanışlı seçenekler listelenmiştir; geri kalanı için aşağıya bakın. g ++ kabul eder
çoğunlukla aynı seçenekler gcc.

TANIM


GCC'yi çağırdığınızda, normalde ön işleme, derleme, derleme ve bağlama işlemlerini yapar.
"Genel seçenekler", bu süreci ara bir aşamada durdurmanıza izin verir. İçin
örnek -c seçenek, bağlayıcıyı çalıştırmamayı söylüyor. Sonra çıktı nesneden oluşur
derleyici tarafından dosya çıktısı.

Diğer seçenekler, işlemenin bir aşamasına geçirilir. Bazı seçenekler kontrol
önişlemci ve diğerleri derleyicinin kendisi. Yine de diğer seçenekler montajcıyı kontrol eder ve
bağlayıcı; bunların çoğu burada belgelenmemiştir, çünkü bunlardan herhangi birini nadiren kullanmanız gerekir.

GCC ile kullanabileceğiniz komut satırı seçeneklerinin çoğu C programları için kullanışlıdır; ne zaman
bir seçenek yalnızca başka bir dilde (genellikle C++) kullanışlıdır, açıklama öyle diyor
açıkça. Belirli bir seçeneğin açıklaması bir kaynaktan bahsetmiyorsa
dil, bu seçeneği desteklenen tüm dillerde kullanabilirsiniz.

The gcc program, seçenekleri ve dosya adlarını işlenen olarak kabul eder. Birçok seçeneğin çoklu
harf isimleri; bu nedenle birden fazla tek harfli seçenek değil gruplandırılabilir: -dv olan çok
farklıdır -d -v.

Seçenekleri ve diğer argümanları karıştırabilirsiniz. Çoğunlukla, kullandığınız sipariş
Önemli olmak. Aynı türden birkaç seçeneği kullandığınızda sıra önemlidir; örneğin, eğer
sen belirt -L birden fazla, dizinler belirtilen sırada aranır. Ayrıca,
yerleştirilmesi -l seçenek önemlidir.

Birçok seçeneğin ile başlayan uzun adları vardır. -f veya -W---Örneğin,
-fmove-loop-değişmezleri, -W biçimi ve bunun gibi. Bunların çoğu hem olumlu hem de olumsuz
formlar; olumsuz biçimi -ffoo olurdu -fno-foo. Bu kılavuz, yalnızca birini belgelemektedir.
bu iki form, hangisi varsayılan değilse.

SEÇENEKLER


seçenek Özet
İşte türe göre gruplandırılmış tüm seçeneklerin bir özeti. Açıklamalar aşağıdadır
bölümleri.

Genel Opsiyonlar
-c -S -E -o dosya -kanonik olmayan önekler -boru -geçiş-çıkış-kodları -x dil -v
-### --yardım et[=sınıf[, ...]] --hedef-yardım --versiyon -sarmalayıcı @dosya -feklenti=dosya
-fplugin-arg-isim=arg -fdump-ada-spec[-ince] -fdump-go-spec=dosya

C Dil Opsiyonlar
-ansi -std=standart -fgnu89-satır içi -yardımcı bilgi Dosya
-nadas-parametresiz-variadik-fonksiyonlar -fno-asm -fno-yerleşik -fno-yerleşik-işlev
-Fhosted -bağımsız -fopenmp -fms-uzantıları -fplan9-uzantıları -trigraflar
-tümleşik olmayan-cpp -geleneksel -geleneksel-cpp -nadas-tek-hassasiyet
-fcond-uyumsuzluğu -keten-vektör-dönüşümleri -fsigned-bit alanları -fsigned-char
-funsigned-bit alanları -funsigned-char

C + + Dil Opsiyonlar
-fabi-sürüm=n -fno-erişim-kontrolü -fcheck-yeni -fconserve-alanı
-fconstexpr-derinlik=n -arkadaş-enjeksiyon -fno-elide-yapıcılar -fno-enforce-eh-özellikleri
-ffor-kapsam -fno-kapsam için -fno-gnu-anahtar kelimeler -fno-örtük-şablonlar
-fno-implicit-inline-şablonları -fno-uygulama-satır içi -fms-uzantıları
-fno-nonansi-yerleşikler -fnothrow-opt -fno-operatör-adları -fno-isteğe bağlı-diags
-fmüsamahakar -fno-güzel-şablonlar -frepo -fno-rtti -fstats -fşablon derinliği=n
-fno-threadsafe-statik -sigorta-cxa-atexit -fno-zayıf -nostdinc++ -fno-varsayılan-satır içi
-fvisibility-satır içi-gizli -fvisibility-ms-uyumluluğu -Wabi -Wconversion-null
-Wctor-dtor-gizlilik -Wdelete-sanal olmayan-dtor - Daralma -Wnohariç
-Wnon-sanal-dtor -İhracatçı -Weffc++ -Wstrict-null-nöbetçi
-Wno-şablon olmayan-arkadaş -Wold tarzı oyuncular -Woverloaded-sanal -Wno-pmf-dönüşümleri
-Wsign-promosyon

Objective-C ve Objective-C ++ Dil Opsiyonlar
-fconstant-string-sınıfı=sınıf adı -fgnu-çalışma zamanı -fnext-çalışma zamanı -fno-nil-alıcıları
-fobjc-abi-sürüm=n -fobjc-call-cxx-cdtor'lar -fobjc-doğrudan-gönderme -fobjc-istisnalar
-fobjc-gc -fobjc-nilcheck -fobjc-std=objc1 -yersiz-objc-sınıfları -fzero-bağlantı
-gen-bildirimleri -Wata-kesişme -Wno-protokol -Wselektör -Wstrict-seçici-eşleştirme
-Wundeclared-selektör

Dil Bağımsız Opsiyonlar
-fmessage-uzunluğu=n -fdiagnostics-göster-konum=[bir Zamanlar|her hat]
-fno-diagnostics-show-seçeneği

uyarı Opsiyonlar
-fsyntax-yalnızca -fmax-hataları=n - bilgiçlik -pedantik-hatalar -w -Ekstra -Duvar
-Waddress -Waggregate-dönüş -Warray sınırları -Wno-özellikleri
-Wno-yerleşik-makro-yeniden tanımlanmış -Wc++-uyumlu -Wc++11-uyumluluk -Wcast hizalama -Wcast-kaliteli
-Wchar-abonelikleri -Yıkılmış -Wyorum -Wdönüşüm -Wkapsam-uyumsuzluğu -Wno-cpp
-Wno-kullanımdan kaldırıldı -Wno-kullanımdan kaldırılmış-bildirimler -Wdevre dışı-optimizasyon -Wno-div-sıfır
-Wdouble-promosyon -boş-vücut -Wenum-karşılaştırma -Wno-endif-etiketleri -Whata -Hata=*
-Wfatal-hatalar -Wfloat-eşit -W biçimi -W biçimi=2 -Wno-format-nul içerir
-Wno-format-ekstra argümanlar -Wformat-değişmez -Wformat-güvenlik -Wformat-y2k
-Wframe-büyük-tan=len -Wno-free-yığın olmayan-nesne -Wjump-ıskalar-init
-Wigned-eleyenler -Wimplicit -Wimplicit-fonksiyon-bildirimi -Wimplicit-int
-Winit-öz -Kazanma hattı -Wbelki-başlatılmamış -Wno-in-to-pointer-cast
-Wno-geçersiz-offsetof -Winvalid-pch -daha büyük-tan=len -Wunsafe-loop optimizasyonları
-Wlojik-operasyon -uzun-uzun -Wana -Wbelki-başlatılmamış -Weksis-parantez
-Wmissing-alan-başlatıcıları -Wmissing-format-özniteliği -Wmissing-include-dirs
-Wno-paçalık -Wno-çok karakterli -Wonnull -Wno-taşma -Woverlength-dizeleri -Paketlenmiş
-Wpacked-bitfield-uyumluluğu -Wpadded -W parantezler -Wpedantic-ms-formatı
-Wno-pedantik-ms-formatı -Wpointer-arith -Wno-işaretçi-int-cast -Gereksiz-decls
-Wreturn-tipi -Sıra noktası -Gölge -Wsign-karşılaştırma -Wsign-dönüşüm
-Wstack-koruyucu -Wstack-kullanımı=len - Kısıtlı yumuşatma -Wstrict-aliasing=n
-Wstrict-taşma -Wstrict-taşma=n -Wöner-özellik=[saf|const|iade yok]
-W anahtarı -Wswitch-varsayılan -Wswitch-enum -Wsync-nand -Wsystem-başlıkları -Wtrambolinler
-Wtrigraflar -Wtype-limitleri -Wundef -Başlatıldı -Bilinmeyen-pragmalar -Wno-pragmalar
-Wunson eklenmiş-şamandıra-sabitleri -Kullanılmamış -Wunused-fonksiyonu -Wunused-etiket
-Wunused-yerel-tip tanımları -Wunused-parametre -Wno-kullanılmayan-sonuç -Wunused-değer
-Wunused-değişken -Wunused-but-set-parametresi -Wunused-but-set-değişkeni
-Wvariadic-makrolar -Wvektör-işlem-performans -Wvla -Wvolatile-kayıt-var
-Wwrite-dizeleri -Sıfır-boş-işaretçi-sabiti

C ve Yalnızca Objective-C uyarı Opsiyonlar
-Wbad-fonksiyon dökümü -Wmissing-beyanlar -Wmissing-parametre tipi
-Wmissing-prototipleri -Wnested-dışlar -Wold-style-deklarasyonu -Wold-tarzı-tanımı
-Wstrict-prototipler -Geleneksel -Geleneksel-dönüşüm
-Wdeclaration-sonra-ifadesi -Wişaretçi-işareti

Hata ayıklama Opsiyonlar
-dharfler -dumpspec'ler -aptal makinesi -döküm -fdbg-cnt-listesi -fdbg-cnt=karşı-
değer listesi -fdisable-ipa-geçiş_adı -fdisable-rtl-geçiş_adı -fdisable-rtl-parolalar
isim=menzil listesi -fdisable-ağacı-geçiş_adı -fdisable-ağacı-geçiş adı=menzil listesi
-fdump-noaddr -fdump-numarasız -fdump-numarasız-bağlantılar -fdump-çeviri-birimi[-n]
-fdump-sınıfı-hiyerarşisi[-n] -fdump-ipa-hepsi -fdump-ipa-cgraph -fdump-ipa-satır içi
-fdump-geçişler -fdump-istatistikleri -fdump-tree-hepsi -fdump-tree-orijinal[-n]
-fdump-tree-optimize edilmiş[-n] -fdump-ağaç-cfg -fdump-ağaç-vcg -fdump-ağaç-takma adı
-fdump-ağaç-ch -fdump-ağaç-ssa[-n] -fdump-ağaç-ön[-n] -fdump-ağaç-ccp[-n]
-fdump-ağaç-dce[-n] -fdump-ağaç-gimple[-çiğ] -fdump-ağaç-çamurluk[-n]
-fdump-ağaç-dom[-n] -fdump-ağacı-dse[-n] -fdump-ağacı-phiprop[-n] -fdump-ağaç-phiopt[-n]
-fdump-ağaç-forwprop[-n] -fdump-ağaç-kopya adı[-n] -fdump-ağacı-nrv -fdump-ağaç-vect
-fdump-ağaç-lavabo -fdump-ağacı-sra[-n] -fdump-ağaç-forwprop[-n] -fdump-ağaçsız[-n]
-fdump-ağaç-vrp[-n] -ftree-vektörleştirici-ayrıntılı=n -fdump-ağaç-storeccp[-n]
-fdump-son-insns=dosya -fcompare-hata ayıklama[=tercih] -fcompare-debug-saniye
-feliminate-cüce2-dups -feliminate-kullanılmayan-hata ayıklama türleri
-feliminate-kullanılmayan-hata ayıklama-sembolleri -femit-sınıfı-hata ayıklama-her zaman -savunabilir-tür-geçmek
-savunabilir-tür-geçmek=menzil listesi -fdebug-types-bölümü -fmem-raporu -fpre-ipa-mem-raporu
-fpost-ipa-mem-raporu -fprofile-yayları -frandom-tohum=dizi -fsched-ayrıntılı=n
-fsel-planlı-ayrıntılı -fsel-zamanlanmış-döküm-cfg -fsel-sched-pipeling-ayrıntılı -fstack-kullanımı
-ftest-kapsama -ftime-raporu -fvar-izleme -fvar-izleme-atamaları
-fvar-izleme-ödevleri-değiştirme -g -gseviye -gtoggle -gcoff -gdwarf-versiyon -ggdb
-grecord-gcc-anahtarları -gno-kayıt-gcc-anahtarları -gstab'lar -gstabs+ -gstrict-cüce
-gno-katı-cüce -gvm'ler -gxcoff -gxcoff+ -fno-birleştirme-hata ayıklama-dizeleri
-fno-cüce2-cfi-asm -fdebug-prefix-harita=eski=yeni -femit-struct-debug-baseonly
-femit-struct-debug-azaltılmış -femit-struct-debug-detaylı[=özellik listesi] -p -pg
-baskı-dosya-adı=kütüphane -print-libgcc-dosya-adı -baskı-çoklu-dizin
-baskı-çoklu kitaplık -baskı-çoklu-işletim-dizini -baskı-prog-adı=program
-baskı-arama-dir'leri -Q -print-sysroot -print-sysroot-headers-soneki -kaydet-temps
-save-temps=cwd -save-temps=nesne Zamanlı[=dosya]

Optimizasyon Opsiyonlar
-falign-fonksiyonları[=n] -falign-atlar[=n] -falign-etiketleri[=n] -falign-döngüleri[=n]
-fasosiyatif-matematik -fauto-inc-dec -fbranch-olasılıklar -fbranch-hedef-yükleme-optimize etme
-fdal-hedef-yük-optimize2 -fbtr-bb-özel -fcaller-kaydeder -fcheck-veri-deps
-fcombine-yığın ayarlamaları -fconserve-yığın -fkarşılaştır-elim -fcprop-kayıtları
-fçapraz atlama -fcse-takip-atlayışları -fcse-atlama-blokları -fcx-fortran-kuralları
-fcx-sınırlı-aralık -fdata-bölümleri -fdce -fgecikmeli-dal -fdelete-null-işaretçi-kontrolleri
-fsanallaştırma -fdse -korkuyla satır içi -fipa-sra -çok pahalı-optimizasyonlar
-ffat-lto-nesneleri -fffast-matematik -ffinite-matematik-sadece -float-mağaza
-fexcess-hassasiyet=stil -ileriye-yayılmak -ffp-kontrat=stil -fonksiyon-bölümler
-fgcse -fgcse-sonra-yeniden yükleme -fgcse-las -fgcse-lm -fgrafit-kimlik -fgcse-sm
-fif-dönüşüm -fif-dönüşüm2 -findirect-satır içi -finline-fonksiyonlar
-finline-fonksiyonlar-bir kez çağrılır -finline-limit=n -finline-küçük-fonksiyonlar -fipa-cp
-fipa-cp-klonu -fipa-matris-yeniden düzenleme -fipa-pta -fipa-profil -fipa-saf-const
-fipa-referans -fira-algoritma=algoritma -fira-bölge=bölge -fira-döngü-basıncı
-fno-ira-paylaş-kaydet yuvaları -fno-ira-share-spill-yuvaları -fira-ayrıntılı=n -beş nokta
-fkeep-satır içi-işlevler -fkeep-statik-consts -floop-blok -floop-düzleştirme
-floop-değişimi -floop-şerit-mayın -floop-paralelleştir-hepsi -flto
-flto-sıkıştırma düzeyi -flto-bölümü=alg -flto-rapor -fmerge-all-sabitleri
-fmerge-sabitleri -fmodulo-zamanlanmış -fmodulo-schedule-allow-regmoves -fmove-loop-değişmezleri
çamurluk -fmudflapir -fçamurluk -fno-dal-sayısı-reg -fno-varsayılan-satır içi
-fno-erteleme-pop -fno-işlev-cse -fno-tahmin-dal-olasılığı -fno-satır içi
-fno-matematik-errno -fno-gözetleme deliği -fno-gözetleme deliği2 -fno-zamanlanmış-ara blok -fno-zamanlanmış-spec
-fno-imzalı-sıfırlar -fno-üst düzey-yeniden sıralama -fno-trapping-matematiği
-fno-sıfır-başlatıldı-in-bss -fomit-frame-işaretçi -foptimize-kayıt-taşı
-foptimize-kardeş-çağrıları -fkısmi-satır içi -fpeel-döngüler -föngörücü-ortak
-fprefetch-loop-dizileri -fprofile-düzeltme -fprofil-dir=yol -fprofile-oluşturma
-fprofile-oluştur =yol -fprofile-kullanımı -fprofile-kullanımı=yol -fprofile-değerleri
-karşılıklı-matematik -Ücretsiz -fregmove -frename-kayıtları -freorder-blokları
-freorder-blokları-ve-bölümü -freorder-fonksiyonları -frerun-cse-sonrası döngü
-freschedule-modulo-programlanmış-döngüler -frounding-matematik -fsched2-use-superblock'lar
-fsched-basınç -fsched-spec-load -fsched-spec-load-tehlikeli
-fsched-staled-insns-dep[=n] -fsched-durmuş-insns[=n] -fsched-group-sezgisel
-fsched-kritik-yol-sezgisel -fsched-spec-insn-sezgisel -fsched-rank-sezgisel
-fsched-son-insn-sezgisel -fsched-dep-count-sezgisel -fschedule-insns
-fschedule-insns2 -fsection-ankrajlar -fseçici-zamanlama -fseçici-zamanlama2
-fsel-planlama-boru hattı -fsel-planlanmış-boru hattı-dış döngüler -fshrink-sarma
-fsignaling-Nans -fsingle-hassas-sabit -fsplit-ivs-unroller
-fsplit-geniş-türler -fstack-koruyucu -fstack-koruyucu-tümü -fstrict-aliasing
-fstrict-taşma -fthread-atlar -tracer -ftree-bit-ccp -ftree-yerleşik-çağrı-dce
-ftree-ccp -ftree-ch -fttree-coalesce-inline-vars -fttree-coalesce-vars -ftree-kopya-prop
-ftree-telif adı -ftree-dce -ftree-dominator-seçenekleri -ftree-dse -ftree-forwprop
-ağaçsız -ftree-loop-if-dönüştürme -ftree-loop-if-convert-mağazaları -ftree-döngü-im
-ftree-phiprop -ftree-loop-dağıtım -ftree-loop-dağıtım-desenleri
-ftree-döngü-ivcanon -ftree-döngü-doğrusal -ftree-döngüsü optimizasyonu -ftree-paralelleştirme-döngüleri=n
-ftree-ön -ftree-kısmi-ön -ftree-pta -ftree-reassoc -ftree-lavabo -ftree-sra
-ftree-switch-dönüşüm -ftree-tail-birleştirme -ftree-ter -ftree-vect-loop-versiyonu
-ftree-vektörize -ftree-vrp -her seferinde eğlence -funroll-all-döngüler -funroll-döngüler
-funsafe-loop optimizasyonları -funsafe-matematik-optimizasyonları -funswitch-döngüler
-fvariable-genişleme-in-roller -fvct-maliyet-modeli -fvpt -fweb -bütün-program -fwpa
-sigorta-ld=bağlantılar -sigorta-bağlayıcı-eklenti --param isim=değer -O -O0 -O1 -O2 -O3 -İşletim sistemi
-Ofast

Preprocessor Opsiyonlar
-Asoru=cevap -A-soru[=cevap] -C -dd -di -dM -dN -Dmakro[=tanım] -E -H
-dirafter dir -Dahil etmek dosya -ikrolar dosya -iprefix dosya -iwithprefix dir
-iön eki ile dir -isistem dir -imultilib dir -isysroot dir -M -MM -MF -MG
-MP -MQ -MT -nostdinc -P -fdebug-cpp -ftrack-makro-genişletme -fworking-dizini
-yeniden eşle -trigraflar -undef -Umakro -Wp,seçenek -X önişlemci seçenek

montajcı seçenek
-WA,seçenek -X birleştirici seçenek

bağlantılar Opsiyonlar
nesne-dosya-adı -lkütüphane -nostartfiles -nodefaultlib'ler -nstdlib -turta -rdinamik -s
-statik -statik-libgcc -statik-libstdc++ -paylaşılan -paylaşılan-libgcc -simgesel -T senaryo
-WI,seçenek -Xlinker seçenek -u sembol

rehber Opsiyonlar
-Bönek -Idir -iplugindir=dir -Alıntı yaparımdir -Ldir -özellikler=dosya -BEN- --sysroot=dir

makine Bağımlı Opsiyonlar
AAAArch64 Opsiyonlar -big-endian -küçük endian -mgeneral-regs-yalnızca -mcmodel=küçük
-mcmodel=küçük -mcmodel=büyük -mstrict-hizalama -momit-yaprak-çerçeve-işaretçi
-mno-omit-yaprak-çerçeve-işaretçi -mtls-lehçesi=az -mtls-lehçesi=geleneksel -mart=isim
-mcpu=isim -mtune=isim

Adapteva Epifani Opsiyonlar -mhalf-reg-dosyası -mprefer-kısa-insn-regs -mbranch-maliyet=num
-mcmove -mnops=num -msoft-cmpsf -msplit-lohi -mpost-inc -mpost-değiştir
-mstack-offset=num -mround-en yakın -mlong-çağrıları -mshort-çağrıları -msmall16 -mfp-modu=kip
-mvect-çift -max-vect-hizalama=num -msplit-vecmove-erken -m1reg-reg

ARM Opsiyonlar -mapcs-çerçevesi -mno-apcs-çerçevesi -mabi=isim -mapcs-yığın-kontrol
-mno-apcs-yığın-kontrol -mapcs-şamandıra -mno-apcs-şamandıra -mapcs-yeniden giren
-mno-apcs-yeniden giriş yapan -msched-prolog -mno-schedule-prolog -küçük endian -big-endian
-mwords-küçük-endian -mfloat-abi=isim -mfpe -mfp16-formatı=isim -mthumb-interwork
-mno-başparmak-interwork -mcpu=isim -mart=isim -mfpu=isim -myapı-boyut-sınır=n
-dönüşte çalışma -mlong-çağrıları -çok uzun aramalar -msingle-pic-base
-mno-tek resim-tabanı -mpic-kayıt=reg -mnop-eğlenceli-dll içe aktarma -mcirrus-fix-geçersiz-insns
-mno-cirrus-düzeltme-geçersiz-insns -mpoke-işlev-adı -mparmak -marm -mtpcs-çerçevesi
-mtpcs-yaprak-çerçeve -mcaller-süper-birlikte çalışma -mcallee-süper-birlikte çalışma -mtp=isim
-mtls-lehçesi=diyalekt -mword-yer değiştirmeler -mfix-korteks-m3-ldrd -unaligned-erişim
-64 bit için-mneon

AVR Opsiyonlar -mmcu=mcu -maccumulate-arg'lar -mbranch-maliyet=maliyet -mcall-prologları -nane8
-mno-kesmeler -mrelax -mshort-çağrıları -mstrict-X -mtiny-yığın

Blackfin Opsiyonlar -mcpu=cpu[-sirevizyon] -msim -momit-yaprak-çerçeve-işaretçi
-mno-omit-yaprak-çerçeve-işaretçi -mspecld-anomali -mno-specld-anomali -mcsync-anomali
-mno-csync-anomali -mlow-64k -mno-düşük64k -mstack-kontrol-l1 -orta-paylaşılan-kütüphane
-mno-id-paylaşılan-kütüphane -mshared-library-id=n -mleaf-id-paylaşılan-kütüphane
-mno-leaf-id-paylaşılan-kütüphane -msep-veri -mno-eylül-veri -mlong-çağrıları -çok uzun aramalar
-mfast-fp -minline-plt -multicore -mcorea -mcoreb -msdram -micplb

C6X Opsiyonlar -big-endian -küçük endian -mart=cpu -msim -msveri=sdata tipi

CRIS Opsiyonlar -mcpu=cpu -mart=cpu -mtune=cpu -mmax-yığın-çerçevesi=n
-melinux-yığın boyutu=n -metrax4 -metrax100 -mpdebug -mcc-init -mno-yan etkiler
-mstack-hizalama -mdata hizalama -mconst-hizalama -m32-bit -m16-bit -m8-bit
-mno-prolog-sonsöz -mno-gotplt -melf -maout -melinux -mlinux -sim -sim2
-mmul-hata-geçici çözüm -mno-mul-bug-geçici çözüm

CR16 Opsiyonlar -mmac -mcr16cplus -mcr16c -msim -nane32 -mbit-op'lar -mdata-modeli=model

Darwin Opsiyonlar -tüm_yükler -izin verilebilir_istemci -ARCH -arch_errors_fatal -arch_only
-bind_at_load Bundle -paket_yükleyici -Müşteri Adı -uyumluluk_versiyonu
-şimdiki versiyonu -dead_strip -bağımlılık-dosyası -dylib_dosyası -dylinker_install_name
-dinamik -dinamik kitaplık -dışa aktarılan_symbols_list -dosya listesi -flat_ad alanı
-force_cpusubtype_ALL -force_flat_namespace -headerpad_max_install_names -iframework
-image_base -içinde -kurulum_adı -keep_private_externs -çoklu_modül
-çarpma_tanımlı -multiply_Definition_unused -noall_load
-no_dead_strip_inits_and_terms -nofix ön bağlama -nomultidef'ler -bağlanma yok
-noseglinkedit -pagezero_size -önceden bağlamak -prebind_all_twolevel_modules -özel_paket
-read_only_relocs -sektalign -sekt nesne sembolleri -neden yük -seg1addr -mezhep oluşturmak
-sekt nesne sembolleri -sektör -segaddr -segs_read_only_addr -segs_read_write_addr
-seg_addr_tablosu -seg_addr_tablo_dosyaadı -seglinkedit -segprot -segs_read_only_addr
-segs_read_write_addr -tek_modül -statik -alt_kütüphane -alt_umbrella
-iki düzeyli_ad alanı -şemsiye -Tanımsız -exported_symbols_list
-weak_reference_mismatches -neler yüklendi -F -kusmuş -gfull -mmacosx-sürüm-min=versiyon
-mçekirdek -mon-byte-bool

Aralık Alfa Opsiyonlar -mno-fp-reg'ler -msoft-float -malpha-as -mgaz -mieee
-mieee-ile-kesin olmayan -mieee-uyumlu -mfp-trap-modu=kip -mfp-yuvarlama-modu=kip
-mtrap-hassasiyet=kip -mbuild-sabitleri -mcpu=işlemci tipi -mtune=işlemci tipi -mbwx -mmaks
-mfix -mcix -mfloat-vax -mfloat-ieee -meexplicit-relocs -msmall-veri -mlarge-veri
-msmall-metin -mlarge-metin -mbellek gecikmesi=zaman

Aralık Alfa/VMS Opsiyonlar -mvms-dönüş-kodları -mdebug-ana=önek -mmalloc64

FR30 Opsiyonlar -msmall-modeli -mno-lsim

FRV Opsiyonlar -mgpr-32 -mgpr-64 -mfpr-32 -mfpr-64 -mhard-şamandıra -msoft-float
-malloc-cc -mfixed-cc -mdword -mno-dword -mçift -mno-double -mmedya -mno-medya
-mmuladd -mno-muladd -mfdpic -minline-plt -mgprel-ro -multilib-kütüphane-pic
-mlinked-fp -mlong-çağrıları -malign-etiketler -kütüphane-resim -macc-4 -macc-8 -mpack
-mno paketi -mno-bayraklar -mcond-hareket -mno-koşul-hareket -moptimize-üye çubuğu
-mno-optimize-üye çubuğu -mscc -mno-scc -mcond-exec -mno-cond-exec -mvliw-şube
-mno-vliw-şube -mmulti-cond-yürütme -mno-çoklu-koşul-exec -mnested-cond-yürütme
-mno-iç içe-koşul-yürütme -mtomcat istatistikleri -mTLS -mtls -mcpu=cpu

GNU / Linux Opsiyonlar -mglibc -muclibc -mbiyonik -mandroid -tno-android-cc -tno-android-ld

H8 / 300 Opsiyonlar -mrelax -mh -MS -dk -nane32 -malign-300

HPPA Opsiyonlar -mart=mimari tipi -big-anahtar -mdisable-fpreg'ler
-mdisable-indeksleme -mfast-dolaylı-çağrılar -mgaz -mgnu-ld -mhp-ld
-mfixed-aralık=kayıt aralığı -mjump-in-gecikme -mlinker-opt -mlong-çağrıları
-mlong-yük deposu -mno-büyük-anahtar -mno-devre dışı-fpregs -mno-disable-indeksleme
-mno-hızlı-dolaylı-çağrılar -mno-gaz -mno-atlama-gecikme -mno-uzun-yük deposu
-mno-taşınabilir-çalışma zamanı -mno-yumuşak-şamandıra -mno-boşluk-regs -msoft-float -mpa-risc-1-0
-mpa-risc-1-1 -mpa-risc-2-0 -taşınabilir-çalışma zamanı -mprogram=işlemci tipi -mspace-regs
-msio -mwsio -munix=unix-std -nolibdld -statik -İş Parçacığı

i386 ve x86-64 Opsiyonlar -mtune=işlemci tipi -mart=işlemci tipi -mfpmath=birim -masm=diyalekt
-mno-fantezi-matematik-387 -mno-fp-ret-in-387 -msoft-float -mno-wide-çarpma -mrtd
-malign-çift -mpreferred-yığın sınırı=num -mincoming-yığın-sınır=num -mcld
-mcx16 -msahf -mmovbe -mcrc32 -mrecip -mrecip=yeğlemek -mvzerupper -mprefer-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-hizalama-stringops -minline-all-stringops
-minline-stringops-dinamik olarak -mstringop-strateji=alg -push-arg'lar
-maccumulate-giden-arglar -m128bit-uzun-çift -m96bit-uzun-çift -mregparm=num
-msseregparm -mveclibabi=tip -mvect8-ret-in-meminde -mpc32 -mpc64 -mpc80 -mstackrealign
-momit-yaprak-çerçeve-işaretçi -mno-kırmızı-bölge -mno-tls-doğrudan-seg-refs -mcmodel=kod modeli
-mabi=isim -madres-modu=kip -m32 -m64 -mx32 -mlarge-veri eşiği=num -msse2avx
-mfentry -m8bit-idiv -mavx256-bölünmüş-hizasız-yük -mavx256-bölünmüş-hizasız-mağaza

i386 ve x86-64 Windows Opsiyonlar -mkonsol -mcygwin -mno-cygwin -mdll
-mnop-eğlenceli-dll içe aktarma -mthread - cep telefonu kodu -mwin32 -mwindows -fno-set-yığın-çalıştırılabilir

IA-64 Opsiyonlar -big-endian -küçük endian -mgnu-as -mgnu-ld -mno-resim
-mvolatile-asm-durdurma -mregister-isimleri -msdata -mno-sdata -mconstant-gp -oto-resim
-mfused-deli -minline-float-bölme-min-gecikme -minline-float-bölme-maks-iş hacmi
-mno-inline-float-bölme -minline-int-bölme-min-gecikme
-minline-int-divide-maks-iş hacmi -mno-inline-int-bölme -minline-sqrt-min-gecikme
-minline-sqrt-maks-iş hacmi -mno-satır içi-sqrt -mdwarf2-asm -yıllık-durdurma bitleri
-mfixed-aralık=kayıt aralığı -mtls-boyutu=tls-boyutu -mtune=işlemci tipi -milp32 -mlp64
-msched-br-veri-belirtimi -msched-ar-veri-belirtimi -msched-kontrol-özelliği -msched-br-veri spesifikasyonu
-msched-ar-veri spesifikasyonunda -msched-in-control-spec -msched-spec-ldc
-msched-spec-kontrol-ldc -msched-tercih-veri olmayan-spec-insns
-msched-tercih-kontrol dışı-spec-insns -msched-stop-bitleri-her döngüden sonra
-msched-count-spec-in-kritik-yol -msel-schedule-kontrol etme-kontrol-özelliği
-msched-fp-mem-deps-sıfır maliyet -msched-max-memory-insns-hard-limit
-msched-max-bellek-insns=max-insn

IA-64/VMS Opsiyonlar -mvms-dönüş-kodları -mdebug-ana=önek -mmalloc64

LM32 Opsiyonlar -mbarrel-shift-etkin -mdivid-etkin -mmultiply-etkin
-msign-uzantı-etkin -müzer etkin

M32R/D Opsiyonlar -m32r2 -m32rx -m32r -mdebug -malign-döngüler -mno-align-döngüleri
-missue oranı=numara -mbranch-maliyet=numara -mmodel=kod-boyut-model-tipi -msveri=sdata-
tip -mno-flush-fonk -mflush-işlev=isim -mno-flush-trap -mflush-trap=numara -G num

M32C Opsiyonlar -mcpu=cpu -msim -memregler=numara

M680x0 Opsiyonlar -mart=kemer -mcpu=cpu -mtune=melodi -m68000 -m68020 -m68020-40
-m68020-60 -m68030 -m68040 -m68060 -mcpu32 -m5200 -m5206e -m528x -m5307 -m5407
-mcfv4e -mbit alanı -mno-bit alanı -mc68000 -mc68020 -mnobit alanı -mrtd -mno-rtd
-mdiv -mno-div -mshort -mno-kısa -mhard-şamandıra -m68881 -msoft-float -mpcrel
-malign-int -mstrict-hizalama -msep-veri -mno-eylül-veri -mshared-library-id=n
-orta-paylaşılan-kütüphane -mno-id-paylaşılan-kütüphane -mxgot -mno-xgot

MÇekirdek Opsiyonlar -mhardlit -mno-sert ışıklı -mdiv -mno-div -mrelax-derhal
-mno-rahatla-hemen -mwide-bit alanları -mno-geniş-bit alanları -m4byte-işlevleri
-mno-4byte-işlevleri -mcallgraph-veri -mno-callgraph-veri -mslow-bayt
-mno-yavaş bayt -mno-lsim -küçük endian -big-endian -m210 -m340
-mstack-artış

MEP Opsiyonlar -mabsdiff -alışveriş merkezi seçenekleri -ortalama -mtabanlı=n -mbittoplar -mc=n -mclip
-mconfig=isim -mkop -mcop32 -mcop64 -mivc2 -mdc -mdiv -meb -mel -mio-uçucu -ml
-mleadz -mm -mminmaks -mult -mno-ops -tekrar -MS -msatur -msdram -msim -msimnovec
-mtf -miny=n

MikroBlaze Opsiyonlar -msoft-float -mhard-şamandıra -msmall-bölücüler -mcpu=cpu -mmmcpy
-mxl-yumuşak-mul -mxl-yumuşak-div -mxl-varil-shift -mxl-desen-karşılaştır -mxl-yığın-kontrol
-mxl-gp-opt -mno-clearbss -mxl-çarpma-yüksek -mxl-float-dönüştürme -mxl-float-sqrt
-mxl-modu-uygulama modeli

MIPS Opsiyonlar -EL -EB -mart=kemer -mtune=kemer -mips1 -mips2 -mips3 -mips4
-mips32 -mips32r2 -mips64 -mips64r2 -mips16 -mno-mips16 -mflip-mips16
-minterlink-mips16 -mno-interlink-mips16 -mabi=abi -mabicalls -mno-abicals
-mshared -mno-paylaşımlı -mplt -mno-plt -mxgot -mno-xgot -mgp32 -mgp64 -mfp32
-mfp64 -mhard-şamandıra -msoft-float -msingle-şamandıra -mdouble-şamandıra -mdsp -mno-dsp
-mdspr2 -mno-dspr2 -mfpu=fpu tipi -msmartmips -mno-smartmips -bağlı-bekar
-mno-çift-tek -mdmx -mno-mdmx -mips3d -mno-mips3d -mmt -mno-mt -mlsc
-mno-llsc -mlong64 -mlong32 -msym32 -mno-sym32 -Gnum -mlocal-sdata
-mno-yerel-sdata -mextern-sdata -mno-harici-sdata -mgpopt -mno-gopt -üyeli-veri
-mno-gömülü-veri -rodata-muninit-const -mno-unit-const-in-rodata
-mcode-okunabilir=ayar -msplit-adresleri -mno-split-adresler -meexplicit-relocs
-mno-açık-yer değiştirmeler -mcheck-sıfır bölümü -mno-check-sıfır-bölme -mdivid-traps
-mdivid-breaks -mmmcpy -mno-memcpy -mlong-çağrıları -çok uzun aramalar -mad -deli
-mfused-deli -mno-kaynaşmış-madd -nocpp -mfix-24k -mno-düzeltme-24k -mfix-r4000
-mno-düzeltme-r4000 -mfix-r4400 -mno-düzeltme-r4400 -mfix-r10000 -mno-düzeltme-r10000 -mfix-vr4120
-mno-düzeltme-vr4120 -mfix-vr4130 -mno-düzeltme-vr4130 -mfix-sb1 -mno-düzeltme-sb1
-mflush-işlev=func -mno-flush-fonk -mbranch-maliyet=num -mbranch-muhtemelen
-mno-dal-muhtemel -mfp-istisnaları -mno-fp-istisnaları -mvr4130 hizalama -mno-vr4130-hizalama
-msynci -mno-synci -mrelax-resimli aramalar -mno-rahatla-resimli aramalar -mmcount-ra-adresi

MMIX Opsiyonlar -mlibfuncs -mno-libfuncs -mepsilon -mno-epsilon -mabi=gnu
-mabi=mmixware -mzero-uzatma -mknuthdiv -mtoplevel-semboller -melf -mbranch-tahmin
-mno-dal-tahmin -mbase-adresleri -mno-taban-adresleri -msingle-çıkış
-mno-tek çıkış

MN10300 Opsiyonlar -mult-bug -mno-çoklu-hata -mno-am33 -mam33 -mam33-2 -mam34 -mtune=İşlemci-
tip -mreturn-işaretçisi-on-d0 -mno-crt0 -mrelax -miliw -msetlb

KAP-11 Opsiyonlar -mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10 -mbkopya
-mbcopy-yerleşik -nane32 -mno-int16 -nane16 -mno-int32 -mfloat32 -mno-float64
-mfloat64 -mno-float32 -mabşi -mno-abshi -mbranch-pahalı -mbranch-ucuz
-munix-asm -mdec-asm

picoçip Opsiyonlar -mae=ae_type -mvliw-lookahead=N -msymbol-adres
-mno-verimsiz-uyarılar

PowerPC Opsiyonlar RS/6000 ve PowerPC Seçeneklerine bakın.

RL78 Opsiyonlar -msim -mmul=yok -mmul=g13 -mmul=rl78

RS / 6000 ve PowerPC Opsiyonlar -mcpu=işlemci tipi -mtune=işlemci tipi -mcmodel=kod modeli -güç
-mno-güç -mpower2 -mno-güç2 -mpowerpc -mpowerpc64 -mno-powerpc -maltivec
-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-zor-dfp
-mnew-anımsatıcılar -küf-anımsatıcılar -mfull-toc -minimal-toc -mno-fp-in-toc
-mno-toplam-toplam -m64 -m32 -mxl-uyumluluğu -mno-xl-uyumluluğu -mpe -malign-güç
-malign-doğal -msoft-float -mhard-şamandıra -mçoklu -mno-çoklu -msingle-şamandıra
-mdouble-şamandıra -msimple-fpu -mstring -mno-dizesi -güncelleme -mno-güncelleme
-mavoid-endeksli-adresler -mno-avoid-endeksli-adresler -mfused-deli -mno-kaynaşmış-madd
-mbit hizalama -mno-bit hizalama -mstrict-hizalama -mno-katı hizalama - yeniden yerleştirilebilir
-mno-taşınabilir -mrelocable-lib -mno-yeniden konumlandırılabilir-lib -mtoc -mno-toc -biraz
-küçük endian -büyük -big-endian -mdinamik-resimsiz -maltivec -mswdiv
-msingle-pic-base -mprioritize-kısıtlı-insns=öncelik
-msched-maliyetli-dep=bağımlılık_tipi -minsert-schedule-nops=plan -mcall-sysv
-mcall-netbsd -maix-yapı-dönüş -msvr4-struct-dönüş -mabi=abi tipi -msecure-plt
-mbss-plt -mblock-hareket-inline-limit=num -misel -mno-isel -misel=evet -misel=hayır -mspe
-mno-spe -mspe=evet -mspe=hayır - engelli -mgen-hücre-mikrokod -mwarn-hücre-mikrokod
-mvrsave -mno-vrsave -mmulhw -mno-mulhw -mdlmzb -mno-dlmzb -mfloat-gprs=evet
-mfloat-gprs=hayır -mfloat-gprs=tek -mfloat-gprs=çift -mprototip -mno-prototip
-msim -mmvme -deli -sarı bıçak -üye -msdata -msveri=yeğlemek -mvxworks -G num
-pthread -mrecip -mrecip=yeğlemek -mno-reçete -mrecip-hassas -mno-recip-hassas
-mveclibabi=tip -mfriz -kıvırcık -mpointers-to-iç içe-işlevler
-mno-işaretçiler-iç içe-işlevler -msave-toc-dolaylı -mno-save-toc-dolaylı

RX Opsiyonlar -m64bit-çiftler -m32bit-çiftler -fpu -nofpu -mcpu= -big-endian-veri
-mlittle-endian-veri -msmall-veri -msim -mno-sim -mas100-sözdizimi -mno-as100-sözdizimi
-mrelax -mmax-sabit-boyut= -nane-kayıt= -mpid -msave-acc-in-kesmeler

S / 390 ve zSerisi Opsiyonlar -mtune=işlemci tipi -mart=işlemci tipi -mhard-şamandıra -msoft-float
-mhard-dfp -mno-zor-dfp -mlong-çift-64 -mlong-çift-128 -mbackchain
-mno-arka zincir -mpacked-yığın -mno-paketlenmiş-yığın -msmall-exec -mno-küçük-yürütme
-mmvcle -mno-mvcle -m64 -m31 -mdebug -mno-hata ayıklama -mesa -mzarch -mtpf-izi
-mno-tpf-izleme -mfused-deli -mno-kaynaşmış-madd -mwarn-çerçeve boyutu -mwarn-dinamik yığın
-mstack boyutu -mstack-koruma

Puan Opsiyonlar -meb -mel -mnhwloop - muls -mmac -mscore5 -mscore5u -mscore7 -mscore7d

SH Opsiyonlar -m1 -m2 -m2e -m2a-nofpu -m2a-tek-sadece -m2a-tek -m2a -m3 -m3e
-m4-nofpu -m4-yalnızca -m4-tek -m4 -m4a-nofpu -m4a-tek-sadece -m4a-tek
-m4a -m4al -m5-64medya -m5-64media-nofpu -m5-32medya -m5-32media-nofpu -m5-kompakt
-m5-kompakt-nofpu -mb -ml -mdalign -mrelax -bigtable -mfmovd -mhitachi -mrenesas
-mno-renesas -mnomacsave -mieee -mno-ieee -mbittoplar -missize -minline-ic_invalidate
-mpadstruct -mspace -mprefergot -müzer modu -çok maliyet=numara -mdiv=strateji
-mdivsi3_libfunc=isim -mfixed-aralık=kayıt aralığı -madjust-aç
-mindexed-adresleme -mgettrcost=numara -mpt-sabit -maccumulate-giden-arglar
-minvalid-semboller -msoft-atomik -mbranch-maliyet=num -mcbranchdi -mcmpeqdi -mfused-deli
-impretend-cmove

Solaris 2 Opsiyonlar -mimpur-metin -mno-saf olmayan-metin -pthread'ler -pthread

SPARC Opsiyonlar -mcpu=işlemci tipi -mtune=işlemci tipi -mcmodel=kod modeli -mbellek-modeli=insan toplulukları tarafından
model -m32 -m64 -mapp-reg'ler -mno-app-regs -mfaster-yapıları -mno-daha hızlı-yapılar
-mflat -mno-düz -mfpu -mno-fpu -mhard-şamandıra -msoft-float -mhard-dörtlü-şamandıra
-msoft-dörtlü-şamandıra -mstack-bias -mno-yığın önyargısı -düzensiz-çiftler
-mno-hizasız-çiftler -mv8plus -mno-v8plus -mvis -mno-vis -mvis2 -mno-vis2
-mvis3 -mno-vis3 -mfmaf -mno-fmaf -mpopc -mno-popc -mfix-at697f

SPU Opsiyonlar -mwarn-reloc -merror-reloc -msafe-dma -munsafe-dma -mbranch-ipuçları
-msmall-mem -mlarge-mem -mstdmain -mfixed-aralık=kayıt aralığı -mea32 -mea64
-madress-space-dönüşüm -mno-adres-alanı-dönüşüm -mcache-boyutu=önbellek boyutu
-matomik-güncellemeler -mno-atomik-güncellemeler

sistem V Opsiyonlar -Qy -Qn -YP,yolları -Ym,dir

KARO-Gx Opsiyonlar -mcpu=cpu -m32 -m64

TILEPro Opsiyonlar -mcpu=cpu -m32

V850 Opsiyonlar -mlong-çağrıları -çok uzun aramalar -mep -mno-ep -mprolog-fonksiyonu
-mno-prolog-fonksiyonu -mspace -mtda=n -msda=n -mzda=n -mapp-reg'ler -mno-app-regs
-mdisable-çağrı -mno-devre dışı-çağrı -mv850e2v3 -mv850e2 -mv850e1 -mv850es -mv850e
-mv850 -big-anahtar

VAX Opsiyonlar -mg -mgnu -munix

VxWorks Opsiyonlar -mrtp -statik olmayan -Bstatik -Bdinamik -Xbind-tembel -Xbind-şimdi

x86-64 Opsiyonlar i386 ve x86-64 Seçeneklerine bakın.

Xstormy16 Opsiyonlar -msim

Xtensa Opsiyonlar -mconst16 -mno-const16 -mfused-deli -mno-kaynaşmış-madd -mforce-no-resim
-mserialize-uçucu -mno-seri hale getir-uçucu -mtext-bölüm değişmezleri
-mno-metin-bölümü-harf değerleri -mtarget-hizalama -mno-hedef hizalama -mlongcall'lar
-mno-uzun aramalar

zSerisi Opsiyonlar S/390 ve zSeries Seçeneklerine bakın.

Kod nesil Opsiyonlar
-fcall-kaydedildi-reg -fcall-kullanılmış-reg -sabitlenmiş-reg -istisnalar -fnon-çağrı-istisnaları
-funwind-tabloları -fasenkronize-çözme-tabloları -finhibit-size-direktifi
-enstrüman-fonksiyonları -finstrument-fonksiyonları-hariç tutma-fonksiyonu-listesi=sym,sym, ...
-finstrument-fonksiyonlar-hariç tutma-dosya listesi=dosya,dosya, ... -fno-ortak -fno-kimliği
-fpcc-yapı-dönüş -fpic -fPIC -fpie -fPIE -fno-atlama-tabloları -frecord-gcc-anahtarları
-freg-struct-dönüş -fshort-enumlar -fshort-double -fshort-wchar -fverbose-asm
-fpack-yapısı[=n] -fstack-kontrol -fstack-limit-kayıt=reg -fstack-limit-sembol=sym
-fno-yığın limiti -fsplit-yığın -geçen-alt çizgi -ftls-modeli=model -ftrapv
-fwrapv -fbounds-kontrol -görünürlük -fstrict-uçucu-bit alanları

Opsiyonlar Denetleme the Nezaket. of Çıktı
Derleme dört aşamaya kadar içerebilir: ön işleme, uygun derleme, montaj ve
bağlantı, her zaman bu sırayla. GCC, birkaç ön işleme ve derleme yeteneğine sahiptir.
dosyaları ya birkaç montajcı giriş dosyasına ya da bir montajcı giriş dosyasına; sonra
her bir montajcı giriş dosyası bir nesne dosyası üretir ve bağlama tüm nesneyi birleştirir
dosyaları (yeni derlenenler ve girdi olarak belirtilenler) yürütülebilir bir dosyaya dönüştürün.

Herhangi bir girdi dosyası için, dosya adı soneki ne tür bir derleme olduğunu belirler.
done:

dosya.c
Önceden işlenmesi gereken C kaynak kodu.

dosya.i
Önceden işlenmemesi gereken C kaynak kodu.

dosya.ii
Önceden işlenmemesi gereken C++ kaynak kodu.

dosya.m
Objective-C kaynak kodu. ile bağlantı kurmanız gerektiğini unutmayın. libobjc yapmak için kitaplık
Objective-C programı çalışması.

dosya.mi
Önceden işlenmemesi gereken Objective-C kaynak kodu.

dosya, mm
dosya.M
Objective-C++ kaynak kodu. ile bağlantı kurmanız gerektiğini unutmayın. libobjc kitaplık yapmak
bir Objective-C++ programı çalışması. Bunu not et .M harfi harfine büyük M anlamına gelir.

dosya.mii
Önceden işlenmemesi gereken Objective-C++ kaynak kodu.

dosya.h
Önceden derlenmiş bir dosyaya dönüştürülecek C, C++, Objective-C veya Objective-C++ başlık dosyası
başlık (varsayılan) veya bir Ada özelliğine dönüştürülecek C, C++ başlık dosyası (
-fdump-ada-spec değiştirmek).

dosya. Cc
dosya.cp
dosya.cxx
dosya.cpp
dosya.CPP
dosya.c++
dosya.C
Önceden işlenmesi gereken C++ kaynak kodu. Şuna dikkat edin: .cxx, son iki harf
ikisi de tam anlamıyla olmalı x. Aynı şekilde, .C gerçek bir büyük harf C'yi ifade eder.

dosya, mm
dosya.M
Önceden işlenmesi gereken Objective-C++ kaynak kodu.

dosya.mii
Önceden işlenmemesi gereken Objective-C++ kaynak kodu.

dosya.hh
dosya.H
dosya.hp
dosya.hxx
dosya.hpp
dosya.HES
dosya.h++
dosya.tcc
Önceden derlenmiş bir başlığa veya Ada spesifikasyonuna dönüştürülecek C++ başlık dosyası.

dosya.f
dosya.için
dosya.ftn
Önceden işlenmemesi gereken sabit form Fortran kaynak kodu.

dosya.F
dosya.İÇİN
dosya.fpp
dosya.FPP
dosya.FTN
Önceden işlenmesi gereken sabit form Fortran kaynak kodu (geleneksel
ön işlemci).

dosya.f90
dosya.f95
dosya.f03
dosya.f08
Önceden işlenmemesi gereken serbest biçimli Fortran kaynak kodu.

dosya.F90
dosya.F95
dosya.F03
dosya.F08
Önceden işlenmesi gereken serbest biçimli Fortran kaynak kodu (geleneksel
ön işlemci).

dosya.Git
Kaynak koduna gidin.

dosya.reklamlar
Bir kitaplık birimi bildirimi içeren Ada kaynak kodu dosyası (bir
paket, alt program veya genel veya genel bir örnekleme) veya bir kitaplık birimi
yeniden adlandırma bildirimi (bir paket, genel veya alt program yeniden adlandırma bildirimi). Çok
dosyalar da denir gözlük.

dosya.adb
Bir kitaplık birimi gövdesi (bir alt program veya paket gövdesi) içeren Ada kaynak kodu dosyası.
Bu tür dosyalar da denir organları.

dosya.s
Montajcı kodu.

dosya.S
dosya.sx
Önceden işlenmesi gereken birleştirici kodu.

diğer
Doğrudan bağlantıya beslenecek bir nesne dosyası. Tanınmayan herhangi bir dosya adı
eki bu şekilde işlenir.

Giriş dilini açıkça belirtebilirsiniz. -x seçenek:

-x dil
açıkça belirtin dil aşağıdaki girdi dosyaları için (izin vermek yerine
derleyici, dosya adı son ekine göre bir varsayılan seçer). Bu seçenek hepsi için geçerlidir
girdi dosyalarını bir sonrakine kadar takip etmek -x seçenek. için olası değerler dil şunlardır:

c c-başlığı cpp-çıktı
c++ c++-başlık c++-cpp-çıktı
objektif-c objektif-c-başlık objektif-c-cpp-çıktı
objektif-c++ objektif-c++-başlık objektif-c++-cpp-çıktı
cpp ile montajcı montajcı
ada
f77 f77-cpp-girişi f95 f95-cpp-girişi
go
Java

-x Yok
Bir dilin herhangi bir belirtimini kapatın, böylece sonraki dosyalar işlenir
dosya adı son eklerine göre (oldukları gibi) -x hiç kullanılmamıştır).

-geçiş-çıkış-kodları
Normalde gcc derleyicinin herhangi bir aşaması varsa program 1 koduyla çıkacaktır.
Başarısız bir dönüş kodu döndürür. belirtirseniz -geçiş-çıkış-kodları, gcc program
bunun yerine, geri dönen herhangi bir aşama tarafından üretilen sayısal olarak en yüksek hatayla dönecektir.
bir hata göstergesi. C, C++ ve Fortran ön uçları, eğer bir dahili ise 4 döndürür.
derleyici hatasıyla karşılaşıldı.

Derlemenin yalnızca bazı aşamalarını istiyorsanız, kullanabilirsiniz. -x (veya dosya adı sonekleri)
söylemek gcc nereden başlamalı ve seçeneklerden biri -c, -Sya da -E nerede olduğunu söylemek gcc etmektir
Dur. Bazı kombinasyonların (örneğin, -x cpp-çıktı -E) öğretmek gcc yapmak için
hiçbir şey.

-c Kaynak dosyaları derleyin veya birleştirin, ancak bağlantı kurmayın. Bağlantı aşaması basitçe
bitmiş değil. Nihai çıktı, her kaynak dosya için bir nesne dosyası biçimindedir.

Varsayılan olarak, bir kaynak dosyanın nesne dosyası adı, sonek değiştirilerek yapılır. .c,
.i, .s, vb. ile .o.

Derleme veya derleme gerektirmeyen tanınmayan girdi dosyaları yoksayılır.

-S Derleme aşamasından sonra uygun şekilde durun; toplamayın. Çıktı şurada
Belirtilen her bir montajcı olmayan girdi dosyası için bir montajcı kod dosyası formu.

Varsayılan olarak, bir kaynak dosyanın montajcı dosyası adı, sonek değiştirilerek yapılır.
.c, .i, vb. ile .s.

Derleme gerektirmeyen girdi dosyaları yok sayılır.

-E Ön işleme aşamasından sonra durun; derleyiciyi uygun şekilde çalıştırmayın. çıktı
standart çıktıya gönderilen önceden işlenmiş kaynak kodu biçimi.

Ön işleme gerektirmeyen girdi dosyaları yoksayılır.

-o dosya
Çıktıyı dosyaya yerleştirin dosya. Bu, çıktının türü ne olursa olsun geçerlidir
yürütülebilir dosya, nesne dosyası, montajcı dosyası veya
önceden işlenmiş C kodu.

If -o belirtilmemişse, varsayılan, yürütülebilir bir dosya koymaktır. a.dışarı, nesne
Dosya için kaynak.sonek in kaynak.o, onun assembler dosyası kaynak.s, önceden derlenmiş
başlık dosyası kaynak.sonek.gchve standart çıktıdaki tüm önceden işlenmiş C kaynakları.

-v Aşamalarını çalıştırmak için yürütülen komutları yazdırın (standart hata çıktısında).
derleme. Ayrıca derleyici sürücü programının ve programın sürüm numarasını da yazdırın.
önişlemci ve uygun derleyici.

-###
Facebok sayfasını beğenin : -v komutların yürütülmemesi ve bağımsız değişkenlerin alıntılanmadıkça alıntılanması dışında
yalnızca alfasayısal karakterler veya "./-_" içerir. Bu, kabuk komut dosyalarının
sürücü tarafından oluşturulan komut satırlarını yakalayın.

-boru
Çeşitli aşamalar arasındaki iletişim için geçici dosyalar yerine borular kullanın.
derleme. Bu, montajcının okuyamadığı bazı sistemlerde çalışmaz.
bir borudan; ancak GNU derleyicisinin hiçbir sıkıntısı yoktur.

--yardım et
(standart çıktıda) tarafından anlaşılan komut satırı seçeneklerinin bir açıklamasını yazdırın.
gcc. Eğer -v seçenek de daha sonra belirtilir --yardım et ayrıca devredilecek
tarafından çağrılan çeşitli süreçler gcc, böylece komut satırı seçeneklerini görüntüleyebilirler
kabul ettiler. Eğer -Ekstra seçeneği de belirtildi (önce --yardım et
seçeneği), ardından kendileriyle ilişkili hiçbir belgeye sahip olmayan komut satırı seçenekleri
da görüntülenecektir.

--hedef-yardım
Hedefe özel komut satırı seçeneklerinin açıklamasını (standart çıktıda) yazdırın
her araç için. Bazı hedefler için ekstra hedefe özel bilgiler de olabilir.
basılı.

--yardım={sınıf|[^]niteleyici}[, ...]
(standart çıktıda) tarafından anlaşılan komut satırı seçeneklerinin bir açıklamasını yazdırın.
belirtilen tüm sınıflara ve niteleyicilere uyan derleyici. Bunlar
desteklenen sınıflar:

optimize
Bu, derleyici tarafından desteklenen tüm optimizasyon seçeneklerini görüntüler.

uyarılar
Bu, tarafından üretilen uyarı mesajlarını kontrol eden tüm seçenekleri görüntüleyecektir.
derleyici.

hedef
Bu, hedefe özel seçenekleri gösterecektir. aksine --hedef-yardım seçenek
ancak, bağlayıcı ve birleştiricinin hedefe özel seçenekleri
görüntülenir. Bunun nedeni, bu araçların şu anda genişletilmiş
--yardım= sözdizimi.

params
Bu, tarafından tanınan değerleri gösterecektir. --param seçeneği.

dil
Bu, desteklenen seçenekleri görüntüleyecektir. dil, Burada dil ismi
GCC'nin bu sürümünde desteklenen dillerden biri.

ortak
Bu, tüm dillerde ortak olan seçenekleri görüntüler.

Bunlar desteklenen niteleyicilerdir:

belgesiz
Yalnızca belgelenmemiş seçenekleri görüntüleyin.

katıldı
Aynı yerde eşittir işaretinden sonra görünen bir argüman alan görüntüleme seçenekleri
sürekli metin parçası, örneğin: --help=hedef.

ayrı
Aşağıdaki ayrı bir kelime olarak görünen bir argüman alarak seçenekleri görüntüleyin.
orijinal seçenek, örneğin: -o çıktı dosyası.

Bu nedenle, örneğin, tarafından desteklenen tüm belgelenmemiş hedefe özgü anahtarları görüntülemek için
derleyici aşağıdakiler kullanılabilir:

--help=hedef,belgelenmemiş

Bir niteleyicinin anlamı, ön eki eklenerek tersine çevrilebilir. ^ karakter, yani
tüm ikili uyarı seçeneklerini görüntülemek için örnek (yani, açık veya kapalı olanlar
ve bir argüman almayan) bir açıklaması olan, şunu kullanın:

--help=uyarılar,^katıldı,^belgelenmemiş

argüman --yardım= yalnızca ters çevrilmiş niteleyicilerden oluşmamalıdır.

Birkaç sınıfı birleştirmek mümkündür, ancak bu genellikle çıktıyı şu şekilde kısıtlar:
o kadar çok ki gösterilecek bir şey yok. Ancak işe yaradığı bir durum,
sınıflardan biri hedef. Örneğin, hedefe özgü tüm bilgileri görüntülemek için
optimizasyon seçenekleri aşağıdakiler kullanılabilir:

--help=hedef, optimize ediciler

The --yardım= seçenek komut satırında tekrarlanabilir. Her ardışık kullanım
önceden yapılmış olanları atlayarak, istenen seçenek sınıfını görüntüleyin
Görüntülenen.

Eğer -Q seçeneği, komut satırından önce görünür. --yardım= seçeneği, ardından
tarafından görüntülenen açıklayıcı metin --yardım= değişti. Görüntülenenleri açıklamak yerine
seçenekleri, seçeneğin etkin, devre dışı veya ayarlanmış olduğuna dair bir gösterge verilir.
belirli bir değere (derleyicinin bunu
--yardım= seçeneği kullanılır).

İşte ARM bağlantı noktasından kesilmiş bir örnek gcc:

% gcc -Q -mabi=2 --help=hedef -c
Aşağıdaki seçenekler hedefe özeldir:
-mabi= 2
-mabort-on-noreturn [devre dışı]
-mapcs [devre dışı]

Çıktı, önceki komut satırı seçeneklerinin etkilerine duyarlıdır, bu nedenle
Örneğin, hangi optimizasyonların etkinleştirildiğini bulmak mümkündür. -O2 kullanarak:

-Q -O2 --help=iyileştiriciler

Alternatif olarak, hangi ikili optimizasyonların etkinleştirildiğini keşfedebilirsiniz. -O3 kullanarak:

gcc -c -Q -O3 --help=iyileştiriciler > /tmp/O3-opts
gcc -c -Q -O2 --help=iyileştiriciler > /tmp/O2-opts
fark /tmp/O2 seçenekleri /tmp/O3 seçenekleri | grep etkin

-kanonik olmayan önekler
Herhangi bir sembolik bağı genişletmeyin, referansları çözümleyin /../ or /./ya da yol yap
göreli bir önek oluştururken mutlak.

--versiyon
Çağrılan GCC'nin sürüm numarasını ve telif haklarını görüntüleyin.

-sarmalayıcı
Bir sarmalayıcı program altındaki tüm alt komutları çağırın. Sarma programının adı ve
parametreleri virgülle ayrılmış bir liste olarak iletilir.

gcc -c tc -sarmalayıcı gdb,--args

Bu, tüm alt programlarını çağıracak gcc altında gdb --args, böylece çağırma cc1
olacak gdb --args cc1 ....

-feklenti=isim.yani
Eklenti kodunu dosyaya yükleyin isim.so, tarafından silinecek paylaşılan bir nesne olduğu varsayılır
derleyici. Eklentiyi tanımlamak için paylaşılan nesne dosyasının temel adı kullanılır.
argüman ayrıştırma amaçları için (Bkz. -fplugin-arg-isim-anahtar=değer aşağıda). Her biri
eklenti, Eklentiler API'sinde belirtilen geri arama işlevlerini tanımlamalıdır.

-fplugin-arg-isim-anahtar=değer
adlı bir argüman tanımlayın anahtar değeri olan değer denilen eklenti için isim.

-fdump-ada-spec[-ince]
C ve C++ kaynağı ve içerme dosyaları için ilgili Ada özelliklerini oluşturun.

-fdump-go-spec=dosya
Herhangi bir dilde girdi dosyaları için, ilgili Go bildirimlerini şurada oluşturun: dosya. Bu
yararlı bir yol olabilecek Go "const", "type", "var" ve "func" bildirimlerini oluşturur
başka bir dilde yazılmış koda bir Go arayüzü yazmaya başlamak için.

@dosya
Komut satırı seçeneklerini şuradan okuyun: dosya. Okunan seçenekler yerine eklenir.
orijinal @dosya seçenek. Eğer dosya mevcut değilse veya okunamıyorsa, seçenek
kelimenin tam anlamıyla işlenecek ve kaldırılmayacaktır.

İçindeki seçenekler dosya boşluk ile ayrılır. Bir boşluk karakteri dahil edilebilir
tüm seçeneği tek veya çift tırnak içine alarak bir seçenekte. Herhangi
karakter (ters eğik çizgi dahil), kullanılacak karakterin önüne eklenerek dahil edilebilir.
ters eğik çizgi ile dahil edilmiştir. NS dosya kendisi ek @ içerebilirdosya seçenekler; herhangi
bu tür seçenekler özyinelemeli olarak işlenecektir.

Derleme C + + Programlar
C++ kaynak dosyaları geleneksel olarak son eklerden birini kullanır .C, . Cc, .cpp, .CPP, .c++, .cpya da
.cxx; C++ başlık dosyaları genellikle .hh, .hpp, .H, veya (paylaşılan şablon kodu için) .tcc; Ve
önceden işlenmiş C++ dosyaları soneki kullanır .ii. GCC, bu adlara sahip dosyaları tanır ve
derleyiciyi derlemeyle aynı şekilde çağırsanız bile bunları C++ programları olarak derler
C programları (genellikle gcc).

Ancak, gcc C++ kitaplığını eklemez. g ++ GCC'yi çağıran bir programdır ve
davranır .c, .h ve .i dosyaları, C kaynak dosyaları yerine C++ kaynak dosyaları olarak -x is
kullanılır ve C++ kitaplığına karşı bağlantıyı otomatik olarak belirtir. Bu program aynı zamanda
ile bir C başlık dosyasını önceden derlerken kullanışlıdır. .h C++ derlemelerinde kullanım için uzantı.
Birçok sistemde, g ++ ayrıca adıyla yüklenir c ++.

C++ programlarını derlerken, aynı komut satırı seçeneklerinin çoğunu belirtebilirsiniz.
programları herhangi bir dilde derlemek için kullanırsınız; veya C için anlamlı komut satırı seçenekleri
ve ilgili diller; veya yalnızca C++ programları için anlamlı olan seçenekler.

Opsiyonlar Denetleme C diyalekt
Aşağıdaki seçenekler, C'nin lehçesini (veya C'den türetilen C++ gibi dilleri) kontrol eder.
Derleyicinin kabul ettiği Objective-C ve Objective-C++):

-ansi
C modunda, bu eşdeğerdir -std = c90. C++ modunda, eşdeğerdir
-std=c++98.

Bu, GCC'nin ISO C90 ile uyumlu olmayan belirli özelliklerini kapatır (
C kodu derleme) veya standart C++ (C++ kodu derlerken), örneğin "asm" ve
"typeof" anahtar sözcükleri ve "unix" ve "vax" gibi önceden tanımlanmış makrolar
Kullanmakta olduğunuz sistem türü. Ayrıca istenmeyen ve nadiren kullanılan ISO
trigraf özelliği. C derleyicisi için C++ stilinin tanınmasını devre dışı bırakır //
yorumların yanı sıra "satır içi" anahtar kelime.

Alternatif anahtar kelimeler "__asm__", "__extension__", "__inline__" ve "__typeof__"
rağmen çalışmaya devam -ansi. Bunları bir ISO C programında kullanmak istemezsiniz,
elbette, ancak bunları, dahil edilebilecek başlık dosyalarına koymak yararlıdır.
ile yapılan derlemeler -ansi. "__unix__" gibi alternatif önceden tanımlanmış makrolar ve
"__vax__" ile veya olmadan da mevcuttur -ansi.

The -ansi seçeneği, ISO dışı programların karşılıksız olarak reddedilmesine neden olmaz. İçin
Bu, - bilgiçlik ek olarak gereklidir -ansi.

"__STRICT_ANSI__" makrosu, -ansi seçeneği kullanılır. Bazı başlık
dosyalar bu makroyu fark edebilir ve belirli işlevleri bildirmekten veya tanımlamaktan kaçınabilir.
ISO standardının gerektirmediği belirli makrolar; bu karışmayı önlemek içindir
bu isimleri başka şeyler için kullanabilecek herhangi bir programla.

Normalde yerleşik olacak ancak ISO C tarafından tanımlanan anlambilimine sahip olmayan işlevler
("alloca" ve "ffs" gibi) yerleşik işlevler değildir. -ansi kullanıldı.

-std=
Dil standardını belirleyin. Bu seçenek şu anda yalnızca şu durumlarda desteklenmektedir:
C veya C++ derleme.

Derleyici, aşağıdakiler gibi birkaç temel standardı kabul edebilir: c90 or c++98, ve GNU lehçeleri
gibi bu standartların gnu90 or gnu+98. Bir temel standart belirleyerek,
derleyici, bu standardı izleyen ve GNU kullanan tüm programları kabul edecektir.
onunla çelişmeyen uzantılar. Örneğin, -std = c90 kesin kapatır
GCC'nin "asm" ve "typeof" gibi ISO C90 ile uyumlu olmayan özellikleri
anahtar kelimeler, ancak ISO C90'da bir anlamı olmayan diğer GNU uzantıları, örneğin
"?:" ifadesinin orta terimini çıkarma. Öte yandan, bir GNU belirterek
bir standardın lehçesi, derleyici desteğinin etkinleştirildiği tüm özellikler, bunlar
özellikler, temel standardın ve bazı katı uyumlu programların anlamını değiştirir
reddedilebilir. Belirli bir standart tarafından kullanılır - bilgiçlik hangisi olduğunu belirlemek
özellikler, standardın bu sürümü verilen GNU uzantılarıdır. Örneğin -std=gnu90
- bilgiçlik C++ stili hakkında uyarır // yorumlar, bu arada -std=gnu99 - bilgiçlik olur
değil.

Bu seçenek için bir değer sağlanmalıdır; olası değerler

c90
c89
iso9899:1990
Tüm ISO C90 programlarını destekleyin (ISO C90 ile çakışan belirli GNU uzantıları)
devre dışı). İle aynı -ansi C kodu için.

iso9899:199409
Değişiklik 90'de değiştirildiği şekliyle ISO C1.

c99
c9x
iso9899:1999
iso9899:199x
ISO C99. Bu standardın henüz tam olarak desteklenmediğini unutmayın; görmek
<http://gcc.gnu.org/gcc-4.7/c99status.html> daha fazla bilgi için. İsimler c9x
ve iso9899:199x kullanımdan kaldırıldı.

c11
c1x
iso9899:2011
ISO C11, ISO C standardının 2011 revizyonu. Destek eksik ve
deneysel. İsim c1x kullanımdan kaldırıldı.

gnu90
gnu89
ISO C90'ın GNU lehçesi (bazı C99 özellikleri dahil). Bu, C için varsayılandır
kodu.

gnu99
gnu9x
ISO C99'un GNU lehçesi. ISO C99, GCC'de tam olarak uygulandığında, bu
varsayılan olun. İsim gnu9x kullanımdan kaldırıldı.

gnu11
gnu1x
ISO C11'in GNU lehçesi. Destek eksik ve deneyseldir. İsim gnu1x
kullanımdan kaldırıldı.

c++98
1998 ISO C++ standardı artı değişiklikler. İle aynı -ansi C++ kodu için.

gnu+98
GNU lehçesi -std=c++98. Bu, C++ kodu için varsayılandır.

c++11
2011 ISO C++ standardı artı değişiklikler. C++11 desteği devam ediyor
deneyseldir ve gelecekteki sürümlerde uyumsuz şekillerde değişebilir.

gnu+11
GNU lehçesi -std=c++11. C++11 desteği hala deneyseldir ve değişebilir
gelecekteki sürümlerde uyumsuz şekillerde.

-fgnu89-satır içi
Seçenek -fgnu89-satır içi GCC'ye "satır içi" için geleneksel GNU semantiğini kullanmasını söyler
C99 modundayken çalışır.
Bu seçenek, GCC 4.1.3'e kadar olan ancak dahil edilmeyen sürümler tarafından kabul edilir ve yok sayılır.
4.3. GCC 4.3 ve sonraki sürümlerinde, GCC'nin C99 modundaki davranışını değiştirir. kullanma
bu seçenek, kabaca "gnu_inline" işlev özniteliğini tümüne eklemeye eşdeğerdir.
satır içi işlevler.

Seçenek -fno-gnu89-satır içi açıkça GCC'ye C99 semantiğini kullanmasını söyler
C99 veya gnu99 modundayken "satır içi" (yani, varsayılan davranışı belirtir). Bu
seçeneği ilk olarak GCC 4.3'te desteklenmiştir. Bu seçenek şurada desteklenmiyor: -std = c90 or
-std=gnu90 modu.

"__GNUC_GNU_INLINE__" ve "__GNUC_STDC_INLINE__" önişlemci makroları kullanılabilir
"satır içi" işlevler için hangi anlambilimin geçerli olduğunu kontrol etmek için.

-yardımcı bilgi Dosya
Bildirilen tüm işlevler için verilen dosya adı prototip bildirimlerine çıktı ve/veya
başlık dosyalarındakiler de dahil olmak üzere bir çeviri biriminde tanımlanır. Bu seçenek
C dışındaki herhangi bir dilde sessizce göz ardı edilir.

Bildirimlerin yanı sıra dosya, yorumlarda her bir bildirimin kaynağını belirtir.
(kaynak dosya ve satır), beyanın örtük, prototip veya
prototiplenmemiş (I, N yeni veya O sırasıyla eski için, sonraki ilk karakterde
satır numarası ve iki nokta üst üste) ve bir bildirimden mi yoksa bir tanımdan mı geldiğini
(C or F, sırasıyla aşağıdaki karakterde). fonksiyon durumunda
tanımları, K&R tarzı bir argüman listesi ve ardından beyanları da
beyandan sonra, yorumlar içinde sağlanmıştır.

-nadas-parametresiz-variadik-fonksiyonlar
Adlandırılmış parametreler olmadan değişken işlevleri kabul edin.

Böyle bir fonksiyon tanımlamak mümkün olsa da, olduğu gibi bu çok kullanışlı değildir.
argümanları okumak mümkün değil. Bu yapı olduğu için bu yalnızca C için desteklenir
C++ tarafından izin verilir.

-fno-asm
Kodun bunları kullanabilmesi için "asm", "inline" veya "typeof" kelimelerini anahtar kelime olarak algılamayın.
tanımlayıcılar olarak kelimeler. "__asm__", "__inline__" ve
Bunun yerine "__typeof__". -ansi ima -fno-asm.

C++'da bu anahtar yalnızca "typeof" anahtar sözcüğünü etkiler, çünkü "asm" ve "inline"
standart anahtar kelimeler. kullanmak isteyebilirsiniz -fno-gnu-anahtar kelimeler bunun yerine bayrak,
aynı etki. C99 modunda (-std = c99 or -std=gnu99), bu anahtar yalnızca
"satır içi", ISO C99'da standart bir anahtar sözcük olduğundan, "asm" ve "typeof" anahtar sözcükleri.

-fno-yerleşik
-fno-yerleşik-işlev
İle başlamayan yerleşik işlevleri tanıma __yerleşik_ ön ek olarak.

GCC normalde belirli yerleşik işlevleri işlemek için özel kod üretir.
verimli; örneğin, "alloca" çağrıları tek bir talimat haline gelebilir ve
yığını doğrudan ayarlayın ve "memcpy" çağrıları satır içi kopya döngüleri haline gelebilir. NS
sonuçta ortaya çıkan kod genellikle hem daha küçük hem de daha hızlıdır, ancak işlev hayır çağırdığından
gibi görünürse, bu aramalarda bir kesme noktası belirleyemez veya değiştiremezsiniz.
farklı bir kitaplıkla bağlantı kurarak işlevlerin davranışı. Ayrıca, ne zaman
bir işlev yerleşik bir işlev olarak tanınırsa, GCC bununla ilgili bilgileri kullanabilir
bu işleve yapılan çağrılarla ilgili sorunlar hakkında uyarmak veya daha fazlasını oluşturmak için işlev
verimli kod, sonuçta ortaya çıkan kod hala o işleve yapılan çağrıları içeriyor olsa bile. İçin
örneğin, uyarılar ile verilir -W biçimi "printf" olduğunda, "printf"e yapılan hatalı aramalar için
yerleşiktir ve "strlen"in genel belleği değiştirmediği bilinmektedir.

İle -fno-yerleşik-işlev seçenek yalnızca yerleşik işlev işlev devre dışı.
işlev ile başlamamalı __yerleşik_. Yerleşik olmayan bir işlev adlandırılmışsa
GCC'nin bu sürümünde bu seçenek yok sayılır. karşılık gelen yok
-fbuiltin-işlev seçenek; yerleşik işlevleri seçici olarak etkinleştirmek istiyorsanız,
kullanma -fno-yerleşik or -bağımsız, aşağıdaki gibi makrolar tanımlayabilirsiniz:

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

-Fhosted
Derlemenin barındırılan bir ortamda gerçekleştiğini iddia edin. Bu şu anlama gelir: -fyerleşik.
Barındırılan bir ortam, tüm standart kitaplığın mevcut olduğu ve
hangi "main", "int" dönüş türüne sahiptir. Örnekler, bir hariç neredeyse her şeydir.
çekirdek. Bu eşdeğerdir -fno-bağımsız.

-bağımsız
Derlemenin bağımsız bir ortamda gerçekleştiğini iddia edin. Bu şu anlama gelir:
-fno-yerleşik. Bağımsız bir ortam, standart kitaplığın bulunamayacağı bir ortamdır.
vardır ve program başlangıcı mutlaka "ana" konumda olmayabilir. En bariz örnek
bir işletim sistemi çekirdeğidir. Bu eşdeğerdir -fno tarafından barındırılan.

-fopenmp
C/C++'da "#pragma omp" ve Fortran'da "!$omp" OpenMP yönergelerinin işlenmesini etkinleştirin.
Ne zaman -fopenmp belirtilirse, derleyici buna göre paralel kod üretir.
OpenMP Uygulama Programı Arayüzü v3.0http://www.openmp.org/>. Bu seçenek
ima -pthreadve bu nedenle yalnızca desteği olan hedeflerde desteklenir.
-pthread.

-fgnu-tm
Seçenek ne zaman -fgnu-tm belirtilirse, derleyici Linux için kod üretecektir.
Intel'in mevcut İşlemsel Bellek ABI belirtim belgesinin bir çeşidi (Revizyon
1.1, 6 Mayıs 2009). Bu, arayüzü değişebilen deneysel bir özelliktir.
resmi spesifikasyon değiştikçe GCC'nin gelecekteki sürümleri. lütfen unutmayın
tüm mimariler bu özellik için desteklenir.

GCC'nin işlem belleği desteği hakkında daha fazla bilgi için,

İşlem belleği özelliğinin, çağrı dışı istisnalarla desteklenmediğini unutmayın.
(-fnon-çağrı-istisnaları).

-fms-uzantıları
Microsoft başlık dosyalarında kullanılan bazı standart dışı yapıları kabul edin.

C++ kodunda bu, yapılardaki üye adlarının önceki türlere benzer olmasına izin verir.
beyanları.

typedef int UOW;
yapı ABC {
uuuuuuuuu;
};

Yapılarda ve birliklerde adsız alanların bazı durumları yalnızca bununla kabul edilir.
seçeneği.

-fplan9-uzantıları
Plan 9 kodunda kullanılan bazı standart dışı yapıları kabul edin.

Bu, -fms-uzantıları, anonim yapılara işaretçilerin iletilmesine izin verir
alanlar, alan türünün öğelerine işaretçiler bekleyen işlevlere ve
typedef kullanılarak bildirilen anonim alanlara başvurmaya izin verir. Bu sadece
C++ için değil, C için desteklenir.

-trigraflar
ISO C trigraflarını destekleyin. NS -ansi seçeneği (ve -std katı ISO C seçenekleri
uygunluk) ima eder -trigraflar.

-tümleşik olmayan-cpp
Derlemeyi iki geçişte gerçekleştirir: ön işleme ve derleme. Bu seçenek
aracılığıyla "cc1", "cc1plus" veya "cc1obj" sağlanan bir kullanıcı -B seçenek. Kullanıcı tarafından sağlanan
derleme adımı daha sonra normalden sonra ek bir ön işleme adımı ekleyebilir
ön işleme ancak derlemeden önce. Varsayılan, entegre cpp'yi kullanmaktır
(dahili cpp)

"cc1", "cc1plus" ve "cc1obj" birleştirilirse bu seçeneğin anlamı değişecektir.

-geleneksel
-geleneksel-cpp
Önceden, bu seçenekler GCC'nin standart öncesi bir C derleyicisini taklit etmeye çalışmasına neden oluyordu.
Artık yalnızca şunlarla destekleniyorlar: -E değiştirmek. Önişlemci desteklemeye devam ediyor
bir standart öncesi mod. Ayrıntılar için GNU CPP kılavuzuna bakın.

-fcond-uyumsuzluğu
İkinci ve üçüncü bağımsız değişkenlerde eşleşmeyen türlere sahip koşullu ifadelere izin verin.
Böyle bir ifadenin değeri geçersizdir. Bu seçenek C++ için desteklenmez.

-keten-vektör-dönüşümleri
Farklı sayıda elemana sahip vektörler arasında örtük dönüşümlere izin verin ve/veya
uyumsuz eleman türleri. Bu seçenek yeni kod için kullanılmamalıdır.

-funsigned-char
"char" türünün "unsigned char" gibi imzasız olmasına izin verin.

Her tür makinenin "char"ın ne olması gerektiğine ilişkin bir varsayılanı vardır. Ya gibi
varsayılan olarak "imzasız karakter" veya varsayılan olarak "imzalı karakter" gibi.

İdeal olarak, taşınabilir bir program her zaman "imzalı karakter" veya "imzasız karakter" kullanmalıdır.
bir nesnenin imzasına bağlıdır. Ama birçok program kullanmak için yazılmıştır.
düz "char" ve imzalanmasını bekleyin veya bağlı olarak imzasız olmasını bekleyin.
onlar için yazılmış makineler. Bu seçenek ve tersi, böyle bir
program ters varsayılan ile çalışır.

"char" türü her zaman "imzalı karakter" veya "imzasız karakter" karakterlerinin her birinden farklı bir türdür.
char", davranışı her zaman bu ikisinden biri gibi olsa da.

-fsigned-char
"signed char" gibi "char" türünün imzalanmasına izin verin.

Bunun eşdeğer olduğuna dikkat edin -fno-imzasız-char, negatif formu olan
-funsigned-char. Aynı şekilde, seçenek -fno-imzalı-char eşdeğerdir
-funsigned-char.

-fsigned-bit alanları
-funsigned-bit alanları
-fno-imzalı-bit alanları
-fno-imzasız-bit alanları
Bu seçenekler, bildirim yapıldığında bir bit alanının imzalı mı yoksa imzasız mı olduğunu kontrol eder.
"imzalı" veya "imzasız" kullanmaz. Varsayılan olarak, böyle bir bit alanı imzalanır,
çünkü bu tutarlıdır: "int" gibi temel tamsayı türleri, işaretli türlerdir.

Opsiyonlar Denetleme C + + diyalekt
Bu bölüm, yalnızca C++ programları için anlamlı olan komut satırı seçeneklerini açıklar;
ama aynı zamanda GNU derleyici seçeneklerinin çoğunu hangi dilde kullandığınızdan bağımsız olarak da kullanabilirsiniz.
örneğin, bir "firstClass.C" dosyasını şu şekilde derleyebilirsiniz:

g++ -g -frepo -O -c birinciSınıf.C

Bu örnekte yalnızca -frepo yalnızca C++ programları için tasarlanmış bir seçenektir; kullanabilirsin
GCC tarafından desteklenen herhangi bir dilde diğer seçenekler.

İşte seçeneklerin bir listesi bir tek C++ programlarını derlemek için:

-fabi-sürüm=n
Sürümü kullan n C++ ABI'nin. Sürüm 2, ilk olarak C++ ABI'nin sürümüdür.
G++ 3.4'te göründü. Sürüm 1, C++ ABI'nin ilk olarak ortaya çıkan sürümüdür.
G++ 3.2. Sürüm 0 her zaman C++'a en yakın sürüm olacaktır.
ABI spesifikasyonu. Bu nedenle, sürüm 0 kullanılarak elde edilen ABI, ABI olarak değişecektir.
hatalar düzeltildi.

Varsayılan sürüm 2'dir.

Sürüm 3, bir sabit adresin şablon argümanı olarak yönetilmesindeki bir hatayı düzeltir.

İlk olarak G++ 4'te ortaya çıkan Sürüm 4.5, vektör için standart bir yönetme uygular.
türleri.

İlk olarak G++ 5'da ortaya çıkan Sürüm 4.6, özniteliğin bozulmasını düzeltir
fonksiyon işaretçi türlerinde const/volatile, düz bir dekl'in decltype'ı ve bir
başka bir parametrenin bildiriminde function parametresi.

İlk olarak G++ 6'de ortaya çıkan Sürüm 4.7, C++11'in yükseltme davranışını düzeltir
kapsamlı numaralandırmalar ve şablon argüman paketlerinin yönetimi, const/static_cast, prefix ++
ve -- ve şablon bağımsız değişkeni olarak kullanılan bir sınıf kapsam işlevi.

Ayrıca bakınız -Wabi.

-fno-erişim-kontrolü
Tüm erişim kontrollerini kapatın. Bu anahtar, esas olarak şuradaki hataları gidermek için kullanışlıdır:
erişim kontrol kodu.

-fcheck-yeni
"Yeni operatör" tarafından döndürülen işaretçinin boş olmadığını kontrol edin.
ayrılan depolama alanını değiştirin. Bu kontrol normalde gereksizdir çünkü C++
standart, "operatör yeni"nin yalnızca bildirilirse 0 döndüreceğini belirtir. atmak(),
bu durumda derleyici bu olmadan bile dönüş değerini her zaman kontrol edecektir.
seçenek. Diğer tüm durumlarda, "yeni operatör" boş olmayan bir istisnaya sahip olduğunda
belirtim, bellek tükenmesi "std::bad_alloc" atılarak bildirilir. Ayrıca bakınız
yeni (yok).

-fconserve-alanı
Başlatılmamış veya çalışma zamanında başlatılmış global değişkenleri ortak segmente yerleştirin.
C yapar. Bu, kopyayı teşhis etmeme pahasına yürütülebilir dosyada yerden tasarruf sağlar
tanımlar. Bu bayrakla derlerseniz ve programınız gizemli bir şekilde çökerse
"main()" tamamlandıktan sonra, iki kez yok edilen bir nesneniz olabilir
çünkü iki tanım birleştirildi.

için destek eklendiğinden, bu seçenek artık çoğu hedefte kullanışlı değildir.
değişkenleri ortak hale getirmeden BSS'ye koymak.

-fconstexpr-derinlik=n
C++11 constexpr işlevleri için maksimum iç içe değerlendirme derinliğini şu şekilde ayarlayın: n. Bir sınır
sabit ifade değerlendirmesi sırasında sonsuz özyinelemeyi algılamak için gereklidir. NS
standart tarafından belirtilen minimum 512'dir.

-fdeduce-init-listesi
Bir ayraçtan bir şablon türü parametresinin std::initializer_list olarak çıkarılmasını etkinleştirin.
kapalı başlatıcı listesi, yani

şablon otomatik ilet(T t) -> türü kaldır (realfn (t))
{
dönüş realfn (t);
}

geçersiz f()
{
ileri({1,2}); // Aramayı yonlendir >
}

Bu kesinti, orijinal olarak önerilenin olası bir uzantısı olarak uygulandı.
C++ 11 standardı için anlambilim, ancak nihai standardın bir parçası değildi, bu yüzden
varsayılan olarak devre dışı. Bu seçenek kullanımdan kaldırılmıştır ve gelecekte kaldırılabilir
G++ sürümü.

-arkadaş-enjeksiyon
Arkadaş işlevlerini çevreleyen ad alanına enjekte edin, böylece dışarıda görünürler
beyan edildikleri sınıfın kapsamı. Arkadaş işlevleri belgelendi
eski Açıklamalı C++ Referans Kılavuzunda ve önceki G++ sürümlerinde bu şekilde çalışmak için
4.1 hep böyle çalıştı. Ancak, ISO C++'da olmayan bir arkadaş işlevi
kapsayan bir kapsamda bildirilenler yalnızca bağımsız değişkene bağlı arama kullanılarak bulunabilir.
Bu seçenek, arkadaşların önceki sürümlerde olduğu gibi enjekte edilmesine neden olur.

Bu seçenek uyumluluk içindir ve gelecekteki bir G++ sürümünde kaldırılabilir.

-fno-elide-yapıcılar
C++ standardı, bir uygulamanın yalnızca bir geçici oluşturmayı atlamasına izin verir.
aynı türden başka bir nesneyi başlatmak için kullanılır. Bu seçeneğin belirtilmesi devre dışı bırakır
bu optimizasyon ve G++'ı her durumda kopya oluşturucuyu çağırmaya zorlar.

-fno-enforce-eh-özellikleri
Çalışma zamanında istisna belirtimlerinin ihlal edilip edilmediğini kontrol etmek için kod oluşturmayın.
Bu seçenek, C++ standardını ihlal eder, ancak kod boyutunu küçültmek için yararlı olabilir.
tanımlamaya çok benzeyen üretim yapıları DEBUG. Bu, kullanıcı kodu izni vermez
istisna özelliklerini ihlal eden istisnalar atmak; derleyici
yine de spesifikasyonlara göre optimize edilir, bu nedenle beklenmeyen bir istisna atmak
tanımsız davranışa neden olur.

-ffor-kapsam
-fno-kapsam için
If -ffor-kapsam belirtilirse, bir içinde bildirilen değişkenlerin kapsamı for-init-ifadesi
ile sınırlıdır için C++ standardında belirtildiği gibi döngünün kendisini. Eğer
-fno-kapsam için belirtilirse, bir içinde bildirilen değişkenlerin kapsamı for-init-ifadesi
eski G++ sürümlerinde olduğu gibi, ek kapsamın sonuna kadar uzanır ve
C++'ın diğer (geleneksel) uygulamaları.

Her iki bayrak da standardı takip etmek için verilmezse, ancak izin vermek ve bir
aksi takdirde geçersiz olacak veya farklı olacak eski stil kod için uyarı
davranışı.

-fno-gnu-anahtar kelimeler
"typeof" kelimesini anahtar kelime olarak tanıma, böylece kod bu kelimeyi bir anahtar kelime olarak kullanabilir.
tanımlayıcı. Bunun yerine "__typeof__" anahtar sözcüğünü kullanabilirsiniz. -ansi ima
-fno-gnu-anahtar kelimeler.

-fno-örtük-şablonlar
Örtülü olarak somutlaştırılan satır içi olmayan şablonlar için asla kod yayınlamayın (örn.
kullanmak); yalnızca açık örneklemeler için kod yayar.

-fno-implicit-inline-şablonları
Satır içi şablonların örtük örneklemeleri için de kod göndermeyin. Varsayılan
satır içi satırları farklı şekilde ele almaktır, böylece optimizasyonlu ve optimizasyonsuz derlemeler
aynı açık örnekleme kümesine ihtiyaç duyar.

-fno-uygulama-satır içi
Yerden tasarruf etmek için, tarafından kontrol edilen satır içi işlevlerin satır dışı kopyalarını yaymayın.
#pragma uygulama. Bu işlevler değilse, bu, bağlayıcı hatalarına neden olur.
çağrıldıkları her yerde satır içi.

-fms-uzantıları
MFC'de kullanılan yapılar hakkında örtük int ve
standart olmayan sözdizimi yoluyla üye işlevine bir işaretçi alma.

-fno-nonansi-yerleşikler
ANSI/ISO C tarafından zorunlu tutulmayan yerleşik işlev bildirimlerini devre dışı bırakın.
"ffs", "alloca", "_exit", "index", "bzero", "conjf" ve diğer ilgili
fonksiyonlar.

-fnothrow-opt
Bir "throw()" istisna belirtimine, bir "hiçbir istisna" belirtimiymiş gibi davranın
istisnasız bir işleve göre metin boyutu ek yükünü azaltmak veya ortadan kaldırmak için
Şartname. İşlev, önemsiz olmayan yerel değişken türlerine sahipse
yıkıcılar, istisna belirtimi aslında işlevi küçültecek
çünkü bu değişkenler için EH temizlemeleri optimize edilebilir. anlamsal
etkisi, böyle bir istisna ile bir fonksiyondan atılan bir istisnadır.
belirtim, "beklenmedik" yerine "sonlandırma" çağrısıyla sonuçlanacaktır.

-fno-operatör-adları
Operatör adı anahtar sözcüklerini "ve", "bitand", "bitor", "compl", "not", "veya" olarak ele almayın.
ve "xor" anahtar kelimeler olarak eş anlamlıdır.

-fno-isteğe bağlı-diags
Standardın derleyicinin yayınlamasına gerek olmadığını söylediği tanılamayı devre dışı bırakın.
Şu anda, G++ tarafından yayınlanan bu tür tek tanılama, bir ad için yapılan tanıdır.
bir sınıf içinde birden fazla anlam.

-fmüsamahakar
Uygun olmayan kodla ilgili bazı tanılamaları hatalardan uyarılara düşürün. Böylece,
kullanma -fmüsamahakar bazı uygun olmayan kodların derlenmesine izin verecektir.

-fno-güzel-şablonlar
Bir hata mesajı, bir fonksiyon şablonunun uzmanlaşmasına atıfta bulunduğunda, derleyici
normalde şablonun imzasını ve ardından şablon argümanlarını yazdırır
ve imzadaki herhangi bir typedefs veya typenames (örneğin, "void f(T) [with T = int]" yerine)
"void f(int)") yerine hangi şablonun dahil olduğu açıktır. Bir hata olduğunda
mesaj bir sınıf şablonunun uzmanlığına atıfta bulunur, derleyici herhangi bir şeyi atlayacaktır.
o şablon için varsayılan şablon bağımsız değişkenleriyle eşleşen şablon bağımsız değişkenleri. Eğer
bu davranışlardan herhangi biri hata mesajını anlamayı zorlaştırır.
kullanarak daha kolay -fno-güzel-şablonlar onları devre dışı bırakacaktır.

-frepo
Bağlantı zamanında otomatik şablon örneğini etkinleştirin. Bu seçenek aynı zamanda
-fno-örtük-şablonlar.

-fno-rtti
tarafından kullanılmak üzere sanal işlevlere sahip her sınıf hakkında bilgi oluşturulmasını devre dışı bırakın.
C++ çalışma zamanı tipi tanımlama özellikleri (dinamik_cast ve typeid). yapmazsan
dilin bu kısımlarını kullanın, bu bayrağı kullanarak biraz yer kazanabilirsiniz. Not
bu istisna işleme aynı bilgileri kullanır, ancak gerektiğinde üretecektir.
The dinamik_cast operatör, çalışma zamanı gerektirmeyen yayınlar için hala kullanılabilir
tür bilgisi, yani "void *" veya açık temel sınıflara yayın yapar.

-fstats
Derlemenin sonunda ön uç işleme hakkında istatistikler yayınlayın. Bu
bilgiler genellikle yalnızca G++ geliştirme ekibi için yararlıdır.

-fstrict-enums
Derleyicinin, numaralandırılmış türde bir değer olduğu varsayımını kullanarak optimize etmesine izin verin.
numaralandırmanın değerlerinden yalnızca biri olabilir (C++ standardında tanımlandığı gibi;
temel olarak, gereken minimum bit sayısıyla temsil edilebilen bir değerdir.
tüm numaralandırıcıları temsil eder). Program aşağıdakileri kullanıyorsa bu varsayım geçerli olmayabilir.
rastgele bir tamsayı değerini numaralandırılmış türe dönüştürmek için bir döküm.

-fşablon derinliği=n
Şablon sınıfları için maksimum örnekleme derinliğini şu şekilde ayarlayın: n. üzerinde bir sınır
şablon sırasında sonsuz özyinelemeleri algılamak için şablon örnekleme derinliği gereklidir
sınıf somutlaştırma. ANSI/ISO C++ uyumlu programlar maksimum
17'den büyük derinlik (C++ 1024'de 11 olarak değiştirildi). Varsayılan değer 900'dür, çünkü
derleyici bazı durumlarda 1024'e ulaşmadan önce yığın alanı tükenebilir.

-fno-threadsafe-statik
İş parçacığı için C++ ABI'de belirtilen rutinleri kullanmak için fazladan kod göndermeyin.
yerel statiğin güvenli başlatılması. Kod boyutunu küçültmek için bu seçeneği kullanabilirsiniz.
iş parçacığı için güvenli olması gerekmeyen kodda biraz.

-sigorta-cxa-atexit
Statik depolama süresi olan nesneler için yıkıcıları "__cxa_atexit" ile kaydedin
"atexit" işlevi yerine işlev. Bu seçenek tamamen için gereklidir
Statik yıkıcıların standartlara uygun şekilde ele alınması, ancak yalnızca C'niz varsa çalışır
kitaplık "__cxa_atexit" i destekler.

-fno-use-cxa-get-istisna-ptr
"__cxa_get_exception_ptr" çalışma zamanı rutinini kullanmayın. Bu neden olacak
"std::uncaught_exception" yanlış olabilir, ancak çalışma zamanı rutini
mevcut değil.

-fvisibility-satır içi-gizli
Bu anahtar, kullanıcının işaretçileri satır içi ile karşılaştırmaya çalışmadığını bildirir.
iki işlevin adreslerinin farklı şekillerde alındığı işlevler veya yöntemler
paylaşılan nesneler

Bunun etkisi, GCC'nin satır içi yöntemleri etkin bir şekilde işaretleyebilmesidir.
"__attribute__ ((görünürlük ("gizli")))" dışa aktarmada görünmemeleri için
bir DSO tablosudur ve DSO içinde kullanıldığında PLT dolaylılığı gerektirmez.
Bu seçeneğin etkinleştirilmesi, bir DSO'nun yükleme ve bağlantı süreleri üzerinde çarpıcı bir etkiye sahip olabilir.
kitaplık ağırlaştığında dinamik dışa aktarma tablosunun boyutunu büyük ölçüde azaltır
şablonların kullanımı.

Bu anahtarın davranışı, yöntemleri gizli olarak işaretlemekle tamamen aynı değildir.
doğrudan, çünkü işleve veya nedene özgü statik değişkenleri etkilemez.
derleyici, işlevin yalnızca bir paylaşılan nesnede tanımlandığını çıkartır.

Etkisini reddetmek için bir yöntemi açıkça görünürlüğe sahip olarak işaretleyebilirsiniz.
bu yöntem için geçiş yapın. Örneğin, işaretçileri bir
belirli satır içi yöntemi, varsayılan görünürlüğe sahip olarak işaretleyebilirsiniz. işaretleme
açık görünürlüğe sahip çevreleyen sınıfın hiçbir etkisi olmaz.

Açıkça başlatılmış satır içi yöntemler, bağlantıları nedeniyle bu seçenekten etkilenmez.
aksi takdirde paylaşılan bir kitaplık sınırını geçebilir.

-fvisibility-ms-uyumluluğu
Bu bayrak, GCC'nin C++ bağlantı modelini oluşturmak için görünürlük ayarlarını kullanmaya çalışır
Microsoft Visual Studio ile uyumludur.

Bayrak, GCC'nin bağlantı modelinde şu değişiklikleri yapar:

1. Varsayılan görünürlüğü "gizli" olarak ayarlar, örneğin -fvisibility=gizli.

2. Türler, ancak üyeleri değil, varsayılan olarak gizli değildir.

3. Tek Tanım Kuralı, açık görünürlüğü olmayan türler için gevşetilmiştir
birden fazla farklı paylaşılan nesnede tanımlanan özellikler: bunlar
Bu seçenek kullanıldığında izin verilmiş olsaydı, bildirimlere izin verilir.
kullanılmamış.

Yeni kodda kullanmak daha iyidir -fvisibility=gizli ve bu sınıfları dışa aktarın
dışarıdan görünür olması amaçlanmıştır. Maalesef kodun güvenmesi mümkündür,
belki yanlışlıkla, Visual Studio davranışında.

Bu değişikliklerin sonuçları arasında, aynı türden statik veri üyelerinin
aynı ada sahip ancak farklı paylaşılan nesnelerde tanımlanmış farklı olacaktır, bu nedenle
birini değiştirmek diğerini değiştirmez; ve bu, tanımlanan işlev üyelerine işaret eder
farklı paylaşılan nesnelerde eşit olarak karşılaştırılamayabilir. Bu bayrak verildiğinde, bir
Aynı ada sahip türleri farklı şekilde tanımlamak için ODR'nin ihlali.

-fno-zayıf
Bağlayıcı tarafından sağlanmış olsa bile zayıf sembol desteği kullanmayın. Varsayılan olarak, G++
varsa zayıf semboller kullanır. Bu seçenek yalnızca test için mevcuttur ve
son kullanıcılar tarafından kullanılmamalıdır; kalitesiz kodla sonuçlanacak ve hiçbir faydası olmayacaktır.
Bu seçenek, G++'ın gelecekteki bir sürümünde kaldırılabilir.

-nostdinc++
C++'a özgü standart dizinlerde başlık dosyalarını aramayın, ancak
yine de diğer standart dizinleri arayın. (Bu seçenek,
C++ kitaplığı.)

Ayrıca bu optimizasyon, uyarı ve kod oluşturma seçeneklerinin yalnızca anlamları vardır.
C++ programları için:

-fno-varsayılan-satır içi
varsayma inline bir sınıf kapsamı içinde tanımlanan işlevler için.
Bu işlevlerin satır içi işlevler gibi bağlantıya sahip olacağını unutmayın; sadece yapmayacaklar
varsayılan olarak satır içi olmalıdır.

-Wabi (Yalnızca C, Objective-C, C++ ve Objective-C++)
G++, muhtemelen satıcıdan bağımsız kodla uyumlu olmayan kod oluşturduğunda uyar
C++ ABI. Tüm bu tür durumlar hakkında uyarmak için çaba gösterilmesine rağmen,
G ++ üretiyor olsa da, muhtemelen uyarılmayan bazı durumlar
uyumsuz kod olmasına rağmen uyarıların verildiği durumlar da olabilir.
oluşturulan kod uyumlu olacaktır.

Eğer endişeleriniz varsa bu uyarılardan kaçınmak için kodunuzu yeniden yazmalısınız.
G++ tarafından oluşturulan kodun, G++ tarafından oluşturulan kodla ikili uyumlu olmayabileceği gerçeği
diğer derleyiciler.

Bilinen uyumsuzluklar -fabi-sürüm=2 (varsayılan) şunları içerir:

· Tip olmayan bir şablon parametresine sahip referans tipine sahip bir şablon karıştırılır
yanlış:

harici int N;
şablon yapı S {};
boşluk n (S ) {2}

Bu sabittir -fabi-sürüm=3.

· "__attribute ((vector_size))" kullanılarak bildirilen SIMD vektör türleri, bir
vektörleri alan fonksiyonların aşırı yüklenmesine izin vermeyen standart olmayan yol
farklı boyutlarda.

Mangling değiştirilir -fabi-sürüm=4.

Bilinen uyumsuzluklar -fabi-sürüm=1 şunları içerir:

· Bit alanları için kuyruk dolgusunun yanlış kullanımı. G++ verileri paketlemeye çalışabilir
temel sınıfla aynı bayta. Örneğin:

yapı A { sanal boşluk f(); int f1 : 1; };
yapı B : genel A { int f2 : 1; };

Bu durumda, G++ "B::f2"yi "A::f1" ile aynı bayta yerleştirir; diğer derleyiciler
olmaz. Açıkça "A"yı doldurarak bu sorunu önleyebilirsiniz, böylece boyutu
platformunuzdaki bayt boyutunun bir katıdır; bu G++ ve diğer
derleyicileri aynı şekilde "B" düzenine yerleştirir.

· Sanal bazlar için kuyruk dolgusunun yanlış kullanımı. G++ kuyruk kullanmaz
sanal üsleri düzenlerken dolgu. Örneğin:

yapı A { sanal boşluk f(); karakter c1; };
yapı B { B(); karakter c2; };
yapı C : genel A, genel sanal B {};

Bu durumda, G++ "B"yi "A" için kuyruk dolgusuna yerleştirmez; başka
derleyiciler olacaktır. Açıkça "A"yı doldurarak bu sorunu önleyebilirsiniz, böylece
boyut, hizalamanın bir katıdır (sanal temel sınıfları yok sayar); bu olacak
G++ ve diğer derleyicilerin "C" düzenini aynı şekilde düzenlemesine neden olur.

· Bildirilen genişlikleri genişliklerinden daha büyük olan bit alanlarının yanlış işlenmesi
bit alanları bir birlik içinde göründüğünde temel türler. Örneğin:

birleşim U { int i : 4096; };

Bir "int" in 4096 bit içermediğini varsayarsak, G++ birleşimi çok küçük yapacaktır.
bir "int" içindeki bit sayısına göre.

· Boş sınıflar yanlış ofsetlere yerleştirilebilir. Örneğin:

yapı A {};

yapı B {
bir;
sanal boşluk f();
};

yapı C : genel B, genel A {};

G++, "C"nin "A" temel sınıfını sıfırdan farklı bir uzaklığa yerleştirir; yerleştirilmelidir
ofset sıfırda. G++ yanlışlıkla "B"nin "A" veri üyesinin
zaten ofset sıfırda.

· Türleri "typename" veya şablon şablonu içeren şablon işlevlerinin adları
parametreler yanlış yönetilebilir.

şablon
void f(tip adı Q::X) {}

şablon sınıf Q>
void f(tür adı Q ::X) {}

Bu şablonların örneklemeleri yanlış şekilde karıştırılabilir.

Ayrıca psABI ile ilgili değişiklikleri de uyarır. Bu noktada bilinen psABI değişiklikleri şunları içerir:

· SYSV/x86-64 için, long double ile birleşimden geçerken, şu şekilde değiştirilir
psABI'de belirtildiği gibi bellek. Örneğin:

birlik U {
uzun çift ld;
int ben;
};

"Birlik U" her zaman bellekte geçirilecektir.

-Wctor-dtor-gizlilik (Yalnızca C++ ve Objective-C++)
Bir sınıf kullanılamaz göründüğünde uyar, çünkü o sınıftaki tüm yapıcılar veya yıkıcılar
sınıf özeldir ve ne arkadaşları ne de genel statik üye işlevleri vardır.

-Wdelete-sanal olmayan-dtor (Yalnızca C++ ve Objective-C++)
ne zaman uyar silmek sanal işlevlere sahip bir sınıfın örneğini yok etmek için kullanılır
ve sanal olmayan yıkıcı. Türetilmiş bir sınıfın örneğini silmek güvenli değildir
temel sınıfın sanal bir özelliği yoksa, bir temel sınıfa bir işaretçi aracılığıyla
yıkıcı. Bu uyarı tarafından etkinleştirildi -Duvar.

- Daralma (Yalnızca C++ ve Objective-C++)
İçinde C++ 11 tarafından yasaklanan bir daraltma dönüşümü gerçekleştiğinde uyar { }, Örneğin

int ben = { 2.2 }; // hata: double'dan int'e daraltma

Bu bayrak dahildir -Duvar ve -Wc++11-uyumluluk.

-std=c++11 ile, -Wno-daraltma standardın gerektirdiği tanılamayı bastırır.
Bunun iyi biçimlendirilmiş kodun anlamını etkilemediğini unutmayın; dönüşümleri daraltmak
hala SFINAE bağlamında kötü biçimlendirilmiş olarak kabul edilir.

-Wnohariç (Yalnızca C++ ve Objective-C++)
Bir işleve yapılan çağrı nedeniyle bir noexcept ifadesi false olarak değerlendirdiğinde uyar
fırlatmayan bir istisna belirtimine sahip olmayan (ör. atmak() or istisnasız)
ancak derleyici tarafından asla bir istisna oluşturmadığı bilinir.

-Wnon-sanal-dtor (Yalnızca C++ ve Objective-C++)
Bir sınıf, içinde sanal işlevlere ve erişilebilir sanal olmayan yıkıcıya sahip olduğunda uyar.
bu durumda türetilmiş bir sınıfın örneğini silmek mümkün ancak güvenli olmaz
temel sınıfa bir işaretçi aracılığıyla. Bu uyarı şu durumlarda da etkinleştirilir: -Weffc++ is
belirtildi.

-İhracatçı (Yalnızca C++ ve Objective-C++)
Kodda verilen üye başlatıcıların sırası sıra ile eşleşmediğinde uyar
içinde yürütülmeleri gerekir. Örneğin:

yapı A {
int ben;
intj;
A(): j (0), ben (1) { }
};

Derleyici, üye başlatıcıları için yeniden düzenleyecektir. i ve j eşleştirmek için
üyelerin bu yönde bir uyarıda bulunma talimatı verilir. Bu uyarı
tarafından etkinleştirildi -Duvar.

Aşağıdaki -B... seçeneklerden etkilenmez -Duvar.

-Weffc++ (Yalnızca C++ ve Objective-C++)
Scott Meyers'in aşağıdaki stil yönergelerinin ihlalleri konusunda uyarın Etkili
C++, İkinci baskı kitap:

· Madde 11: Aşağıdaki sınıflar için bir kopya oluşturucu ve bir atama operatörü tanımlayın.
dinamik olarak ayrılmış bellek.

· Madde 12: Oluşturucularda atamaya başlatmayı tercih edin.

· Madde 14: Yıkıcıları temel sınıflarda sanal yapın.

· Madde 15: "operator=" *buna bir referans döndürmesini sağlayın.

· Madde 23: Bir nesneyi döndürmeniz gerektiğinde bir referans döndürmeye çalışmayın.

Ayrıca Scott Meyers'in aşağıdaki stil yönergelerinin ihlalleri konusunda da uyarın. Daha
Etkili C + + kitap:

· Madde 6: Arttırma ve eksiltmenin önek ve sonek biçimlerini ayırt edin
operatörler.

· Madde 7: Asla "&&", "||" veya ","'yi aşırı yüklemeyin.

Bu seçeneği seçerken, standart kitaplık başlıklarının tümüne uymadığını unutmayın.
bu yönergelerden; kullanmak grep -v Bu uyarıları filtrelemek için.

-Wstrict-null-nöbetçi (Yalnızca C++ ve Objective-C++)
Nöbetçi olarak yayınlanmamış bir "NULL" kullanımı hakkında da uyarın. Sadece ile derleme yaparken
GCC, "NULL", "__null" olarak tanımlandığından, bu geçerli bir nöbetçidir. Null olmasına rağmen
işaretçi sabiti bir boş işaretçi değil, bir işaretçiyle aynı boyutta olması garanti edilir.
Işaretçi. Ancak bu kullanım, farklı derleyiciler arasında taşınabilir değildir.

-Wno-şablon olmayan-arkadaş (Yalnızca C++ ve Objective-C++)
Bir şablon içinde şablonlaştırılmamış arkadaş işlevleri bildirildiğinde uyarıları devre dışı bırakın.
G++'da açık şablon belirtimi desteğinin ortaya çıkmasından bu yana,
arkadaş niteliksiz bir kimliktir (yani, arkadaş foo(int)), C++ dil belirtimi
arkadaşın sıradan, şablon olmayan bir işlevi ilan etmesini veya tanımlamasını ister. (Bölüm
14.5.3). G++ açık belirtimi uygulamadan önce, niteliksiz kimlikler
şablonlaştırılmış bir işlevin özel bir uzmanlığı olarak yorumlanır. Çünkü bu
uygun olmayan davranış artık G++ için varsayılan davranış değildir,
-Wnon-şablon-arkadaş derleyicinin olası sorun için mevcut kodu kontrol etmesine izin verir
noktalar ve varsayılan olarak açıktır. Bu yeni derleyici davranışı ile kapatılabilir
-Wno-şablon olmayan-arkadaşuyumlu derleyici kodunu tutan ancak
faydalı uyarı.

-Wold tarzı oyuncular (Yalnızca C++ ve Objective-C++)
Bir C++ programında void olmayan bir türe eski tarz (C tarzı) bir döküm kullanılıyorsa uyar.
Yeni tarz yayınlar (dinamik_cast, static_cast, yeniden yorumla, ve const_cast)
istenmeyen etkilere karşı daha az savunmasız ve aranması çok daha kolay.

-Woverloaded-sanal (Yalnızca C++ ve Objective-C++)
Bir işlev bildirimi, bir temel sınıftan sanal işlevleri gizlediğinde uyar. İçin
örneğin:

yapı A {
sanal boşluk f();
};

yapı B: genel A {
geçersiz f(int);
};

"f"nin "A" sınıfı versiyonu "B" içinde gizlidir ve şöyle bir kod vardır:

B*b;
b->f();

derlemede başarısız olacaktır.

-Wno-pmf-dönüşümleri (Yalnızca C++ ve Objective-C++)
Bağlı bir işaretçiyi üye işlevine düz bir işleve dönüştürmek için tanılamayı devre dışı bırakın
Işaretçi.

-Wsign-promosyon (Yalnızca C++ ve Objective-C++)
Aşırı yük çözümü, imzasız veya numaralandırılmış türden bir promosyon seçtiğinde uyar:
aynı boyuttaki imzasız bir türe dönüşüm üzerinden imzalı bir tür. Öncesi
G++ sürümleri imzasızlığı korumaya çalışır, ancak standart,
mevcut davranış.

yapı A {
operatör int();
A& operatörü = (int);
};

ana ()
{
bir a,b;
bir = b;
}

Bu örnekte, G++ bir varsayılanı sentezleyecektir. A& Şebeke = (sabit A&);, karşı karşıya iken
kullanıcı tanımlı kullanacak Şebeke =.

Opsiyonlar Denetleme Objective-C ve Objective-C ++ Lehçeler
(NOT: Bu kılavuz, Objective-C ve Objective-C++ dillerini açıklamaz.
kendilerini.

Bu bölüm, yalnızca Objective-C için anlamlı olan komut satırı seçeneklerini açıklar.
ve Objective-C++ programlarının yanı sıra dilden bağımsız GNU programlarının çoğunu da kullanabilirsiniz.
derleyici seçenekleri. Örneğin, "some_class.m" dosyasını şu şekilde derleyebilirsiniz:

gcc -g -fgnu-runtime -O -c bazı_class.m

Bu örnekte, -fgnu-çalışma zamanı yalnızca Objective-C ve Objective-C++ için tasarlanmış bir seçenektir
programlar; diğer seçenekleri GCC tarafından desteklenen herhangi bir dilde kullanabilirsiniz.

Objective-C, C dilinin bir uzantısı olduğundan, Objective-C derlemelerinin
C ön ucuna özgü seçenekleri de kullanabilir (örn. -Geleneksel). Benzer şekilde,
Objective-C++ derlemeleri, C++'a özgü seçenekleri kullanabilir (örn. -Wabi).

İşte seçeneklerin bir listesi bir tek Objective-C ve Objective-C++ derlemek için
programlar:

-fconstant-string-sınıfı=sınıf adı
kullanım sınıf adı her değişmez dize için somutlaştırılacak sınıfın adı olarak
"@"..."" sözdizimi ile belirtilir. Varsayılan sınıf adı, aşağıdaki durumlarda "NXConstantString"dir:
GNU çalışma zamanı kullanılıyor ve NeXT çalışma zamanı kullanılıyorsa "NSConstantString"
kullanılır (aşağıya bakın). NS -fconstant-cfstring'ler seçeneği de varsa, seçeneği geçersiz kılar.
-fconstant-string-sınıfı "@"..."" değişmez değerlerinin sabit olarak düzenlenmesine ve ayarlanmasına neden olur
CoreFoundation dizeleri.

-fgnu-çalışma zamanı
Standart GNU Objective-C çalışma zamanı ile uyumlu nesne kodu oluşturun. Bu
çoğu sistem türü için varsayılandır.

-fnext-çalışma zamanı
NeXT çalışma zamanı ile uyumlu çıktı üretin. Bu, NeXT tabanlı için varsayılandır.
Darwin ve Mac OS X dahil sistemler. "__NEXT_RUNTIME__" makrosu, aşağıdaki durumlarda önceden tanımlanmıştır:
(ve yalnızca) bu seçenek kullanılırsa.

-fno-nil-alıcıları
Tüm Objective-C iletisinin bu iletide ("[alıcı iletisi:arg]") gönderildiğini varsayalım.
çeviri birimi, alıcının "nil" olmadığından emin olur. Bu daha fazlasını sağlar
çalışma zamanında kullanılacak verimli giriş noktaları. Bu seçenek yalnızca şurada mevcuttur:
NeXT çalışma zamanı ve ABI sürüm 0 veya 1 ile birlikte.

-fobjc-abi-sürüm=n
Sürümü kullan n Seçilen çalışma zamanı için Objective-C ABI. Bu seçenek
şu anda yalnızca NeXT çalışma zamanı için desteklenmektedir. Bu durumda, Sürüm 0,
özellikler ve diğer Objective-C 32 desteği olmayan geleneksel (2.0-bit) ABI
eklemeler. Sürüm 1, özellikleri destekleyen geleneksel (32 bit) ABI'dir ve
diğer Objective-C 2.0 eklemeleri. Sürüm 2, modern (64 bit) ABI'dir. eğer hiçbir şey değilse
belirtilen, varsayılan 0 bit hedef makinelerde Sürüm 32 ve 2 bit üzerinde Sürüm 64'dir.
hedef makineler.

-fobjc-call-cxx-cdtor'lar
Her Objective-C sınıfı için, örnek değişkenlerinden herhangi birinin bir C++ nesnesi olup olmadığını kontrol edin.
önemsiz olmayan bir varsayılan kurucu ile. Eğer öyleyse, özel bir "- (id) sentezleyin.
Herhangi bir üzerinde önemsiz olmayan varsayılan kurucuları çalıştıracak .cxx_construct" örnek yöntemi
bu tür örnek değişkenleri sırayla ve ardından "self" değerini döndürün. Benzer şekilde, varsa kontrol edin
örnek değişkeni, önemsiz olmayan bir yıkıcıya sahip bir C++ nesnesidir ve öyleyse, sentezleyin
tüm bu tür varsayılan yıkıcıları çalıştıracak özel bir "- (void) .cxx_destruct" yöntemi,
ters sırada.

Bu şekilde oluşturulan "- (id) .cxx_construct" ve "- (void) .cxx_destruct" yöntemleri
yalnızca geçerli Objective-C sınıfında bildirilen örnek değişkenler üzerinde çalışır,
üst sınıflardan miras kalanlar. Objective-C'nin sorumluluğundadır.
bir nesnenin kalıtım hiyerarşisinde bu tür tüm yöntemleri çağırmak için çalışma zamanı. Kimlik)
.cxx_construct" yöntemleri, yeni bir nesneden hemen sonra çalışma zamanı tarafından çağrılır
örnek tahsis edilir; "- (void) .cxx_destruct" yöntemleri çağrılacak
çalışma zamanı bir nesne örneğini serbest bırakmadan hemen önce.

Bu yazı itibariyle, yalnızca Mac OS X 10.4 ve sonraki sürümlerinde NeXT çalışma zamanı için destek vardır.
"- (id) .cxx_construct" ve "- (void) .cxx_destruct" yöntemlerini çağırmak.

-fobjc-doğrudan-gönderme
Mesaj göndericiye hızlı atlamaya izin verin. Darwin'de bu,
iletişim sayfası.

-fobjc-istisnalar
Objective-C'de yapılandırılmış özel durum işleme için sözdizimsel desteği etkinleştirin, buna benzer
C++ ve Java tarafından sunulanlar. Bu seçenek, Objective-C'yi kullanmak için gereklidir.
@try, @throw, @catch, @finally ve @synchronized anahtar kelimeleri. Bu seçenek mevcuttur
hem GNU çalışma zamanı hem de NeXT çalışma zamanı ile (ancak
Mac OS X 10.2 ve önceki sürümlerde NeXT çalışma zamanı).

-fobjc-gc
Objective-C ve Objective-C++ programlarında çöp toplamayı (GC) etkinleştirin. Bu seçenek
yalnızca NeXT çalışma zamanı ile kullanılabilir; GNU çalışma zamanının farklı bir çöpü var
özel derleyici bayrakları gerektirmeyen koleksiyon uygulaması.

-fobjc-nilcheck
ABI'nin 2. sürümüne sahip NeXT çalışma zamanı için, yöntemde sıfır alıcı olup olmadığını kontrol edin
gerçek yöntem çağrısını yapmadan önce çağrılar. Bu varsayılandır ve olabilir
kullanarak devre dışı -fno-objc-nilcheck. Sınıf yöntemleri ve süper çağrılar asla kontrol edilmez
nil için bu şekilde, bu bayrak neye ayarlanmış olursa olsun. Şu anda bu bayrak yapar
GNU çalışma zamanı veya NeXT çalışma zamanı ABI'nin daha eski bir sürümü kullanıldığında hiçbir şey olmaz.

-fobjc-std=objc1
GCC 1.0 tarafından tanınan dil olan Objective-C 4.0'ın dil sözdizimine uygundur.
Bu, yalnızca C/C++ diline Objective-C eklemelerini etkiler; etkilemez
ayrı C/C++ lehçesi tarafından kontrol edilen C/C++ standartlarına uygunluk
seçenek bayrakları. Bu seçenek Objective-C veya Objective-C++ ile kullanıldığında
derleyici, GCC 4.0 tarafından tanınmayan herhangi bir Objective-C sözdizimi reddedilir. Bu
Objective-C kodunuzun derlenebileceğinden emin olmanız gerekiyorsa kullanışlıdır.
GCC'nin eski sürümleri.

-yersiz-objc-sınıfları
Özel bir işaretleyici talimat verin ld(1) sonuçtaki nesnede statik olarak bağlanmamak
dosya ve izin ver dil(1) bunun yerine çalışma zamanında yüklemek için. Bu kullanılır
nesne dosyasının bulunduğu Düzelt ve Devam Et hata ayıklama modu ile birlikte
soru, program sırasında yeniden derlenebilir ve dinamik olarak yeniden yüklenebilir
programın kendisini yeniden başlatmaya gerek kalmadan yürütme. Şu anda, Düzelt-ve-
Devam etme işlevi yalnızca Mac'te NeXT çalışma zamanı ile birlikte kullanılabilir
OS X 10.3 ve üstü.

-fzero-bağlantı
NeXT çalışma zamanı için derlerken, derleyici genellikle çağrıları değiştirir.
"objc_getClass("...")" (derleme zamanında sınıfın adı bilindiğinde)
çalışma zamanını iyileştiren, yükleme zamanında başlatılan statik sınıf referansları
verim. belirterek -fzero-bağlantı flag bu davranışı bastırır ve neden olur
tutulacak "objc_getClass("...")" çağrıları. Bu, Zero-Link'te kullanışlıdır
bireysel sınıf uygulamalarının değiştirilmesine izin verdiği için hata ayıklama modu
program yürütme sırasında. GNU çalışma zamanı şu anda her zaman çağrıları tutar.
"objc_get_class("...")" komut satırı seçeneklerinden bağımsız olarak.

-gen-bildirimleri
Kaynak dosyada görülen tüm sınıflar için arabirim bildirimlerini adlı bir dosyaya dökümü
kaynakadi.decl.

-Wata-kesişme (Yalnızca Objective-C ve Objective-C++)
Bir Objective-C ataması çöp toplayıcı tarafından engellendiğinde uyar.

-Wno-protokol (Yalnızca Objective-C ve Objective-C++)
Bir sınıfın bir protokol uygulayacağı bildirilirse, her yöntem için bir uyarı verilir.
sınıf tarafından uygulanmayan protokolde. Varsayılan davranış,
sınıfta açıkça uygulanmayan her yöntem için bir uyarı yayınlayın, bir
yöntem uygulaması üst sınıftan devralınır. kullanırsanız -Wno-protokol
seçeneği, daha sonra üst sınıftan miras alınan yöntemlerin uygulandığı kabul edilir,
ve onlar için herhangi bir uyarı yapılmaz.

-Wselektör (Yalnızca Objective-C ve Objective-C++)
sırasında aynı seçici için farklı türlerde birden fazla yöntem bulunursa uyar.
derleme. Kontrol, son aşamadaki yöntemler listesinde gerçekleştirilir.
derleme. Ek olarak, bir ekranda görünen her seçici için bir kontrol gerçekleştirilir.
"@selector(...)" ifadesi ve bu seçici için karşılık gelen bir yöntem
derleme sırasında bulundu. Çünkü bu kontroller metot tablosunu sadece sonunda tarar.
derlemenin son aşaması ise, bu uyarılar üretilmez.
örneğin derleme sırasında bir hata bulunduğundan veya
-fsyntax-yalnızca seçeneği kullanılıyor.

-Wstrict-seçici-eşleştirme (Yalnızca Objective-C ve Objective-C++)
Bir değişken için farklı argüman ve/veya dönüş türlerine sahip birden fazla yöntem bulunursa uyar.
bir alıcıya bu seçiciyi kullanarak bir mesaj göndermeye çalışırken verilen seçici
"id" veya "Sınıf" yazın. Bu bayrak kapalı olduğunda (bu varsayılan davranıştır),
Derleyici, bulunan herhangi bir farklılık, aşağıdaki türlerle sınırlıysa, bu tür uyarıları atlayacaktır.
aynı boyutu ve hizalamayı paylaşın.

-Wundeclared-selektör (Yalnızca Objective-C ve Objective-C++)
Bildirilmemiş bir seçiciye atıfta bulunan bir "@selector(...)" ifadesi bulunursa uyar. A
daha önce bu ada sahip hiçbir yöntem bildirilmemişse seçici bildirilmemiş olarak kabul edilir.
"@selector(...)" ifadesi, açıkça bir @interface veya @protocol içinde
bildirimde veya dolaylı olarak bir @implementation bölümünde. Bu seçenek her zaman gerçekleştirir
"@selector(...)" ifadesi bulunur bulunmaz kontrolleri yapılırken -Wselektör bir tek
derlemenin son aşamasında kontrollerini gerçekleştirir. Bu aynı zamanda kodlamayı da zorlar
yöntemlerin ve seçicilerin kullanılmadan önce bildirilmesi gerektiğine dair stil kuralı.

-baskı-objc-çalışma zamanı bilgisi
Varsa, değere göre iletilen en büyük yapıyı açıklayan C başlığını oluşturun.

Opsiyonlar için Control tanı Mesajlar biçimlendirme
Geleneksel olarak, tanılama mesajları çıkış cihazının özelliklerinden bağımsız olarak biçimlendirilir.
görünüş (örn. genişliği, ...). Aşağıda açıklanan seçenekler aşağıdakileri kontrol etmek için kullanılabilir:
tanı mesajları biçimlendirme algoritması, örneğin satır başına kaç karakter, ne sıklıkta
kaynak konum bilgisi rapor edilmelidir. Şu anda yalnızca C++ ön ucu
bu seçenekleri onurlandırın. Ancak yakın gelecekte, kalan cephenin
uçlar onları doğru bir şekilde sindirebilirdi.

-fmessage-uzunluğu=n
Hata mesajlarını yaklaşık satırlara sığacak şekilde biçimlendirmeye çalışın. n karakter.
için varsayılan 72 karakterdir g ++ ve 0 tarafından desteklenen ön uçların geri kalanı için
GCC. Eğer n sıfırsa, satır kaydırma yapılmayacaktır; her hata mesajı görünecektir
tek bir satırda.

-fdiagnostics-show-location=bir kez
Yalnızca satır kaydırma modunda anlamlıdır. Teşhis mesajları muhabirine şunları yapması talimatını verir:
yaymak bir Zamanlar kaynak konum bilgisi; yani, mesajın sığamayacak kadar uzun olması durumunda
tek bir fiziksel satırda ve sarılması gerekiyor, kaynak konum yayılmayacak
(ön ek olarak) müteakip devam satırlarında tekrar tekrar. bu
Varsayılan davranış.

-fdiagnostics-show-location=her satır
Yalnızca satır kaydırma modunda anlamlıdır. Teşhis mesajları muhabirine şunları yapması talimatını verir:
sonuçlanan fiziksel hatlar için aynı kaynak konum bilgisini (önek olarak) yayar.
tek bir satıra sığmayacak kadar uzun bir mesajı kırma sürecinden.

-fno-diagnostics-show-seçeneği
Varsayılan olarak, yayılan her tanılama, komut satırı seçeneğini belirten metni içerir
tanılamayı doğrudan kontrol eden (böyle bir seçenek tanı tarafından biliniyorsa)
makineler). belirterek -fno-diagnostics-show-seçeneği bayrak bunu bastırır
davranışı.

Opsiyonlar için Talep et or Bastır Uyarılar
Uyarılar, doğası gereği olmayan yapıları bildiren tanı mesajlarıdır.
hatalıdır ancak risklidir veya bir hata olabileceğini düşündürür.

Aşağıdaki dilden bağımsız seçenekler, belirli uyarıları etkinleştirmez, ancak
GCC tarafından üretilen teşhis türleri.

-fsyntax-yalnızca
Kodu sözdizimi hataları için kontrol edin, ancak bunun ötesinde bir şey yapmayın.

-fmax-hataları=n
Maksimum hata mesajı sayısını şu şekilde sınırlar: n, bu noktada GCC yerine
kaynak kodu işlemeye devam etmeye çalışmaktan daha fazla. Eğer n 0 (varsayılan),
üretilen hata mesajlarının sayısında bir sınırlama yoktur. Eğer -Wfatal-hatalar aynı zamanda
belirtilen, daha sonra -Wfatal-hatalar bu seçeneğe göre önceliklidir.

-w Tüm uyarı mesajlarını engelle.

-Whata
Tüm uyarıları hatalara dönüştürün.

-Hata=
Belirtilen uyarıyı bir hataya dönüştürün. Bir uyarı için belirteç eklenir,
örneğin -Werror=anahtar tarafından kontrol edilen uyarıları açar -W anahtarı hatalara dönüşür.
Bu anahtar, olumsuzlamak için kullanılmak üzere negatif bir biçim alır. -Whata özel uyarılar için,
örneğin -Wno-hata=anahtar yapar -W anahtarı uyarılar hata olmamasına rağmen, -Whata
yürürlüktedir.

Her kontrol edilebilir uyarı için uyarı mesajı, kontrol eden seçeneği içerir.
uyarı. Bu seçenek daha sonra ile kullanılabilir -Hata= ve -Wno-hatası= tarif edildiği gibi
üstünde. (Uyarı mesajındaki seçeneğin yazdırılması,
-fno-diagnostics-show-seçeneği bayrak.)

belirterek unutmayın -Hata=foo otomatik olarak ima eder -Wfoo. Bununla birlikte, -Wno-hatası=foo
hiçbir şey ifade etmez.

-Wfatal-hatalar
Bu seçenek, derleyicinin ilk hata oluştuğunda derlemeyi iptal etmesine neden olur.
Devam etmeye ve daha fazla hata mesajı yazdırmaya çalışmak yerine.

Başlayan seçeneklerle birçok özel uyarı talep edebilirsiniz. -WÖrneğin, -Wimplicit
örtülü beyanlar hakkında uyarı talep etmek. Bu özel uyarı seçeneklerinin her biri ayrıca
negatif bir form başlangıcı var -hayır- uyarıları kapatmak için; Örneğin, -Wno-örtük.
Bu kılavuz, varsayılan olmayan iki formdan yalnızca birini listeler. Daha fazlası için,
dile özgü seçenekler ayrıca bkz. C + + diyalekt Opsiyonlar ve Objective-C ve
Objective-C ++ diyalekt Opsiyonlar.

Tanınmayan bir uyarı seçeneği istendiğinde (örn. -Bilinmeyen-uyarı), GCC yayacaktır
seçeneğin tanınmadığını belirten bir tanılama. Ancak, eğer -hayır- form
kullanıldığında davranış biraz farklıdır:
-Bilinmeyen-uyarı başka teşhisler üretilmedikçe. Bu, kullanımına izin verir
yeni -hayır- eski derleyicilerle seçenekler, ancak bir şeyler ters giderse, derleyici uyaracaktır
tanınmayan bir seçeneğin kullanıldığını.

- bilgiçlik
Katı ISO C ve ISO C++ tarafından talep edilen tüm uyarıları yayınlayın; tüm programları reddet
yasak uzantıları ve ISO C ve ISO'ya uymayan diğer bazı programları kullanın
C++. ISO C için, herhangi bir belgede belirtilen ISO C standardının sürümünü takip eder. -std
kullanılan seçenek.

Geçerli ISO C ve ISO C++ programları bu seçenekle veya bu seçenek olmadan düzgün bir şekilde derlenmelidir.
(nadiren birkaçı gerektirse de -ansi ya da -std gerekli sürümü belirten seçenek
ISO C). Ancak bu seçenek olmadan, belirli GNU uzantıları ve geleneksel C ve
C++ özellikleri de desteklenmektedir. Bu seçenekle reddedilirler.

- bilgiçlik olan alternatif anahtar kelimelerin kullanımı için uyarı mesajlarına neden olmaz.
isimleri ile başlar ve biter __. Pedantik uyarılar da ifadede devre dışı bırakıldı
"__extension__" izler. Ancak, yalnızca sistem başlık dosyaları bunları kullanmalıdır.
kaçış yolları; uygulama programları bunlardan kaçınmalıdır.

Bazı kullanıcılar kullanmaya çalışır - bilgiçlik programları sıkı ISO C uygunluğu için kontrol etmek. Onlar
çok geçmeden istediklerini tam olarak yapmadığını fark eder: ISO dışı bazı uygulamalar bulur,
ama hepsi değil --- sadece ISO C'ye uygun olanlar gerektirir bir teşhis ve diğerleri için
hangi teşhisler eklendi.

ISO C'ye uymayan herhangi bir hatayı bildirme özelliği, bazı durumlarda yararlı olabilir,
ancak önemli ölçüde ek çalışma gerektirecek ve diğerlerinden oldukça farklı olacaktır.
- bilgiçlik. Yakın gelecekte böyle bir özelliği desteklemeyi planlamıyoruz.

ile belirtilen standart nerede -std gibi bir GNU genişletilmiş C lehçesini temsil eder.
gnu90 or gnu99, karşılık gelen var baz standart, üzerinde ISO C sürümü
GNU genişletilmiş lehçesi dayanmaktadır. gelen uyarılar - bilgiçlik oldukları yerde verilir
temel standart tarafından gereklidir. (Bu tür uyarıların yapılmasının bir anlamı olmayacaktır.
tanım gereği GNU olduğundan, yalnızca belirtilen GNU C lehçesinde olmayan özellikler için
C lehçeleri, derleyicinin verilen seçenekle desteklediği tüm özellikleri içerir ve
uyaracak bir şey olmazdı.)

-pedantik-hatalar
Facebok sayfasını beğenin : - bilgiçlik, ancak uyarılar yerine hatalar üretilir.

-Duvar
Bu, bazı kullanıcıların dikkate aldığı yapılarla ilgili tüm uyarıları etkinleştirir.
sorgulanabilir ve kaçınılması (veya uyarıyı önlemek için değiştirilmesi) kolaydır.
makrolarla birleşir. Bu aynı zamanda açıklanan bazı dile özgü uyarıları da etkinleştirir.
in C + + diyalekt Opsiyonlar ve Objective-C ve Objective-C ++ diyalekt Opsiyonlar.

-Duvar aşağıdaki uyarı işaretlerini açar:

-Waddress -Warray sınırları (sadece -O2) -Wc++11-uyumluluk -Wchar-abonelikleri
-Wenum-karşılaştırma (C/Objc'de; bu, C++'da varsayılan olarak açıktır) -Wimplicit-int (C ve
Yalnızca Objective-C) -Wimplicit-fonksiyon-bildirimi (Yalnızca C ve Objective-C) -Wyorum
-W biçimi -Wana (yalnızca C/ObjC için ve -bağımsız) -Wbelki-başlatılmamış
-Weksis-parantez -Wonnull -W parantezler -Wişaretçi-işareti -İhracatçı -Wreturn-tipi
-Sıra noktası -Wsign-karşılaştırma (yalnızca C++'da) - Kısıtlı yumuşatma -Wstrict-taşma=1
-W anahtarı -Wtrigraflar -Başlatıldı -Bilinmeyen-pragmalar -Wunused-fonksiyonu
-Wunused-etiket -Wunused-değer -Wunused-değişken -Wvolatile-kayıt-var

Bazı uyarı işaretlerinin şu şekilde ima edilmediğine dikkat edin: -Duvar. Bazıları uyarıyor
Kullanıcıların genellikle şüpheli bulmadığı, ancak
bazen kontrol etmek isteyebilirsiniz; diğerleri inşaatlar hakkında uyarır
bazı durumlarda kaçınılması gerekli veya zordur ve değiştirmenin basit bir yolu yoktur.
uyarıyı bastırmak için kod. Bazıları tarafından etkinleştirildi -Ekstra ama birçoğu
ayrı ayrı etkinleştirilmelidir.

-Ekstra
Bu, tarafından etkinleştirilmeyen bazı ekstra uyarı bayraklarını etkinleştirir. -Duvar. (Bu seçenek kullanıldı
çağrılacak -W. Eski ad hala destekleniyor, ancak yeni ad daha fazla
tanımlayıcı.)

-Yıkılmış -boş-vücut -Wigned-eleyenler -Wmissing-alan-başlatıcıları
-Wmissing-parametre tipi (Yalnızca C) -Wold-style-deklarasyonu (Yalnızca C) -Woverride-init
-Wsign-karşılaştırma -Wtype-limitleri -Başlatıldı -Wunused-parametre (sadece -Kullanılmamış or
-Duvar) -Wunused-but-set-parametresi (sadece -Kullanılmamış or -Duvar)

Seçenek -Ekstra ayrıca aşağıdaki durumlar için uyarı mesajları da yazdırır:

· Bir işaretçi, sıfır tamsayı ile karşılaştırılır: <, <=, >ya da >=.

· (Yalnızca C++) Bir numaralandırıcı ve bir numaralandırıcı olmayan her ikisi de koşullu olarak görünür.
ifadesi.

· (Yalnızca C++) Belirsiz sanal tabanlar.

· (Yalnızca C++) Bildirilmiş bir diziye abone olma kayıt olmak.

· (Yalnızca C++) Bildirilmiş bir değişkenin adresini almak kayıt olmak.

· (Yalnızca C++) Bir temel sınıf, türetilmiş bir sınıfın kopya oluşturucusunda başlatılmaz.

-Wchar-abonelikleri
Bir dizi abonesinin türü "char" ise uyar. Bu, yaygın bir hata nedenidir, çünkü
programcılar genellikle bu türün bazı makinelerde imzalandığını unutur. Bu uyarı
tarafından etkinleştirildi -Duvar.

-Wyorum
Yorum başlatma dizisi olduğunda uyar /* bir /* yorum yapın veya ne zaman bir
Ters Eğik Çizgi-Yeni Satır bir // Yorum. Bu uyarı tarafından etkinleştirildi -Duvar.

-Wno-kapsam-uyumsuzluğu
kullanırken geri bildirim profilleri eşleşmezse uyar. -fprofile-kullanımı seçenek. Eğer bir
kaynak dosya arasında değiştirildi -fprofil-gen ve -fprofile-kullanımı, dosyalar ile
profil geri bildirimi kaynak dosyayla eşleşmeyebilir ve GCC profili kullanamaz
geri bildirim bilgileri. Varsayılan olarak, bu uyarı etkindir ve bir hata olarak kabul edilir.
-Wno-kapsam-uyumsuzluğu uyarıyı devre dışı bırakmak için kullanılabilir veya
-Wno-hata=kapsam-uyumsuzluğu hatayı devre dışı bırakmak için kullanılabilir. Hatayı devre dışı bırakma
çünkü bu uyarı kodun optimize edilmemiş olmasına neden olabilir ve yalnızca şu durumlarda yararlıdır:
mevcut bir kod tabanındaki hata düzeltmeleri gibi çok küçük değişiklikler. tamamen devre dışı
uyarı tavsiye edilmez.

-Wno-cpp
(Yalnızca C, Objective-C, C++, Objective-C++ ve Fortran)

"#warning" yönergeleri tarafından yayılan uyarı mesajlarını bastırın.

-Wdouble-promosyon (Yalnızca C, C++, Objective-C ve Objective-C++)
"Float" türünde bir değer dolaylı olarak "double" olarak yükseltildiğinde bir uyarı verin. CPU'lar
32 bitlik "tek duyarlıklı" kayan nokta birimi ile donanımda "kayan nokta" uygular,
ancak yazılımda "çift" öykünme. Böyle bir makinede, kullanarak hesaplamalar yapmak
"çift" değerler, yazılım için gereken ek yük nedeniyle çok daha pahalıdır
öykünme.

"Çift" ile hesaplamaları yanlışlıkla yapmak kolaydır, çünkü kayan nokta
değişmezler örtük olarak "double" türündedir. Örneğin:

şamandıra alanı (yüzme yarıçapı)
{
dönüş 3.14159 * yarıçap * yarıçap;
}

derleyici tüm hesaplamayı "çift" ile gerçekleştirecektir çünkü kayan-
nokta değişmezi "çift" dir.

-W biçimi
Argümanların sağlandığından emin olmak için "printf" ve "scanf" vb. çağrılarını kontrol edin.
belirtilen biçim dizesine uygun türlere sahip ve dönüşümlerin
biçim dizesinde belirtilen anlam ifade eder. Buna standart işlevler dahildir ve
diğerleri "printf", "scanf", "strftime" ve format öznitelikleriyle belirtilir.
"strfmon" (C standardında olmayan bir X/Open uzantısı) aileleri (veya diğer hedef-
belirli aileler). Biçim öznitelikleri kontrol edilmeden hangi işlevler kontrol edilir?
belirtilen, seçilen standart sürüme ve bu tür işlev kontrollerine bağlıdır
belirtilen nitelik olmadan devre dışı bırakılır -bağımsız or -fno-yerleşik.

Biçimler, GNU libc sürüm 2.2 tarafından desteklenen biçim özelliklerine göre kontrol edilir.
Bunlar, tüm ISO C90 ve C99 özelliklerinin yanı sıra Single Unix'in özelliklerini içerir.
Spesifikasyon ve bazı BSD ve GNU uzantıları. Diğer kitaplık uygulamaları
tüm bu özellikleri destekler; GCC, ötesine geçen özellikler hakkında uyarıyı desteklemez
belirli bir kitaplığın sınırlamaları. Ancak, eğer - bilgiçlik ile kullanılır -W biçimi,
Seçilen standart sürümde olmayan format özellikleri hakkında uyarılar verilecektir (ancak
"strfmon" biçimleri için değil, çünkü bunlar C standardının herhangi bir sürümünde değil).

Dan beri -W biçimi ayrıca çeşitli işlevler için boş biçimli bağımsız değişkenleri kontrol eder, -W biçimi
ayrıca ima eder -Wonnull.

-W biçimi dahil -Duvar. Biçim denetiminin bazı yönleri üzerinde daha fazla denetim için,
Seçenekler -Wformat-y2k, -Wno-format-ekstra argümanlar, -Wno-format-sıfır uzunluk,
-Wformat-değişmez, -Wformat-güvenlik, ve -W biçimi=2 var ama yok
de dahil -Duvar.

NOT: Ubuntu 8.10 ve sonraki sürümlerde bu seçenek varsayılan olarak C, C++,
ObjC, ObjC++. Devre dışı bırakmak için şunu kullanın: -W biçimi=0.

-Wformat-y2k
If -W biçimi belirtilirse, yalnızca bir sonuç verebilecek "strftime" biçimleri hakkında da uyarır.
iki haneli yıl

-Wno-format-nul içerir
If -W biçimi belirtilirse, NUL bayt içeren biçim dizeleri hakkında uyarmayın.

-Wno-format-ekstra argümanlar
If -W biçimi belirtilirse, bir "printf" veya "scanf" için fazla argümanlar hakkında uyarmayın
biçim işlevi. C standardı, bu tür argümanların yok sayılacağını belirtir.

Kullanılmayan argümanların, ile belirtilen kullanılmış argümanlar arasında olduğu durumlarda $
işlenen numarası özellikleri, normalde uyarılar verilir, çünkü
uygulama, kullanılmayanları atlamak için "va_arg" a ne tür geçeceğini bilemedi
argümanlar. Ancak, "scanf" biçimleri söz konusu olduğunda, bu seçenek
Tek Unix Spesifikasyonundan bu yana kullanılmayan argümanların tümü işaretçi ise uyarı
bu tür kullanılmayan argümanlara izin verildiğini söylüyor.

-Wno-format-sıfır uzunluk
If -W biçimi belirtilirse, sıfır uzunluklu biçimler hakkında uyarmayın. C standardı
sıfır uzunluklu biçimlere izin verildiğini belirtir.

-Wformat-değişmez
If -W biçimi belirtilir, ayrıca biçim dizesi bir dize değişmezi değilse uyarır ve
bu nedenle, biçim işlevi biçim bağımsız değişkenlerini bir
"va_list".

-Wformat-güvenlik
If -W biçimi belirtilir, ayrıca temsil eden biçim işlevlerinin kullanımları hakkında uyarır.
olası güvenlik sorunları. Şu anda, bu "printf" çağrıları hakkında uyarır ve
"scanf", biçim dizesinin bir dize değişmezi olmadığı ve hiçbir
argümanları "printf (foo);" gibi biçimlendirin. Bu, formatta bir güvenlik açığı olabilir.
dize güvenilmeyen girdiden geldi ve şunları içeriyor %n. (Bu şu anda neyin bir alt kümesidir
-Wformat-değişmez hakkında uyarır, ancak gelecekte uyarılar eklenebilir
-Wformat-güvenlik dahil olmayan -Wformat-değişmez.)

NOT: Ubuntu 8.10 ve sonraki sürümlerde bu seçenek varsayılan olarak C, C++,
ObjC, ObjC++. Devre dışı bırakmak için şunu kullanın: -Wno-format-güvenlikveya tüm biçim uyarılarını devre dışı bırakın
ile -W biçimi=0. Biçim güvenliği uyarılarını önemli hale getirmek için şunu belirtin:
-Werror=format güvenliği.

-W biçimi=2
etkinleştirme -W biçimi artı biçim kontrolleri dahil değildir -W biçimi. Şu anda eşdeğer
-W biçimi -Wformat-değişmez -Wformat-güvenlik -Wformat-y2k.

-Wonnull
Null olmayan bir değer gerektirdiği için işaretlenen argümanlar için boş gösterici iletme konusunda uyar
"null olmayan" işlev özniteliği ile.

-Wonnull dahil -Duvar ve -W biçimi. ile devre dışı bırakılabilir. -Wno-null olmayan
seçeneği.

-Winit-öz (Yalnızca C, C++, Objective-C ve Objective-C++)
Kendileriyle başlatılan başlatılmamış değişkenler hakkında uyarın. Bunu not et
seçeneği yalnızca -Başlatıldı seçeneği.

Örneğin, GCC yalnızca aşağıdaki snippet'te "i"nin başlatılmamış olması konusunda uyaracaktır
ne zaman -Winit-öz belirtildi:

intf()
{
int ben = ben;
dönüş i;
}

-Wimplicit-int (Yalnızca C ve Objective-C)
Bir bildirim bir tür belirtmediğinde uyar. Bu uyarı tarafından etkinleştirildi -Duvar.

-Wimplicit-fonksiyon-bildirimi (Yalnızca C ve Objective-C)
Bildirilmeden önce bir işlev kullanıldığında bir uyarı verin. C99 modunda
(-std = c99 or -std=gnu99), bu uyarı varsayılan olarak etkindir ve bir
tarafından hata -pedantik-hatalar. Bu uyarı ayrıca -Duvar.

-Wimplicit (Yalnızca C ve Objective-C)
Aynısı -Wimplicit-int ve -Wimplicit-fonksiyon-bildirimi. Bu uyarı etkinleştirildi
by -Duvar.

-Wigned-eleyenler (Yalnızca C ve C++)
Bir işlevin dönüş türünün "const" gibi bir tür niteleyicisi varsa uyar. ISO C için
böyle bir tür niteleyicinin bir etkisi yoktur, çünkü bir işlev tarafından döndürülen değer bir
değer. C++ için uyarı yalnızca skaler türler veya "void" için yayınlanır. ISO C
işlev tanımlarında nitelikli "geçersiz" dönüş türlerini yasaklar, bu nedenle bu tür dönüş türleri
bu seçenek olmasa bile her zaman bir uyarı alırsınız.

Bu uyarı ayrıca -Ekstra.

-Wana
türü varsa uyar ana şüphelidir. ana harici bir fonksiyon olmalı
bağlantı, int döndürme, sıfır bağımsız değişken, iki veya üç bağımsız değişken alma
uygun tipler. Bu uyarı, C++'da varsayılan olarak etkindir ve aşağıdakilerden biri tarafından etkinleştirilir:
-Duvar or - bilgiçlik.

-Weksis-parantez
Toplama veya birleştirme başlatıcısı tam olarak parantez içine alınmadıysa uyar. aşağıda
örneğin, başlatıcı için a tam olarak parantez içine alınmamıştır, ancak bunun için b tamamen
parantez içinde.

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

Bu uyarı tarafından etkinleştirildi -Duvar.

-Wmissing-include-dirs (Yalnızca C, C++, Objective-C ve Objective-C++)
Kullanıcı tarafından sağlanan bir içerme dizini yoksa uyar.

-W parantezler
olduğu gibi belirli bağlamlarda parantezler atlanırsa uyar.
doğruluk değerinin beklendiği bir bağlamda veya operatörlerin iç içe geçtiği durumlarda atama
kimin önceliği hakkında çoğu zaman kafası karışır.

Ayrıca şöyle bir karşılaştırma varsa uyarın x<=y<=z görünür; bu eşdeğerdir (x<=y ? 1 : 0)
<= z, sıradan matematiksel gösterimden farklı bir yorumdur.

Ayrıca "if" ifadesinin bir karışıklık olabileceği yapılar hakkında uyarıda bulunun.
"else" dalı aittir. İşte böyle bir duruma bir örnek:

{
Eğer bir)
eğer (b)
foo();
başka
Çubuk ();
}

C/C++'da her "else" dalı, mümkün olan en içteki "if" deyimine aittir.
bu örnekte "if (b)" dir. Bu genellikle programcının beklediği şey değildir, çünkü
yukarıdaki örnekte programcının seçtiği girinti ile gösterilmiştir. Ne zaman ... Olsa
Bu karışıklığın potansiyeli, GCC bu bayrak açıldığında bir uyarı verecektir.
belirtildi. Uyarıyı ortadan kaldırmak için en içteki "if" ifadesinin etrafına açık parantezler ekleyin.
Bu nedenle, "else"nin ekteki "if"e ait olmasının hiçbir yolu yoktur. NS
ortaya çıkan kod şöyle görünür:

{
Eğer bir)
{
eğer (b)
foo();
başka
Çubuk ();
}
}

Ayrıca, orta işlenen GNU uzantısı çıkarılmış olarak ?: öğesinin tehlikeli kullanımları konusunda uyarın. Ne zaman
?: operatöründeki koşul bir boole ifadesidir, atlanan değer
her zaman 1. Genellikle kullanıcı, bunun koşullu içinde hesaplanan bir değer olmasını bekler.
yerine ifade.

Bu uyarı tarafından etkinleştirildi -Duvar.

-Sıra noktası
Sıra ihlalleri nedeniyle tanımsız semantiği olabilecek kod hakkında uyar
C ve C++ standartlarında nokta kuralları.

C ve C++ standartları, bir C/C++ programındaki ifadelerin sırasını tanımlar.
açısından değerlendirildi dizi noktalarıarasında kısmi bir sıralamayı temsil eden
programın bölümlerinin yürütülmesi: sıra noktasından önce yürütülenler ve
arkasından idam edildi. Bunlar, tam bir ifadenin değerlendirilmesinden sonra meydana gelir (bir
daha büyük bir ifadenin parçası değildir), bir ifadenin ilk işleneninin değerlendirilmesinden sonra
"&&", "||", "? :" veya "," (virgül) operatörü, bir işlev çağrılmadan önce (ancak
argümanlarının değerlendirilmesi ve çağrılan işlevi gösteren ifade) ve
diğer bazı yerler. Sıra noktası kuralları tarafından ifade edilenler dışında, sıra
Bir ifadenin alt ifadelerinin değerlendirilmesi belirtilmemiştir. Tüm bu kurallar
toplam bir düzen yerine yalnızca kısmi bir düzeni tanımlayın, çünkü örneğin, eğer iki
işlevler, aralarında sıra noktası olmayan tek bir ifade içinde çağrılır.
fonksiyonların çağrıldığı sıra belirtilmemiştir. Bununla birlikte, standartlar
komite, işlev çağrılarının örtüşmediğine karar verdi.

Sıralama noktaları arasında, değerlerinde değişiklik yapıldığında belirtilmez.
nesneler etkili olur. Davranışı buna bağlı olan programların tanımsız davranışı vardır;
C ve C++ standartları, "Önceki ve sonraki sıra noktası arasında bir
nesnenin depolanmış değeri, bir değerlendirmenin değerlendirilmesiyle en fazla bir kez
ifade. Ayrıca, ön değer sadece değeri belirlemek için okunacaktır.
saklanabilir.". Bir program bu kuralları ihlal ederse, sonuçlar herhangi bir belirli
uygulanması tamamen öngörülemez.

Tanımsız davranışa sahip kod örnekleri şunlardır: "a = a++;", "a[n] = b[n++]" ve "a[i++] =
i;". Bazı daha karmaşık vakalar bu seçenekle teşhis edilmez ve
ara sıra yanlış pozitif sonuç, ancak genel olarak oldukça etkili bulunmuştur.
programlarda bu tür bir sorunu tespit etmek.

Standart kafa karıştırıcı bir şekilde ifade edilmiştir, bu nedenle kesinlik konusunda bazı tartışmalar vardır.
ince durumlarda sıra noktası kurallarının anlamı. tartışma linkleri
Önerilen resmi tanımlar da dahil olmak üzere sorun, GCC okumaları sayfasında bulunabilir,
dehttp://gcc.gnu.org/readings.html>.

Bu uyarı tarafından etkinleştirildi -Duvar C ve C ++ için.

-Wreturn-tipi
Bir işlev, varsayılan olarak "int" olan bir dönüş türüyle tanımlandığında uyar. Ayrıca
dönüş türü olan bir işlevde dönüş değeri olmayan herhangi bir "dönüş" ifadesi hakkında uyar
"geçersiz" değildir (işlev gövdesinin sonundan düşmek, geri dönmek olarak kabul edilir)
bir değer olmadan) ve bir işlevde bir ifade içeren bir "dönüş" ifadesi hakkında
dönüş türü "void" olan.

C++ için, dönüş türü olmayan bir işlev, her zaman bir tanı mesajı üretir, hatta
ne zaman -Wno-dönüş tipi belirtilir. Tek istisnalar ana ve fonksiyonlar
sistem başlıklarında tanımlanmıştır.

Bu uyarı tarafından etkinleştirildi -Duvar.

-W anahtarı
Bir "switch" ifadesinin numaralandırılmış türde bir dizini olduğunda ve "vaka" içermediğinde uyar
bu numaralandırmanın adlandırılmış kodlarından biri veya daha fazlası için. ("Varsayılan" bir öğenin varlığı
etiket bu uyarıyı engeller.) "durum" etiketleri ayrıca numaralandırma aralığının dışındadır.
Bu seçenek kullanıldığında uyarıları tetikleyin ("varsayılan" bir etiket olsa bile). Bu
uyarı etkinleştirildi -Duvar.

-Wswitch-varsayılan
Bir "switch" ifadesinin "varsayılan" bir durumu olmadığında uyar.

-Wswitch-enum
Bir "switch" ifadesinin numaralandırılmış türde bir dizini olduğunda ve "vaka" içermediğinde uyar
bu numaralandırmanın adlandırılmış kodlarından biri veya daha fazlası için. dışındaki "durum" etiketleri
numaralandırma aralığı da bu seçenek kullanıldığında uyarı verir. Tek fark
arasında -W anahtarı ve bu seçenek, bu seçeneğin atlanmış bir hata hakkında bir uyarı vermesidir.
"varsayılan" bir etiket olsa bile numaralandırma kodu.

-Wsync-nand (Yalnızca C ve C++)
"__sync_fetch_and_nand" ve "__sync_nand_and_fetch" yerleşik işlevleri olduğunda uyar
kullanılmış. Bu işlevler GCC 4.4'te semantiği değiştirmiştir.

-Wtrigraflar
Programın anlamını değiştirebilecek herhangi bir trigrafla karşılaşılırsa uyar
(yorumların içindeki trigraflar hakkında uyarı yapılmaz). Bu uyarı tarafından etkinleştirildi -Duvar.

-Wunused-but-set-parametresi
Bir işlev parametresine atandığında, ancak bunun dışında kullanılmadığında uyar (bunun dışında)
beyanı).

Bu uyarıyı bastırmak için kullanılmayan özniteliği.

Bu uyarı ayrıca -Kullanılmamış Birlikte -Ekstra.

-Wunused-but-set-değişkeni
Yerel bir değişkene atandığında, ancak bunun dışında kullanılmadığında uyar (onun dışında).
beyanname). Bu uyarı tarafından etkinleştirildi -Duvar.

Bu uyarıyı bastırmak için kullanılmayan özniteliği.

Bu uyarı ayrıca -Kullanılmamıştarafından etkinleştirilen -Duvar.

-Wunused-fonksiyonu
Statik bir işlev bildirildiğinde ancak tanımlanmadığında veya satır içi olmayan bir statik olduğunda uyar
işlev kullanılmaz. Bu uyarı tarafından etkinleştirildi -Duvar.

-Wunused-etiket
Bir etiket bildirildiğinde ancak kullanılmadığında uyar. Bu uyarı tarafından etkinleştirildi -Duvar.

Bu uyarıyı bastırmak için kullanılmayan özniteliği.

-Wunused-yerel-tip tanımları (Yalnızca C, Objective-C, C++ ve Objective-C++)
Bir işlevde yerel olarak tanımlanmış bir typedef kullanılmadığında uyar.

-Wunused-parametre
Bir işlev parametresi, bildirimi dışında kullanılmadığında uyar.

Bu uyarıyı bastırmak için kullanılmayan özniteliği.

-Wno-kullanılmayan-sonuç
"warn_unused_result" özniteliği ile işaretlenmiş bir işlevi arayan kişi,
dönüş değerini kullanmayın. Varsayılan -Wunused-sonuç.

-Wunused-değişken
Yerel bir değişken veya sabit olmayan bir statik değişken, bunun dışında kullanılmadığında uyar.
onun beyanı. Bu uyarı tarafından etkinleştirildi -Duvar.

Bu uyarıyı bastırmak için kullanılmayan özniteliği.

-Wunused-değer
Bir ifade açıkça kullanılmayan bir sonucu hesapladığında uyar. Bastırmak
bu uyarı kullanılmayan ifadeyi geçersiz. Bu bir ifade-ifadesini içerir
veya yan etki içermeyen bir virgül ifadesinin sol tarafı. İçin
örneğin, gibi bir ifade x[i,j] uyarıya neden olurken, x[(boşluk)i,j] irade
değil.

Bu uyarı tarafından etkinleştirildi -Duvar.

-Kullanılmamış
Yukarıdaki tüm -Kullanılmamış seçenekler birleştirildi.

Kullanılmayan bir fonksiyon parametresi hakkında uyarı almak için,
-Ekstra -Kullanılmamış (Bunu not et -Duvar ima -Kullanılmamış) veya ayrıca belirtin
-Wunused-parametre.

-Başlatıldı
İlk başlatılmadan otomatik bir değişken kullanılıyorsa veya bir değişken varsa uyar
bir "setjmp" çağrısı tarafından engellenebilir. C++'da, statik olmayan bir başvuru veya
statik const üye, yapıcıları olmayan bir sınıfta görünür.

Değişkenin başlatılmamış değerini kullanan kod hakkında uyarmak istiyorsanız
kendi başlatıcısı, -Winit-öz seçeneği.

Bu uyarılar, tek tek başlatılmamış veya tıkanmış yapı elemanları için meydana gelir,
birleştirme veya dizi değişkenlerinin yanı sıra başlatılmamış veya engellenmiş değişkenler için
bir bütün olarak. "Uçucu" olarak bildirilen değişkenler veya öğeler için oluşmazlar. Çünkü
bu uyarılar optimizasyona, tam değişkenlere veya orada bulunan öğelere bağlıdır.
uyarılar, kesin optimizasyon seçeneklerine ve kullanılan GCC sürümüne bağlı olacaktır.

Yalnızca bir değeri hesaplamak için kullanılan bir değişken hakkında hiçbir uyarı olmayabileceğini unutmayın.
kendisi asla kullanılmayan değer, çünkü bu tür hesaplamalar veri akışı tarafından silinebilir.
uyarılar yazdırılmadan önce analiz.

-Wbelki-başlatılmamış
Otomatik bir değişken için, işlev girişinden kullanımına giden bir yol varsa
başlatılan değişken, ancak değişkenin olmadığı başka yollar da var
başlatıldığında, derleyici başlatılmamış olduğunu kanıtlayamazsa bir uyarı verir.
yollar çalışma zamanında gerçekleşmez. GCC olmadığı için bu uyarılar isteğe bağlıdır.
görünmesine rağmen kodun doğru olmasının tüm nedenlerini görecek kadar akıllı
bir hata var. İşte bunun nasıl olabileceğine dair bir örnek:

{
int x;
anahtar (y)
{
durum 1: x = 1;
break;
durum 2: x = 4;
break;
durum 3: x = 5;
}
foo(x);
}

"y" değeri her zaman 1, 2 veya 3 ise, "x" her zaman başlatılır, ancak GCC
bunu bilmiyor. Uyarıyı bastırmak için kullanıcının varsayılan bir durum sağlaması gerekir
ile ileri sürmek(0) veya benzer bir kod.

Bu seçenek ayrıca, geçici olmayan bir otomatik değişkenin bir değişken tarafından değiştirilebileceği konusunda uyarır.
"longjmp" için arayın. Bu uyarılar da yalnızca optimizasyonda mümkündür.
derleme.

Derleyici yalnızca "setjmp" çağrılarını görür. "longjmp" nin nerede olacağını bilemez
aranan; aslında, bir sinyal işleyici onu kodun herhangi bir noktasında çağırabilir. Olarak
Sonuç olarak, "longjmp" nedeniyle aslında hiçbir sorun olmadığında bile bir uyarı alabilirsiniz.
aslında sorun yaratacak yerde aranamaz.

Kullandığınız tüm işlevleri bildirirseniz, bazı sahte uyarılardan kaçınılabilir.
asla "noreturn" olarak geri dönmeyin.

Bu uyarı tarafından etkinleştirildi -Duvar or -Ekstra.

-Bilinmeyen-pragmalar
GCC tarafından anlaşılmayan bir "#pragma" yönergesi ile karşılaşıldığında uyar. Eğer bu
komut satırı seçeneği kullanılırsa, bilinmeyen pragmalar için uyarılar bile verilir.
sistem başlık dosyaları. Uyarılar yalnızca kullanıcı tarafından etkinleştirildiyse durum böyle değildir.
-Duvar komut satırı seçeneği.

-Wno-pragmalar
Yanlış parametreler, geçersiz sözdizimi veya pragmaların yanlış kullanımları hakkında uyarmayın.
pragmalar arasındaki çatışmalar Ayrıca bakınız -Bilinmeyen-pragmalar.

- Kısıtlı yumuşatma
Bu seçenek yalnızca şu durumlarda etkindir: -fstrict-aliasing aktif. Bu kod hakkında uyarır
derleyicinin optimizasyon için kullandığı katı aliasing kurallarını bozabilir.
Uyarı tüm durumları yakalamaz, ancak daha yaygın olanları yakalamaya çalışır
tuzaklar. Dahildir -Duvar. Eşdeğerdir -Wstrict-aliasing=3

-Wstrict-aliasing=n
Bu seçenek yalnızca şu durumlarda etkindir: -fstrict-aliasing aktif. Bu kod hakkında uyarır
derleyicinin optimizasyon için kullandığı katı aliasing kurallarını bozabilir.
Daha yüksek seviyeler daha yüksek doğruluğa karşılık gelir (daha az yanlış pozitif). Yüksek seviyeler
ayrıca -O'nun çalışma şekline benzer şekilde daha fazla çabaya karşılık gelir. - Kısıtlı yumuşatma is
eşdeğerdir -Wstrict-aliasing=n, n=3 ile.

Seviye 1: En agresif, hızlı, en az doğru. Daha yüksek seviyelerde olduğunda muhtemelen yararlıdır
uyarma ama -fstrict-aliasing kodu çok az yanlış olduğundan, yine de kodu kırar
negatifler. Ancak, birçok yanlış pozitifliği vardır. Tüm işaretçi dönüşümleri için uyarır
muhtemelen uyumsuz türler arasında, asla başvurulmamış olsa bile. Önde koşar
sadece son.

Seviye 2: Agresif, hızlı, çok hassas değil. Hala birçok yanlış pozitif olabilir (değil
seviye 1 kadar) ve birkaç yanlış negatif (ancak muhtemelen seviye 1'den fazla).
Seviye 1'den farklı olarak, yalnızca bir adres alındığında uyarır. Eksik türler hakkında uyarır.
Yalnızca ön uçta çalışır.

Seviye 3 (varsayılan - Kısıtlı yumuşatma): Çok az sayıda yanlış pozitif ve az sayıda olmalıdır
yanlış negatifler. Optimizasyon etkinleştirildiğinde seviye 1 veya 2'den biraz daha yavaş.
Ön uçtaki ortak noktalama+başvuru modeliyle ilgilenir:
"*(int*)&some_float". Optimizasyon etkinleştirilirse, arka uçta da çalışır;
bilgi akışına duyarlı noktalardan yararlanan birden çok ifade durumuyla ilgilenir.
Yalnızca dönüştürülen işaretçinin referansı kaldırıldığında uyarır. Eksik konusunda uyarmaz
türleri.

-Wstrict-taşma
-Wstrict-taşma=n
Bu seçenek yalnızca şu durumlarda etkindir: -fstrict-taşma aktif. Vakalar hakkında uyarır
derleyici, imzalı taşmanın olmadığı varsayımına göre optimize eder.
meydana gelmek. Kodun taşabileceği tüm durumlar hakkında uyarı vermediğini unutmayın:
yalnızca derleyicinin bazı optimizasyonları uyguladığı durumlar hakkında uyarır. Böylece bu
uyarı, optimizasyon düzeyine bağlıdır.

İmzalı taşmanın oluşmadığını varsayan bir optimizasyon, aşağıdaki durumlarda tamamen güvenlidir:
dahil olan değişkenlerin değerleri, taşmanın asla olmayacağı şekildedir, aslında,
meydana gelmek. Bu nedenle, bu uyarı kolayca yanlış bir pozitif verebilir: kod hakkında bir uyarı
bu aslında bir sorun değil. Önemli konulara odaklanmaya yardımcı olmak için birkaç uyarı
seviyeleri tanımlanır. Tanımsız imzalı taşma kullanımı için hiçbir uyarı verilmez
bir döngünün kaç yineleme gerektireceğini tahmin ederken, özellikle
bir döngünün yürütülüp yürütülmeyeceğinin belirlenmesi.

-Wstrict-taşma=1
Hem şüpheli hem de kaçınılması kolay durumlar hakkında uyarın. Örneğin: "x +
1 > x"; ile -fstrict-taşma, derleyici bunu 1'e basitleştirir. Bu seviye
of -Wstrict-taşma tarafından etkinleştirildi -Duvar; daha yüksek seviyeler değildir ve olmalıdır
açıkça talep edilmiştir.

-Wstrict-taşma=2
Ayrıca, karşılaştırmanın bir sabite basitleştirildiği diğer durumlar hakkında da uyarın. İçin
örnek: "abs (x) >= 0". Bu yalnızca şu durumlarda basitleştirilebilir: -fstrict-taşma olduğu
etkisi, çünkü "abs (INT_MIN)" sıfırdan küçük olan "INT_MIN" değerine taşar.
-Wstrict-taşma (seviyesiz) ile aynıdır -Wstrict-taşma=2.

-Wstrict-taşma=3
Ayrıca karşılaştırmanın basitleştirildiği diğer durumlar hakkında da uyarın. Örneğin: "x + 1
> 1", "x > 0" olarak basitleştirilecektir.

-Wstrict-taşma=4
Ayrıca, yukarıdaki durumlarda kapsanmayan diğer basitleştirmeler hakkında da uyarıda bulunun. İçin
örnek: "(x * 10) / 5", "x * 2" olarak basitleştirilecektir.

-Wstrict-taşma=5
Ayrıca derleyicinin bir sabitin büyüklüğünü azalttığı durumlar hakkında da uyarın
karşılaştırmaya dahil edilmiştir. Örneğin: "x + 2 > y", "x + 1'e sadeleştirilecektir.
>= y". Bu yalnızca en yüksek uyarı düzeyinde rapor edilir, çünkü bu
basitleştirme birçok karşılaştırma için geçerlidir, bu nedenle bu uyarı seviyesi çok
çok sayıda yanlış pozitif.

-Wöner-özellik=[saf|const|iade yok]
Bir öznitelik eklemenin faydalı olabileceği durumlar için uyarın. Şu anda nitelikler
desteklenenler aşağıda listelenmiştir.

-Wsuggest-attribute=saf
-Wsuggest-öznitelik=sabit
-Wsuggest-attribute=noreturn
"Saf", "const" veya "const" özniteliklerine aday olabilecek işlevler hakkında uyarın.
"iade yok". Derleyici yalnızca diğer derlemede görünen işlevler için uyarır
birimleri veya ("saf" ve "const" durumunda) işlevin kanıtlayamadığı durumlarda
normal olarak döner. Bir işlev, bir sonsuz içermiyorsa normal olarak döner.
Döngü veya fırlatma, "abort()" çağrısı veya bindirme yoluyla anormal şekilde dönmez. Bu
analiz seçeneği gerektirir -fipa-saf-const, varsayılan olarak etkindir -O ve
daha yüksek. Daha yüksek optimizasyon seviyeleri, analizin doğruluğunu artırır.

-Warray sınırları
Bu seçenek yalnızca şu durumlarda etkindir: -ftree-vrp etkin (varsayılan -O2 ve yukarıda). Bilişim Teknoloji
her zaman sınırların dışında olan dizilerin aboneleri hakkında uyarır. Bu uyarı
tarafından etkinleştirildi -Duvar.

-Wno-div-sıfır
Derleme zamanı tamsayısını sıfıra bölme konusunda uyarmayın. Kayan noktalı bölme
Sonsuzlukları elde etmenin meşru bir yolu olabileceğinden sıfır hakkında uyarılmaz ve
NaN'ler.

-Wsystem-başlıkları
Sistem başlık dosyalarında bulunan yapılar için uyarı mesajları yazdırın. gelen uyarılar
sistem üstbilgileri, genellikle
gerçek sorunları belirtir ve yalnızca derleyici çıktısının okunmasını zorlaştırır. kullanma
bu komut satırı seçeneği, GCC'ye sistem başlıklarından uyarılar göndermesini söyler.
kullanıcı kodunda meydana geldi. Ancak, şunu unutmayın: -Duvar bu seçenekle birlikte
irade değil sistem başlıklarında bilinmeyen pragmalar hakkında uyar --- bunun için, -Bilinmeyen-pragmalar
ayrıca kullanılmalıdır.

-Wtrambolinler
İç içe geçmiş işlevlere yönelik işaretçiler için oluşturulan trambolinler hakkında uyarın.

Trambolin, çalıştırma sırasında oluşturulan küçük bir veri veya kod parçasıdır.
iç içe geçmiş bir işlevin adresi alındığında yığındaki zaman ve
iç içe işlevi dolaylı olarak çağırmak için kullanılır. Bazı hedefler için bu
yalnızca verilerden oluşur ve bu nedenle özel bir işlem gerektirmez. Fakat,
çoğu hedef için koddan oluşur ve bu nedenle yığın gerektirir
Programın düzgün çalışması için çalıştırılabilir hale getirilmesi.

-Wfloat-eşit
Eşitlik karşılaştırmalarında kayan nokta değerleri kullanılıyorsa uyar.

Bunun arkasındaki fikir, bazen (programcı için) uygun olmasıdır.
kayan nokta değerlerini sonsuz kesinlikteki gerçek sayılara yaklaşımlar olarak kabul edin.
Bunu yapıyorsanız, hesaplamanız gerekir (kodu analiz ederek veya bazılarında
diğer şekilde) hesaplamanın getirdiği maksimum veya olası maksimum hata ve
karşılaştırmalar yaparken (ve çıktı üretirken buna izin verin, ancak bu bir
farklı sorun). Özellikle, eşitliği test etmek yerine,
iki değerin örtüşen aralıkları olup olmadığını görmek için; ve bu ile yapılır
ilişkisel operatörler, bu nedenle eşitlik karşılaştırmaları muhtemelen yanlıştır.

-Geleneksel (Yalnızca C ve Objective-C)
Geleneksel ve ISO C'de farklı davranan belirli yapılar hakkında uyarın.
geleneksel C eşdeğeri olmayan ve/veya sorunlu ISO C yapıları hakkında uyarın
kaçınılması gereken yapılardır.

· Makro gövdesindeki dize değişmezleri içinde görünen makro parametreleri. İçinde
geleneksel C makro değişimi, dize değişmezleri içinde gerçekleşir, ancak
ISO C'de.

· Geleneksel C'de bazı önişlemci yönergeleri mevcut değildi. Geleneksel
önişlemciler bir satırı yalnızca bir yönerge olarak kabul ederlerse # ortaya çıkan
satırdaki 1. sütun. Öyleyse -Geleneksel direktifleri konusunda uyarır.
geleneksel C anlar ama görmezden gelir çünkü # olarak görünmüyor
satırdaki ilk karakter. Ayrıca, aşağıdaki gibi yönergeleri gizlemenizi önerir. #pragma
geleneksel C tarafından girintilenerek anlaşılmaz. Bazı geleneksel
uygulamaları tanımayacak #elif, bu yüzden tamamen kaçınmayı önerir.

· Bağımsız değişkenler olmadan görünen işlev benzeri bir makro.

· Tekli artı operatörü.

· U tamsayı sabit soneki veya F or L kayan nokta sabiti sonekleri.
(Geleneksel C, L tamsayı sabitlerinde son ek.) Dikkat edin, bunlar
son ekler, çoğu modern sistemin sistem başlıklarında tanımlanan makrolarda görünür,
örneğin _DK/_MAX makrolar " ". Bu makroların kullanıcı kodunda kullanılması,
normalde sahte uyarılara yol açar, ancak GCC'nin entegre ön işlemcisi
bu durumlarda uyarıdan kaçınmak için yeterli bağlam.

· Bir blokta harici olarak bildirilen ve daha sonra kullanım süresinin bitiminden sonra kullanılan bir fonksiyon
engellemek.

· Bir "switch" ifadesinin "long" türünde bir işleneni vardır.

· "Statik" olmayan bir işlev bildirimi "statik" bir işlev bildirimini takip eder. Bu yapı değil
bazı geleneksel C derleyicileri tarafından kabul edilir.

· Bir tamsayı sabitinin ISO tipi, onunkinden farklı bir genişliğe veya işarete sahiptir.
geleneksel tip. Bu uyarı yalnızca sabitin tabanı on ise verilir.
Diğer bir deyişle, tipik olarak bit modellerini temsil eden onaltılık veya sekizlik değerler,
konusunda uyardı.

· ISO dize birleştirme kullanımı algılandı.

· Otomatik agregaların başlatılması.

· Tanımlayıcı etiketlerle çakışıyor. Geleneksel C için ayrı bir ad alanı yoktur.
etiketler.

· Sendikaların başlatılması. Başlatıcı sıfırsa, uyarı atlanır.
Bu, kullanıcı kodunda sıfır başlatıcının göründüğü varsayımıyla yapılır.
başlatıcı uyarılarını kaçırmamak için örneğin "__STDC__" ile koşullandırılmıştır ve
geleneksel C durumunda sıfıra varsayılan başlatma.

· Sabit/kayan noktalı değerler arasında prototiplere göre dönüşümler ve bunun tersi. NS
Geleneksel C ile derleme yaparken bu prototiplerin olmaması ciddi sorunlara yol açacaktır.
sorunlar. Bu, tam set için olası dönüştürme uyarılarının bir alt kümesidir.
kullanım -Geleneksel-dönüşüm.

· ISO C tarzı fonksiyon tanımlarının kullanımı. Bu uyarı kasıtlı olarak değil ihraç
prototip bildirimleri veya değişken işlevler için, çünkü bu ISO C özellikleri
libiberty'nin geleneksel C uyumluluk makrolarını kullanırken kodunuzda görünür,
"PARAMS" ve "VPARAMS". Bu uyarı, iç içe işlevler için de atlanır
çünkü bu özellik zaten bir GCC uzantısıdır ve bu nedenle
geleneksel C uyumluluğu.

-Geleneksel-dönüşüm (Yalnızca C ve Objective-C)
Bir prototip, olacağından farklı bir tür dönüşümüne neden olursa uyar
bir prototipin yokluğunda aynı argümana. Bu, aşağıdakilerin dönüşümlerini içerir:
kayan nokta için sabit nokta ve bunun tersi ve genişliği veya genişliği değiştiren dönüşümler
varsayılan yükseltme ile aynı olmadıkça, sabit noktalı bir bağımsız değişkenin imzası.

-Wdeclaration-sonra-ifadesi (Yalnızca C ve Objective-C)
Bir bloktaki bir ifadeden sonra bir bildirim bulunduğunda uyar. Bu yapı, bilinen
C++'dan, ISO C99 ile tanıtıldı ve varsayılan olarak GCC'de izin verilir. O değil
ISO C90 tarafından desteklenir ve GCC 3.0'dan önceki GCC sürümleri tarafından desteklenmez.

-Wundef
Tanımsız bir tanımlayıcı bir #Eğer Direktif.

-Wno-endif-etiketleri
olduğunda uyarmayın. #else ya da #endif metin takip eder.

-Gölge
Yerel bir değişken veya tür bildirimi başka bir değişkeni gölgelediğinde uyar,
parametre, tür veya sınıf üyesi (C++'da) veya yerleşik bir işlev
gölgeli. C++'da, yerel bir değişken bir
struct/class/enum, ancak açık bir typedef'i gölgelerse uyarır.

-daha büyük-tan=len
Şundan daha büyük bir nesne olduğunda uyar len bayt tanımlanır.

-Wframe-büyük-tan=len
Bir fonksiyon çerçevesinin boyutu şu değerden büyükse uyar len bayt. yapılan hesaplama
yığın çerçeve boyutunu belirlemek için yaklaşık ve muhafazakar değil. Gerçek
gereksinimler biraz daha büyük olabilir len uyarı almasanız bile. İçinde
ek olarak, "alloca", değişken uzunluklu diziler veya ilgili
yapılar, bir veri yayınlayıp yayınlamamaya karar verirken derleyici tarafından dahil edilmez.
uyarı.

-Wno-free-yığın olmayan-nesne
Yığın üzerinde tahsis edilmemiş bir nesneyi serbest bırakmaya çalışırken uyarmayın.

-Wstack-kullanımı=len
Bir işlevin yığın kullanımı şundan daha büyük olabilirse uyar len bayt. hesaplama
yığın kullanımını belirlemek için yapılan muhafazakardır. "alloca" ile tahsis edilen herhangi bir alan,
değişken uzunluklu diziler veya ilgili yapılar derleyici tarafından dahil edildiğinde
uyarı yapılıp yapılmayacağının belirlenmesi.

Mesaj çıktısı ile uyumludur -fstack-kullanımı.

· Yığın kullanımı tamamen statik ise ancak belirtilen miktarı aşarsa, bu:

uyarı: yığın kullanımı 1120 bayttır

· Yığın kullanımı (kısmen) dinamik ancak sınırlıysa, bu:

uyarı: yığın kullanımı 1648 bayt olabilir

· Yığın kullanımı (kısmen) dinamikse ve sınırlı değilse:

uyarı: yığın kullanımı sınırsız olabilir

-Wunsafe-loop optimizasyonları
Derleyici hiçbir şey üstlenemediği için döngü optimize edilemezse uyar
döngü indekslerinin sınırları. İle birlikte -funsafe-loop optimizasyonları derleyici varsa uyar
gibi varsayımlarda bulundu.

-Wno-pedantik-ms-formatı (Yalnızca MinGW hedefleri)
ISO dışı "printf" / "scanf" biçimi genişlik belirteçleri "I32" hakkındaki uyarıları devre dışı bırakır,
Kullanırken MS çalışma zamanına bağlı olarak Windows hedeflerinde kullanılan "I64" ve "I"
Seçenekler -W biçimi ve - bilgiçlik gnu uzantıları olmadan.

-Wpointer-arith
Bir işlev türünün "boyutuna" veya "boşluğa" bağlı olan herhangi bir şey hakkında uyarın. GNU C
"void *" ile hesaplamalarda kolaylık olması için bu türlere 1 boyutu atar
işlevler için işaretçiler ve işaretçiler. C++'da aritmetik bir işlem olduğunda da uyar
"NULL" içerir. Bu uyarı ayrıca - bilgiçlik.

-Wtype-limitleri
Sınırlı aralığı nedeniyle bir karşılaştırma her zaman doğruysa veya her zaman yanlışsa uyar.
veri türü, ancak sabit ifadeler için uyarmayın. Örneğin, imzasız bir uyarı
değişken sıfır ile karşılaştırılır < or >=. Bu uyarı ayrıca
-Ekstra.

-Wbad-fonksiyon dökümü (Yalnızca C ve Objective-C)
Eşleşmeyen bir türe bir işlev çağrısı yapıldığında uyar. Örneğin, eğer uyar
"int malloc()", "herhangi bir şey *" olarak kullanılır.

-Wc++-uyumlu (Yalnızca C ve Objective-C)
ISO C ve ISO'nun ortak alt kümesinin dışında kalan ISO C yapıları hakkında uyarın
C++, örneğin "void *"den bir işaretçiye "void" olmayana örtük dönüştürme isteği
yazın.

-Wc++11-uyumluluk (Yalnızca C++ ve Objective-C++)
Anlamı ISO C++ 1998 ve ISO C++ 2011 arasında farklılık gösteren C++ yapıları hakkında uyarın,
örneğin, ISO C++ 1998'de anahtar sözcükler olan ISO C++ 2011'deki tanımlayıcılar. Bu uyarı
açılır - Daralma ve tarafından etkinleştirilir -Duvar.

-Wcast-kaliteli
Hedef türden bir tür niteleyicisini kaldırmak için bir işaretçi kullanıldığında uyar.
Örneğin, bir "const char *" sıradan bir "char *"a dönüştürülürse uyarın.

Ayrıca, bir tür niteleyicisini güvenli olmayan bir şekilde tanıtan bir oyuncu seçimi yaparken de uyarın. İçin
örneğin, "char **" öğesini "const char **" olarak kullanmak, bu örnekte olduğu gibi güvenli değildir:

/* p, karakter ** değeridir. */
sabit char **q = (const char **) p;
/* salt okunur dizgenin const char *'a atanması tamam. */
*q = "dize";
/* Şimdi char** işaretçisi salt okunur belleğe işaret ediyor. */
**p = 'b';

-Wcast hizalama
Hedefin gerekli hizalanması sağlanacak şekilde bir işaretçi kullanıldığında uyar.
artırılmış. Örneğin, makinelerde "char *" bir "int *" öğesine dönüştürülürse uyarın:
tamsayılara yalnızca iki veya dört baytlık sınırlarda erişilebilir.

-Wwrite-dizeleri
C'yi derlerken, dize sabitlerine "const char[ tipinde sabitler verin"uzunluk]" yani kopyalama
"const" "char *" olmayan bir işaretçinin adresi bir uyarı alır. Bunlar
uyarılar, bir dizgeye yazmayı deneyebilecek derleme zamanında kodu bulmanıza yardımcı olacaktır.
sabit, ancak yalnızca bildirimlerde "const" kullanmaya çok dikkat ettiyseniz
ve prototipler. Aksi takdirde, sadece bir sıkıntı olacaktır. Bu yüzden yapmadık
-Duvar Bu uyarıları isteyin.

C++ derlerken, kullanımdan kaldırılan dize değişmezlerinden "char
*". Bu uyarı, C++ programları için varsayılan olarak etkindir.

-Yıkılmış
Tarafından değiştirilebilecek değişkenler için uyar uzun jmp or vfork. Bu uyarı da
tarafından etkinleştirildi -Ekstra.

-Wdönüşüm
Bir değeri değiştirebilecek örtük dönüşümler için uyar. Bu, dönüşümleri içerir
"x" "çift" olduğunda "abs (x)" gibi gerçek ve tamsayı arasında; arasındaki dönüşümler
imzalı ve imzasız, "unsigned ui = -1" gibi; ve daha küçük türlere dönüşümler, örneğin
"sqrtf (M_PI)". "abs ((int) x)" ve "ui =" gibi açık kullanımlar için uyarmayın
(işaretsiz) -1" veya değer "abs (2.0)" gibi dönüştürme tarafından değiştirilmediyse.
İşaretli ve işaretsiz tamsayılar arasındaki dönüşümlerle ilgili uyarılar şu şekilde devre dışı bırakılabilir:
kullanma -Wno-sign-dönüşüm.

C++ için ayrıca, kullanıcı tanımlı dönüştürmeler için kafa karıştırıcı aşırı yük çözünürlüğü konusunda uyarın; ve
asla bir tür dönüştürme işleci kullanmayacak dönüşümler: "geçersiz" dönüşümler,
aynı tür, bir temel sınıf veya bunlara bir referans. arasındaki dönüşümlerle ilgili uyarılar
işaretli ve işaretsiz tamsayılar, C++'da varsayılan olarak devre dışı bırakılmıştır. -Wsign-dönüşüm
açıkça etkinleştirilir.

-Wno-dönüşüm-boş (Yalnızca C++ ve Objective-C++)
"NULL" ve işaretçi olmayan türler arasındaki dönüşümler için uyarmayın. -Wconversion-null is
varsayılan olarak etkindir.

-Sıfır-boş-işaretçi-sabiti (Yalnızca C++ ve Objective-C++)
Boş gösterici sabiti olarak bir değişmez '0' kullanıldığında uyar. Bu yararlı olabilir
C++ 11'de "nullptr" ye dönüştürmeyi kolaylaştırın.

-boş-vücut
Boş bir gövde oluşursa uyar if, başka or do süre Beyan. Bu uyarı
tarafından da etkinleştirildi -Ekstra.

-Wenum-karşılaştırma
Farklı numaralandırılmış türlerin değerleri arasında bir karşılaştırma konusunda uyarın. C++ numaralandırmasında
koşullu ifadelerdeki uyumsuzluklar da teşhis edilir ve uyarı şu şekilde etkinleştirilir:
varsayılan. C'de bu uyarı şu şekilde etkinleştirilir: -Duvar.

-Wjump-ıskalar-init (Yalnızca C, Objective-C)
Bir "goto" ifadesi veya bir "switch" ifadesi ileri doğru atlarsa uyar
bir değişkenin başlatılması veya değişken oluşturulduktan sonra bir etikete geri atlanması
başlatıldı. Bu, yalnızca başlatıldıkları zaman başlatılan değişkenler hakkında uyarır.
beyan. Bu uyarı yalnızca C ve Objective-C için desteklenir; C++'da bu tür
şube her durumda bir hatadır.

-Wjump-ıskalar-init dahil -Wc++-uyumlu. ile devre dışı bırakılabilir.
-Wno-atlama-kaçırma-başlatma seçeneği.

-Wsign-karşılaştırma
İşaretli ve işaretsiz değerler arasındaki bir karşılaştırmanın yanlış sonuç vermesi durumunda uyar
imzalı değer imzasıza dönüştürüldüğünde sonuç. Bu uyarı da etkinleştirildi
by -Ekstra; diğer uyarıları almak için -Ekstra bu uyarı olmadan, -Ekstra
-Wno-sign-karşılaştırma.

-Wsign-dönüşüm
gibi bir tamsayı değerinin işaretini değiştirebilecek örtük dönüşümler için uyar
işaretsiz bir tamsayı değişkenine işaretli bir tamsayı ifadesi atama. açık bir
cast uyarıyı susturur. C'de bu seçenek ayrıca şu şekilde etkinleştirilir: -Wdönüşüm.

-Waddress
Bellek adreslerinin şüpheli kullanımları konusunda uyarın. Bunlar, bir kişinin adresini kullanmayı içerir.
"void func(void); if (func)" gibi koşullu bir ifadede işlev ve
"if (x == "abc")" gibi bir dize değişmezinin bellek adresiyle karşılaştırmalar.
Bu tür kullanımlar tipik olarak bir programcı hatasına işaret eder: bir fonksiyonun adresi her zaman
doğru olarak değerlendirir, bu nedenle koşullu kullanımları genellikle programcının
bir işlev çağrısında parantezleri unuttum; ve dize değişmezleri ile karşılaştırmalar
belirtilmemiş davranışa neden olur ve C'de taşınabilir değildir, bu nedenle genellikle
programcının "strcmp" kullanmayı amaçladığı. Bu uyarı tarafından etkinleştirildi -Duvar.

-Wlojik-operasyon
İfadelerde mantıksal işleçlerin şüpheli kullanımları hakkında uyarın. Bu, kullanmayı içerir
bit düzeyinde bir operatörün beklendiği durumlarda mantıksal operatörler.

-Waggregate-dönüş
Yapıları veya birleşimleri döndüren herhangi bir işlev tanımlanırsa veya çağrılırsa uyar. (İçinde
bir dizi döndürebileceğiniz dillerde, bu aynı zamanda bir uyarı da verir.)

-Wno-özellikleri
Tanınmayan öznitelikler gibi beklenmedik bir "__attribute__" kullanılırsa uyarmayın,
değişkenlere vb. uygulanan fonksiyon nitelikleri. Bu, aşağıdakiler için hataları durdurmaz.
desteklenen özelliklerin yanlış kullanımı.

-Wno-yerleşik-makro-yeniden tanımlanmış
Belirli yerleşik makrolar yeniden tanımlanırsa uyarmayın. Bu, aşağıdakiler için uyarıları bastırır:
"__TIMESTAMP__", "__TIME__", "__DATE__", "__FILE__" ve
"__BASE_FILE__".

-Wstrict-prototipler (Yalnızca C ve Objective-C)
Argüman türleri belirtilmeden bir işlev bildirilirse veya tanımlanırsa uyar. (Bir
eski tarz işlev tanımına, öncesinde bir
bağımsız değişken türlerini belirten bildirim.)

-Wold-style-deklarasyonu (Yalnızca C ve Objective-C)
Bir bildirimde, C Standardına göre eskimiş kullanımlar için uyarın. İçin
örneğin, "statik" gibi depolama sınıfı belirteçleri bir dizideki ilk şeyler değilse uyarın.
beyanname. Bu uyarı ayrıca -Ekstra.

-Wold-tarzı-tanımı (Yalnızca C ve Objective-C)
Eski tarz bir işlev tanımı kullanılıyorsa uyar. Olsa bile uyarı verilir.
önceki bir prototip.

-Wmissing-parametre tipi (Yalnızca C ve Objective-C)
K&R tarzı işlevlerde bir işlev parametresi tür belirteci olmadan bildirilir:

void foo(çubuk) { }

Bu uyarı ayrıca -Ekstra.

-Wmissing-prototipleri (Yalnızca C ve Objective-C)
Önceki bir prototip bildirimi olmadan global bir işlev tanımlanırsa uyar. Bu
tanımın kendisi bir prototip sağlasa bile uyarı verilir. Amaç
başlık dosyalarında bildirilmeyen genel işlevleri algılar.

-Wmissing-beyanlar
Önceden bir bildirim olmadan global bir işlev tanımlanırsa uyar. Olsa bile yap
tanımın kendisi bir prototip sağlar. Genel algılamak için bu seçeneği kullanın
başlık dosyalarında bildirilmeyen işlevler. C++'da herhangi bir uyarı verilmez.
işlev şablonları veya satır içi işlevler için veya anonim ad alanlarındaki işlevler için.

-Wmissing-alan-başlatıcıları
Bir yapının başlatıcısında bazı alanlar eksikse uyar. Örneğin, aşağıdakiler
kodu böyle bir uyarıya neden olur, çünkü "xh" tam olarak sıfırdır:

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

Bu seçenek, belirlenmiş başlatıcılar hakkında uyarmaz, bu nedenle aşağıdaki değişiklik
bir uyarıyı tetiklemez:

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

Bu uyarı şurada yer almaktadır: -Ekstra. diğer almak için -Ekstra bu olmadan uyarılar,
kullanım -Ekstra -Wno-eksik-alan-başlatıcılar.

-Wmissing-format-özniteliği
"Biçim" öznitelikleri için aday olabilecek işlev işaretçileri hakkında uyarın. Not
bunlar sadece olası adaylardır, mutlak adaylar değil. GCC bu işlevi tahmin edecek
atama, başlatma,
parametre geçirme veya döndürme ifadeleri karşılık gelen bir "format" özelliğine sahip olmalıdır
ortaya çıkan türde. Yani atamanın veya başlatmanın sol tarafında,
parametre değişkeninin türü veya içeren işlevin dönüş türü
uyarıyı önlemek için sırasıyla bir "format" özelliğine de sahip olmalıdır.

GCC, "format" için aday olabilecek işlev tanımları hakkında da uyaracaktır.
Öznitellikler. Yine, bunlar sadece olası adaylardır. GCC bu "formatı" tahmin edecek
öznitelikler "vprintf" gibi bir işlevi çağıran herhangi bir işlev için uygun olabilir
veya "vscanf", ancak bu her zaman böyle olmayabilir ve bazı işlevler için
"format" öznitelikleri uygun algılanmayabilir.

-Wno-çok karakterli
Çok karakterli bir sabit ('BİLGİ') kullanıldı. Genellikle bir gösterirler
uygulama tanımlı değerlere sahip olduklarından ve kullanıcı kodunda yazım hatası olmamalıdır.
taşınabilir kodda kullanılır.

-Wnormalleştirilmiş=
ISO C ve ISO C++'da, farklı diziler olmaları durumunda iki tanımlayıcı farklıdır.
karakterler. Ancak, bazen temel ASCII karakter kümesinin dışındaki karakterler
kullanıldığında, aynı görünen iki farklı karakter dizisine sahip olabilirsiniz. Kaçınmak
karışıklık, ISO 10646 standardı bazı normalleştirme kurallar hangi uygulandığında
aynı görünen iki dizinin aynı diziye dönüştürülmesini sağlayın. KİK
normalleştirilmemiş tanımlayıcılar kullanıyorsanız sizi uyarabilir; bu seçenek
bu uyarıyı kontrol eder.

GCC tarafından desteklenen dört uyarı seviyesi vardır. Varsayılan -Wnormalleştirilmiş=nfc,
ISO 10646 "C" normalleştirilmiş biçiminde olmayan herhangi bir tanımlayıcı hakkında uyarıda bulunan,
NFC. NFC, çoğu kullanım için önerilen formdur.

Ne yazık ki, tanımlayıcılarda ISO C ve ISO C++ tarafından izin verilen bazı karakterler vardır.
NFC'ye dönüştürüldüğünde tanımlayıcılarda izin verilmez. Yani, hiçbir yolu yok
bu sembolleri taşınabilir ISO C veya C++'da kullanmak ve tüm tanımlayıcılarınızı NFC'de bulundurmak için.
-Wnormalize=kimlik bu karakterler için uyarıyı bastırır. Umut edilir ki gelecek
ilgili standartların sürümleri bunu düzeltecektir, bu nedenle bu seçenek
varsayılan.

Tüm karakterler için uyarıyı yazarak kapatabilirsiniz. -Wnormalize=yok. Sen
bunu yalnızca başka bir normalleştirme şeması kullanıyorsanız (örneğin
"D"), çünkü aksi takdirde, kelimenin tam anlamıyla imkansız olan böcekleri kolayca oluşturabilirsiniz.
bkz.

ISO 10646'daki bazı karakterlerin farklı anlamları vardır ancak bazı yazı tiplerinde aynı görünürler
veya görüntüleme metodolojileri, özellikle biçimlendirme uygulandıktan sonra. Örneğin
"\u207F", "SUPERSCRIPT LATIN KÜÇÜK N HARFİ", normal bir "n" gibi görüntülenecektir
bu bir üst simgeye yerleştirildi. ISO 10646 şunları tanımlar: NFCC normalleştirme
tüm bunları da standart bir forma dönüştürmek için bir plan yapın ve GCC,
kullanıyorsanız, kod NFKC'de değil -Wnormalleştirilmiş=nfkc. Bu uyarı karşılaştırılabilir
O harfini içeren her tanımlayıcı hakkında uyarı, çünkü karıştırılabilir
0 rakamıyla ve bu nedenle varsayılan değildir, ancak yerel kodlama olarak yararlı olabilir
programlama ortamı bunları görüntülemek için düzeltilemezse kural
karakterler belirgin bir şekilde.

-Wno-kullanımdan kaldırıldı
Kullanımdan kaldırılan özelliklerin kullanımı konusunda uyarmayın.

-Wno-kullanımdan kaldırılmış-bildirimler
tarafından kullanımdan kaldırılmış olarak işaretlenen işlevlerin, değişkenlerin ve türlerin kullanımları hakkında uyarmayın.
"kullanımdan kaldırılmış" özniteliğini kullanarak.

-Wno-taşma
Sabit ifadelerde derleme zamanı taşması hakkında uyarmayın.

-Woverride-init (Yalnızca C ve Objective-C)
Belirtilen kullanıldığında yan etkileri olmayan başlatılmış bir alan geçersiz kılınırsa uyar
başlatıcılar.

Bu uyarı şurada yer almaktadır: -Ekstra. diğer almak için -Ekstra bu olmadan uyarılar,
kullanım -Ekstra -Wno-geçersiz kılma-init.

-Paketlenmiş
Bir yapıya paketlenmiş özniteliği verilirse uyar, ancak paketlenmiş özniteliğin hiçbir özelliği yoksa
yapının yerleşimi veya boyutu üzerindeki etkisi. Bu tür yapılar için yanlış hizalanmış olabilir
az fayda. Örneğin, bu kodda, "struct bar"daki "fx" değişkeni
"struct bar"ın kendisi paketlenmiş özniteliğe sahip olmasa bile yanlış hizalanabilir:

yapı foo {
int x;
karakter a, b, c, d;
} __öznitelik __ ((paketlenmiş));
yapı çubuğu {
karakter z;
foo f yapısı;
};

-Wpacked-bitfield-uyumluluğu
4.1, 4.2 ve 4.3 GCC serisi, bit alanlarındaki "paketlenmiş" özniteliği yok sayar
"char". Bu, GCC 4.4'te düzeltilmiştir, ancak değişiklik,
yapı düzeni. GCC'de böyle bir alanın ofseti değiştiğinde GCC sizi bilgilendirir
4.4. Örneğin, burada artık "a" ve "b" alanları arasında 4 bitlik bir dolgu yoktur.
yapısı:

yapı foo
{
karakter a:4;
karakter b:8;
} __attribute__ ((paketlenmiş));

Bu uyarı varsayılan olarak etkindir. Kullanmak -Wno-paketlenmiş-bitfield-uyumluluğu bunu devre dışı bırakmak için
uyarı.

-Wpadded
Bir yapıya dolgu dahil edilmişse, ya yapının bir elemanını hizalamak için uyar.
yapı veya tüm yapıyı hizalamak için. Bazen bu olduğunda mümkündür
dolguyu azaltmak için yapının alanlarını yeniden düzenlemek ve böylece
yapı daha küçük.

-Gereksiz-decls
Aynı kapsamda birden fazla bildirimde bulunulursa uyar.
çoklu bildirim geçerlidir ve hiçbir şeyi değiştirmez.

-Wnested-dışlar (Yalnızca C ve Objective-C)
Bir işlev içinde "harici" bir bildirimle karşılaşılırsa uyar.

-Kazanma hattı
Bir fonksiyon satır içi yapılamıyorsa ve satır içi olarak bildirilmişse uyar. Bununla bile
seçeneği, derleyici, içinde bildirilen satır içi işlevlerdeki hatalar hakkında uyarmayacaktır.
sistem başlıkları

Derleyici, bir satırın satır içi yapılıp yapılmayacağını belirlemek için çeşitli buluşsal yöntemler kullanır.
işlev. Örneğin, derleyici işlevin boyutunu hesaba katar.
satır içi ve geçerli işlevde zaten yapılmış olan satır içi miktarı.
Bu nedenle, kaynak programda önemsiz gibi görünen değişiklikler,
tarafından üretilen uyarılar -Kazanma hattı görünmek veya kaybolmak.

-Wno-geçersiz-offsetof (Yalnızca C++ ve Objective-C++)
uyarıların uygulanmasından kaynaklanan uyarıları bastırın. ofset makroyu POD olmayan bir türe. Buna göre
uygulanan 1998 ISO C++ standardı ofset POD olmayan bir türe tanımsızdır. İçinde
ancak mevcut C++ uygulamaları ofset tipik olarak anlamlı sonuçlar verir
belirli POD olmayan türlere uygulandığında bile. (Örneğin basit yapı o
sadece bir kurucuya sahip olduğu için bir POD tipi olamaz.) Bu bayrak içindir.
taşınabilir olmayan kod yazdıklarının farkında olan ve kasıtlı olarak
hakkındaki uyarıyı görmezden gelmeyi seçti.

üzerindeki kısıtlamalar ofset C++ standardının gelecekteki bir sürümünde gevşetilebilir.

-Wno-in-to-pointer-cast
Farklı boyuttaki bir tamsayının işaretçi türüne atmalardan gelen uyarıları bastırın. İçinde
C++, daha küçük boyutlu bir işaretçi türüne yayın yapmak bir hatadır. Wint-to-pointer-cast is
varsayılan olarak etkindir.

-Wno-işaretçi-int-cast (Yalnızca C ve Objective-C)
Bir işaretçiden farklı boyutta bir tamsayı türüne yapılan gönderimlerden gelen uyarıları bastırın.

-Winvalid-pch
Arama yolunda önceden derlenmiş bir başlık bulunursa ancak kullanılamazsa uyar.

-uzun-uzun
varsa uyar ve kazandırdı ve kazandırdı tipi kullanılır. Bu, aşağıdakilerden biri tarafından etkinleştirilir: - bilgiçlik or -Geleneksel
ISO C90 ve C++98 modlarında. Uyarı mesajlarını engellemek için şunu kullanın: -Wno-uzun-uzun.

-Wvariadic-makrolar
Bilgiçlikli ISO C90 modunda veya GNU alternatif sözdiziminde değişken makrolar kullanılıyorsa uyar
bilgiçlikli ISO C99 modundayken. Bu varsayılandır. Uyarı mesajlarını engellemek için şunu kullanın:
-Wno-variadic-makrolar.

-Wvektör-işlem-performans
Vektör işlemi mimarinin SIMD yetenekleri aracılığıyla gerçekleştirilmezse uyar.
Özellikle performans ayarı için kullanışlıdır. Vektör işlemi uygulanabilir
"parçalı", yani skaler işlemin her vektör üzerinde gerçekleştirildiği anlamına gelir.
eleman; "paralel olarak", bu, vektör işleminin kullanılarak uygulandığı anlamına gelir.
normalde daha verimli olan daha geniş tipte skalerler; ve "tek olarak
skaler", bu vektörün bir skaler türe uyduğu anlamına gelir.

-Wvla
Kodda değişken uzunluklu dizi kullanılıyorsa uyar. -Hayır-vla engelleyecek
- bilgiçlik değişken uzunluk dizisinin uyarısı.

-Wvolatile-kayıt-var
Bir kayıt değişkeni geçici olarak bildirilirse uyar. Uçucu değiştirici
kayıt için okuma ve/veya yazma işlemlerini ortadan kaldırabilecek tüm optimizasyonları engelle
değişkenler. Bu uyarı tarafından etkinleştirildi -Duvar.

-Wdevre dışı-optimizasyon
İstenen bir optimizasyon geçişi devre dışı bırakılırsa uyar. Bu uyarı genellikle
kodunuzda yanlış bir şey olduğunu belirtin; sadece GCC'nin
optimize ediciler kodu etkili bir şekilde işleyemedi. Çoğu zaman, sorun şu ki
kodunuz çok büyük veya çok karmaşık; GCC, aşağıdaki durumlarda programları optimize etmeyi reddedecektir.
optimizasyonun kendisinin aşırı miktarda zaman alması muhtemeldir.

-Wişaretçi-işareti (Yalnızca C ve Objective-C)
İşaretçi argümanı geçişi veya farklı imzalı atama için uyar. Bu
seçeneği yalnızca C ve Objective-C için desteklenir. tarafından ima edilir -Duvar ve tarafından
- bilgiçlikile devre dışı bırakılabilen -Wno-işaretçi-işareti.

-Wstack-koruyucu
Bu seçenek yalnızca şu durumlarda etkindir: -fstack-koruyucu aktif. Fonksiyonlar hakkında uyarı verir
yığın parçalanmasına karşı korunmaz.

-Wno-paçalık
tarafından enstrümante edilemeyen yapılar hakkındaki uyarıları bastırın. -fçamurluk.

-Woverlength-dizeleri
"Minimum maksimum" uzunluktan daha uzun olan dize sabitleri hakkında uyar
C standardında belirtilmiştir. Modern derleyiciler genellikle aşağıdakileri sağlayan dize sabitlerine izin verir:
standardın minimum sınırından çok daha uzundur, ancak çok taşınabilir programlar
daha uzun dizeler kullanmaktan kaçının.

sınır geçerlidir sonra dize sabit bitiştirme ve sondaki sayılmaz
NUL. C90'da sınır 509 karakterdi; C99'da 4095'e yükseltildi. C++98
normatif bir minimum maksimum belirtmez, bu nedenle aşırı uzunluktaki dizeleri teşhis etmeyiz
C ++.

Bu seçenek şu şekilde ima edilir: - bilgiçlikile devre dışı bırakılabilir ve -Wno-uzunluk-dizeleri.

-Wunson eklenmiş-şamandıra-sabitleri (Yalnızca C ve Objective-C)
GCC, son eki olmayan herhangi bir kayan sabit için bir uyarı verecektir. Ne zaman
ile birlikte kullanılır -Wsystem-başlıkları sistem başlığında bu tür sabitler hakkında uyarır
Dosyalar. Bu, "FLOAT_CONST_DECIMAL64" ile kullanılacak kodu hazırlarken faydalı olabilir.
ondalık kayan nokta uzantısından C99'a pragma.

Opsiyonlar için Hata ayıklama Programı or GCC
GCC, programınızda veya GCC'de hata ayıklamak için kullanılan çeşitli özel seçeneklere sahiptir:

-g İşletim sisteminin yerel biçiminde (stabs, COFF,
XCOFF veya CÜCE 2). GDB bu hata ayıklama bilgileriyle çalışabilir.

Stabs biçimini kullanan çoğu sistemde, -g ekstra hata ayıklama bilgilerinin kullanılmasını sağlar
sadece GDB'nin kullanabileceği; bu ek bilgi, hata ayıklamanın GDB'de daha iyi çalışmasını sağlar, ancak
muhtemelen diğer hata ayıklayıcıların çökmesine veya programı okumayı reddetmesine neden olacaktır. Eğer istersen
ekstra bilgilerin oluşturulup oluşturulmayacağını kesin olarak kontrol etmek için -gstabs+,
-gstab'lar, -gxcoff+, -gxcoffya da -gvm'ler (aşağıya bakınız).

GCC kullanmanıza izin verir -g ile -O. Optimize edilmiş kod tarafından alınan kısayollar,
bazen şaşırtıcı sonuçlar üretir: bildirdiğiniz bazı değişkenler şu anda mevcut olmayabilir.
herşey; kontrol akışı, beklemediğiniz bir yere gidebilir; bazı ifadeler olabilir
yürütülmez çünkü sabit sonuçlar hesaplarlar veya değerleri zaten
el; bazı ifadeler, taşındıkları için farklı yerlerde yürütülebilir.
döngüler.

Bununla birlikte, optimize edilmiş çıktıda hata ayıklamanın mümkün olduğu kanıtlanmıştır. Bu mantıklı yapar
hataları olabilecek programlar için optimize ediciyi kullanmak.

Aşağıdaki seçenekler, GCC, daha fazlası için yetenekle oluşturulduğunda kullanışlıdır.
birden fazla hata ayıklama biçimi.

-ggdb
GDB tarafından kullanılmak üzere hata ayıklama bilgilerini üretin. Bu, en anlamlı olanı kullanmak anlamına gelir.
kullanılabilir format (DWARF 2, stabs veya bunlardan hiçbiri değilse yerel format)
desteklenir), mümkünse GDB uzantıları dahil.

-gstab'lar
GDB olmadan (destekleniyorsa) hata ayıklama bilgilerini bıçak biçiminde üretin
uzantılar. Bu, çoğu BSD sisteminde DBX tarafından kullanılan biçimdir. MIPS, Alpha ve
System V Release 4 sistemlerinde bu seçenek, olmayan bıçak hata ayıklama çıktısı üretir.
DBX veya SDB tarafından anlaşılır. System V Release 4 sistemlerinde bu seçenek GNU'yu gerektirir
montajcı.

-feliminate-kullanılmayan-hata ayıklama-sembolleri
Yalnızca semboller için hata ayıklama bilgilerini bıçak biçiminde (destekleniyorsa) üretin
aslında kullanılanlar.

-femit-sınıfı-hata ayıklama-her zaman
Yalnızca bir nesne dosyasında bir C++ sınıfı için hata ayıklama bilgisi yaymak yerine,
sınıfı kullanarak tüm nesne dosyalarında yayınlayın. Bu seçenek yalnızca
GCC'nin normalde hata ayıklama bilgilerini yayma şeklini idare edemeyen hata ayıklayıcılar
sınıflar için çünkü bu seçeneği kullanmak hata ayıklama bilgilerinin boyutunu artıracaktır.
iki faktör kadar.

-fno-debug-types-bölümü
Varsayılan olarak DWARF v4 veya daha yüksek tipte DIE'ler kullanılırken kendi kalıplarına yerleştirilecektir.
onları .debug_info bölümünün bir parçası yapmak yerine .debug_types bölümü. Bu
bağlayıcı daha sonra olacağından bunları ayrı bir comdat bölümlerine koymak daha verimli
kopyaları kaldırabilir. Ancak tüm DWARF tüketicileri .debug_types bölümlerini desteklemez
Henüz.

-gstabs+
GNU kullanarak (destekleniyorsa) hata ayıklama bilgilerini bıçak biçiminde üretin
yalnızca GNU hata ayıklayıcısı (GDB) tarafından anlaşılan uzantılar. Bu uzantıların kullanımı
diğer hata ayıklayıcıların çökmesine veya programı okumayı reddetmesine neden olabilir.

-gcoff
Hata ayıklama bilgilerini COFF biçiminde üretin (destekleniyorsa). bu
System V Release 4'ten önceki çoğu System V sisteminde SDB tarafından kullanılan format.

-gxcoff
Hata ayıklama bilgilerini XCOFF biçiminde üretin (destekleniyorsa). bu
IBM RS/6000 sistemlerinde DBX hata ayıklayıcı tarafından kullanılan biçim.

-gxcoff+
GNU kullanarak hata ayıklama bilgilerini XCOFF formatında (destekleniyorsa) üretin
yalnızca GNU hata ayıklayıcısı (GDB) tarafından anlaşılan uzantılar. Bu uzantıların kullanımı
diğer hata ayıklayıcıların çökmesine veya programı okumayı reddetmesine neden olabilir ve
GNU derleyicisi (GAS) dışındaki birleştiricilerin bir hatayla başarısız olması.

-gdwarf-versiyon
Cüce biçiminde hata ayıklama bilgileri üretin (destekleniyorsa). bu
IRIX 6 üzerinde DBX tarafından kullanılan biçim. versiyon 2, 3 veya 4 olabilir; NS
varsayılan sürüm 2'dir.

DWARF sürüm 2 ile bazı bağlantı noktalarının, bazı olmayanları gerektirdiğini ve her zaman kullanacağını unutmayın.
çözme tablolarında çakışan DWARF 3 uzantıları.

Sürüm 4, GDB 7.0 gerektirebilir ve -fvar-izleme-atamaları maksimum fayda için.

-grecord-gcc-anahtarları
Bu anahtar, derleyiciyi çağırmak için kullanılan komut satırı seçeneklerine neden olur.
DWARF'daki DW_AT_producer özniteliğine eklenecek kod oluşturmayı etkiler
hata ayıklama bilgileri. Seçenekler, onları birbirinden ayıran boşluklarla birleştirilmiştir.
birbirinden ve derleyici sürümünden. Ayrıca bakınız -frecord-gcc-anahtarları bir diğeri için
derleyici seçeneklerini nesne dosyasına saklamanın yolu.

-gno-kayıt-gcc-anahtarları
DWARF'ta DW_AT_producer özniteliğine komut satırı seçenekleri eklemeye izin verme
hata ayıklama bilgileri. Bu varsayılandır.

-gstrict-cüce
İle seçilenden daha sonraki DWARF standart sürümünün uzantılarının kullanılmasına izin verme
-gdwarf-versiyon. Daha sonra çakışmayan DWARF uzantıları kullanan çoğu hedefte
standart sürümlere izin verilir.

-gno-katı-cüce
İle seçilenden daha sonraki DWARF standart sürümünün uzantılarının kullanılmasına izin ver
-gdwarf-versiyon.

-gvm'ler
Hata ayıklama bilgilerini VMS hata ayıklama biçiminde üretin (destekleniyorsa). bu
VMS sistemlerinde DEBUG tarafından kullanılan biçim.

-gseviye
-ggdbseviye
-gstab'larseviye
-gcoffseviye
-gxcoffseviye
-gvm'lerseviye
Hata ayıklama bilgisi isteyin ve ayrıca kullanın seviye ne kadar bilgi olduğunu belirtmek için. NS
varsayılan seviye 2'dir.

Düzey 0, hiçbir hata ayıklama bilgisi üretmez. Böylece, -g0 reddeder -g.

Düzey 1, sistemin bazı bölümlerinde geriye dönük izler oluşturmaya yetecek kadar minimum bilgi üretir.
hata ayıklamayı planlamadığınız program. Bu, işlevlerin açıklamalarını ve
harici değişkenler, ancak yerel değişkenler hakkında bilgi yok ve satır numarası yok.

Seviye 3, menüde bulunan tüm makro tanımları gibi ek bilgileri içerir.
programı. Bazı hata ayıklayıcılar, kullandığınızda makro genişletmeyi destekler. -g3.

-gdwarf-2 birleştirilmiş bir hata ayıklama düzeyini kabul etmez, çünkü GCC eskiden bir
seçenek -gcüce bu, DWARF'ın 1. sürümünde hata ayıklama bilgisi oluşturmak anlamına geliyordu.
format (sürüm 2'den çok farklıdır) ve çok kafa karıştırıcı olurdu.
Bu hata ayıklama biçimi uzun süredir kullanılmamaktadır, ancak seçenek şimdi değiştirilemez. Bunun yerine kullanın
ek olarak -gseviye Cüce için hata ayıklama düzeyini değiştirme seçeneği.

-gtoggle
Hata ayıklama bilgilerinin oluşturulmasını kapatın, eğer bu seçeneğin dışında bırakılması onu oluşturacaktı,
veya aksi takdirde 2. seviyede açın. Bu argümanın komut satırındaki konumu
önemli değil, diğer tüm seçenekler işlendikten sonra yürürlüğe girer ve bunu yapar
sadece bir kez, kaç kez verildiğinin önemi yok. Bu esas olarak kullanılmak üzere tasarlanmıştır
ile -fcompare-hata ayıklama.

-fdump-son-insns[=dosya]
Son dahili temsili (RTL) şuraya boşaltın: dosya. İsteğe bağlı argüman ise
atlanmış (veya dosya "." ise), döküm dosyasının adı eklenerek belirlenecektir.
".gkd" derleme çıktı dosyası adına.

-fcompare-hata ayıklama[=tercih]
Derleme sırasında herhangi bir hata oluşmazsa, derleyiciyi ikinci kez çalıştırın. tercih ve
-fcompare-debug-saniye ikinci derlemeye iletilen argümanlara. boşalt
her iki derlemede de nihai dahili gösterim ve farklılık gösterirlerse bir hata yazdırın.

Eşittir işareti atlanırsa, varsayılan -gtoggle kullanıldı.

ortam değişkeni GCC_COMPARE_DEBUG, tanımlanmışsa, boş olmayan ve sıfır olmayan,
dolaylı olarak sağlar -fcompare-hata ayıklama. Eğer GCC_COMPARE_DEBUG bir dizeye tanımlanır
tire ile başlayarak, daha sonra için kullanılır tercih, aksi takdirde varsayılan -gtoggle is
Kullanılmış.

-fcompare-debug=, eşittir işareti olan ancak olmayan tercih, eşdeğerdir
-fno-karşılaştırma-hata ayıklamanihai temsilin dampingini devre dışı bırakan ve
ikinci derleme, hatta önleme GCC_COMPARE_DEBUG yürürlüğe girmesinden.

sırasında tam kapsamı doğrulamak için -fcompare-hata ayıklama test etmek, ayarlamak GCC_COMPARE_DEBUG söylemek
-fcompare-debug-geçersiz kılınmamışGCC'nin herhangi bir durumda geçersiz bir seçenek olarak reddedeceği
gerçek derleme (ön işleme, birleştirme veya bağlama yerine). Sadece bir tane almak için
uyarı, ayar GCC_COMPARE_DEBUG için -w%n-fkarşılaştırma-hata ayıklama değil Geçersiz kılınan yapacağım.

-fcompare-debug-saniye
Bu seçenek, istenen ikinci derleme için örtük olarak derleyiciye iletilir.
by -fcompare-hata ayıklama, uyarıları susturma ve diğer seçenekleri atlama seçenekleriyle birlikte
bu, dosyalara veya standart çıktıya yan etki derleyici çıktılarına neden olur.
Döküm dosyaları ve korunmuş geçici dosyalar, ".gk" dosyasını içerecek şekilde yeniden adlandırılır.
bunların üzerine yazmaktan kaçınmak için ikinci derleme sırasında ek uzantı
ilk tarafından oluşturulur.

Bu seçenek derleyici sürücüsüne geçirildiğinde, ilk derleme
atlanabilir, bu da derleyiciyi uygun şekilde hata ayıklamaktan başka bir işe yaramaz.

-feliminate-cüce2-dups
Her biri hakkında yinelenen bilgileri ortadan kaldırarak DWARF2 hata ayıklama bilgilerini sıkıştırın.
sembol. Bu seçenek yalnızca DWARF2 hata ayıklama bilgisi oluşturulurken anlamlıdır.
ile -gdwarf-2.

-femit-struct-debug-baseonly
Yapı benzeri türler için hata ayıklama bilgilerini yalnızca
derleme kaynak dosyası, yapının tanımlandığı dosyanın temel adıyla eşleşir.

Bu seçenek, hata ayıklama bilgilerinin boyutunu önemli ölçüde azaltır, ancak
hata ayıklayıcı için tür bilgisinde önemli potansiyel kayıp. Görmek
-femit-struct-debug-azaltılmış daha az agresif bir seçenek için. Görmek
-femit-struct-debug-detaylı Daha detaylı kontrol için.

Bu seçenek yalnızca DWARF 2 ile çalışır.

-femit-struct-debug-azaltılmış
Yapı benzeri türler için hata ayıklama bilgilerini yalnızca
derleme kaynak dosyası, türün tanımlandığı dosyanın temel adıyla eşleşir,
yapı bir şablon değilse veya bir sistem başlığında tanımlanmadıkça.

Bu seçenek, hata ayıklama bilgilerinin boyutunu önemli ölçüde azaltır, bazıları
tür bilgisinde hata ayıklayıcıya olası kayıp. Görmek -femit-struct-debug-baseonly
daha agresif bir seçenek için. Görmek -femit-struct-debug-detaylı daha detaylı için
kontrol.

Bu seçenek yalnızca DWARF 2 ile çalışır.

-femit-struct-debug-detaylı[=özellik listesi]
Derleyicinin hata ayıklama bilgileri oluşturacağı yapı benzeri türleri belirtin.
Amaç, farklı nesneler arasında yinelenen yapı hata ayıklama bilgilerini azaltmaktır.
Aynı program içindeki dosyalar.

Bu seçenek, aşağıdakilerin ayrıntılı bir sürümüdür: -femit-struct-debug-azaltılmış ve
-femit-struct-debug-baseonly, çoğu ihtiyaca hizmet edecek.

Bir belirtim sözdizimine sahiptir[yön:|in:][sipariş:|tür:](herhangi|sys|baz|Yok)

İsteğe bağlı ilk sözcük, belirtimi doğrudan kullanılan yapılarla sınırlar
(yön:) veya dolaylı olarak kullanılır (in:). Bir yapı türü, tür olduğunda doğrudan kullanılır
bir değişkenin, üye. Dolaylı kullanımlar, yapılara işaretçiler aracılığıyla ortaya çıkar. Yani,
eksik bir yapının kullanımı yasal olduğunda, kullanım dolaylıdır. Bir örnek
yapı bir doğrudan; yapı iki * dolaylı;.

İsteğe bağlı ikinci sözcük, belirtimi sıradan yapılarla sınırlar (sipariş:) Veya
genel yapılar (tür:). Genel yapıları açıklamak biraz karmaşıktır. C++ için,
bunlar, şablon sınıflarının veya şablon olmayan sınıfların açık olmayan uzmanlıklarıdır.
yukarıdakilerin içinde. Diğer programlama dillerinin jenerikleri vardır, ancak
-femit-struct-debug-detaylı henüz uygulamamaktadır.

Üçüncü kelime, derleyicinin kendisi için kullandığı yapılar için kaynak dosyaları belirtir.
hata ayıklama bilgisi yayacaktır. Değerler Yok ve herhangi normal anlamı var. NS
değer baz tür bildiriminin bulunduğu dosyanın adının tabanı anlamına gelir.
görünenler, ana derleme dosyasının adının tabanıyla eşleşmelidir. Uygulamada,
bu, türlerin bildirildiği anlamına gelir foo.c ve foo.h hata ayıklama bilgisine sahip olacak, ancak
diğer başlıkta bildirilen türler olmaz. Değer sys bu türlerin tatmin edici olduğu anlamına gelir
baz veya sistem veya derleyici başlıklarında bildirilir.

Uygulamanız için en iyi ayarları belirlemek için deneme yapmanız gerekebilir.

Varsayılan -femit-struct-debug-detailed=tümü.

Bu seçenek yalnızca DWARF 2 ile çalışır.

-fno-birleştirme-hata ayıklama-dizeleri
Bağlayıcıyı, hata ayıklama bilgilerindeki dizeleri birleştirmemeye yönlendirin.
farklı nesne dosyalarında aynı. Birleştirme, tüm montajcılar tarafından desteklenmez veya
bağlayıcılar. Birleştirme, çıktı dosyasındaki hata ayıklama bilgilerinin boyutunu şu adreste azaltır:
bağlantı işleme süresini artırmanın maliyeti. Birleştirme varsayılan olarak etkindir.

-fdebug-prefix-harita=eski=yeni
Dizindeki dosyaları derlerken eskiolarak açıklayan hata ayıklama bilgilerini kaydedin.
in yeni yerine.

-fno-cüce2-cfi-asm
Derleyici tarafından oluşturulan ".eh_frame" bölümü yerine DWARF 2 çözülme bilgisini yayar
GAS ".cfi_*" direktifleri.

-p Analiz programına uygun profil bilgilerini yazmak için ekstra kod oluşturun
profesör. Hakkında bilgi almak istediğiniz kaynak dosyaları derlerken bu seçeneği kullanmalısınız,
ve bağlantı kurarken de kullanmalısınız.

-pg Analiz programına uygun profil bilgilerini yazmak için ekstra kod oluşturun
gprof. Hakkında bilgi almak istediğiniz kaynak dosyaları derlerken bu seçeneği kullanmalısınız,
ve bağlantı kurarken de kullanmalısınız.

-Q Derleyicinin her işlev adını derlenirken yazdırmasını ve bazılarını yazdırmasını sağlar.
bittiğinde her geçişle ilgili istatistikler.

-ftime-raporu
Derleyicinin, her geçişte harcanan süre hakkında bazı istatistikler yazdırmasını sağlar.
bitirir.

-fmem-raporu
Derleyicinin, kalıcı bellek ayırma hakkında bazı istatistikleri yazdırmasını sağlar.
bitirir.

-fpre-ipa-mem-raporu
-fpost-ipa-mem-raporu
Derleyicinin kalıcı bellek tahsisi hakkında bazı istatistikleri önceden veya
prosedürler arası optimizasyondan sonra.

-fstack-kullanımı
Program için derleyici çıktı yığını kullanım bilgilerini işlev başına yapar
temel. Dökümün dosya adı, eklenerek yapılır. .su için yardımcı isim. yardımcı isim is
açıkça belirtilmişse, çıktı dosyasının adından oluşturulur ve bir
yürütülebilir, aksi takdirde kaynak dosyanın temel adıdır. Bir giriş oluşur
üç alan:

· Fonksiyonun adı.

· Bir dizi bayt.

· Bir veya daha fazla niteleyici: "statik", "dinamik", "sınırlı".

"Statik" niteleyicisi, işlevin yığını statik olarak manipüle ettiği anlamına gelir: a
fonksiyon girişinde çerçeve için sabit sayıda bayt tahsis edilir ve
fonksiyon çıkışı; fonksiyonda aksi halde yığın ayarlaması yapılmaz. İkinci
alan bu sabit bayt sayısıdır.

"Dynamic" niteleyicisi, işlevin yığını dinamik olarak manipüle ettiği anlamına gelir:
Yukarıda açıklanan statik tahsise ek olarak, yığın ayarlamaları
işlevin gövdesi, örneğin işlev çağrıları etrafında argümanları itmek/pop için. Eğer
"sınırlı" niteleyicisi de mevcuttur, bu ayarlamaların miktarı
derleme zamanı ve ikinci alan, kullanılan toplam yığın miktarının bir üst sınırıdır
fonksiyon tarafından. Mevcut değilse, bu düzeltmelerin tutarı sınırlı değildir.
derleme zamanında ve ikinci alan yalnızca sınırlı kısmı temsil eder.

-fprofile-yayları
Program akışı için kod ekleyin yaylar enstrümanlıdır. Programın yürütülmesi sırasında
her bir şube ve çağrının kaç kez yürütüldüğünü ve kaç kez alındığını kaydeder
veya geri döner. Derlenmiş program çıktığında, bu verileri adlı bir dosyaya kaydeder.
yardımcı ad.gcda her kaynak dosya için. Veriler, profile yönelik olarak kullanılabilir
optimizasyonlar (-fbranch-olasılıklar) veya test kapsamı analizi için
(-ftest-kapsama). Her nesne dosyasının yardımcı isim adından üretilir
çıktı dosyası, açıkça belirtilmişse ve son yürütülebilir dosya değilse, aksi takdirde
kaynak dosyanın temel adıdır. Her iki durumda da herhangi bir son ek kaldırılır (örn.
foo.gcda giriş dosyası için dizin/foo.cya da dizin/foo.gcda olarak belirtilen çıktı dosyası için -o
yön/foo.o).

--kapsama
Bu seçenek, kapsam analizi için kullanılan kodu derlemek ve bağlamak için kullanılır. NS
seçenek eş anlamlısı -fprofile-yayları -ftest-kapsama (derlerken) ve -lgcov
(bağlanırken). Daha fazla ayrıntı için bu seçeneklerle ilgili belgelere bakın.

· Kaynak dosyaları derleyin -fprofile-yayları artı optimizasyon ve kod oluşturma
seçenekler. Test kapsamı analizi için ek -ftest-kapsama seçeneği.
Bir programdaki her kaynak dosyanın profilini çıkarmanız gerekmez.

· Nesne dosyalarınızı -lgcov or -fprofile-yayları (sonuncusu şu anlama gelir:
önceki).

· Ark profilini oluşturmak için programı temsili bir iş yükü üzerinde çalıştırın
bilgi. Bu, herhangi bir sayıda tekrar edilebilir. Eşzamanlı çalıştırabilirsiniz
programınızın örnekleri ve dosya sisteminin kilitlemeyi desteklemesi koşuluyla,
veri dosyaları doğru şekilde güncellenecektir. Ayrıca "çatal" aramalar algılanır ve
doğru işlenmiş (çift sayım olmayacak).

· Profile yönelik optimizasyonlar için, kaynak dosyaları aynı
optimizasyon ve kod oluşturma seçenekleri artı -fbranch-olasılıklar.

· Test kapsamı analizi için şunu kullanın: gcov insan tarafından okunabilir bilgiler üretmek için
the .gcno ve .gcda Dosyalar. Bakın gcov daha fazlası için belgeler
bilgiler.

İle -fprofile-yayları, programınızın her işlevi için GCC bir program akışı oluşturur
grafiği, ardından grafik için bir kapsayan ağaç bulur. Sadece üzerinde olmayan yaylar
kapsayan ağaç enstrümante edilmelidir: derleyici, sayısını saymak için kod ekler.
bu yayların yürütüldüğü zamanlar. Bir yay tek çıkış veya tek giriş olduğunda
bir blok, enstrümantasyon kodu bloğa eklenebilir; aksi takdirde, yeni bir temel
enstrümantasyon kodunu tutmak için blok oluşturulmalıdır.

-ftest-kapsama
bir not dosyası oluşturun. gcov kod kapsamı yardımcı programı programı göstermek için kullanabilir
kapsama. Her kaynak dosyanın not dosyası denir yardımcı ad.gcno. Bakın
-fprofile-yayları açıklaması için yukarıdaki seçenek yardımcı isim ve nasıl yapılacağına ilişkin talimatlar
test kapsamı verileri oluşturun. Kapsam verileri kaynak dosyalarla daha yakından eşleşir,
optimize etmezseniz.

-fdbg-cnt-listesi
Tüm hata ayıklama sayaçları için adı ve sayaç üst sınırını yazdırın.

-fdbg-cnt=karşı-değer-listesi
Dahili hata ayıklama sayacı üst sınırını ayarlayın. karşı-değer-listesi virgülle ayrılmış
listesi isim:değer her hata ayıklama sayacının üst sınırını belirleyen çiftler isim için
değer. Tüm hata ayıklama sayaçları, başlangıç ​​üst sınırına sahiptir: UINT_MAXBöylece dbg_cnt()
üst sınır bu seçenek tarafından ayarlanmadıkça her zaman true değerini döndürür. örneğin ile
-fdbg-cnt=dce:10,tail_call:0 dbg_cnt(dce) yalnızca ilk 10 için true değerini döndürür
invokasyonlar

-savunabilir-tür-geçmek
-fdevre dışı-tür-geçmek=menzil listesi
Bu, açıkça devre dışı bırakmak/etkinleştirmek için kullanılan bir dizi hata ayıklama seçeneğidir.
optimizasyon geçer. Derleyici kullanıcıları için geçişleri etkinleştirmek/devre dışı bırakmak için normal seçenekler
yerine kullanılmalıdır.

*<-fdisable-ipa-geçmek>
ipa geçişini devre dışı bırak geçmek. geçmek geçiş adıdır. Aynı geçiş statik ise
derleyicide birden çok kez çağrıldığında, geçiş adının sonuna bir
1'den başlayan sıra numarası.

*<-fdisable-rtl-geçmek>
*<-fdisable-rtl-geçmek=menzil listesi>
rtl geçişini devre dışı bırak geçmek. geçmek geçiş adıdır. Aynı geçiş statik ise
derleyicide birden çok kez çağrıldığında, geçiş adının sonuna bir
1'den başlayan sıra numarası. menzil listesi virgülle ayrılmış bir listedir
işlev aralıkları veya montajcı adları. Her aralık, bir ile ayrılmış bir sayı çiftidir.
kolon. Aralık her iki uçta da kapsayıcıdır. Aralık önemsiz ise, sayı
çifti tek bir sayı olarak basitleştirilebilir. Eğer fonksiyonun cgraph düğümü ise uid is
belirtilen aralıklardan birine giren geçmek bunun için devre dışı
işlevi. uid bir döküm dosyasının işlev başlığında gösterilir ve geçiş
Seçenek kullanılarak isimler atılabilir -fdump-geçişler.

*<-fdisable-tree-geçmek>
*<-fdisable-tree-geçmek=menzil listesi>
Ağaç geçişini devre dışı bırak geçmek. Görmek -fdevre dışı-rtl seçeneğin açıklaması için
argümanlar.

*<-fenable-ipa-geçmek>
ipa geçişini etkinleştir geçmek. geçmek geçiş adıdır. Aynı geçiş statik ise
derleyicide birden çok kez çağrıldığında, geçiş adının sonuna bir
1'den başlayan sıra numarası.

*<-fenable-rtl-geçmek>
*<-fenable-rtl-geçmek=menzil listesi>
rtl geçişini etkinleştir geçmek. Görmek -fdevre dışı-rtl seçenek argüman açıklaması için ve
örnekleri.

*<-fenable-ağaç-geçmek>
*<-fenable-ağaç-geçmek=menzil listesi>
Ağaç geçişini etkinleştir geçmek. Görmek -fdevre dışı-rtl seçenek argümanlarının açıklaması için.

# tüm işlevler için ccp1'i devre dışı bırakın
-fdisable-tree-ccp1
# cgraph düğüm kullanıcı kimliği 1 olan işlev için tam kayıttan çıkarmayı devre dışı bırak
-fenable-ağaç-cunroll=1
# aşağıdaki aralıklardaki işlevler için gcse2'yi devre dışı bırakın [1,1],
# [300,400] ve [400,1000]
# foo ve foo2 işlevleri için gcse2'yi devre dışı bırakın
-fdisable-rtl-gcse2=foo,foo2
# erken satır içi oluşturmayı devre dışı bırak
-fdisable-ağaç-einline
# ipa satırını devre dışı bırak
-fdisable-ipa-satır içi
# ağacı tam açmayı etkinleştir
-fenable-ağaç-açma

-dharfler
-fdump-rtl-geçmek
Derleme sırasında tarafından belirtilen zamanlarda hata ayıklama dökümleri yapılacağını söylüyor harfler. Bu
derleyicinin RTL tabanlı geçişlerinde hata ayıklamak için kullanılır. Çoğu için dosya adları
dökümlere bir geçiş numarası ve bir kelime eklenerek yapılır. çöp adı, Ve
dosyalar, çıktı dosyasının dizininde oluşturulur. Geçiş numarasının
geçişler, geçiş yöneticisine kaydedilirken statik olarak hesaplanır. Böylece
numaralandırma, geçişlerin dinamik yürütme sırası ile ilgili değildir. Özellikle,
bir eklenti tarafından yüklenen bir geçiş, oldukça çalıştırılsa bile 200'ün üzerinde bir sayıya sahip olabilir
Erken. çöp adı açıkça ise, çıktı dosyasının adından oluşturulur
belirtilen ve yürütülebilir bir dosya değil, aksi takdirde kaynağın temel adıdır
dosya. Bu anahtarların farklı etkileri olabilir. -E ön işleme için kullanılır.

Hata ayıklama dökümleri, bir -fdump-rtl geçiş veya bazı -d seçenek harfler. İşte
kullanım için olası harfler nelerdir geçmek ve harfler, ve anlamları:

-fdump-rtl hizalamaları
Dal hizalamaları hesaplandıktan sonra döküm.

-fdump-rtl-asmcons
Karşılanmayan giriş/çıkış kısıtlamalarına sahip rtl deyimlerini düzelttikten sonra döküm.

-fdump-rtl-auto_inc_dec
Otomatik inc-dec keşfinden sonra döküm. Bu geçiş yalnızca şu mimarilerde çalıştırılır:
auto inc veya auto dec talimatlarına sahip olun.

-fdump-rtl-bariyerler
Bariyer talimatlarını temizledikten sonra boşaltın.

-fdump-rtl-bbpart
Sıcak ve soğuk temel blokları böldükten sonra boşaltın.

-fdump-rtl-bbro
Blok yeniden sıralandıktan sonra boşaltın.

-fdump-rtl-btl1
-fdump-rtl-btl2
-fdump-rtl-btl1 ve -fdump-rtl-btl2 iki dal hedefinden sonra boşaltmayı etkinleştir
yük optimizasyonu geçer.

-fdump-rtl-baypas
Atlamadan sonra atlayın ve akış optimizasyonlarını kontrol edin.

-fdump-rtl-birleştirmek
RTL komut kombinasyonu geçişinden sonra boşaltın.

-fdump-rtl-compgotos
Hesaplanan goto'ları çoğalttıktan sonra boşaltın.

-fdump-rtl-ce1
-fdump-rtl-ce2
-fdump-rtl-ce3
-fdump-rtl-ce1, -fdump-rtl-ce2, ve -fdump-rtl-ce3 üçten sonra dampingi etkinleştir
dönüşüm geçerse

-fdump-rtl-cprop_hardreg
Sabit kayıt kopya yayılımından sonra dökümü.

-fdump-rtl-csa
Yığın ayarlamalarını birleştirdikten sonra boşaltın.

-fdump-rtl-cse1
-fdump-rtl-cse2
-fdump-rtl-cse1 ve -fdump-rtl-cse2 iki ortak alt öğeden sonra dampingi etkinleştir
ifade eleme geçer.

-fdump-rtl-dce
Bağımsız ölü kod eleme geçtikten sonra boşaltın.

-fdump-rtl-dbr
Gecikmeli şube planlamasından sonra döküm.

-fdump-rtl-dce1
-fdump-rtl-dce2
-fdump-rtl-dce1 ve -fdump-rtl-dce2 iki ölü mağazadan sonra boşaltmayı etkinleştir
eleme geçer.

-fdump-rtl-eh
EH işleme kodunun tamamlanmasından sonra döküm.

-fdump-rtl-eh_aralıkları
EH işleme aralığı bölgelerinin dönüştürülmesinden sonra boşaltma.

-fdump-rtl-genişlet
RTL oluşumundan sonra dökümü.

-fdump-rtl-fwprop1
-fdump-rtl-fwprop2
-fdump-rtl-fwprop1 ve -fdump-rtl-fwprop2 iki ileriden sonra dampingi etkinleştir
yayılma geçer.

-fdump-rtl-gcse1
-fdump-rtl-gcse2
-fdump-rtl-gcse1 ve -fdump-rtl-gcse2 küresel ortak kullanımdan sonra dampingi etkinleştir
alt ifade eliminasyonu.

-fdump-rtl-init-reg'ler
Kayıtların başlatılmasından sonra döküm.

-fdump-rtl-başlangıçları
İlk değer kümelerinin hesaplanmasından sonra boşaltın.

-fdump-rtl-into_cfglayout
cfglayout moduna dönüştürdükten sonra dökümü.

-fdump-rtl-ira
Yinelenen kayıt tahsisinden sonra döküm.

-fdump-rtl-atlama
İkinci atlama optimizasyonundan sonra boşaltın.

-fdump-rtl-döngü2
-fdump-rtl-döngü2 rtl döngü optimizasyonu geçtikten sonra boşaltmayı etkinleştirir.

-fdump-rtl-mach
Makineye bağlı yeniden düzenleme geçişini gerçekleştirdikten sonra boşaltma, eğer bu geçerse
bulunmaktadır.

-fdump-rtl-mode_sw
Yedekli mod anahtarlarını çıkardıktan sonra boşaltın.

-fdump-rtl-rnreg
Kayıt yeniden numaralandırma işleminden sonra dökümü.

-fdump-rtl-outof_cfglayout
cfglayout modundan dönüştürdükten sonra dökümü.

-fdump-rtl-gözetleme deliği2
Gözetleme deliğinden geçtikten sonra boşaltın.

-fdump-rtl-yeniden yükleme
Yeniden yükleme sonrası optimizasyonlardan sonra boşaltın.

-fdump-rtl-pro_and_epilogue
İşlev önsözlerini ve sonsözlerini oluşturduktan sonra boşaltın.

-fdump-rtl-regmove
Kayıt taşıma geçişinden sonra boşaltın.

-fdump-rtl-schedu1
-fdump-rtl-schedu2
-fdump-rtl-schedu1 ve -fdump-rtl-schedu2 temel bloktan sonra boşaltmayı etkinleştir
zamanlama geçer.

-fdump-rtl-görmek
İşaret uzantısının ortadan kaldırılmasından sonra boşaltın.

-fdump-rtl-seqabstr
Ortak dizi keşfinden sonra döküm.

-fdump-rtl-kısaltma
Dalları kısalttıktan sonra boşaltın.

-fdump-rtl-kardeş
Kardeş arama optimizasyonlarından sonra döküm.

-fdump-rtl-bölünmüş1
-fdump-rtl-bölünmüş2
-fdump-rtl-bölünmüş3
-fdump-rtl-bölünmüş4
-fdump-rtl-bölünmüş5
-fdump-rtl-bölünmüş1, -fdump-rtl-bölünmüş2, -fdump-rtl-bölünmüş3, -fdump-rtl-bölünmüş4 ve
-fdump-rtl-bölünmüş5 beş tur talimat bölme işleminden sonra boşaltmayı etkinleştirin.

-fdump-rtl-sms
Modulo zamanlamasından sonra dökümü. Bu geçiş yalnızca bazı mimarilerde çalıştırılır.

-fdump-rtl-yığın
GCC'nin "düz kayıt dosyası" kayıtlarından x87'lere dönüştürüldükten sonra döküm
yığın benzeri kayıtlar. Bu geçiş yalnızca x86 türevlerinde çalıştırılır.

-fdump-rtl-altreg1
-fdump-rtl-altreg2
-fdump-rtl-altreg1 ve -fdump-rtl-altreg2 iki alt kayıttan sonra boşaltmayı etkinleştir
genişleme geçer.

-fdump-rtl-paylaşmayı kaldır
Tüm rtl paylaşıldıktan sonra dökümü.

-fdump-rtl-vartrack
Değişken takibinden sonra dökümü.

-fdump-rtl-vreg'ler
Sanal kayıtları sabit kayıtlara dönüştürdükten sonra döküm.

-fdump-rtl-web
Canlı aralık bölünmesinden sonra boşaltın.

-fdump-rtl-regclass
-fdump-rtl-subregs_of_mode_init
-fdump-rtl-subregs_of_mode_finish
-fdump-rtl-dfinit
-fdump-rtl-dbitir
Bu dökümler tanımlanır ancak her zaman boş dosyalar üretir.

-verir
-fdump-rtl-tümü
Yukarıda listelenen tüm dökümleri üretin.

-dA Derleyici çıktısına çeşitli hata ayıklama bilgileriyle açıklama ekleyin.

-dd Normal tanımlamaya ek olarak, ön işlemenin sonunda tüm makro tanımlarını boşaltın
çıktı.

-dH Bir hata oluştuğunda bir çekirdek dökümü oluşturun.

-dp Birleştirici çıktısına, hangi modelin ve
alternatif kullanıldı. Her talimatın uzunluğu da yazdırılır.

-dP RTL'yi her komuttan önce bir yorum olarak montajcı çıktısına boşaltın. Ayrıca
açılır -dp Ek açıklama.

-dv Belirtilen diğer döküm dosyalarının her biri için (-fdump-rtl-geçmek), bir dökümü
için VCG ile görüntülemeye uygun kontrol akış grafiğinin temsili
dosya.pass.vcg.

-dx Derlemek yerine bir işlev için RTL oluşturun. Genellikle birlikte kullanılır
-fdump-rtl-genişlet.

-fdump-noaddr
Hata ayıklama dökümleri yaparken, adres çıktısını bastırın. Bu, daha uygun hale getirir
farklı derleyici ikili dosyalarına sahip derleyici çağrıları için hata ayıklama dökümlerinde diff kullanın
ve/veya farklı metin / bss / veri / yığın / yığın / dso başlangıç ​​konumları.

-fdump-numarasız
Hata ayıklama dökümleri yaparken, talimat numaralarını ve adres çıktısını gizleyin. Bu
derleyici çağrıları için hata ayıklama dökümlerinde diff kullanmayı daha uygun hale getirir
farklı seçenekler, özellikle ile ve olmadan -g.

-fdump-numarasız-bağlantılar
Hata ayıklama dökümleri yaparken (bkz. -d yukarıdaki seçenek), için talimat numaralarını gizleyin.
bir sıradaki önceki ve sonraki talimatlara bağlantılar.

-fdump-çeviri-birimi (Yalnızca C++)
-fdump-translation-birimi-seçenekleri (Yalnızca C++)
Tüm çeviri birimi için ağaç yapısının bir temsilini bir dosyaya dökün.
Dosya adı ekleyerek yapılır .tu kaynak dosya adına ve dosya
çıktı dosyasıyla aynı dizinde oluşturulur. Eğer -seçenekleri formu kullanılır,
seçenekleri için açıklandığı gibi dökümün ayrıntılarını kontrol eder. -fdump-ağacı seçenekleri.

-fdump-sınıfı-hiyerarşisi (Yalnızca C++)
-fdump-sınıfı-hiyerarşi-seçenekleri (Yalnızca C++)
Her sınıfın hiyerarşisinin ve sanal işlev tablosu düzeninin bir temsilini bir
dosya. Dosya adı ekleyerek yapılır .sınıf kaynak dosya adına ve dosyaya
çıktı dosyasıyla aynı dizinde oluşturulur. Eğer -seçenekleri formu kullanılır,
seçenekleri için açıklandığı gibi dökümün ayrıntılarını kontrol eder. -fdump-ağacı seçenekleri.

-fdump-ipa-anahtar
Prosedürler arası analiz dil ağacının çeşitli aşamalarında dampingi kontrol edin.
dosya. Dosya adı, kaynağa anahtara özel bir sonek eklenerek oluşturulur.
dosya adı ve dosya, çıktı dosyasıyla aynı dizinde oluşturulur. NS
aşağıdaki dökümler mümkündür:

herşey Tüm prosedürler arası analiz dökümlerini etkinleştirir.

cgraf
Çağrı grafiği optimizasyonu, kullanılmayan işlevlerin kaldırılması ve
satır içi kararlar.

inline
İşlev satır içi işleminden sonra boşaltın.

-fdump-geçişler
Geçerli tarafından açılıp kapatılan optimizasyon geçişlerinin listesini boşaltın
komut satırı seçenekleri.

-fdump-istatistikleri-seçenek
Geçiş istatistiklerinin ayrı bir dosyada dökümünü etkinleştirin ve kontrol edin. dosya adı
ile biten bir sonek eklenerek oluşturulur. .İstatistik kaynak dosya adına ve
dosyası, çıktı dosyasıyla aynı dizinde oluşturulur. Eğer -seçenek form
Kullanılmış, -istatistikler Sayaçların tüm derleme birimi üzerinde toplanmasına neden olurken,
-detaylar geçişler onları oluştururken her olayı boşaltacaktır. Hayır ile varsayılan
seçenek, derlenen her işlev için sayaçları toplamaktır.

-fdump-ağacı-anahtar
-fdump-ağacı-anahtar-seçenekleri
Ara dil ağacının işlenmesinin çeşitli aşamalarında boşaltmayı kontrol edin.
bir dosya. Dosya adı, anahtara özel bir soneki eklenerek oluşturulur.
kaynak dosya adı ve dosya, çıktı dosyasıyla aynı dizinde oluşturulur.
Eğer -seçenekleri formu kullanılır, seçenekleri bir listesidir - kontrol eden ayrılmış seçenekler
çöplüğün detayları. Tüm seçenekler tüm dökümler için geçerli değildir; olanlar
anlamlı olmayan göz ardı edilecektir. Aşağıdaki seçenekler mevcuttur

adres
Her düğümün adresini yazdırın. Genellikle bu değiştiği için anlamlı değildir
ortama ve kaynak dosyaya göre. Birincil kullanımı bir şeyi bağlamak içindir.
bir hata ayıklama ortamına sahip döküm dosyası.

asmname
Belirli bir dekl için "DECL_ASSEMBLER_NAME" ayarlanmışsa, bunu dökümde kullanın
"DECL_NAME" yerine. Birincil kullanımı, geriye doğru çalışan kullanım kolaylığıdır.
derleme dosyasında karışık isimler.

ince
Bir işlevin kapsamının veya gövdesinin üyelerinin yalnızca bu nedenle boşaltılmasını engellemek
kapsamına ulaşılmıştır. Bu tür öğeleri yalnızca doğrudan erişilebildiğinde atın.
başka bir yol. Güzel basılmış ağaçları dökerken, bu seçenek dökümü engeller
kontrol yapılarının organları.

çiğ Ağacın ham bir temsilini yazdırın. Varsayılan olarak, ağaçlar oldukça yazdırılır
C benzeri bir temsil.

ayrıntılar
Daha ayrıntılı dökümleri etkinleştirin (her döküm seçeneği tarafından dikkate alınmaz).

istatistikler
Geçişle ilgili çeşitli istatistiklerin dökümünü etkinleştirin (her döküm tarafından onurlandırılmaz)
seçenek).

bloklar
Temel blok sınırlarını göstermeyi etkinleştir (ham dökümlerde devre dışı).

vop'lar
Her ifade için sanal işlenenleri göstermeyi etkinleştirin.

keten
İfadeler için satır numaralarını göstermeyi etkinleştirin.

uid Her değişken için benzersiz kimliği ("DECL_UID") göstermeyi etkinleştirin.

gereksiz sözlerle dolu
Her ifade için ağaç dökümünü göstermeyi etkinleştirin.

eh Her bir ifadeyi tutan EH bölge numarasını göstermeyi etkinleştirin.

scev
Skaler evrim analizi ayrıntılarını göstermeyi etkinleştirin.

herşey dışındaki tüm seçenekleri açın. çiğ, ince, gereksiz sözlerle dolu ve keten.

Aşağıdaki ağaç dökümleri mümkündür:

orijinal
Herhangi bir ağaç tabanlı optimizasyondan önce dökümü, dosya.orijinal.

optimize
Tüm ağaç tabanlı optimizasyondan sonra, dosya.optimize edilmiş.

sivilce
Her işlevi bir dosyaya geçişten önce ve sonra boşaltın. Dosya
isim eklenerek yapılır .gimple kaynak dosya adına.

cfg Her işlevin kontrol akış grafiğini bir dosyaya boşaltın. Dosya adı tarafından yapılır
ekleme .cfg kaynak dosya adına.

vg Her işlevin kontrol akış grafiğini VCG formatında bir dosyaya aktarın. Dosya
isim eklenerek yapılır .vcg kaynak dosya adına. Dikkat edin, eğer dosya
birden fazla işlev içeriyorsa, oluşturulan dosya doğrudan tarafından kullanılamaz.
VCG. Her fonksiyonun grafiğini kesip kendi ayrı grafiğine yapıştırmanız gerekecek.
önce dosya.

ch Döngü başlıklarını kopyaladıktan sonra her işlevi boşaltın. Dosya adı ekleyerek yapılır
.ch kaynak dosya adına.

ssa SSA ile ilgili bilgileri bir dosyaya dökün. Dosya adı ekleyerek yapılır .ssa
kaynak dosya adına.

takma ad
Her işlev için takma ad bilgilerini boşaltın. Dosya adı ekleyerek yapılır
.takma ad kaynak dosya adına.

ccp CCP'den sonra her işlevi boşaltın. Dosya adı ekleyerek yapılır .ccp için
kaynak dosya adı.

mağazaccp
STORE-CCP'den sonra her işlevi boşaltın. Dosya adı ekleyerek yapılır .storeccp
kaynak dosya adına.

önceden Kısmi fazlalık ortadan kaldırıldıktan sonra ağaçları boşaltın. Dosya adı tarafından yapılır
ekleme .pre kaynak dosya adına.

fre Tam fazlalık ortadan kaldırıldıktan sonra ağaçları boşaltın. Dosya adı ekleyerek yapılır
.fre kaynak dosya adına.

kopya prop
Kopya yayılımından sonra ağaçları boşaltın. Dosya adı ekleyerek yapılır .kopyalama
kaynak dosya adına.

mağaza_kopyaprop
Mağaza kopyalama yayılımından sonra ağaçları boşaltın. Dosya adı ekleyerek yapılır
.store_copyprop kaynak dosya adına.

dce Ölü kod ortadan kaldırıldıktan sonra her işlevi boşaltın. Dosya adı tarafından yapılır
ekleme .dce kaynak dosya adına.

çamurluk
Çamurluk enstrümantasyonu ekledikten sonra her işlevi boşaltın. Dosya adı tarafından yapılır
ekleme .çamurluk kaynak dosya adına.

sRA Toplamaların skaler değişimini gerçekleştirdikten sonra her işlevi boşaltın. Dosya
isim eklenerek yapılır .sra kaynak dosya adına.

lavabo
Kod batmasını gerçekleştirdikten sonra her işlevi boşaltın. Dosya adı tarafından yapılır
ekleme .lavabo kaynak dosya adına.

hediye Baskın ağaç optimizasyonlarını uyguladıktan sonra her işlevi boşaltın. dosya adı
eklenerek yapılmış .dom kaynak dosya adına.

söyle Ölü depo eliminasyonunu uyguladıktan sonra her işlevi boşaltın. Dosya adı yapılır
ekleyerek .dse kaynak dosya adına.

phiopt
PHI düğümlerini düz çizgi koduna optimize ettikten sonra her işlevi boşaltın. Dosya
isim eklenerek yapılır .phiopt kaynak dosya adına.

ileri pervane
Tek kullanımlık değişkenleri ileriye doğru yaydıktan sonra her işlevi boşaltın. dosya adı
eklenerek yapılır .forwprop kaynak dosya adına.

kopya adı
Kopya yeniden adlandırma optimizasyonunu uyguladıktan sonra her işlevi boşaltın. dosya adı
eklenerek yapılmış .kopya adı kaynak dosya adına.

nrv Jenerik üzerinde adlandırılmış dönüş değeri optimizasyonunu uyguladıktan sonra her işlevi boşaltın
ağaçlar. Dosya adı ekleyerek yapılır .nrv kaynak dosya adına.

vektör
Döngülerin vektörleştirilmesini uyguladıktan sonra her işlevi boşaltın. Dosya adı yapılır
ekleyerek .vect kaynak dosya adına.

slp Temel blokların vektörleştirilmesini uyguladıktan sonra her işlevi boşaltın. dosya adı
eklenerek yapılmış .slp kaynak dosya adına.

vrp Değer Aralığı Yayılımından (VRP) sonra her işlevi boşaltın. Dosya adı tarafından yapılır
ekleme .vrp kaynak dosya adına.

herşey Bu seçenekte sağlanan bayraklarla mevcut tüm ağaç dökümlerini etkinleştirin.

-ftree-vektörleştirici-ayrıntılı=n
Bu seçenek, vektörleştiricinin yazdırdığı hata ayıklama çıktısının miktarını kontrol eder. Bu
bilgi, standart hataya yazılır, aksi takdirde -fdump-tree-hepsi or -fdump-ağaç-vect
belirtilir, bu durumda normal döküm listeleme dosyasına gönderilir, .vect. Için
n=0 hiçbir tanı bilgisi rapor edilmez. Eğer n=1 vektörleştirici her döngüyü bildirir
bu vektörleştirilmiş ve vektörleştirilmiş toplam döngü sayısı. Eğer n=2
vectorizer ayrıca ilk analiz aşamasını geçen vektörleştirilmemiş döngüleri de bildirir
(vect_analyze_loop_form) - yani sayılabilir, en içteki, tek bb, tek giriş/çıkış
döngüler. Bu aynı ayrıntı düzeyi -fdump-ağaç-vektör istatistikleri kullanır. Daha yüksek
Ayrıntı düzeyi, raporlanan her döngü için daha fazla bilgi atılması veya aynı
daha fazla döngü için rapor edilen bilgi miktarı: eğer n=3, vektörleştirici maliyet modeli
bilgiler bildirilir. Eğer n=4, hizalama ile ilgili bilgiler,
raporlar. Eğer n=5, veri referansları ile ilgili bilgiler (örn. hafıza bağımlılıkları, hafıza
erişim kalıpları) raporlara eklenir. Eğer n=6, vektörleştirici ayrıca
İlk analiz aşamasını geçmeyen vektörleştirilmiş en içteki döngüler (yani,
sayılabilir veya karmaşık kontrol akışına sahip olabilir). Eğer n=7, vektörleştirici raporlar
ayrıca vektörleştirilmemiş iç içe döngüler. Eğer n=8, SLP ile ilgili bilgiler
raporlar. İçin n=9, vektörleştiricinin analizi sırasında ürettiği tüm bilgiler
ve dönüşüm raporlanır. Bu aynı ayrıntı düzeyi
-fdump-tree-vect-detaylar kullanır.

-frandom-tohum=dizi
Bu seçenek, aksi takdirde rastgele sayılar kullandığında GCC'nin kullandığı bir tohum sağlar.
Her durumda farklı olması gereken belirli sembol adlarını oluşturmak için kullanılır.
derlenmiş dosya Ayrıca, kapsam veri dosyalarına benzersiz damgalar yerleştirmek için kullanılır ve
onları üreten nesne dosyaları. kullanabilirsiniz -frandom-tohum üretme seçeneği
tekrarlanabilir şekilde özdeş nesne dosyaları.

The dizi derlediğiniz her dosya için farklı olmalıdır.

-fsched-ayrıntılı=n
Talimat zamanlamasını kullanan hedeflerde bu seçenek, aşağıdakilerin miktarını kontrol eder.
hata ayıklama çıktısı zamanlayıcı yazdırır. Bu bilgi standart hataya yazılır,
olmadıkça -fdump-rtl-schedu1 or -fdump-rtl-schedu2 belirtilir, bu durumda çıktı alınır
olağan döküm liste dosyasına, .schedule1 or .schedule2 sırasıyla. Ancak n
dokuzdan büyükse, çıktı her zaman standart hatayla yazdırılır.

İçin n sıfırdan büyük, -fsched-ayrıntılı ile aynı bilgiyi verir
-fdump-rtl-schedu1 ve -fdump-rtl-schedu2. Için n birden büyük, aynı zamanda temel çıktı
blok olasılıkları, ayrıntılı hazır liste bilgileri ve birim/insn bilgileri. İçin n
ikiden büyükse, durdurma noktasında RTL, kontrol akışı ve bölge bilgilerini içerir. Ve
için n dörtten fazla, -fsched-ayrıntılı bağımlılık bilgilerini de içerir.

-kaydet-temps
-save-temps=cwd
Her zamanki "geçici" ara dosyaları kalıcı olarak saklayın; onları akıma yerleştir
dizin ve kaynak dosyaya göre adlandırın. Böylece derleme foo.c ile -c
-kaydet-temps dosyalar üretecek foo.i ve foo.s, Hem de foo.o. Bu bir
ön işleme tabi tutulmuş foo.i çıktı dosyası, derleyici artık normalde bir
entegre ön işlemci

ile birlikte kullanıldığında -x komut satırı seçeneği, -kaydet-temps mantıklı
ile aynı uzantıya sahip bir girdi kaynak dosyasının üzerine yazmaktan kaçınmak için yeterli
ara dosya. Karşılık gelen ara dosya yeniden adlandırılarak elde edilebilir.
kullanmadan önce kaynak dosya -kaydet-temps.

GCC'yi paralel olarak çağırırsanız, bir
farklı alt dizinlerdeki ortak temel ad veya aynı kaynak dosya için derlenmiş
birden çok çıktı hedefi varsa, farklı paralel derleyicilerin
birbirinize müdahale edin ve geçici dosyaların üzerine yazın. Örneğin:

gcc -save-temps -o outdir1/foo.o indir1/foo.c&
gcc -save-temps -o outdir2/foo.o indir2/foo.c&

Sonuçlanabilir foo.i ve foo.o her iki derleyici tarafından aynı anda yazılıyor.

-save-temps=nesne
Her zamanki "geçici" ara dosyaları kalıcı olarak saklayın. Eğer -o seçeneği kullanılır,
geçici dosyalar nesne dosyasını temel alır. Eğer -o seçeneği kullanılmaz,
-save-temps=nesne anahtar gibi davranır -kaydet-temps.

Örneğin:

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

Yaratacaktı foo.i, foo.s, dizin/xbar.i, dizin/xbar.s, dir2/yfoobar.i, dir2/yfoobar.s, ve
dir2/yfoobar.o.

Zamanlı[=dosya]
Derleme sırasındaki her bir alt işlem tarafından alınan CPU süresini rapor edin. C için
kaynak dosyalar, bu, uygun derleyici ve derleyicidir (artı, bağlantı kuruluysa bağlayıcı
tamamlamak).

Bir çıktı dosyasının belirtimi olmadan çıktı şöyle görünür:

# cc1 0.12 0.01
# 0.00 0.01 olarak

Her satırdaki ilk sayı, "kullanıcı zamanı"dır, yani işlemi yürütmek için harcanan zamandır.
programın kendisi. İkinci sayı "sistem zamanı", işletimi yürütmek için harcanan zamandır
program adına sistem rutinleri. Her iki sayı da saniye cinsindendir.

Bir çıktı dosyasının belirtimi ile çıktı, adlandırılmış dosyaya eklenir,
ve şuna benziyor:

0.12 0.01 cc1
0.00 0.01 olarak

"Kullanıcı zamanı" ve "sistem zamanı", program adından önce taşınır ve
Programa iletilen seçenekler görüntülenir, böylece daha sonra hangi dosyanın olduğu anlaşılabilir.
derleniyor ve hangi seçeneklerle.

-fvar-izleme
Değişken izleme geçişini çalıştırın. Değişkenlerin her pozisyonda nerede saklandığını hesaplar
kodda. Daha sonra daha iyi hata ayıklama bilgileri oluşturulur (hata ayıklama bilgileri
biçimi bu bilgileri destekler).

Optimizasyon ile derlerken varsayılan olarak etkindir (-İşletim sistemi, -O, -O2, ...),
hata ayıklama bilgileri (-g) ve hata ayıklama bilgisi formatı bunu destekler.

-fvar-izleme-atamaları
Derlemenin başlarında kullanıcı değişkenlerine atamalara açıklama ekleyin ve
bir girişimde, derleme boyunca sonuna kadar ek açıklamalar
optimize ederken hata ayıklama bilgilerini iyileştirmek için. Kullanımı -gdwarf-4 birlikte tavsiye edilir
onunla.

Var-tracking devre dışı bırakılsa bile etkinleştirilebilir, bu durumda ek açıklamalar
yaratılır ve korunur, ancak sonunda atılır.

-fvar-izleme-ödevleri-değiştirme
Toggle -fvar-izleme-atamalarıaynı şekilde -gtoggle geçiş yapar -g.

-baskı-dosya-adı=kütüphane
Kitaplık dosyasının tam adını yazdırın kütüphane ne zaman kullanılacaktı
bağlama --- ve başka bir şey yapmayın. Bu seçenekle, GCC derleme yapmaz veya bağlantı oluşturmaz
herhangi bir şey; sadece dosya adını yazdırır.

-baskı-çoklu-dizin
Diğer anahtarlar tarafından seçilen multilib'e karşılık gelen dizin adını yazdırın
komut satırında bulunur. Bu dizinin içinde olması gerekiyordu GCC_EXEC_PREFIX.

-baskı-çoklu kitaplık
Eşlemeyi multilib dizin adlarından bunları etkinleştiren derleyici anahtarlarına yazdırın.
Dizin adı anahtarlardan şu şekilde ayrılır: ;ve her anahtar bir
@ onun yerine -, birden fazla anahtar arasında boşluk bırakmadan. Bunun olması gerekiyordu
kabuk işlemeyi kolaylaştırır.

-baskı-çoklu-işletim-dizini
Seçilen multilib için işletim sistemi kitaplıklarının yolunu bazılarına göre yazdırın lib
alt dizin. İşletim sistemi kitaplıkları mevcutsa lib alt dizin ve multilib yok
kullanılır, bu genellikle sadece ., işletim sistemi kitaplıkları mevcutsa kütüphane son eki kardeş
bunun yazdırıldığı dizinler, örneğin ../lib64, ../ lib or ../lib32veya işletim sistemi kitaplıkları
içinde mevcut lib/alt dizin yazdırdığı alt dizinler, örneğin amd64, sparcv9 or ev6.

-baskı-multiarch
Seçilen çoklu ark için işletim sistemi kitaplıklarına giden yolu, bazılarına göre yazdırın. lib
alt dizin.

-baskı-prog-adı=program
Facebok sayfasını beğenin : -baskı-dosya-adı, ancak aşağıdaki gibi bir program arar cpp.

-print-libgcc-dosya-adı
Aynısı -baskı-dosya-adı=libgcc.a.

Bu, kullandığınızda yararlıdır -nstdlib or -nodefaultlib'ler ama bağlantı kurmak istiyorsun
libgcc.a. Yapabilirsin

gcc -nostdlib ... `gcc -print-libgcc-dosya-adı`

-baskı-arama-dir'leri
Yapılandırılan kurulum dizininin adını ve program listesini yazdırın ve
kütüphane dizinleri gcc arayacak --- ve başka bir şey yapma.

Bu yararlı olduğunda gcc hata mesajını yazdırır Kurulum sorun, yapamam exec
cpp0: Yok hayır böyle dosya or rehber. Bunu çözmek için ya koymanız gerekir cpp0 ve
diğer derleyici bileşenleri nerede gcc onları bulmayı umuyor veya
Çevre değişkeni GCC_EXEC_PREFIX onları kurduğunuz dizine. yapma
takip etmeyi unut /.

-print-sysroot
Derleme sırasında kullanılacak hedef sysroot dizinini yazdırın. bu
yapılandırma zamanında veya --sistem kökü seçeneği
muhtemelen derleme seçeneklerine bağlı olan ekstra bir son ek ile. hedef yoksa
sysroot belirtilirse, seçenek hiçbir şey yazdırmaz.

-print-sysroot-headers-soneki
Başlıkları ararken hedef sistem köküne eklenen son eki yazdırın veya
derleyici böyle bir sonekle yapılandırılmamışsa hata verir ve hiçbir şey yapmayın
Başka.

-aptal makinesi
Derleyicinin hedef makinesini yazdırın (örneğin, i686-pc-linux-gnu)---ve yapma
başka herhangi bir şey.

-döküm
Derleyici sürümünü yazdırın (örneğin, 3.0)---ve başka bir şey yapmayın.

-dumpspec'ler
Derleyicinin yerleşik özelliklerini yazdırın --- ve başka bir şey yapmayın. (Bu ne zaman kullanılır
GCC'nin kendisi inşa ediliyor.)

-feliminate-kullanılmayan-hata ayıklama türleri
Normalde, DWARF2 çıktısı üretirken, GCC, tümü için hata ayıklama bilgisi yayar.
bir derleme biriminde bildirilen türler, gerçekte olup olmadıklarına bakılmaksızın
bu derleme biriminde kullanılır. Bazen bu yararlıdır, örneğin hata ayıklayıcıda,
programınızda gerçekten kullanılmayan bir türe bir değer atamak istiyorsunuz (ancak
beyan). Bununla birlikte, daha sıklıkla, bu, önemli miktarda boşa harcanan alanla sonuçlanır.
Bu seçenekle, GCC, türler için hata ayıklama sembolü çıktısı üretmekten kaçınacaktır.
derlenmekte olan kaynak dosyada hiçbir yerde kullanılmaz.

Opsiyonlar O Control Optimizasyon
Bu seçenekler, çeşitli optimizasyon türlerini kontrol eder.

Herhangi bir optimizasyon seçeneği olmadan, derleyicinin amacı derleme maliyetini azaltmaktır.
ve hata ayıklamanın beklenen sonuçları üretmesini sağlamak. İfadeler bağımsızdır: eğer
programı ifadeler arasında bir kesme noktası ile durdurun, ardından yeni bir değer atayabilirsiniz.
herhangi bir değişken veya program sayacını işlevdeki başka bir ifadeyle değiştirin ve
tam olarak kaynak koddan bekleyeceğiniz sonuçlar.

Optimizasyon bayraklarını açmak, derleyicinin performansı iyileştirmeye çalışmasını ve/veya
derleme süresi ve muhtemelen hata ayıklama yeteneği pahasına kod boyutu
programı.

Derleyici, program hakkında sahip olduğu bilgilere dayanarak optimizasyon gerçekleştirir.
Birden çok dosyayı aynı anda tek bir çıktı dosyası modunda derlemek, derleyicinin
her birini derlerken tüm dosyalardan elde edilen bilgiler.

Tüm optimizasyonlar doğrudan bir bayrak tarafından kontrol edilmez. Yalnızca
bayrak bu bölümde listelenir.

Çoğu optimizasyon yalnızca şu durumlarda etkinleştirilir: -O seviye komut satırında ayarlanır. Aksi halde
bireysel optimizasyon bayrakları belirtilse bile bunlar devre dışı bırakılır.

Hedefe ve GCC'nin nasıl yapılandırıldığına bağlı olarak, biraz farklı bir dizi
optimizasyonlar her birinde etkinleştirilebilir -O Burada listelenenlerden daha yüksek seviyede. GCC'yi çağırabilirsiniz
ile -Q --help=iyileştiriciler etkinleştirilen tam optimizasyon kümesini bulmak için
her seviye.

-O
-O1 Optimize et. Derlemeyi optimize etmek için biraz daha fazla zaman ve çok daha fazla bellek gerekir.
büyük bir işlev.

İle -O, derleyici, gerçekleştirmeden kod boyutunu ve yürütme süresini azaltmaya çalışır.
çok fazla derleme süresi alan herhangi bir optimizasyon.

-O aşağıdaki optimizasyon bayraklarını açar:

-fauto-inc-dec -fkarşılaştır-elim -fcprop-kayıtları -fdce -fdefer-pop -fgecikmeli-dal
-fdse -fguess-dal-olasılığı -fif-dönüşüm2 -fif-dönüşüm -fipa-saf-const
-fipa-profil -fipa-referans -fmerge-sabitleri -fsplit-geniş-türler -ftree-bit-ccp
-ftree-yerleşik-çağrı-dce -ftree-ccp -ftree-ch -ftree-telif adı -ftree-dce
-ftree-dominator-seçenekleri -ftree-dse -ftree-forwprop -ağaçsız -ftree-phiprop -ftree-sra
-ftree-pta -ftree-ter -her seferinde eğlence

-O ayrıca açılır -fomit-frame-işaretçi müdahale etmediği makinelerde
hata ayıklama ile.

-O2 Daha da optimize edin. GCC, aşağıdakileri içermeyen neredeyse tüm desteklenen optimizasyonları gerçekleştirir:
uzay hızında bir değiş tokuş içerir. İle kıyaslandığında -O, bu seçenek hem artırır
derleme süresi ve oluşturulan kodun performansı.

-O2 tarafından belirtilen tüm optimizasyon bayraklarını açar -O. Ayrıca aşağıdakileri de açar
optimizasyon bayrakları: -fthread-atlar -falign-fonksiyonları -falign-atlayışlar -falign-döngüler
-falign-etiketler -fcaller-kaydeder -fçapraz atlama -fcse-takip-atlayışları -fcse-atlama-blokları
-fdelete-null-işaretçi-kontrolleri -fsanallaştırma -çok pahalı-optimizasyonlar -fgcse
-fgcse-lm -finline-küçük-fonksiyonlar -findirect-satır içi -fipa-sra
-foptimize-kardeş-çağrıları -fkısmi-satır içi -f gözetleme deliği2 -fregmove -freorder-blokları
-freorder-fonksiyonları -frerun-cse-sonrası döngü -fsched-interblock -fsched-spec
-fschedule-insns -fschedule-insns2 -fstrict-aliasing -fstrict-taşma
-ftree-switch-dönüşüm -ftree-tail-birleştirme -ftree-ön -ftree-vrp

Lütfen aşağıdaki uyarıyı dikkate alın -fgcse çağırma hakkında -O2 bilgisayar kullanan programlarda
gotolar.

NOT: Ubuntu 8.10 ve sonraki sürümlerde, -D_FORTIFY_SOURCE=2 varsayılan olarak ayarlanır ve
ne zaman etkinleştirilir -O 2 veya daha yüksek olarak ayarlanır. Bu, ek derleme zamanı sağlar ve
birkaç libc işlevi için çalışma zamanı kontrolleri. Devre dışı bırakmak için şunları belirtin:
-U_FORTIFY_SOURCE or -D_FORTIFY_SOURCE=0.

-O3 Daha fazlasını optimize edin. -O3 tarafından belirtilen tüm optimizasyonları açar -O2 ve ayrıca açılır
the -finline-fonksiyonlar, -funswitch-döngüler, -föngörücü-ortak, -fgcse-sonra-yeniden yükleme,
-ftree-vektörize, -ftree-kısmi-ön ve -fipa-cp-klonu seçenekleri.

-O0 Derleme süresini azaltın ve hata ayıklamanın beklenen sonuçları üretmesini sağlayın. bu
Varsayılan.

-İşletim sistemi Boyut için optimize edin. -İşletim sistemi hepsini etkinleştirir -O2 tipik olarak artmayan optimizasyonlar
kod boyutu. Ayrıca kod boyutunu küçültmek için tasarlanmış daha fazla optimizasyon gerçekleştirir.

-İşletim sistemi aşağıdaki optimizasyon bayraklarını devre dışı bırakır: -falign-fonksiyonları -falign-atlayışlar
-falign-döngüler -falign-etiketler -freorder-blokları -freorder-blokları-ve-bölümü
-fprefetch-loop-dizileri -ftree-vect-loop-versiyonu

-Ofast
Katı standartlara uyumu dikkate almayın. -Ofast hepsini etkinleştirir -O3 optimizasyonlar. Ayrıca
tüm standart uyumlu programlar için geçerli olmayan optimizasyonları etkinleştirir. Bilişim Teknoloji
açılır -fffast-matematik ve Fortran'a özgü -fno-koru-parens ve -fstack-dizileri.

birden fazla kullanırsanız -O seviye numaraları olan veya olmayan seçenekler, bu tür son seçenek
etkili olan.

Formun seçenekleri -fbayrak makineden bağımsız bayrakları belirtin. Çoğu bayrak her ikisine de sahiptir
olumlu ve olumsuz biçimler; olumsuz biçimi -ffoo olurdu -fno-foo. Masada
aşağıda, genellikle kullanacağınız formlardan yalnızca biri listelenmiştir. anlayabilirsin
ya kaldırarak diğer formu dışarı yok hayır- veya ekleyerek.

Aşağıdaki seçenekler belirli optimizasyonları kontrol eder. ya tarafından aktive edilirler -O
seçenekler veya olanlarla ilgilidir. Nadir olarak aşağıdaki bayrakları kullanabilirsiniz.
gerçekleştirilecek optimizasyonların "ince ayarının" istendiği durumlar.

-fno-varsayılan-satır içi
Üye işlevlerini yalnızca içeride tanımlandıkları için varsayılan olarak satır içi yapmayın.
sınıf kapsamı (yalnızca C++). Aksi takdirde, belirttiğinizde -O, üye fonksiyonları tanımlandı
sınıf içi kapsam varsayılan olarak satır içi olarak derlenir; yani eklemene gerek yok inline
üye işlev adının önünde.

-fno-erteleme-pop
Her bir işlev çağrısının argümanlarını, o işlev döner dönmez her zaman açın. İçin
bir işlev çağrısından sonra argümanları açması gereken makineler, derleyici normalde
argümanlar, birkaç işlev çağrısı için yığında birikir ve hepsini
bir Zamanlar.

seviyelerde devre dışı bırakıldı -O, -O2, -O3, -İşletim sistemi.

-ileriye-yayılmak
RTL'de bir ileri yayılma geçişi gerçekleştirin. Geçiş, iki talimatı birleştirmeye çalışır
ve sonucun basitleştirilip basitleştirilemeyeceğini kontrol eder. Döngü açma aktifse, iki geçiş
gerçekleştirilir ve ikincisi döngü açıldıktan sonra programlanır.

Bu seçenek, optimizasyon seviyelerinde varsayılan olarak etkindir -O, -O2, -O3, -İşletim sistemi.

-ffp-kontrat=stil
-ffp-kontrat=kapalı kayan noktalı ifade daralmasını devre dışı bırakır. -ffp-kontrat=hızlı
kaynaşmış çarpma-ekleme oluşturma gibi kayan noktalı ifade daralmasını sağlar
hedefin onlar için yerel desteği varsa işlemler. -ffp-kontrat=açık sağlar
dil standardı izin veriyorsa kayan noktalı ifade daralması. Bu
şu anda uygulanmadı ve eşit muamele gördü -ffp-kontrat=kapalı.

Varsayılan -ffp-kontrat=hızlı.

-fomit-frame-işaretçi
Çerçeve işaretçisini, ihtiyaç duymayan işlevler için bir kayıtta tutmayın. Bu
çerçeve işaretçilerini kaydetme, ayarlama ve geri yükleme talimatlarından kaçınır; aynı zamanda bir
birçok fonksiyonda ekstra kayıt mevcuttur. It Ayrıca yapar hata ayıklama imkânsız on
biraz makineleri.

VAX gibi bazı makinelerde bu işaretin hiçbir etkisi yoktur, çünkü standart
çağrı dizisi çerçeve işaretçisini otomatik olarak işler ve hiçbir şey kaydedilmez.
yokmuş gibi davranmak. Makine açıklama makrosu "FRAME_POINTER_REQUIRED"
hedef makinenin bu bayrağı destekleyip desteklemediğini kontrol eder.

GCC sürüm 4.6 ile başlayarak, varsayılan ayar (boyut için optimize edilmediğinde)
32-bit Linux x86 ve 32-bit Darwin x86 hedefleri olarak değiştirildi
-fomit-frame-işaretçi. Varsayılan geri döndürülebilir -fno-omit-frame-işaretçisi by
ile GCC'yi yapılandırma --enable-frame-işaretçi seçeneğini yapılandırın.

düzeylerde etkin -O, -O2, -O3, -İşletim sistemi.

-foptimize-kardeş-çağrıları
Kardeş ve kuyruk özyinelemeli aramaları optimize edin.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-fno-satır içi
"always_inline" ile işaretlenenler dışında hiçbir işlevi satır içi genişletmeyin
bağlanmak. Bu, optimize edilmediğinde varsayılandır.

Tek işlevler, "noinline" ile işaretlenerek satır içi kullanımdan muaf tutulabilir.
özniteliği.

-finline-küçük-fonksiyonlar
Vücutları beklenenden daha küçük olduğunda işlevleri arayanlara entegre edin
işlev çağrısı kodu (böylece programın genel boyutu küçülür). derleyici
hangi işlevlerin entegre edilmeye değecek kadar basit olduğuna buluşsal olarak karar verir.
Bu taraftan. Bu satır içi oluşturma, satır içi olarak bildirilmemiş olanlar da dahil olmak üzere tüm işlevler için geçerlidir.

Düzeyde etkin -O2.

-findirect-satır içi
Inline ayrıca derleme zamanında bilindiği keşfedilen dolaylı çağrılar sayesinde
önceki satır içi. Bu seçenek, yalnızca satır içi oluşturma açıkken herhangi bir etkiye sahiptir.
tarafından -finline-fonksiyonlar or -finline-küçük-fonksiyonlar seçenekleri.

Düzeyde etkin -O2.

-finline-fonksiyonlar
Satır içi olarak bildirilmeseler bile satır içi için tüm işlevleri göz önünde bulundurun. NS
derleyici, hangi işlevlerin bu şekilde entegre edilmeye değer olduğuna buluşsal olarak karar verir.

Belirli bir işleve yapılan tüm çağrılar entegre edilirse ve işlev bildirilirse
"statik" ise, işlev normalde kendi başına montajcı kodu olarak çıkmaz.

Düzeyde etkin -O3.

-finline-fonksiyonlar-bir kez çağrılır
Arayanlarına satır içi eklemek için bir kez çağrılan tüm "statik" işlevleri düşünün.
"satır içi" olarak işaretlenmezler. Belirli bir işleve bir çağrı entegre edilmişse, o zaman
işlev, kendi başına montajcı kodu olarak çıkmaz.

düzeylerde etkin -O1, -O2, -O3 ve -İşletim sistemi.

-korkuyla satır içi
"always_inline" ile işaretlenmiş satır içi işlevler ve gövdesi şundan daha küçük görünen işlevler
işlev çağrısı, yapmadan önce erken -fprofile-oluşturma enstrümantasyon ve
gerçek satır içi geçiş. Bunu yapmak, profil oluşturmayı önemli ölçüde daha ucuz hale getirir ve genellikle
büyük iç içe sarmalayıcı işlevleri zincirlerine sahip programlarda daha hızlı satır içi.

Varsayılan olarak etkindir.

-fipa-sra
Agregaların prosedürler arası skaler değişimi, kullanılmayan parametrelerin kaldırılması
ve referansla geçirilen parametrelerin, değere göre geçirilen parametrelerle değiştirilmesi.

düzeylerde etkin -O2, -O3 ve -İşletim sistemi.

-finline-limit=n
Varsayılan olarak, GCC satır içi olabilecek işlevlerin boyutunu sınırlar. Bu bayrak izin verir
Bu sınırın kaba kontrolü. n satır içi yazılabilen işlevlerin boyutudur
sözde talimat sayısı.

Satır içi aslında belirtilebilecek bir dizi parametre tarafından kontrol edilir.
kullanarak ayrı ayrı --param isim=değer. -finline-limit=n seçenek bazılarını ayarlar
bu parametreler aşağıdaki gibidir:

max-inline-insns-tek
ayarlandı n/ 2.

max-inline-insns-otomatik
ayarlandı n/ 2.

Satır içi kontrolü kontrol eden bağımsız parametrelerin belgeleri için aşağıya bakın ve
Bu parametrelerin varsayılanları için.

Not: bir değeri olmayabilir -finline-limit bu varsayılan davranışla sonuçlanır.

Not: sözde talimat, bu özel bağlamda, bir özeti temsil eder.
fonksiyonun boyutunun ölçülmesi. Hiçbir şekilde bir montaj sayısını temsil etmez
talimatlar ve bu nedenle tam anlamı bir yayından diğerine değişebilir.
başka.

-fno-satır-içi-dllexport
Bu daha ince taneli bir versiyonu -fkeep-satır içi-işlevlersadece için geçerli olan
"dllexport" özniteliği veya declspec kullanılarak bildirilen işlevler

-fkeep-satır içi-işlevler
C'de, "satır içi" olarak bildirilen "statik" işlevleri nesne dosyasına yayınlayın.
işlev, tüm arayanlarına sıralanmıştır. Bu anahtar etkilemez
GNU C90'daki "harici satır içi" uzantısını kullanan işlevler. C++'da herhangi birini ve hepsini yayınlayın
nesne dosyasına satır içi işlevler.

-fkeep-statik-consts
Optimizasyon açılmadığında "statik const" olarak bildirilen değişkenleri yayar.
değişkenler referans alınmaz.

GCC, bu seçeneği varsayılan olarak etkinleştirir. Derleyiciyi kontrol etmeye zorlamak istiyorsanız,
optimizasyonun açık olup olmadığına bakılmaksızın değişkene başvurulduğunda,
the -fno-saklama-statik-sabitler seçeneği.

-fmerge-sabitleri
Özdeş sabitleri birleştirmeye çalışın (dize sabitleri ve kayan nokta sabitleri)
derleme birimleri arasında.

Bu seçenek, derleyici ve bağlayıcı varsa, optimize edilmiş derleme için varsayılandır.
destekleyin. Kullanmak -fno-birleştirme-sabitleri Bu davranışı engellemek için

düzeylerde etkin -O, -O2, -O3, -İşletim sistemi.

-fmerge-all-sabitleri
Özdeş sabitleri ve özdeş değişkenleri birleştirmeye çalışın.

Bu seçenek şu anlama gelir: -fmerge-sabitleri. Ek olarak -fmerge-sabitleri Re-Tweet
örneğin sabit başlatılmış dizileri veya başlatılmış sabit değişkenleri bile dikkate alır.
integral veya kayan nokta türleri. C veya C++ gibi diller her bir değişkeni gerektirir,
farklı olması için özyinelemeli çağrılarda aynı değişkenin birden çok örneğini dahil etmek
konumlar, bu nedenle bu seçeneğin kullanılması uygun olmayan davranışla sonuçlanacaktır.

-fmodulo-zamanlanmış
İlk zamanlama geçişinden hemen önce salınım modulo planlamasını gerçekleştirin. Bu
pass, en içteki döngülere bakar ve farklı üst üste binerek talimatlarını yeniden düzenler.
yineleme.

-fmodulo-schedule-allow-regmoves
İzin verilen kayıt hareketleriyle daha agresif SMS tabanlı modülo planlama gerçekleştirin. Tarafından
bu bayrağın ayarlanması, belirli bağımlılık önleyici kenarlar silinecek ve bu da tetiklenecek
yaşam aralığı analizine dayalı reg-moves üretimi. Bu seçenek
sadece ile etkili -fmodulo-zamanlanmış sağladı.

-fno-dal-sayısı-reg
Bir sayım kaydında "azaltma ve dallandırma" talimatlarını kullanmayın, bunun yerine
bir kaydı azaltan bir talimat dizisi oluşturun, onunla karşılaştırın
sıfır, ardından sonuca göre dallanır. Bu seçenek yalnızca
x86, PowerPC, IA-64 ve
S / 390.

Varsayılan -fbranch-count-reg.

-fno-işlev-cse
İşlev adreslerini kayıtlara koymayın; çağıran her talimatı yapın
sabit işlev, işlevin adresini açıkça içerir.

Bu seçenek, kodun daha az verimli olmasına neden olur, ancak kodu değiştiren bazı garip saldırılar
assembler çıktısı, bu seçenek kullanıldığında gerçekleştirilen optimizasyonlarla karıştırılabilir.
kullanılmamış.

Varsayılan -fonksiyon-cse

-fno-sıfır-başlatıldı-in-bss
Hedef bir BSS bölümünü destekliyorsa, GCC varsayılan olarak şu değişkenleri koyar:
BSS'de sıfıra başlatıldı. Bu, ortaya çıkan kodda yerden tasarruf sağlayabilir.

Bazı programlar açıkça değişkenlere dayandığından bu seçenek bu davranışı kapatır.
veri bölümüne gidiyoruz. Örneğin, ortaya çıkan yürütülebilir dosyanın bulabilmesi için
ve/veya buna dayalı varsayımlarda bulunun.

Varsayılan -fzero-başlatılmış-in-bss.

-fçamurluk -fçamurluk -fmudflapir
Onu destekleyen ön uçlar için (C ve C++), tüm riskli işaretçileri/dizileri enstrümantal edin
referans kaldırma işlemleri, bazı standart kitaplık dize/yığın işlevleri ve bazı diğer
aralık/geçerlilik testleri ile ilişkili yapılar. Bu şekilde enstrümanlı modüller olmalıdır
arabellek taşmalarına, geçersiz yığın kullanımına ve diğer bazı C/C++ sınıflarına karşı bağışık
programlama hataları Enstrümantasyon, ayrı bir çalışma zamanı kitaplığına dayanır
(libmudflap), eğer bir programa bağlanırsa -fçamurluk bağlantı zamanında verilir.
Enstrümanlı programın çalışma zamanı davranışı, ÇAMURLUK_SEÇENEKLERİ
Çevre değişkeni. Seçenekleri için bkz. "env MUDFLAP_OPTIONS=-help a.out".

kullanım -fçamurluk yerine -fçamurluk programınız çoklu ise derlemek ve bağlantı kurmak için
dişli. Kullanmak -fmudflapir, ek olarak -fçamurluk or -fçamurluk, Eğer
enstrümantasyon işaretçi okumalarını görmezden gelmelidir. Bu, daha az enstrümantasyon üretir (ve
bu nedenle daha hızlı yürütme) ve yine de doğrudan belleğe karşı bir miktar koruma sağlar
yazmaları bozar, ancak hatalı okuma verilerinin bir program içinde yayılmasını sağlar.

-fthread-atlar
Bir atlamanın bir yere dallanıp budaklanmadığını görmek için kontrol ettiğimiz optimizasyonları gerçekleştirin.
birincisi tarafından kapsanan başka bir karşılaştırma bulunur. Eğer öyleyse, ilk şube
hemen ikinci dalın hedefine veya bir noktaya yönlendirilir
koşulun doğru veya yanlış olduğunun bilinmesine bağlı olarak onu takip eder.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-fsplit-geniş-türler
32 bit'te "uzun uzun" gibi birden çok kaydı kaplayan bir tür kullanırken
sistemi, kayıtları birbirinden ayırın ve bağımsız olarak tahsis edin. Bu normalde
bu türler için daha iyi kod oluşturur, ancak hata ayıklamayı daha zor hale getirebilir.

düzeylerde etkin -O, -O2, -O3, -İşletim sistemi.

-fcse-takip-atlayışları
Ortak alt ifade eliminasyonunda (CSE), aşağıdaki durumlarda atlama talimatlarını tarayın:
atlama hedefine başka bir yoldan ulaşılmaz. Örneğin, ÖAM karşılaştığında
"else" yan tümcesine sahip bir "if" ifadesi, koşul gerçekleştiğinde ÖAM atlamayı izleyecektir.
test yanlış.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-fcse-atlama-blokları
Bu benzer -fcse-takip-atlayışları, ancak ÖAM'nin şu atlamaları takip etmesine neden olur:
koşullu olarak blokları atlayın. ÖAM, no ile basit bir "if" ifadesi ile karşılaştığında
başka cümle, -fcse-atlama-blokları CSE'nin vücudun etrafındaki sıçramayı takip etmesine neden olur
"Eğer".

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-frerun-cse-sonrası döngü
Döngü optimizasyonları gerçekleştirildikten sonra ortak alt ifade eliminasyonunu yeniden çalıştırın.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-fgcse
Genel bir ortak alt ifade eleme geçişi gerçekleştirin. Bu geçiş de gerçekleştirir
küresel sabit ve kopya yayılımı.

Not: Bir GCC uzantısı olan hesaplanmış goto'ları kullanarak bir programı derlerken,
genel ortak alt ifade eliminasyonunu devre dışı bırakırsanız daha iyi çalışma zamanı performansı
ekleyerek geçmek -fno-gcse komut satırına.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-fgcse-lm
Ne zaman -fgcse-lm etkinleştirilirse, genel ortak alt ifade ortadan kaldırılması,
sadece mağazalar tarafından öldürülen yükleri kendi içlerine taşıyın. Bu bir döngü sağlar
döngü dışında bir yüke dönüştürülecek bir yükleme/depolama sırası içeren ve
döngü içinde kopyala/sakla.

gcse etkinleştirildiğinde varsayılan olarak etkindir.

-fgcse-sm
Ne zaman -fgcse-sm etkinleştirildiğinde, genel ortak kullanımdan sonra bir mağaza hareketi geçişi çalıştırılır.
alt ifade eliminasyonu. Bu geçiş, mağazaları döngülerin dışına taşımaya çalışır. Ne zaman
ile birlikte kullanılır -fgcse-lm, bir yükleme/depolama sırası içeren döngüler
döngüden önce bir yüke ve döngüden sonra bir depoya değiştirildi.

Herhangi bir optimizasyon düzeyinde etkinleştirilmedi.

-fgcse-las
Ne zaman -fgcse-las etkinleştirildiğinde, genel ortak alt ifade eleme geçişi
aynı bellek konumuna depolandıktan sonra gelen fazla yükleri ortadan kaldırır (her ikisi de
kısmi ve tam işten çıkarmalar).

Herhangi bir optimizasyon düzeyinde etkinleştirilmedi.

-fgcse-sonra-yeniden yükleme
Ne zaman -fgcse-sonra-yeniden yükleme etkinleştirilirse, fazlalık bir yük eleme geçişi gerçekleştirilir
yeniden yükledikten sonra. Bu geçişin amacı, gereksiz dökülmeleri temizlemektir.

-funsafe-loop optimizasyonları
Eğer verilirse, döngü optimize edici, döngü indekslerinin taşmadığını ve
önemsiz olmayan çıkış koşuluna sahip döngüler sonsuz değildir. Bu daha geniş bir aralık sağlar
Döngü optimize edicinin kendisi bunların olduğunu kanıtlayamasa bile, döngü optimizasyonlarının
varsayımlar geçerlidir. kullanma -Wunsafe-loop optimizasyonları, derleyici sizi uyaracak
eğer bu tür bir döngü bulursa.

-fçapraz atlama
Çapraz atlama dönüşümü gerçekleştirin. Bu dönüşüm eşdeğer kodu birleştirir ve
kod boyutunu kaydedin. Ortaya çıkan kod, çapraz olmadan daha iyi performans gösterebilir veya göstermeyebilir.
atlama.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-fauto-inc-dec
Adres artışlarını veya azalışlarını bellek erişimleriyle birleştirin. Bu geçiş
bunu destekleyecek talimatları olmayan mimarilerde her zaman atlanır.
Varsayılan olarak etkin -O ve bunu destekleyen mimarilerde daha yüksek.

-fdce
RTL'de ölü kod eleme (DCE) gerçekleştirin. Varsayılan olarak etkin -O Ve daha yüksek.

-fdse
RTL'de ölü depo eleme (DSE) gerçekleştirin. Varsayılan olarak etkin -O Ve daha yüksek.

-fif-dönüşüm
Koşullu atlamaları dalsız eşdeğerlere dönüştürmeye çalışın. Bu, kullanımı içerir
koşullu hareketler, min, max, set bayrakları ve abs talimatları ve yapılabilir bazı püf noktaları
standart aritmetik ile. Olduğu yerde cipslerde koşullu yürütmenin kullanılması
kullanılabilir "if-conversion2" tarafından kontrol edilir.

düzeylerde etkin -O, -O2, -O3, -İşletim sistemi.

-fif-dönüşüm2
Koşullu atlamaları dönüştürmek için koşullu yürütmeyi (varsa) kullanın.
dalsız eşdeğerler.

düzeylerde etkin -O, -O2, -O3, -İşletim sistemi.

-fdelete-null-işaretçi-kontrolleri
Programların boş göstericilere güvenli bir şekilde başvuruyu kaldıramayacağını ve hiçbir kod veya verinin olmadığını varsayın.
eleman orada bulunur. Bu, basit sabit katlama optimizasyonları sağlar
optimizasyon seviyeleri. Ek olarak, GCC'deki diğer optimizasyon geçişleri bu bayrağı aşağıdakileri yapmak için kullanır:
boş işaretçiler için gereksiz kontrolleri ortadan kaldıran global veri akışı analizlerini kontrol edin;
bunlar, bir işaretçi zaten başvurudan çıkarıldıktan sonra işaretlenirse,
Boş olamaz.

Ancak bazı ortamlarda bu varsayımın doğru olmadığını unutmayın. Kullanmak
-fno-delete-null-işaretçi-kontrolleri bağlı programlar için bu optimizasyonu devre dışı bırakmak için
bu davranış üzerine.

Bazı hedefler, özellikle gömülü olanlar, bu seçeneği her düzeyde devre dışı bırakır. Aksi halde
tüm seviyelerde etkindir: -O0, -O1, -O2, -O3, -İşletim sistemi. Bilgileri kullanan geçişler
farklı optimizasyon seviyelerinde bağımsız olarak etkinleştirilir.

-fsanallaştırma
Çağrıları yönlendirmek için çağrıları sanal işlevlere dönüştürmeyi deneyin. Bu hem yapılır
dolaylı satır içi oluşturmanın bir parçası olarak bir prosedür dahilinde ve prosedürler arası olarak
("-findirect-inlineing") ve prosedürler arası sabit yayılım (-fipa-cp). Etkinleştirilmiş
seviyelerde -O2, -O3, -İşletim sistemi.

-çok pahalı-optimizasyonlar
Nispeten pahalı olan bir dizi küçük optimizasyon gerçekleştirin.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-Ücretsiz
Gereksiz uzantı talimatlarını kaldırmayı deneyin. Bu özellikle aşağıdakiler için yararlıdır:
86-bit kayıtlarda örtük olarak sıfır genişleyen x64-64 mimarisi
alt 32-bit yarısına yazma.

Düzeylerde x86 için etkinleştirildi -O2, -O3.

-foptimize-kayıt-taşı
-fregmove
Kayıt numaralarını hareket talimatlarında ve diğerlerinin işlenenleri olarak yeniden atamaya çalışmak
kayıt bağlama miktarını en üst düzeye çıkarmak için basit talimatlar. Bu
özellikle iki işlenen talimatları olan makinelerde yararlıdır.

not -fregmove ve -foptimize-kayıt-taşı aynı optimizasyondur.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-fira-algoritma=algoritma
Entegre kayıt ayırıcı için belirtilen renklendirme algoritmasını kullanın. NS
algoritma argüman olabilir öncelikChow'un öncelikli renklendirmesini belirten veya CB,
hangi Chaitin-Briggs renklendirmesini belirtir. Chaitin-Briggs renklendirme uygulanmadı
tüm mimariler için, ancak onu destekleyen hedefler için varsayılandır
çünkü daha iyi kod üretir.

-fira-bölge=bölge
Entegre kayıt ayırıcı için belirtilen bölgeleri kullanın. NS bölge tartışma
aşağıdakilerden biri olmalıdır:

herşey Tüm döngüleri kayıt ayırma bölgeleri olarak kullanın. Bu, aşağıdakiler için en iyi sonuçları verebilir:
küçük ve/veya düzensiz kayıt seti olan makineler.

karışık
Bölgeler olarak küçük kayıt basıncına sahip döngüler hariç tüm döngüleri kullanın. Bu
value genellikle çoğu durumda ve çoğu mimari için en iyi sonuçları verir ve
hız optimizasyonu ile derlenirken varsayılan olarak etkindir (-O, -O2, ...).

bir Tüm işlevleri tek bir bölge olarak kullanın. Bu genellikle en küçük kodla sonuçlanır
boyutundadır ve varsayılan olarak aşağıdakiler için etkindir: -İşletim sistemi or -O0.

-fira-döngü-basıncı
Döngü değişmezlerini taşıma kararları için döngülerdeki kayıt basıncını değerlendirmek için IRA'yı kullanın.
Bu seçenek, genellikle aşağıdakilere sahip makinelerde daha hızlı ve daha küçük kod üretilmesiyle sonuçlanır.
büyük kayıt dosyaları (>= 32 kayıt), ancak derleyiciyi yavaşlatabilir.

Bu seçenek düzeyde etkinleştirilir -O3 bazı hedefler için.

-fno-ira-paylaş-kaydet yuvaları
Çağrıda kullanılan sabit kayıtları kaydetmek için kullanılan yığın yuvalarının paylaşımını devre dışı bırakın
bir arama. Her sabit yazmaç ayrı bir yığın yuvası alır ve sonuç olarak işlev yığını
çerçeveler daha büyüktür.

-fno-ira-share-spill-yuvaları
Sahte kayıtlar için ayrılan yığın yuvalarının paylaşımını devre dışı bırakın. Her sözde kayıt
sabit bir kayıt almayan, ayrı bir yığın yuvası alır ve sonuç olarak işlev
yığın çerçeveleri daha büyüktür.

-fira-ayrıntılı=n
Entegre kayıt ayırıcı için döküm dosyasının ayrıntı düzeyini kontrol edin. NS
varsayılan değer 5'tir. n 10'a eşit veya büyükse döküm çıktısı gönderilir
ile aynı formatı kullanarak stderr'e n eksi 10.

-fgecikmeli-dal
Hedef makine için destekleniyorsa, istismar için talimatları yeniden sıralamayı deneyin.
gecikmeli şube talimatlarından sonra kullanılabilir talimat yuvaları.

düzeylerde etkin -O, -O2, -O3, -İşletim sistemi.

-fschedule-insns
Hedef makine için destekleniyorsa, ortadan kaldırmak için talimatları yeniden sıralamayı deneyin.
gerekli verilerin mevcut olmaması nedeniyle yürütme durakları. Bu, makinelere yardımcı olur
yavaş kayan nokta veya bellek yükleme talimatlarına sahip olmak, diğer talimatların
yük veya kayan nokta talimatının sonucu gerekli olana kadar verilir.

düzeylerde etkin -O2, -O3.

-fschedule-insns2
Benzer -fschedule-insns, ancak ek bir talimat planlaması geçişi ister
Kayıt tahsisi yapıldıktan sonra. Bu, özellikle bir
nispeten az sayıda kayıt ve bellek yükleme talimatlarının
bir döngü.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-fno-zamanlanmış-ara blok
Talimatları temel bloklar arasında programlamayın. Bu normalde varsayılan olarak etkindir
kayıt tahsisinden önce zamanlama yaparken, yani -fschedule-insns ya da -O2 or
daha.

-fno-zamanlanmış-spec
Yüksüz talimatların spekülatif hareketine izin vermeyin. Bu normalde şu şekilde etkinleştirilir:
kayıt tahsisinden önce zamanlama yaparken varsayılan, yani -fschedule-insns ya da
-O2 veya daha yüksek.

-fsched-basınç
Kayıt tahsisinden önce kayıt basıncına duyarlı insn zamanlamasını etkinleştirin.
Bu, yalnızca kayıt tahsisi etkinleştirilmeden önce zamanlama yapıldığında, yani
-fschedule-insns ya da -O2 veya daha yüksek. Bu seçeneğin kullanılması, oluşturulan
sayının üzerindeki yazmaç basıncının artmasını önleyerek kodlayın ve boyutunu küçültün
mevcut sabit kayıtların sayısı ve bunun sonucunda kayıt defterindeki dökülmeler
tahsis.

-fsched-spec-load
Bazı yükleme talimatlarının spekülatif hareketine izin verin. Bu sadece ne zaman mantıklı olur
kayıt tahsisinden önce zamanlama, yani -fschedule-insns ya da -O2 veya daha yüksek.

-fsched-spec-load-tehlikeli
Daha fazla yükleme talimatının spekülatif hareketine izin verin. Bu sadece ne zaman mantıklı olur
kayıt tahsisinden önce zamanlama, yani -fschedule-insns ya da -O2 veya daha yüksek.

-fsched-durmuş-insns
-fsched-durdu-insns=n
Durdurulanlar kuyruğundan kaç tane insn'nin (varsa) zamanından önce taşınabileceğini tanımlayın
ikinci zamanlama geçişi sırasında hazır listesine girer.
-fno-zamanlanmış-durmuş-insns hiçbir insn'nin zamanından önce taşınmayacağı anlamına gelir,
-fsched-durdurulmuş-insns=0 kaç sıraya alınmış insn'nin taşınabileceği konusunda bir sınır olmadığı anlamına gelir
zamanından önce. -fsched-durmuş-insns bir değer olmadan eşdeğerdir
-fsched-durdurulmuş-insns=1.

-fsched-durdu-insns-dep
-fsched-durdu-insns-dep=n
Durmuş bir sisteme bağımlılık için kaç tane insn grubunun (döngü) inceleneceğini tanımlayın.
durmuş insn'lerin kuyruğundan erken kaldırılmaya aday olan insn. Bu
yalnızca ikinci zamanlama geçişi sırasında bir etkiye sahiptir ve yalnızca
-fsched-durmuş-insns kullanıldı. -fno-programlı-durdu-insns-dep eşdeğerdir
-fsched-staled-insns-dep=0. -fsched-durdu-insns-dep değeri olmayan eşdeğerdir
için -fsched-staled-insns-dep=1.

-fsched2-use-superblock'lar
Kayıt tahsisinden sonra zamanlama yaparken, süper blok zamanlama algoritmasını kullanın.
Süper blok zamanlama, daha hızlı sonuç veren temel blok sınırları boyunca harekete izin verir
programları. GCC tarafından kullanılan tüm makine açıklamaları olmadığı için bu seçenek deneyseldir.
algoritmadan güvenilir olmayan sonuçlardan kaçınmak için CPU'yu yeterince yakından modelleyin.

Bu, yalnızca kayıt tahsisinden sonra, yani
-fschedule-insns2 ya da -O2 veya daha yüksek.

-fsched-group-sezgisel
Zamanlayıcıda grup buluşsal yöntemini etkinleştirin. Bu buluşsal yöntem, talimattan yanadır
bu bir zamanlama grubuna aittir. Bu, zamanlama yapıldığında varsayılan olarak etkindir.
etkin, yani -fschedule-insns or -fschedule-insns2 ya da -O2 veya daha yüksek.

-fsched-kritik-yol-sezgisel
Zamanlayıcıda kritik yol buluşsal yöntemini etkinleştirin. Bu buluşsal iyilik
kritik yoldaki talimatlar. Bu, zamanlama yapıldığında varsayılan olarak etkindir.
etkin, yani -fschedule-insns or -fschedule-insns2 ya da -O2 veya daha yüksek.

-fsched-spec-insn-sezgisel
Planlayıcıda spekülatif talimat buluşsal yöntemini etkinleştirin. Bu buluşsal iyilik
daha fazla bağımlılık zayıflığı olan spekülatif talimatlar. Bu varsayılan olarak etkindir
zamanlama etkinleştirildiğinde, yani -fschedule-insns or -fschedule-insns2 ya da -O2
veya daha yüksek.

-fsched-rank-sezgisel
Zamanlayıcıda sıra buluşsal yöntemini etkinleştirin. Bu buluşsal yöntem, talimattan yanadır
daha büyük boyut veya frekansa sahip bir temel bloğa ait. Bu varsayılan olarak etkindir
zamanlama etkinleştirildiğinde, yani -fschedule-insns or -fschedule-insns2 ya da -O2
veya daha yüksek.

-fsched-son-insn-sezgisel
Zamanlayıcıda son talimat buluşsal yöntemini etkinleştirin. Bu buluşsal yöntem,
programlanan son talimata daha az bağımlı olan talimat. Bu etkinleştirildi
zamanlama etkinleştirildiğinde varsayılan olarak, yani -fschedule-insns or -fschedule-insns2
ya da -O2 veya daha yüksek.

-fsched-dep-count-sezgisel
Zamanlayıcıda bağımlı sayım buluşsal yöntemini etkinleştirin. Bu buluşsal yöntem,
bağlı olarak daha fazla talimat içeren talimat. Bu varsayılan olarak etkindir
zamanlama etkinleştirildiğinde, yani -fschedule-insns or -fschedule-insns2 ya da -O2
veya daha yüksek.

-freschedule-modulo-programlanmış-döngüler
Bir döngü modulo ise, modulo zamanlaması geleneksel zamanlamadan önce gelir.
daha sonraki zamanlama geçişlerinin planını değiştirmesini önlemek isteyebiliriz.
programlayın, bunu kontrol etmek için bu seçeneği kullanıyoruz.

-fseçici-zamanlama
Seçici zamanlama algoritmasını kullanarak talimatları planlayın. Seçici zamanlama çalıştırmaları
ilk zamanlayıcı geçişi yerine.

-fseçici-zamanlama2
Seçici zamanlama algoritmasını kullanarak talimatları planlayın. Seçici zamanlama çalıştırmaları
ikinci zamanlayıcı geçişi yerine.

-fsel-planlama-boru hattı
Seçici zamanlama sırasında en içteki döngülerin yazılım ardışık düzenini etkinleştirin. Bu
seçeneklerden birine kadar hiçbir etkisi yoktur. -fseçici-zamanlama or -fseçici-zamanlama2 is
açık.

-fsel-planlanmış-boru hattı-dış döngüler
Seçici zamanlama sırasında boru hattı döngüleri oluştururken, ayrıca boru hattı dış döngüleri. Bu
seçeneğin hiçbir etkisi yoktur -fsel-planlama-boru hattı açık.

-fshrink-sarma
İşlev önsözlerini yalnızca işlevin ihtiyaç duyan bölümlerinden önce yayınlayın.
fonksiyonun üst kısmı. Bu bayrak varsayılan olarak şurada etkindir: -O Ve daha yüksek.

-fcaller-kaydeder
Fonksiyon çağrıları ile engellenecek olan registerlarda tahsis edilecek değerlerin sağlanması,
bu tür çağrıların etrafındaki kayıtları kaydetmek ve geri yüklemek için ekstra talimatlar yayarak.
Bu tür tahsis, yalnızca, olması gerekenden daha iyi kodla sonuçlanıyor gibi göründüğünde yapılır.
aksi halde üretilebilir.

Bu seçenek, genellikle belirli makinelerde varsayılan olarak her zaman etkindir.
bunun yerine kullanılacak çağrı korumalı kayıt yok.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-fcombine-yığın ayarlamaları
Yığın ayarlamalarını (itme ve patlatma) ve yığın bellek referanslarını izler ve ardından dener
onları birleştirmenin yollarını bulmak için.

Varsayılan olarak etkin -O1 Ve daha yüksek.

-fconserve-yığın
Yığın kullanımını en aza indirmeye çalışın. Derleyici daha az yığın alanı kullanmaya çalışacak,
bu programı yavaşlatsa bile. Bu seçenek, büyük yığın-
çerçeve parametre 100 ve büyük yığın-çerçeve büyümesi parametresi 400.

-ftree-reassoc
Ağaçlarda yeniden ilişkilendirme gerçekleştirin. Bu bayrak varsayılan olarak şurada etkindir: -O Ve daha yüksek.

-ftree-ön
Ağaçlarda kısmi artıklık eleme (PRE) gerçekleştirin. Bu bayrak tarafından etkinleştirildi
varsayılan -O2 ve -O3.

-ftree-kısmi-ön
Kısmi fazlalık gidermeyi (PRE) daha agresif hale getirin. Bu bayrak tarafından etkinleştirildi
varsayılan -O3.

-ftree-forwprop
Ağaçlarda ileriye doğru yayılım yapın. Bu bayrak varsayılan olarak şurada etkindir: -O ve
daha.

-ağaçsız
Ağaçlarda tam fazlalık eleme (FRE) gerçekleştirin. FRE ve arasındaki fark
PRE, FRE'nin yalnızca şuna giden tüm yollarda hesaplanan ifadeleri dikkate almasıdır.
gereksiz hesaplama Bu analiz PRE'den daha hızlıdır, ancak daha az
işten çıkarmalar. Bu bayrak varsayılan olarak şurada etkindir: -O Ve daha yüksek.

-ftree-phiprop
Ağaçlarda koşullu işaretçilerden yük kaldırma gerçekleştirin. Bu geçiş şu şekilde etkinleştirilir:
varsayılan -O Ve daha yüksek.

-ftree-kopya-prop
Ağaçlarda kopya yayılımı gerçekleştirin. Bu geçiş, gereksiz kopyalama işlemlerini ortadan kaldırır.
Bu bayrak varsayılan olarak şurada etkindir: -O Ve daha yüksek.

-fipa-saf-const
Hangi fonksiyonların saf veya sabit olduğunu keşfedin. Varsayılan olarak etkin -O Ve daha yüksek.

-fipa-referans
Hangi statik değişkenlerin kaçmadığını keşfedin, derleme biriminden kaçamaz.
Varsayılan olarak etkin -O Ve daha yüksek.

-fipa-pta
Prosedürler arası işaretçi analizi ve prosedürler arası değişiklik yapın ve
referans analizi. Bu seçenek, aşırı bellek ve derleme zamanı kullanımına neden olabilir.
büyük derleme birimleri. Herhangi bir optimizasyon seviyesinde varsayılan olarak etkin değildir.

-fipa-profil
Prosedürler arası profil yayılımı gerçekleştirin. Sadece soğuktan çağrılan fonksiyonlar
fonksiyonlar soğuk olarak işaretlenir. Ayrıca bir kez yürütülen işlevler ("soğuk",
"noreturn", statik oluşturucular veya yıkıcılar) tanımlanır. Soğuk fonksiyonlar ve
bir kez yürütülen fonksiyonların daha az parçası daha sonra boyut için optimize edilir. tarafından etkinleştirildi
varsayılan -O Ve daha yüksek.

-fipa-cp
Prosedürler arası sabit yayılım gerçekleştirin. Bu optimizasyon programı analiz eder
fonksiyonlara iletilen değerlerin ne zaman sabit olduğunu belirlemek ve ardından optimize etmek için
buna göre. Bu optimizasyon, aşağıdaki durumlarda performansı önemli ölçüde artırabilir:
uygulama, işlevlere geçirilen sabitlere sahiptir. Bu bayrak varsayılan olarak şurada etkindir:
-O2, -İşletim sistemi ve -O3.

-fipa-cp-klonu
Prosedürler arası sabit yayılımı daha güçlü hale getirmek için fonksiyon klonlama gerçekleştirin. Ne zaman
etkinleştirildiğinde, prosedürler arası sabit yayılım, işlev klonlamayı şu durumlarda gerçekleştirir:
harici olarak görülebilen işlev, sabit argümanlarla çağrılabilir. Çünkü bu
optimizasyon, birden çok işlev kopyası oluşturabilir, önemli ölçüde artırabilir
kod boyutu (bkz. --param ipcp-birim-büyümesi=değer). Bu bayrak varsayılan olarak şurada etkindir:
-O3.

-fipa-matris-yeniden düzenleme
Matris düzleştirme ve aktarma gerçekleştirin. Matris düzleştirme, bir
n < m olduğunda eşdeğer n-boyutlu matrisi ile m-boyutlu matris. Bu
matrisin öğelerine erişmek için gereken dolaylılık düzeyini azaltır. NS
ikinci optimizasyon, matrisin sırasını değiştirmeye çalışan matris aktarımıdır.
önbellek konumunu iyileştirmek için matrisin boyutları. Her iki optimizasyonun da
-bütün-program bayrak. Aktarma, yalnızca profil oluşturma bilgileri
kullanılabilir.

-ftree-lavabo
Ağaçlarda ileriye doğru depolama hareketi yapın. Bu bayrak varsayılan olarak şurada etkindir: -O ve
daha.

-ftree-bit-ccp
Ağaçlarda seyrek koşullu bit sabit yayılımı gerçekleştir ve işaretçiyi yay
hizalama bilgileri. Bu geçiş yalnızca yerel skaler değişkenler üzerinde çalışır ve
varsayılan olarak etkin -O Ve daha yüksek. Bunu gerektirir -ftree-ccp etkin.

-ftree-ccp
Ağaçlarda seyrek koşullu sabit yayılım (CCP) gerçekleştirin. Bu geçiş sadece
yerel skaler değişkenler üzerinde çalışır ve varsayılan olarak şurada etkindir: -O Ve daha yüksek.

-ftree-switch-dönüşüm
Bir anahtardaki basit başlatmaların, bir anahtardan başlatmalara dönüştürülmesini gerçekleştirin.
skaler dizi. Bu bayrak varsayılan olarak şurada etkindir: -O2 Ve daha yüksek.

-ftree-tail-birleştirme
Aynı kod dizilerini arayın. Bulunduğunda, birini diğerine atlayarak değiştirin.
Bu optimizasyon, kuyruk birleştirme veya çapraz atlama olarak bilinir. Bu bayrak tarafından etkinleştirildi
varsayılan -O2 Ve daha yüksek. Bu geçişteki derleme süresi aşağıdakiler kullanılarak sınırlandırılabilir:
max-tail-merge-karşılaştırmalar parametre ve max-tail-merge-yinelemeler parametre.

-ftree-dce
Ağaçlarda ölü kod eleme (DCE) gerçekleştirin. Bu bayrak varsayılan olarak şurada etkindir: -O
Ve daha yüksek.

-ftree-yerleşik-çağrı-dce
Yerleşik işlevlere yapılan çağrılar için koşullu ölü kod eleme (DCE) gerçekleştirin.
"errno" ayarlayabilir, ancak aksi takdirde yan etkisi yoktur. Bu bayrak varsayılan olarak etkindir
at -O2 ve daha yüksek ise -İşletim sistemi da belirtilmemiştir.

-ftree-dominator-seçenekleri
Çeşitli basit skaler temizlemeler gerçekleştirin (sabit/kopya yayılımı, artıklık
baskın olana dayalı eleme, aralık yayılımı ve ifade sadeleştirmesi)
ağaç geçişi. Bu aynı zamanda atlamalı iplik geçirme işlemini de gerçekleştirir (atlamaları atlamalara azaltmak için). Bu
bayrak varsayılan olarak şurada etkindir: -O Ve daha yüksek.

-ftree-dse
Ağaçlarda ölü depo eleme (DSE) gerçekleştirin. Ölü bir mağaza, bir belleğe bir mağazadır
daha sonra herhangi bir araya giren yük olmadan başka bir mağaza tarafından üzerine yazılan konum. İçinde
bu durumda önceki mağaza silinebilir. Bu bayrak varsayılan olarak şurada etkindir: -O ve
daha.

-ftree-ch
Ağaçlarda döngü başlığı kopyalama gerçekleştirin. Arttığı için faydalıdır.
kod hareketi optimizasyonlarının etkinliği. Ayrıca bir atlama kaydeder. Bu bayrak
varsayılan olarak etkin -O Ve daha yüksek. için etkinleştirilmedi -İşletim sistemi, çünkü genellikle
kod boyutunu artırır.

-ftree-döngüsü optimizasyonu
Ağaçlarda döngü optimizasyonları gerçekleştirin. Bu bayrak varsayılan olarak şurada etkindir: -O ve
daha.

-ftree-döngü-doğrusal
Ağaç üzerinde döngü değişim dönüşümleri gerçekleştirin. İle aynı -floop-değişimi. Kullanmak
bu kod dönüşümü, GCC ile yapılandırılmalıdır --ppl ile ve -- ile-cloog için
Grafit döngü dönüştürme altyapısını etkinleştirin.

-floop-değişimi
Döngüler üzerinde döngü değişim dönüşümleri gerçekleştirin. İç içe geçmiş iki döngünün değiştirilmesi
iç ve dış döngüleri değiştirir. Örneğin, şöyle bir döngü verilir:

DO J = 1, M
DO ben = 1, N
A(J, ben) = A(J, ben) * C
SON
SON

döngü değişimi, döngüyü kullanıcı yazmış gibi dönüştürür:

DO ben = 1, N
DO J = 1, M
A(J, ben) = A(J, ben) * C
SON
SON

"N" önbelleklerden daha büyük olduğunda faydalı olabilir, çünkü Fortran'da
Bir dizinin öğeleri, sütuna göre bitişik olarak bellekte saklanır ve orijinal
döngü satırlar üzerinde yinelenir ve potansiyel olarak her erişimde bir önbellek kaçırması oluşturur. Bu
optimizasyon, GCC tarafından desteklenen tüm diller için geçerlidir ve bunlarla sınırlı değildir.
Fortran. Bu kod dönüşümünü kullanmak için GCC'nin şu şekilde yapılandırılması gerekir: --ppl ile
ve -- ile-cloog Grafit döngü dönüşüm altyapısını etkinleştirmek için.

-floop-şerit-mayın
Döngüler üzerinde döngü şerit madenciliği dönüşümleri gerçekleştirin. Şerit madenciliği bir döngüyü ikiye böler
iki iç içe döngü. Dış halka, şerit boyutuna eşit adımlara ve iç halkaya sahiptir.
döngü, bir şerit içinde orijinal döngünün adımlarına sahiptir. Şerit uzunluğu değiştirilebilir
ile döngü-blok-kiremit boyutu parametre. Örneğin, şöyle bir döngü verilir:

DO ben = 1, N
A(I) = A(I) + C
SON

döngü şerit madenciliği, döngüyü kullanıcı yazmış gibi dönüştürecektir:

DO II = 1, N, 51
DO I = II, dk (II + 50, N)
A(I) = A(I) + C
SON
SON

Bu optimizasyon, GCC tarafından desteklenen tüm diller için geçerlidir ve bunlarla sınırlı değildir.
Fortran. Bu kod dönüşümünü kullanmak için GCC'nin şu şekilde yapılandırılması gerekir: --ppl ile
ve -- ile-cloog Grafit döngü dönüşüm altyapısını etkinleştirmek için.

-floop-blok
Döngüler üzerinde döngü engelleme dönüşümleri gerçekleştirin. Şerit mayınlarını bloke etmek, her döngüde
eleman döngülerinin bellek erişimleri önbelleklerin içine sığacak şekilde döngü yuvası. NS
şerit uzunluğu kullanılarak değiştirilebilir döngü-blok-kiremit boyutu parametre. Örneğin,
şöyle bir döngü verildi:

DO ben = 1, N
DO J = 1, M
A(J, I) = B(I) + C(J)
SON
SON

döngü engelleme, döngüyü kullanıcı yazmış gibi dönüştürür:

DO II = 1, N, 51
DO JJ = 1, E, 51
DO I = II, dk (II + 50, N)
DO J = JJ, dk (JJ + 50, M)
A(J, I) = B(I) + C(J)
SON
SON
SON
SON

"M" önbelleklerden daha büyük olduğunda faydalı olabilir, çünkü en içteki döngü
önbelleklerde tutulabilecek daha az miktarda veri üzerinde yinelenir. Bu
optimizasyon, GCC tarafından desteklenen tüm diller için geçerlidir ve bunlarla sınırlı değildir.
Fortran. Bu kod dönüşümünü kullanmak için GCC'nin şu şekilde yapılandırılması gerekir: --ppl ile
ve -- ile-cloog Grafit döngü dönüşüm altyapısını etkinleştirmek için.

-fgrafit-kimlik
Grafit için kimlik dönüşümünü etkinleştirin. Her SCoP için
çokyüzlü temsili ve onu tekrar gimple'a dönüştürün. kullanma -fgrafit-kimlik
GIMPLE -> GRAPHITE -> GIMPLE dönüşümünün maliyetlerini veya faydalarını kontrol edebiliriz.
Dizin gibi bazı minimum optimizasyonlar da kod oluşturucu CLooG tarafından gerçekleştirilir.
döngülerde bölme ve ölü kodun ortadan kaldırılması.

-floop-düzleştirme
Döngü yuvalama yapısını kaldırır: döngü yuvasını tek bir döngüye dönüştürür. Bu
dönüşüm, vektörleştirme için bir etkinleştirme dönüşümü olarak yararlı olabilir ve
paralelleştirme. Bu özellik deneyseldir. Bu kod dönüşümünü kullanmak için GCC
ile yapılandırılmalıdır --ppl ile ve -- ile-cloog Grafit döngüsünü etkinleştirmek için
dönüşüm altyapısı

-floop-paralelleştir-hepsi
Paralelleştirilebilecek döngüleri belirlemek için Grafit veri bağımlılığı analizini kullanın.
Döngü tarafından taşınan bağımlılıkları içermemesi için analiz edilebilecek tüm döngüleri paralelleştirin
döngüleri paralelleştirmenin karlı olup olmadığını kontrol etmeden.

-fcheck-veri-deps
Birkaç veri bağımlılığı çözümleyicisinin sonuçlarını karşılaştırın. Bu seçenek için kullanılır
veri bağımlılığı çözümleyicilerinde hata ayıklama.

-ftree-loop-if-dönüştürme
En içteki döngülerdeki koşullu atlamaları dalsıza dönüştürmeye çalışma
eşdeğerler. Amaç, kontrol akışını sırayla en içteki döngülerden kaldırmaktır.
vektörleştirme geçişinin bu döngüleri işleme yeteneğini geliştirmek. Bu
vektörleştirme etkinse varsayılan olarak etkindir.

-ftree-loop-if-convert-mağazaları
Ayrıca, bellek yazmalarını içeren koşullu atlamaları if-dönüştürmeye çalışın. Bu
koşullu dönüşüme dönüştüğü için çok iş parçacıklı programlar için dönüşüm güvenli olmayabilir.
bellek koşulsuz belleğe yazar. Örneğin,

için (i = 0; i < N; i++)
eğer (koşul)
A[i] = ifade;

dönüştürülecek

için (i = 0; i < N; i++)
A[i] = koşul ? ifade: A[i];

potansiyel olarak veri yarışları üretiyor.

-ftree-loop-dağıtım
Döngü dağıtımı gerçekleştirin. Bu bayrak, büyük döngü gövdelerinde önbellek performansını iyileştirebilir
ve paralelleştirme veya vektörleştirme gibi daha fazla döngü optimizasyonunun
yer. Örneğin, döngü

DO ben = 1, N
A(I) = B(I) + C
D(I) = E(I) * F
SON

dönüştü

DO ben = 1, N
A(I) = B(I) + C
SON
DO ben = 1, N
D(I) = E(I) * F
SON

-ftree-loop-dağıtım-desenleri
Çağrılarla kod oluşturulabilen kalıpların döngü dağılımını gerçekleştirin.
kütüphane. Bu bayrak varsayılan olarak şurada etkindir: -O3.

Bu geçiş, başlatma döngülerini dağıtır ve memset zero için bir çağrı oluşturur.
Örneğin, döngü

DO ben = 1, N
bir(ben) = 0
B(I) = A(I) + ben
SON

dönüştü

DO ben = 1, N
bir(ben) = 0
SON
DO ben = 1, N
B(I) = A(I) + ben
SON

ve başlatma döngüsü, memset zero çağrısına dönüştürülür.

-ftree-döngü-im
Ağaçlarda döngüsel değişmez hareket gerçekleştirin. Bu geçiş yalnızca olacak değişmezleri hareket ettirir
RTL düzeyinde ele alınması zor (işlev çağrıları, önemsiz boyutlara ulaşan işlemler
insns dizileri). İle birlikte -funswitch-döngüler aynı zamanda koşulların işlenenlerini de hareket ettirir
döngü dışında değişmezler, böylece sadece önemsiz değişmezlik analizini kullanabiliriz
döngü anahtarlamada. Geçiş ayrıca mağaza hareketini de içerir.

-ftree-döngü-ivcanon
Belirleme için döngülerdeki yineleme sayısı için kurallı bir sayaç oluşturun.
yineleme sayısı karmaşık analiz gerektirir. Daha sonraki optimizasyonlar
sayısını kolayca belirleyin. Özellikle rulo açma ile bağlantılı olarak kullanışlıdır.

-beş nokta
İndüksiyon değişkeni optimizasyonları gerçekleştirin (kuvvet azaltma, indüksiyon değişkeni
ağaçlarda birleştirme ve indüksiyon değişken eleme).

-ftree-paralelleştirme-döngüleri=n
Döngüleri paralel hale getirin, yani yineleme alanlarını n iş parçacığında çalışacak şekilde bölün. Bu
yalnızca yinelemeleri bağımsız olan ve isteğe bağlı olarak yapılabilen döngüler için mümkündür
yeniden düzenlendi. Optimizasyon, döngüler için yalnızca çok işlemcili makinelerde kârlıdır
örneğin bellek bant genişliği ile sınırlandırılmak yerine CPU yoğundur. Bu seçenek
ima -pthreadve bu nedenle yalnızca desteği olan hedeflerde desteklenir.
-pthread.

-ftree-pta
Ağaçlar üzerinde işlev-yerel noktalar-analizini gerçekleştirin. Bu bayrak varsayılan olarak etkindir
at -O Ve daha yüksek.

-ftree-sra
Agregaların skaler değişimini gerçekleştirin. Bu geçiş, yapı referanslarının yerini alır
yapıların çok erken belleğe alınmasını önlemek için skalerlerle. Bu bayrak
varsayılan olarak etkin -O Ve daha yüksek.

-ftree-telif adı
Ağaçlarda kopya yeniden adlandırma gerçekleştirin. Bu geçiş, derleyici geçicilerini şu şekilde yeniden adlandırmaya çalışır:
kopya konumlarındaki diğer değişkenler, genellikle daha fazla olan değişken adlarıyla sonuçlanır.
orijinal değişkenlere çok benzer. Bu bayrak varsayılan olarak şurada etkindir: -O ve
daha.

-ftree-birleştirme-çizgili-vars
Copyrename geçişini söyle (bkz. -ftree-telif adı) küçük kullanıcıyı birleştirmeye çalışmak-
tanımlı değişkenler de, ancak yalnızca diğer işlevlerden satır içine alınmışlarsa. Bu bir
daha sınırlı biçimi -fttree-coalesce-vars. Bu, bu tür hata ayıklama bilgilerine zarar verebilir
satır içi değişkenler, ancak satır içi işlevin değişkenlerini aşağıdakilerden ayrı tutacaktır.
bir durumda beklenen değerleri içerme olasılıkları daha yüksek olacak şekilde birbirlerini
hata ayıklama oturumu. Bu, 4.7'den eski GCC sürümlerinde varsayılandı.

-fttree-coalesce-vars
Copyrename geçişini söyle (bkz. -ftree-telif adı) küçük kullanıcıyı birleştirmeye çalışmak-
sadece derleyici geçicileri yerine tanımlanmış değişkenler. Bu ciddi şekilde sınırlayabilir
ile derlenmiş optimize edilmiş bir programda hata ayıklama yeteneği -fno-var-izleme-atamaları.
Negated formda, bu bayrak, aşağıdakiler dahil olmak üzere kullanıcı değişkenlerinin SSA'nın birleştirilmesini önler.
satır içi olanlar. Bu seçenek varsayılan olarak etkindir.

-ftree-ter
SSA->normal faz sırasında geçici ifade değiştirme gerçekleştirin. Bekar
kullanım/tek tanımlı geçiciler, kullanım yerlerinde tanımlarıyla değiştirilir
ifade. Bu, GIMPLE olmayan kodla sonuçlanır, ancak genişleticilere çok daha fazlasını verir
daha iyi RTL üretimi ile sonuçlanacak karmaşık ağaçlar. Bu, aşağıdakiler tarafından etkinleştirilir:
varsayılan -O Ve daha yüksek.

-ftree-vektörize
Ağaçlarda döngü vektörleştirmesi gerçekleştirin. Bu bayrak varsayılan olarak şurada etkindir: -O3.

-ftree-slp-vektörize
Ağaçlarda temel blok vektörleştirme gerçekleştirin. Bu bayrak varsayılan olarak şurada etkindir: -O3 ve
ne zaman -ftree-vektörize etkin.

-ftree-vect-loop-versiyonu
Ağaçlarda döngü vektörleştirmesi yaparken döngü sürümü oluşturma işlemini gerçekleştirin. Bir döngü göründüğünde
veri hizalamasının veya veri bağımlılığının belirlenememesi dışında vektörleştirilebilir olması
derleme zamanında, döngünün vektörleştirilmiş ve vektörleştirilmemiş sürümleri oluşturulur
hangi sürümün olduğunu kontrol etmek için hizalama veya bağımlılık için çalışma zamanı kontrolleri ile birlikte
uygulanmış. Bu seçenek, seviye dışında varsayılan olarak etkindir. -İşletim sistemi nerede devre dışı.

-fvct-maliyet-modeli
Vektörleştirme için maliyet modelini etkinleştirin.

-ftree-vrp
Ağaçlarda Değer Aralığı Yayılımı gerçekleştirin. Bu, sürekli yayılmaya benzer.
geçer, ancak değerler yerine değer aralıkları yayılır. Bu,
diziye bağlı kontroller ve boş gösterici gibi gereksiz aralık kontrollerini kaldırmak için optimize ediciler
kontrol eder. Bu, varsayılan olarak şurada etkindir: -O2 Ve daha yüksek. Boş işaretçi denetimi eleme
sadece yapılırsa -fdelete-null-işaretçi-kontrolleri etkin.

-tracer
Süper blok boyutunu büyütmek için kuyruk çoğaltma gerçekleştirin. Bu dönüşüm basitleştirir
diğer optimizasyonların daha iyi iş çıkarmasına izin veren işlevin kontrol akışı.

-funroll-döngüler
Derleme zamanında veya sonrasında yineleme sayısı belirlenebilen döngüleri açın
döngüye giriş. -funroll-döngüler ima -frerun-cse-sonrası döngü. Bu seçenek
kodu daha büyük olabilir ve daha hızlı çalışmasını sağlayabilir veya sağlamayabilir.

-funroll-all-döngüler
Döngü açıkken yineleme sayıları belirsiz olsa bile tüm döngüleri açın.
girdi. Bu genellikle programların daha yavaş çalışmasına neden olur. -funroll-all-döngüler ima eder
ile aynı seçenekler -funroll-döngüler,

-fsplit-ivs-unroller
Tümevarım değişkenlerinin değerlerinin daha sonraki yinelemelerde ifade edilmesini sağlar.
ilk yinelemedeki değeri kullanarak yuvarlanmamış döngü. Bu uzun bağımlılığı kırar
zincirler, böylece zamanlama geçişlerinin verimliliğini artırır.

Kombinasyon -fweb ve ÖAM genellikle aynı etkiyi elde etmek için yeterlidir. Yine de
döngü gövdesinin tek bir temel bloktan daha karmaşık olduğu durumlarda, bu
güvenilir. Ayrıca bazı mimarilerde hiç çalışmıyor.
ÖAM geçişindeki kısıtlamalar.

Bu optimizasyon varsayılan olarak etkindir.

-fvariable-genişleme-in-roller
Bu seçenekle, derleyici bazı yerel değişkenlerin birden çok kopyasını oluşturacaktır.
üstün kodla sonuçlanabilecek bir döngüyü açarken.

-fkısmi-satır içi
Fonksiyonların satır içi kısımları. Bu seçeneğin yalnızca kendisi satır içi olduğunda herhangi bir etkisi vardır.
tarafından açıldı -finline-fonksiyonlar or -finline-küçük-fonksiyonlar seçenekleri.

Düzeyde etkin -O2.

-föngörücü-ortak
Tahmine dayalı ortaklaştırma optimizasyonu gerçekleştirin, yani hesaplamaları yeniden kullanın (özellikle
önceki döngü yinelemelerinde gerçekleştirilen bellek yükleri ve depolar).

Bu seçenek düzeyde etkinleştirilir -O3.

-fprefetch-loop-dizileri
Hedef makine tarafından destekleniyorsa, belleği önceden almak için talimatlar oluşturun.
büyük dizilere erişen döngülerin performansını iyileştirin.

Bu seçenek daha iyi veya daha kötü kod üretebilir; sonuçlar son derece bağlıdır
kaynak kodundaki döngülerin yapısı.

düzeyde devre dışı -İşletim sistemi.

-fno-gözetleme deliği
-fno-gözetleme deliği2
Makineye özel gözetleme deliği optimizasyonlarını devre dışı bırakın. Arasındaki fark
-fno-gözetleme deliği ve -fno-gözetleme deliği2 derleyicide nasıl uygulandıkları ile ilgilidir; biraz
hedefler birini, bazıları diğerini, birkaçı ikisini birden kullanır.

-f gözetleme deliği varsayılan olarak etkindir. -f gözetleme deliği2 seviyelerde etkin -O2, -O3, -İşletim sistemi.

-fno-tahmin-dal-olasılığı
Sezgisel yöntemleri kullanarak dal olasılıklarını tahmin etmeyin.

GCC tarafından sağlanmadıkları takdirde, dal olasılıklarını tahmin etmek için buluşsal yöntemleri kullanacaktır.
profil oluşturma geri bildirimi (-fprofile-yayları). Bu buluşsal yöntemler, kontrol akışına dayalıdır.
grafik. Bazı şube olasılıkları ile belirtilirse __yerleşik_beklenti, sonra
kontrol akışının geri kalanı için dallanma olasılıklarını tahmin etmek için buluşsal yöntemler kullanılacaktır.
grafiği alarak __yerleşik_beklenti bilgileri dikkate alınız. arasındaki etkileşimler
buluşsal yöntemler ve __yerleşik_beklenti karmaşık olabilir ve bazı durumlarda
etkilerinin ortaya çıkması için buluşsal yöntemleri devre dışı bırakın. __yerleşik_beklenti daha kolay
anlama.

Varsayılan -fguess-dal-olasılığı seviyelerde -O, -O2, -O3, -İşletim sistemi.

-freorder-blokları
Alınan sayıyı azaltmak için derlenmiş fonksiyondaki temel blokları yeniden sıralayın.
şubeler ve kod yerelliğini iyileştirin.

düzeylerde etkin -O2, -O3.

-freorder-blokları-ve-bölümü
azaltmak için derlenmiş işlevdeki temel blokları yeniden sıralamaya ek olarak
alınan dal sayısı, bölmeler sıcak ve soğuk temel bloklar ayrı bölümlere
sayfalama ve önbellek yerellik performansını iyileştirmek için derleme ve .o dosyaları.

Bu optimizasyon, istisna işleme varlığında otomatik olarak kapatılır,
linkonce bölümleri için, kullanıcı tanımlı bölüm özniteliğine sahip işlevler için ve herhangi bir
adlandırılmış bölümleri desteklemeyen mimari.

-freorder-fonksiyonları
Kod yerelliğini iyileştirmek için nesne dosyasındaki işlevleri yeniden sıralayın. Bu
en sık yürütülenler için ".text.hot" özel alt bölümleri kullanılarak uygulanır
işlevler ve olası olmayan yürütülen işlevler için ".text.un olası". Yeniden sıralama yapılır
bağlayıcı bu nedenle nesne dosya biçimi adlandırılmış bölümleri desteklemeli ve bağlayıcı yerleştirmelidir
onları makul bir şekilde

Ayrıca, bu seçeneğin etkili olabilmesi için profil geri bildirimi mevcut olmalıdır. Görmek
-fprofile-yayları Ayrıntılar için.

düzeylerde etkin -O2, -O3, -İşletim sistemi.

-fstrict-aliasing
Derleyicinin, dil için geçerli olan en katı takma ad kurallarını üstlenmesine izin verin.
derleniyor. C (ve C++) için bu, türe göre optimizasyonları etkinleştirir.
ifade. Özellikle, bir türden bir nesnenin hiçbir zaman aynı yerde bulunmayacağı varsayılır.
türler hemen hemen aynı olmadıkça, farklı türdeki bir nesneyle aynı adres.
Örneğin, bir "imzasız int", bir "int" takma olarak adlandırılabilir, ancak "void*" veya "double" olamaz. A
karakter türü, diğer herhangi bir türün diğer adı olabilir.

Bunun gibi koda özellikle dikkat edin:

birlik a_union {
int ben;
çift ​​d;
};

int f() {
birlik a_union t;
td = 3.0;
dönüş ti;
}

En son üyeden farklı bir sendika üyesinden okuma uygulaması
yazılması ("tip punning" olarak adlandırılır) yaygındır. Bile -fstrict-aliasing, tip-
belleğe birleşim türü aracılığıyla erişilmesi koşuluyla puntalamaya izin verilir. Böylece
yukarıdaki kod beklendiği gibi çalışacaktır. Ancak, bu kod şunları yapmayabilir:

int f() {
birlik a_union t;
int * ip;
td = 3.0;
ip = &t.i;
*ip'yi döndür;
}

Benzer şekilde, adresi alarak, ortaya çıkan işaretçiyi yayınlayarak erişim ve
sonucun referansının kaldırılması, döküm bir birlik türü kullansa bile tanımsız davranışa sahiptir,
Örneğin:

int f() {
çift ​​d = 3.0;
dönüş ((birlik a_union *) &d)->i;
}

The -fstrict-aliasing seçenek seviyelerde etkinleştirildi -O2, -O3, -İşletim sistemi.

-fstrict-taşma
Dile bağlı olarak derleyicinin katı imzalı taşma kurallarını kabul etmesine izin verin
derleniyor. C (ve C++) için bu, aritmetik yaparken taşmanın olduğu anlamına gelir.
imzalı sayılar tanımsızdır, bu da derleyicinin bunu yapmayacağını varsayabileceği anlamına gelir.
olmak. Bu, çeşitli optimizasyonlara izin verir. Örneğin, derleyici varsayar
"i + 10 > i" gibi bir ifadenin imzalı "i" için her zaman doğru olacağını. Bu
varsayım, ifade yanlış olduğundan, yalnızca imzalı taşma tanımsızsa geçerlidir
eğer "i + 10" ikişerli tamamlayıcı aritmetiği kullanırken taşarsa. Bu seçenek içindeyken
imzalı sayılar üzerindeki bir işlemin taşmayacağını belirlemeye yönelik herhangi bir girişimi etkilemek
taşma içermemesi için dikkatlice yazılmalıdır.

Bu seçenek ayrıca derleyicinin katı işaretçi anlambilimi üstlenmesine izin verir:
bir nesneye işaretçi, o işaretçiye bir ofset eklenmesi bir işaretçi üretmiyorsa
aynı nesneye ekleme tanımsızdır. Bu, derleyicinin sonuca varmasına izin verir.
"p + u > p", bir "p" göstergesi ve "u" işaretsiz tamsayı için her zaman doğrudur. Bu
varsayım yalnızca, ifade olduğu gibi işaretçi sarma tanımsız olduğundan geçerlidir.
"p + u" ikişer tamamlayıcı aritmetiği kullanarak taşarsa false.

Ayrıca bakınız -fwrapv seçenek. kullanma -fwrapv tamsayı imzalı taşmanın olduğu anlamına gelir
tam olarak tanımlanmış: sarar. Ne zaman -fwrapv kullanılır, arada fark yoktur.
-fstrict-taşma ve -fno-katı-taşma tamsayılar için. İle birlikte -fwrapv belirli türler
taşmasına izin verilir. Örneğin, derleyici bunu yaparken bir taşma alırsa
sabitler üzerinde aritmetik, taşan değer hala kullanılabilir -fwrapvAma
aksi takdirde.

The -fstrict-taşma seçenek seviyelerde etkinleştirildi -O2, -O3, -İşletim sistemi.

-falign-fonksiyonları
-falign-fonksiyonları=n
Fonksiyonların başlangıcını, aşağıdakinden daha büyük olan ikinin bir sonraki kuvvetine göre hizalayın. n, atlama n
bayt. Örneğin, -falign-fonksiyonları=32 işlevleri sonraki 32 bayta hizalar
sınır, ancak -falign-fonksiyonları=24 sonraki 32 bayt sınırına hizalanır, ancak
bu, 23 bayt veya daha az atlanarak yapılabilir.

-fno-align-fonksiyonları ve -falign-fonksiyonları=1 eşdeğerdir ve işlevlerin anlamı
hizalanmayacaktır.

Bazı montajcılar bu bayrağı yalnızca şu durumlarda destekler: n iki bir güçtür; bu durumda,
yuvarlanmış.

If n belirtilmemiş veya sıfırsa, makineye bağlı bir varsayılan kullanın.

düzeylerde etkin -O2, -O3.

-falign-etiketler
-falign-etiketleri=n
Tüm şube hedeflerini ikinin kuvveti sınırına hizalayın, n bayt gibi
-falign-fonksiyonları. Bu seçenek, eklemesi gerektiği için kodu kolayca yavaşlatabilir.
kodun olağan akışında dal hedefine ulaşıldığında için kukla işlemler.

-fno-align-etiketleri ve -falign-etiketleri=1 eşdeğerdir ve etiketlerin olmayacağı anlamına gelir
hizalı.

If -falign-döngüler or -falign-atlayışlar uygulanabilir ve bu değerden büyükse,
bunun yerine onların değerleri kullanılır.

If n belirtilmemiş veya sıfırsa, büyük olasılıkla makineye bağlı bir varsayılan kullanın
olduğu 1, hizalama yok anlamına gelir.

düzeylerde etkin -O2, -O3.

-falign-döngüler
-falign-döngüler=n
Döngüleri ikinin kuvveti sınırına hizalayarak n bayt gibi -falign-fonksiyonları.
Umut, döngünün birçok kez yürütüleceğidir, bu da herhangi bir şeyi telafi edecektir.
kukla operasyonların yürütülmesi.

-fno-align-döngüleri ve -falign-döngüleri=1 eşdeğerdir ve döngülerin olmayacağı anlamına gelir
hizalı.

If n belirtilmemiş veya sıfırsa, makineye bağlı bir varsayılan kullanın.

düzeylerde etkin -O2, -O3.

-falign-atlayışlar
-falign-atlamalar=n
Hedeflerin olduğu şube hedefleri için, şube hedeflerini ikinin gücü sınırına hizalayın.
sadece atlayarak, atlayarak ulaşılabilir n bayt gibi -falign-fonksiyonları. içinde
bu durumda, hiçbir kukla işlemin yürütülmesine gerek yoktur.

-fno-align-atlayışları ve -falign-atlamalar=1 eşdeğerdir ve döngülerin olmayacağı anlamına gelir
hizalı.

If n belirtilmemiş veya sıfırsa, makineye bağlı bir varsayılan kullanın.

düzeylerde etkin -O2, -O3.

-her seferinde eğlence
Bu seçenek, uyumluluk nedenleriyle bırakılmıştır. -her seferinde eğlence etkisi yokken
-bir seferde-fno-birimi ima -fno-üst düzey-yeniden sıralama ve -fno-bölüm-çıpalar.

Varsayılan olarak etkindir.

-fno-üst düzey-yeniden sıralama
Üst düzey işlevleri, değişkenleri ve "asm" ifadelerini yeniden sıralamayın. Onları çıktı al
girdi dosyasında göründükleri sırayla. Bu seçenek kullanıldığında,
başvurulmamış statik değişkenler kaldırılmayacaktır. Bu seçeneğin desteklenmesi amaçlanmıştır.
belirli bir sıralamaya dayanan mevcut kod. Yeni kod için kullanmak daha iyidir
Öznitellikler.

Düzeyde etkin -O0. Açıkça devre dışı bırakıldığında, şu anlama gelir: -fno-bölüm-çıpalar,
aksi halde etkinleştirilen -O0 bazı hedeflerde.

-fweb
Kayıt tahsis amaçları için yaygın olarak kullanılan ağları oluşturur ve her bir ağı atar
bireysel sözde kayıt. Bu, kayıt tahsis geçişinin üzerinde çalışmasına izin verir
doğrudan sözde değil, aynı zamanda ÖAM gibi diğer birkaç optimizasyon geçişini de güçlendirir,
döngü optimize edici ve önemsiz ölü kod sökücü. Ancak hata ayıklama yapabilir
imkansız, çünkü değişkenler artık bir "ev kaydında" kalmayacak.

ile varsayılan olarak etkindir -funroll-döngüler.

-bütün-program
Geçerli derleme biriminin derlenmekte olan tüm programı temsil ettiğini varsayalım.
"Main" ve tarafından birleştirilmiş olanlar hariç tüm genel işlevler ve değişkenler
"externally_visible" özelliği statik işlevler haline gelir ve aslında optimize edilir
prosedürler arası optimize ediciler tarafından daha agresif bir şekilde. Eğer altın bağlayıcı eklentisi olarak kullanılır,
"externally_visible" öznitelikleri işlevlere otomatik olarak eklenir (henüz değişken değil
bir akım nedeniyle altın sorunu) göre LTO nesneleri dışında erişilen
tarafından üretilen çözünürlük dosyası altın. Çözünürlük oluşturamayan diğer bağlayıcılar için
dosyasında, açık "externally_visible" öznitelikleri hala gereklidir. Bu seçenek yapılırken
aşağıdakilerden oluşan programlar için "statik" anahtar kelimenin doğru kullanımına eşdeğerdir.
seçenekle birlikte tek dosya -flto bu bayrak birçok şeyi derlemek için kullanılabilir
fonksiyonlar ve değişkenler bütün için yerel hale geldiğinden daha küçük ölçekli programlar
birleşik derleme birimi, tek kaynak dosyanın kendisi için değil.

Bu seçenek şu anlama gelir: -ftüm-dosyası Fortran programları için.

-flto[=n]
Bu seçenek, standart bağlantı zamanı iyileştiricisini çalıştırır. Kaynak koduyla çağrıldığında,
GIMPLE (GCC'nin dahili temsillerinden biri) oluşturur ve onu özel ELF'ye yazar
nesne dosyasındaki bölümler. Nesne dosyaları birbirine bağlandığında, tüm
fonksiyon gövdeleri bu ELF bölümlerinden okunur ve sanki
aynı çeviri biriminin parçası.

Bağlantı zamanı iyileştiriciyi kullanmak için, -flto derleme zamanında ve sırasında belirtilmelidir
son bağlantı. Örneğin:

gcc -c -O2 -flto foo.c
gcc -c -O2 -flto bar.c
gcc -o programım -flto -O2 foo.o bar.o

GCC'ye yapılan ilk iki çağrı, GIMPLE'nin bir bayt kodu gösterimini özel olarak kaydeder.
ELF bölümleri içeride foo.o ve bar.o. Son çağrı GIMPLE bayt kodunu okur
itibaren foo.o ve bar.o, iki dosyayı tek bir dahili görüntüde birleştirir ve derler
sonuç her zamanki gibi. İkisinden beri foo.o ve bar.o tek bir görüntüde birleştirilir, bu
GCC'deki tüm prosedürler arası analizlerin ve optimizasyonların aşağıdakiler arasında çalışmasına neden olur.
iki dosya sanki tek bir dosyaymış gibi. Bu, örneğin, satır içi
işlevleri satır içi yapabilir bar.o işlevlere foo.o ve tam tersi.

Bağlantı zamanı optimizasyonunu etkinleştirmenin bir başka (daha basit) yolu şudur:

gcc -o programım -flto -O2 foo.c bar.c

Yukarıdakiler için bayt kodu üretir foo.c ve bar.c, onları tek bir yerde birleştirir
GIMPLE temsili ve bunları üretmek için her zamanki gibi optimize eder programım.

Akılda tutulması gereken tek önemli şey, bağlantı zamanı optimizasyonlarını etkinleştirmek için
-flto bayrağın hem derleme hem de bağlantı komutlarına iletilmesi gerekir.

Tüm program optimizasyonunu etkili kılmak için, belirli bir bütünün yapılması gerekir.
program varsayımları. Derleyicinin hangi işlevlerin ve değişkenlerin olabileceğini bilmesi gerekir.
bağlantı zamanı için optimize edilmiş birimin dışındaki kitaplıklar ve çalışma zamanı tarafından erişilir. Ne zaman
bağlayıcı tarafından desteklenen, bağlayıcı eklentisi (bkz. -sigorta-bağlayıcı-eklenti) geçer
derleyiciye kullanılan ve harici olarak görünen semboller hakkında bilgi. Ne zaman
linker eklentisi mevcut değil, -bütün-program derleyiciye izin vermek için kullanılmalıdır
daha agresif optimizasyon kararlarına yol açan bu varsayımları yapmak.

Bir dosya ile derlendiğinde şunu unutmayın: -flto, oluşturulan nesne dosyası şundan daha büyük:
GIMPLE bayt kodlarını ve olağan son kodu içerdiğinden normal bir nesne dosyası.
Bu, LTO bilgisine sahip nesne dosyalarının normal nesne olarak bağlanabileceği anlamına gelir.
Dosyalar; Eğer -flto bağlayıcıya iletilmez, prosedürler arası optimizasyon yapılmaz
uygulamalı.

Ayrıca, tek tek dosyaları derlemek için kullanılan optimizasyon bayrakları,
mutlaka bağlantı zamanında kullanılanlarla ilgilidir. Örneğin,

gcc -c -O0 -flto foo.c
gcc -c -O0 -flto bar.c
gcc -o programım -flto -O3 foo.o bar.o

Bu, optimize edilmemiş birleştirici koduna sahip bireysel nesne dosyaları üretir, ancak
sonuçtaki ikili programım optimize edilmiş -O3. Bunun yerine, son ikili ise
olmadan oluşturulan -flto, Daha sonra programım optimize edilmemiştir.

İle son ikili üretirken -flto, GCC yalnızca bağlantı zamanı optimizasyonlarını uygular
bayt kodu içeren dosyalara. Bu nedenle, nesne dosyalarını karıştırabilir ve eşleştirebilirsiniz.
ve GIMPLE bayt kodlarına ve nihai nesne koduna sahip kitaplıklar. GCC otomatik olarak seçer
LTO modunda hangi dosyaların optimize edileceğini ve hangi dosyaların daha fazla bağlanmadan bağlanacağını
işleme.

Bayt kodları oluştururken GCC tarafından korunan bazı kod oluşturma bayrakları vardır.
son bağlantı aşamasında kullanılmaları gerekir. Şu anda, aşağıdaki seçenekler
GIMPLE bayt kodu dosyalarına kaydedilir: -fPIC, -fortak ve hepsi -m hedef bayraklar.

Bağlantı zamanında, bu seçenekler okunur ve yeniden uygulanır. Şu anki
uygulama, bu seçenekler için çakışan değerleri tanıma girişiminde bulunmaz. Eğer
farklı dosyalar çakışan seçenek değerlerine sahiptir (örneğin, bir dosya -fPIC
ve diğeri değil), derleyici bayt kodundan okunan son değeri kullanır.
Dosyalar. Bu durumda, çalışmaya katılan tüm dosyaları derlemeniz önerilir.
aynı seçeneklerle aynı bağlantı.

LTO, ayrı ayrı uyumsuz türlerle bildirilen C bağlantısına sahip nesnelerle karşılaşırsa
birbirine bağlanacak çeviri birimleri (ISO C99'a göre tanımsız davranış
6.2.7), ölümcül olmayan bir teşhis verilebilir. Davranış, çalıştırma sırasında hala tanımsız
Zaman.

LTO'nun bir diğer özelliği de prosedürler arası optimizasyonların uygulanabilmesidir.
farklı dillerde yazılmış dosyalar üzerinde. Bu, dil cephesinde destek gerektirir
son. Şu anda, C, C++ ve Fortran ön uçları GIMPLE yayabilir
bayt kodları, bu nedenle böyle bir şey çalışması gerekir:

gcc -c -flto foo.c
g++ -c -flto bar.cc
gfortran -c -flto baz.f90
g++ -o programım -flto -O3 foo.o bar.o baz.o -lgfortran

Son bağlantının yapıldığına dikkat edin g ++ C++ çalışma zamanı kitaplıklarını almak ve
-lgfortran Fortran çalışma zamanı kitaplıklarını almak için eklenir. Genel olarak, karıştırırken
LTO modunda dilleri karıştırırken kullandığınız bağlantı komut seçeneklerinin aynısını kullanmalısınız.
düzenli (LTO olmayan) bir derlemedeki diller; eklemeniz gereken tek şey -flto tüm
derleme ve bağlantı komutları.

GIMPLE bayt kodunu içeren nesne dosyaları bir kitaplık arşivinde depolanıyorsa, şunu söyleyin:
libfoo.akullanıyorsanız, bunları bir LTO bağlantısında çıkarmak ve kullanmak mümkündür.
eklenti desteği ile bağlayıcı. Bu özelliği etkinleştirmek için bayrağı kullanın -sigorta-bağlayıcı-eklenti
bağlantı zamanında:

gcc -o myprog -O2 -flto -sigorta-bağlayıcı-eklenti ao bo -lfoo

Bağlayıcı eklentisi etkinleştirildiğinde, bağlayıcı gerekli GIMPLE dosyalarını
libfoo.a ve bunları bir araya getirilmiş olanın bir parçası yapmak için çalışan GCC'ye iletir.
GIMPLE görüntüsü optimize edilecek.

Eklenti destekli bir bağlayıcı kullanmıyorsanız ve/veya bağlayıcıyı etkinleştirmiyorsanız
eklenti, ardından içindeki nesneler libfoo.a her zamanki gibi çıkarılır ve bağlanır, ancak
LTO optimizasyon sürecine katılmayın.

Bağlantı zamanı optimizasyonları, çalışması için tüm programın varlığını gerektirmez.
Program herhangi bir sembolün dışa aktarılmasını gerektirmiyorsa, birleştirmek mümkündür.
-flto ve -bütün-program prosedürler arası optimize edicilerin daha fazlasını kullanmasına izin vermek için
gelişmiş optimizasyon fırsatlarına yol açabilecek agresif varsayımlar. Kullanımı
-bütün-program linker eklentisi aktifken gerekli değildir (bkz. -sigorta-bağlayıcı-eklenti).

LTO'nun mevcut uygulaması, bayt kodu oluşturmaya yönelik hiçbir girişimde bulunmaz.
farklı ana bilgisayar türleri arasında taşınabilir. Bayt kodu dosyaları sürümlenmiştir ve orada
katı bir sürüm kontrolüdür, bu nedenle GCC'nin bir sürümünde oluşturulan bayt kodu dosyaları
GCC'nin daha eski/daha yeni bir sürümüyle çalışın.

Bağlantı zamanı optimizasyonu, hata ayıklama bilgilerinin oluşturulmasıyla iyi çalışmaz.
birleştirme -flto ile -g şu anda deneysel ve yanlış üretmesi bekleniyor
Sonuçlar.

isteğe bağlı olarak belirtirseniz n, bağlantı zamanında yapılan optimizasyon ve kod üretimi
kullanılarak paralel olarak yürütülür n yüklü bir kullanarak paralel işler yapmak programı.
ortam değişkeni YAP kullanılan programı geçersiz kılmak için kullanılabilir. Varsayılan
değeri n 1.

Ayrıca belirtebilirsiniz -flto=iş sunucusu belirlemek için GNU make'nin iş sunucusu modunu kullanmak
paralel işlerin sayısı. Bu, GCC'yi çağıran Makefile zaten
paralel yürütülüyor. başına bir + ebeveyndeki komut tarifine
Bunun çalışması için makefile. Bu seçenek muhtemelen yalnızca şu durumlarda çalışır: YAP GNU yapımıdır.

Bu seçenek varsayılan olarak devre dışıdır

-flto-bölümü=alg
Bağlantı zamanı iyileştiricisi tarafından kullanılan bölümleme algoritmasını belirtin. değer
orijinal kaynak dosyaları yansıtan bir bölümleme belirtmek için "1to1" veya
eşit büyüklükteki parçalara bölmeyi belirtmek için "dengeli" (mümkün olduğunda).
Algoritma olarak "hiçbiri" belirtilmesi, bölümlemeyi ve akışı tamamen devre dışı bırakır. NS
varsayılan değer "dengeli"dir.

-flto-sıkıştırma düzeyi=n
Bu seçenek, yazılan ara dil için kullanılan sıkıştırma seviyesini belirtir.
LTO nesne dosyalarına dönüştürülür ve yalnızca LTO moduyla birlikte anlamlıdır (-flto).
Geçerli değerler 0 (sıkıştırma yok) ile 9 (maksimum sıkıştırma) arasındadır. Bunun dışındaki değerler
aralık 0 veya 9'a sabitlenir. Seçenek verilmezse, varsayılan dengeli
sıkıştırma ayarı kullanılır.

-flto-rapor
Bağlantı zamanı iyileştiricisinin çalışmaları hakkında dahili ayrıntıları içeren bir rapor yazdırır. NS
bu raporun içeriği sürümden sürüme değişir. GCC için faydalı olması amaçlanmıştır
geliştiriciler, nesne dosyalarını LTO modunda işlerken (aracılığıyla -flto).

Varsayılan olarak devre dışıdır.

-sigorta-bağlayıcı-eklenti
Bağlantı zamanı optimizasyonu sırasında bir bağlayıcı eklentisinin kullanılmasını sağlar. Bu seçenek,
altın veya GNU ld 2.21'de mevcut olan bağlayıcıdaki eklenti desteği hakkında veya
daha yeni.

Bu seçenek, GIMPLE bayt kodu ile nesne dosyalarının kitaplıktan çıkarılmasını sağlar.
arşivler. Bu, bağlantıya daha fazla kod göstererek optimizasyon kalitesini artırır.
zaman optimize edici Bu bilgi, hangi sembollere harici olarak erişilebileceğini belirtir.
(LTO olmayan nesne tarafından veya dinamik bağlantı sırasında). Ortaya çıkan kod kalitesi iyileştirmeleri
ikili dosyalar (ve gizli görünürlük kullanan paylaşılan kitaplıklar) şuna benzer:
"-ftüm-program". Görmek -flto bu bayrağın etkisinin bir açıklaması ve nasıl
kullanın.

Bu seçenek, GCC'de LTO desteği etkinleştirildiğinde ve GCC etkinleştirildiğinde varsayılan olarak etkindir.
eklentileri destekleyen bir bağlayıcı ile kullanım için yapılandırılmıştır (GNU ld 2.21 veya daha yenisi veya altın).

-ffat-lto-nesneleri
Fat LTO nesneleri, hem ara dili hem de dili içeren nesne dosyalarıdır.
nesne kodu. Bu, onları hem LTO bağlama hem de normal bağlama için kullanılabilir hale getirir. Bu
seçenek yalnızca derleme sırasında etkilidir -flto ve bağlantı zamanında yoksayılır.

-fno-fat-lto-nesneleri düz LTO'ya göre derleme süresini iyileştirir, ancak
LTO'dan haberdar olmak için eksiksiz bir araç zinciri. Bağlayıcı eklenti desteğine sahip bir bağlayıcı gerektirir
temel işlevsellik için. Ek olarak, nm, ar ve ranlib'in bağlayıcıyı desteklemesi gerekir
tam özellikli bir yapı ortamına izin vermek için eklentiler (statik
kütüphaneler vb.)

Varsayılan -ffat-lto-nesneleri ancak bu varsayılanın gelecekte değişmesi amaçlanıyor
Bağlayıcı eklentisi etkin ortamlar daha yaygın hale geldiğinde yayınlanır.

-fkarşılaştır-elim
Kayıt tahsisi ve kayıt sonrası tahsis talimatı bölünmesinden sonra, tanımlayın
karşılaştırma işlemine benzer işlemci bayraklarını hesaplayan aritmetik talimatlar
bu aritmetik üzerine kurulu. Mümkünse, açık karşılaştırma işlemini ortadan kaldırın.

Bu geçiş, yalnızca aşağıdakileri açıkça temsil edemeyen belirli hedefler için geçerlidir.
kayıt tahsisi tamamlanmadan önce karşılaştırma işlemi.

düzeylerde etkin -O, -O2, -O3, -İşletim sistemi.

-sigorta-ld=altın
Kullan altın varsayılan bağlayıcı yerine bağlayıcı.

-sigorta-ld=bfd
Kullan ld.bfd varsayılan bağlayıcı yerine bağlayıcı.

-fcprop-kayıtları
Kayıt tahsisi ve kayıt sonrası tahsis talimatının bölünmesinden sonra,
zamanlama bağımlılıklarını azaltmaya çalışmak için bir kopya yayma geçişi gerçekleştirin ve
bazen kopyayı ortadan kaldırır.

düzeylerde etkin -O, -O2, -O3, -İşletim sistemi.

-fprofile-düzeltme
Çok iş parçacıklı programlar için aletli bir ikili dosya kullanılarak toplanan profiller,
kaçırılan sayaç güncellemeleri nedeniyle tutarsız. Bu seçenek belirtildiğinde, GCC
bu tür tutarsızlıkları düzeltmek veya düzeltmek için buluşsal yöntemleri kullanın. Varsayılan olarak, GCC
tutarsız bir profil algılandığında bir hata mesajı verir.

-fprofil-dir=yol
Profil veri dosyalarının aranacağı dizini ayarlayın. yol. Bu seçenek
yalnızca tarafından oluşturulan profil verilerini etkiler. -fprofile-oluşturma, -ftest-kapsama,
-fprofile-yayları ve tarafından kullanılır -fprofile-kullanımı ve -fbranch-olasılıklar ve bununla ilgili
seçenekler. Hem mutlak hem de göreli yollar kullanılabilir. Varsayılan olarak, GCC
olarak geçerli dizin yol, böylece profil veri dosyası aynı
nesne dosyası olarak dizin.

-fprofile-oluşturma
-fprofile-oluştur =yol
Kullanışlı profil oluşturmak için genellikle enstrümantasyon uygulaması için kullanılan seçenekleri etkinleştirin
profil geri bildirimi tabanlı optimizasyon ile daha sonra yeniden derleme için. Kullanmalısın
-fprofile-oluşturma hem derlerken hem de programınızı bağlarken.

Aşağıdaki seçenekler etkinleştirilir: "-fprofile-arcs", "-fprofile-values", "-fvpt".

If yol belirtilirse, GCC yol profil geri bildirim verilerini bulmak için
Dosyalar. Görmek -fprofil-dir.

-fprofile-kullanımı
-fprofile-kullanımı=yol
Profil geri bildirimine yönelik optimizasyonları ve genel olarak karlı olan optimizasyonları etkinleştirin
sadece profil geri bildirimi mevcut.

Aşağıdaki seçenekler etkinleştirilir: "-fbranch-olasılıkları", "-fvpt",
"-funroll-döngüleri", "-fpeel-döngüleri", "-ftracer"

Varsayılan olarak, geri bildirim profilleri ile eşleşmezse GCC bir hata mesajı verir.
kaynak kodu. kullanılarak bu hata uyarıya dönüştürülebilir. -Wkapsam-uyumsuzluğu.
Bunun kötü optimize edilmiş kodla sonuçlanabileceğini unutmayın.

If yol belirtilirse, GCC yol profil geri bildirim verilerini bulmak için
Dosyalar. Görmek -fprofil-dir.

Aşağıdaki seçenekler, kayan nokta aritmetiğiyle ilgili derleyici davranışını denetler.
Bu seçenekler hız ve doğruluk arasında değiş tokuş yapar. Tümü özel olarak etkinleştirilmelidir.

-float-mağaza
Kayan nokta değişkenlerini kayıtlarda saklamayın ve diğer seçenekleri engelleyin.
kayan noktalı bir değerin bir kayıttan mı yoksa bellekten mi alındığını değiştirebilir.

Bu seçenek, 68000 gibi makinelerde istenmeyen aşırı hassasiyeti önler.
yüzen kayıtlar (68881'in) "çift" olması gerekenden daha fazla hassasiyet sağlar
sahip olmak. Benzer şekilde x86 mimarisi için. Çoğu program için aşırı hassasiyet
sadece işe yarar, ancak birkaç program IEEE kayanlığının kesin tanımına güvenir
puan. Kullanmak -float-mağaza bu tür programlar için, hepsini depolayacak şekilde değiştirdikten sonra
ilgili ara hesaplamalar değişkenlere dönüştürülür.

-fexcess-hassasiyet=stil
Bu seçenek, yüzen makinelerde aşırı hassasiyet üzerinde daha fazla kontrol sağlar.
nokta kayıtları, IEEE "float" ve "double" türlerinden daha hassastır ve
işlemci, bu türlere yuvarlama işlemlerini desteklemez. Varsayılan olarak,
-fexcess-hassasiyet=hızlı yürürlükte; bu, operasyonların yürütüldüğü anlamına gelir.
kayıtların kesinliği ve türlere yuvarlanırken tahmin edilemez olması
kaynak kodunda belirtilen yer alır. C'yi derlerken, eğer
-fexcess-hassasiyet=standart belirtilirse, aşırı hassasiyet kurallara uyacaktır
ISO C99'da belirtilen; özellikle, hem atamalar hem de atamalar değerlerin
anlamsal türlerine yuvarlanır (oysa -float-mağaza yalnızca atamaları etkiler).
Bu seçenek, aşağıdaki gibi katı bir uygunluk seçeneği varsa, varsayılan olarak C için etkindir.
-std = c99 kullanıldı.

-fexcess-hassasiyet=standart C dışındaki diller için uygulanmaz ve
etkisi ise -funsafe-matematik-optimizasyonları or -fffast-matematik belirtilir. x86'da,
ayrıca hiçbir etkisi yoktur -mfpmath=sse or -mfpmath=sse+387 belirtilir; eskiden
durumda, IEEE semantiği aşırı hassasiyet olmadan uygulanır ve ikincisinde yuvarlama
öngörülemeyen.

-fffast-matematik
Setleri -fno-matematik-errno, -funsafe-matematik-optimizasyonları, -ffinite-matematik-sadece,
-fno-yuvarlama-matematiği, -fno-sinyalleme-nanları ve -fcx-sınırlı-aralık.

Bu seçenek, "__FAST_MATH__" önişlemci makrosunun tanımlanmasına neden olur.

Bu seçenek herhangi biri tarafından açılmadı. -O ayrıca seçenek -Ofast sonuçlanabileceğinden
IEEE veya ISO'nun tam olarak uygulanmasına bağlı olan programlar için yanlış çıktı
matematik fonksiyonları için kurallar/spesifikasyonlar. Bununla birlikte, daha hızlı kod verebilir
bu özelliklerin garantisini gerektirmeyen programlar.

-fno-matematik-errno
Tek tuşla yürütülen matematik fonksiyonlarını çağırdıktan sonra ERRNO ayarlamayın.
talimat, örneğin, sqrt. Matematik hatası için IEEE istisnalarına dayanan bir program
işleme, IEEE aritmetiğini korurken hız için bu bayrağı kullanmak isteyebilir
uyumluluğu.

Bu seçenek herhangi biri tarafından açılmadı. -O yanlış çıktıya neden olabileceğinden seçenek
IEEE veya ISO'nun tam olarak uygulanmasına bağlı olan programlar için
matematik fonksiyonları için kurallar/spesifikasyonlar. Bununla birlikte, daha hızlı kod verebilir
bu özelliklerin garantisini gerektirmeyen programlar.

Varsayılan -fmath-hata.

Darwin sistemlerinde, matematik kütüphanesi asla "errno" koymaz. bu nedenle hiçbir sebep yok
derleyicinin bunun olasılığını düşünmesi ve -fno-matematik-errno olduğunu
Varsayılan.

-funsafe-matematik-optimizasyonları
(a) bağımsız değişkenlerin ve
sonuçlar geçerlidir ve (b) IEEE veya ANSI standartlarını ihlal edebilir. Bağlantı zamanında kullanıldığında,
varsayılan FPU kontrol kelimesini değiştiren kitaplıklar veya başlangıç ​​dosyaları içerebilir veya
diğer benzer optimizasyonlar.

Bu seçenek herhangi biri tarafından açılmadı. -O yanlış çıktıya neden olabileceğinden seçenek
IEEE veya ISO'nun tam olarak uygulanmasına bağlı olan programlar için
matematik fonksiyonları için kurallar/spesifikasyonlar. Bununla birlikte, daha hızlı kod verebilir
bu özelliklerin garantisini gerektirmeyen programlar. etkinleştirir
-fno-imzalı-sıfırlar, -fno-trapping-matematiği, -fasosiyatif-matematik ve -karşılıklı-matematik.

Varsayılan -fno-güvensiz-matematik optimizasyonları.

-fasosiyatif-matematik
Bir dizi kayan nokta işleminde işlenenlerin yeniden ilişkilendirilmesine izin verin. Bu
muhtemelen hesaplama sonucunu değiştirerek ISO C ve C++ dil standardını ihlal ediyor.
NOT: yeniden sipariş verme sıfırın işaretini değiştirebilir, ayrıca NaN'leri yok sayabilir ve engelleyebilir veya
eksik veya taşma oluşturun (ve dolayısıyla yuvarlamaya dayanan kodda kullanılamaz
"(x + 2**52) - 2**52" gibi davranış. Ayrıca kayan nokta karşılaştırmalarını yeniden düzenleyebilir ve
bu nedenle sıralı karşılaştırmalar gerektiğinde kullanılamaz. Bu seçenek şunu gerektirir:
her ikisi de -fno-imzalı-sıfırlar ve -fno-trapping-matematiği yürürlükte olmak. Üstelik yapmaz
ile çok mantıklı -frounding-matematik. Fortran için seçenek, aşağıdaki durumlarda otomatik olarak etkinleştirilir:
her ikisi de -fno-imzalı-sıfırlar ve -fno-trapping-matematiği yürürlüktedir.

Varsayılan -fno-ilişkisel-matematik.

-karşılıklı-matematik
Bu durumda, değere bölmek yerine bir değerin karşılığının kullanılmasına izin verin.
optimizasyonları sağlar. Örneğin, "x / y", "x * (1/y)" ile değiştirilebilir;
"(1/y)" ortak alt ifade eliminasyonuna tabi ise yararlıdır. unutmayın ki bu
hassasiyeti kaybeder ve değer üzerinde çalışan flop sayısını artırır.

Varsayılan -fno-karşılıklı-matematik.

-ffinite-matematik-sadece
Argümanların ve
sonuçlar NaN'ler veya +-Inf'ler değildir.

Bu seçenek herhangi biri tarafından açılmadı. -O yanlış çıktıya neden olabileceğinden seçenek
IEEE veya ISO'nun tam olarak uygulanmasına bağlı olan programlar için
matematik fonksiyonları için kurallar/spesifikasyonlar. Bununla birlikte, daha hızlı kod verebilir
bu özelliklerin garantisini gerektirmeyen programlar.

Varsayılan -fno-sonlu-matematik-sadece.

-fno-imzalı-sıfırlar
Sıfırın imzasını yok sayan kayan nokta aritmetiği için optimizasyonlara izin verin.
IEEE aritmetiği, farklı +0.0 ve -0.0 değerlerinin davranışını belirtir;
x+0.0 veya 0.0*x gibi ifadelerin sadeleştirilmesini yasaklar (
-ffinite-matematik-sadece). Bu seçenek, sıfır sonucun işaretinin
önemli.

Varsayılan -fsigned-sıfırlar.

-fno-trapping-matematiği
Kayan nokta işlemlerinin kullanıcı tarafından görünür hale gelemeyeceğini varsayarak kodu derleyin
tuzaklar. Bu tuzaklar sıfıra bölme, taşma, taşma, tam olmayan sonuç ve
Geçersiz işlem. Bu seçenek şunu gerektirir: -fno-sinyalleme-nanları yürürlükte olmak.
Bu seçeneğin ayarlanması, "kesintisiz" IEEE aritmetiğine bağlıysa daha hızlı koda izin verebilir,
örneğin.

Bu seçenek hiçbir zaman herhangi biri tarafından açılmamalıdır. -O sonuçlanabileceğinden seçenek
IEEE veya ISO'nun tam olarak uygulanmasına bağlı olan programlar için yanlış çıktı
matematik fonksiyonları için kurallar/spesifikasyonlar.

Varsayılan -ftrapping-matematik.

-frounding-matematik
Varsayılan kayan nokta yuvarlamasını varsayan dönüşümleri ve optimizasyonları devre dışı bırakın
davranış. Bu, tüm kayan noktadan tamsayıya dönüşümler için sıfıra yuvarlanır ve
diğer tüm aritmetik kesmeler için en yakına yuvarlak. Bu seçenek olmalıdır
FP yuvarlama modunu dinamik olarak değiştiren veya
varsayılan olmayan bir yuvarlama modu ile yürütülür. Bu seçenek, sürekli katlamayı devre dışı bırakır.
derleme zamanında kayan noktalı ifadeler (yuvarlama modundan etkilenebilir)
ve işarete bağlı durumlarda güvenli olmayan aritmetik dönüşümler
yuvarlama modları.

Varsayılan -fno-yuvarlama-matematiği.

Bu seçenek deneyseldir ve şu anda tüm GCC'lerin devre dışı bırakılmasını garanti etmemektedir.
yuvarlama modundan etkilenen optimizasyonlar. GCC'nin gelecekteki sürümleri şunları sağlayabilir:
C99'un "FENV_ACCESS" pragmasını kullanarak bu ayarın daha hassas kontrolü. Bu komut satırı
seçeneği, "FENV_ACCESS" için varsayılan durumu belirtmek için kullanılacaktır.

-fsignaling-Nans
IEEE sinyalleme NaN'lerinin aşağıdakiler sırasında kullanıcı tarafından görülebilen tuzaklar oluşturabileceğini varsayarak kodu derleyin.
kayan nokta işlemleri. Bu seçeneğin ayarlanması, değişebilecek optimizasyonları devre dışı bırakır
NaN'leri işaret ederken görünen istisnaların sayısı. Bu seçenek şu anlama gelir:
-ftrapping-matematik.

Bu seçenek, "__SUPPORT_SNAN__" önişlemci makrosunun tanımlanmasına neden olur.

Varsayılan -fno-sinyalleme-nanları.

Bu seçenek deneyseldir ve şu anda tüm GCC'lerin devre dışı bırakılmasını garanti etmemektedir.
sinyalizasyon NaN davranışını etkileyen optimizasyonlar.

-fsingle-hassas-sabit
Kayan nokta sabitlerini örtük olarak dönüştürmek yerine tek bir kesinlik olarak ele alın
onları çift duyarlıklı sabitlere dönüştürün.

-fcx-sınırlı-aralık
Etkinleştirildiğinde, bu seçenek, aşağıdaki durumlarda bir aralık azaltma adımına gerek olmadığını belirtir.
karmaşık bölme yapmak. Ayrıca, bir sonucun olup olmadığı kontrol edilmez.
karmaşık çarpma veya bölme işlemi "NaN + I*NaN" şeklindedir.
bu durumda durum. Varsayılan -fno-cx-sınırlı menzil, ancak tarafından etkinleştirilir
-fffast-matematik.

Bu seçenek, ISO C99 "CX_LIMITED_RANGE" pragmasının varsayılan ayarını kontrol eder.
Bununla birlikte, seçenek tüm diller için geçerlidir.

-fcx-fortran-kuralları
Karmaşık çarpma ve bölme Fortran kurallarını takip eder. Menzil azaltma şu şekilde yapılır:
karmaşık bölünmenin bir parçası, ancak bir kompleksin sonucunun olup olmadığının kontrolü yok.
çarpma veya bölme durumu kurtarmak için "NaN + I*NaN" şeklindedir.
bu durumda.

Varsayılan -fno-cx-fortran-kuralları.

Aşağıdaki seçenekler, performansı artırabilecek ancak iyileştirmeyen optimizasyonları kontrol eder.
herhangi biri tarafından etkinleştirildi -O seçenekler. Bu bölüm, aşağıdakileri üretebilecek deneysel seçenekleri içerir:
bozuk kod.

-fbranch-olasılıklar
İle derlenmiş bir programı çalıştırdıktan sonra -fprofile-yayları, ikinci kez derleyebilirsiniz
kullanma -fbranch-olasılıklar, optimizasyonların sayısını temel alarak iyileştirmek için
her şube alındı. Program ile derlendiğinde -fprofile-yayları kaydeder çıkışlar
ark yürütme, adlı bir dosyaya sayılır kaynakadi.gcda her kaynak dosya için. NS
Bu veri dosyasındaki bilgiler, oluşturulan verinin yapısına çok bağlıdır.
bu nedenle, her ikisi için de aynı kaynak kodunu ve aynı optimizasyon seçeneklerini kullanmalısınız.
derlemeler.

İle -fbranch-olasılıklar, GCC koyar REG_BR_PROB her birine not JUMP_INSN ve
CALL_INSN. Bunlar optimizasyonu geliştirmek için kullanılabilir. Şu anda sadece kullanılıyorlar
tek bir yerde: içinde yeniden düzenleme, bir dalın hangi yoldan gitme olasılığının daha yüksek olduğunu tahmin etmek yerine
al, REG_BR_PROB değerler, hangi yolun daha fazla alındığını tam olarak belirlemek için kullanılır.
genellikle.

-fprofile-değerleri
ile birleştirilirse -fprofile-yaylarıdeğerleri hakkında bazı verilerin olması için kod ekler.
programdaki ifadeler toplanır.

İle -fbranch-olasılıklar, profil oluşturma değerlerinden toplanan verileri geri okur.
optimizasyonlarda kullanım için ifadeler.

ile etkinleştirildi -fprofile-oluşturma ve -fprofile-kullanımı.

-fvpt
ile birleştirilirse -fprofile-yayları, derleyiciye toplamak için bir kod eklemesini söyler.
ifadelerin değerleri hakkında bilgi.

İle -fbranch-olasılıklar, toplanan verileri okur ve gerçekte
bunlara dayalı optimizasyonlar. Şu anda optimizasyonlar, uzmanlaşmayı içermektedir.
paydanın değeri hakkındaki bilgileri kullanarak bölme işlemi.

-frename-kayıtları
Kalan kayıtları kullanarak zamanlanmış kodda yanlış bağımlılıklardan kaçınmaya çalışın
kayıt tahsisinden sonra bitti. Bu optimizasyon en çok işlemcilere fayda sağlayacaktır.
çok sayıda kayıt. Hedef tarafından benimsenen hata ayıklama bilgi formatına bağlı olarak,
ancak, değişkenler artık bir dizinde kalmayacağından hata ayıklamayı imkansız hale getirebilir.
"ev kaydı".

ile varsayılan olarak etkindir -funroll-döngüler ve -fpeel-döngüler.

-tracer
Süper blok boyutunu büyütmek için kuyruk çoğaltma gerçekleştirin. Bu dönüşüm basitleştirir
diğer optimizasyonların daha iyi iş çıkarmasına izin veren işlevin kontrol akışı.

ile etkinleştirildi -fprofile-kullanımı.

-funroll-döngüler
Derleme zamanında veya sonrasında yineleme sayısı belirlenebilen döngüleri açın
döngüye giriş. -funroll-döngüler ima -frerun-cse-sonrası döngü, -fweb ve
-frename-kayıtları. Ayrıca tam döngü soymayı da açar (yani
küçük sabit sayıda yinelemeli döngüler). Bu seçenek kodu büyütür ve
daha hızlı çalışmasını sağlayabilir veya sağlamayabilir.

ile etkinleştirildi -fprofile-kullanımı.

-funroll-all-döngüler
Döngü açıkken yineleme sayıları belirsiz olsa bile tüm döngüleri açın.
girdi. Bu genellikle programların daha yavaş çalışmasına neden olur. -funroll-all-döngüler ima eder
ile aynı seçenekler -funroll-döngüler.

-fpeel-döngüler
Çok fazla yuvarlanmadıkları yeterli bilgi bulunan soyma döngüleri (
profil geri bildirimi). Ayrıca tam döngü soymayı da açar (yani
küçük sabit sayıda yinelemeli döngüler).

ile etkinleştirildi -fprofile-kullanımı.

-fmove-loop-değişmezleri
RTL döngü optimize edicide döngü değişmez hareket geçişini etkinleştirir. Düzeyde etkin
-O1

-funswitch-döngüler
Döngü değişmez koşullarına sahip dalları, döngünün kopyalarıyla döngüden çıkarın.
her iki dalda da döngü (durumun sonucuna göre değiştirilir).

-fonksiyon-bölümler
-fdata-bölümleri
Hedef, her işlevi veya veri öğesini çıktı dosyasındaki kendi bölümüne yerleştirin.
keyfi bölümleri destekler. Fonksiyonun adı veya veri öğesinin adı
çıktı dosyasında bölümün adını belirler.

Bağlayıcının iyileştirmeler yapmak için optimizasyonlar gerçekleştirebileceği sistemlerde bu seçenekleri kullanın.
talimat alanında referans yeri. ELF nesnesini kullanan çoğu sistem
Solaris 2 çalıştıran format ve SPARC işlemciler, bu tür optimizasyonlara sahip bağlayıcılara sahiptir.
AIX gelecekte bu optimizasyonlara sahip olabilir.

Bu seçenekleri yalnızca bunu yapmanın önemli yararları olduğunda kullanın. Sen ne zaman
bu seçenekleri belirtin, montajcı ve bağlayıcı daha büyük nesne oluşturacak ve
yürütülebilir dosyalar ve ayrıca daha yavaş olacaktır. "gprof" u hiçbir şekilde kullanamayacaksınız.
sistemlerde bu seçeneği belirtirseniz ve hata ayıklamada sorun yaşayabilirsiniz.
hem bu seçeneği belirtin hem de -g.

-fbranch-hedef-yükleme-optimize etme
Prolog / epilog iş parçacığı oluşturmadan önce dal hedef kaydı yük optimizasyonu gerçekleştirin.
Hedef yazmaçların kullanımı tipik olarak yalnızca yeniden yükleme sırasında ortaya çıkabilir, bu nedenle kaldırma
döngülerden yükler ve bloklar arası zamanlama yapmak ayrı bir optimizasyon gerektirir
geçmektedir.

-fdal-hedef-yük-optimize2
Prolog / epilog threading işleminden sonra dal hedef kaydı yük optimizasyonu gerçekleştirin.

-fbtr-bb-özel
Şube hedefi kayıt yükleme optimizasyonu gerçekleştirirken şube hedefini yeniden kullanmayın
herhangi bir temel blok içinde kayıt yapar.

-fstack-koruyucu
Yığın parçalama saldırıları gibi arabellek taşmalarını kontrol etmek için fazladan kod yayınlayın. Bu
savunmasız nesnelere sahip işlevlere bir koruma değişkeni eklenerek yapılır. Bu
alloca çağıran işlevleri ve 8 bayttan büyük arabelleklere sahip işlevleri içerir.
Korumalar, bir fonksiyon girildiğinde başlatılır ve daha sonra kontrol edildiğinde kontrol edilir.
fonksiyon çıkar. Koruma denetimi başarısız olursa, bir hata mesajı yazdırılır ve program
çıkışlar.

NOT: Ubuntu 6.10 ve sonraki sürümlerde bu seçenek varsayılan olarak C, C++,
ObjC, ObjC++, eğer hiçbiri -fno-yığın koruyucusu, -nstdlibne de -bağımsız vardır
Bulunan.

-fstack-koruyucu-tümü
Facebok sayfasını beğenin : -fstack-koruyucu dışında tüm işlevler korunur.

-fsection-ankrajlar
Paylaşılan "çapa" kullanarak sembolik adres hesaplamalarının sayısını azaltmaya çalışın
yakındaki nesnelere hitap eden semboller. Bu dönüşüm sayıyı azaltmaya yardımcı olabilir
Bazı hedeflerde GOT girişlerinin ve GOT erişimlerinin sayısı.

Örneğin, aşağıdaki "foo" işlevinin uygulanması:

statik int a, b, c;
int foo (void) { döndürme a + b + c; }

genellikle üç değişkenin de adreslerini hesaplar, ancak derlerseniz
ile -fsection-ankrajlar, değişkenlere ortak bir bağlantı noktasından erişecek
Bunun yerine. Etki, aşağıdaki sözde koda benzer (geçerli C değildir):

int foo (boş)
{
kayıt int *xr = &x;
dönüş xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
}

Tüm hedefler bu seçeneği desteklemez.

--param isim=değer
Bazı yerlerde GCC, optimizasyon miktarını kontrol etmek için çeşitli sabitler kullanır.
yapıldı. Örneğin, GCC, belirli bir değerden fazlasını içeren satır içi işlevler olmayacaktır.
talimat sayısı. Bu sabitlerin bazılarını komut satırından kontrol edebilirsiniz.
ile --param seçeneği.

Belirli parametrelerin adları ve değerlerin anlamı,
derleyicinin içindekiler ve gelecekte haber verilmeksizin değiştirilebilir.
bültenleri.

Her durumda, değer bir tamsayıdır. için izin verilen seçenekler isim verilir
aşağıdaki tablo:

öngörülebilir-dal-sonuç
Dalın bu eşikten daha düşük bir olasılıkla alınması öngörüldüğünde
(yüzde olarak), o zaman iyi tahmin edilebilir olarak kabul edilir. Varsayılan 10'dur.

maksimum çapraz atlama kenarları
Çapraz atlama için dikkate alınacak maksimum gelen kenar sayısı. algoritma
kullandığı -fçapraz atlama her bloğa gelen kenar sayısında O(N^2)'dir.
Artan değerler daha agresif optimizasyon anlamına gelir, bu da derleme süresini uzatır
yürütülebilir boyutta muhtemelen küçük bir gelişme ile artış.

min-crossjump-insns
İki bloğun sonunda eşleşmesi gereken minimum talimat sayısı
önce çapraz atlama üzerlerinde yapılacaktır. Bu değer durumda yoksayılır.
çapraz atlama yapılan bloktaki tüm talimatların eşleştiği yer. NS
varsayılan değer 5'tir.

max-grow-copy-bb-insns
Bunun yerine temel blokları kopyalarken maksimum kod boyutu genişletme faktörü
atlama. Genişletme, bir atlama talimatına göredir. Varsayılan değer
8.

max-goto-dplication-insns
Bir bloğa atlayan bir bloğa kopyalanacak maksimum talimat sayısı
hesaplanan goto. Birkaç geçişte O(N^2) davranışından kaçınmak için GCC faktörleri
derleme işleminin başlarında hesaplanan goto'ları ve onları en geç kadar faktörsüzleştirir
mümkün. Yalnızca temel blokların sonundaki hesaplanan atlamalar, en fazla maks.
goto-dplication-insns faktörsüzdür. Varsayılan değer 8'dir.

max-delay-slot-insn-arama
Bir talimat ararken dikkate alınması gereken maksimum talimat sayısı
bir gecikme yuvasını doldurun. Bu isteğe bağlı sayıdan daha fazla talimat varsa
arandığında, gecikme aralığını doldurmaktan elde edilen zaman tasarrufu minimum olacaktır, bu nedenle dur
Aranıyor. Artan değerler, daha agresif optimizasyon anlamına gelir;
derleme süresi, yürütme süresinde muhtemelen küçük bir iyileşme ile artar.

max-delay-slot-canlı arama
Gecikme yuvalarını doldurmaya çalışırken, dikkate alınması gereken maksimum talimat sayısı
geçerli canlı kayıt bilgilerine sahip bir blok ararken. Bunu artırmak
keyfi olarak seçilen değer, daha agresif optimizasyon anlamına gelir ve
derleme zamanı. Gecikme yuvası kodu olduğunda bu parametre kaldırılmalıdır.
kontrol akış grafiğini korumak için yeniden yazılmıştır.

max-gcse-bellek
için ayrılacak yaklaşık maksimum bellek miktarı.
genel ortak alt ifade eleme optimizasyonunu gerçekleştirin. Daha fazla bellek varsa
belirtilenden daha fazla gerekliyse, optimizasyon yapılmayacaktır.

max-gcse-ekleme oranı
İfade eklemelerinin silmelere oranı bu değerden büyükse
herhangi bir ifade varsa, RTL PRE ifadeyi ekler veya kaldırır ve böylece bırakır
talimat akışında kısmen gereksiz hesaplamalar. Varsayılan değer
20

maksimum bekleyen liste uzunluğu
Bekleyen bağımlılıkların maksimum sayısı zamanlama, temizlemeden önce izin verecektir
mevcut durum ve baştan başlamak. Birkaç şube veya çağrı ile büyük fonksiyonlar
bellek ve kaynakları gereksiz yere tüketen aşırı büyük listeler oluşturabilir.

max-modulo-backtrack-girişimleri
Modulo olduğunda zamanlayıcının yapması gereken maksimum geri izleme denemesi sayısı
bir döngü zamanlama. Daha büyük değerler, derleme süresini katlanarak artırabilir.

max-inline-insns-tek
Birkaç parametre gcc'de kullanılan ağaç satırını kontrol eder. Bu sayıyı ayarlar
maksimum talimat sayısı (GCC'nin dahili temsilinde sayılır)
ağaç satırının satır içi için dikkate alacağı tek işlev. Bu sadece
satır içi bildirilen işlevleri ve bir sınıf bildiriminde uygulanan yöntemleri etkiler
(C++). Varsayılan değer 400'dür.

max-inline-insns-otomatik
Ne zaman kullanmak -finline-fonksiyonlar (dahil -O3), birçok işlev
aksi takdirde satır içi için dikkate alınmaz derleyici tarafından araştırılacaktır. NS
bu işlevler, işlevlere kıyasla farklı (daha kısıtlayıcı) bir sınır
beyan edilen satır içi uygulanabilir. Varsayılan değer 40'tır.

büyük-fonksiyon-insns
Gerçekten büyük işlevleri belirten sınır. Bu limitten daha büyük fonksiyonlar için
satır içi sonra, satır içi ile sınırlıdır --param büyük-fonksiyon-büyüme. Bu
parametresi, öncelikli olarak, olmayanların neden olduğu aşırı derleme süresinden kaçınmak için yararlıdır.
arka uç tarafından kullanılan doğrusal algoritmalar. Varsayılan değer 2700'dür.

büyük-fonksiyon-büyüme
Yüzde cinsinden satır içi oluşturmanın neden olduğu büyük işlevin maksimum büyümesini belirtir. NS
varsayılan değer 100'dür ve bu, büyük işlev büyümesini orijinalin 2.0 katıyla sınırlar
boyutu.

büyük-birim-insns
Büyük çeviri birimini belirten sınır. Birimlerin sıralanmasının neden olduğu büyüme
bu sınırdan daha büyük ile sınırlıdır --param satır içi birim büyümesi. Küçük birimler için
bu çok sıkı olabilir (satır içi ve A işlevinden oluşan birimi düşünün)
Sadece üç kez A'yı çağıran B. B, A'ya göre küçükse, birimin büyümesi
%300'dür ve yine de böyle bir satır içi çok mantıklıdır. Aşağıdakilerden oluşan çok büyük birimler için
küçük satır içi olmayan fonksiyonlar, ancak genel birim büyüme limiti gereklidir
kod boyutunun üstel patlamasını önleyin. Böylece daha küçük birimler için boyut
yükselmiştir --param büyük-birim-insns uygulamadan önce --param satır içi birim büyümesi.
Varsayılan 10000

satır içi birim büyümesi
Satır içi oluşturmanın neden olduğu derleme biriminin maksimum genel büyümesini belirtir. NS
varsayılan değer, birim büyümesini orijinal boyutun 30 katıyla sınırlayan 1.3'dur.

ipcp-birim-büyümesi
Derleme biriminin prosedürler arası neden olduğu maksimum genel büyümeyi belirtir.
sürekli yayılma. Varsayılan değer 10'dur ve birim büyümeyi 1.1 ile sınırlar
orijinal boyutunun katı.

büyük yığın çerçeve
Büyük yığın çerçevelerini belirten sınır. Algoritmayı satır içi yaparken deniyor
bu sınırı çok fazla büyütmemek için. Varsayılan değer 256 bayttır.

büyük yığın-çerçeve büyümesi
Yüzde olarak satır içi oluşturmanın neden olduğu büyük yığın çerçevelerinin maksimum büyümesini belirtir.
Varsayılan değer 1000'dir ve bu, büyük yığın çerçevesi büyümesinin 11 katıyla sınırlanır.
orijinal boyut.

max-inline-insns-özyinelemeli
max-inline-insns-özyinelemeli-otomatik
Kendi kendine özyinelemeli satır içi kopyanın satır dışı kopyasının maksimum talimat sayısını belirtir
işlev, özyinelemeli satır içi işlem gerçekleştirerek büyüyebilir.

Satır içi bildirilen işlevler için --param max-inline-insns-özyinelemeli içine alınır
hesap. Satır içi olarak bildirilmeyen işlev için, özyinelemeli satır içi yalnızca şu durumlarda gerçekleşir:
-finline-fonksiyonlar (dahil -O3) etkinleştirilir ve --param max-inline-insns-
özyinelemeli-otomatik kullanıldı. Varsayılan değer 450'dir.

max-inline-yinelemeli-derinlik
max-inline-özyinelemeli-derinlik-otomatik
Yinelemeli satır içi tarafından kullanılan maksimum yineleme derinliğini belirtir.

Satır içi bildirilen işlevler için --param max-inline-yinelemeli-derinlik içine alınır
hesap. Satır içi olarak bildirilmeyen işlev için, özyinelemeli satır içi yalnızca şu durumlarda gerçekleşir:
-finline-fonksiyonlar (dahil -O3) etkinleştirilir ve --param maksimum satır içi özyinelemeli
derinlik-otomatik kullanıldı. Varsayılan değer 8'dir.

min-inline-özyinelemeli-olasılık
Özyinelemeli satır içi oluşturma, yalnızca derin özyinelemeye sahip işlev için karlıdır.
ortalamayı artırarak küçük özyineleme derinliğine sahip işlev için zarar verebilir.
diğer optimize edicilere giriş boyutu veya işlev gövdesinin karmaşıklığı.

Profil geri bildirimi mevcut olduğunda (bkz. -fprofile-oluşturma) gerçek özyineleme
derinlik, verilen çağrı yoluyla fonksiyonun tekrarlama olasılığından tahmin edilebilir
ifade. Bu parametre, satır içi oluşturmayı yalnızca
olasılık verilen eşiği aşıyor (yüzde olarak). Varsayılan değer 10'dur.

erken satır içi-insns
Erken inliner'ın yapabileceği büyümeyi belirtin. Aslında, miktarını artırır
büyük soyutlama cezası olan kod için satır içi. Varsayılan değer 10'dur.

max-early-inliner-yinelemeler
max-early-inliner-yinelemeler
Erken satır içi yinelemelerin sınırı. Bu temelde iç içe geçmiş sayıları sınırlar.
dolaylı çağrıları erken satır içi çözebilir. Daha derin zincirler hala geç işleniyor
satır içi.

comdat-paylaşım-olasılığı
comdat-paylaşım-olasılığı
C++ satır içi işlevinin comdat görünürlüğüne sahip olma olasılığı (yüzde olarak)
birden çok derleme birimi arasında paylaşılır. Varsayılan değer 20'dir.

min-vect-döngüye bağlı
Aşağıdaki durumlarda bir döngünün vektörleştirilmeyeceği minimum yineleme sayısı
-ftree-vektörize kullanıldı. Vektörleştirmeden sonraki yineleme sayısı,
vektörleştirmeye izin vermek için bu seçenek tarafından belirtilen değerden daha büyük olabilir. NS
varsayılan değer 0'tir.

gcse-maliyet-mesafe-oran
Bir ifadenin hareket ettirilebileceği maksimum mesafenin hesaplanmasında ölçeklendirme faktörü
GCSE optimizasyonları. Bu, şu anda yalnızca kod kaldırma geçişinde desteklenmektedir.
Oran ne kadar büyük olursa, kod kaldırma işlemi o kadar basit olacaktır.
ifadeler, yani, maliyeti daha düşük olan ifadeler gcse-sınırsız-
maliyet. 0 belirtmek, basit ifadelerin kaldırılmasını devre dışı bırakır. Varsayılan
değer 10'dir.

gcse-sınırsız-maliyet
Maliyet, kabaca tek bir tipik makine talimatının maliyeti olarak ölçülür.
hangi GCSE optimizasyonları bir ifadenin kat edebileceği mesafeyi kısıtlamayacaktır.
Bu, şu anda yalnızca kod kaldırma geçişinde desteklenmektedir. Maliyet ne kadar düşükse,
daha agresif kod kaldırma olacaktır. 0 belirtmek tüm
Sınırsız mesafelere seyahat etmek için ifadeler. Varsayılan değer 3'tür.

maksimum kaldırma derinliği
Kaldırılacak ifadeler için baskın ağaçtaki arama derinliği. Bu kullanılır
Kaldırma algoritmasında ikinci dereceden davranıştan kaçınmak için. 0 değeri önleyecektir
aramayı sınırlandırabilir, ancak büyük işlevlerin derlenmesini yavaşlatabilir. Varsayılan
değer 30'dir.

max-tail-merge-karşılaştırmalar
Bir bb ile karşılaştırılacak maksimum benzer bbs miktarı. Bu önlemek için kullanılır
ağaç kuyruğu birleştirmede ikinci dereceden davranış. Varsayılan değer 10'dur.

max-tail-merge-yinelemeler
İşlev üzerinden geçişin maksimum yineleme miktarı. Bu kullanılır
ağaç kuyruğu birleştirmede derleme süresini sınırlayın. Varsayılan değer 2'dir.

maksimum-açılmamış-insns
Bir döngünün sahip olması gereken maksimum talimat sayısı, bu döngü
açıldı ve döngü açıldıysa, döngü kodunun kaç kez olduğunu belirler
haddelenmiş.

maks-ortalama-açılmamış-insns
Yürütme olasılıklarına göre önyargılı maksimum talimat sayısı
bir döngü, o döngü çözülmüşse olmalıdır ve döngü açılmışsa,
döngü kodunun kaç kez açılacağını belirler.

maksimum açma süreleri
Tek bir döngünün maksimum açılma sayısı.

max-soyulmuş-insns
Bir döngü soyulmuşsa, bir döngünün sahip olması gereken maksimum talimat sayısı,
ve eğer loop soyulmuşsa, loop kodunun kaç kez soyulacağını belirler.

maksimum soyulma süreleri
Tek bir döngünün maksimum soyma sayısı.

max-tamamen-soyulmuş-insns
Tamamen soyulmuş bir döngünün maksimum insn sayısı.

maksimum-tamamen-soyulma süreleri
Tam soyma için uygun olacak bir döngünün maksimum yineleme sayısı.

maksimum-tamamen-soyma-döngü-yuva derinliği
Tam soyma için uygun bir döngü yuvasının maksimum derinliği.

max-unswitch-insns
Anahtarlanmamış bir döngünün maksimum insn sayısı.

max-unswitch-seviyesi
Tek bir döngüde anahtarı kaldırılan maksimum dal sayısı.

Lim-pahalı
Döngü değişmez hareketinde pahalı bir ifadenin minimum maliyeti.

iv-tüm adayları-bağlı düşünün
Tüm adayların altındaki tümevarım değişkenleri için aday sayısına bağlı
tümevarım değişken optimizasyonlarında her kullanım için dikkate alınır. sadece en
daha fazla aday varsa ilgili adaylar dikkate alınır,
ikinci dereceden zaman karmaşıklığı.

iv-max-dikkate alınan kullanımlar
Endüksiyon değişkeni optimizasyonları, daha fazla endüksiyon içeren döngülerden vazgeçer
değişken kullanır.

iv-her zaman-budak-cand-set-bağlı
Kümedeki aday sayısı bu değerden küçükse, her zaman
yeni bir iv eklendiğinde optimizasyonu sırasında gereksiz iv'leri setten kaldırın
sete.

scev-max-ifade-size
Skaler evrim çözümleyicisinde kullanılan ifadelerin boyutuna bağlı. Büyük
ifadeler analizörü yavaşlatır.

scev-max-expr-karmaşıklık
Skaler evrim çözümleyicisindeki ifadelerin karmaşıklığına bağlıdır.
Karmaşık ifadeler çözümleyiciyi yavaşlatır.

omega-max-vars
Bir Omega kısıtlama sistemindeki maksimum değişken sayısı. varsayılan değer
128.

omega-max-geq'ler
Bir Omega kısıtlama sistemindeki maksimum eşitsizlik sayısı. Varsayılan
değer 256'dir.

omega-max-eşdeğerleri
Bir Omega kısıtlama sistemindeki maksimum eşitlik sayısı. varsayılan değer
128.

omega-max-joker-kartlar
Omega çözücünün kullanabileceği maksimum joker değişken sayısı
sokmak. Varsayılan değer 18'dir.

omega-hash-tablo boyutu
Omega çözücüdeki karma tablosunun boyutu. Varsayılan değer 550'dir.

omega-max-anahtarları
Omega çözücü tarafından kullanılan maksimum anahtar sayısı. Varsayılan değer 500'dür.

omega-ortadan kaldırmak-yedek-kısıtlamalar
1'e ayarlandığında, tüm gereksiz kısıtlamaları ortadan kaldırmak için pahalı yöntemler kullanın. NS
varsayılan değer 0'tir.

vect-max-sürüm-için-hizalama-kontrolleri
Döngü yapılırken gerçekleştirilebilecek maksimum çalışma zamanı denetimi sayısı
vektörleştiricide hizalama için sürüm oluşturma. ftree-vect-loop-version seçeneğine bakın
daha fazla bilgi için.

takma ad kontrolleri için vect-max-versiyonu
Döngü yapılırken gerçekleştirilebilecek maksimum çalışma zamanı denetimi sayısı
vektörleştiricideki takma ad için sürüm oluşturma. için ftree-vect-loop-version seçeneğine bakın
daha fazla bilgi.

izlenecek maksimum yineleme
Bir döngünün maksimum yineleme sayısı, analiz için kaba kuvvet algoritması
Döngünün # iterasyonunu değerlendirmeye çalışır.

hot-bb-count-fraksiyon
Programdaki temel bloğun maksimum tekrar sayısının kesirini seçin
verilen temel bloğun sıcak olarak kabul edilmesi gerekir.

sıcak-bb-frekans-kesir
Giriş bloğundaki temel bloğun yürütme frekansının kesirini seçin.
Temel blok verilen işlevin sıcak olarak kabul edilmesi gerekir.

maksimum tahmin edilen yinelemeler
Statik olarak tahmin ettiğimiz maksimum döngü yineleme sayısı. Bu yararlıdır
fonksiyonun, bağlı olduğu bilinen tek döngü ve diğer döngü ile bağlantılı olduğu durumlar
Bilinmeyen. Bilinen yineleme sayısını doğru tahmin ederken, bilinmeyen
yineleme sayısı ortalama olarak yaklaşık 10'dur. Bu, döngünün
sınırlar diğerine göre yapay olarak soğuk görünecektir.

hizalama eşiği
Fonksiyondaki temel bloğun maksimum yürütme frekansının kesirini seçin
verilen temel blok hizalanacaktır.

hizalama döngüsü yinelemeleri
Seçilen yineleme sayısının elde edilmesi için yinelenmesi beklenen bir döngü
hizalı.

izleyici-dinamik-kapsam
izleyici-dinamik-kapsam-geribildirim
Bu değer, verilen yüzde bir kez süper blok oluşumunu sınırlamak için kullanılır.
yürütülen talimatları kapsar. Bu, gereksiz kod boyutu genişletmesini sınırlar.

The izleyici-dinamik-kapsam-geribildirim yalnızca profil geri bildirimi olduğunda kullanılır
mevcut. Gerçek profiller (statik olarak tahmin edilenlerin aksine) çok
eşiğin daha büyük bir değer olmasına izin vererek daha az dengeli.

izleyici-maks-kod-büyümesi
Kod büyümesi verilen yüzdeye ulaştığında kuyruk çoğaltmasını durdurun. Bu
daha ziyade hokey argümanı, çünkü kopyaların çoğu daha sonra çapraz olarak ortadan kaldırılacaktır.
atlama, bu nedenle istenen kod büyümesinden çok daha yüksek değerlere ayarlanabilir.

izleyici-min-dal oranı
En iyi kenarın ters olasılığı bundan daha az olduğunda ters büyümeyi durdurun
eşik (yüzde olarak).

izleyici-min-dal oranı
izleyici-min-dal-oran-geribildirim
En iyi kenarın olasılığı bundan daha düşükse ileriye doğru büyümeyi durdurun
eşik.

Benzer şekilde izleyici-dinamik-kapsam iki değer mevcut, biri derleme için
profil geri bildirimi için ve bir tane olmadan derleme için. Derleme değeri
yapmak için profil geri bildiriminin daha muhafazakar (daha yüksek) olması gerekir.
iz etkili.

max-cse-path-uzunluğu
Cse'nin dikkate aldığı yol üzerindeki maksimum temel blok sayısı. Varsayılan 10'dur.

max-cse-insns
Yıkamadan önce maksimum talimat CSE işlemi. Varsayılan 1000'dir.

ggc-min-genişlet
GCC, kendi bellek ayırmasını yönetmek için bir çöp toplayıcı kullanır. Bu parametre
çöp toplayıcının yığınının olması gereken minimum yüzdeyi belirtir
koleksiyonlar arasında genişlemeye izin verilir. Bunu ayarlamak derleme hızını artırabilir;
kod üretimi üzerinde hiçbir etkisi yoktur.

Varsayılan, %30 + %70 * (RAM/1GB) şeklindedir ve RAM >= 100GB olduğunda üst sınır %1'dür.
"Getrlimit" mevcutsa, "RAM" kavramı gerçek RAM'in en küçüğüdür ve
"RLIMIT_DATA" veya "RLIMIT_AS". GCC, belirli bir bilgisayarda RAM'i hesaplayamıyorsa
platformda %30'luk alt sınır kullanılır. Bu parametrenin ayarlanması ve GGC-Din-
yığın boyutu sıfıra, her fırsatta tam bir koleksiyonun gerçekleşmesine neden olur. Bu
son derece yavaştır, ancak hata ayıklama için yararlı olabilir.

ggc-min-yığın boyutu
Toplama zahmetine başlamadan önce çöp toplayıcı yığınının minimum boyutu
çöp. İlk toplama, yığın genişledikten sonra gerçekleşir. ggc-min-genişlet%
Ötesinde ggc-min-yığın boyutu. Yine, bunu ayarlamak derleme hızını artırabilir ve
kod üretimi üzerinde hiçbir etkisi yoktur.

Varsayılan, RAM/8, RLIMIT_RSS'den daha küçük olan veya bunu sağlamaya çalışan bir sınırdır.
RLIMIT_DATA veya RLIMIT_AS aşılmadığı, ancak 4096 alt sınırı ile
(dört megabayt) ve 131072 (128 megabayt) üst sınırı. GCC mümkün değilse
Belirli bir platformda RAM'i hesaplamak için alt sınır kullanılır. Bunu ayarlamak
parametre çok büyük çöp toplamayı etkin bir şekilde devre dışı bırakır. Bunu ayarlamak
parametre ve ggc-min-genişlet sıfıra, her seferinde tam bir koleksiyonun gerçekleşmesine neden olur
fırsat.

max-reload-arama-insns
Maksimum talimat yeniden yükleme sayısı, eşdeğer için geriye bakmalıdır
Kayıt ol. Artan değerler, daha agresif optimizasyon anlamına gelir;
derleme süresi, muhtemelen biraz daha iyi performansla artar. Varsayılan
değer 100'dir.

max-cselib-bellek-konumları
Cselib'in maksimum bellek konumu sayısı dikkate alınmalıdır.
Artan değerler daha agresif optimizasyon anlamına gelir, bu da derleme süresini uzatır
muhtemelen biraz daha iyi performansla artırın. Varsayılan değer 500'dür.

yeniden sırala-blokları-çoğalt
yeniden sırala-bloklar-yinelenen-geribildirim
Koşulsuz dalın kullanılıp kullanılmayacağına karar vermek için temel blok yeniden sıralama geçişi tarafından kullanılır
veya kodu hedefinde çoğaltın. Tahmin edildiğinde kod çoğaltılır
boyut, koşulsuz tahmini boyutuyla çarpılan bu değerden daha küçüktür.
programın sıcak noktalarına atlayın.

The yeniden sırala-blok-yinelenen-geribildirim yalnızca profil geri bildirimi olduğunda kullanılır
kullanılabilir ve daha yüksek değerlere ayarlanabilir yeniden sırala-blok-çoğalt beri
sıcak noktalar hakkındaki bilgiler daha doğrudur.

max-planlı-hazır-insns
Verilmeye hazır maksimum talimat sayısı, zamanlayıcı
ilk zamanlama geçişi sırasında herhangi bir zamanda düşünün. Artan değerler
daha kapsamlı aramalar anlamına gelir, bu da derleme süresinin muhtemelen artmasını sağlar
az fayda. Varsayılan değer 100'dür.

max-sched-bölge-blokları
Bir bölgedeki bloklar arası için dikkate alınacak maksimum blok sayısı
zamanlama. Varsayılan değer 10'dur.

max-boru hattı-bölge blokları
Bir bölgedeki boru hattı için dikkate alınacak maksimum blok sayısı
seçici zamanlayıcı Varsayılan değer 15'tir.

maksimum programlı-bölge-insns
Interblock için dikkate alınacak bir bölgedeki maksimum insn sayısı
zamanlama. Varsayılan değer 100'dur.

max-boru hattı-bölge-insns
Bir bölgedeki ardışık düzen için dikkate alınacak maksimum insn sayısı
seçici zamanlayıcı Varsayılan değer 200'tir.

min-spec-prob
Bloklar arası için bir kaynak bloğa ulaşmanın minimum olasılığı (yüzde olarak)
spekülatif zamanlama. Varsayılan değer 40'tır.

maksimum zamanlanmış-genişletilmiş-bölgeler-yineleyiciler
Bölgeleri genişletmek için CFG aracılığıyla maksimum yineleme sayısı. 0 - devre dışı bırak
bölge uzantısı, N - en fazla N yineleme yapın. Varsayılan değer 0'dır.

max-schedule-insn-çakışma-gecikmesi
Spekülatif hareket için dikkate alınacak bir insn için maksimum çakışma gecikmesi.
Varsayılan değer 3'dır.

zamanlanmış-belirtilen-prob-kesintisi
Minimum spekülasyon başarısı olasılığı (yüzde olarak), böylece spekülatif
insn planlanacak. Varsayılan değer 40'tır.

sched-mem-true-dep-maliyet
Aynı belleği hedefleyen mağaza ve yük arasındaki minimum mesafe (CPU döngülerinde)
konumlar. Varsayılan değer 1'dir.

selsched-max-lookahead
Seçici planlamanın ileriye dönük penceresinin maksimum boyutu. bu bir derinlik
mevcut talimatları aramak için. Varsayılan değer 50'dir.

selsched-max-planlanmış-zamanlar
Seçmeli sırasında bir talimatın programlanacağı maksimum zaman sayısı
zamanlama. Bu, işlemin gerçekleştirildiği yineleme sayısındaki sınırdır.
talimat boru hattı olabilir. Varsayılan değer 2'dir.

yeniden adlandırmak için selsched-max-insns
Hazır listede dikkate alınan maksimum en iyi talimat sayısı
seçici zamanlayıcıda yeniden adlandırma. Varsayılan değer 2'dir.

sms-dk-sc
Swing modulo zamanlayıcısının üreteceği minimum aşama sayısı değeri. NS
varsayılan değer 2'tir.

maksimum-son-değer-rtl
Bir ifadede kaydedilebilen RTL sayısı olarak ölçülen maksimum boyut
o kaydın bilinen son değeri olarak bir sözde kayıt için birleştiricide. NS
varsayılan 10000'tür.

tamsayı-pay-limit
Küçük tamsayı sabitleri, paylaşılan bir veri yapısı kullanabilir ve derleyicinin
bellek kullanımı ve hızını artırma. Bu, paylaşılan bir dosyanın maksimum değerini ayarlar.
tamsayı sabiti. Varsayılan değer 256'dır.

min-sanal-eşlemeler
Artımlı SSA güncelleyicide minimum sanal eşleme sayısını belirtir
tarafından tanımlanan sanal eşleme buluşsal yöntemini tetiklemek için kaydedilmelidir.
sanal eşleme oranı. Varsayılan değer 100'dür.

sanal eşleme oranı
Sanal eşleme sayısı, sanal eşleme oranı sayıdan büyükse
güncellenecek sanal sembol sayısı, ardından artımlı SSA güncelleyici bir
bu semboller için tam güncelleme. Varsayılan oran 3'tür.

ssp-tampon boyutu
Yığın parçalanmasını alacak minimum arabellek boyutu (yani diziler)
koruma ne zaman -fstack koruması kullanıldı.

Ubuntu 10.10'dan önceki bu varsayılan "8" idi. Şu anda, artırmak için "4"
yığın koruyucusu tarafından korunan işlevlerin sayısı.

max-atlama-iplik-çoğaltma-stmts
Ne zaman çoğaltılması gereken bir blokta izin verilen maksimum ifade sayısı
iplik atlamaları.

maksimum-alan-için-alan-duyarlı
Alana duyarlı bir şekilde ele alacağımız bir yapıdaki maksimum alan sayısı
işaretçi analizi sırasında. Varsayılan -O0 için sıfır, -O1 ve -Os için 100'dür,
-O2 ve -O3.

önceden getirme gecikmesi
Ön getirmeden önce yürütülen ortalama talimat sayısı hakkında tahmin
bitirir. Önceden getirdiğimiz mesafe bu sabitle orantılıdır.
Bu sayının arttırılması, daha az akışın önceden getirilmesine de yol açabilir (bkz.
eşzamanlı-önceden getirmeler).

eşzamanlı-önceden getirmeler
Aynı anda çalıştırılabilen maksimum ön getirme sayısı.

l1-önbellek-satır boyutu
L1 önbelleğindeki önbellek satırının bayt cinsinden boyutu.

l1-önbellek boyutu
Kilobayt cinsinden L1 önbelleğinin boyutu.

l2-önbellek boyutu
Kilobayt cinsinden L2 önbelleğinin boyutu.

min-insn-to-prefetch-oran
Talimat sayısı ile önceden getirme sayısı arasındaki minimum oran
bir döngüde önceden getirmeyi etkinleştirmek için.

önceden getirme-min-insn-mem-oranı
Komut sayısı ile bellek sayısı arasındaki minimum oran
bir döngüde önceden getirmeyi etkinleştirmek için referanslar.

kullanım-kanonik-türler
Derleyicinin "kurallı" tip sistemi kullanması gerekip gerekmediği. Varsayılan olarak, bu
karşılaştırma için daha verimli bir iç mekanizma kullanan her zaman 1 olmalıdır.
C++ ve Objective-C++ türleri. Ancak, kurallı tip sistemdeki hatalar
derleme hatalarına neden oluyorsa, kurallı türleri devre dışı bırakmak için bu değeri 0'a ayarlayın.

anahtar-dönüşüm-maks-dal oranı
Anahtar başlatma dönüşümü, şundan daha büyük diziler oluşturmayı reddeder:
anahtar-dönüşüm-maks-dal oranı anahtardaki dal sayısı ile çarpılır.

max-kısmi-anti-uzunluk
Ağaç kısmi sırasında hesaplanan kısmi antik kümenin maksimum uzunluğu
artıklık giderme optimizasyonu (-ftree-ön) optimizasyon yaparken -O3 ve yukarıda.
Bazı kaynak kodu türleri için gelişmiş kısmi fazlalık ortadan kaldırılması
optimizasyon, ana bilgisayarda bulunan tüm belleği tüketerek kaçabilir
makine. Bu parametre, hesaplanan kümelerin uzunluğuna bir sınır koyar,
hangi kaçak davranışı engeller. Bu parametre için 0 değerinin ayarlanması
sınırsız bir set uzunluğuna izin verin.

sccvn-max-scc-boyutu
SCCVN işleme sırasında güçlü bir şekilde bağlı bileşenin (SCC) maksimum boyutu. Eğer
bu sınıra ulaşıldığında, tüm fonksiyon için SCCVN işlemi yapılmayacak ve
buna bağlı olarak optimizasyonlar devre dışı bırakılacaktır. Varsayılan maksimum SCC boyutu
10000

ira-max-döngüler-num
IRA, varsayılan olarak bölgesel kayıt tahsisini kullanır. Bir işlev daha fazlasını içeriyorsa
bu parametre tarafından verilen sayıdan daha fazla döngü, yalnızca en fazla verilen sayıda
en sık yürütülen döngüler, bölgesel kayıt tahsisi için bölgeler oluşturur.
Parametrenin varsayılan değeri 100'dür.

ira-max-çatışma tablosu boyutu
IRA, çakışma tablosunu sıkıştırmak için karmaşık bir algoritma kullansa da,
tablo hala büyük işlevler için aşırı miktarda bellek gerektirebilir. Eğer
bir işlev için çakışma tablosu, bununla verilen MB cinsinden boyuttan daha fazla olabilir
parametre, kayıt ayırıcı bunun yerine daha hızlı, daha basit ve daha düşük
sözde kayıt çakışma tablosu oluşturmayı gerektirmeyen kalite algoritması.
Parametrenin varsayılan değeri 2000'dür.

ira-döngüsü-ayrılmış kayıtlar
IRA, kararlar için döngülerdeki daha doğru kayıt basıncını değerlendirmek için kullanılabilir
döngü değişmezlerini taşımak için (bkz. -O3). için ayrılmış mevcut kayıt sayısı
bu parametre tarafından başka amaçlar verilir. Varsayılan değer
parametresi 2'dir ve tipik olarak ihtiyaç duyulan minimum kayıt sayısıdır.
Talimatlar. Bu değer, sayısız deneyden elde edilen en iyi değerdir.

döngü-değişmez-max-bbs-in-loop
Döngü değişmez hareketi hem derleme zamanında hem de zaman açısından çok pahalı olabilir.
çok büyük döngülerle gerekli derleme zamanı belleği miktarı. Daha fazlası ile döngüler
bu parametreden daha temel bloklar, döngü değişmez hareket optimizasyonuna sahip olmayacak
üzerlerinde gerçekleştirilmiştir. Parametrenin varsayılan değeri -O1000 ve 1 için 10000'dir.
-O2 ve üstü için.

veritabanları için loop-max-dataref'ler
Veri bağımlılıkları oluşturmak çok büyük döngüler için pahalıdır. Bu parametre
veriler için düşünülen döngülerdeki veri referanslarının sayısını sınırlar
bağımlılık analizi. Bu büyük döngüler daha sonra kullanıcı tarafından ele alınmayacaktır.
döngü veri bağımlılıklarını kullanan optimizasyonlar. Varsayılan değer 1000'dir.

max-vartrack-size
Değişken izleme veri akışı sırasında kullanılacak maksimum karma tablo yuvası sayısını ayarlar
Herhangi bir fonksiyonun analizi. Bu limit, değişken izleme ile aşılırsa
atamalar etkinleştirildi, bu işlev için analiz onsuz yeniden denendi, sonra
tüm hata ayıklama insn'lerini işlevden kaldırma. Sınırsız bile aşılırsa
hata ayıklama insns, var izleme analizi, işlev için tamamen devre dışı bırakılır.
Parametreyi sıfıra ayarlamak onu sınırsız hale getirir.

max-vartrack-ifade-derinliği
Değişken adlarını eşlemeye çalışırken maksimum sayıda yineleme düzeyi ayarlar veya
ifadelere değer vermek için geçicilerin hatalarını ayıklayın. Bu, derleme süresini daha fazlası için takas eder
hata ayıklama bilgilerini tamamlayın. Bu çok düşük ayarlanırsa, değer ifadeleri
kullanılabilir ve hata ayıklama bilgilerinde gösterilebilir, sonunda kullanılmayabilir;
bunu daha yükseğe ayarlamak, derleyicinin daha karmaşık hata ayıklama bulmasını sağlayabilir
ifadeler, ancak derleme süresi ve bellek kullanımı artabilir. Varsayılan değer 12'dir.

min-nodebug-insn-uid
Hata ayıklamayan insns için bu parametreden başlayan kullanıcı kimliklerini kullanın. Aşağıdaki aralık
parametre, yalnızca tarafından oluşturulan hata ayıklama insn'leri için ayrılmıştır.
-fvar-izleme-atamaları, ancak hata ayıklama insn'leri yukarıda (örtüşmeyen) kullanıcı kimlikleri alabilir
ayrılmış aralık tükendiyse.

ipa-sra-ptr-büyüme faktörü
IPA-SRA, bir veya daha fazla yeni parametre ile bir kümeye yönelik bir işaretçiyi değiştirecektir
yalnızca kümülatif boyutları şuna eşit veya daha az olduğunda ipa-sra-ptr-büyüme faktörü
orijinal işaretçi parametresinin boyutunun katıdır.

tm-max-toplam boyutu
Bir işlemde iş parçacığı yerel değişkenlerinin kopyalarını yaparken, bu parametre
sonra değişkenlerin günlüğe kaydetme ile kaydedileceği bayt cinsinden boyutu belirtir
kod dizisi çiftlerini kaydetmek/geri yüklemek yerine işlev görür. Bu seçenek yalnızca
kullanırken geçerlidir -fgnu-tm.

grafit-max-nb-scop-params
Grafit döngü dönüşümlerinde üstel etkilerden kaçınmak için,
Statik Kontrol Bölümündeki (SCoP) parametreler sınırlandırılır. Varsayılan değer 10'dur
parametreler. Derleme zamanında değeri bilinmeyen ve tanımlanmış bir değişken
SCoP dışında, SCoP'un bir parametresidir.

grafit-max-bbs-per-fonksiyon
SCoP'lerin tespitinde üstel etkilerden kaçınmak için fonksiyonların boyutu
Grafit tarafından analiz edilen sınırlıdır. Varsayılan değer 100 temel bloktur.

döngü-blok-kiremit boyutu
ile etkinleştirilen döngü engelleme veya şerit madenciliği dönüşümleri -floop-blok or
-floop-şerit-mayın, döngü yuvasındaki her döngüyü belirli bir sayıda çıkarın
yinelemeler. Şerit uzunluğu kullanılarak değiştirilebilir döngü-blok-kiremit boyutu
parametre. Varsayılan değer 51 yinelemedir.

ipa-cp-değer-liste-boyutu
IPA-CP, bir işlevin işlevlerine iletilen tüm olası değerleri ve türleri izlemeye çalışır.
bunları yaymak ve sanallaştırmayı gerçekleştirmek için parametre. ipa-cp-değeri-
liste boyutu bir biçimsel başına depoladığı maksimum değer ve tür sayısıdır.
bir fonksiyonun parametresi.

lto bölümleri
WHOPR derlemesi sırasında üretilen istenen bölüm sayısını belirtin. NS
bölüm sayısı, derleme için kullanılan CPU sayısını geçmelidir. NS
varsayılan değer 32'tir.

lto-min bölümü
WHOPR için minimum bölümün boyutu (tahmini talimatlarda). Bu engeller
çok küçük programları çok fazla bölüme ayırma masrafları.

tanı-yardım için cxx-max-ad-alanları
C++ ad araması sırasında öneriler için danışılacak maksimum ad alanı sayısı
bir tanımlayıcı için başarısız olur. Varsayılan 1000'dir.

lavabo-frekans-eşik
Hedef bloğun maksimum göreli yürütme frekansı (yüzde olarak)
bir ifadenin batmasına izin vermek için bir ifadenin orijinal bloğuna göre
Beyan. Daha büyük sayılar daha agresif ifade batmasına neden olur. NS
varsayılan değer 75'tir. Aşağıdaki ifadeler için küçük bir pozitif düzeltme uygulanır.
bellek işlenenleri daha da karlı olduğu için batar.

max-store-to-lavabo
Batırılabilecek maksimum koşullu mağaza çifti sayısı. 0 olarak ayarlayın
ya vektörleştirme (-ftree-vektörize) veya if-dönüşüm (-ftree-loop-if-dönüştürme)
devre dışı. Varsayılan 2'dir.

izin-yükleme-veri yarışları
Optimize edicilerin yüklerde yeni veri yarışları başlatmasına izin verin. İzin vermek için 1'e ayarlayın,
aksi takdirde 0'a. Bu seçenek varsayılan olarak etkindir.
-fbellek-modeli= seçeneği.

veri depola-yarışlarına izin ver
Optimize edicilerin mağazalarda yeni veri yarışları başlatmasına izin verin. İzin vermek için 1'e ayarlayın,
aksi takdirde 0'a. Bu seçenek varsayılan olarak etkindir.
-fbellek-modeli= seçeneği.

izin-paketlenmiş-yük-veri yarışları
Optimize edicilerin paketlenmiş veri yüklerinde yeni veri yarışları başlatmasına izin verin. 1'e ayarla
izin ver, aksi takdirde 0'a. Bu seçenek, tarafından dolaylı olarak ayarlanmadıkça varsayılan olarak etkindir.
the -fbellek-modeli= seçeneği.

izin-paketlenmiş-depo-veri yarışları
Optimize edicilerin paketlenmiş veri depolarında yeni veri yarışları başlatmasına izin verin. 1'e ayarla
izin ver, aksi takdirde 0'a. Bu seçenek, tarafından dolaylı olarak ayarlanmadıkça varsayılan olarak etkindir.
the -fbellek-modeli= seçeneği.

vaka-değerleri-eşik
Bir atlama tablosu kullanmanın en iyi olduğu farklı değerlerin en küçük sayısı
koşullu dallardan oluşan bir ağaç yerine. Değer 0 ise, varsayılanı kullanın
makine. Varsayılan 0'dır.

ağaç-reassoc-width
Yeniden ilişkilendirilmiş ağaçta paralel olarak yürütülen komutların maksimum sayısını ayarlayın.
Bu parametre, varsayılan olarak kullanılan hedefe bağlı buluşsal yöntemleri geçersiz kılar.
sıfır değer.

Opsiyonlar Denetleme the Preprocessor
Bu seçenekler, her bir C kaynak dosyasında gerçek sürümden önce çalıştırılan C önişlemcisini kontrol eder.
derleme.

Eğer kullanıyorsanız -E seçeneği, ön işleme dışında hiçbir şey yapılmaz. Bu seçeneklerden bazıları
sadece birlikte anlamlı -E çünkü önişlemci çıktısının
gerçek derleme için uygun değil.

-Wp,seçenek
Sen kullanabilirsiniz -Wp,seçenek derleyici sürücüsünü atlamak ve geçmek için seçenek doğrudan
önişlemciye. Eğer seçenek virgül içerir, birden çok seçeneğe bölünmüştür.
virgüller. Bununla birlikte, birçok seçenek değiştirilebilir, tercüme edilebilir veya yorumlanabilir.
önişlemciye geçmeden önce derleyici sürücüsü ve -wp zorla atlatır
bu aşama. Önişlemcinin doğrudan arabirimi belgelenmemiş ve
değiştirin, bu nedenle mümkün olduğunda kullanmaktan kaçınmalısınız. -wp ve sürücünün halletmesine izin verin
bunun yerine seçenekler.

-X önişlemci seçenek
Geçiş seçenek önişlemci için bir seçenek olarak. Bunu sistemi beslemek için kullanabilirsiniz-
GCC'nin nasıl tanıyacağını bilmediği belirli önişlemci seçenekleri.

Argüman alan bir seçeneği iletmek istiyorsanız, kullanmanız gerekir. -X önişlemci
iki kez, bir kez seçenek için ve bir kez de argüman için.

-D isim
önceden tanımla isim tanım 1 ile bir makro olarak.

-D isim=tanım
İçeriği tanım sırasında göründükleri gibi belirtilmiş ve işlenmiştir.
çeviri aşaması üç #tanımlamak direktif. Özellikle, tanım şu şekilde olacaktır:
gömülü yeni satır karakterleri tarafından kesildi.

Önişlemciyi bir kabuktan veya kabuk benzeri bir programdan çağırıyorsanız, ihtiyacınız olabilir.
boşluklar gibi karakterleri korumak için kabuğun alıntı sözdizimini kullanmak için
kabuk sözdiziminde anlam.

Komut satırında fonksiyon benzeri bir makro tanımlamak istiyorsanız, argümanını yazın.
(varsa) eşittir işaretinden önce parantez içinde listeleyin. parantezler
çoğu kabuk için anlamlıdır, bu nedenle seçeneği alıntılamanız gerekir. İle birlikte sh ve csh,
-NS'isim(argümanlar...)=tanım' çalışır.

-D ve -U seçenekler komut satırında verildikleri sırayla işlenir. Tüm
-ikrolar dosya ve -Dahil etmek dosya sonuçta seçenekler işleniyor -D ve -U seçenekleri.

-U isim
Herhangi bir önceki tanımını iptal et isim, yerleşik veya bir ile sağlanan -D seçeneği.

-undef
Herhangi bir sisteme özel veya GCC'ye özgü makroları önceden tanımlamayın. Standart önceden tanımlanmış
makrolar tanımlı kalır.

-I dir
dizini ekle dir başlık dosyaları için aranacak dizinler listesine.
tarafından adlandırılan dizinler -I standart sistem dizinleri içermeden önce aranır.
eğer dizin dir standart bir sistem dizin içerir, seçenek yoksayılır
sistem dizinleri için varsayılan arama sırasının ve özel muamelenin
sistem üstbilgileri yenilmez. Eğer dir "=" ile başlar, ardından "=" olur
sysroot öneki ile değiştirildi; görmek --sistem kökü ve -isysroot.

-o dosya
çıktıyı şuraya yaz: dosya. Bu belirtmekle aynı dosya ikinci seçenek olmayan olarak
argüman cpp. gcc ikinci bir seçenek olmayan argümanın farklı bir yorumuna sahiptir,
bu yüzden kullanmalısın -o çıktı dosyasını belirtmek için.

-Duvar
Normal kod için istenen tüm isteğe bağlı uyarıları açar. şu anda bu
is -Wyorum, -Wtrigraflar, -Wmultichar ve bir tamsayı promosyonu hakkında bir uyarı
"#if" ifadelerinde işaret değişikliği. Önişlemcinin uyarılarının çoğunun
varsayılan olarak açıktır ve bunları kontrol etme seçeneği yoktur.

-Wyorum
-Yorumlar
Yorum başlatma dizisi olduğunda uyar /* bir /* yorum yapın veya ne zaman bir
ters eğik çizgi-yeni satır görünür // Yorum. (Her iki form da aynı etkiye sahiptir.)

-Wtrigraflar
Yorumlardaki çoğu trigraf programın anlamını etkileyemez. Ancak, bir
kaçan bir yeni satır oluşturacak trigraf (??/ bir satırın sonunda)
yorumun başladığı veya bittiği yeri değiştirme. Bu nedenle, yalnızca oluşturulacak trigraflar
kaçan yeni satırlar, bir yorumun içinde uyarılar üretir.

Bu seçenek şu şekilde ima edilir: -Duvar. Eğer -Duvar verilmedi, bu seçenek hala etkin
trigraflar etkinleştirilmedikçe. Uyarılar olmadan trigraf dönüşümü elde etmek için, ancak
öteki -Duvar uyarılar, kullanım -trigraflar -Duvar -Wno-trigraflar.

-Geleneksel
Geleneksel ve ISO C'de farklı davranan belirli yapılar hakkında uyarın.
geleneksel C eşdeğeri olmayan ve sorunlu olan ISO C yapıları hakkında uyarın
kaçınılması gereken yapılardır.

-Wundef
Bir dosyada makro olmayan bir tanımlayıcı ile karşılaşıldığında uyar. #Eğer , direktif
dışında tanımlı. Bu tür tanımlayıcılar sıfır ile değiştirilir.

-Wunused-makrolar
Kullanılmayan ana dosyada tanımlanan makrolar hakkında uyarın. bir makro Kullanılmış Eğer öyleyse
en az bir kez genişletildi veya varlığı test edildi. Önişlemci ayrıca şu durumlarda uyarı verir:
makro, yeniden tanımlandığı veya tanımlanmadığı sırada kullanılmamıştır.

Yerleşik makrolar, komut satırında tanımlanan makrolar ve içerme öğesinde tanımlanan makrolar
dosyalar hakkında uyarı yapılmaz.

Not: Bir makro gerçekten kullanılıyorsa, ancak yalnızca atlanan koşullu bloklarda kullanılıyorsa, o zaman
CPP bunu kullanılmamış olarak bildirecektir. Böyle bir durumda uyarıdan kaçınmak için,
makronun tanımının kapsamı, örneğin onu ilk atlanana taşıyarak
engellemek. Alternatif olarak, aşağıdaki gibi bir yapay kullanım sağlayabilirsiniz:

#if tanımlı the_macro_causing_the_warning
#endif

-Wendif-etiketleri
ne zaman uyarsa #else ya da #endif metin takip eder. Bu genellikle olur
formun kodu

#eğer FOO
...
#else FOO
...
#endif FOO

İkinci ve üçüncü "FOO" yorumlarda olmalıdır, ancak genellikle eski programlarda değildir.
Bu uyarı varsayılan olarak açıktır.

-Whata
Tüm uyarıları zor hatalara dönüştürün. Uyarıları tetikleyen kaynak kodu
reddedildi.

-Wsystem-başlıkları
Sistem başlıklarında kod için uyarılar yayınlayın. Bunlar normalde bulmakta yardımcı olmazlar.
kendi kodunuzdaki hatalar, bu nedenle bastırılır. Sistemden siz sorumluysanız
kütüphane, onları görmek isteyebilirsiniz.

-w GNU CPP'nin varsayılan olarak verdiği uyarılar da dahil olmak üzere tüm uyarıları bastırın.

- bilgiçlik
C standardında listelenen tüm zorunlu teşhisleri yayınlayın. Bazıları kaldı
zararsız kodda sık sık tetikledikleri için varsayılan olarak.

-pedantik-hatalar
Tüm zorunlu tanılamaları yayınlayın ve tüm zorunlu tanılamaları hatalara dönüştürün.
Bu, GCC'nin yayınlamadığı zorunlu teşhisleri içerir. - bilgiçlik ama davranır
uyarılar.

-M Ön işlemenin sonucunu çıkarmak yerine, aşağıdakilere uygun bir kural çıktısı alın: yapmak
ana kaynak dosyanın bağımlılıklarını açıklayan. Önişlemci bir çıktı verir
yapmak o kaynak dosya için nesne dosya adını, iki nokta üst üste ve adları içeren kural
gelenler de dahil olmak üzere dahil edilen tüm dosyaların -Dahil etmek or -ikrolar komuta
satır seçenekleri.

Açıkça belirtilmedikçe (ile -MT or -MQ), nesne dosya adı şunlardan oluşur:
nesne dosya soneki ile değiştirilen herhangi bir sonek ve herhangi bir son ek ile kaynak dosyanın adı
önde gelen dizin parçaları kaldırıldı. Dahil edilen çok sayıda dosya varsa, kural şudur:
kullanarak birkaç satıra bölün \-Yeni hat. Kuralın komutları yoktur.

Bu seçenek, önişlemcinin aşağıdaki gibi hata ayıklama çıktısını bastırmaz. -dM. Kaçınmak
bu tür hata ayıklama çıktılarını bağımlılık kurallarıyla karıştırmak, açıkça belirtmeniz gereken
bağımlılık çıktı dosyası ile -MFveya gibi bir ortam değişkeni kullanın
DEPENDENCECIES_OUTPUT. Hata ayıklama çıktısı, normal çıktı akışına şu şekilde gönderilmeye devam edecek:
Normal.

Geçen -M sürücüye ima eder -E, ve örtük bir şekilde uyarıları bastırır -w.

-MM Facebok sayfasını beğenin : -M ancak sistem başlık dizinlerinde bulunan başlık dosyalarından bahsetmeyin,
ne de doğrudan veya dolaylı olarak böyle bir başlıktan dahil edilen başlık dosyaları.

Bu, açılı ayraç veya çift tırnak seçiminin bir #Dahil etmek
direktif kendi başına bu başlığın görünüp görünmeyeceğini belirlemez. -MM
bağımlılık çıktısı Bu, GCC 3.0 sürümlerinden anlambilimde küçük bir değişikliktir ve
daha erken.

-MF dosya
Ile kullanıldığında -M or -MM, bağımlılıkların yazılacağı dosyayı belirtir. Eğer hayırsa -MF
anahtar verildiğinde, önişlemci kuralları göndereceği yere gönderir.
önceden işlenmiş çıktı

Sürücü seçenekleriyle kullanıldığında -OS or -MMD, -MF varsayılan bağımlılığı geçersiz kılar
çıktı dosyası.

-MG gibi bir seçenekle birlikte -M bağımlılık oluşturma isteği, -MG varsayar
eksik başlık dosyaları oluşturulan dosyalardır ve bunları bağımlılık listesine ekler.
bir hata yükseltiyor. Bağımlılık dosya adı doğrudan "#include" öğesinden alınır
herhangi bir yol eklemeden yönerge. -MG ayrıca önceden işlenmiş çıktıyı bastırır.
eksik başlık dosyası bunu işe yaramaz hale getirir.

Bu özellik, makefile'lerin otomatik olarak güncellenmesinde kullanılır.

-MP Bu seçenek, CPP'ye aşağıdakiler dışındaki her bağımlılık için sahte bir hedef eklemesini söyler.
ana dosya, her birinin hiçbir şeye bağlı olmamasına neden olur. Bu kukla kurallar hatalara karşı çalışır
yapmak üstbilgi dosyalarını güncellemeden kaldırırsanız verir Makefile eşleştirmek.

Bu tipik çıktıdır:

test.o: test.c test.h

test.h:

-MT hedef
Bağımlılık oluşturma tarafından yayılan kuralın hedefini değiştirin. Varsayılan olarak CPP
ana girdi dosyasının adı, herhangi bir dizin bileşenini ve herhangi bir dosya son ekini siler
gibi .c, ve platformun olağan nesne son ekini ekler. Sonuç hedeftir.

An -MT seçeneği, hedefi tam olarak belirttiğiniz dize olacak şekilde ayarlayacaktır. Eğer istersen
birden fazla hedef, bunları tek bir argüman olarak belirtebilirsiniz. -MTveya birden çok
-MT seçenekleri.

Örneğin, -MT '$(objpfx)foo.o' verebilir

$(objpfx)foo.o: foo.c

-MQ hedef
Aynısı -MT, ancak Make için özel olan herhangi bir karakterden alıntı yapar.
-MQ '$(objpfx)foo.o' verir

$$(objpfx)foo.o: foo.c

Varsayılan hedef, sanki birlikte verilmiş gibi otomatik olarak alıntılanır. -MQ.

-OS -OS eşdeğerdir -M -MF dosyabunun dışında -E ima edilmez. Sürücü
belirleyen dosya olup olmadığına bağlı olarak -o seçenek verilir. Eğer öyleyse, sürücü kendi
argüman ama bir sonek ile .d, aksi takdirde girdi dosyasının adını alır,
tüm dizin bileşenlerini ve son eki kaldırır ve bir .d soneki.

If -OS ile birlikte kullanılır -E, hiç -o anahtarı belirtmek için anlaşılır
bağımlılık çıktı dosyası, ancak kullanılmadan kullanılırsa -Eher biri -o belirtmek için anlaşılır
hedef nesne dosyası.

Dan beri -E ima edilmez, -OS olarak bir bağımlılık çıktı dosyası oluşturmak için kullanılabilir
derleme işleminin yan etkisi.

-MMD
Facebok sayfasını beğenin : -OS sistem başlık dosyalarından değil, yalnızca kullanıcı başlık dosyalarından bahsetmek dışında.

-fpch-deps
Önceden derlenmiş başlıklar kullanıldığında, bu bayrak, bağımlılık çıktı bayraklarının
ayrıca önceden derlenmiş başlığın bağımlılıklarından dosyaları listeler. Yalnızca belirtilmemişse
önceden derlenmiş başlık listelenir ve onu oluşturmak için kullanılan dosyalar değil
çünkü önceden derlenmiş bir başlık kullanıldığında bu dosyalara başvurulmaz.

-fpch-önişlem
Bu seçenek, önceden derlenmiş bir başlığın birlikte kullanılmasına izin verir. -E. Özel bir ekler
"#pragma", "#pragma GCC pch_preprocess "dosya adı"" yeri işaretlemek için çıktıda
önceden derlenmiş başlığın bulunduğu yer ve Dosya. Ne zaman -fönceden işlenmiş olduğu
GCC bu "#pragma"yı tanır ve PCH'yi yükler.

Bu seçenek varsayılan olarak kapalıdır, çünkü elde edilen önceden işlenmiş çıktı yalnızca
GCC'ye girdi olarak gerçekten uygun. tarafından açılır -kaydet-temps.

Bu "#pragma"yı kendi kodunuza yazmamalısınız, ancak kodu düzenlemek güvenlidir.
PCH dosyası farklı bir konumda mevcutsa dosya adı. dosya adı olabilir
mutlak veya GCC'nin geçerli dizinine göre olabilir.

-x c
-x c ++
-x amaç-c
-x cpp ile montajcı
Kaynak dili belirtin: C, C++, Objective-C veya Assembly. Bunun alakası yok
standartlara uygunluk veya uzantılar ile; yalnızca hangi temel sözdiziminin kullanılacağını seçer
beklemek. Bu seçeneklerden hiçbirini vermezseniz, cpp dili
kaynak dosyanın uzantısı: .c, . Cc, .mya da .S. için diğer bazı yaygın uzantılar
C++ ve derleme de tanınır. cpp uzantıyı tanımıyorsa,
dosyayı C olarak ele alacak; bu en genel moddur.

Not: cpp'nin önceki sürümleri bir -dil her ikisini de seçen seçenek
dil ve standartlara uygunluk düzeyi. Bu seçenek kaldırıldı, çünkü
ile çelişiyor -l seçeneği.

-std=standart
-ansi
Kodun uyması gereken standardı belirtin. Şu anda CPP, C'yi biliyor
ve C++ standartları; diğerleri gelecekte eklenebilir.

standart şunlardan biri olabilir:

"c90"
"c89"
"iso9899: 1990"
1990'dan itibaren ISO C standardı. c90 bu sürümü için alışılmış kısayol
standart.

The -ansi seçenek eşdeğerdir -std = c90.

"iso9899: 199409"
1990 yılında değiştirilen 1994 C standardı.

"iso9899: 1999"
"c99"
"iso9899:199x"
"c9x"
Aralık 1999'da yayınlanan revize edilmiş ISO C standardı. Yayınlanmadan önce bu
C9X olarak biliniyordu.

"iso9899: 2011"
"c11"
"c1x"
Aralık 2011'da yayınlanan revize edilmiş ISO C standardı. Yayınlanmadan önce bu
C1X olarak biliniyordu.

"gnu90"
"gnu89"
1990 C standardı artı GNU uzantıları. Bu varsayılandır.

"gnu99"
"gnu9x"
1999 C standardı artı GNU uzantıları.

"gnu11"
"gnu1x"
2011 C standardı artı GNU uzantıları.

"c++98"
1998 ISO C++ standardı artı değişiklikler.

"gnu++98"
Aynı -std=c++98 artı GNU uzantıları. Bu, C++ kodu için varsayılandır.

-BEN- Dahil etme yolunu bölün. ile belirtilen herhangi bir dizin -I önce seçenekler -BEN- vardır
yalnızca "#include" ile istenen başlıklar arandıdosya""; onlar aranmaz
"#Dahil etmekdosya>". Ek dizinler ile belirtilirse -I seçeneklerinden sonra
-BEN-, bu dizinler herkes için aranır #Dahil etmek direktifler.

Ek olarak, -BEN- geçerli dosya dizininin dizininin kullanımını şu şekilde engeller:
"#include" için ilk arama dizinidosya"". Bu seçenek kullanımdan kaldırıldı.

-nostdinc
Başlık dosyaları için standart sistem dizinlerini aramayın. Sadece dizinler
ile belirttiğiniz -I seçenekler (ve mevcut dosyanın dizini, eğer
uygun) aranır.

-nostdinc++
C++'a özgü standart dizinlerde başlık dosyalarını aramayın, ancak yine de
diğer standart dizinleri arayın. (Bu seçenek, C++'ı oluştururken kullanılır.
kütüphane.)

-Dahil etmek dosya
süreci dosya sanki "#include "file"" birincil kaynağın ilk satırı olarak görünüyor
dosya. Ancak, aranan ilk dizin dosya önişlemci çalışıyor mu
rehber yerine of ana kaynak dosyayı içeren dizin. Bulunmazsa
orada, "#include "..."" arama zincirinin geri kalanında şu şekilde aranır:
Normal.

Birden fazla ise -Dahil etmek seçenekler verildiğinde, dosyalar bulundukları sıraya göre dahil edilmiştir.
komut satırında görünür.

-ikrolar dosya
Tıpkı -Dahil etmek, tarama ile üretilen herhangi bir çıktı dışında dosya Atıldı
uzak. Tanımladığı makrolar tanımlı kalır. Bu, tüm makroları edinmenizi sağlar.
bildirimlerini de işlemeden bir başlıktan.

tarafından belirtilen tüm dosyalar -ikrolar tarafından belirtilen tüm dosyalardan önce işlenir -Dahil etmek.

-dirafter dir
Ara dir başlık dosyaları için, ancak yapın sonra ile belirtilen tüm dizinler -I ve
standart sistem dizinleri tükendi. dir içeren bir sistem olarak kabul edilir
dizin. Eğer dir "=" ile başlar, ardından "=" sysroot ile değiştirilir
önek; görmek --sistem kökü ve -isysroot.

-iprefix önek
Belirtmek önek sonrakiler için ön ek olarak -iwithprefix seçenekler. önek ise
bir dizini temsil ediyorsa, finali eklemelisiniz /.

-iwithprefix dir
-iön eki ile dir
eklemek dir ile daha önce belirtilen önek için -iprefix, ve sonucu ekleyin
dizini içerme arama yoluna. -iön eki ile aynı yere koyar -I
istemek; -iwithprefix nereye koyar -dirafter olur.

-isysroot dir
Bu seçenek, tıpkı --sistem kökü seçeneği, ancak yalnızca başlık dosyaları için geçerlidir (hariç
Darwin, hem başlık dosyaları hem de kitaplıklar için geçerli olduğu hedefler). Bkz.
--sistem kökü Daha fazla bilgi için seçenek.

-imultilib dir
kullanım dir hedefe özel C++ başlıklarını içeren dizinin bir alt dizini olarak.

-isistem dir
Ara dir tarafından belirtilen tüm dizinlerden sonra başlık dosyaları için -I ama önce
standart sistem dizinleri. Bir sistem dizini olarak işaretleyin, böylece aynı olsun
standart sistem dizinlerine uygulandığı gibi özel işlem. Eğer dir başlıyor
"=" ile, "=" sysroot öneki ile değiştirilecektir; görmek --sistem kökü ve
-isysroot.

-Alıntı yaparım dir
Ara dir yalnızca "#include" ile istenen başlık dosyaları içindosya""; onlar değil
"#includedosya>", tarafından belirtilen tüm dizinlerden önce -I ve önce
standart sistem dizinleri. Eğer dir "=" ile başlar, ardından "=" ile değiştirilir
sistem kökü öneki; görmek --sistem kökü ve -isysroot.

-yalnızca yönergeler
Ön işleme sırasında yönergeleri kullanın, ancak makroları genişletmeyin.

Seçeneğin davranışı şunlara bağlıdır: -E ve -fönceden işlenmiş seçenekleri.

İle -E, ön işleme, "#define" gibi yönergelerin işlenmesiyle sınırlıdır,
"#ifdef" ve "#hata". Makro genişletme gibi diğer önişlemci işlemleri ve
trigraf dönüşümü yapılmaz. ek olarak -dd seçenek dolaylı olarak
sağladı.

İle -fönceden işlenmiş, komut satırının ve çoğu yerleşik makronun ön tanımı
engelli. Bağlamsal olarak bağımlı olan "__LINE__" gibi makrolar işlenir
normalde. Bu, önceden "-E" ile önceden işlenmiş dosyaların derlenmesini sağlar.
-yalnızca yönergeler".

İkisi ile -E ve -fönceden işlenmiş, kurallar -fönceden işlenmiş öncelik almak. Bu
önceden "-E ile işlenmiş dosyaların tam ön işlenmesini sağlar
-yalnızca yönergeler".

-fdollar-in-tanımlayıcıları
Kabul et $ tanımlayıcılarda.

-genişletilmiş-tanımlayıcılar
Tanımlayıcılarda evrensel karakter adlarını kabul edin. Bu seçenek deneyseldir; içinde
GCC'nin gelecekteki sürümü, varsayılan olarak C99 ve C++ için etkinleştirilecektir.

-fönceden işlenmiş
Giriş dosyasının önceden işlendiğini ön işlemciye belirtin. Bu
makro genişletme, trigraf dönüştürme, kaçan yeni satır ekleme gibi şeyleri bastırır,
ve çoğu direktifin işlenmesi. Önişlemci hala tanır ve kaldırır
yorumlar, böylece önceden işlenmiş bir dosyayı iletebilirsiniz. -C derleyici olmadan
sorunlar. Bu modda, entegre önişlemci bir belirteç oluşturucudan biraz daha fazlasıdır.
ön uçlar için.

-fönceden işlenmiş girdi dosyası uzantılardan birine sahipse örtüktür .i, .ii or .mi.
Bunlar, GCC tarafından oluşturulan önceden işlenmiş dosyalar için kullandığı uzantılardır. -kaydet-temps.

-ftabstop=genişlik
Sekme durakları arasındaki mesafeyi ayarlayın. Bu, önişlemcinin doğru sütunu rapor etmesine yardımcı olur
satırda sekmeler görünse bile uyarı veya hatalardaki sayılar. değer daha az ise
1'den büyük veya 100'den büyükse, seçenek yoksayılır. Varsayılan 8'dir.

-fdebug-cpp
Bu seçenek yalnızca GCC hatalarını ayıklamak için kullanışlıdır. ile kullanıldığında -E, dökümleri hata ayıklama
konum haritaları hakkında bilgi. Çıktıdaki her belirteçten önce dökümü gelir.
konumunun ait olduğu harita. Bir jetonun konumunu tutan haritanın dökümü
olabilir:

{"P":F ;"F":F ;"L": ;"C": ;"S": ;"M": ;"E": ,"yer": }

olmadan kullanıldığında -E, bu seçeneğin hiçbir etkisi yoktur.

-ftrack-makro-genişletme[=seviye]
Makro genişletmelerde belirteçlerin konumlarını izleyin. Bu, derleyicinin yaymasına izin verir.
içinde bir derleme hatası oluştuğunda geçerli makro genişletme yığını hakkında tanılama
bir makro genişletme. Bu seçeneği kullanmak, önişlemciyi ve derleyiciyi tüketir.
daha fazla hafıza NS seviye parametre, belirtecin kesinlik düzeyini seçmek için kullanılabilir
konum izleme, böylece gerekirse bellek tüketimini azaltır. Değer 0 of
seviye yokmuş gibi bu seçeneği devre dışı bırakır. -ftrack-makro-genişletme üzerinde mevcuttu
komut satırı. Değer 1 için düşük bir modda belirteç konumlarını izler
minimum bellek yükü. Bu modda, bir sistemin genişletilmesinden kaynaklanan tüm jetonlar
işlev benzeri bir makronun argümanı aynı konuma sahiptir. Değer 2 iz jetonları
yerleri tamamen Bu değer en çok hafızaya aç olan değerdir. Bu seçenek verildiğinde
argüman yok, varsayılan parametre değeri 2.

-fexec-karakter seti=karakter kümesi
Dize ve karakter sabitleri için kullanılan yürütme karakter kümesini ayarlayın. Varsayılan
UTF-8'dir. karakter kümesi sistemin "iconv" kitaplığı tarafından desteklenen herhangi bir kodlama olabilir
rutin.

-fwide-exec-karakter kümesi=karakter kümesi
Geniş dize ve karakter sabitleri için kullanılan geniş yürütme karakter kümesini ayarlayın.
Varsayılan, "wchar_t" genişliğine karşılık gelen UTF-32 veya UTF-16'dır. Olarak
ile -fexec-karakter seti, karakter kümesi sistemin "iconv" tarafından desteklenen herhangi bir kodlama olabilir
kütüphane rutini; ancak, uymayan kodlamalarla ilgili sorunlarınız olacaktır.
tam olarak "wchar_t" içinde.

-finput-karakter seti=karakter kümesi
Giriş karakter kümesinden çeviri için kullanılan giriş karakter kümesini ayarlayın
GCC tarafından kullanılan kaynak karakter kümesine dosya. Yerel ayar belirtmiyorsa veya GCC
bu bilgiyi yerel ayardan alamaz, varsayılan UTF-8'dir. Bu olabilir
yerel ayar veya bu komut satırı seçeneği tarafından geçersiz kılınır. Şu anda komut
çakışma varsa line seçeneği önceliklidir. karakter kümesi herhangi bir kodlama olabilir
sistemin "iconv" kitaplığı rutini tarafından desteklenir.

-fworking-dizini
Derleyiciye izin verecek önişlemci çıktısında çizgi işaretleyicilerin oluşturulmasını etkinleştirin
ön işleme sırasında geçerli çalışma dizinini bilin. Bu seçenek ne zaman
etkinleştirildiğinde, önişlemci, ilk çizgi işaretçisinden sonra ikinci bir çizgi işaretçisi yayacaktır.
geçerli çalışma dizini ve ardından iki eğik çizgi ile. GCC bunu kullanacak
dizin, önceden işlenmiş girdide mevcut olduğunda, dizin olarak
bazı hata ayıklama bilgi biçimlerinde geçerli çalışma dizini. Bu seçenek
hata ayıklama bilgisi etkinleştirilirse dolaylı olarak etkinleştirilir, ancak bu şu şekilde engellenebilir:
reddedilen form -fno-çalışma-dizini. Eğer -P komutta bayrak var
line, bu seçeneğin hiçbir etkisi yoktur, çünkü hiçbir "#line" yönergesi yayınlanmaz.

-fno-göster-sütun
Tanılamada sütun numaralarını yazdırmayın. Teşhis gerekliyse bu gerekli olabilir.
gibi sütun numaralarını anlamayan bir program tarafından taranması
dejagnu.

-A yüklem=cevap
Yüklem ile bir iddiada bulunun yüklem ve cevap cevap. Bu form
eski forma tercih -A yüklem(cevap), ki bu hala desteklenmektedir, çünkü
kabuk özel karakterleri kullanmaz.

-A -yüklem=cevap
Yüklemle bir iddiayı iptal et yüklem ve cevap cevap.

-dCHARS
KARALAR aşağıdaki karakterlerden bir veya daha fazlasının dizisidir ve
önce bir boşluk. Diğer karakterler derleyici tarafından uygun şekilde yorumlanır veya
GCC'nin gelecekteki sürümleri için ayrılmıştır ve bu nedenle sessizce yok sayılır. belirtirseniz
davranışları çatışan karakterler, sonuç tanımsızdır.

M Normal çıktı yerine, bir liste oluşturun #tanımlamak tüm yönergeler için
önceden tanımlanmış olanlar dahil, önişlemcinin yürütülmesi sırasında tanımlanan makrolar
makrolar. Bu size, sürümünüzde neyin önceden tanımlandığını bulmanın bir yolunu verir.
önişlemci. Dosyanız olmadığını varsayarsak foo.h, komuta

foo.h'ye dokunun; cpp -dM foo.h

tüm önceden tanımlanmış makroları gösterecektir.

Eğer kullanıyorsanız -dM olmadan -E seçeneği -dM eş anlamlısı olarak yorumlanır
-fdump-rtl-mach.

D Facebok sayfasını beğenin : M iki açıdan hariç: öyle değil önceden tanımlanmış makroları içerir ve
çıkışlar her ikisi de the #tanımlamak yönergeler ve ön işlemenin sonucu. Her iki tür
çıktının standart çıktı dosyasına gidin.

N Facebok sayfasını beğenin : D, ancak genişletmelerini değil, yalnızca makro adlarını yayar.

I Çıktı #Dahil etmek ön işleme sonucuna ek olarak yönergeler.

U Facebok sayfasını beğenin : D yalnızca genişletilen veya tanımlılığı test edilen makrolar dışında
önişlemci yönergelerinde çıktı alınır; çıkış kullanıma kadar ertelenir veya
makro testi; ve #undef direktifler ayrıca test edilen makrolar için çıktıdır, ancak
zaman tanımsız.

-P Önişlemciden gelen çıktıda çizgi işareti oluşumunu engeller. Bu olabilir
önişlemciyi C kodu olmayan ve gönderilecek bir şey üzerinde çalıştırırken kullanışlıdır
çizgi işaretleri tarafından karıştırılabilecek bir programa.

-C Yorumları atmayın. Tüm yorumlar, aşağıdakiler dışında çıktı dosyasına iletilir.
Direktifle birlikte silinen işlenmiş direktiflerdeki yorumlar için.

Kullanırken yan etkilere hazırlıklı olmalısınız. -C; önişlemcinin çalışmasına neden olur
yorumları kendi başlarına belirteçler olarak ele alın. Örneğin, şurada görünen yorumlar
Yönlendirici bir satırın ne olacağının başlangıcı, bu satırı bir yönergeye dönüştürme etkisine sahiptir.
sıradan kaynak satırı, çünkü satırdaki ilk jeton artık bir #.

-CC Makro genişletme sırasında da dahil olmak üzere yorumları atmayın. bu gibi -C, dışında
makrolar içinde yer alan yorumların da çıktı dosyasına iletildiğini, burada
makro genişletilir.

İlacın yan etkilerine ek olarak -C seçenek -CC seçenek tüm C++ stiline neden olur
C tarzı yorumlara dönüştürülecek bir makro içindeki yorumlar. Bu daha sonra önlemek için
Bu makronun, kaynak satırın geri kalanını yanlışlıkla yorumlamaktan kullanılması.

The -CC seçeneği genellikle tiftik yorumlarını desteklemek için kullanılır.

-geleneksel-cpp
ISO C'nin aksine eski moda C ön işlemcilerinin davranışını taklit etmeye çalışın
önişlemciler.

-trigraflar
İşlem trigraf dizileri. Bunlar, tümü ile başlayan üç karakterli dizilerdir.
??, ISO C tarafından tek karakterleri temsil edecek şekilde tanımlanır. Örneğin, ??/ standları
için \, yani '??/n' yeni satır için bir karakter sabitidir. Varsayılan olarak, GCC yok sayar
trigraflar, ancak standart uyumlu modlarda onları dönüştürür. Bkz. -std ve -ansi
seçenekleri.

Dokuz üçleme ve bunların yerine geçenler

Trigraf: ??( ??) ??< ??> ??= ??/ ??' ??! ??-
Değiştirme: [ ] { } # \ ^ | ~

-yeniden eşle
Yalnızca çok kısa dosyaya izin veren dosya sistemlerinde çalışmak için özel kodu etkinleştirin
MS-DOS gibi isimler.

--yardım et
--hedef-yardım
Herhangi bir şeyi önceden işlemek yerine tüm komut satırı seçeneklerini açıklayan metni yazdırın.

-v Ayrıntılı mod. Yürütmenin başlangıcında GNU CPP'nin sürüm numarasını yazdırın ve
içerme yolunun son şeklini bildirin.

-H Diğer normal etkinliklere ek olarak kullanılan her başlık dosyasının adını yazdırın. Her biri
adının ne kadar derin olduğunu göstermek için girintili #Dahil etmek yığın öyle. Önceden derlenmiş başlık
dosyalar da geçersiz bulunsalar bile yazdırılır; geçersiz önceden derlenmiş
başlık dosyası ile yazdırılır ...X ve geçerli bir ...! .

-version
--versiyon
GNU CPP'nin sürüm numarasını yazdırın. Bir tire ile normal şekilde ön işlemeye devam edin.
İki tire ile hemen çıkın.

Geçen Opsiyonlar için the montajcı
Montajcıya seçenekleri iletebilirsiniz.

-WA,seçenek
Geçiş seçenek montajcı için bir seçenek olarak. Eğer seçenek virgül içerir, bölünür
virgüllerde birden çok seçeneğe.

-X birleştirici seçenek
Geçiş seçenek montajcı için bir seçenek olarak. Bunu sisteme özel tedarik etmek için kullanabilirsiniz.
GCC'nin nasıl tanıyacağını bilmediği montajcı seçenekleri.

Argüman alan bir seçeneği iletmek istiyorsanız, kullanmanız gerekir. -X birleştirici iki defa,
bir kez seçenek için ve bir kez de argüman için.

Opsiyonlar için Bağlayıcı
Bu seçenekler, derleyici nesne dosyalarını yürütülebilir bir dosyaya bağladığında devreye girer.
çıktı dosyası. Derleyici bir bağlantı adımı yapmıyorsa anlamsızdırlar.

nesne-dosya-adı
Tanınan özel bir sonekle bitmeyen bir dosya adı, bir dosya adı olarak kabul edilir.
nesne dosyası veya kitaplık. (Nesne dosyaları, bağlayıcı tarafından kitaplıklardan ayırt edilir.
dosya içeriğine göre.) Bağlama yapılırsa, bu nesne dosyaları olarak kullanılır.
bağlayıcıya giriş yapın.

-c
-S
-E Bu seçeneklerden herhangi biri kullanılırsa, bağlayıcı çalışmaz ve nesne dosya adları
argüman olarak kullanılmamalıdır.

-lkütüphane
-l kütüphane
Adlı kitaplığı arayın kütüphane bağlanırken. (İkinci alternatif,
kitaplığı ayrı bir argüman olarak kullanmak yalnızca POSIX uyumluluğu içindir ve önerilmez.)

Bu seçeneği komutta nereye yazdığınız fark eder; bağlayıcı arar
ve kitaplıkları ve nesne dosyalarını belirtilen sırayla işler. Böylece, foo.o
-lz bar.o kitaplığı arar z dosyadan sonra foo.o ama önce bar.o. Eğer bar.o atıfta
işlevler z, bu işlevler yüklenmeyebilir.

Bağlayıcı, aslında kitaplık için standart bir dizin listesi arar.
adlı bir dosya kitaplık.a. Bağlayıcı daha sonra bu dosyayı belirtilmiş gibi kullanır.
tam olarak adıyla.

Aranan dizinler, birkaç standart sistem dizinini ve sizin
ile belirtmek -L.

Normalde bu şekilde bulunan dosyalar kütüphane dosyalarıdır --- üyeleri olan arşiv dosyalarıdır.
nesne dosyaları. Bağlayıcı, üyeler için tarayarak bir arşiv dosyasını işler
şimdiye kadar başvurulan ancak tanımlanmayan sembolleri tanımlayan. Ama eğer
Bulunan dosya sıradan bir nesne dosyasıdır, olağan şekilde bağlantılıdır. NS
kullanmak arasındaki tek fark -l seçeneği ve bir dosya adı belirtmek şudur: -l
çevreleyen kütüphane ile lib ve .a ve birkaç dizini arar.

-lobjc
Bu özel duruma ihtiyacınız var -l bir Objective-C'yi bağlamak için seçenek veya
Objective-C++ programı.

-nostartfiles
Bağlanırken standart sistem başlangıç ​​dosyalarını kullanmayın. standart sistem
kütüphaneler normal olarak kullanılır, sürece -nstdlib or -nodefaultlib'ler kullanıldı.

-nodefaultlib'ler
Bağlanırken standart sistem kitaplıklarını kullanmayın. Yalnızca belirttiğiniz kitaplıklar
bağlayıcıya iletilecektir, sistem kitaplıklarının bağlantısını belirten seçenekler, örneğin
"-static-libgcc" veya "-shared-libgcc" olarak dikkate alınmaz. Standart başlangıç ​​dosyaları
olmadıkça normal olarak kullanılır -nostartfiles kullanıldı. Derleyici çağrılar üretebilir
"memcmp", "memset", "memcpy" ve "memmove". Bu girişler genellikle şu şekilde çözülür:
libc'deki girişler. Bu giriş noktaları başka bir mekanizma ile sağlanmalıdır.
Bu seçenek belirtildiğinde.

-nstdlib
Bağlanırken standart sistem başlangıç ​​dosyalarını veya kitaplıklarını kullanmayın. Başlangıç ​​yok
dosyalar ve yalnızca belirttiğiniz kitaplıklar bağlayıcıya iletilecektir, seçenekler
"-static-libgcc" gibi sistem kitaplıklarının bağlantısını belirtmek veya
"-shared-libgcc" yoksayılacak. Derleyici "memcmp" için çağrılar üretebilir,
"memset", "memcpy" ve "memmove". Bu girişler genellikle girişler tarafından çözülür
libc. Bu giriş noktaları, bu durumda başka bir mekanizma aracılığıyla sağlanmalıdır.
seçeneği belirtilir.

Tarafından atlanan standart kitaplıklardan biri -nstdlib ve -nodefaultlib'ler is libgcc.a,
GCC'nin belirli eksikliklerin üstesinden gelmek için kullandığı dahili alt rutinler kütüphanesi
makineler veya bazı diller için özel ihtiyaçlar.

Çoğu durumda, ihtiyacınız libgcc.a diğer standart kitaplıklardan kaçınmak istediğinizde bile.
Başka bir deyişle, belirttiğinizde -nstdlib or -nodefaultlib'ler genellikle yapmalısın
belirtmek -lgcc ilave olarak. Bu, çözümlenmemiş referanslarınız olmamasını sağlar.
dahili GCC kitaplığı alt programları. (Örneğin, __ana, C++ sağlamak için kullanılır
yapıcılar çağrılacak.)

-turta
Onu destekleyen hedefler üzerinde konumdan bağımsız yürütülebilir bir dosya oluşturun. öngörülebilir
sonuçlar için, kod oluşturmak için kullanılan seçeneklerin aynısını da belirtmelisiniz.
(-fpie, -fPIEveya model alt seçenekleri) bu seçeneği belirlediğinizde.

-rdinamik
bayrağı geçmek -ihracat-dinamik ELF bağlayıcıya, onu destekleyen hedeflerde. Bu
bağlayıcıya yalnızca kullanılanları değil tüm sembolleri dinamik sembole eklemesini söyler
tablo. Bu seçenek, bazı "dlopen" kullanımları için veya elde edilmesine izin vermek için gereklidir.
bir program içinden geriye doğru izler.

-s Yürütülebilir dosyadan tüm sembol tablosunu ve yer değiştirme bilgilerini kaldırın.

-statik
Dinamik bağlantıyı destekleyen sistemlerde bu, paylaşılan bağlantıyla bağlantı kurulmasını engeller.
kütüphaneler. Diğer sistemlerde bu seçeneğin hiçbir etkisi yoktur.

-paylaşılan
Daha sonra diğer nesnelerle ilişkilendirilebilecek paylaşılan bir nesne üretin.
yürütülebilir. Tüm sistemler bu seçeneği desteklemez. Öngörülebilir sonuçlar için şunları yapmalısınız:
ayrıca kod oluşturmak için kullanılan seçeneklerin aynısını belirtin (-fpic, -fPICya da
model alt seçenekleri) bu seçeneği belirlediğinizde.[1]

-paylaşılan-libgcc
-statik-libgcc
sağlayan sistemlerde libgcc paylaşılan bir kitaplık olarak, bu seçenekler
sırasıyla paylaşılan veya statik sürüm. Paylaşılan bir sürümü yoksa libgcc oldu
derleyici yapılandırıldığında oluşturulur, bu seçeneklerin hiçbir etkisi yoktur.

Bir uygulamanın paylaşılan verileri kullanması gereken birkaç durum vardır. libgcc
statik sürüm yerine. Bunlardan en yaygın olanı, uygulamanın
farklı paylaşılan kütüphaneler arasında istisnalar atmak ve yakalamak istiyor. Bu durumda,
kütüphanelerin her biri ve uygulamanın kendisi, paylaşılan libgcc.

Bu nedenle, G++ ve GCJ sürücüleri otomatik olarak -paylaşılan-libgcc ne zaman inşa etsen
paylaşılan bir kitaplık veya bir ana yürütülebilir dosya, çünkü C++ ve Java programları genellikle
istisnalar, bu yüzden yapılacak doğru şey bu.

Bunun yerine, paylaşılan kitaplıklar oluşturmak için GCC sürücüsünü kullanırsanız, bunların
her zaman paylaşılanlarla bağlantılı olmayacak libgcc. GCC bulursa, konfigürasyonunda
GNU olmayan bir bağlayıcınız veya seçeneği desteklemeyen bir GNU bağlayıcınız olduğu zaman
--eh-kare-hdr, paylaşılan sürümünü bağlayacak libgcc tarafından paylaşılan kütüphanelere
varsayılan. Aksi takdirde, bağlayıcıdan yararlanacak ve
paylaşılan sürümüyle bağlantı libgcc, libgcc'nin statik sürümüyle bağlantı kurma
varsayılan olarak. Bu, istisnaların bu tür paylaşılan kitaplıklar aracılığıyla yayılmasına izin verir,
kitaplık yükleme zamanında yeniden yerleştirme maliyetleri olmadan.

Ancak, bir kitaplık veya ana yürütülebilir dosyanın istisnalar oluşturması veya yakalaması gerekiyorsa,
kullanılan dillere uygun olarak G++ veya GCJ sürücüsünü kullanarak bağlamalıdır.
programı veya seçeneği kullanarak -paylaşılan-libgcc, paylaşılan ile bağlantılı olacak şekilde
libgcc.

-statik-libstdc++
Zaman g ++ program bir C++ programını bağlamak için kullanılır, normalde otomatik olarak
karşı bağlantı libstdc ++. Eğer libstdc ++ paylaşılan bir kitaplık olarak kullanılabilir ve
-statik seçeneği kullanılmazsa, bu, paylaşılan sürümüne bağlanır
libstdc ++. Bu normalde iyi. Ancak bazen dondurmak faydalı olabilir.
sürümü libstdc ++ tamamen statik hale gelmeden program tarafından kullanılır.
bağlantı. NS -statik-libstdc++ seçeneği yönlendirir g ++ bağlantı için sürücü libstdc ++
statik olarak, diğer kitaplıkları statik olarak bağlamadan.

-simgesel
Paylaşılan bir nesne oluştururken referansları global sembollere bağlayın. Herhangi biri hakkında uyar
çözülmemiş referanslar (bağlantı düzenleyici seçeneği tarafından geçersiz kılınmadıkça -Xlinker -z
-Xlinker tanımlar). Bu seçeneği yalnızca birkaç sistem destekler.

-T senaryo
kullanım senaryo bağlayıcı komut dosyası olarak. Bu seçenek, aşağıdakileri kullanan çoğu sistem tarafından desteklenir.
GNU bağlayıcı. İşletim sistemi olmayan çıplak tahta hedefler gibi bazı hedeflerde,
the -T seçenek, tanımlanmamış sembollere referanslardan kaçınmak için bağlanırken gerekli olabilir.

-Xlinker seçenek
Geçiş seçenek bağlayıcıya bir seçenek olarak. Bunu sisteme özel tedarik etmek için kullanabilirsiniz.
GCC'nin tanımadığı bağlayıcı seçenekleri.

Ayrı bir argüman alan bir seçenek iletmek istiyorsanız, kullanmanız gerekir. -Xlinker
iki kez, bir kez seçenek için ve bir kez de argüman için. Örneğin, geçmek -iddia etmek
tanımları, yazmalısın -Xlinker -iddia etmek -Xlinker tanımları. İşe yaramıyor
yazmak için -Xlinker "-iddia tanımlar", çünkü bu, tüm dizeyi bir
Bağlayıcının beklediği gibi olmayan tek bir argüman.

GNU linker'ı kullanırken, argümanları linker'a iletmek genellikle daha uygundur.
seçenekleri kullanarak seçenek=değer sözdizimi ayrı bağımsız değişkenler olarak değil. örneğin, sen
belirtebilir -Xlinker -Harita=çıktı.harita ziyade -Xlinker -Harita -Xlinker çıktı.harita.
Diğer bağlayıcılar, komut satırı seçenekleri için bu sözdizimini desteklemeyebilir.

-WI,seçenek
Geçiş seçenek bağlayıcıya bir seçenek olarak. Eğer seçenek virgül içerir, bölünür
virgüllerde birden fazla seçenek. Bir argüman iletmek için bu sözdizimini kullanabilirsiniz.
seçenek. Örneğin, -Wl,-Harita,çıktı.harita geçer -Harita çıktı.harita bağlayıcıya. Ne zaman
GNU linker'ı kullanarak aynı etkiyi aşağıdakilerle de elde edebilirsiniz: -Wl,-Harita=çıktı.harita.

NOT: Ubuntu 8.10 ve sonraki sürümlerde, LDFLAGS için seçenek -Wl,-z, tekrar kullanıldı.
Devre dışı bırakmak için şunu kullanın: -Wl,-z,norelro.

-u sembol
Sembolü taklit et sembol tanımsız, kütüphane modüllerinin bağlanmasını tanımlamaya zorlamak için
o. Kullanabilirsiniz -u yüklemeyi zorlamak için farklı sembollerle birden çok kez
ek kütüphane modülleri.

Opsiyonlar için rehber Ara
Bu seçenekler, başlık dosyalarının, kitaplıkların ve parçaların aranacağı dizinleri belirtir.
derleyicinin:

-Idir
dizini ekle dir başlık aranacak dizin listesinin başına
Dosyalar. Bu, bir sistem başlık dosyasını geçersiz kılmak için kullanılabilir, kendinizinkini değiştirerek
sürüm, bu dizinler sistem başlık dosyasından önce arandığından
dizinler. Ancak, içeren dizinleri eklemek için bu seçeneği kullanmamalısınız.
satıcı tarafından sağlanan sistem başlık dosyaları (kullanın -isistem bunun için). Birden fazla kullanırsanız
-I seçeneği, dizinler soldan sağa sırayla taranır; standart sistem
dizinler sonra gelir.

Standart bir sistem dizini veya ile belirtilen bir dizini içeriyorsa -isistem, Bir
ile de belirtilmiş -I, -I seçeneği yoksayılır. Dizin hala olacak
aranır ancak sistem dizini olarak sistemdeki normal konumunda zincir içerir.
Bu, GCC'nin hatalı sistem başlıklarını ve sıralamayı düzeltme prosedürünün
include_next yönergesi yanlışlıkla değiştirilmez. gerçekten ihtiyacın varsa
sistem dizinleri için arama sırasını değiştirin, -nostdinc ve / veya -isistem
seçenekleri.

-iplugindir=dir
Tarafından geçirilen eklentileri aramak için dizini ayarlayın -feklenti=isim yerine
-feklenti=yol/isim.yani. Bu seçeneğin kullanıcı tarafından kullanılması amaçlanmamıştır, yalnızca
sürücü tarafından geçti.

-Alıntı yaparımdir
dizini ekle dir başlık aranacak dizin listesinin başına
dosyalar sadece durum için #Dahil etmek "dosya"; onlar aranmaz #Dahil etmek <dosya>,
aksi halde tıpkı -I.

-Ldir
Dizin ekle dir aranacak dizinler listesine -l.

-Bönek
Bu seçenek, yürütülebilir dosyaların, kitaplıkların, dahil edilen dosyaların ve
derleyicinin kendisinin veri dosyaları.

Derleyici sürücü programı, bir veya daha fazla alt programı çalıştırır. cpp, cc1, as ve ld.
deniyor önek çalıştırmaya çalıştığı her program için bir önek olarak, hem birlikte hem de onsuz
makine/versiyon/.

Çalıştırılacak her bir alt program için, derleyici sürücüsü önce aşağıdakileri dener: -B varsa ön ek.
Bu isim bulunamazsa veya -B belirtilmedi, sürücü iki standart dener
önekler, /usr/lib/gcc/ ve /usr/yerel/lib/gcc/. Bunlardan hiçbiri bir sonuçla sonuçlanmıyorsa
bulunan dosya adı, değiştirilmemiş program adı,
içinde belirtilen dizinler PATH Çevre değişkeni.

Derleyici, tarafından sağlanan yolun olup olmadığını kontrol edecektir. -B bir dizine atıfta bulunur,
ve gerekirse yolun sonuna bir dizin ayırıcı karakter ekleyecektir.

-B Dizin adlarını etkin bir şekilde belirten önekler, dizinlerdeki kitaplıklar için de geçerlidir.
linker, çünkü derleyici bu seçenekleri -L bağlayıcı için seçenekler.
Derleyici çeviri yaptığı için önişlemcideki dosyaları dahil etmek için de geçerlidirler.
bu seçenekler -isistem önişlemci seçenekleri. Bu durumda derleyici
ekler dahil ön eke.

Çalışma zamanı destek dosyası libgcc.a kullanılarak da aranabilir. -B ön ek, eğer
gerekli. Orada bulunamazsa, yukarıdaki iki standart önek denenir ve
hepsi. Dosya bu yollarla bulunamazsa bağlantı dışında bırakılır.

gibi bir önek belirtmenin başka bir yolu -B önek çevreyi kullanmaktır
değişken GCC_EXEC_PREFIX.

Özel bir çamur olarak, tarafından sağlanan yol -B is [dir/]sahneN/, Burada N bir sayı
0 ila 9 aralığında, o zaman ile değiştirilecektir [dir/]dahil. Bu yardımcı olmak için
derleyiciyi önyükleme.

-özellikler=dosya
süreci dosya derleyici standartta okuduktan sonra gözlük dosya, geçersiz kılmak için
varsayılanlar gcc hangi anahtarların geçeceğini belirlerken sürücü programı kullanır
için cc1, cc1plus, as, ld, vb. Birden fazla -özellikler=dosya üzerinde belirtilebilir
komut satırı ve soldan sağa sırayla işlenirler.

--sysroot=dir
kullanım dir başlıklar ve kitaplıklar için mantıksal kök dizin olarak. Örneğin, eğer
derleyici normalde başlıkları arar / usr / include ve kütüphanelerde / USR / lib,
bunun yerine arayacak dir/usr/dahil ve dizin/usr/lib.

Hem bu seçeneği hem de -isysroot seçeneği, ardından --sistem kökü seçenek olacak
kütüphaneler için geçerlidir, ancak -isysroot seçenek, başlık dosyalarına uygulanacaktır.

GNU linker (sürüm 2.16'dan başlayarak) bunun için gerekli desteğe sahiptir.
seçenek. Bağlayıcınız bu seçeneği desteklemiyorsa, başlık dosyası yönü
--sistem kökü çalışmaya devam edecek, ancak kitaplık yönü çalışmayacak.

-BEN- Bu seçenek kullanımdan kaldırıldı. Lütfen kullan -Alıntı yaparım bunun yerine -I önce dizinler
the -BEN- ve kaldır -BEN-. Belirttiğiniz herhangi bir dizin -I önce seçenekler
-BEN- seçeneği yalnızca şu durumlarda aranır: #Dahil etmek "dosya"; aranmazlar
için #Dahil etmek <dosya>.

Ek dizinler ile belirtilirse -I seçeneklerinden sonra -BEN-, bunlar
dizinler herkes için aranır #Dahil etmek direktifler. (Normalde herşey -I dizinleri
Bu şekilde kullanılır.)

Buna ek olarak, -BEN- seçeneği, geçerli dizinin kullanımını engeller (burada
için ilk arama dizini olarak geçerli giriş dosyası geldi) #Dahil etmek "dosya".
Bu etkiyi geçersiz kılmanın bir yolu yoktur. -BEN-. Ile -BEN. arama belirtebilirsiniz
derleyici çağrıldığında geçerli olan dizin. tam olarak bu değil
önişlemcinin varsayılan olarak yaptığıyla aynıdır, ancak genellikle tatmin edicidir.

-BEN- başlık dosyaları için standart sistem dizinlerinin kullanımını engellemez.
Böylece, -BEN- ve -nostdinc bağımsızdır.

Belirtme Hedef makine ve derleyici Sürümü
GCC'yi çalıştırmanın genel yolu, adı verilen yürütülebilir dosyayı çalıştırmaktır. gccya da makine-gcc çapraz olduğunda
derleme veya makine-gcc-versiyon kurulu olandan farklı bir sürümü çalıştırmak için
son.

donanım Modeller ve yapılandırmaları
Her hedef makine tipinin kendi özel seçenekleri olabilir. -m, seçmek
çeşitli donanım modelleri veya konfigürasyonları arasında --- örneğin, 68010 - 68020, yüzer
yardımcı işlemci veya hiçbiri. Derleyicinin tek bir kurulu sürümü herhangi bir model için derlenebilir
veya belirtilen seçeneklere göre yapılandırma.

Derleyicinin bazı yapılandırmaları, genellikle aşağıdakiler için ek özel seçenekleri de destekler:
aynı platformdaki diğer derleyicilerle uyumluluk.

Adapteva Epifani Opsiyonlar

Bunlar -m Adapteva Epiphany için seçenekler tanımlanmıştır:

-mhalf-reg-dosyası
"r32"..."r63" aralığında herhangi bir kayıt ayırma. Bu, kodun çalışmasına izin verir
bu kayıtlardan yoksun donanım varyantları.

-mprefer-kısa-insn-regs
Tercihli olarak, kısa talimat üretimine izin veren kayıtları tahsis edin. Bu
artan talimat sayısıyla sonuçlanır, bu nedenle bu, kod boyutunu küçültür veya artırırsa
duruma göre değişebilir.

-mbranch-maliyet=num
Şubelerin maliyetini kabaca ayarlayın num "basit" talimatlar. Bu maliyet sadece bir
buluşsaldır ve sürümler arasında tutarlı sonuçlar üretmesi garanti edilmez.

-mcmove
Koşullu hareketlerin oluşturulmasını etkinleştirin.

-mnops=num
Yaymak num nops, oluşturulan her talimattan önce.

-mno-yumuşak-cmpsf
Tek duyarlıklı kayan nokta karşılaştırmaları için bir fsub komutu yayınlayın ve
bayraklar. Bu, bir yazılım karşılaştırmasından daha hızlıdır, ancak
NaN'lerin varlığı veya iki farklı küçük sayı karşılaştırıldığında,
fark sıfır olarak hesaplanır. Varsayılan -msoft-cmpsf, daha yavaş kullanır, ancak
IEEE uyumlu, yazılım karşılaştırmaları.

-mstack-offset=num
Yığının üstü ile yığın işaretçisi arasındaki uzaklığı ayarlayın. Örneğin, 8 değeri
sp+0...sp+7 aralığındaki sekiz baytın yaprak işlevleri tarafından kullanılabileceği anlamına gelir
yığın tahsisi olmadan. dışındaki değerler 8 or 16 denenmemiş ve olası değildir
İş. Ayrıca, bu seçeneğin ABI'yi değiştirdiğini ve bir programı bir programla derlediğini unutmayın.
kitaplıkların derlendiğinden farklı yığın ofseti genellikle olmaz
İş. Farklı bir yığın kayması olup olmadığını değerlendirmek istiyorsanız bu seçenek yararlı olabilir.
size daha iyi kod verir, ancak aslında oluşturmak için farklı bir yığın ofseti kullanmak
çalışan programlar için alet zincirinin uygun şekilde yapılandırılması önerilir.
--with-stack-offset=num seçeneği.

-mno-yuvarlak-en yakın
Zamanlayıcının, yuvarlama modunun kesmeye ayarlandığını varsaymasını sağlayın. NS
varsayılan -mround-en yakın.

-mlong-çağrıları
Bir öznitelik tarafından aksi belirtilmemişse, tüm çağrıların belirtilen sınırın ötesinde olabileceğini varsayalım.
b / bl talimatlarının ofset aralığı ve bu nedenle işlev adresini içine yükleyin
(aksi takdirde doğrudan) bir arama yapmadan önce bir kayıt. Bu varsayılandır.

-mshort-çağrıları
Bir öznitelik tarafından aksi belirtilmediyse, tüm doğrudan aramaların aralıkta olduğunu varsayın.
b / bl talimatları, bu nedenle doğrudan aramalar için bu talimatları kullanın. Varsayılan
is -mlong-çağrıları.

-msmall16
Adreslerin 16 bitlik işaretsiz değerler olarak yüklenebileceğini varsayın. Bu geçerli değil
işlev adresleri -mlong-çağrıları anlambilim geçerlidir.

-mfp-modu=kip
Kayan nokta biriminin geçerli modunu ayarlayın. Bu, yüzen-
işlev çağrısı ve dönüş zamanında sağlanan ve beklenen nokta modu. Yapımı
Bu mod, işlev başlangıcında ağırlıklı olarak ihtiyaç duyduğunuz modla eşleşir.
gereksiz mod geçişlerinden kaçınarak daha küçük ve daha hızlı programlar.

kip aşağıdaki değerlerden birine ayarlanabilir:

arayan
İşlev girişindeki herhangi bir mod geçerlidir ve işlev etkinleştirildiğinde korunur veya geri yüklenir.
döner ve diğer işlevleri çağırdığında. Bu mod derleme için kullanışlıdır.
kitaplıklar veya farklı derleme birimlerine dahil etmek isteyebileceğiniz diğer derleme birimleri
farklı hakim FPU modlarına sahip programlar ve bunları yapabilmenin rahatlığı
herhangi bir ekstra mod için boyut ve hız yükünden daha ağır basan tek bir nesne dosyası kullanın
daha fazlası ile ihtiyaç duyulana kıyasla, ihtiyaç duyulabilecek anahtarlama
geçerli FPU modunun özel seçimi.

kesmek
Bu, kesme ile kayan nokta hesaplamaları için kullanılan moddur (yani yuvarlak
sıfıra doğru) yuvarlama modu. Bu, kayan noktadan dönüştürmeyi içerir
tamsayı.

en yakın
Bu, yuvarlamadan en yakına veya- ile kayan noktalı hesaplamalar için kullanılan moddur.
hatta yuvarlama modu.

int Bu, FPU'da tamsayı hesaplamaları yapmak için kullanılan moddur, örneğin tamsayı
çarpma veya tamsayı çarpma ve biriktirme.

Varsayılan -mfp modu=arayan

-mnosplit-lohi
-mno-postinc
-mno-postmodify
Sırasıyla 32 bit yüklerin bölünmesini devre dışı bırakan kod oluşturma ince ayarları,
artış sonrası adreslerin oluşturulması ve değişiklik sonrası adreslerin oluşturulması. NS
varsayılanlar msplit-lohi, -mpost-inc, ve -mpost-değiştir.

-mnovect-çift
Tercih edilen SIMD modunu SIMode olarak değiştirin. Varsayılan -mvect-çift, Burada kullanım
Tercih edilen SIMD modu olarak DImode.

-max-vect-hizalama=num
SIMD vektör modu türleri için maksimum hizalama. num 4 veya 8 olabilir. Varsayılan
8. Pek çok kitaplık işlev arabirimi,
boyutu etkiledikleri yerlerde SIMD vektör modlarını kullanmazlarsa etkilenmezler.
ve/veya ilgili türlerin hizalanması.

-msplit-vecmove-erken
Bölünmüş vektör, yeniden yüklemeden önce tek kelime hareketlerine dönüşür. Teoride bu verebilir
daha iyi kayıt tahsisi, ancak şimdiye kadar genel olarak durum tam tersi gibi görünüyor.

-m1reg-reg
Yüklemeyi küçük negatif yapan -1 sabitini tutacak bir kayıt belirtin
sabitler ve belirli bit maskeleri daha hızlı. reg için izin verilen değerler r43 ve r63'tür,
bu kaydın sabit bir kayıt olarak kullanılacağını belirten ve hiçbiri, yani hayır
register bu amaçla kullanılır. Varsayılan -m1reg-yok.

AAAArch64 Opsiyonlar

Bu seçenekler AArch64 uygulamaları için tanımlanmıştır:

-big-endian
Big-endian kodu oluşturun. Bu, GCC bir için yapılandırıldığında varsayılandır.
aarch64_be-*-* hedef.

-mgeneral-regs-yalnızca
Yalnızca genel kayıtları kullanan kod oluşturun.

-küçük endian
Küçük endian kodu oluşturun. Bu, GCC bir için yapılandırıldığında varsayılandır.
aarch64-*-* ama değil aarch64_be-*-* hedef.

-mcmodel=küçük
Küçük kod modeli için kod oluşturun. Program ve statik olarak tanımlanmış sembolleri
birbirinden 1 GB uzaklıkta olmalıdır. İşaretçiler 64 bittir. Programlar statik olabilir
veya dinamik olarak bağlantılıdır. Bu model tam olarak uygulanmamıştır ve çoğunlukla
"küçük".

-mcmodel=küçük
Küçük kod modeli için kod oluşturun. Program ve statik olarak tanımlanmış
semboller birbirinin 4 GB'ı içinde olmalıdır. İşaretçiler 64 bittir. programlar olabilir
statik veya dinamik olarak bağlantılı. Bu, varsayılan kod modelidir.

-mcmodel=büyük
Büyük kod modeli için kod oluşturun. Bu, adresler hakkında herhangi bir varsayımda bulunmaz ve
bölümlerin boyutları. İşaretçiler 64 bittir. Programlar yalnızca statik olarak bağlanabilir.

-mstrict-hizalama
Hizalanmamış bellek referanslarının sistem tarafından ele alınacağını varsaymayın.

-momit-yaprak-çerçeve-işaretçi
-mno-omit-yaprak-çerçeve-işaretçi
Yaprak işlevlerinde çerçeve işaretçisini atlayın veya saklayın. Önceki davranış,
Varsayılan.

-mtls-lehçesi=az
TLS'nin dinamik erişimleri için iş parçacığı yerel depolama mekanizması olarak TLS tanımlayıcılarını kullanın
değişkenler. Bu varsayılandır.

-mtls-lehçesi=geleneksel
TLS'nin dinamik erişimleri için iş parçacığı yerel depolama mekanizması olarak geleneksel TLS'yi kullanın
değişkenler.

-mart=isim
İsteğe bağlı olarak bir veya daha fazla eklenmiş hedef mimarinin adını belirtin
özellik değiştiriciler Bu seçenek forma sahiptir -mart=kemer{+[yok hayır]özellik}*, nerede
için sadece değer kemer is kolv8-a. için olası değerler özellik içinde belgelenmiştir
alt bölüm aşağıdadır.

Çakışan özellik değiştiricileri belirtildiğinde, en sağdaki özellik kullanılır.

GCC, oluştururken ne tür talimatlar yayınlayabileceğini belirlemek için bu adı kullanır.
montaj kodu. Bu seçenek, ile birlikte veya onun yerine kullanılabilir. -mcpu=
seçeneği.

-mcpu=isim
İsteğe bağlı olarak bir veya daha fazla özelliğin eklendiği hedef işlemcinin adını belirtin
değiştiriciler. Bu seçenek forma sahiptir -mcpu=cpu{+[yok hayır]özellik}*, mümkünse
değerleri cpu vardır genel, büyük. için olası değerler özellik belgelenmiştir
aşağıdaki alt bölüm.

Çakışan özellik değiştiricileri belirtildiğinde, en sağdaki özellik kullanılır.

GCC, oluştururken ne tür talimatlar yayınlayabileceğini belirlemek için bu adı kullanır.
montaj kodu.

-mtune=isim
Performansını ayarlamak için işlemcinin adını belirtin. Kod ayarlanacak
sanki hedef işlemci bu seçenekte belirtilen tipte ama yine de
tarafından belirtilen hedef işlemciyle uyumlu talimatlar -mcpu= seçeneği. Bu
Seçenek, özellik değiştiriciler tarafından eklenemez.

-Mart ve -mcpu özellik değiştiriciler

Birlikte kullanılan özellik değiştiriciler -Mart ve -mcpu aşağıdakilerden biri olabilir:

kripto
Crypto uzantısını etkinleştirin. Bu, Gelişmiş SIMD'nin etkinleştirildiği anlamına gelir.

fp Kayan nokta yönergelerini etkinleştirin.

simd
Gelişmiş SIMD talimatlarını etkinleştirin. Bu, kayan nokta talimatlarının
etkinleştirilmiş. Bu, seçenekler için tüm mevcut olası değerler için varsayılandır. -Mart ve
-mcpu=.

ARM Opsiyonlar

Bunlar -m Gelişmiş RISC Makineleri (ARM) mimarileri için seçenekler tanımlanmıştır:

-mabi=isim
Belirtilen ABI için kod oluşturun. İzin verilen değerler: apcs-gnu, at adet, aapcs,
aapcs-linux ve iwmmxt.

-mapcs-çerçevesi
Herkes için ARM Prosedür Çağrı Standardı ile uyumlu bir yığın çerçevesi oluşturun
kodun doğru yürütülmesi için kesinlikle gerekli olmasa bile.
Belirtme -fomit-frame-işaretçi bu seçenek, yığın çerçevelerinin olmamasına neden olur
yaprak fonksiyonları için üretilmiştir. Varsayılan -mno-apcs-çerçevesi.

-haritalar
Bu eş anlamlısı -mapcs-çerçevesi.

-mthumb-interwork
ARM ve Thumb komut setleri arasında aramayı destekleyen kod oluşturun.
Bu seçenek olmadan v5 öncesi mimarilerde iki komut seti kullanılamaz.
tek bir program içinde güvenilir bir şekilde kullanılır. Varsayılan -mno-başparmak-interwork, biraz beri
daha büyük kod oluşturulduğunda -mthumb-interwork belirtilir. AAPCS yapılandırmalarında
bu seçenek anlamsızdır.

-mno-schedule-prolog
İşlev önsözünde talimatların yeniden sıralanmasını veya
işlevin gövdesindeki talimatlarla birlikte bu talimatlar. Bunun anlamı, tüm
işlevler, tanınabilir bir dizi talimatla (ya da aslında
küçük bir dizi farklı işlev girişinden seçim) ve bu bilgi şu şekilde olabilir:
çalıştırılabilir bir kod parçasının içinde çalışıyorsa başlangıcını bulmak için kullanılır. Varsayılan
is -msched-prolog.

-mfloat-abi=isim
Hangi kayan noktalı ABI'nin kullanılacağını belirtir. İzin verilen değerler: yumuşak, yazılım ve
zor.

Belirtme yumuşak GCC'nin kayan- için kitaplık çağrıları içeren çıktı üretmesine neden olur.
nokta işlemleri. yazılım donanım kayan nokta kullanarak kod üretilmesine izin verir
yönergeler, ancak yine de yumuşak geçişli çağrı kurallarını kullanır. zor veriyor
kayan noktalı komutların oluşturulması ve FPU'ya özgü çağrı kurallarının kullanılması.

Varsayılan, belirli hedef yapılandırmaya bağlıdır. Sert şamandıranın
ve soft-float ABI'ler bağlantı uyumlu değildir; tüm programınızı ile derlemeniz gerekir
aynı ABI ve uyumlu bir kitaplık kümesiyle bağlantı.

-küçük endian
Little-endian modunda çalışan bir işlemci için kod oluşturun. Bu, varsayılan
tüm standart konfigürasyonlar.

-big-endian
Big-endian modunda çalışan bir işlemci için kod oluşturun; varsayılan derlemektir
küçük bir endian işlemci için kod.

-mwords-küçük-endian
Bu seçenek yalnızca büyük endian işlemciler için kod oluştururken geçerlidir. üret
bir küçük endian kelime sırası, ancak bir büyük endian bayt sırası için kod. Yani, bir bayt
formun sırası 32107654. Not: Bu seçenek yalnızca ihtiyacınız varsa kullanılmalıdır.
sürümleri tarafından oluşturulan big-endian ARM işlemcileri için kodla uyumluluk
2.8'den önceki derleyici. Bu seçenek artık kullanımdan kaldırılmıştır.

-mart=isim
Bu, hedef ARM mimarisinin adını belirtir. GCC bu adı
montaj kodu oluştururken ne tür talimatlar yayınlayabileceğini belirleyin. Bu
seçeneği ile birlikte veya onun yerine kullanılabilir. -mcpu= seçenek. İzin verilebilir
isimler şunlardır: armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5e,
armv5te, armv6, armv6j, armv6t2, armv6z, armv6zk, armv6-m, armv7, kolv7-a, armv7-r,
armv7-m, armv7e-m, iwmmxt, IWMMXT2, ep9312.

-mart=yerli derleyicinin yapının mimarisini otomatik olarak algılamasına neden olur
bilgisayar. Şu anda, bu özellik yalnızca Linux'ta desteklenmektedir ve tümü değil
mimariler tanınır. Otomatik algılama başarısız olursa, seçeneğin
etkisi.

-mtune=isim
Bu seçenek, GCC'nin ayarlaması gereken hedef ARM işlemcisinin adını belirtir.
kodun performansı. Bazı ARM uygulamaları için daha iyi performans
Bu seçenek kullanılarak elde edilir. İzin verilen isimler şunlardır: arm2, arm250, arm3, arm6,
arm60, arm600, arm610, arm620, arm7, kol7m, arm7d, arm7dm, arm7di, arm7dmi, arm70,
arm700, arm700i, arm710, arm710c, arm7100, arm720, arm7500, arm7500fe, arm7tdmi,
arm7tdmi-s, arm710t, arm720t, arm740t, güçlü kol, güçlü kol110, güçlü kol1100,
güçlü kol1110, arm8, arm810, arm9, arm9e, arm920, arm920t, arm922t, arm946e-s,
arm966e-s, arm968e-s, arm926ej-s, arm940t, arm9tdmi, arm10tdmi, arm1020t, arm1026ej-s,
arm10e, arm1020e, arm1022e, arm1136j-s, arm1136jf-s, mpcore, mpcorenovfp, arm1156t2-s,
arm1156t2f-s, arm1176jz-s, arm1176jzf-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, x ölçekli, iwmmxt, IWMMXT2, ep9312, fa526, fa626, fa606te, fa626te, fmp626,
fa726te.

-mtune=genel-kemer GCC'nin aşağıdakilerin bir karışımı için performansı ayarlaması gerektiğini belirtir.
mimarideki işlemciler kemer. Amaç, bilgisayarda iyi çalışan kod oluşturmaktır.
bazılarına fayda sağlayan optimizasyonlar arasında denge sağlayan mevcut en popüler işlemciler
Aralıktaki CPU'lar ve diğer CPU'ların performans tuzaklarından kaçınma. Etkileri
CPU modelleri gelip giderken bu seçenek gelecekteki GCC sürümlerinde değişebilir.

-mtune=yerel derleyicinin yapı bilgisayarının CPU'sunu otomatik olarak algılamasına neden olur. NS
mevcutsa, bu özellik yalnızca Linux'ta desteklenir ve tüm mimariler desteklenmez.
tanındı. Otomatik algılama başarısız olursa seçeneğin hiçbir etkisi olmaz.

-mcpu=isim
Bu, hedef ARM işlemcisinin adını belirtir. GCC, bu adı türetmek için kullanır.
hedef ARM mimarisinin adı (belirtilmiş gibi -Mart) ve ARM işlemci
performans için ayarlanacak tür (belirtilmiş gibi) -mtune). Bu seçenek nerede
ile birlikte kullanılır -Mart or -mtune, bu seçenekler aşağıdakilere göre önceliklidir:
Bu seçeneğin uygun kısmı.

Bu seçenek için izin verilen adlar, -mtune.

-mcpu=genel-kemer ayrıca izin verilebilir ve eşdeğerdir -mart=kemer
-mtune=genel-kemer. Görmek -mtune daha fazla bilgi için.

-mcpu=yerel derleyicinin yapı bilgisayarının CPU'sunu otomatik olarak algılamasına neden olur. NS
mevcutsa, bu özellik yalnızca Linux'ta desteklenir ve tüm mimariler desteklenmez.
tanındı. Otomatik algılama başarısız olursa seçeneğin hiçbir etkisi olmaz.

-mfpu=isim
-mfpe=numara
-mfp=numara
Bu, hangi kayan nokta donanımının (veya donanım öykünmesinin) kullanılabilir olduğunu belirtir.
hedef. İzin verilen isimler şunlardır: çifte, fpe2, fpe3, başına buyruk tip, vfp, vfpv3, vfpv3-fp16,
vfpv3-d16, vfpv3-d16-fp16, vfpv3xd, vfpv3xd-fp16, neon, neon-fp16, vfpv4, vfpv4-d16,
fpv4-sp-d16 ve neon-vfpv4. -mfp ve -mfpe için eşanlamlıdır -mfpu=fpenumara, Için
GCC'nin eski sürümleriyle uyumluluk.

If -msoft-float belirtilir, bu, kayan nokta değerlerinin biçimini belirtir.

Seçilen kayan nokta donanımı NEON uzantısını içeriyorsa (örn. -mfpu=neon),
kayan nokta işlemlerinin GCC'nin otomatik vektörleştirme geçişi tarafından kullanılmayacağını unutmayın
olmadıkça -funsafe-matematik-optimizasyonları da belirtilir. Bunun nedeni NEON donanımının
kayan nokta aritmetiği için IEEE 754 standardını tam olarak uygulamaz (içinde
belirli denormal değerler sıfır olarak kabul edilir), bu nedenle NEON talimatlarının kullanımı
hassasiyet kaybına neden olur.

-mfp16-formatı=isim
"__fp16" yarı duyarlıklı kayan nokta türünün biçimini belirtin. İzin verilebilir
isimler Yok, iEEE, ve alternatif; varsayılan Yok, bu durumda "__fp16"
tipi tanımlı değil.

-myapı-boyut-sınır=n
Tüm yapıların ve birleşimlerin boyutu, sayının katına yuvarlanacaktır.
Bu seçenek tarafından ayarlanan bit sayısı. İzin verilen değerler 8, 32 ve 64'tür. Varsayılan değer
farklı alet zincirleri için değişir. COFF hedefli takım zinciri için varsayılan değer
8. 64 değerine yalnızca temel alınan ABI destekliyorsa izin verilir.

Daha büyük sayının belirtilmesi daha hızlı, daha verimli kod üretebilir, ancak aynı zamanda
programın boyutunu artırın. Farklı değerler potansiyel olarak uyumsuzdur.
Tek bir değerle derlenen kod, kod veya kitaplıklarla çalışmayı bekleyemez
yapıları veya birleşimleri kullanarak bilgi alışverişinde bulunurlarsa, başka bir değerle derlenir.

-dönüşte çalışma
Bir "noreturn" işlevinin sonunda "iptal" işlevine bir çağrı oluşturun. O olacak
işlev geri dönmeye çalışırsa yürütülür.

-mlong-çağrıları
-çok uzun aramalar
Derleyiciye, önce adresini yükleyerek işlev çağrıları yapmasını söyler.
bir kayıtta işlev görür ve ardından bu kayıt üzerinde bir alt program çağrısı gerçekleştirir. Bu
hedef işlev 64 megabaytlık adreslemenin dışında kalacaksa anahtar gereklidir
alt rutin çağrı talimatının ofset tabanlı versiyonunun aralığı.

Bu anahtar etkinleştirilse bile, tüm işlev çağrıları uzun çağrılara dönüştürülmeyecektir.
Sezgisel, statik işlevlerin, kısa arama nitelik,
kapsamı içinde olan işlevler #pragma no_long_calls yönerge ve işlevler
tanımları halihazırda mevcut derleme biriminde derlenmiş olan,
uzun aramalara dönüştürülmez. Bu kuralın istisnası, zayıf fonksiyondur.
tanımlar, fonksiyonlar uzun arama nitelik veya Bölüm nitelik ve
kapsamına giren işlevler #pragma uzun aramalar yönerge, her zaman olacak
uzun aramalara dönüştü.

Bu özellik varsayılan olarak etkin değildir. belirtme -çok uzun aramalar geri yükleyecek
varsayılan davranış, işlev çağrılarını bir #pragma
uzun_calls_off direktif. Bu anahtarların derleyicinin nasıl çalıştığı üzerinde hiçbir etkisi olmadığını unutmayın.
işlev işaretçileri aracılığıyla işlev çağrılarını işlemek için kod üretir.

-msingle-pic-base
PIC adreslemesi için kullanılan register'ı, onu bir dosyaya yüklemek yerine salt okunur olarak kabul edin.
Her işlev için önsöz. Çalışma zamanı sistemi bunu başlatmaktan sorumludur.
yürütme başlamadan önce uygun bir değerle kaydolun.

-mpic-kayıt=reg
PIC adreslemesi için kullanılacak kaydı belirtin. yığın-olmadığı sürece varsayılan R10'dur.
R9 kullanıldığında kontrol etkinleştirilir.

-mcirrus-fix-geçersiz-insns
İle ilgili sorunları çözmek için NOP'ları talimat akışına ekleyin.
geçersiz Maverick talimat kombinasyonları. Bu seçenek yalnızca aşağıdaki durumlarda geçerlidir:
-mcpu=ep9312 seçeneği, Cirrus için talimatların oluşturulmasını sağlamak için kullanılmıştır.
Maverick kayan nokta yardımcı işlemcisi. Bu seçenek varsayılan olarak etkin değildir, çünkü
sorun yalnızca eski Maverick uygulamalarında mevcuttur. Varsayılan yeniden olabilir
kullanılarak etkinleştirilir. -mno-cirrus-düzeltme-geçersiz-insns geçiş.

-mpoke-işlev-adı
Her işlevin adını, işlevden hemen önce gelen metin bölümüne yazın
önsöz. Oluşturulan kod şuna benzer:

t0
.ascii "arm_poke_function_name", 0
.hizala
t1
.word 0xFF000000 + (t1 - t0)
arm_poke_function_name
hareket ip, sp
stmfd sp!, {fp, ip, lr, pc}
alt FP, ip, #4

Bir yığın geri izleme gerçekleştirirken, kod, "fp + 'da depolanan "pc"nin değerini inceleyebilir.
0". İzleme işlevi "pc - 12" konumuna bakarsa ve en üstteki 8 bit
ayarlayın, o zaman bundan hemen önce gömülü bir fonksiyon adı olduğunu biliyoruz.
konumu ve uzunluğu "((pc[-3]) & 0xff000000)".

-mparmak
-marm
ARM ve Thumb durumlarında yürütülen kod oluşturma arasında seçim yapın. için varsayılan
çoğu yapılandırma, ARM durumunda yürütülen kod oluşturmaktır, ancak varsayılan
ile GCC yapılandırılarak değiştirilebilir. --ile-modu=belirtmek, bildirmek seçeneğini yapılandırın.

-mtpcs-çerçevesi
için Thumb Prosedür Çağrı Standardı ile uyumlu bir yığın çerçevesi oluşturun.
tüm yaprak olmayan işlevler. (Yaprak işlevi, başka hiçbir işlevi çağırmayan işlevdir.
işlevler.) Varsayılan -mno-tpcs-çerçevesi.

-mtpcs-yaprak-çerçeve
için Thumb Prosedür Çağrı Standardı ile uyumlu bir yığın çerçevesi oluşturun.
tüm yaprak fonksiyonları. (Yaprak işlevi, başka hiçbir işlevi çağırmayan işlevdir.)
Varsayılan -mno-apcs-yaprak çerçeve.

-mcallee-süper-birlikte çalışma
Bir ARM talimatı derlenen dosyadaki tüm harici olarak görünür işlevleri verir
işlevin geri kalanını yürütmeden önce Başparmak moduna geçen başlığı ayarlayın.
Bu, bu işlevlerin birlikte çalışmayan koddan çağrılmasına izin verir. Bu seçenek
AAPCS yapılandırmalarında geçerli değildir çünkü birlikte çalışma varsayılan olarak etkinleştirilmiştir.

-mcaller-süper-birlikte çalışma
İşlev işaretçileri (sanal işlevler dahil) aracılığıyla yapılan çağrıların doğru şekilde yürütülmesine izin verir
hedef kodun birlikte çalışma için derlenip derlenmediğine bakılmaksızın.
Bu seçenek varsa, bir işlev işaretçisini yürütme maliyetinde küçük bir ek yük vardır.
etkin. Bu seçenek, birlikte çalışma olduğundan AAPCS yapılandırmalarında geçerli değildir.
varsayılan olarak etkindir.

-mtp=isim
İş parçacığı yerel depolama işaretçisi için erişim modelini belirtin. Geçerli modeller
yumuşak"__aeabi_read_tp" için çağrılar oluşturan , cp15, hangi iş parçacığını getirir
doğrudan "cp15" ten işaretçi (arm6k mimarisinde desteklenir) ve Oto, Hangi
seçilen işlemci için mevcut en iyi yöntemi kullanır. Varsayılan ayar
Oto.

-mtls-lehçesi=diyalekt
İş parçacığı yerel depolamasına erişmek için kullanılacak lehçeyi belirtin. iki lehçe vardır
desteklenen --- gnu ve gnu2. gnu diyalekt için orijinal GNU şemasını seçer
yerel ve küresel dinamik TLS modellerini destekler. NS gnu2 lehçe GNU'yu seçer
paylaşılan kitaplıklar için daha iyi performans sağlayan tanımlayıcı şeması. GNU
tanımlayıcı şema, orijinal şema ile uyumludur, ancak yeni
assembler, linker ve kütüphane desteği. İlk ve yerel yürütme TLS modelleri
bu seçenekten etkilenmez ve her zaman orijinal şemayı kullanır.

-mword-yer değiştirmeler
Yalnızca sözcük boyutundaki değerlerde (yani R_ARM_ABS32) mutlak yer değiştirmeler oluşturun. Bu
çalışma zamanı yükleyicisinin yüklediği hedeflerde (uClinux, SymbianOS) varsayılan olarak etkindir
Bu kısıtlama ve ne zaman -fpic or -fPIC belirtilir.

-mfix-korteks-m3-ldrd
Bazı Cortex-M3 çekirdekleri, "ldrd" komutları ile veri bozulmasına neden olabilir.
örtüşen hedef ve temel kayıtlar kullanılır. Bu seçenek oluşturmayı önler
bu talimatlar. Bu seçenek şu durumlarda varsayılan olarak etkindir: -mcpu=korteks-m3 is
belirtildi.

-unaligned-erişim
-mno-hizasız-erişim
Adreslerden 16 ve 32 bit değerlerin okunmasını ve yazılmasını etkinleştirir (veya devre dışı bırakır)
16 veya 32 bit hizalı değil. Varsayılan olarak hizalanmamış erişim herkes için devre dışıdır
ARMv6 öncesi ve tüm ARMv6-M mimarileri ve diğer tüm mimariler için etkinleştirildi. Eğer
hizalanmamış erişim etkinleştirilmezse paketlenmiş veri yapılarındaki kelimelere erişilir
bir seferde bir bayt.

ARM özniteliği "Tag_CPU_unaligned_access" oluşturulan nesne dosyasında ayarlanacak
bu seçeneğin ayarına bağlı olarak doğru veya yanlış olarak. hizalanmamışsa
erişim etkinleştirilirse, "__ARM_FEATURE_UNALIGNED" önişlemci sembolü de olur
tanımladı.

-64 bit için-mneon
Skaler 64 bitlik işlemleri işlemek için Neon kullanılmasını sağlar. Bu varsayılan olarak devre dışıdır
çünkü verileri çekirdek kayıtlardan Neon'a taşımanın maliyeti yüksektir.

AVR Opsiyonlar

-mmcu=mcu
Atmel AVR komut seti mimarilerini (ISA) veya MCU tipini belirtin.

Bu seçenek için varsayılan değer @tie{}"avr2"dir.

GCC, aşağıdaki AVR cihazlarını ve ISA'ları destekler:

"avr2"
8@tie{}KiB'ye kadar program belleğine sahip "klasik" cihazlar. mcu@tie{}= "attiny22",
"attiny26", "at90c8534", "at90s2313", "at90s2323", "at90s2333", "at90s2343",
"at90s4414", "at90s4433", "at90s4434", "at90s8515", "at90s8535".

"avr25"
8@tie{}KiB program belleğine ve "MOVW" özelliğine sahip "klasik" cihazlar
talimat. 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"
16@tie{}KiB'ye kadar 64@tie{}KiB program belleğine sahip "klasik" cihazlar.
mcu@tie{}= "at43usb355", "at76c711".

"avr31"
128@tie{}KiB program belleğine sahip "klasik" cihazlar. mcu@tie{}= "atmega103",
"at43usb320".

"avr35"
16@tie{}KiB'ye kadar 64@tie{}KiB program belleğine sahip "klasik" cihazlar ve
"MOVW" talimatı. mcu@tie{}= "atmega16u2", "atmega32u2", "atmega8u2",
"attiny167", "at90usb162", "at90usb82".

"avr4"
8@tie{}KiB'ye kadar program belleğine sahip "gelişmiş" cihazlar. mcu@kravat{}=
"atmega48", "atmega48a", "atmega48p", "atmega8", "atmega8hva", "atmega8515",
"atmega8535", "atmega88", "atmega88a", "atmega88p", "atmega88pa", "at90pwm1",
"at90pwm2", "at90pwm2b", "at90pwm3", "at90pwm3b", "at90pwm81".

"avr5"
16@tie{}KiB'ye kadar 64@tie{}KiB program belleğine sahip "gelişmiş" cihazlar.
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"
128@tie{}KiB program belleğine sahip "gelişmiş" cihazlar. mcu@tie{}= "atmega128",
"atmega128rfa1", "atmega1280", "atmega1281", "atmega1284p", "at90can128",
"at90usb1286", "at90usb1287".

"avr6"
3 bayt PC'ye sahip "gelişmiş" cihazlar, yani 128@tie{}KiB'den fazla programa sahip
bellek. mcu@tie{}= "atmega2560", "atmega2561".

"avrxmega2"
8@tie{}KiB'den fazla ve 64@tie{}KiB'ye kadar program belleğine sahip "XMEGA" cihazları.
mcu@tie{}= "atxmega16a4", "atxmega16d4", "atxmega16x1", "atxmega32a4",
"atxmega32d4", "atxmega32x1".

"avrxmega4"
64@tie{}KiB'den fazla ve 128@tie{}KiB'ye kadar programa sahip "XMEGA" cihazları
bellek. mcu@tie{}= "atxmega64a3", "atxmega64d3".

"avrxmega5"
64@tie{}KiB'den fazla ve 128@tie{}KiB'ye kadar programa sahip "XMEGA" cihazları
bellek ve 64@tie{}KiB'den fazla RAM. mcu@tie{}= "atxmega64a1",
"atxmega64a1u".

"avrxmega6"
128@tie{}KiB'den fazla program belleğine sahip "XMEGA" cihazları. mcu@kravat{}=
"atxmega128a3", "atxmega128d3", "atxmega192a3", "atxmega192d3", "atxmega256a3",
"atxmega256a3b", "atxmega256a3bu", "atxmega256d3".

"avrxmega7"
128@tie{}KiB'den fazla program belleğine ve şundan daha fazlasına sahip "XMEGA" cihazları
64@tie{}KiB RAM. mcu@tie{}= "atxmega128a1", "atxmega128a1u".

"avr1"
Bu ISA, minimum AVR çekirdeği tarafından uygulanır ve yalnızca montajcı için desteklenir.
mcu@tie{}= "attiny11", "attiny12", "attiny15", "attiny28", "at90s1200".

-maccumulate-arg'lar
Giden işlev bağımsız değişkenlerini biriktirin ve aşağıdakiler için gerekli yığın alanını elde edin/bırakın
giden işlev bağımsız değişkenleri, işlev girişinde/sonsözünde bir kez. Bu seçenek olmadan,
giden argümanlar, bir işlev çağrılmadan önce gönderilir ve daha sonra açılır.

İşlev çağrısından sonra argümanları açmak AVR'de pahalı olabilir, bu nedenle
yığın alanını biriktirmek daha küçük yürütülebilir dosyalara yol açabilir çünkü argümanlar
böyle bir işlev çağrısından sonra yığından kaldırılmamalıdır.

Bu seçenek, birkaç arama gerçekleştiren işlevler için kod boyutunun küçülmesine neden olabilir.
printf benzeri işlevlere yapılan çağrılar gibi argümanlarını yığında alan işlevler.

-mbranch-maliyet=maliyet
Koşullu şube talimatları için şube maliyetlerini şu şekilde ayarlayın: maliyet. makul değerler
için maliyet küçük, negatif olmayan tam sayılardır. Varsayılan şube maliyeti 0'dır.

-mcall-prologları
Fonksiyonların girişleri/sonsözleri, uygun alt programlara yapılan çağrılar olarak genişletilir. kod
boyut daha küçüktür.

-nane8
"int" in 8 bit tam sayı olduğunu varsayın. Bu, her türün boyutunu etkiler: "char", 1'dir.
bayt, "int" 1 bayt, "uzun" 2 bayt ve "uzun uzun" 4 bayttır. Lütfen
bu seçeneğin C standartlarına uymadığını, ancak daha küçük sonuçlarla sonuçlandığını unutmayın.
kod boyutu.

-mno-kesmeler
Oluşturulan kod, donanım kesintileriyle uyumlu değil. Kod boyutu daha küçüktür.

-mrelax
"ÇAĞRI" yanıtını değiştirmeyi deneyin. Daha kısa olan "RCALL" ile "JMP" talimatı. "RJMP"
varsa talimat. "-mrelax" ayarı, yalnızca "--relax" seçeneğini ekler.
linker çağrıldığında linker komut satırı.

Sıçrama gevşemesi, atlama ofsetleri daha önce bilinmediği için bağlayıcı tarafından gerçekleştirilir.
kodu yer almaktadır. Bu nedenle, derleyici tarafından oluşturulan montajcı kodu aynıdır,
ancak yürütülebilir dosyadaki talimatlar, montajcıdaki talimatlardan farklı olabilir
kodu.

Bağlayıcı taslaklarına ihtiyaç duyulursa gevşetme açılmalıdır, "EIND" bölümüne bakın ve
aşağıdaki linker taslakları.

-mshort-çağrıları
Bu seçenek kullanımdan kaldırılmıştır ve GCC 4.8'de kaldırılacaktır. için bkz. "-mrelax"
yedek.

16@tie{}KiB veya daha fazla programa sahip cihazlarda bile "RCALL"/"RJMP" talimatlarını kullanın
bellek, yani "CALL" ve "JMP" talimatlarına sahip cihazlarda.

-msp8
Yığın işaretçi kaydına 8 bitlik bir kayıt gibi davranın, yani
yığın işaretçisi sıfırdır. Genel olarak, bu seçeneği elle ayarlamanız gerekmez.

Bu seçenek, derleyici tarafından dahili olarak multilib'leri seçmek ve oluşturmak için kullanılır.
"avr2" ve "avr25" mimarileri. Bu mimariler, cihazları olan ve olmayan cihazları karıştırır.
"SPH". "-mmcu=avr2" veya "-mmcu=avr25" dışındaki herhangi bir ayar için derleyici sürücüsü
bu seçeneği uygun derleyicinin komut satırından ekler veya kaldırır, çünkü
derleyici daha sonra cihazın veya mimarinin 8 bitlik bir yığın işaretçisine sahip olup olmadığını bilir ve böylece
"SPH" kaydı yok veya yok.

-mstrict-X
Donanım tarafından önerilen şekilde adres kaydı "X" kullanın. Bu, "X"in
yalnızca dolaylı, artımlı veya eksiltme öncesi adreslemede kullanılır.

Bu seçenek olmadan, "X" kaydı, "Y" veya "Z" ile aynı şekilde kullanılabilir.
daha sonra ek talimatlarla taklit edilir. Örneğin, bir değerin yüklenmesi
"X+const", negatif olmayan küçük bir "const < 64" ile bir kayıt defterine adresleme Rn is
olarak gerçekleştirildi

adiw r26, const ; X += sabit
ld , X ; = *X
sbiw r26, sabit ; X -= sabit

-mtiny-yığın
Yığın işaretçisinin yalnızca alt 8@tie{}bitlerini değiştirin.

"EIND" ve 128 Ki Bayt'tan fazla Flash'a sahip Cihazlar

Uygulamadaki işaretçiler 16@tie{}bit genişliğindedir. Bir işlevin veya etiketin adresi
dolaylı atlamaların ve çağrıların herhangi bir kodu hedefleyebilmesi için kelime adresi olarak temsil edilir
64@tie{}Ki kelime aralığında adres.

128@tie{}Ki bayttan fazla olan cihazlarda dolaylı atlamayı kolaylaştırmak için
program hafıza alanı, "EIND" olarak adlandırılan özel bir fonksiyon kaydı vardır.
"EICALL" veya "EIJMP" talimatları verildiğinde hedef adresin en önemli kısmı
Kullanılmış.

Bu cihazlardaki dolaylı atlamalar ve çağrılar derleyici tarafından aşağıdaki gibi işlenir ve
bazı sınırlamalara tabidir:

· Derleyici asla "EIND" ayarlamaz.

· Derleyici, "EICALL"/"EIJMP" yönergelerinde örtük olarak "EIND" kullanır veya şunları okuyabilir:
Bir "RET" aracılığıyla dolaylı bir çağrıyı/atlamayı taklit etmek için doğrudan "EIND"
talimat.

· Derleyici, "EIND"nin başlatma kodu sırasında veya işlem sırasında asla değişmediğini varsayar.
başvuru. Özellikle "EIND", fonksiyonda veya kesintide kaydedilmez/geri yüklenmez
hizmet rutini prolog/sonsöz.

· Fonksiyonlara ve hesaplanan goto'ya dolaylı çağrılar için, linker koçanları. taslaklar
atlama pedleri bazen denir trambolinler. Böylece, dolaylı çağrı/atlama şuraya atlar:
böyle bir saplama. Saplama, istenen adrese doğrudan bir atlamayı içerir.

· Bağlayıcının taslakları oluşturması için Bağlayıcı gevşemesi açık olmalıdır
doğru bir tüm durum. "-mrelax" derleyici seçeneğine ve liner seçeneğine bakın
"--rahatlamak". Bağlayıcının saplamalar oluşturması gereken ancak
gevşemeden ve yardımcı bir hata mesajı olmadan iptal eder.

· Varsayılan bağlayıcı komut dosyası "EIND = 0" olan kod için düzenlenmiştir. kod varsa
"EIND != 0" ile bir kurulum için çalışmak için, sırayla özel bir bağlayıcı komut dosyası kullanılmalıdır.
adı ".trambolines" ile başlayan bölümlerin bulunduğu bölüme yerleştirmek için
"EIND" işaret eder.

· libgcc'den gelen başlatma kodu asla "EIND"yi ayarlamaz. Başlangıç ​​kodunun bir karışım olduğuna dikkat edin
libgcc ve AVR-LibC'den kod. AVR-LibC'nin "EIND" üzerindeki etkisi için bkz. AVR-
LibC kullanım kılavuzu ("http://nongnu.org/avr-libc/user-manual/").

· Kullanıcıya özel başlatma kodunun "EIND"yi erken kurması meşrudur, örneğin
".init3" bölümünde bulunan başlatma kodu aracı. Bu tür kod önce çalışır
RAM'i başlatan ve yapıcıları çağıran genel başlatma kodu, ancak biraz sonra
AVR-LibC'den vektör tablosunun bulunduğu segmente "EIND" ayarlayan başlangıç ​​kodu
bulunmaktadır.

#Dahil etmek

Statik boşluk
__attribute__((section(".init3"),çıplak,kullanılmış,no_instrument_function))
init3_set_eind (geçersiz)
{
__asm ​​uçucu ("ldi r24,pm_hh8(__trambolines_start)\n\t"
"out %i0,r24" :: "n" (&EIND) : "r24","bellek");
}

"__trambolines_start" sembolü, bağlayıcı komut dosyasında tanımlanmıştır.

· Saplamalar, aşağıdaki iki koşul yerine getirildiğinde, bağlayıcı tarafından otomatik olarak oluşturulur.
ile:

-
(için kısa oluşturmak koçanları) şöyle:

LDI r24, lo8(gs( ))
LDI r25, hi8(gs( ))

-
dışında saplamaların bulunduğu bölüm.

· Derleyici, aşağıdaki durumlarda kod etiketleri için bu tür "gs" değiştiricileri yayar:

-
-
- -mcall-prologları>
komut satırı seçeneği.

-
tabloları belirtebilirsiniz -fno-atlama-tabloları komut satırı seçeneği.

-
-
· Bunun gibi sembolik olmayan adreslere atlamak değil desteklenen:

int main (void)
{
/* 0x2 word adresinde çağrı fonksiyonu */
dönüş ((int(*)(void)) 0x2)();
}

Bunun yerine, bir saplama ayarlanmalıdır, yani fonksiyon bir sembol aracılığıyla çağrılmalıdır.
(örnekte "func_4"):

int main (void)
{
harici int func_4 (geçersiz);

/* 0x4 bayt adresinde çağrı fonksiyonu */
dönüş func_4();
}

ve uygulama "-Wl,--defsym,func_4=0x4" ile bağlanmalıdır. Alternatif olarak, "func_4"
bağlayıcı komut dosyasında tanımlanabilir.

"RAMPD", "RAMPX", "RAMPY" ve "RAMPZ" Özel Fonksiyon Kayıtlarının Kullanımı

Bazı AVR cihazları, erişilebilen 64@tie{}KiB aralığından daha büyük bellekleri destekler
16 bit işaretçiler ile. Bu 64@tie{}KiB aralığının dışındaki bellek konumlarına erişmek için,
"RAMP" kaydının içeriği adresin yüksek kısmı olarak kullanılır: "X", "Y", "Z"
adres kaydı "RAMPX", "RAMPY", "RAMPZ" özel işleviyle birleştirilir
geniş bir adres almak için sırasıyla kaydolun. Benzer şekilde, "RAMPD" ile birlikte kullanılır
doğrudan adresleme

· Başlangıç ​​kodu, "RAMP" özel fonksiyon kayıtlarını sıfır ile başlatır.

· Eğer bir AVR adlı Adres Adlandırılmış boşluklar adres uzay genel veya "__flash" dışında
kullanılır, ardından "RAMPZ" işlemden önce gerektiği gibi ayarlanır.

· Cihaz 64@tie{KiB}'den büyük RAM'i destekliyorsa ve derleyicinin değişmesi gerekiyorsa
Bir işlemi gerçekleştirmek için "RAMPZ", işlemden sonra "RAMPZ" sıfırlanır.

· Cihaz belirli bir "RAMP" kaydı ile birlikte geliyorsa, ISR prologue/epilogue
bu SFR'yi kaydeder/geri yükler ve ISR kodunun olası olması durumunda sıfırla başlatır.
(dolaylı olarak) kullanın.

· 64@tie{KiB}'den büyük RAM, AVR hedefleri için GCC tarafından desteklenmez. Eğer kullanırsan
16 bitlik adres aralığı dışındaki konumlardan okumak ve değiştirmek için satır içi montajcı
"RAMP" kayıtlarından biri, erişimden sonra sıfıra sıfırlamanız gerekir.

AVR Yerleşik Makrolar

GCC, kullanıcı kodunun varlığı veya
özelliklerin olmaması. Aşağıdaki yerleşik makrolardan hemen hemen herhangi biri cihazdan çıkarılmıştır.
yetenekleri ve dolayısıyla "-mmcu=" komut satırı seçeneği tarafından tetiklenir.

Daha da fazla AVR'ye özgü yerleşik makro için bkz. AVR adlı Adres Uzayları ve AVR Gömme
fonksiyonlar.

"__AVR_ARCH__"
Mimariyi tanımlayan bir ondalık sayıya çözümlenen yerleşik makro ve
"-mmcu='ya bağlıdırmcu" seçenek. Olası değerler şunlardır:

2, 25, 3, 31, 35, 4, 5, 51, 6, 102, 104, 105, 106, 107

için mcu="avr2", "avr25", "avr3", "avr31", "avr35", "avr4", "avr5", "avr51", "avr6",
sırasıyla "avrxmega2", "avrxmega4", "avrxmega5", "avrxmega6", "avrxmega7". Eğer mcu
bir aygıtı belirtir, bu yerleşik makro buna göre ayarlanır. örneğin, ile
"-mmcu=atmega8" makrosu 4 olarak tanımlanacaktır.

"__AVR_cihaz__"
"-mmcu=" ayarıcihaz" cihazın adını yansıtan bu yerleşik makroyu tanımlar.
Örneğin, "-mmcu=atmega8" yerleşik makroyu "__AVR_ATmega8__" tanımlar,
"-mmcu=attiny261a", "__AVR_ATtiny261A__" vb. tanımlar.

Yerleşik makroların adları "__AVR_cihaz__" nerede cihaz olduğunu
AVR kullanım kılavuzundaki cihaz adı. Arasındaki fark cihaz yerleşik olarak
makro ve cihaz "-mmcu=cihaz" ikincisi her zaman küçük harftir.

If cihaz bir cihaz değil, yalnızca "avr51" gibi bir çekirdek mimaridir, bu makro
tanımlanamaz.

"__AVR_XMEGA__"
Cihaz/mimari, XMEGA cihaz ailesine aittir.

"__AVR_HAVE_ELPM__"
Cihaz "ELPM" talimatına sahiptir.

"__AVR_HAVE_ELPMX__"
Cihazda "ELPM Rn,Z" ve "ELPM Rn,Z+" talimatları.

"__AVR_HAVE_MOVW__"
Cihaz, 16 bitlik kayıt-kayıt hareketlerini gerçekleştirmek için "MOVW" talimatına sahiptir.

"__AVR_HAVE_LPMX__"
Cihaz, "LPM Rn,Z" ve "LPM Rn,Z+" talimatları.

"__AVR_HAVE_MUL__"
Cihazın bir donanım çarpanı vardır.

"__AVR_HAVE_JMP_CALL__"
Cihaz "JMP" ve "CALL" talimatlarına sahiptir. Bu, cihazlar için geçerlidir.
en az 16@tie{}KiB program belleği ve "-mshort-calls" ayarlanmamışsa.

"__AVR_HAVE_EIJMP_EICALL__"
"__AVR_3_BYTE_PC__"
Cihaz "EIJMP" ve "EICALL" talimatlarına sahiptir. Cihazlar için durum bu
128@tie{}KiB'den fazla program belleği ile. Bu aynı zamanda programın
sayaç (PC) 3@tie{}bayt genişliğindedir.

"__AVR_2_BYTE_PC__"
Program sayacı (PC) 2@tie{}bayt genişliğindedir. Bu, en fazla olan cihazlar için geçerlidir.
128@tie{}KiB program belleği.

"__AVR_HAVE_8BIT_SP__"
"__AVR_HAVE_16BIT_SP__"
Yığın işaretçisi (SP) kaydı, 8 bitlik sırasıyla 16 bitlik kayıt olarak kabul edilir.
derleyici. Bu makroların tanımı "-mtiny-stack" tarafından etkilenir.

"__AVR_HAVE_SPH__"
"__AVR_SP8__"
Cihaz, SPH (yığın işaretçisinin yüksek kısmı) özel fonksiyon kaydına sahiptir veya
sırasıyla 8 bitlik bir yığın işaretçisi. Bu makroların tanımı şunlardan etkilenir:
"-mmcu=" ve "-mmcu=avr2" ve "-mmcu=avr25" durumlarında ayrıca "-msp8" ile.

"__AVR_HAVE_RAMPD__"
"__AVR_HAVE_RAMPX__"
"__AVR_HAVE_RAMPY__"
"__AVR_HAVE_RAMPZ__"
Cihaz "RAMPD", "RAMPX", "RAMPY", "RAMPZ" özel fonksiyon kaydına sahiptir,
respectivamente.

"__NO_KESİNTİLER__"
Bu makro, "-mno-interrupts" komut satırı seçeneğini yansıtır.

"__AVR_ERRATA_SKIP__"
"__AVR_ERRATA_SKIP_JMP_CALL__"
Bazı AVR cihazları (AT90S8515, ATmega103) 32 bitlik talimatları atlamamalıdır.
donanım hatası. Atlama talimatları "SBRS", "SBRC", "SBIS", "SBIC" ve "CPSE"dir.
İkinci makro yalnızca "__AVR_HAVE_JMP_CALL__" da ayarlanmışsa tanımlanır.

"__AVR_SFR_OFFSET__=telafi etmek"
I/O özel fonksiyon kayıtlarını doğrudan "IN" gibi adresleyebilen komutlar,
"OUT", "SBI" vb., bir talimatla adreslenmiş gibi farklı bir adres kullanabilir.
"LD" veya "STS" gibi RAM'e erişin. Bu ofset, cihaz mimarisine bağlıdır ve
ilgili I/O@tie{}adresini almak için RAM adresinden çıkarılacaktır.

"__WITH_AVRLIBC__"
Derleyici, AVR-Libc ile birlikte kullanılmak üzere yapılandırılmıştır. Bkz.
"--with-avrlibc" yapılandırma seçeneği.

Blackfin Opsiyonlar

-mcpu=cpu[-sirevizyon]
Hedef Blackfin işlemcisinin adını belirtir. Şu anda, cpu biri olabilir
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. isteğe bağlı sirevizyon belirtir
hedef Blackfin işlemcisinin silikon revizyonu. için mevcut herhangi bir geçici çözüm
hedeflenen silikon revizyonu etkinleştirilecektir. Eğer sirevizyon is Yok, hiçbir geçici çözüm
etkinleştirilmiş. Eğer sirevizyon is herhangi, hedeflenen işlemci için tüm geçici çözümler
etkinleştirilmiş. "__SILICON_REVISION__" makrosu iki onaltılık basamakla tanımlanır
silikon revizyonunda büyük ve küçük sayıları temsil eder. Eğer sirevizyon is
Yok, "__SILICON_REVISION__" tanımlı değil. Eğer sirevizyon is herhangi,
"__SILICON_REVISION__", 0xffff olarak tanımlanır. Bu isteğe bağlı ise sirevizyon değil
kullanıldığında, GCC, hedeflenen Blackfin'in bilinen en son silikon revizyonunu varsayar
işlemci.

Için destek bf561 eksik. İçin bf561, Yalnızca işlemci makrosu tanımlanır.
Bu seçenek olmadan, bf532 varsayılan olarak işlemci olarak kullanılır. karşılık gelen
için önceden tanımlanmış işlemci makroları cpu tanımlanmak istenmektedir. Ve için bfin-elf alet zinciri,
bu, libgloss tarafından sağlanan donanım BSP'sinin aşağıdaki durumlarda bağlanmasına neden olur. -msim değil
Verilen.

-msim
Programın simülatörde çalıştırılacağını belirtir. Bu, simülatöre neden olur
Bağlantı kurulacak libgloss tarafından sağlanan BSP. Bu seçenek yalnızca bfin-elf
alet zinciri. gibi bazı diğer seçenekler -orta-paylaşılan-kütüphane ve -mfdpic, ima etmek
-msim.

-momit-yaprak-çerçeve-işaretçi
Çerçeve işaretçisini yaprak işlevleri için bir kayıtta tutmayın. Bu,
çerçeve işaretçilerini kaydetme, ayarlama ve geri yükleme talimatları ve ekstra bir kayıt yapar
yaprak fonksiyonlarında mevcuttur. Seçenek -fomit-frame-işaretçi çerçeveyi kaldırır
hata ayıklamayı zorlaştırabilecek tüm işlevler için işaretçi.

-mspecld-anomali
Etkinleştirildiğinde, derleyici oluşturulan kodun
atlama talimatlarından sonra spekülatif yükler. Bu seçenek kullanılırsa,
"__WORKAROUND_SPECULATIVE_LOADS" tanımlandı.

-mno-specld-anomali
Spekülatif yüklerin oluşmasını önlemek için fazladan kod üretmeyin.

-mcsync-anomali
Etkinleştirildiğinde, derleyici oluşturulan kodun CSYNC içermediğinden emin olacaktır.
veya SSYNC komutları, koşullu dallardan hemen sonra. Bu seçenek kullanılırsa,
"__WORKAROUND_SPECULATIVE_SYNCS" tanımlandı.

-mno-csync-anomali
CSYNC veya SSYNC komutlarının da oluşmasını önlemek için fazladan kod oluşturmayın
koşullu bir daldan hemen sonra.

-mlow-64k
Etkinleştirildiğinde, derleyici, tüm
program düşük 64k belleğe sığar.

-düşük-64k
Programın keyfi olarak büyük olduğunu varsayın. Bu varsayılandır.

-mstack-kontrol-l1
uClinux tarafından L1 karalama defteri belleğine yerleştirilen bilgileri kullanarak yığın denetimi yapın
çekirdek.

-orta-paylaşılan-kütüphane
Kitaplık kimliği yöntemi aracılığıyla paylaşılan kitaplıkları destekleyen kod oluşturun. Bu izin verir
sanal belleği olmayan bir ortamda yerinde ve paylaşılan kitaplıkları yürütmek için
yönetmek. Bu seçenek şu anlama gelir: -fPIC. Birlikte bfin-elf hedef, bu seçenek ima eder
-msim.

-mno-id-paylaşılan-kütüphane
Kimlik tabanlı paylaşılan kitaplıkların kullanıldığını varsaymayan kod oluşturun. Bu
varsayılan.

-mleaf-id-paylaşılan-kütüphane
Kitaplık kimliği yöntemi aracılığıyla paylaşılan kitaplıkları destekleyen, ancak
bu kitaplığın veya yürütülebilir dosyanın, diğer kimlik paylaşımlı kitaplıklara bağlanmayacağını.
Bu, derleyicinin atlamalar ve çağrılar için daha hızlı kod kullanmasını sağlar.

-mno-leaf-id-paylaşılan-kütüphane
Derlenmekte olan kodun, herhangi bir ID paylaşımlı kitaplığa bağlanmayacağını varsaymayın.
Atlama ve çağrı insn'leri için daha yavaş kod oluşturulacaktır.

-mshared-library-id=n
Derlenmekte olan kimlik tabanlı paylaşılan kitaplığın kimlik numarasını belirtir.
0 değerinin belirtilmesi daha kompakt kod üretecek, diğer değerlerin belirtilmesi ise
bu numaranın mevcut kütüphaneye tahsis edilmesini zorlayın, ancak daha fazla yer yok veya
bu seçeneği atlamaktan daha verimli zaman.

-msep-veri
Veri segmentinin farklı bir bellek alanına yerleştirilmesine izin veren kod oluşturun
metin bölümünden. Bu, olmayan bir ortamda yerinde yürütmeye izin verir.
metin bölümüne karşı yer değiştirmeleri ortadan kaldırarak sanal bellek yönetimi.

-mno-eylül-veri
Veri segmentinin metin segmentini takip ettiğini varsayan kod oluşturun. Bu
varsayılan.

-mlong-çağrıları
-çok uzun aramalar
Derleyiciye, önce adresini yükleyerek işlev çağrıları yapmasını söyler.
bir kayıtta işlev görür ve ardından bu kayıt üzerinde bir alt program çağrısı gerçekleştirir. Bu
hedef işlev 24 bitlik adresleme aralığının dışındaysa anahtar gereklidir.
alt rutin çağrı talimatının ofset tabanlı versiyonu.

Bu özellik varsayılan olarak etkin değildir. belirtme -çok uzun aramalar geri yükleyecek
Varsayılan davranış. Bu anahtarların derleyicinin nasıl oluşturduğu üzerinde hiçbir etkisi olmadığını unutmayın.
işlev çağrılarını işlev işaretçileri aracılığıyla işlemek için kod.

-mfast-fp
Hızlı kayan nokta kitaplığıyla bağlantı kurun. Bu kitaplık bazı IEEE'leri rahatlatır
girdileri Sayı Değil'e (NAN) karşı kontrol etmek için kayan nokta standardı kuralları,
performans ilgisi.

-minline-plt
Bilinmeyen işlevlere yapılan işlev çağrılarında PLT girişlerinin satır içine alınmasını etkinleştirin.
yerel olarak bağlayın. Olmadan etkisi yok -mfdpic.

-multicore
Çok çekirdekli Blackfin işlemci için bağımsız uygulama oluşturun. Uygun başlangıç ​​dosyaları ve
çok çekirdeği desteklemek için bağlantı komut dosyaları kullanılacaktır. Bu seçenek tanımlar
"__BFIN_MULTICORE". Sadece ile kullanılabilir -mcpu=bf561[-sirevizyon]. kullanılabilir
ile -mcorea or -mcoreb. olmadan kullanılırsa -mcorea or -mcoreb, tek
uygulama/çift çekirdekli programlama modeli kullanılmaktadır. Bu modelde, ana işlevi
Core B, coreb_main olarak adlandırılmalıdır. ile kullanılırsa -mcorea or -mcoreb, bir
çekirdek programlama modeli başına uygulama kullanılır. Bu seçenek kullanılmazsa, tek
çekirdek uygulama programlama modeli kullanılmıştır.

-mcorea
Çekirdek başına bir uygulama kullanırken BF561'in Çekirdek A'sı için bağımsız uygulama oluşturun
programlama modeli Core A'yı desteklemek için uygun başlangıç ​​dosyaları ve bağlantı komut dosyaları kullanılacaktır.
Bu seçenek "__BFIN_COREA"yı tanımlar. İle kullanılmalıdır -multicore.

-mcoreb
Çekirdek başına bir uygulama kullanırken BF561'in Core B'si için bağımsız uygulama oluşturun
programlama modeli Core B'yi desteklemek için uygun başlangıç ​​dosyaları ve bağlantı komut dosyaları kullanılacaktır.
Bu seçenek "__BFIN_COREB" öğesini tanımlar. Bu seçenek kullanıldığında coreb_main olmalıdır.
ana yerine kullanılır. İle kullanılmalıdır -multicore.

-msdram
SDRAM için bağımsız uygulama oluşturun. Uygun başlangıç ​​dosyaları ve bağlantı komut dosyaları
Uygulamayı SDRAM'e koymak için kullanılır. Yükleyici, yüklemeden önce SDRAM'i başlatmalıdır
uygulamayı SDRAM'e aktarın. Bu seçenek "__BFIN_SDRAM" öğesini tanımlar.

-micplb
ICPLB'lerin çalışma zamanında etkinleştirildiğini varsayın. Bunun belirli bir anomali üzerinde etkisi vardır.
geçici çözümler. Linux hedefleri için varsayılan, ICPLB'lerin etkinleştirildiğini varsaymaktır; için
bağımsız uygulamalar varsayılan kapalıdır.

C6X Opsiyonlar

-mart=isim
Bu, hedef mimarinin adını belirtir. GCC, belirlemek için bu adı kullanır
montaj kodu oluştururken ne tür talimatlar verebilir. İzin verilebilir
isimler şunlardır: c62x, c64x, c64x+, c67x, c67x+, c674x.

-big-endian
Büyük endian hedefi için kod oluşturun.

-küçük endian
Küçük bir endian hedefi için kod oluşturun. Bu varsayılandır.

-msim
Simülatöre uygun başlangıç ​​dosyalarını ve bağlayıcı komut dosyasını seçin.

-msdata=varsayılan
Küçük global ve statik verileri .neardata tarafından işaret edilen bölüm,
"B14" kaydedin. Küçük başlatılmamış genel ve statik verileri .bss Bölüm,
bitişik olan .neardata Bölüm. Küçük salt okunur verileri .rodata
Bölüm. Büyük veri parçaları için kullanılan ilgili bölümler şunlardır: .fardata, .uzak
ve .const.

-msdata=tümü
Sadece küçük nesneleri değil tüm verileri küçük veriler için ayrılmış bölümlere koyun ve
bunlara erişmek için "B14" kaydına göre adreslemeyi kullanın.

-msdata=yok
Küçük veriler için ayrılmış bölümleri kullanmayın ve mutlak adresleri kullanın.
tüm verilere erişin. Başlatılan tüm global ve statik verileri .fardata Bölüm,
ve içindeki tüm başlatılmamış veriler .uzak Bölüm. Tüm sabit verileri .const
Bölüm.

CRIS Opsiyonlar

Bu seçenekler, özellikle CRIS portları için tanımlanmıştır.

-mart=mimari tipi
-mcpu=mimari tipi
Belirtilen mimari için kod oluşturun. için seçimler mimari tipi vardır
v3, v8 ve v10 sırasıyla ETRAX 4, ETRAX 100 ve ETRAX 100 LX için. Varsayılan v0
varsayılanın olduğu cris-axis-linux-gnu dışında v10.

-mtune=mimari tipi
Ayarla mimari tipi hariç, oluşturulan kod hakkında geçerli olan her şey
ABI ve mevcut talimatlar seti. için seçimler mimari tipi vardır
ile aynı -mart=mimari tipi.

-mmax-yığın-çerçevesi=n
Bir işlevin yığın çerçevesi aşıldığında uyar n bayt.

-metrax4
-metrax100
Seçenekler -metrax4 ve -metrax100 için eşanlamlıdır -mart=v3 ve -mart=v8
respectivamente.

-mmul-hata-geçici çözüm
-mno-mul-bug-geçici çözüm
CPU modelleri için "muls" ve "mulu" talimatlarındaki bir hatayı giderin.
geçerlidir. Bu seçenek varsayılan olarak etkindir.

-mpdebug
Derleme kodunda CRIS'e özgü ayrıntılı hata ayıklamayla ilgili bilgileri etkinleştirin. Bu
seçeneği de kapatma etkisine sahiptir. #UYGULAMA YOK biçimlendirilmiş kod göstergesi
Montaj dosyasının başında assembler.

-mcc-init
Önceki talimattan koşul kodu sonuçlarını kullanmayın; her zaman karşılaştırmak yayar ve
koşul kodlarını kullanmadan önce talimatları test edin.

-mno-yan etkiler
Sonradan farklı adresleme modlarında yan etkileri olan komutları yayınlamayın.
artış.

-mstack-hizalama
-mno-yığın hizalama
-mdata hizalama
-mno-veri hizalama
-mconst-hizalama
-mno-const-hizalama
Bu seçenekler (seçenek yok), yığın çerçevesi için düzenler (düzenlemeleri ortadan kaldırır),
maksimum tek veri erişim boyutu için hizalanacak bireysel veriler ve sabitler
seçilen CPU modeli için. Varsayılan, 32 bit hizalamayı düzenlemektir. ABI
yapı düzeni gibi ayrıntılar bu seçeneklerden etkilenmez.

-m32-bit
-m16-bit
-m8-bit
Yukarıdaki yığın verileri ve sabit hizalama seçeneklerine benzer şekilde, bu seçenekler aşağıdakileri düzenler:
yığın çerçevesi, yazılabilir veriler ve sabitlerin tümü 32-bit, 16-bit veya 8-bit hizalı olabilir.
Varsayılan, 32 bit hizalamadır.

-mno-prolog-sonsöz
-mprologue-sonsöz
İle -mno-prolog-sonsöz, kurulan normal fonksiyon prologu ve epilog
yığın çerçevesi atlanır ve geri dönüş talimatı veya dönüş dizisi yoktur
kodda oluşturulur. Bu seçeneği yalnızca görsel inceleme ile birlikte kullanın.
derlenmiş kod: çağrı kaydedilen kayıtların olması gerektiğinde hiçbir uyarı veya hata oluşturulmaz
kaydedildi veya yerel değişken için depolama ayrılması gerekiyor.

-mno-gotplt
-mgotplt
İle -fpic ve -fPIC, yüklenen talimat dizileri oluşturmayın (oluşturmayın)
yerine GOT'un PLT bölümündeki işlevler için adresler (diğerlerinde geleneksel
mimariler) PLT'ye çağrı yapar. Varsayılan -mgotplt.

-melf
Eski operasyonsuz seçenek yalnızca cris-axis-elf ve cris-axis-linux-gnu ile tanınır
hedefler.

-mlinux
Eski operasyonsuz seçeneği yalnızca cris-axis-linux-gnu hedefiyle tanınır.

-sim
cris-axis-elf için tanınan bu seçenek, giriş-çıkış ile bağlantı kurmayı düzenler.
bir simülatör kitaplığından işlevler. Kod, başlatılmış veriler ve sıfır başlatılmış veriler
ardışık olarak tahsis edilir.

-sim2
Facebok sayfasını beğenin : -sim, ancak 0x40000000 ve sıfırda başlatılan verileri bulmak için bağlayıcı seçeneklerini iletin.
0x80000000'de başlatılmış veriler.

CR16 Opsiyonlar

Bu seçenekler, özellikle CR16 bağlantı noktaları için tanımlanmıştır.

-mmac
Çoklu biriktirme talimatlarının kullanımını etkinleştirin. Varsayılan olarak devre dışıdır.

-mcr16cplus
-mcr16c
CR16C veya CR16C+ mimarisi için kod oluşturun. CR16C+ mimarisi varsayılandır.

-msim
Simülatör ile uyumlu olan libsim.a kütüphanesine link verir. elf için geçerli
sadece derleyici.

-nane32
Tamsayı türünü 32 bit genişliğinde seçin.

-mbit-op'lar
Bit manipülasyonları için sbit/cbit talimatları üretir.

-mdata-modeli=model
Bir veri modeli seçin. için seçimler model vardır yakın, uzak or orta. orta varsayılandır.
Bununla birlikte, uzak CR16C mimarisi olmadığı için -mcr16c seçeneği seçildiğinde geçerli değildir.
uzak veri modelini destekler.

Darwin Opsiyonlar

Bu seçenekler, Darwin işletim sistemini çalıştıran tüm mimariler için tanımlanmıştır.

Darwin'deki FSF GCC, "şişman" nesne dosyaları oluşturmaz; için bir nesne dosyası oluşturacaktır
hedeflemek için inşa edildiği tek mimari. Apple'ın Darwin'deki GCC'si yaratıyor
birden fazla ise "yağ" dosyaları -ARCH seçenekler kullanılır; bunu derleyiciyi çalıştırarak yapar veya
bağlayıcı birden çok kez ve sonuçları birlikte birleştirerek lipo.

Oluşturulan dosyanın alt türü (gibi ppc7400 or ppc970 or i686) tarafından belirlenir.
GCC'nin hedeflediği ISA'yı belirten bayraklar, örneğin -mcpu or -Mart.
-force_cpusubtype_ALL seçeneği bunu geçersiz kılmak için kullanılabilir.

Darwin araçları, bir ISA uyumsuzluğu ile sunulduğunda davranışlarında değişiklik gösterir. NS
montajcı, as, yalnızca alt türü için geçerli olan talimatların kullanılmasına izin verir.
oluşturduğu dosyadır, bu nedenle 64 bitlik talimatları bir dosyaya koyamazsınız. ppc750 nesne dosyası.
Paylaşılan kitaplıklar için bağlayıcı, /usr/bin/libtool, başarısız olur ve istenirse bir hata yazdırır
girdi dosyalarından daha az kısıtlayıcı bir alt türe sahip paylaşılan bir kitaplık oluşturmak (için
örneğin, bir koymaya çalışıyorum ppc970 nesne dosyasında bir ppc7400 kütüphane). bağlayıcı
yürütülebilir dosyalar, ld, sessizce yürütülebilir dosyaya aşağıdakilerden herhangi birinin en kısıtlayıcı alt türünü verir.
onun giriş dosyaları.

-Fdir
Çerçeve dizini ekleyin dir aranacak dizinler listesinin başına
başlık dosyaları için. Bu dizinler, tarafından belirtilenlerle karıştırılır. -I
seçenekler ve soldan sağa sırayla taranır.

Çerçeve dizini, içinde çerçeveler bulunan bir dizindir. Bir çerçeve bir
ile dizin "Başlıklar" ve / veya "Özel Başlıklar" doğrudan içinde bulunan dizin
şunda biter ".çerçeve". Bir çerçevenin adı bu dizinin adıdır.
hariç ".çerçeve". Çerçeveyle ilişkili başlıklar aşağıdakilerden birinde bulunur:
ile bu iki dizin "Başlıklar" önce aranıyor. Bir alt çerçeve bir
bir çerçevenin içindeki çerçeve dizini "Çerçeveler" dizin. şunları içerir:
alt çerçeve başlıkları yalnızca aşağıdakileri içeren bir çerçevenin başlığında görünebilir:
alt çerçevede veya bir kardeş alt çerçeve başlığında. Aşağıdaki durumlarda iki alt çerçeve kardeştir:
aynı çerçevede oluşurlar. Bir alt çerçeve, bir alt çerçeve ile aynı ada sahip olmamalıdır.
çerçevesinde, bunun ihlal edilmesi durumunda bir uyarı verilecektir. Şu anda bir alt çerçeve
alt çerçevelere sahip olamaz, gelecekte mekanizma destekleyecek şekilde genişletilebilir
Bugün nasılsın. Standart çerçeveler şurada bulunabilir: "/Sistem/Kütüphane/Çerçeveler" ve
"/Kütüphane/Çerçeveler". Dahil etme örneği, "#include ",
nerede iskelet çerçevenin adını belirtir ve header.h içinde bulunur
"Özel Başlıklar" or "Başlıklar" dizin.

-iframeworkdir
Facebok sayfasını beğenin : -F dizinin bir sistem dizini olarak değerlendirilmesi dışında. Ana fark
bunun arasında -iframework ve -F bununla mı -iframework derleyici uyarmıyor
aracılığıyla bulunan başlık dosyalarında bulunan yapılar hakkında dir. Bu seçenek geçerlidir
sadece C dil ailesi için.

-kusmuş
Kullanılan semboller için hata ayıklama bilgilerini yayınlayın. STABS hata ayıklama formatı için,
bu sağlar -feliminate-kullanılmayan-hata ayıklama-sembolleri. Bu, varsayılan olarak AÇIK'tır.

-gfull
Tüm semboller ve türler için hata ayıklama bilgilerini yayınlayın.

-mmacosx-sürüm-min=versiyon
Bu yürütülebilir dosyanın üzerinde çalışacağı en eski MacOS X sürümü versiyon. Tipik
değerleri versiyon 10.1, 10.2 ve 10.3.9'u içerir.

Derleyici varsayılan olarak sistemin başlıklarını kullanmak üzere oluşturulmuşsa, varsayılan olarak
bu seçenek, derleyicinin üzerinde çalıştığı sistem sürümüdür, aksi takdirde
varsayılan, olabildiğince çok sistem ve kod tabanıyla uyumlu seçimler yapmaktır.
mümkün.

-mçekirdek
Çekirdek geliştirme modunu etkinleştirin. NS -mçekirdek seçenek kümeleri -statik, -fno-ortak,
-fno-cxa-exit, -fno-istisnalar, -fno-arama dışı-istisnalar, -fapple-kext, -fno-zayıf
ve -fno-rtti uygulanabilir olduğunda. Bu mod ayrıca ayarlar -mno-altivec, -msoft-float,
-fno-yerleşik ve -mlong-dal PowerPC hedefleri için.

-mon-byte-bool
için varsayılanları geçersiz kıl bool ki sizeof(bool)==1. Varsayılan olarak sizeof(bool) is 4
Darwin/PowerPC için derlerken ve 1 Darwin/x86 için derlerken, bu seçenek
x86 üzerinde hiçbir etkisi yoktur.

Uyarı: The -mon-byte-bool anahtar, GCC'nin ikili olmayan kod oluşturmasına neden olur
bu anahtar olmadan oluşturulan kodla uyumludur. Bu anahtarın kullanılması gerektirebilir
sistem kitaplıkları da dahil olmak üzere bir programdaki diğer tüm modülleri yeniden derlemek. Bunu kullan
varsayılan olmayan bir veri modeline uymak için geçiş yapın.

-mfix-ve-devam et
-düzelt-ve-devam et
-findirect-veri
Hızlı geri dönüş geliştirme için uygun kod oluşturun. gdb'yi etkinleştirmek için gerekli
".o" dosyalarını dinamik olarak zaten çalışan programlara yükleyin. -findirect-veri ve
-düzelt-ve-devam et geriye dönük uyumluluk için sağlanmıştır.

-tüm_yükler
Statik arşiv kitaplıklarının tüm üyelerini yükler. adamı görmek ld(1) daha fazla bilgi için.

-arch_errors_fatal
Yanlış mimariye sahip dosyalarla ilgili hataların ölümcül olmasına neden olun.

-bind_at_load
Çıktı dosyasının dinamik bağlayıcının tümünü bağlayacağı şekilde işaretlenmesine neden olur.
dosya yüklendiğinde veya başlatıldığında tanımsız referanslar.

Bundle
Bir Mach-o paket formatı dosyası üretin. adamı görmek ld(1) daha fazla bilgi için.

-paket_yükleyici çalıştırılabilir
Bu seçenek, çalıştırılabilir bu, derleme çıktı dosyasını yükleyecek
bağlantılı. adamı görmek ld(1) daha fazla bilgi için.

-dinamik kitaplık
Bu seçenek geçtiğinde, GCC yürütülebilir bir dosya yerine dinamik bir kitaplık üretecektir.
bağlarken, Darwin'i kullanarak kütüphane aracı Komut.

-force_cpusubtype_ALL
Bu, GCC'nin çıktı dosyasının HEPSİ tarafından kontrol edilen bir alt tip yerine
the -mcpu or -Mart seçeneği.

-izin verilebilir_istemci Müşteri Adı
-Müşteri Adı
-uyumluluk_versiyonu
-şimdiki versiyonu
-dead_strip
-bağımlılık-dosyası
-dylib_dosyası
-dylinker_install_name
-dinamik
-dışa aktarılan_symbols_list
-dosya listesi
-flat_ad alanı
-force_flat_namespace
-headerpad_max_install_names
-image_base
-içinde
-kurulum_adı
-keep_private_externs
-çoklu_modül
-çarpma_tanımlı
-multiply_Definition_unused
-noall_load
-no_dead_strip_inits_and_terms
-nofix ön bağlama
-nomultidef'ler
-bağlanma yok
-noseglinkedit
-pagezero_size
-önceden bağlamak
-prebind_all_twolevel_modules
-özel_paket
-read_only_relocs
-sektalign
-sekt nesne sembolleri
-neden yük
-seg1addr
-mezhep oluşturmak
-sekt nesne sembolleri
-sektör
-segaddr
-segs_read_only_addr
-segs_read_write_addr
-seg_addr_tablosu
-seg_addr_tablo_dosyaadı
-seglinkedit
-segprot
-segs_read_only_addr
-segs_read_write_addr
-tek_modül
-statik
-alt_kütüphane
-alt_umbrella
-iki düzeyli_ad alanı
-şemsiye
-Tanımsız
-exported_symbols_list
-weak_reference_mismatches
-neler yüklendi
Bu seçenekler Darwin bağlayıcısına iletilir. Darwin linker man sayfası açıklar
onları ayrıntılı olarak.

Aralık Alfa Opsiyonlar

Bunlar -m DEC Alpha uygulamaları için seçenekler tanımlanmıştır:

-mno-yumuşak-şamandıra
-msoft-float
Kayan nokta için donanım kayan nokta yönergelerini kullanın (kullanmayın)
operasyonlar. Ne zaman -msoft-float belirtilir, işlevler libgcc.a alışılacak
kayan nokta işlemlerini gerçekleştirin. Taklit eden rutinlerle değiştirilmedikçe
kayan nokta işlemleri veya bu tür öykünmeleri çağıracak şekilde derlenmiş
rutinler, bu rutinler kayan nokta işlemleri yayınlayacaktır. eğer derleme yapıyorsan
kayan nokta işlemleri olmayan bir Alfa için kitaplığın
onları çağırmamak için inşa edilmiştir.

Kayan nokta işlemleri olmayan Alfa uygulamalarının sahip olması gerektiğini unutmayın.
kayan nokta kayıtları.

-mfp-reg
-mno-fp-reg'ler
Kayan nokta kayıt kümesini kullanan (kullanmayan) kod oluşturun. -mno-fp-reg'ler
ima -msoft-float. Kayan nokta kayıt seti kullanılmazsa, kayan nokta
işlenenler tamsayı kayıtlarında tamsayılar ve kayan noktaymış gibi iletilir
sonuçlar $f0 yerine $0 olarak iletilir. Bu standart olmayan bir arama dizisidir, bu nedenle
derlenmiş kod tarafından çağrılan kayan nokta bağımsız değişkeni veya dönüş değeri olan herhangi bir işlev
ile -mno-fp-reg'ler ayrıca bu seçenekle derlenmelidir.

Bu seçeneğin tipik bir kullanımı, kullanılmayan ve dolayısıyla ihtiyaç duyulan bir çekirdek oluşturmaktır.
herhangi bir kayan nokta kaydı kaydetmeyin ve geri yüklemeyin.

-mieee
Alpha mimarisi, maksimum için optimize edilmiş kayan nokta donanımı uygular
verim. Çoğunlukla IEEE kayan nokta standardı ile uyumludur. Yine de,
tam uyumluluk için yazılım yardımı gereklidir. Bu seçenek kod üretir
tamamen IEEE uyumlu kod dışında ki kesin olmayan bayrak korunmaz (aşağıya bakın).
Bu seçenek etkinleştirilirse, önişlemci makrosu "_IEEE_FP" sırasında tanımlanır.
derleme. Ortaya çıkan kod daha az verimlidir ancak doğru şekilde destekleyebilir
normalleştirilmemiş sayılar ve sayı olmayan ve artı/eksi gibi istisnai IEEE değerleri
sonsuzluk. Diğer Alpha derleyicileri bu seçeneği çağırır -ieee_with_no_inexact.

-mieee-ile-kesin olmayan
bu gibi -mieee oluşturulan kod dışında IEEE'yi de korur kesin olmayan bayrak.
Bu seçeneğin açılması, oluşturulan kodun tam uyumlu IEEE uygulamasına neden olur.
matematik. "_IEEE_FP"ye ek olarak, "_IEEE_FP_EXACT" bir önişlemci makrosu olarak tanımlanır.
Bazı Alpha uygulamalarında, elde edilen kod, şundan önemli ölçüde daha yavaş yürütülebilir:
varsayılan olarak oluşturulan kod. bağlı olan çok az kod olduğundan
kesin olmayan bayrak, normalde bu seçeneği belirtmemelisiniz. Diğer Alfa derleyicileri çağırır
bu seçenek -ieee_with_inexact.

-mfp-trap-modu=tuzak modu
Bu seçenek, kayan noktayla ilgili hangi tuzakların etkinleştirildiğini kontrol eder. Diğer Alfa
derleyiciler bu seçeneği çağırır -fptm tuzak modu. Tuzak modu dört moddan birine ayarlanabilir.
değerler:

n Bu, varsayılan (normal) ayardır. Etkinleştirilen tek tuzaklar,
yazılımda devre dışı bırakılamayanlar (örneğin, sıfır tuzağına bölme).

u Tarafından etkinleştirilen tuzaklara ek olarak n, alttan akış tuzakları da etkinleştirilir.

su Facebok sayfasını beğenin : u, ancak talimatlar yazılımın tamamlanması için güvenli olacak şekilde işaretlenmiştir (bkz.
Ayrıntılar için alfa mimarisi kılavuzu).

üzerinde Facebok sayfasını beğenin : su, ancak kesin olmayan tuzaklar da etkinleştirilir.

-mfp-yuvarlama-modu=yuvarlama modu
IEEE yuvarlama modunu seçer. Diğer Alpha derleyicileri bu seçeneği çağırır -fpm
yuvarlama modu. yuvarlama modu şunlardan biri olabilir:

n Normal IEEE yuvarlama modu. Kayan nokta sayıları en yakına doğru yuvarlanır
makine numarası veya beraberlik durumunda çift makine numarasına doğru.

m Eksi sonsuza doğru yuvarlayın.

c Kıyılmış yuvarlama modu. Kayan noktalı sayılar sıfıra doğru yuvarlanır.

d Dinamik yuvarlama modu. Kayan nokta kontrol kaydındaki bir alan (fpcrBakın
Alfa mimarisi referans kılavuzu), geçerli yuvarlama modunu kontrol eder. C
kütüphane, artı sonsuza doğru yuvarlamak için bu kaydı başlatır. Böylece,
programınız değiştirmedikçe fpcr, d artıya doğru yuvarlamaya karşılık gelir
sonsuzluk.

-mtrap-hassasiyet=tuzak hassasiyeti
Alfa mimarisinde kayan nokta tuzakları kesin değildir. Bu olmadan anlamına gelir
yazılım yardımı, kayan bir tuzaktan ve programdan kurtarılamaz
yürütmenin normal olarak sonlandırılması gerekir. GCC, yardımcı olabilecek kodlar oluşturabilir
işletim sistemi tuzak işleyicileri, bir soruna neden olan tam konumu belirlemede
kayan nokta tuzağı. Bir uygulamanın gereksinimlerine bağlı olarak, farklı
hassasiyet seviyeleri seçilebilir:

p Program hassasiyeti. Bu seçenek varsayılandır ve bir tuzak işleyicisinin yalnızca
kayan nokta özel durumuna hangi programın neden olduğunu belirleyin.

f İşlev hassasiyeti. Tuzak işleyici, bir hataya neden olan işlevi belirleyebilir.
kayan nokta istisnası.

i Talimat hassasiyeti. Tuzak işleyici, tam olarak hangi talimatın uygulanacağını belirleyebilir.
kayan nokta istisnasına neden oldu.

Diğer Alpha derleyicileri, adı verilen eşdeğer seçenekleri sağlar. -scope_safe ve
-devam_güvenli.

-mieee-uyumlu
Bu seçenek, oluşturulan kodu IEEE uyumlu olarak işaretler. Bu seçeneği kullanmamalısınız
sen de belirtmedikçe -mtrap-hassasiyet=i ve ya -mfp-trap-modu=su or
-mfp-trap-modu=sui. Tek etkisi çizgiyi yaymaktır .bayrak 48 fonksiyonda
oluşturulan derleme dosyasının önsözü. DEC Unix altında, bunun etkisi vardır:
IEEE-uyumlu matematik kitaplığı rutinleri arasında bağlantı kurulacaktır.

-mbuild-sabitleri
Normalde GCC, onu oluşturup oluşturamayacağını görmek için 32 veya 64 bitlik bir tamsayı sabitini inceler.
iki veya üç talimatta daha küçük sabitlerden. Yapamıyorsa, çıktısını verecektir.
değişmez olarak sabittir ve çalışma zamanında veri bölümünden yüklemek için kod üretir.

GCC'nin oluşturmasını zorunlu kılmak için bu seçeneği kullanın herşey kod kullanan tamsayı sabitleri,
daha fazla talimat alır (maksimum altıdır).

Bu seçeneği genellikle paylaşılan bir kitaplık dinamik yükleyicisi oluşturmak için kullanırsınız. kendisi
paylaşılan bir kitaplık, değişkenleri bulabilmesi için kendini bellekte yeniden konumlandırması gerekir.
ve kendi veri segmentindeki sabitler.

-malpha-as
-mgaz
Satıcı tarafından sağlanan montajcı tarafından birleştirilecek kodun oluşturulup oluşturulmayacağını seçin
(-malpha-as) veya GNU derleyicisi tarafından -mgaz.

-mbwx
-mno-bwx
-mcix
-mno-cix
-mfix
-mno-düzeltme
-mmaks
-mno-maks
GCC'nin isteğe bağlı BWX, CIX, FIX ve MAX'ı kullanmak için kod oluşturması gerekip gerekmediğini belirtin
talimat setleri. Varsayılan, CPU tarafından desteklenen komut setlerini kullanmaktır.
aracılığıyla belirtilen tür -mcpu= seçeneği veya hiçbiri yoksa GCC'nin kurulduğu CPU'nun seçeneği
belirtildi.

-mfloat-vax
-mfloat-ieee
Bunun yerine VAX F ve G kayan nokta aritmetiğini kullanan (kullanmayan) kod oluşturun
IEEE tek ve çift kesinlik.

-meexplicit-relocs
-mno-açık-yer değiştirmeler
Daha eski Alpha derleyicileri, sembol yer değiştirmeleri oluşturmanın yolu dışında hiçbir yol sağlamadı.
montajcı makroları. Bu makroların kullanımı, optimal talimat planlamasına izin vermez.
2.12 sürümünden itibaren GNU binutils, derleyicinin
Hangi yer değiştirmelerin hangi talimatlara uygulanacağını açıkça işaretleyin. Bu seçenek
GCC, montajcının yeteneklerini
oluşturulur ve varsayılanı buna göre ayarlar.

-msmall-veri
-mlarge-veri
Ne zaman -meexplicit-relocs yürürlüktedir, statik verilere şu şekilde erişilir: gp göreli
yer değiştirmeler. Ne zaman -msmall-veri kullanıldığında, 8 bayt uzunluğunda veya daha küçük nesneler
a küçük veri alan (".sdata" ve ".sbss" bölümleri) ve 16 bit üzerinden erişilir
$gp kaydının dışına taşınmalar. Bu, küçük veri alanının boyutunu şu şekilde sınırlar:
64KB, ancak değişkenlere tek bir komutla doğrudan erişilmesine izin verir.

Varsayılan -mlarge-veri. Bu seçenekle veri alanı hemen aşağıdakiyle sınırlıdır
2 GB. 2 GB'den fazla veri gerektiren programlar, "malloc" veya "mmap" kullanmalıdır.
verileri programın veri segmenti yerine yığında tahsis edin.

Paylaşılan kitaplıklar için kod oluştururken, -fpic ima -msmall-veri ve -fPIC
ima -mlarge-veri.

-msmall-metin
-mlarge-metin
Ne zaman -msmall-metin kullanıldığında, derleyici tüm programın kodunun
(veya paylaşılan kitaplık) 4 MB'a sığar ve bu nedenle bir şube talimatıyla erişilebilir.
Ne zaman -msmall-veri kullanıldığında, derleyici tüm yerel sembollerin
aynı $gp değeri ve böylece bir işlev için gereken talimat sayısını azaltır
4'ten 1'e kadar arayın.

Varsayılan -mlarge-metin.

-mcpu=cpu_type
Makine tipi için talimat setini ve talimat programlama parametrelerini ayarlayın
cpu_type. ya belirtebilirsiniz EV stil adı veya ilgili çip numarası.
GCC, EV4, EV5 ve EV6 işlemci ailesi için zamanlama parametrelerini destekler ve
belirttiğiniz işlemciden komut seti için varsayılan değerleri seçecektir.
Bir işlemci türü belirtmezseniz, GCC varsayılan olarak üzerinde bulunduğu işlemciyi seçer.
derleyici yapılmıştır.

için desteklenen değerler cpu_type vardır

ev4
ev45
21064
EV4 olarak programlanır ve talimat seti uzantısına sahip değildir.

ev5
21164
EV5 olarak programlanır ve talimat seti uzantısına sahip değildir.

ev56
21164a
EV5 olarak programlar ve BWX uzantısını destekler.

pca56
21164pc
21164PC
Bir EV5 olarak programlar ve BWX ve MAX uzantılarını destekler.

ev6
21264
EV6 olarak programlar ve BWX, FIX ve MAX uzantılarını destekler.

ev67
21264a
EV6 olarak programlar ve BWX, CIX, FIX ve MAX uzantılarını destekler.

Yerel araç zincirleri de değeri destekler yerli, en iyi mimariyi seçen
ana işlemci için seçenek. -mcpu=yerel GCC'nin tanımaması durumunda hiçbir etkisi yoktur
işlemci

-mtune=cpu_type
Yalnızca makine tipi için talimat programlama parametrelerini ayarlayın cpu_type.
komut seti değiştirilmez.

Yerel araç zincirleri de değeri destekler yerli, en iyi mimariyi seçen
ana işlemci için seçenek. -mtune=yerel GCC'nin tanımaması durumunda hiçbir etkisi yoktur
işlemci

-mbellek gecikmesi=zaman
Tarafından görüldüğü gibi, zamanlayıcının tipik bellek referansları için varsayması gereken gecikmeyi ayarlar.
uygulama. Bu sayı, kullanılan bellek erişim modellerine büyük ölçüde bağlıdır.
uygulama ve makinedeki harici önbelleğin boyutuna göre.

için geçerli seçenekler zaman vardır

numara
Saat döngülerini temsil eden bir ondalık sayı.

L1
L2
L3
ana
Derleyici, "tipik" EV4 & için saat döngüsü sayısı tahminlerini içerir.
Düzey 5, 1 ve 2 önbellekler için EV3 donanımı (Dcache, Scache ve
Bcache) ve ayrıca ana belleğe. L3'ün yalnızca EV5 için geçerli olduğunu unutmayın.

Aralık Alfa/VMS Opsiyonlar

Bunlar -m DEC Alpha/VMS uygulamaları için seçenekler tanımlanmıştır:

-mvms-dönüş-kodları
Ana sistemden VMS koşul kodlarını döndürün. Varsayılan, POSIX stili koşulunu döndürmektir
(örn. hata) kodları.

-mdebug-ana=önek
Adı ile başlayan ilk rutini işaretleyin önek için ana rutin olarak
ayıklayıcı.

-mmalloc64
Varsayılan olarak 64 bit bellek ayırma rutinleri.

FR30 Opsiyonlar

Bu seçenekler, özellikle FR30 bağlantı noktası için tanımlanmıştır.

-msmall-modeli
Küçük adres alanı modelini kullanın. Bu, daha küçük kod üretebilir, ancak varsayar
tüm sembolik değerlerin ve adreslerin 20 bitlik bir aralığa sığacağını.

-mno-lsim
Çalışma zamanı desteğinin sağlandığını ve bu nedenle şunları eklemeye gerek olmadığını varsayalım.
simülatör kitaplığı (libsim.a) bağlayıcı komut satırında.

FRV Opsiyonlar

-mgpr-32
Yalnızca ilk 32 genel amaçlı kaydı kullanın.

-mgpr-64
64 genel amaçlı kaydın tümünü kullanın.

-mfpr-32
Yalnızca ilk 32 kayan nokta kaydını kullanın.

-mfpr-64
64 kayan nokta kaydının tümünü kullanın.

-mhard-şamandıra
Kayan nokta işlemleri için donanım yönergelerini kullanın.

-msoft-float
Kayan nokta işlemleri için kitaplık rutinlerini kullanın.

-malloc-cc
Koşul kodu kayıtlarını dinamik olarak tahsis edin.

-mfixed-cc
Koşul kodu kayıtlarını dinamik olarak ayırmaya çalışmayın, yalnızca "icc0" kullanın ve
"fcc0".

-mdword
ABI'yi double word insns kullanacak şekilde değiştirin.

-mno-dword
Çift kelimeli talimatlar kullanmayın.

-mçift
Kayan noktalı çift yönergeleri kullanın.

-mno-double
Kayan noktalı çift yönergeleri kullanmayın.

-mmedya
Medya talimatlarını kullanın.

-mno-medya
Medya talimatlarını kullanmayın.

-mmuladd
Çarpma ve toplama/çıkarma talimatlarını kullanın.

-mno-muladd
Çarpma ve toplama/çıkarma talimatlarını kullanmayın.

-mfdpic
İşaretçileri temsil etmek için işlev tanımlayıcılarını kullanan FDPIC ABI'yi seçin.
fonksiyonlar. PIC/PIE ile ilgili seçenekler olmadan, -fPIE. Ile -fpic or
-fpie, GOT girişlerinin ve küçük verilerin GOT'tan 12 bitlik bir aralık içinde olduğunu varsayar.
temel adres; ile birlikte -fPIC or -fPIE, GOT ofsetleri 32 bit ile hesaplanır. Birlikte
bfin-elf hedef, bu seçenek ima eder -msim.

-minline-plt
Bilinmeyen işlevlere yapılan işlev çağrılarında PLT girişlerinin satır içine alınmasını etkinleştirin.
yerel olarak bağlayın. Olmadan etkisi yok -mfdpic. Varsayılan olarak etkindir, eğer
hız optimizasyonu ve paylaşılan kitaplıklar için derleme (örn. -fPIC or -fpic) veya
gibi bir optimizasyon seçeneği olduğunda -O3 veya üstü komut satırında bulunur.

-mTLS
İş parçacığı yerel kodu oluştururken büyük bir TLS segmenti varsayın.

-mtls
İş parçacığı yerel kodu oluştururken büyük bir TLS segmenti varsaymayın.

-mgprel-ro
İçinde olduğu bilinen veriler için FDPIC ABI'de "GPREL" yer değiştirmelerinin kullanımını etkinleştirin.
salt okunur bölümler Şunlar dışında varsayılan olarak etkindir: -fpic or -fpie: rağmen
global ofset tablosunu küçültmeye yardımcı olabilir, 1 için 4 talimatla işlem yapar.
-fPIC or -fPIE, biri birden fazla kişi tarafından paylaşılabilen 3 için 4 talimat takas eder.
semboller ve başvurulan sembol için bir GOT girişi ihtiyacını ortadan kaldırır, bu nedenle
kazanma olasılığı daha yüksektir. Ya değilse, -mno-gprel-ro devre dışı bırakmak için kullanılabilir.

-multilib-kütüphane-pic
(FD değil, kitaplık) resim kitaplıklarıyla bağlantı kurun. tarafından ima edildi -kütüphane-resimyanı
Tarafından -fPIC ve -fpic olmadan -mfdpic. Asla açıkça kullanmak zorunda kalmamalısınız.

-mlinked-fp
Bir yığın çerçevesi olduğunda her zaman bir çerçeve işaretçisi oluşturmaya yönelik EABI gereksinimini izleyin
tahsis edilir. Bu seçenek varsayılan olarak etkindir ve şu şekilde devre dışı bırakılabilir:
-mno-bağlı-fp.

-mlong-çağrıları
Geçerli derleme biriminin dışındaki işlevleri çağırmak için dolaylı adreslemeyi kullanın. Bu
işlevlerin 32 bit adres alanı içinde herhangi bir yere yerleştirilmesine izin verir.

-malign-etiketler
Önceki pakete nops ekleyerek etiketleri 8 baytlık bir sınıra hizalamaya çalışın.
Bu seçenek yalnızca VLIW paketleme etkinleştirildiğinde etkilidir. Yeni oluşturmuyor
paketler; sadece mevcut olanlara nops ekler.

-kütüphane-resim
Konumdan bağımsız EABI kodu oluşturun.

-macc-4
Yalnızca ilk dört ortam akümülatör kaydını kullanın.

-macc-8
Sekiz medya akümülatör kaydının tümünü kullanın.

-mpack
VLIW talimatlarını paketleyin.

-mno paketi
VLIW talimatlarını paketlemeyin.

-mno-bayraklar
ABI anahtarlarını e_flags içinde işaretlemeyin.

-mcond-hareket
Koşullu taşıma talimatlarının kullanımını etkinleştirin (varsayılan).

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mno-koşul-hareket
Koşullu taşıma talimatlarının kullanımını devre dışı bırakın.

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mscc
Koşullu küme talimatlarının kullanımını etkinleştirin (varsayılan).

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mno-scc
Koşullu küme talimatlarının kullanımını devre dışı bırakın.

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mcond-exec
Koşullu yürütmenin kullanımını etkinleştirin (varsayılan).

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mno-cond-exec
Koşullu yürütme kullanımını devre dışı bırakın.

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mvliw-şube
Dalları VLIW talimatlarına paketlemek için bir geçiş çalıştırın (varsayılan).

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mno-vliw-şube
Dalları VLIW talimatlarına paketlemek için bir geçiş çalıştırmayın.

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mmulti-cond-yürütme
"&&" ve "||" optimizasyonunu etkinleştir koşullu yürütmede (varsayılan).

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mno-çoklu-koşul-exec
"&&" ve "||" optimizasyonunu devre dışı bırakın koşullu yürütmede.

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mnested-cond-yürütme
İç içe koşullu yürütme iyileştirmelerini etkinleştir (varsayılan).

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-mno-iç içe-koşul-yürütme
İç içe koşullu yürütme optimizasyonlarını devre dışı bırakın.

Bu anahtar esas olarak derleyicide hata ayıklamak içindir ve muhtemelen bir süre sonra kaldırılacaktır.
gelecek sürüm.

-moptimize-üye çubuğu
Bu anahtar, derleyici tarafından oluşturulan koddan gereksiz "membar" yönergelerini kaldırır.
Varsayılan olarak etkindir.

-mno-optimize-üye çubuğu
Bu anahtar, gereksiz "membar" talimatlarının otomatik olarak kaldırılmasını devre dışı bırakır.
oluşturulan kod.

-mtomcat istatistikleri
Gazın Tomcat istatistiklerini yazdırmasına neden olun.

-mcpu=cpu
Kod oluşturulacak işlemci türünü seçin. Olası değerler frv, fr550,
erkek kedi, fr500, fr450, fr405, fr400, fr300 ve basit.

GNU / Linux Opsiyonlar

Bunlar -m GNU/Linux hedefleri için seçenekler tanımlanmıştır:

-mglibc
GNU C kitaplığını kullanın. Bu, dışında varsayılandır *-*-linux-*uclibc* ve
*-*-linux-*android* hedefler.

-muclibc
uClibc C kitaplığını kullanın. Bu, varsayılan *-*-linux-*uclibc* hedefler.

-mbiyonik
Bionic C kitaplığını kullanın. Bu, varsayılan *-*-linux-*android* hedefler.

-mandroid
Android platformuyla uyumlu kod derleyin. Bu, varsayılan
*-*-linux-*android* hedefler.

Derlerken, bu seçenek etkinleştirir -mbiyonik, -fPIC, -fno-istisnalar ve -fno-rtti by
varsayılan. Bağlanırken bu seçenek, GCC sürücüsünün Android'e özgü seçenekleri geçmesini sağlar
bağlayıcıya. Son olarak, bu seçenek "__ANDROID__" önişlemci makrosunun
tanımladı.

-tno-android-cc
Derleme efektlerini devre dışı bırak -mandroid, yani etkinleştirme -mbiyonik, -fPIC,
-fno-istisnalar ve -fno-rtti varsayılan olarak.

-tno-android-ld
Şunun bağlama efektlerini devre dışı bırak: -mandroid, yani standart Linux bağlama seçeneklerini
bağlayıcı.

H8 / 300 Opsiyonlar

Bunlar -m H8/300 uygulamaları için seçenekler tanımlanmıştır:

-mrelax
Mümkün olduğunda, bağlantı zamanında bazı adres referanslarını kısaltın; bağlayıcı seçeneğini kullanır
-Rahatlayın.

-mh H8/300H için kod oluşturun.

-MS H8S için kod oluşturun.

-dk Normal modda H8S ve H8/300H için kod oluşturun. Bu anahtar kullanılmalıdır
ya da -mh or -MS.

-ms2600
H8S/2600 için kod oluşturun. Bu anahtar ile kullanılmalıdır -MS.

-nane32
Varsayılan olarak "int" verisini 32 bit yapın.

-malign-300
H8/300H ve H8S'de, H8/300 ile aynı hizalama kurallarını kullanın. Varsayılan
H8/300H ve H8S için, 4 baytlık sınırlarda uzun ve kayan noktaları hizalamaktır.
-malign-300 2 baytlık sınırlarda hizalanmalarına neden olur. Bu seçeneğin etkisi yoktur
H8/300'de.

HPPA Opsiyonlar

Bunlar -m HPPA bilgisayar ailesi için seçenekler tanımlanmıştır:

-mart=mimari tipi
Belirtilen mimari için kod oluşturun. için seçimler mimari tipi vardır
1.0 PA 1.0 için, 1.1 PA 1.1 için ve 2.0 PA 2.0 işlemciler için. bkz.
/usr/lib/sched.models uygun mimari seçeneğini belirlemek için bir HP-UX sisteminde
makineniz için. Daha düşük numaralı mimariler için derlenen kod, daha yüksekte çalışacaktır.
numaralı mimariler, ancak tam tersi değil.

-mpa-risc-1-0
-mpa-risc-1-1
-mpa-risc-2-0
İçin eşanlamlılar -mart=1.0, -mart=1.1, ve -mart=2.0 respectivamente.

-big-anahtar
Büyük anahtar tabloları için uygun kod oluşturun. Bu seçeneği yalnızca,
montajcı/bağlayıcı, bir anahtar tablosundaki aralık dışı dallardan şikayet eder.

-mjump-in-gecikme
Değiştirerek koşulsuz atlama talimatlarıyla işlev çağrılarının gecikme yuvalarını doldurun
koşullu atlamanın hedefi olacak işlev çağrısının dönüş işaretçisi.

-mdisable-fpreg'ler
Kayan nokta kayıtlarının herhangi bir şekilde kullanılmasını önleyin. Bunun için gerekli
kayan nokta kayıtlarının tembel bağlam geçişini gerçekleştiren çekirdeklerin derlenmesi. Eğer
bu seçeneği kullanır ve kayan nokta işlemlerini gerçekleştirmeye çalışırsanız, derleyici
iptal eder.

-mdisable-indeksleme
Derleyicinin dizin oluşturma adres modlarını kullanmasını önleyin. Bu, bazılarını oldukça önler
MACH altında MIG tarafından oluşturulan kodu derlerken belirsiz sorunlar.

-mno-boşluk-regs
Hedefin alan kaydı olmadığını varsayan kod oluşturun. Bu, GCC'nin
daha hızlı dolaylı aramalar oluşturun ve ölçeklenmemiş dizin adresi modlarını kullanın.

Bu kod, seviye 0 PA sistemleri ve çekirdekler için uygundur.

-mfast-dolaylı-çağrılar
Çağrıların alan sınırlarını asla aşmadığını varsayan kod oluşturun. Bu, GCC'nin
daha hızlı dolaylı aramalar gerçekleştiren kod yayar.

Bu seçenek, paylaşılan kitaplıkların veya iç içe işlevlerin varlığında çalışmayacaktır.

-mfixed-aralık=kayıt aralığı
Verilen kayıt aralığını sabit kayıtlar olarak ele alan kod oluşturun. Sabit bir kayıt
kayıt ayırıcının kullanamayacağı bir tanesidir. Bu, çekirdeği derlerken kullanışlıdır.
kod. Bir kayıt aralığı, bir tire ile ayrılmış iki kayıt olarak belirtilir. çoklu
kayıt aralıkları virgülle ayrılarak belirtilebilir.

-mlong-yük deposu
HP-UX 3'un bazen gerektirdiği şekilde 10 komutlu yükleme oluşturun ve dizileri depolayın
bağlayıcı. Bu eşdeğerdir +k HP derleyicileri için seçenek.

-taşınabilir-çalışma zamanı
HP tarafından ELF sistemleri için önerilen taşınabilir arama kurallarını kullanın.

-mgaz
Yalnızca GAS'ın anladığı montajcı yönergelerinin kullanımını etkinleştirin.

-mprogram=işlemci tipi
Makine tipinin kısıtlamalarına göre kodu programlayın işlemci tipi. Seçimler
için işlemci tipi vardır 700 7100, 7100LC, 7200, 7300 ve 8000. Bakın
/usr/lib/sched.models için uygun zamanlama seçeneğini belirlemek için bir HP-UX sisteminde
senin makinen. Varsayılan zamanlama 8000.

-mlinker-opt
HP-UX bağlayıcısında optimizasyon geçişini etkinleştirin. Bunun sembolik hata ayıklama yaptığını unutmayın
imkansız. Ayrıca, içinde bulundukları HP-UX 8 ve HP-UX 9 bağlayıcılarında bir hatayı tetikler.
bazı programları bağlarken sahte hata mesajları veriyor.

-msoft-float
Kayan nokta için kitaplık çağrılarını içeren çıktı oluşturun. Uyarı: gerekli
kitaplıklar tüm HPPA hedefleri için mevcut değildir. Normalde tesislerin
makinenin olağan C derleyicisi kullanılır, ancak bu doğrudan çapraz olarak yapılamaz.
derleme. Uygun kütüphane sağlamak için kendi düzenlemelerinizi yapmalısınız.
çapraz derleme için işlevler.

-msoft-float çıktı dosyasındaki çağrı kuralını değiştirir; bu nedenle, sadece
derlerseniz faydalı herşey Bu seçeneğe sahip bir programın Özellikle, yapmanız gereken
derlemek libgcc.a, GCC ile birlikte gelen kitaplık, -msoft-float bunun için
çalışmak.

-msio
Sunucu GÇ için ön tanımlı "_SIO" oluşturun. Varsayılan -mwsio. Bu üretir
iş istasyonu GÇ için "__hp9000s700", "__hp9000s700__" ve "_WSIO" ön tanımları.
Bu seçenekler HP-UX ve HI-UX altında mevcuttur.

-mgnu-ld
GNU ld'ye özgü seçenekleri kullanın. bu geçer -paylaşılan paylaşılan bir bina oluştururken ld'ye
kütüphane. GCC, açıkça veya örtülü olarak şu şekilde yapılandırıldığında varsayılandır:
GNU bağlayıcı. Bu seçeneğin ld'nin çağrılması üzerinde herhangi bir etkisi yoktur, yalnızca
o ld'ye hangi parametrelerin aktarıldığını değiştirir. Çağrılan ld tarafından belirlenir
the --ile-ld yapılandırma seçeneği, GCC'nin program arama yolu ve son olarak kullanıcının
PATH. GCC tarafından kullanılan bağlayıcı kullanılarak yazdırılabilir hangi gcc -print-prog-name=ld`.
Bu seçenek yalnızca 64-bit HP-UX GCC'de mevcuttur, yani şu şekilde yapılandırılmıştır:
hppa*64*-*-hpux*.

-mhp-ld
HP ld'ye özgü seçenekleri kullanın. bu geçer -b paylaşılan bir kitaplık oluştururken ld'ye ve
geçer +Kabul et Tür uyumsuzluğu tüm bağlantılarda ld'ye. GCC olduğunda varsayılandır
HP linker ile açıkça veya örtülü olarak yapılandırılır. Bu seçenek yok
ld'nin çağrıldığı herhangi bir etki, yalnızca buna hangi parametrelerin iletildiğini değiştirir.
ld. Çağrılan ld tarafından belirlenir --ile-ld yapılandırma seçeneği, GCC'ler
program arama yolu ve son olarak kullanıcının PATH. GCC tarafından kullanılan bağlayıcı olabilir
kullanılarak basılmış hangi gcc -print-prog-name=ld`. Bu seçenek yalnızca
64-bit HP-UX GCC, yani yapılandırılmış hppa*64*-*-hpux*.

-mlong-çağrıları
Uzun arama dizileri kullanan kod oluşturun. Bu, bir aramanın her zaman
bağlayıcı tarafından oluşturulan taslaklara ulaşmak için. Varsayılan, yalnızca uzun aramalar oluşturmaktır.
çağrı sitesinden işlevin veya çeviri biriminin başlangıcına kadar olan mesafe,
durum, kullanılan dal türü tarafından belirlenen önceden tanımlanmış bir sınırı aşabilir. NS
normal aramalar için limitler, PA 7,600,000 için sırasıyla 240,000 ve 2.0 bayttır
ve PA 1.X mimarileri. Sibcalls her zaman 240,000 bayt ile sınırlıdır.

Mesafeler, fonksiyonların başlangıcından itibaren ölçülür.
-fonksiyon-bölümler seçeneğini kullanırken veya -mgaz ve -mno-taşınabilir-çalışma zamanı seçenekleri
SOM bağlayıcı ile HP-UX altında birlikte.

Performansı düşüreceği için normalde bu seçeneğin kullanılması istenmez.
Ancak, büyük uygulamalarda, özellikle kısmi bağlantı olduğunda faydalı olabilir.
uygulamayı oluşturmak için kullanılır.

Kullanılan uzun çağrı türleri, birleştirici ve bağlayıcının yeteneklerine bağlıdır,
ve oluşturulan kodun türü. Uzun süre destekleyen sistemler üzerindeki etkisi
mutlak çağrılar ve uzun pic sembol farkı veya bilgisayara bağlı çağrılar
nispeten küçük. Ancak, pic kodunda 32 bit ELF sistemlerinde dolaylı bir çağrı kullanılır.
ve oldukça uzundur.

-munix=unix-std
Derleyici ön tanımları oluşturun ve belirtilen UNIX standardı için bir başlangıç ​​dosyası seçin.
için seçimler unix-std vardır 93, 95 ve 98. 93 tüm HP-UX sürümlerinde desteklenir.
95 HP-UX 10.10 ve sonraki sürümlerde mevcuttur. 98 HP-UX 11.11 ve sonraki sürümlerde mevcuttur.
Varsayılan değerler 93 HP-UX 10.00 için, 95 HP-UX 10.10 için 11.00'e kadar ve 98
HP-UX 11.11 ve sonrası için.

-munix=93 GCC 3.3 ve 3.4 ile aynı ön tanımları sağlar. -munix=95 sağlar
"XOPEN_UNIX" ve "_XOPEN_SOURCE_EXTENDED" için ek ön tanımlar ve başlangıç ​​dosyası
unix95.o. -munix=98 "_XOPEN_UNIX" için ek ön tanımlar sağlar,
"_XOPEN_SOURCE_EXTENDED", "_INCLUDE__STDC_A1_SOURCE" ve "_INCLUDE_XOPEN_SOURCE_500",
ve başlangıç ​​dosyası unix98.o.

Öyle önemli bu seçeneğin çeşitli kitaplıkların arayüzlerini değiştirdiğini belirtmek için
rutinler. Ayrıca C kitaplığının operasyonel davranışını da etkiler. Böylece, aşırı
Bu seçeneği kullanırken dikkatli olunması gerekir.

Birden fazla UNIX standardı ile çalışması amaçlanan kitaplık kodunun test edilmesi,
değişkeni ayarla ve geri yükle __xpg4_extulated_mask uygun. Çoğu GNU yazılımı
bu yeteneği sağlamaz.

-nolibdld
libdld.sl'de arama yapmak için bağlantı seçeneklerinin oluşturulmasını engelleyin. -statik seçenektir
HP-UX 10 ve sonraki sürümlerde belirtilmiştir.

-statik
libc'de setlocale'in HP-UX uygulaması, libdld.sl'ye bağımlıdır. Orası
libdld.sl'nin arşiv versiyonu değil. Böylece, ne zaman -statik seçenek belirtilir,
bu bağımlılığı çözmek için özel bağlantı seçeneklerine ihtiyaç vardır.

HP-UX 10 ve sonraki sürümlerde, GCC sürücüsü, bağlantı kurmak için gerekli seçenekleri ekler.
libdld.sl ne zaman -statik seçeneği belirtilir. Bu, elde edilen ikili dosyanın
dinamik ol. 64 bit bağlantı noktasında, bağlayıcılar varsayılan olarak dinamik ikili dosyalar oluşturur.
her durumda. NS -nolibdld seçeneği, GCC sürücüsünün eklemesini önlemek için kullanılabilir.
bu bağlantı seçenekleri.

-İş Parçacığı
ile çoklu kullanım için destek ekleyin. dce iplik HP-UX altında kitaplık. Bu seçenek
hem önişlemci hem de bağlayıcı için bayraklar ayarlar.

Intel 386 ve AMD x86-64 Opsiyonlar

Bunlar -m i386 ve x86-64 bilgisayar ailesi için seçenekler tanımlanmıştır:

-mtune=işlemci tipi
Ayarla işlemci tipi ABI hariç, oluşturulan kodla ilgili geçerli olan her şey
ve kullanılabilir yönergeler kümesi. için seçimler işlemci tipi şunlardır:

genel
En yaygın IA32/AMD64/EM64T işlemciler için optimize edilmiş kod üretin. Eğer sen
kodunuzun çalışacağı CPU'yu biliyorsanız, ilgili
-mtune yerine seçeneği -mtune=genel. Ancak, tam olarak hangi CPU'yu bilmiyorsanız
uygulamanızın kullanıcıları olacaktır, o zaman bu seçeneği kullanmalısınız.

Piyasaya yeni işlemciler yerleştirildikçe, bu seçeneğin davranışı
değişecek. Bu nedenle, GCC'nin daha yeni bir sürümüne yükseltirseniz, kod
oluşturulan seçenek, o zaman en yaygın olan işlemcileri yansıtacak şekilde değişecektir.
GCC'nin bu sürümü yayınlandı.

Yok -mart=genel seçenek çünkü -Mart komut setini gösterir
derleyici kullanabilir ve tümü için geçerli genel bir talimat seti yoktur.
işlemciler Tersine, -mtune işlemciyi gösterir (veya bu durumda,
kodun optimize edildiği işlemci koleksiyonu).

yerli
Bu, işlemciyi belirleyerek derleme zamanında ayarlanacak CPU'yu seçer.
derleme makinesinin türü. kullanma -mtune=yerel optimize edilmiş kod üretecek
yerel makine için seçilen komut setinin kısıtlamaları altında.
kullanma -mart=yerli yerel tarafından desteklenen tüm talimat alt kümelerini etkinleştirir
makine (dolayısıyla sonuç farklı makinelerde çalışmayabilir).

i386
Orijinal Intel'in i386 CPU'su.

i486
Intel'in i486 CPU'su. (Bu çip için herhangi bir zamanlama uygulanmaz.)

i586, pentium
MMX desteği olmayan Intel Pentium CPU.

pentium-mmx
MMX komut seti desteğine sahip Pentium çekirdeğine dayalı Intel PentiumMMX CPU.

pentium pro
Intel PentiumPro İşlemci.

i686
"Genel" ile aynı, ancak "yürüyüş" seçeneği olarak kullanıldığında, PentiumPro komut seti
kullanılacaktır, bu nedenle kod tüm i686 ailesi yongalarında çalışacaktır.

pentium2
MMX komut seti desteğine sahip PentiumPro çekirdeğine dayalı Intel Pentium2 CPU.

pentium3, pentium3m
MMX ve SSE komut seti ile PentiumPro çekirdeğine dayalı Intel Pentium3 CPU
destekler.

pentium-m
MMX, SSE ve SSE3 komut setli Intel Pentium2 CPU'nun düşük güçlü versiyonu
destek. Centrino dizüstü bilgisayarlar tarafından kullanılır.

pentium4, pentium4m
MMX, SSE ve SSE4 komut seti desteğine sahip Intel Pentium2 CPU.

prescott
MMX, SSE, SSE4 ve SSE2 talimatı ile Intel Pentium3 CPU'nun geliştirilmiş versiyonu
desteği ayarlayın.

nokona
4 bit uzantılı Intel Pentium64 CPU'nun geliştirilmiş sürümü, MMX, SSE, SSE2 ve
SSE3 komut seti desteği.

core2
2 bit uzantılı Intel Core64 CPU, MMX, SSE, SSE2, SSE3 ve SSSE3 talimatı
desteği ayarlayın.

çekirdek7
7 bit uzantılı Intel Core i64 CPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 ve
SSE4.2 komut seti desteği.

corei7-avx
7 bit uzantılı Intel Core i64 CPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, AVX, AES ve PCLMUL komut seti desteği.

çekirdek-avx-i
64 bit uzantılı Intel Core CPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND ve F16C komut seti desteği.

atom
64 bit uzantılı Intel Atom CPU, MMX, SSE, SSE2, SSE3 ve SSSE3 talimatı
desteği ayarlayın.

k6 MMX komut seti desteğine sahip AMD K6 CPU.

k6-2, k6-3
AMD K6 CPU'nun MMX ve 3DNow ile geliştirilmiş sürümleri! komut seti desteği.

atlon, atlon-tbird
MMX, 3dNOW!, geliştirilmiş 3DNow! özellikli AMD Athlon CPU! ve SSE ön getirme talimatları
destekler.

atlon-4, atlon-xp, atlon-mp
MMX, 3DNow!, geliştirilmiş 3DNow ile geliştirilmiş AMD Athlon CPU! ve tam SSE talimatı
desteği ayarlayın.

k8, seçim, atlon64, atlon-fx
x8-86 komut seti desteğine sahip AMD K64 çekirdek tabanlı CPU'lar. (Bu, MMX'in yerini alır,
SSE, SSE2, 3DNow!, geliştirilmiş 3DNow! ve 64 bit komut seti uzantıları.)

k8-sse3, opteron-sse3, atlon64-sse3
SSE8 komut seti desteği ile k64, opteron ve athlon3'ün geliştirilmiş sürümleri.

amdfam10, Barcelona
x10-86 komut seti desteğine sahip AMD Ailesi 64h çekirdek tabanlı CPU'lar. (Bu
üst kümeler MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, geliştirilmiş 3DNow!, ABM ve 64-bit
komut seti uzantıları.)

bdver1
x15-86 komut seti desteğine sahip AMD Ailesi 64h çekirdek tabanlı CPU'lar. (Bu
üst kümeler FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A,
SSSE3, SSE4.1, SSE4.2, ABM ve 64 bit komut seti uzantıları.)

bdver2
x15-86 komut seti desteğine sahip AMD Ailesi 64h çekirdek tabanlı CPU'lar. (Bu
üst kümeler BMI, TBM, F16C, FMA, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2,
SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM ve 64 bit komut seti uzantıları.)

btver1
x14-86 komut seti desteğine sahip AMD Ailesi 64h çekirdek tabanlı CPU'lar. (Bu
üst kümeler MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM ve 64-bit komut seti
uzantıları.)

vinç-c6
IDT Winchip C6 CPU, ek MMX komut seti ile i486 ile aynı şekilde ele alındı
destekler.

vinç2
IDT Winchip2 CPU, ek MMX ve 486DNow ile i3 ile aynı şekilde ele alındı!
komut seti desteği.

c3 MMX ve 3DNow ile C3 CPU üzerinden! komut seti desteği. (Zamanlama yok
bu çip için uygulandı.)

c3-2
MMX ve SSE komut seti desteği ile C3-2 CPU üzerinden. (Zamanlama yok
bu çip için uygulandı.)

jeot
MMX ve 3DNow ile gömülü AMD CPU! komut seti desteği.

Belirli birini seçerken işlemci tipi işleri bunun için uygun şekilde planlayacak
belirli bir çip, derleyici üzerinde çalışmayan herhangi bir kod üretmeyecektir.
olmadan varsayılan makine tipi -mart=işlemci tipi seçeneği kullanılıyor. örneğin, eğer
GCC, i686-pc-linux-gnu için yapılandırılır, ardından -mtune=pentium4 kodu üretecek
Pentium4 için ayarlanmıştır ancak yine de i686 makinelerinde çalışır.

-mart=işlemci tipi
Makine türü için talimatlar oluşturun işlemci tipi. için seçimler işlemci tipi olan
ile aynı -mtune. Ayrıca, belirterek -mart=işlemci tipi ima -mtune=işlemci tipi.

-mcpu=işlemci tipi
Kullanımdan kaldırılmış bir eş anlamlısı -mtune.

-mfpmath=birim
Seçili birim için kayan nokta aritmetiği oluştur birim. için seçimler birim şunlardır:

387 Çiplerin çoğunda bulunan standart 387 kayan noktalı yardımcı işlemciyi kullanın
ve başka türlü taklit edildi. Bu seçenekle derlenen kod hemen hemen her yerde çalışır.
Geçici sonuçlar, kesinlik yerine 80 bitlik hassasiyetle hesaplanır.
türüne göre belirtilir ve çoğuyla karşılaştırıldığında biraz farklı sonuçlar verir.
diğer cipsler. Görmek -float-mağaza daha detaylı açıklama için.

Bu, i386 derleyicisi için varsayılan seçimdir.

sse SSE komut setinde bulunan skaler kayan nokta komutlarını kullanın. Bu
komut seti, AMD hattında Pentium3 ve daha yeni yongalar tarafından desteklenir.
Athlon-4, Athlon-xp ve Athlon-mp çipleri. SSE talimatının önceki versiyonu
set yalnızca tek duyarlıklı aritmetiği destekler, bu nedenle çift ve genişletilmiş
hassas aritmetik hala 387 kullanılarak yapılır. Daha sonraki bir sürüm, yalnızca
Pentium4 ve gelecekteki AMD x86-64 yongaları, çift duyarlıklı aritmetiği destekler
çok.

i386 derleyicisi için kullanmanız gerekir -mart=işlemci tipi, -msse or -msse2 anahtarları
SSE uzantılarını etkinleştirmek ve bu seçeneği etkili kılmak için. x86-64 derleyicisi için,
bu uzantılar varsayılan olarak etkindir.

Ortaya çıkan kod, çoğu durumda önemli ölçüde daha hızlı olmalıdır ve
387 kodunun sayısal kararsızlık problemlerinden kaçının, ancak mevcut bazılarını bozabilir
geçicilerin 80 bit olmasını bekleyen kod.

Bu, x86-64 derleyicisi için varsayılan seçimdir.

sse,387
se+387
her ikisi de
Her iki komut setini de aynı anda kullanmaya çalışın. Bu etkili bir şekilde iki katına
387 için ayrı yürütme birimlerine sahip mevcut kayıtların ve çiplerin miktarı
ve yürütme kaynaklarını da SSE. Bu seçeneği dikkatli kullanın, çünkü hala
deneysel, çünkü GCC kayıt ayırıcısı ayrı modellemez
işlevsel birimler, kararsız performansa neden olur.

-masm=diyalekt
Seçilenleri kullanarak çıkış grubu talimatları diyalekt. Desteklenen seçenekler intel or için
(varsayılan). Darwin desteklemiyor intel.

-mieee-fp
-mno-ieee-fp
Derleyicinin IEEE kayan nokta karşılaştırmalarını kullanıp kullanmadığını kontrol edin. Bunlar
bir karşılaştırmanın sonucunun sırasız olduğu durumu doğru şekilde ele alın.

-msoft-float
Kayan nokta için kitaplık çağrılarını içeren çıktı oluşturun. Uyarı: gerekli
kütüphaneler GCC'nin parçası değildir. Normalde makinenin her zamanki imkanları C
derleyici kullanılır, ancak bu doğrudan çapraz derlemede yapılamaz. Mecbursun
için uygun kütüphane işlevlerini sağlamak için kendi düzenlemelerinizi yapın.
derleme.

Bir işlevin 80387 kaydında kayan nokta sonuçları döndürdüğü makinelerde
yığın, bazı kayan noktalı işlem kodları, -msoft-float kullanıldı.

-mno-fp-ret-in-387
Fonksiyonların dönüş değerleri için FPU kayıtlarını kullanmayın.

Her zamanki çağırma kuralı, "float" ve "double" türlerinin işlev döndürme değerlerine sahiptir.
FPU olmasa bile bir FPU kaydında. Fikir şu ki, işletim sistemi
bir FPU'yu taklit etmelidir.

Seçenek -mno-fp-ret-in-387 bu tür değerlerin sıradan CPU'da döndürülmesine neden olur
yerine kaydeder.

-mno-fantezi-matematik-387
Bazı 387 öykünücü, "sin", "cos" ve "sqrt" komutlarını desteklemez.
387. Bu talimatları oluşturmaktan kaçınmak için bu seçeneği belirleyin. Bu seçenek,
FreeBSD, OpenBSD ve NetBSD'de varsayılan. Bu seçenek şu durumlarda geçersiz kılınır: -Mart
hedef CPU'nun her zaman bir FPU'ya sahip olacağını ve dolayısıyla talimatın
öykünme gerekir. 2.6.1 revizyonundan itibaren, siz olmadıkça bu talimatlar oluşturulmaz.
ayrıca kullan -funsafe-matematik-optimizasyonları geçiş.

-malign-çift
-mno-align-double
GCC'nin "double", "long double" ve "long long" değişkenlerini bir
iki kelimelik sınır veya tek kelimelik sınır. İki kelime üzerinde "çift" değişkenleri hizalama
sınır, bir bilgisayarda biraz daha hızlı çalışan kod üretir. Pentium daha fazla pahasına
bellek.

x86-64'te, -malign-çift varsayılan olarak etkindir.

Uyarı: eğer kullanırsan -malign-çift anahtarı, yukarıdaki türleri içeren yapılar
yayınlanan uygulama ikili arayüzünden farklı şekilde hizalanacak
386 için teknik özellikler ve koddaki yapılarla ikili uyumlu olmayacak
bu anahtar olmadan derlendi.

-m96bit-uzun-çift
-m128bit-uzun-çift
Bu anahtarlar "uzun çift" tipin boyutunu kontrol eder. i386 uygulama ikili dosyası
arabirim, boyutun 96 bit olduğunu belirtir, bu nedenle -m96bit-uzun-çift varsayılan
32 bit modu.

Modern mimariler (Pentium ve daha yenileri), 8- ile hizalanmak için "uzun çift" tercih eder.
veya 16 baytlık sınır. ABI'ye uygun dizilerde veya yapılarda bu,
mümkün. yani belirterek -m128bit-uzun-çift "uzun çifti" 16 bayta hizalar
"uzun çifti" ek bir 32-bit sıfır ile doldurarak sınır.

x86-64 derleyicisinde, -m128bit-uzun-çift ABI olarak varsayılan seçimdir
"uzun çift"in 16 baytlık sınırda hizalanacağını belirtir.

Bu seçeneklerin hiçbirinin x87 standardına göre herhangi bir ekstra hassasiyet sağlamadığına dikkat edin.
"uzun çift" için 80 bit.

Uyarı: hedef ABI'niz için varsayılan değeri geçersiz kılarsanız, yapılar ve
"uzun çift" değişkenler içeren diziler, işlevlerinin yanı sıra boyutlarını da değiştirecektir.
"uzun çift" alan işlev için çağrı kuralı değiştirilecektir. bu yüzden onlar
bu olmadan derlenen koddaki diziler veya yapılarla ikili uyumlu olmayacaktır
geçiş.

-mlarge-veri eşiği=numara
Ne zaman -mcmodel=orta belirtildiğinde, veriler daha büyük eşik büyük yerleştirilir
veri bölümü. Bu değer, ikili dosyaya bağlı tüm nesnelerde aynı olmalıdır.
ve varsayılan olarak 65535'tir.

-mrtd
Sabit bir değer alan işlevlerin olduğu farklı bir işlev çağırma kuralı kullanın.
"ret" ile dönen argüman sayısı num argümanlarını ortaya çıkaran talimat
dönerken. Bu, arayana bir talimat kaydeder çünkü aramaya gerek yoktur.
argümanları oraya yerleştirin.

Bu çağrı dizisiyle tek bir işlevin çağrılmasını şu şekilde belirtebilirsiniz:
işlev özelliği standart çağrı. Ayrıca geçersiz kılabilirsiniz -mrtd seçeneğini kullanarak
işlev niteliği cdecl.

Uyarı: bu çağrı kuralı, normalde Unix'te kullanılanla uyumsuzdur,
bu yüzden Unix derleyicisi ile derlenen kitaplıkları çağırmanız gerekiyorsa onu kullanamazsınız.

Ayrıca, değişken alan tüm fonksiyonlar için fonksiyon prototipleri sağlamalısınız.
argüman sayısı ("printf" dahil); aksi takdirde yanlış kod üretilecektir
bu işlevlere yapılan çağrılar için

Ayrıca, çok fazla işleve sahip bir işlevi çağırırsanız ciddi şekilde yanlış kod ortaya çıkar.
argümanlar. (Normalde, fazladan argümanlar zararsız bir şekilde göz ardı edilir.)

-mregparm=num
Tamsayı argümanlarını iletmek için kaç kayıt kullanıldığını kontrol edin. Varsayılan olarak, hayır
kayıtlar argümanları iletmek için kullanılır ve en fazla 3 kayıt kullanılabilir. Yapabilirsiniz
function niteliğini kullanarak belirli bir işlev için bu davranışı kontrol edin regparm.

Uyarı: bu anahtarı kullanırsanız ve num sıfır değilse, tüm modülleri oluşturmalısınız
herhangi bir kitaplık da dahil olmak üzere aynı değere sahip. Bu, sistem kitaplıklarını ve
başlangıç ​​modülleri

-msseregparm
Kayan nokta ve çift bağımsız değişkenler ve dönüş değerleri için SSE kaydı geçen kuralları kullanın.
function niteliğini kullanarak belirli bir işlev için bu davranışı kontrol edebilirsiniz.
sseregparm.

Uyarı: bu anahtarı kullanırsanız, tüm modülleri aynı değerde oluşturmalısınız,
herhangi bir kitaplık dahil. Bu, sistem kitaplıklarını ve başlangıç ​​modüllerini içerir.

-mvect8-ret-in-meminde
MMX kayıtları yerine bellekte 8 baytlık vektörler döndürün. Bu, varsayılan
Solaris@tie{}8 ve 9 ve VxWorks, şu ana kadar Sun Studio derleyicilerinin ABI'si ile eşleşecek
sürüm 12. Daha sonraki derleyici sürümleri (Studio 12 Update@tie{}1 ile başlayan) aşağıdaki gibidir
Solaris@tie{}86 ​​ve sonraki sürümlerde varsayılan olan diğer x10 hedefleri tarafından kullanılan ABI.
Bir tek tarafından üretilen mevcut kodla uyumlu kalmanız gerekiyorsa bu seçeneği kullanın.
GCC'nin önceki derleyici sürümleri veya eski sürümleri.

-mpc32
-mpc64
-mpc80
80387 kayan nokta hassasiyetini 32, 64 veya 80 bit olarak ayarlayın. Ne zaman -mpc32 belirtilir,
kayan nokta işlemlerinin sonuçlarının önemi 24 bite yuvarlanır
(Tek hassasiyet); -mpc64 kayan nokta sonuçlarının anlamlarını yuvarlar
53 bite kadar işlemler (çift hassasiyet) ve -mpc80 sonuçların anlamlarını yuvarlar
kayan nokta işlemlerinin 64 bite (genişletilmiş çift kesinlik)
varsayılan. Bu seçenek kullanıldığında, daha yüksek hassasiyette kayan nokta işlemleri
FPU kontrol sözcüğü açıkça ayarlanmadan programcı tarafından kullanılamaz.

Kayan nokta işlemlerinin yuvarlanmasını varsayılan 80 bitin altına ayarlamak,
bazı programları %2 veya daha fazla hızlandırır. Bazı matematiksel kitaplıkların şunu varsaydığına dikkat edin.
genişletilmiş kesinlik (80 bit) kayan nokta işlemleri varsayılan olarak etkindir; rutinler
bu tür kitaplıklarda, tipik olarak,
hassasiyeti ayarlamak için bu seçenek kullanıldığında "felaket iptali" olarak adlandırılır.
genişletilmiş hassasiyetten daha az.

-mstackrealign
Girişte yığını yeniden hizalayın. Intel x86'da, -mstackrealign seçenek üretecek
gerekirse çalışma zamanı yığınını yeniden hizalayan alternatif bir giriş ve sonsöz.
Bu, 4 baytlık hizalı bir yığını modern kodlarla tutan eski kodların karıştırılmasını destekler
SSE uyumluluğu için 16 baytlık bir yığın tutan. Ayrıca özniteliğe bakın
"force_align_arg_pointer", bireysel işlevlere uygulanabilir.

-mpreferred-yığın sınırı=num
Yığın sınırını 2 ile aynı hizada tutmaya çalışın. num bayt sınırı. Eğer
-mpreferred-stack-sınır belirtilmemişse, varsayılan 4'tür (16 bayt veya 128 bit).

Uyarı: SSE uzantılı x86-64 mimarisi için kod oluştururken
engelli, -mpreferred-yığın sınırı=3 yığın sınırını hizalı tutmak için kullanılabilir
8 bayt sınırına kadar. Tüm modülleri şu şekilde oluşturmalısınız: -mpreferred-yığın sınırı=3,
herhangi bir kitaplık dahil. Bu, sistem kitaplıklarını ve başlangıç ​​modüllerini içerir.

-mincoming-yığın-sınır=num
Gelen yığının yükseltilmiş bir 2 ile hizalandığını varsayalım. num bayt sınırı. Eğer
-gelen-yığın-sınır belirtilmemiş, tarafından belirtilen
-mpreferred-stack-sınır kullanılacaktır.

Pentium ve PentiumPro'da "double" ve "long double" değerleri bir
8 baytlık sınır (bkz. -malign-çift) veya önemli çalışma süresi performansından muzdarip
cezalar. Pentium III'te, "__m128" Akış SIMD Uzantısı (SSE) veri türü
16 bayt hizalı değilse düzgün çalışmaz.

Bu değerlerin yığın üzerinde uygun şekilde hizalanmasını sağlamak için yığın sınırı şu şekilde olmalıdır:
yığında depolanan herhangi bir değerin gerektirdiği şekilde hizalanır. Ayrıca, her fonksiyon
yığını hizalı tutacak şekilde oluşturulmalıdır. Böylece bir fonksiyon çağırmak
daha düşük bir ile derlenmiş bir işlevden daha yüksek bir tercih edilen yığın sınırı ile derlenmiş
tercih edilen yığın sınırı, büyük olasılıkla yığını yanlış hizalayacaktır. tavsiye edilir
geri aramaları kullanan kitaplıklar her zaman varsayılan ayarı kullanır.

Bu ekstra hizalama, fazladan yığın alanı tüketir ve genellikle kodu artırır
boy. Gömülü sistemler gibi yığın alanı kullanımına duyarlı kodlar ve
işletim sistemi çekirdekleri, tercih edilen hizalamayı azaltmak isteyebilir
-mpreferred-yığın sınırı=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
Bu anahtarlar, MMX, SSE, SSE2, SSE3'teki talimatların kullanımını etkinleştirir veya devre dışı bırakır.
SSSE3, SSE4.1, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A, FMA4, XOP,
LWP, ABM, BMI, BMI2, LZCNT veya 3DNow!
genişletilmiş komut setleri Bu uzantılar yerleşik olarak da mevcuttur
fonksiyonlar: bkz. X86 Gömme fonksiyonlar, etkinleştirilen işlevlerin ayrıntıları ve
bu anahtarlar tarafından devre dışı bırakılır.

Kayan nokta kodundan otomatik olarak oluşturulan SSE/SSE2 talimatlarına sahip olmak (
387 talimatın aksine), bkz. -mfpmath=sse.

GCC, şu durumlarda SSEx talimatlarını bastırır: -mavx kullanıldı. Bunun yerine, yeni AVX üretir
gerektiğinde tüm SSEx talimatları için talimatlar veya AVX eşdeğerliği.

Bu seçenekler, GCC'nin bu genişletilmiş talimatları oluşturulan kodda kullanmasını sağlayacaktır.
olmadan bile -mfpmath=sse. Çalışma zamanı CPU algılaması gerçekleştiren uygulamalar,
uygun bayrakları kullanarak desteklenen her mimari için ayrı dosyalar derleyin.
Özellikle, CPU algılama kodunu içeren dosya,
bu seçenekler.

-mcld
Bu seçenek, GCC'ye fonksiyonların girişinde bir "cld" talimatı vermesini söyler.
dize talimatlarını kullanan. Dize talimatları, seçilecek DF bayrağına bağlıdır
Otomatik artırma veya otomatik azaltma modu arasında. ABI, DF bayrağını belirtirken
işlev girişinde temizlenebilir, bazı işletim sistemleri bu belirtimi ihlal etmeyerek
istisna göndericilerinde DF bayrağını temizleme. İstisna işleyici olabilir
DF bayrak seti ile çağrılır, bu da dize olduğunda yanlış yön moduna yol açar.
yönergeler kullanılır. Bu seçenek, 32-bit x86 hedeflerinde varsayılan olarak şu şekilde etkinleştirilebilir:
ile GCC'yi yapılandırma --enable-cld seçeneğini yapılandırın. "cld" üretimi
komutları ile bastırılabilir -mno-cld bu durumda derleyici seçeneği.

-mvzerupper
Bu seçenek, GCC'ye bir aktarımdan önce bir "vzeroupper" talimatı vermesini söyler.
AVX'ten SSE'ye geçiş cezasını en aza indirmek için işlevden akışı kontrol edin ve
gereksiz sıfır üst içsel öğeleri kaldırın.

-mprefer-avx128
Bu seçenek, GCC'ye 128-bit AVX yerine 256-bit AVX talimatlarını kullanma talimatı verir.
otomatik vektörleştiricideki talimatlar.

-mcx16
Bu seçenek, GCC'nin oluşturulan kodda CMPXCHG16B talimatını kullanmasını sağlayacaktır.
CMPXCHG16B, 128-bit çift dörtlü (veya oword) veriler üzerinde atomik işlemlere izin verir
türleri. Bu, birden çok kişi tarafından güncellenebilen yüksek çözünürlüklü sayaçlar için kullanışlıdır.
işlemciler (veya çekirdekler). Bu talimat, atomik yerleşik programın bir parçası olarak oluşturulur.
fonksiyonlar: bkz. __senkronize yerleşikler or __atomik yerleşikler Ayrıntılar için.

-msahf
Bu seçenek, GCC'nin oluşturulan 64 bit kodda SAHF talimatını kullanmasını sağlayacaktır. Erken
Intel 64'lü Intel CPU'lar, AMD64 tarafından desteklenen LAHF ve SAHF talimatlarından yoksundu.
Aralık 4'te Pentium 1 G2005 adımının tanıtımı. LAHF ve SAHF, yükleme ve depolama
belirli durum bayrakları için sırasıyla talimatlar. 64 bit modunda, SAHF
talimat, "fmod", "drem" veya "remainder" yerleşik işlevlerini optimize etmek için kullanılır: bkz.
Diğer yerleşikler Ayrıntılar için.

-mmovbe
Bu seçenek, GCC'nin "__builtin_bswap32"yi uygulamak için movbe talimatını kullanmasını sağlayacaktır.
ve "__builtin_bswap64".

-mcrc32
Bu seçenek yerleşik işlevleri etkinleştirir, "__builtin_ia32_crc32qi",
"__builtin_ia32_crc32hi". "__builtin_ia32_crc32si" ve "__builtin_ia32_crc32di"
crc32 makine talimatını oluşturun.

-mrecip
Bu seçenek, GCC'nin RCPSS ve RSQRTSS komutlarını (ve bunların
vektörleştirilmiş varyantlar RCPPS ve RSQRTPS) ek bir Newton-Raphson adımı ile
için DIVSS ve SQRTSS (ve vektörleştirilmiş varyantları) yerine hassasiyeti artırın
tek duyarlıklı kayan noktalı bağımsız değişkenler. Bu talimatlar yalnızca şu durumlarda oluşturulur:
-funsafe-matematik-optimizasyonları ile birlikte etkinleştirilir -sonlu-matematik-sadece ve
-fno-trapping-matematiği. Dizinin verimi,
karşılıklı olmayan talimatın verimi, dizinin kesinliği olabilir
2 ulp'ye kadar azaltılır (yani 1.0'ın tersi 0.99999994'e eşittir).

GCC'nin "1.0f/sqrtf(x)" RSQRTSS (veya RSQRTPS) açısından zaten
-fffast-matematik (veya yukarıdaki seçenek kombinasyonu) ve gerek yok -mrecip.

Ayrıca, GCC'nin yukarıdaki diziyi, aşağıdakiler için ek Newton-Raphson adımıyla yayınladığını unutmayın.
vektörleştirilmiş tek kayan noktalı bölme ve vektörleştirilmiş "sqrtf(x)" zaten ile -fffast-matematik
(veya yukarıdaki seçenek kombinasyonu) ve gerek yok -mrecip.

-mrecip=yeğlemek
Bu seçenek, hangi karşılıklı tahmin talimatlarının kullanılabileceğini kontrol etmeye izin verir. yeğlemek
virgülle ayrılmış bir seçenekler listesidir ve önünde bir "!" olabilir. tersine çevirmek
seçenek: "tümü": tüm tahmin talimatlarını etkinleştir, "varsayılan": varsayılanı etkinleştir
talimatları, eşdeğer -mrecip, "none": tüm tahmin talimatlarını devre dışı bırakın,
eşdeğerdir -mno-reçete, "div": skaler bölme için yaklaşımı etkinleştirir,
"vec-div": vektörleştirilmiş bölme için yaklaşımı etkinleştirin, "sqrt": etkinleştirin
skaler karekök için yaklaşım, "vec-sqrt": için yaklaşımı etkinleştir
vektörleştirilmiş karekök.

Yani mesela, -mrecip=tümü,!sqrt tüm karşılıklı yaklaşımları mümkün kılar,
karekök hariç.

-mveclibabi=tip
Harici bir kitaplık kullanarak içselleri vektörleştirmek için kullanılacak ABI türünü belirtir.
Desteklenen türler, Intel kısa vektör matematik kitaplığı için "svml" ve aşağıdakiler için "acml"dir.
AMD matematik çekirdek kitaplığı arabirim stili. GCC şu anda çağrı gönderecek
"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",
için "vmlsAsinh4", "vmlsAsin4", "vmlsCosh4", "vmlsCos4", "vmlsAcosh4" ve "vmlsAcos4"
karşılık gelen işlev türü -mveclibabi=svml kullanılır ve "__vrd2_sin",
"__vrd2_cos", "__vrd2_exp", "__vrd2_log", "__vrd2_log2", "__vrd2_log10",
"__vrs4_sinf", "__vrs4_cosf", "__vrs4_expf", "__vrs4_logf", "__vrs4_log2f",
ilgili işlev türü için "__vrs4_log10f" ve "__vrs4_powf"
-mveclibabi=acml kullanıldı. Her ikisi de -ftree-vektörize ve -funsafe-matematik-optimizasyonları var
etkinleştirilecek. Bağlantıda bir SVML veya ACML ABI uyumlu kitaplık belirtilmelidir.
Zaman.

-mabi=isim
Belirtilen arama kuralı için kod oluşturun. İzin verilen değerler: sistem için
GNU/Linux ve diğer sistemlerde kullanılan ABI ve ms Microsoft ABI için. Varsayılan
Windows'u hedeflerken Microsoft ABI kullanmaktır. Diğer tüm sistemlerde, varsayılan
SYSV ABI'dir. kullanarak belirli bir işlev için bu davranışı kontrol edebilirsiniz.
işlev niteliği ms_abi/sysv_abi.

-mtls-lehçesi=tip
kullanarak iş parçacığı yerel depolamasına erişmek için kod oluşturun. gnu or gnu2 sözleşmeler. gnu
muhafazakar varsayılandır; gnu2 daha verimlidir, ancak derleme ve çalıştırma ekleyebilir
tüm sistemlerde karşılanamayan zaman gereksinimleri.

-push-arg'lar
-mno-push-arg'lar
Giden parametreleri depolamak için PUSH işlemlerini kullanın. Bu yöntem daha kısadır ve genellikle
SUB/MOV işlemlerini kullanan yöntem kadar hızlıdır ve varsayılan olarak etkindir. bazılarında
devre dışı bırakan durumlar, geliştirilmiş zamanlama ve azaltılmış performans nedeniyle performansı artırabilir
bağımlılıklar.

-maccumulate-giden-arglar
Etkinleştirilirse, giden bağımsız değişkenler için gereken maksimum alan miktarı
fonksiyon önsözünde hesaplanır. Bu, çoğu modern CPU'da daha hızlıdır, çünkü
azaltılmış bağımlılıklar, iyileştirilmiş zamanlama ve tercih edilen yığın olduğunda daha az yığın kullanımı
sınır 2'ye eşit değildir. Dezavantajı, kod boyutunda dikkate değer bir artıştır. Bu
anahtarı ima eder -mno-push-arg'lar.

-mthreads
Üzerinde iş parçacığı güvenli özel durum işlemeyi destekleyin Mingw32. İş parçacığı güvenliğine dayanan kod
istisna işleme, tüm kodu derlemeli ve -mthreads seçenek. Ne zaman
derleme, -mthreads tanımlar -D_MT; bağlanırken, özel bir iş parçacığı yardımcısında bağlanır
kütüphane -lmingwthrd hangi iş parçacığı istisnası işleme verilerini temizler.

-mno-hizalama-stringops
Satır içi dize işlemlerinin hedefini hizalamayın. Bu anahtar kod boyutunu küçültür
ve hedefin zaten hizalanmış olması durumunda performansı artırır, ancak GCC yapmaz
bunu biliyorum.

-minline-all-stringops
Varsayılan olarak GCC satır içi dize işlemlerini yalnızca hedefin
en az 4 baytlık bir sınıra hizalanır. Bu, daha fazla satır içi oluşturmaya, kod boyutunu artırmaya,
ancak hızlı memcpy, strlen ve memset'e bağlı olan kodun performansını artırabilir.
kısa uzunluklar.

-minline-stringops-dinamik olarak
Bilinmeyen boyuttaki dize işlemleri için, küçük için satır içi kodlu çalışma zamanı kontrollerini kullanın.
bloklar ve büyük bloklar için bir kütüphane çağrısı.

-mstringop-strateji=alg
Satır içi dizeye belirli bir algoritma hakkında dahili karar buluşsal yönteminin üzerine yaz
ile çalıştırma. İzin verilen değerler "rep_byte", "rep_4byte", "rep_8byte" için
belirtilen boyutta i386 "rep" öneki kullanılarak genişletme, "byte_loop", "loop",
Satır içi döngüyü genişletmek için "unrolled_loop", kitaplığı her zaman genişletmek için "libcall"
aramak.

-momit-yaprak-çerçeve-işaretçi
Çerçeve işaretçisini yaprak işlevleri için bir kayıtta tutmayın. Bu,
çerçeve işaretçilerini kaydetme, ayarlama ve geri yükleme talimatları ve ekstra bir kayıt yapar
yaprak fonksiyonlarında mevcuttur. Seçenek -fomit-frame-işaretçi çerçeveyi kaldırır
hata ayıklamayı zorlaştırabilecek tüm işlevler için işaretçi.

-mtls-doğrudan-seg-refs
-mno-tls-doğrudan-seg-refs
TLS değişkenlerine TLS segmentinden ofsetlerle erişilip erişilemeyeceğini kontrol eder
kaydı (32 bit için %gs, 64 bit için %fs) veya iş parçacığı temel işaretçisinin
katma. Bunun yasal olup olmadığı işletim sistemine bağlıdır.
segmenti tüm TLS alanını kapsayacak şekilde eşler.

GNU libc kullanan sistemler için varsayılan değer açıktır.

-msse2avx
-mno-sse2avx
Montajcının SSE talimatlarını VEX öneki ile kodlaması gerektiğini belirtin. Seçenek
-mavx bunu varsayılan olarak açar.

-mfentry
-mno-fentry
Profil oluşturma etkinse -pg profil oluşturma sayaç çağrısını prologdan önce yapın. Not: Açık
x86 mimarileri için "ms_hook_prologue" özelliği şu anda mümkün değil
-mfentry ve -pg.

-m8bit-idiv
-mno-8bit-idiv
Intel Atom gibi bazı işlemcilerde, 8 bitlik işaretsiz tamsayı bölme işlemi,
32-bit/64-bit tamsayı bölme. Bu seçenek, bir çalışma zamanı denetimi oluşturur. İkisi de olursa
bölünen ve bölen 0 ila 255 aralığında, 8 bitlik işaretsiz tamsayı bölme
32-bit/64-bit tamsayı bölme yerine kullanılır.

-mavx256-bölünmüş-hizasız-yük
-mavx256-bölünmüş-hizasız-mağaza
32 baytlık AVX hizasız yüklemeyi böl ve depola.

Bunlar -m anahtarlar, AMD x86-64 işlemcilerde yukarıdakilere ek olarak desteklenir.
64 bit ortamlar.

-m32
-m64
-mx32
32 bit veya 64 bit ortam için kod oluşturun. NS -m32 seçenek int, uzun ve
32 bite işaret eder ve herhangi bir i386 sisteminde çalışan kod üretir. NS -m64 seçenek
int'yi 32 bit ve uzun olarak ayarlar ve işaretçiyi 64 bit olarak ayarlar ve AMD'ler için kod üretir
x86-64 mimarisi. NS -mx32 seçenek int, long ve işaretçiyi 32 bit olarak ayarlar ve
AMD'nin x86-64 mimarisi için kod üretir. Darwin için sadece -m64 seçenek döner
kapalı -fno-resim ve -mdinamik-resimsiz seçenekleri.

-mno-kırmızı-bölge
x86-64 kodu için sözde kırmızı bölge kullanmayın. Kırmızı bölge,
x86-64 ABI, yığın işaretçisinin konumunun ötesinde 128 baytlık bir alandır.
sinyal veya kesme işleyicileri tarafından değiştirilemez ve bu nedenle
yığın işaretçisini ayarlamadan geçici veriler. Bayrak -mno-kırmızı-bölge devre dışı bırakır
bu kırmızı bölge.

-mcmodel=küçük
Küçük kod modeli için kod oluşturun: program ve sembolleri
adres alanının alt 2 GB'ı. İşaretçiler 64 bittir. programlar olabilir
statik veya dinamik olarak bağlantılı. Bu, varsayılan kod modelidir.

-mcmodel=çekirdek
Çekirdek kod modeli için kod oluşturun. Çekirdek, eksi 2 GB'de çalışır.
adres alanı. Bu model Linux çekirdek kodu için kullanılmalıdır.

-mcmodel=orta
Orta model için kod oluşturun: Program, aşağıdaki 2 GB'lık alana bağlanır.
adres alanı. Küçük semboller de oraya yerleştirilmiştir. Şundan daha büyük boyutlara sahip semboller
-mlarge-veri eşiği büyük veri veya bss bölümlerine konur ve bulunabilir
2GB'ın üzerinde. Programlar statik veya dinamik olarak bağlanabilir.

-mcmodel=büyük
Büyük model için kod üret: Bu model, adresler ve
bölümlerin boyutları.

-maddress-modu=uzun
Uzun adres modu için kod oluşturun. Bu yalnızca 64 bit ve x32 için desteklenir
ortamlar. 64 bit ortamlar için varsayılan adres modudur.

-maddress-modu=kısa
Kısa adres modu için kod oluşturun. Bu yalnızca 32 bit ve x32 için desteklenir
ortamlar. 32 bit ve x32 ortamları için varsayılan adres modudur.

i386 ve x86-64 Windows Opsiyonlar

Bu ek seçenekler, Windows hedefleri için kullanılabilir:

-mkonsol
Bu seçenek Cygwin ve MinGW hedefleri için kullanılabilir. Bir konsol olduğunu belirtir
bağlayıcıya PE başlığını ayarlaması talimatı verilerek uygulama oluşturulacaktır.
konsol uygulamaları için gerekli alt sistem türü. Bu, varsayılan davranıştır
Cygwin ve MinGW hedefleri.

-mdll
Bu seçenek Cygwin ve MinGW hedefleri için kullanılabilir. Bir DLL - a
dinamik bağlantı kitaplığı - oluşturulacak, gerekli olanın seçilmesini sağlayacak
çalışma zamanı başlangıç ​​nesnesi ve giriş noktası.

-mnop-eğlenceli-dll içe aktarma
Bu seçenek Cygwin ve MinGW hedefleri için kullanılabilir. olduğunu belirtir
dllimport özniteliği yoksayılmalıdır.

-mthread
Bu seçenek MinGW hedefleri için kullanılabilir. MinGW'ye özgü iş parçacığını belirtir
destek kullanılacaktır.

- cep telefonu kodu
Bu seçenek, mingw-w64 hedefleri için kullanılabilir. UNICODE makrosunun
önceden tanımlanıyor ve unicode özellikli çalışma zamanı başlangıç ​​kodunun seçildiği.

-mwin32
Bu seçenek Cygwin ve MinGW hedefleri için kullanılabilir. Tipik olduğunu belirtir
Windows ön tanımlı makroları ön işlemcide ayarlanmalıdır, ancak
çalışma zamanı kitaplığı/başlangıç ​​kodu seçimi.

-mwindows
Bu seçenek Cygwin ve MinGW hedefleri için kullanılabilir. Bir GUI olduğunu belirtir
uygulama, bağlayıcıya PE başlığını ayarlaması talimatı verilerek oluşturulacaktır.
alt sistem türünü uygun şekilde ayarlayın.

-fno-set-yığın-çalıştırılabilir
Bu seçenek MinGW hedefleri için kullanılabilir. için yürütülebilir bayrağın olduğunu belirtir.
iç içe işlevler tarafından kullanılan yığın ayarlanmadı. Bu, içinde çalışan ikili dosyalar için gereklidir.
Windows'un çekirdek modu, yürütülebilir dosyayı ayarlamak için kullanılan user32 API'si gibi
ayrıcalıklar, mevcut değil.

-mpe uyumlu-ortak
Bu seçenek Cygwin ve MinGW hedefleri için kullanılabilir. GNU olduğunu belirtir
ORTAK değişkenlerin doğru hizalanmasına izin veren PE dosya biçiminin uzantısı
kod üretirken kullanılmalıdır. GCC algılarsa varsayılan olarak etkinleştirilecektir.
yapılandırma sırasında bulunan hedef derleyicinin özelliği desteklediğini gösterir.

Ayrıca bakınız i386 ve x86-64 Opsiyonlar standart seçenekler için

IA-64 Opsiyonlar

Bunlar şunlardır -m Intel IA-64 mimarisi için tanımlanan seçenekler.

-big-endian
Büyük endian hedefi için kod oluşturun. Bu, HP-UX için varsayılandır.

-küçük endian
Küçük bir endian hedefi için kod oluşturun. Bu, AIX5 ve GNU/Linux için varsayılandır.

-mgnu-as
-mno-gnu-as
GNU derleyicisi için kod oluşturun (veya oluşturmayın). Bu varsayılandır.

-mgnu-ld
-mno-gnu-ld
GNU bağlayıcısı için kod oluşturun (veya oluşturmayın). Bu varsayılandır.

-mno-resim
Genel işaretçi kaydı kullanmayan kod oluşturun. Sonuç pozisyon değil
bağımsız koddur ve IA-64 ABI'yi ihlal eder.

-mvolatile-asm-durdurma
-mno-uçucu-asm-stop
Volatile asm deyimlerinden hemen önce ve sonra bir stop biti oluşturun (veya yapmayın).

-mregister-isimleri
-mno-kayıt-adları
Oluştur (veya yapma) in, loc, ve dışarı yığılmış kayıtlar için kayıt adları. Bu
assembler çıktısını daha okunaklı hale getirebilir.

-mno-sdata
-msdata
Küçük veri bölümünü kullanan optimizasyonları devre dışı bırakın (veya etkinleştirin). Bu yararlı olabilir
optimize edici hataların etrafında çalışmak için.

-mconstant-gp
Tek bir sabit genel işaretçi değeri kullanan kod oluşturun. Bu yararlı olduğunda
çekirdek kodu derleme.

-oto-resim
Kendi kendine yer değiştirebilen kod oluşturun. Bu şu anlama gelir: -mconstant-gp. Bu kullanışlı
ürün yazılımı kodunu derlerken.

-minline-float-bölme-min-gecikme
Minimum gecikmeyi kullanarak kayan noktalı değerlerin satır içi bölmeleri için kod oluşturun
algoritması.

-minline-float-bölme-maks-iş hacmi
Maksimum verimi kullanarak kayan noktalı değerlerin satır içi bölmeleri için kod oluşturun
algoritması.

-mno-inline-float-bölme
Kayan noktalı değerlerin bölmeleri için satır içi kod oluşturmayın.

-minline-int-bölme-min-gecikme
Minimum gecikmeyi kullanarak tamsayı değerlerinin satır içi bölmeleri için kod oluşturun
algoritması.

-minline-int-divide-maks-iş hacmi
Maksimum verimi kullanarak tamsayı değerlerinin satır içi bölmeleri için kod oluşturun
algoritması.

-mno-inline-int-bölme
Tamsayı değerlerinin bölmeleri için satır içi kod oluşturmayın.

-minline-sqrt-min-gecikme
Minimum gecikme algoritmasını kullanarak satır içi karekökler için kod oluşturun.

-minline-sqrt-maks-iş hacmi
Maksimum verim algoritmasını kullanarak satır içi karekökler için kod oluşturun.

-mno-satır içi-sqrt
sqrt için satır içi kod oluşturmayın.

-mfused-deli
-mno-kaynaşmış-madd
Birleştirilmiş çarpma/ekleme veya çarpma/çıkarma işlemlerini kullanan kod üretmeyin (yapmayın)
Talimatlar. Varsayılan, bu talimatları kullanmaktır.

-mno-cüce2-asm
-mdwarf2-asm
DWARF2 satır numarası hata ayıklama bilgisi için derleyici kodu oluşturmayın (veya yapmayın). Bu
GNU birleştiricisi kullanılmadığında faydalı olabilir.

-yıllık-durdurma bitleri
-mno-erken-durdurma bitleri
Durdurma bitlerinin, talimattan hemen öncekinden daha önce yerleştirilmesine izin verin.
durdurma bitini tetikledi. Bu, talimat zamanlamasını iyileştirebilir, ancak her zaman değil
böyle yap.

-mfixed-aralık=kayıt aralığı
Verilen kayıt aralığını sabit kayıtlar olarak ele alan kod oluşturun. Sabit bir kayıt
kayıt ayırıcının kullanamayacağı bir tanesidir. Bu, çekirdeği derlerken kullanışlıdır.
kod. Bir kayıt aralığı, bir tire ile ayrılmış iki kayıt olarak belirtilir. çoklu
kayıt aralıkları virgülle ayrılarak belirtilebilir.

-mtls-boyutu=tls-boyutu
Anında TLS ofsetlerinin bit boyutunu belirtin. Geçerli değerler 14, 22 ve 64'tür.

-mtune=işlemci tipi
Belirli bir CPU için talimat zamanlamasını ayarlayın, Geçerli değerler itanium'dur,
itanium1, merced, itanium2 ve mckinley.

-milp32
-mlp64
32 bit veya 64 bit ortam için kod oluşturun. 32 bit ortam int'yi ayarlar,
uzun ve işaretçi 32 bit. 64 bit ortam, int'yi 32 bit olarak ayarlar ve uzun ve
64 bit işaretçisi. Bunlar, HP-UX'e özgü işaretlerdir.

-mno-schedule-br-data-spec
-msched-br-veri-belirtimi
Yeniden yüklemeden önce veri spekülatif planlamasını (Devre Dışı Bırak/En) mümkün kılar. Bu sonuçlanacak
ld.a talimatlarının ve ilgili kontrol talimatlarının oluşturulması (ld.c /
chk.a). Varsayılan 'devre dışı'dır.

-msched-ar-veri-belirtimi
-mno-schedule-ar-data-spec
Yeniden yüklemeden sonra veri spekülatif zamanlamayı etkinleştirir/devre dışı bırakır. Bu nesille sonuçlanacak
ld.a talimatları ve ilgili kontrol talimatları (ld.c / chk.a). NS
varsayılan "etkinleştir" dir.

-mno-zamanlanmış-kontrol-özelliği
-msched-kontrol-özelliği
Kontrol spekülatif zamanlamayı (Devre Dışı Bırak/En) mümkün kılar. Bu özellik yalnızca
bölge zamanlaması (yani yeniden yüklemeden önce). Bu, ld.s'nin üretilmesiyle sonuçlanacaktır.
talimatlar ve ilgili kontrol talimatları chk.s . Varsayılan
'devre dışı bırakmak'.

-msched-br-veri spesifikasyonu
-mno-schedule-br-in-data-spec
Verilere bağlı talimatların spekülatif zamanlamasını (En/Devre Dışı) devre dışı bırakın
yeniden yüklemeden önce spekülatif yükler. Bu sadece ile etkilidir -msched-br-veri-belirtimi
etkinleştirilmiş. Varsayılan 'etkinleştir'dir.

-msched-ar-veri spesifikasyonunda
-mno-schedule-ar-in-veri spesifikasyonu
Verilere bağlı talimatların spekülatif zamanlamasını (En/Devre Dışı) devre dışı bırakın
yeniden yükledikten sonra spekülatif yükler. Bu sadece ile etkilidir -msched-ar-veri-belirtimi
etkinleştirilmiş. Varsayılan 'etkinleştir'dir.

-msched-in-control-spec
-mno-zamanlanmış-kontrol spesifikasyonu
(En/Devre Dışı) yönergelere bağlı spekülatif zamanlamayı devre dışı bırakın.
spekülatif yükleri kontrol eder. Bu sadece ile etkilidir -msched-kontrol-özelliği sağladı.
Varsayılan 'etkinleştir'dir.

-mno-sched-prefer-veri-özelliği olmayan-insns
-msched-tercih-veri olmayan-spec-insns
Etkinleştirilirse, veri spekülatif talimatları, yalnızca mevcutsa zamanlama için seçilecektir.
şu anda başka seçenek yok. Bu, veri spekülasyonunun kullanılmasını sağlayacaktır.
çok daha muhafazakar. Varsayılan 'devre dışı'dır.

-mno-sched-tercih-kontrol dışı-spec-insns
-msched-tercih-kontrol dışı-spec-insns
Etkinleştirilirse, kontrol spekülatif talimatları, yalnızca mevcutsa program için seçilecektir.
şu anda başka seçenek yok. Bu, kontrol spekülasyonunun kullanılmasını sağlayacaktır.
çok daha muhafazakar. Varsayılan 'devre dışı'dır.

-mno-sched-count-spec-in-kritik-yol
-msched-count-spec-in-kritik-yol
Etkinleştirilirse, hesaplama sırasında spekülatif bağımlılıklar dikkate alınacaktır.
talimat öncelikleri. Bu, spekülasyonun kullanımını biraz daha artıracak
tutucu. Varsayılan 'devre dışı'dır.

-msched-spec-ldc
Basit bir veri spekülasyon kontrolü kullanın. Bu seçenek varsayılan olarak açıktır.

-msched-kontrol-özel-ldc
Kontrol spekülasyonları için basit bir kontrol kullanın. Bu seçenek varsayılan olarak açıktır.

-msched-stop-bitleri-her döngüden sonra
Programlarken her döngüden sonra bir durdurma biti yerleştirin. Bu seçenek varsayılan olarak açıktır.

-msched-fp-mem-deps-sıfır maliyet
Kayan nokta depolarının ve yüklerinin aşağıdaki durumlarda bir çakışmaya neden olma olasılığının olmadığını varsayalım.
aynı talimat grubuna yerleştirilir. Bu seçenek varsayılan olarak devre dışıdır.

-msel-schedule-kontrol etme-kontrol-özelliği
Seçici zamanlamada kontrol spekülasyonları için kontroller oluşturun. Bu bayrak
varsayılan olarak devre dışı.

-msched-max-bellek-insns=max-insn
Komut grubu başına bellek insn sayısını sınırlayarak, daha düşük öncelik verir.
aynı talimat grubunda programlamaya çalışan sonraki bellek insn'leri.
Önbellek bankası çakışmalarını önlemek için sıklıkla yararlıdır. Varsayılan değer 1'dir.

-msched-max-memory-insns-hard-limit
Komut grubunda "msched-max-memory-insns"den fazlasına izin verme. Aksi takdirde sınır
'yumuşak', yani sınıra ulaşıldığında bellek dışı işlemleri tercih edeceğimiz anlamına gelir, ancak
yine de bellek işlemlerini zamanlayabilir.

IA-64/VMS Opsiyonlar

Bunlar -m IA-64/VMS uygulamaları için seçenekler tanımlanmıştır:

-mvms-dönüş-kodları
Ana sistemden VMS koşul kodlarını döndürün. Varsayılan, POSIX stili koşulunu döndürmektir
(örn. hata) kodları.

-mdebug-ana=önek
Adı ile başlayan ilk rutini işaretleyin önek için ana rutin olarak
ayıklayıcı.

-mmalloc64
Varsayılan olarak 64 bit bellek ayırma rutinleri.

LM32 Opsiyonlar

Bunlar -m Kafes Mico32 mimarisi için seçenekler tanımlanmıştır:

-mbarrel-shift-etkin
Namlu kaydırma talimatlarını etkinleştirin.

-mdivid-etkin
Bölme ve modül talimatlarını etkinleştirin.

-mmultiply-etkin
Çarpma talimatlarını etkinleştirin.

-msign-uzantı-etkin
İşaret genişletme talimatlarını etkinleştirin.

-müzer etkin
Kullanıcı tanımlı talimatları etkinleştirin.

M32C Opsiyonlar

-mcpu=isim
Kodun oluşturulacağı CPU'yu seçin. isim biri olabilir r8c R8C/Tiny için
seri, m16c M16C (/60'a kadar) serisi için, m32cm M16C/80 serisi için veya m32c
M32C/80 serisi için.

-msim
Programın simülatörde çalıştırılacağını belirtir. Bu alternatif neden olur
örneğin dosya G/Ç'yi destekleyen bağlantı kurulacak çalışma zamanı kitaplığı. Yapmamalısın
gerçek donanım üzerinde çalışacak programlar oluştururken bu seçeneği kullanın; Mecbursun
ne gerekiyorsa G/Ç işlevleri için kendi çalışma zamanı kitaplığınızı sağlayın.

-memregler=numara
GCC'nin kod sırasında kullanacağı bellek tabanlı sözde kayıtların sayısını belirtir
nesil. Bu sözde kayıtlar gerçek kayıtlar gibi kullanılacaktır, dolayısıyla bir
GCC'nin kodu mevcut kayıtlara sığdırma yeteneği ile
kayıtlar yerine bellek kullanmanın performans cezası. Tüm modüllerin bir
program bu seçenek için aynı değerde derlenmelidir. Bundan dolayı sen
bu seçeneği gcc'nin oluşturduğu varsayılan çalışma zamanı kitaplıkları ile kullanmamalıdır.

M32R/D Opsiyonlar

Bunlar -m Renesas M32R/D mimarileri için seçenekler tanımlanmıştır:

-m32r2
M32R/2 için kod oluşturun.

-m32rx
M32R/X için kod oluşturun.

-m32r
M32R için kod oluşturun. Bu varsayılandır.

-mmodel=küçük
Tüm nesnelerin daha düşük 16 MB bellekte yaşadığını varsayın (böylece adresleri
"ld24" komutuyla yüklenir) ve tüm alt programlara şu komutla erişilebildiğini varsayalım.
"bl" talimatı. Bu varsayılandır.

Belirli bir nesnenin adreslenebilirliği "model" özniteliği ile ayarlanabilir.

-mmodel=orta
Nesnelerin 32 bitlik adres alanında herhangi bir yerde olabileceğini varsayalım (derleyici
adreslerini yüklemek için "seth/add3" talimatları) ve tüm alt programların
"bl" komutu ile ulaşılabilir.

-mmodel=büyük
Nesnelerin 32 bitlik adres alanında herhangi bir yerde olabileceğini varsayalım (derleyici
adreslerini yüklemek için "seth/add3" talimatları) ve alt programların kullanılamayacağını varsayalım.
"bl" komutuyla erişilebilir (derleyici çok daha yavaş
"seth/add3/jl" komut dizisi).

-msdata=yok
Küçük veri alanının kullanımını devre dışı bırakın. Değişkenler birine konulacak .veri, bssya da
.rodata ("bölüm" özelliği belirtilmemişse). Bu varsayılandır.

Küçük veri alanı bölümlerden oluşur .sdata ve .sbss. nesneler açıkça olabilir
bu bölümlerden birini kullanarak "section" özniteliği ile küçük veri alanına koyun.

-msveri=sveri
Küçük veri alanına küçük global ve statik verileri koyun, ancak özel veriler üretmeyin.
Onlara referans vermek için kod.

-msdata=kullan
Küçük veri alanına küçük global ve statik verileri koyun ve özel
onlara başvurmak için talimatlar.

-G num
Global ve statik nesneleri küçük veya eşit olarak koyun num küçük verilere bayt veya
normal veri veya bss bölümleri yerine bss bölümleri. varsayılan değeri num is
8. -msdata seçenek şunlardan birine ayarlanmalıdır veri or kullanım bu seçeneğe sahip olmak için
etkisi.

Tüm modüller aynı ile derlenmelidir -G num değer. Farklı derleme
değerleri num çalışabilir veya çalışmayabilir; değilse, linker bir hata verecektir
mesaj --- yanlış kod üretilmeyecek.

-mdebug
Derleyicideki M32R'ye özgü kodun yardımcı olabilecek bazı istatistikleri görüntülemesini sağlar.
hata ayıklama programlarında.

-malign-döngüler
Tüm döngüleri 32 baytlık bir sınıra hizalayın.

-mno-align-döngüleri
Döngüler için 32 baytlık bir hizalamayı zorlamayın. Bu varsayılandır.

-missue oranı=numara
Konu numara döngü başına talimatlar. numara sadece 1 veya 2 olabilir.

-mbranch-maliyet=numara
numara sadece 1 veya 2 olabilir. 1 ise şubeler tercih edilir.
koşullu kod, 2 ise, tersi geçerli olacaktır.

-mflush-trap=numara
Önbelleği temizlemek için kullanılacak tuzak numarasını belirtir. Varsayılan değer 12'dir. Geçerli
sayılar 0 ile 15 arasındadır.

-mno-flush-trap
Bir tuzak kullanılarak önbelleğin temizlenemeyeceğini belirtir.

-mflush-işlev=isim
Önbelleği temizlemek için çağrılacak işletim sistemi işlevinin adını belirtir. NS
varsayılan _floş_önbellek, ancak bir işlev çağrısı yalnızca bir tuzak değilse kullanılacaktır.
kullanılabilir.

-mno-flush-fonk
Önbelleği boşaltmak için bir işletim sistemi işlevi olmadığını gösterir.

M680x0 Opsiyonlar

Bunlar şunlardır -m M680x0 ve ColdFire işlemciler için tanımlanan seçenekler. Varsayılan ayarlar
derleyici yapılandırıldığında hangi mimarinin seçildiğine bağlıdır; varsayılanlar
en yaygın seçenekler için aşağıda verilmiştir.

-mart=kemer
Belirli bir M680x0 veya ColdFire komut seti mimarisi için kod oluşturun.
izin verilen değerler kemer M680x0 mimarileri için: 68000, 68010, 68020, 68030,
68040, 68060 ve cpu32. ColdFire mimarileri Freescale'in standartlarına göre seçilir.
ISA sınıflandırması ve izin verilen değerler şunlardır: isaa, isa artı, isab ve Isaac.

gcc bir makro tanımlar __mcfkemer__ ColdFire hedefi için kod oluşturduğunda.
The kemer bu makrodakilerden biri -Mart Yukarıda verilen argümanlar.

Birlikte kullanıldığında, -Mart ve -mtune benzer bir ailede çalışan kodu seçin
işlemciler, ancak bu belirli bir mikro mimari için optimize edilmiştir.

-mcpu=cpu
Belirli bir M680x0 veya ColdFire işlemcisi için kod oluşturun. M680x0 cpuler:
68000, 68010, 68020, 68030, 68040, 68060, 68302, 68332 ve cpu32. Soğuk Ateş cpus
CPU'ları ailelere göre de sınıflandıran aşağıdaki tabloda verilmiştir:

Aile: -mcpu argümanlar
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 geçersiz kılmaları -mart=kemer if kemer ile uyumlu cpu. diğer kombinasyonları
-mcpu ve -Mart reddedildi.

gcc makroyu tanımlar __mcf_cpu_cpu ColdFire hedefi ne zaman cpu seçildi. Ayrıca
tanımlar __mcf_aile_aile, değeri nerede aile yukarıdaki tablo ile verilmektedir.

-mtune=melodi
tarafından belirlenen kısıtlamalar dahilinde, belirli bir mikro mimari için kodu ayarlayın. -Mart
ve -mcpu. M680x0 mikro mimarileri şunlardır: 68000, 68010, 68020, 68030, 68040,
68060 ve cpu32. ColdFire mikro mimarileri şunlardır: cfv1, cfv2, cfv3, cfv4 ve
cfv4e.

Ayrıca kullanabilirsiniz -mtune=68020-40 68020'de nispeten iyi çalışması gereken kod için,
68030 ve 68040 hedefler. -mtune=68020-60 benzerdir ancak 68060 hedef içerir:
kuyu. Bu iki seçenek, aynı ayar kararlarını seçer. -m68020-40 ve -m68020-60
respectivamente.

gcc makroları tanımlar __mckemer ve __mckemer__ 680x0 mimarisini ayarlarken
kemer. Ayrıca tanımlar mckemer ikisinden biri olmadıkça -ansi veya GNU olmayan -std seçeneği kullanılır.
gcc tarafından seçilen bir dizi mimari için ayar yapıyorsa -mtune=68020-40 or
-mtune=68020-60, aralıktaki her mimari için makroları tanımlar.

gcc ayrıca makroyu tanımlar __Muark__ ColdFire mikro mimarisini ayarlarken
uark, Burada uark yukarıda verilen argümanlardan biridir.

-m68000
-mc68000
68000 için çıktı oluşturun. Bu, derleyici için yapılandırıldığında varsayılandır.
68000 tabanlı sistemler. eşdeğerdir -mart=68000.

68000 de dahil olmak üzere 000 veya EC68008 çekirdekli mikro denetleyiciler için bu seçeneği kullanın.
68302, 68306, 68307, 68322, 68328 ve 68356.

-m68010
68010 için çıktı oluşturun. Bu, derleyici için yapılandırıldığında varsayılandır.
68010 tabanlı sistemler. eşdeğerdir -mart=68010.

-m68020
-mc68020
68020 için çıktı oluşturun. Bu, derleyici için yapılandırıldığında varsayılandır.
68020 tabanlı sistemler. eşdeğerdir -mart=68020.

-m68030
68030 için çıktı oluşturun. Bu, derleyici için yapılandırıldığında varsayılandır.
68030 tabanlı sistemler. eşdeğerdir -mart=68030.

-m68040
68040 için çıktı oluşturun. Bu, derleyici için yapılandırıldığında varsayılandır.
68040 tabanlı sistemler. eşdeğerdir -mart=68040.

Bu seçenek, tarafından taklit edilmesi gereken 68881/68882 talimatlarının kullanımını engeller.
68040'taki yazılım. 68040'ınızın öykünecek kodu yoksa bu seçeneği kullanın.
bu talimatlar.

-m68060
68060 için çıktı oluşturun. Bu, derleyici için yapılandırıldığında varsayılandır.
68060 tabanlı sistemler. eşdeğerdir -mart=68060.

Bu seçenek, olması gereken 68020 ve 68881/68882 talimatlarının kullanımını engeller.
68060'ta yazılım tarafından öykünülür. 68060'ınızın kodu yoksa bu seçeneği kullanın.
bu talimatları taklit etmek için.

-mcpu32
Bir CPU32 için çıktı oluşturun. Bu, derleyici için yapılandırıldığında varsayılandır.
CPU32 tabanlı sistemler. eşdeğerdir -mart=cpu32.

32 da dahil olmak üzere CPU32 veya CPU68330+ çekirdekli mikro denetleyiciler için bu seçeneği kullanın.
68331, 68332, 68333, 68334, 68336, 68340, 68341, 68349 ve 68360.

-m5200
520X ColdFire CPU için çıktı oluşturun. Derleyici olduğunda bu varsayılandır
520X tabanlı sistemler için yapılandırılmış. eşdeğerdir -mcpu=5206ve şimdi
bu seçenek lehine reddedildi.

MCF5200, MCF5202 dahil olmak üzere 5203 çekirdekli mikro denetleyici için bu seçeneği kullanın,
MCF5204 ve MCF5206.

-m5206e
5206e ColdFire CPU için çıktı oluşturun. Seçenek artık lehine kullanımdan kaldırıldı
eşdeğer -mcpu=5206e.

-m528x
ColdFire 528X ailesinin bir üyesi için çıktı oluşturun. Seçenek şimdi
eşdeğeri lehine kullanımdan kaldırıldı -mcpu=528x.

-m5307
ColdFire 5307 CPU için çıktı oluşturun. Seçenek artık lehine kullanımdan kaldırılmıştır.
eşdeğer -mcpu=5307.

-m5407
ColdFire 5407 CPU için çıktı oluşturun. Seçenek artık lehine kullanımdan kaldırılmıştır.
eşdeğer -mcpu=5407.

-mcfv4e
ColdFire V4e ailesi CPU için çıktı oluşturun (örn. 547x/548x). Bu şunları içerir:
donanım kayan nokta yönergeleri. Seçenek eşdeğerdir -mcpu=547x, ve bir
şimdi bu seçenek lehine kullanımdan kaldırıldı.

-m68020-40
Yeni talimatların hiçbirini kullanmadan 68040 için çıktı oluşturun. Bu sonuç
68020/68881 veya 68030 veya
68040. Oluşturulan kod, bilgisayarda öykünülen 68881 yönergelerini kullanır.
68040

Seçenek eşdeğerdir -mart=68020 -mtune=68020-40.

-m68020-60
Yeni talimatların hiçbirini kullanmadan 68060 için çıktı oluşturun. Bu sonuç
68020/68881 veya 68030 veya
68040. Oluşturulan kod, bilgisayarda öykünülen 68881 yönergelerini kullanır.
68060

Seçenek eşdeğerdir -mart=68020 -mtune=68020-60.

-mhard-şamandıra
-m68881
Kayan nokta yönergeleri oluşturun. Bu, 68020 ve üstü için varsayılandır ve
FPU'ya sahip ColdFire cihazları için. Makroyu tanımlar __VAR_68881__ M680x0'da
hedefler ve __mcffpu__ ColdFire hedeflerinde.

-msoft-float
Kayan nokta yönergeleri oluşturmayın; bunun yerine kitaplık çağrılarını kullanın. bu
68000, 68010 ve 68832 hedefler için varsayılan. ColdFire için de varsayılandır.
FPU'su olmayan cihazlar.

-mdiv
-mno-div
ColdFire donanım bölme ve kalan talimatları oluşturun (oluşturmayın). Eğer
-Mart olmadan kullanılır -mcpu, ColdFire mimarileri için varsayılan "açık" ve "kapalı"
M680x0 mimarileri için. Aksi takdirde, varsayılan hedef CPU'dan alınır (ya
varsayılan CPU veya tarafından belirtilen -mcpu). Örneğin, varsayılan "kapalı"
için -mcpu=5206 ve "açık" için -mcpu=5206e.

gcc makroyu tanımlar __mcfhwdiv__ Bu seçenek etkinleştirildiğinde.

-mshort
"Kısa int" gibi, "int" türünü 16 bit genişliğinde düşünün. Ek olarak, parametreler
yığında iletilen, API'si olan hedeflerde bile 16 bitlik bir sınıra hizalanır.
32-bit'e yükseltmeyi zorunlu kılar.

-mno-kısa
"int" türünün 16 bit genişliğinde olduğunu düşünmeyin. Bu varsayılandır.

-mnobit alanı
-mno-bit alanı
Bit alanı talimatlarını kullanmayın. NS -m68000, -mcpu32 ve -m5200 seçenekler ima eder
-mnobit alanı.

-mbit alanı
Bit alanı talimatlarını kullanın. NS -m68020 seçenek ima eder -mbit alanı. Bu,
68020 için tasarlanmış bir yapılandırma kullanıyorsanız varsayılan.

-mrtd
Sabit bir değer alan işlevlerin olduğu farklı bir işlev çağırma kuralı kullanın.
argümanların sayısı, argümanlarını açan "rtd" talimatıyla birlikte döner
dönerken. Bu, arayana bir talimat kaydeder çünkü aramaya gerek yoktur.
argümanları oraya yerleştirin.

Bu çağrı kuralı, normalde Unix'te kullanılanla uyumsuzdur, bu nedenle
Unix derleyicisi ile derlenen kitaplıkları çağırmanız gerekiyorsa bunu kullanamazsınız.

Ayrıca, değişken alan tüm fonksiyonlar için fonksiyon prototipleri sağlamalısınız.
argüman sayısı ("printf" dahil); aksi takdirde yanlış kod üretilecektir
bu işlevlere yapılan çağrılar için

Ayrıca, çok fazla işleve sahip bir işlevi çağırırsanız ciddi şekilde yanlış kod ortaya çıkar.
argümanlar. (Normalde, fazladan argümanlar zararsız bir şekilde göz ardı edilir.)

"rtd" talimatı 68010, 68020, 68030, 68040, 68060 ve CPU32 tarafından desteklenir
işlemciler, ancak 68000 veya 5200 tarafından değil.

-mno-rtd
tarafından seçilen arama kurallarını kullanmayın. -mrtd. Bu varsayılandır.

-malign-int
-mno-hizalama-int
GCC'nin "int", "long", "long long", "float", "double" ve "long" olarak hizalanıp hizalanmayacağını kontrol edin
32 bitlik bir sınırda double" değişkenler (-malign-int) veya 16 bitlik bir sınır
(-mno-hizalama-int). Değişkenleri 32 bit sınırlarda hizalamak, çalışan kod üretir
32 bit veri yollu işlemcilerde biraz daha hızlı, daha fazla bellek pahasına.

Uyarı: eğer kullanırsan -malign-int anahtarı, GCC içeren yapıları hizalayacaktır.
yukarıdaki türler, yayınlanan çoğu uygulama ikili arabiriminden farklı
m68k için teknik özellikler.

-mpcrel
Genel bir adres kullanmak yerine, 68000'in doğrudan bilgisayara göre adresleme modunu kullanın.
ofset tablosu. Şu anda, bu seçenek şu anlama gelir: -fpic, en fazla 16 bitlik bir ofset sağlar
bilgisayara göre adresleme için. -fPIC şu anda desteklenmiyor -mpcrelOlsa
bu, 68020 ve daha yüksek işlemciler için desteklenebilir.

-mno-katı hizalama
-mstrict-hizalama
Hizalanmamış bellek referanslarının sistem tarafından ele alınacağını varsaymayın (yapmayın).

-msep-veri
Veri segmentinin farklı bir bellek alanına yerleştirilmesine izin veren kod oluşturun
metin bölümünden. Bu, olmayan bir ortamda yerinde yürütmeye izin verir.
sanal bellek yönetimi. Bu seçenek şu anlama gelir: -fPIC.

-mno-eylül-veri
Veri segmentinin metin segmentini takip ettiğini varsayan kod oluşturun. Bu
varsayılan.

-orta-paylaşılan-kütüphane
Kitaplık kimliği yöntemi aracılığıyla paylaşılan kitaplıkları destekleyen kod oluşturun. Bu izin verir
sanal belleği olmayan bir ortamda yerinde ve paylaşılan kitaplıkları yürütmek için
yönetmek. Bu seçenek şu anlama gelir: -fPIC.

-mno-id-paylaşılan-kütüphane
Kimlik tabanlı paylaşılan kitaplıkların kullanıldığını varsaymayan kod oluşturun. Bu
varsayılan.

-mshared-library-id=n
Derlenmekte olan kimlik tabanlı paylaşılan kitaplığın kimlik numarasını belirtir.
0 değerinin belirtilmesi daha kompakt kod üretecek, diğer değerlerin belirtilmesi ise
bu numaranın mevcut kütüphaneye tahsis edilmesini zorlayın, ancak daha fazla yer yok veya
bu seçeneği atlamaktan daha verimli zaman.

-mxgot
-mno-xgot
ColdFire için konumdan bağımsız kod oluştururken, aşağıdaki durumlarda çalışan kod oluşturun:
GOT'ta 8192'den fazla giriş var. Bu kod, koddan daha büyük ve daha yavaş
bu seçenek olmadan oluşturulur. M680x0 işlemcilerde bu seçeneğe gerek yoktur; -fPIC
yeterli.

GCC normalde GOT'tan değerleri yüklemek için tek bir komut kullanır. Bu iken
nispeten verimlidir, yalnızca GOT yaklaşık 64k'dan küçükse çalışır. Herhangi bir şey
daha büyük, bağlayıcının aşağıdaki gibi bir hata bildirmesine neden olur:

yer değiştirme, sığacak şekilde kısaltıldı: R_68K_GOT16O foobar

Bu olursa, kodunuzu ile yeniden derlemeniz gerekir. -mxgot. Daha sonra ile çalışmalıdır
çok büyük GOT'lar. Bununla birlikte, oluşturulan kod -mxgot olduğundan daha az verimlidir.
global bir sembolün değerini almak için 4 talimat alır.

GNU bağlayıcısının daha yeni sürümleri de dahil olmak üzere bazı bağlayıcıların
birden fazla GOT ve GOT girişlerini sıralayın. Böyle bir bağlayıcınız varsa, yalnızca
kullanmak -mxgot 8192 GOT'tan fazlasına erişen tek bir nesne dosyası derlerken
girdileri. Çok azı yapar.

Bu seçeneklerin, GCC konumdan bağımsız kod oluşturmadığı sürece hiçbir etkisi yoktur.

MÇekirdek Opsiyonlar

Bunlar şunlardır -m Motorola M*Core işlemciler için tanımlanan seçenekler.

-mhardlit
-mno-sert ışıklı
İki veya daha az komutla yapılabiliyorsa, kod akışına satır içi sabitler.

-mdiv
-mno-div
Böl komutunu kullanın. (Varsayılan olarak etkindir).

-mrelax-hemen
-mno-rahatla-hemen
Bit işlemlerinde rasgele boyuttaki anlık işlemlere izin verin.

-mwide-bit alanları
-mno-geniş-bit alanları
Bit alanlarını her zaman int boyutlu olarak ele alın.

-m4byte-işlevleri
-mno-4byte-işlevleri
Tüm işlevleri 4 baytlık bir sınıra hizalanmaya zorlayın.

-mcallgraph-veri
-mno-callgraph-veri
Callgraph bilgilerini yayınlayın.

-mslow-bayt
-mno-yavaş bayt
Bayt miktarlarını okurken kelime erişimini tercih edin.

-küçük endian
-big-endian
Küçük bir endian hedefi için kod oluşturun.

-m210
-m340
210 işlemci için kod oluşturun.

-mno-lsim
Çalışma zamanı desteğinin sağlandığını varsayın ve simülatör kitaplığını atlayın.
(libsim.a) bağlayıcı komut satırından.

-mstack-artış=boyut
Tek bir yığın artış işlemi için maksimum miktarı ayarlayın. Büyük değerler
büyük miktarda ihtiyaç duyan işlevleri içeren programların hızını artırın.
yığın alanı, ancak yığın uzatılırsa bir segmentasyon hatasını da tetikleyebilirler
çok fazla. Varsayılan değer 0x1000'dir.

MEP Opsiyonlar

-mabsdiff
İki kayıt arasındaki mutlak fark olan "abs" komutunu etkinleştirir.

-alışveriş merkezi seçenekleri
Tüm isteğe bağlı talimatları etkinleştirir - ortalama, çarpma, bölme, bit işlemleri,
baştaki sıfır, mutlak fark, min/maks, klip ve doygunluk.

-ortalama
İki kaydın ortalamasını hesaplayan "ave" komutunu etkinleştirir.

-mtabanlı=n
boyut değişkenleri n bayt veya daha küçük ".based" bölümüne şu şekilde yerleştirilecektir:
varsayılan. Tabanlı değişkenler, temel kayıt olarak $tp kaydını kullanır ve bir
".based" bölümü için 128 baytlık sınır.

-mbittoplar
Bit çalıştırma talimatlarını etkinleştirir - bit testi ("btstm"), ayarla ("bsetm"), temizle
("bclrm"), ters çevir ("bnotm") ve test et ve ayarla ("tas").

-mc=isim
Sabit verilerin hangi bölüme yerleştirileceğini seçer. isim "minik", "yakın" veya
"uzak".

-mclip
"Klip" talimatını etkinleştirir. "-mclip" ifadesinin, siz de kullanmadığınız sürece yararlı olmadığını unutmayın.
"-mminmax" sağlayın.

-mconfig=isim
Yerleşik çekirdek yapılandırmalarından birini seçer. Her MeP çipinde bir veya daha fazla
içindeki modüller; her modülün bir çekirdek CPU'su ve isteğe bağlı olarak çeşitli yardımcı işlemcileri vardır
yönergeler ve çevre birimleri. GCC'nin bir parçası olmayan "MeP-Integrator" aracı şunları sağlar:
bu seçenek aracılığıyla bu yapılandırmalar; bu seçeneği kullanmak, tümünü kullanmakla aynıdır.
karşılık gelen komut satırı seçenekleri. Varsayılan yapılandırma "varsayılan"dır.

-mkop
Yardımcı işlemci yönergelerini etkinleştirir. Varsayılan olarak, bu 32 bitlik bir yardımcı işlemcidir. Not
yardımcı işlemcinin normalde "-mconfig=" seçeneği aracılığıyla etkinleştirildiğini.

-mcop32
32 bit yardımcı işlemcinin yönergelerini etkinleştirir.

-mcop64
64 bit yardımcı işlemcinin yönergelerini etkinleştirir.

-mivc2
IVC2 zamanlamasını etkinleştirir. IVC2, 64 bitlik bir VLIW yardımcı işlemcisidir.

-mdc
".near" bölümüne sabit değişkenlerin yerleştirilmesine neden olur.

-mdiv
"div" ve "divu" talimatlarını etkinleştirir.

-meb
Big-endian kodu oluşturun.

-mel
Küçük endian kodu oluşturun.

-mio-uçucu
Derleyiciye "io" özniteliği ile işaretlenmiş herhangi bir değişkenin
uçucu olarak kabul edilir.

-ml Değişkenlerin varsayılan olarak ".far" bölümüne atanmasına neden olur.

-mleadz
"leadz" (baştaki sıfır) talimatını etkinleştirir.

-mm Değişkenlerin varsayılan olarak ".near" bölümüne atanmasına neden olur.

-mminmaks
"min" ve "max" talimatlarını etkinleştirir.

-mult
Çarpma ve çarpma-biriktirme talimatlarını etkinleştirir.

-mno-ops
"-mall-opts" tarafından etkinleştirilen tüm isteğe bağlı talimatları devre dışı bırakır.

-tekrar
Düşük yük döngüsü için kullanılan "tekrar" ve "tekrar" talimatlarını etkinleştirir.

-MS Tüm değişkenlerin varsayılan olarak ".tiny" bölümünde olmasına neden olur. Bir
Bu bölüm için 65536 baytlık sınır. Bu değişkenlere erişim %gp tabanını kullanır
kayıt.

-msatur
Doygunluk talimatlarını etkinleştirir. Derleyicinin şu anda
bunları kendiniz oluşturun, ancak bu seçenek diğer araçlarla uyumluluk için dahil edilmiştir,
"olarak" gibi.

-msdram
Varsayılan ROM tabanlı çalışma zamanı yerine SDRAM tabanlı çalışma zamanını bağlayın.

-msim
Simülatör çalışma zamanı kitaplıklarını bağlayın.

-msimnovec
Sıfırlama için yerleşik destek dışında simülatör çalışma zamanı kitaplıklarını bağlayın ve
istisna vektörleri ve tabloları.

-mtf
Tüm işlevlerin varsayılan olarak ".far" bölümüne geçmesine neden olur. Bu seçenek olmadan, işlevler
varsayılan olarak ".near" bölümü.

-miny=n
Değişkenler n bayt veya daha küçük ".tiny" bölümüne tahsis edilecektir. Bunlar
değişkenler $gp temel kaydını kullanır. Bu seçenek için varsayılan değer 4'tür, ancak şunu unutmayın:
".tiny" bölümü için 65536 baytlık bir sınır vardır.

MikroBlaze Opsiyonlar

-msoft-float
Kayan nokta için yazılım öykünmesini kullanın (varsayılan).

-mhard-şamandıra
Donanım kayan nokta yönergelerini kullanın.

-mmmcpy
Blok hareketlerini optimize etmeyin, "memcpy" kullanın.

-mno-clearbss
Bu seçenek kullanımdan kaldırılmıştır. Kullanmak -fno-sıfır-başlatıldı-in-bss yerine.

-mcpu=işlemci tipi
Verilen CPU'nun özelliklerini kullanın ve kodu programlayın. Desteklenen değerler biçimindedir
vX.YY.Z, Burada X ana sürümdür, YY küçük versiyondur ve Z uyumluluk
kod. Örnek değerler v3.00.a, v4.00.b, v5.00.a, v5.00.b, v5.00.b, v6.00.a.

-mxl-yumuşak-mul
Yazılım çarpma öykünmesini kullanın (varsayılan).

-mxl-yumuşak-div
Bölmeler için yazılım öykünmesini kullanın (varsayılan).

-mxl-varil-shift
Donanım varil değiştiricisini kullanın.

-mxl-desen-karşılaştır
Model karşılaştırma talimatlarını kullanın.

-msmall-bölücüler
Küçük işaretli tamsayı bölümleri için tablo arama optimizasyonunu kullanın.

-mxl-yığın-kontrol
Bu seçenek kullanımdan kaldırılmıştır. Bunun yerine -fstack-check kullanın.

-mxl-gp-opt
GP göreli sdata/sbss bölümlerini kullanın.

-mxl-çarpma-yüksek
32x32 çarpmanın yüksek kısmı için çarpma yüksek talimatlarını kullanın.

-mxl-float-dönüştürme
Donanım kayan nokta dönüştürme yönergelerini kullanın.

-mxl-float-sqrt
Donanım kayan noktalı karekök talimatını kullanın.

-mxl-modu-uygulama modeli
Uygulama modelini seçin uygulama modeli. Geçerli modeller

çalıştırılabilir
normal yürütülebilir dosya (varsayılan), başlangıç ​​kodunu kullanır crt0.o.

xmdstub
Xilinx Mikroişlemci Hata Ayıklayıcı (XMD) tabanlı yazılım müdahaleci hata ayıklama ile kullanım için
xmdstub adlı aracı. Bu başlangıç ​​dosyasını kullanır crt1.o ve başlangıç ​​adresini ayarlar
program 0x800 olacak.

çizme atkısı
bir önyükleyici kullanılarak yüklenen uygulamalar için. Bu model başlangıç ​​dosyasını kullanır
crt2.o hangi bir işlemci sıfırlama vektör işleyicisi içermez. bu uygundur
bir işlemci sıfırlamasındaki kontrolü, önyükleyiciye değil, önyükleyiciye aktarmak için
uygulama.

yeni başlayanlar
MicroBlaze vektörlerinden herhangi birini gerektirmeyen uygulamalar için. Bu seçenek
bir izleme uygulaması içinde çalışan uygulamalar için yararlı olabilir. Bu model
kullanım crt3.o başlangıç ​​dosyası olarak

seçenek -xl-modu-uygulama modeli için kullanımdan kaldırılmış bir takma addır -mxl-modu-uygulama modeli.

MIPS Opsiyonlar

-EB Big-endian kodu oluşturun.

-EL Küçük endian kodu oluşturun. Bu, varsayılan mips*el-*-* konfigürasyonları.

-mart=kemer
Üzerinde çalışacak kod oluşturun kemer, genel bir MIPS ISA'nın adı olabilir veya
belirli bir işlemcinin adı. ISA isimleri şunlardır: mips1, mips2, mips3, mips4,
mips32, mips32r2, mips64 ve mips64r2. İşlemci adları şunlardır: 4kc, 4km, 4kp, 4kc,
4kec, 4kem, 4kep, 4kd, 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+, okteon2, Oryon,
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 ve xlr. özel değer abi en uyumlu olanı seçer
seçilen ABI için mimari (yani, mips1 32 bit ABI'ler için ve mips3 64 bit için
ABI'ler).

Yerel Linux/GNU ve IRIX araç zincirleri de değeri destekler yerli, hangisini seçer
ana bilgisayar işlemcisi için en iyi mimari seçeneği. -mart=yerli GCC'nin etkisi yoktur
işlemciyi tanımıyor.

İşlemci adlarında, son bir 000 olarak kısaltılabilir k (Örneğin, -mart=r2k).
Ön ekler isteğe bağlıdır ve vr yazılabilir r.

formun isimleri nF2_1 hızının yarısına ayarlanmış FPU'lara sahip işlemcilere bakın.
çekirdek, formun adları nF1_1 aynı hızda saat hızına sahip FPU'lara sahip işlemcilere bakın
çekirdek olarak ve formun adları nF3_2 FPU'ları bir oranda saat hızına sahip işlemcilere bakın
çekirdeğe göre 3:2. Uyumluluk nedenleriyle, nf olarak kabul edilir
eş anlamlısı nF2_1 süre nx ve bfx eş anlamlı olarak kabul edilir nF1_1.

GCC, bu seçeneğin değerine göre iki makro tanımlar. İlk olarak _MIPS_ARCH,
bu, bir dize olarak hedef mimarinin adını verir. İkincisi forma sahip
_MIPS_ARCH_foo, Burada foo kapitalize edilmiş değeridir _MIPS_ARCH. Örneğin,
-mart=r2000 ayarlayacak _MIPS_ARCH için "R2000" ve makroyu tanımlayın _MIPS_ARCH_R2000.

Unutmayın _MIPS_ARCH makro yukarıda verilen işlemci adlarını kullanır. Diğer bir deyişle,
tam ön eke sahip olacak ve kısaltma yapmayacak 000 as k. Bu durumuda -den
abi, makro çözümlenen mimariyi adlandırır (ya "mips1" or "mips3"). adlandırıyor
hayır olduğunda varsayılan mimari -Mart seçenek verilir.

-mtune=kemer
İçin optimize et kemer. Bu seçenek, diğer şeylerin yanı sıra, talimatların
planlanmış ve aritmetik işlemlerin algılanan maliyeti. Listesi kemer değerlerimiz
ile aynı -Mart.

Bu seçenek kullanılmadığında, GCC tarafından belirtilen işlemci için optimize edilecektir. -Mart.
Kullanarak -Mart ve -mtune birlikte, üzerinde çalışacak kod oluşturmak mümkündür
bir işlemci ailesi, ancak kodu bunun belirli bir üyesi için optimize edin
aile.

-mtune makroları tanımlar _MIPS_TUNE ve _MIPS_TUNE_fooile aynı şekilde çalışan
the -Mart yukarıda anlatılanlar.

-mips1
Eşittir -mart=mips1.

-mips2
Eşittir -mart=mips2.

-mips3
Eşittir -mart=mips3.

-mips4
Eşittir -mart=mips4.

-mips32
Eşittir -mart=mips32.

-mips32r2
Eşittir -mart=mips32r2.

-mips64
Eşittir -mart=mips64.

-mips64r2
Eşittir -mart=mips64r2.

-mips16
-mno-mips16
MIPS16 kodu oluşturun (oluşturmayın). GCC bir MIPS32 veya MIPS64'ü hedefliyorsa
mimarisi, MIPS16e ASE'yi kullanacak.

MIPS16 kod üretimi ayrıca aşağıdakiler aracılığıyla işlev bazında kontrol edilebilir:
"mips16" ve "nomips16" öznitelikleri.

-mflip-mips16
Değişen işlevlerde MIPS16 kodu oluşturun. Bu seçenek regresyon için sağlanmıştır
karışık MIPS16/MIPS16 olmayan kod üretiminin test edilmesi ve sıradan amaçlar için tasarlanmamıştır.
kullanıcı kodunu derlemek için kullanın.

-minterlink-mips16
-mno-interlink-mips16
MIPS16 olmayan kodun MIPS16 koduyla bağlantı uyumlu olmasını gerektirir (gerekmez).

Örneğin, MIPS16 olmayan kod doğrudan MIPS16 koduna atlayamaz; ya kullanmalıdır
çağrı veya dolaylı bir atlama. -minterlink-mips16 bu nedenle doğrudan atlamaları devre dışı bırakır;
GCC, sıçramanın hedefinin MIPS16 olmadığını biliyor.

-mabi=32
-mabi=o64
-mabi=n32
-mabi=64
-mabi=eabi
Verilen ABI için kod oluşturun.

EABI'nin 32 bit ve 64 bit varyantı olduğunu unutmayın. GCC normalde 64 bit üretir
64 bit mimari seçtiğinizde kod, ancak kullanabilirsiniz -mgp32 32 bit kod almak için
yerine.

O64 ABI hakkında bilgi için, bkz.http://gcc.gnu.org/projects/mipso64-abi.html>.

GCC, kayan noktalı yazmaçların yerine 32 olduğu o64 ABI'nin bir türevini destekler.
32 bitten daha geniş. ile bu kombinasyonu seçebilirsiniz. -mabi=32 -mfp64. Bu ABI
dayanır mthc1 ve mfhc1 talimatlar ve bu nedenle yalnızca aşağıdakiler için desteklenir:
MIPS32R2 işlemciler.

Argümanlar ve dönüş değerleri için kayıt atamaları aynı kalır, ancak her biri
skaler değer, bir çift 64 bit yerine tek bir 32 bit kayıtta geçirilir
kayıtlar. Örneğin, skaler kayan nokta değerleri döndürülür. $f0 sadece, bir değil
$f0/$f1 çift. Çağrı-kaydedilmiş kayıtlar seti de aynı kalır, ancak 64 bitin tamamı
kaydedilir.

-mabicalls
-mno-abicals
SVR4 stili dinamik nesneler için uygun kod oluşturun (oluşturmayın).
-mabicalls SVR4 tabanlı sistemler için varsayılandır.

-mshared
-mno-paylaşımlı
Tamamen konumdan bağımsız kod üretin (oluşturmayın) ve
bu nedenle paylaşılan kitaplıklara bağlanmalıdır. Bu seçenek yalnızca -mabicalls.

Türkiye -mabicalls kod, seçeneklerden bağımsız olarak geleneksel olarak konumdan bağımsızdır
sevmek -fPIC ve -fpic. Ancak, bir uzantı olarak, GNU araç zinciri yürütülebilir dosyalara izin verir.
yerel olarak bağlayıcı semboller için mutlak erişimleri kullanmak. Ayrıca daha kısa GP kullanabilir
başlatma dizileri ve yerel olarak tanımlanmış işlevlere doğrudan çağrılar oluşturur. Bu
mod tarafından seçilir -mno-paylaşımlı.

-mno-paylaşımlı binutils 2.16 veya daha yüksek sürümlere bağlıdır ve yalnızca
GNU bağlayıcısı tarafından bağlanır. Ancak, seçenek finalin ABI'sini etkilemez.
yürütülebilir; yalnızca yeniden yerleştirilebilir nesnelerin ABI'sini etkiler. kullanma -mno-paylaşımlı irade
genellikle yürütülebilir dosyaları hem daha küçük hem de daha hızlı hale getirir.

-mshared varsayılandır.

-mplt
-mno-plt
Statik ve dinamik bağlayıcıların PLT'leri desteklediğini varsayın (varsaymayın) ve kopyalayın
yer değiştirmeler. Bu seçenek yalnızca -mno-paylaşımlı -mabicalls. n64 ABI için bu
seçenek olmadan hiçbir etkisi yoktur -msym32.

Sen yapabilir -mplt GCC'yi yapılandırarak varsayılan --mips-plt ile. Varsayılan
is -mno-plt aksi takdirde.

-mxgot
-mno-xgot
Global ofset tablosunun boyutundaki olağan kısıtlamaları kaldırın (kaldırmayın).

GCC normalde GOT'tan değerleri yüklemek için tek bir komut kullanır. Bu iken
nispeten verimlidir, yalnızca GOT yaklaşık 64k'dan küçükse çalışır.
Daha büyük olan herhangi bir şey, bağlayıcının aşağıdaki gibi bir hata bildirmesine neden olur:

yer değiştirme sığdırmak için kesildi: R_MIPS_GOT16 foobar

Bu olursa, kodunuzu ile yeniden derlemeniz gerekir. -mxgot. Daha sonra ile çalışmalıdır
çok büyük GOT'lar, ancak daha az verimli olacaktır, çünkü üç
genel bir sembolün değerini almak için talimatlar.

Bazı bağlayıcıların birden fazla GOT oluşturabileceğini unutmayın. Böyle bir bağlayıcınız varsa,
sadece kullanması gerekir -mxgot tek bir nesne dosyası 64k'den fazlasına eriştiğinde
GOT girişleri değerinde. Çok azı yapar.

Bu seçeneklerin, GCC konumdan bağımsız kod oluşturmadığı sürece hiçbir etkisi yoktur.

-mgp32
Genel amaçlı yazmaçların 32 bit genişliğinde olduğunu varsayın.

-mgp64
Genel amaçlı yazmaçların 64 bit genişliğinde olduğunu varsayın.

-mfp32
Kayan noktalı yazmaçların 32 bit genişliğinde olduğunu varsayalım.

-mfp64
Kayan noktalı yazmaçların 64 bit genişliğinde olduğunu varsayalım.

-mhard-şamandıra
Kayan noktalı yardımcı işlemci yönergelerini kullanın.

-msoft-float
Kayan noktalı yardımcı işlemci yönergelerini kullanmayın. Kayan nokta uygula
Bunun yerine kütüphane çağrılarını kullanan hesaplamalar.

-msingle-şamandıra
Kayan nokta yardımcı işlemcisinin yalnızca tek duyarlıklı işlemleri desteklediğini varsayalım.

-mdouble-şamandıra
Kayan nokta yardımcı işlemcisinin çift duyarlıklı işlemleri desteklediğini varsayalım. Bu
varsayılandır.

-mlsc
-mno-llsc
kullanın (kullanmayın) ll, sc, ve senkronize yerleşik atomik bellek uygulamak için talimatlar
fonksiyonlar. Hiçbir seçenek belirtilmediğinde, GCC, aşağıdaki durumlarda talimatları kullanacaktır:
hedef mimari onları destekler.

-mlsc çalışma zamanı ortamı talimatları taklit edebiliyorsa ve -mno-llsc
standart olmayan ISA'ları derlerken faydalı olabilir. Her iki seçeneği de yapabilirsiniz
GCC'yi yapılandırarak varsayılan --llsc ile ve --llsc olmadan respectivamente.
--llsc ile bazı konfigürasyonlar için varsayılandır; kurulum belgelerine bakın
Ayrıntılar için.

-mdsp
-mno-dsp
MIPS DSP ASE'nin 1. revizyonunu kullanın (kullanmayın).
Bu seçenek, önişlemci makrosunu tanımlar __mips_dsp. Ayrıca tanımlar
__mips_dsp_rev 1 için.

-mdspr2
-mno-dspr2
MIPS DSP ASE'nin 2. revizyonunu kullanın (kullanmayın).
Bu seçenek, önişlemci makrolarını tanımlar __mips_dsp ve __mips_dspr2. Ayrıca,
tanımlar __mips_dsp_rev 2 için.

-msmartmips
-mno-smartmips
MIPS SmartMIPS ASE'yi kullanın (kullanmayın).

-bağlı-bekar
-mno-çift-tek
Eşleştirilmiş tek kayan nokta yönergelerini kullanın (kullanmayın).
Bu seçenek, donanım kayan nokta desteğinin etkinleştirilmesini gerektirir.

-mdmx
-mno-mdmx
MIPS Dijital Medya Uzantısı talimatlarını kullanın (kullanmayın). Bu seçenek yalnızca
64 bit kod oluştururken kullanılır ve donanım kayan nokta desteği gerektirir
sağladı.

-mips3d
-mno-mips3d
MIPS-3D ASE'yi kullanın (kullanmayın). Seçenek -mips3d ima -bağlı-bekar.

-mmt
-mno-mt
MT Multithreading talimatlarını kullanın (kullanmayın).

-mlong64
"Uzun" türleri 64 bit genişliğinde olmaya zorlayın. Görmek -mlong32 varsayılanın açıklaması için
ve işaretçi boyutunun belirlenme şekli.

-mlong32
"long", "int" ve işaretçi türlerini 32 bit genişliğinde olmaya zorlayın.

"int"ler, "uzun"lar ve işaretçilerin varsayılan boyutu ABI'ye bağlıdır. Hepsi
desteklenen ABI'ler 32 bit "int" kullanır. n64 ABI, 64-bit'te olduğu gibi 64-bit "uzun"lar kullanır
EABI; diğerleri 32-bit "uzun"lar kullanır. İşaretçiler, "uzun"lar ile aynı boyuttadır veya
tamsayı kayıtları ile aynı boyutta, hangisi daha küçükse.

-msym32
-mno-sym32
Seçili olandan bağımsız olarak tüm sembollerin 32 bitlik değerlere sahip olduğunu varsayın (varsaymayın).
ABI. Bu seçenek aşağıdakilerle birlikte kullanışlıdır: -mabi=64 ve -mno-abicals çünkü
GCC'nin sembolik adreslere daha kısa ve daha hızlı referanslar oluşturmasını sağlar.

-G num
Dışarıdan görülebilen verilerin tanımlarını küçük bir veri bölümüne koyun.
daha büyük num bayt. GCC daha sonra verilere daha verimli bir şekilde erişebilir; görmek -mgpopt için
detaylar.

Varsayılan -G seçenek yapılandırmaya bağlıdır.

-mlocal-sdata
-mno-yerel-sdata
Uzatın (uzatmayın) -G statik değişkenler gibi yerel verilere de davranış
C cinsinden -mlocal-sdata tüm yapılandırmalar için varsayılandır.

Bağlayıcı, bir uygulamanın çok fazla küçük veri kullandığından şikayet ederse,
performans açısından daha az kritik olan parçaları yeniden oluşturmayı denemek istiyorsanız -mno-yerel-sdata. Sen
ile büyük kütüphaneler oluşturmak da isteyebilir -mno-yerel-sdata, böylece kütüphaneler
ana program için daha fazla yer bırakın.

-mextern-sdata
-mno-harici-sdata
Harici olarak tanımlanmış verilerin, aşağıdaki durumlarda küçük bir veri bölümünde olacağını varsayın (varsaymayın).
bu veriler içinde -G sınırı. -mextern-sdata hepsi için varsayılan
konfigürasyonları.

Bir modül derlerseniz yol ile -mextern-sdata -G num -mgpopt, ve yol referanslar bir
değişken Her bu daha büyük değil num bayt olduğundan emin olmalısınız Her yerleştirilmiş
küçük bir veri bölümünde. Eğer Her başka bir modül tarafından tanımlanmışsa, ya derlemeniz gerekir
yeterince yüksek olan bu modül -G bir "bölüm" özniteliği ayarlamak veya eklemek Her's
tanım. Eğer Her yaygındır, uygulamayı yeterince yüksek bir -G
ayarı.

Bu kısıtlamaları karşılamanın en kolay yolu, her modülü derlemek ve birbirine bağlamaktır.
ile aynı -G seçenek. Ancak, destekleyen bir kitaplık oluşturmak isteyebilirsiniz.
birkaç farklı küçük veri limiti. Bunu kütüphaneyi derleyerek yapabilirsiniz.
desteklenen en yüksek -G ayarlama ve ayrıca kullanma -mno-harici-sdata durdurmak için
kütüphanenin harici olarak tanımlanmış veriler hakkında varsayımlarda bulunmasını engeller.

-mgpopt
-mno-gpopt
Küçük bir veride olduğu bilinen semboller için GP'ye göre erişimleri kullanın (kullanmayın)
Bölüm; görmek -G, -mlocal-sdata ve -mextern-sdata. -mgpopt hepsi için varsayılan
konfigürasyonları.

-mno-gpopt $gp kaydının değerini tutmayabileceği durumlar için kullanışlıdır.
"_gp". Örneğin, kod, bir önyüklemede kullanılabilecek bir kitaplığın parçasıysa
monitör, önyükleme izleme rutinlerini çağıran programlar $gp'de bilinmeyen bir değer iletecektir.
(Bu gibi durumlarda, önyükleme izleyicisinin kendisi genellikle -G0.)

-mno-gpopt ima -mno-yerel-sdata ve -mno-harici-sdata.

-üyeli-veri
-mno-gömülü-veri
Değişkenleri, mümkünse önce salt okunur veri bölümüne, ardından
mümkünse küçük veri bölümü, aksi takdirde verilerde. Bu biraz daha yavaş kod verir
varsayılandan daha fazladır, ancak yürütülürken gereken RAM miktarını azaltır ve bu nedenle
bazı gömülü sistemler için tercih edilebilir.

-rodata-muninit-const
-mno-unit-const-in-rodata
Başlatılmamış "const" değişkenlerini salt okunur veri bölümüne koyun. Bu seçenek
sadece birlikte anlamlı -üyeli-veri.

-mcode-okunabilir=ayar
GCC'nin yürütülebilir bölümlerden okuyan kod oluşturup oluşturamayacağını belirtin. Var
üç olası ayar:

-mcode-readable=evet
Talimatlar yürütülebilir bölümlere serbestçe erişebilir. Bu varsayılan ayardır.

-mcode-okunabilir=pcrel
MIPS16 PC'ye bağlı yükleme talimatları yürütülebilir bölümlere erişebilir, ancak diğer
talimatlar bunu yapmamalıdır. Bu seçenek 4KSc ve 4KSd işlemcilerde kullanışlıdır.
kod TLB'leri Okuma Engelleme bitine sahip olduğunda. İşlemcilerde de kullanışlıdır.
ikili komut/veri SRAM arayüzüne sahip olacak şekilde yapılandırılabilen ve
M4K gibi, PC'ye bağlı yükleri otomatik olarak RAM talimatına yönlendirir.

-mcode-readable=hayır
Talimatlar yürütülebilir bölümlere erişmemelidir. Bu seçenek yararlı olabilir
ikili talimat/veri SRAM arayüzüne sahip olacak şekilde yapılandırılmış ancak
(M4K'dan farklı olarak) PC'ye bağlı yükleri otomatik olarak
talimat RAM'i.

-msplit-adresleri
-mno-split-adresler
"%hi()" ve "%lo()" montajcı yer değiştirme operatörlerinin kullanımını etkinleştirin (devre dışı bırakın). Bu
seçeneğin yerini aldı -meexplicit-relocs ama geriye doğru tutulur
uyumluluğu.

-meexplicit-relocs
-mno-açık-yer değiştirmeler
Sembolik adreslerle uğraşırken birleştirici yer değiştirme operatörlerini kullanın (kullanmayın).
tarafından seçilen alternatif -mno-açık-yer değiştirmeler, bunun yerine birleştirici makroları kullanmaktır.

-meexplicit-relocs GCC bir montajcı kullanacak şekilde yapılandırıldıysa varsayılandır.
yer değiştirme operatörlerini destekler.

-mcheck-sıfır bölümü
-mno-check-sıfır-bölme
Tamsayıyı sıfıra bölmede yakalayın (bindirmeyin).

Varsayılan -mcheck-sıfır bölümü.

-mdivid-traps
-mdivid-breaks
MIPS sistemleri, bir koşullu tuzak ya da bir
kırma talimatı. Tuzakların kullanılması daha küçük kodla sonuçlanır, ancak yalnızca MIPS'de desteklenir
II ve sonrası. Ayrıca, Linux çekirdeğinin bazı sürümlerinde tuzağı önleyen bir hata vardır.
uygun sinyali ("SIGFPE") üretmekten. Kullanmak -mdivid-traps koşullu izin vermek
onları destekleyen mimarilerdeki tuzaklar ve -mdivid-breaks kullanmaya zorlamak
sonları.

Varsayılan genellikle -mdivid-traps, ancak bu, yapılandırma zamanında geçersiz kılınabilir
kullanma --with-divide=keser. Sıfıra bölme kontrolleri kullanılarak tamamen devre dışı bırakılabilir.
-mno-check-sıfır-bölme.

-mmmcpy
-mno-memcpy
Önemsiz blok hareketleri için "memcpy()" kullanımını zorlayın (zorlamayın). Varsayılan
is -mno-memcpy, bu da GCC'nin çoğu sabit boyutlu kopyayı satır içine almasına izin verir.

-mlong-çağrıları
-çok uzun aramalar
"jal" komutunun kullanımını devre dışı bırakın (devre dışı bırakmayın). "jal" kullanarak işlevleri çağırma
daha verimlidir ancak arayan ve arananın aynı 256 megabaytta olmasını gerektirir
segmenti.

Bu seçeneğin abicalls kodu üzerinde hiçbir etkisi yoktur. Varsayılan -çok uzun aramalar.

-mad
-deli
tarafından sağlanan "mad", "madu" ve "mul" talimatlarının kullanımını etkinleştirin (devre dışı bırakın).
R4650 ISA.

-mfused-deli
-mno-kaynaşmış-madd
Gerektiğinde kayan noktalı çarpma-biriktirme talimatlarının kullanımını etkinleştirin (devre dışı bırakın).
mevcut. Varsayılan -mfused-deli.

Çarpma-biriktirme komutları kullanıldığında ara ürün hesaplanır.
sonsuz hassasiyete sahiptir ve FCSR Flush to Zero bitine tabi değildir. Bu olabilir
bazı durumlarda istenmeyen

-nocpp
MIPS derleyicisine önişlemcisini kullanıcı derleyici dosyaları üzerinde çalıştırmamasını söyleyin (bir
.s son eki) monte ederken.

-mfix-24k
-mno-düzeltme-24k
24K E48 (yeniden doldurma sırasında mağazalarda veri kaybı) hatalarını giderin. geçici çözümler
GCC yerine montajcı tarafından uygulanır.

-mfix-r4000
-mno-düzeltme-r4000
Belirli R4000 CPU hatalarını giderin:

- Çift kelime veya değişken kaydırma, yürütülürse yanlış sonuç verebilir
bir tamsayılı bölmeye başladıktan hemen sonra.

- Bir çift kelime veya değişken kaydırma, şu anda yürütülürse yanlış sonuç verebilir.
bir tamsayı çarpma işlemi devam ediyor.

- Bir tamsayı bölümü, bir gecikme yuvasında başlatılırsa yanlış sonuç verebilir.
alınan dal veya atlama.

-mfix-r4400
-mno-düzeltme-r4400
Belirli R4400 CPU hatalarını giderin:

- Çift kelime veya değişken kaydırma, yürütülürse yanlış sonuç verebilir
bir tamsayılı bölmeye başladıktan hemen sonra.

-mfix-r10000
-mno-düzeltme-r10000
Belirli R10000 hataları etrafında çalışın:

- "ll"/"sc" dizileri 3.0'dan önceki revizyonlarda atomik davranmayabilir. Onlar olabilir
2.6 ve önceki sürümlerde kilitlenme.

Bu seçenek yalnızca hedef mimari dallanma olasılığını destekliyorsa kullanılabilir.
talimatları. -mfix-r10000 varsayılan olduğunda -mart=r10000 kullanıldı; -mno-düzeltme-r10000
aksi takdirde varsayılandır.

-mfix-vr4120
-mno-düzeltme-vr4120
Belirli VR4120 hatalarını giderin:

- "dmultu" her zaman doğru sonucu vermez.

- "div" ve "ddiv", işlenenlerden biri varsa her zaman doğru sonucu vermez
negatiftir.

Bölme hataları için geçici çözümler, aşağıdaki özel işlevlere dayanır: libgcc.a. At
mevcut, bu işlevler yalnızca "mips64vr*-elf" konfigürasyonları tarafından sağlanmaktadır.

Diğer VR4120 hataları, belirli veri çiftleri arasına bir nop eklenmesini gerektirir.
Talimatlar. Bu hatalar, GCC'nin kendisi tarafından değil, montajcı tarafından işlenir.

-mfix-vr4130
VR4130 "mflo"/"mfhi" hatalarını giderin. Geçici çözümler, aşağıdakiler tarafından uygulanır:
GCC yerine montajcı, ancak GCC "mflo" ve "mfhi" kullanmaktan kaçınacaktır.
Bunun yerine VR4130 "macc", "macchi", "dmacc" ve "dmacchi" talimatları mevcuttur.

-mfix-sb1
-mno-düzeltme-sb1
Belirli SB-1 CPU çekirdek hataları etrafında çalışın. (Bu bayrak şu anda SB-1 çevresinde çalışmaktadır.
revizyon 2 "F1" ve "F2" kayan nokta hataları.)

-mr10k-önbellek-bariyer=ayar
GCC'nin yan etkilerinden kaçınmak için önbellek engelleri eklemesi gerekip gerekmediğini belirtin.
R10K işlemciler hakkında spekülasyon.

Birçok işlemcide olduğu gibi, R10K bir koşullu işlemin sonucunu tahmin etmeye çalışır.
şube ve spekülatif olarak "alınan" şubeden talimatları yürütür. Daha sonra
tahmin edilen sonuç yanlışsa bu talimatları iptal eder. Ancak, R10K'da,
iptal edilen talimatların bile yan etkileri olabilir.

Bu sorun yalnızca çekirdek depolarını ve sisteme bağlı olarak çekirdek yüklerini etkiler.
Örnek olarak, spekülatif olarak yürütülen bir mağaza, hedef belleği önbelleğe yükleyebilir.
ve mağazanın kendisi daha sonra iptal edilse bile önbellek satırını kirli olarak işaretleyin. eğer bir DMA
işlem, "kirli" satır temizlenmeden önce aynı bellek alanına yazar,
önbelleğe alınmış veriler, DMA ile oluşturulmuş verilerin üzerine yazacaktır. Tam bilgi için R10K işlemci kılavuzuna bakın.
diğer olası sorunlar da dahil olmak üzere açıklama.

Çözümlerden biri, her bellek erişiminden önce önbellek engeli yönergeleri eklemektir.
spekülatif olarak yürütülebilir ve iptal edilse bile yan etkileri olabilir.
-mr10k-önbellek-bariyer=ayar GCC'nin bu geçici çözümü uygulamasını kontrol eder. Bilişim Teknoloji
aşağıdaki bölgelerdeki herhangi bir bayta iptal edilen erişimlerin yan
Etkileri:

1. geçerli işlevin yığın çerçevesi tarafından işgal edilen bellek;

2. gelen yığın argümanı tarafından işgal edilen bellek;

3. Bağlantı-zaman-sabit adresi olan bir nesne tarafından işgal edilen bellek.

Bu bölgelere spekülatif erişimin sağlanması, çekirdeğin sorumluluğundadır.
gerçekten güvendeler.

Giriş programı aşağıdaki gibi bir işlev bildirimi içeriyorsa:

geçersiz foo (boş);

o zaman "foo"nun uygulanması "j foo" ve "jal foo"nun yürütülmesine izin vermelidir
spekülatif olarak. GCC, kendi derlediği işlevler için bu kısıtlamayı dikkate alır. Bilişim Teknoloji
GCC dışı işlevlerin (elle yazılmış derleme kodu gibi) aynı şeyi yapmasını bekler.

Seçeneğin üç biçimi vardır:

-mr10k-önbellek-bariyer=yük deposu
Spekülatif olarak yürütülebilecek bir yükleme veya depolamadan önce bir önbellek bariyeri ekleyin
ve iptal edilse bile bunun yan etkileri olabilir.

-mr10k-önbellek-bariyer=mağaza
Spekülatif olarak yürütülebilecek bir mağazanın önüne bir önbellek bariyeri yerleştirin ve
iptal edilse bile yan etkileri olabilir.

-mr10k-önbellek-bariyer=yok
Önbellek engellerinin eklenmesini devre dışı bırakın. Bu varsayılan ayardır.

-mflush-işlev=func
-mno-flush-fonk
I ve D önbelleklerini temizlemek için çağrılacak veya böyle bir çağrı yapılmayacak işlevi belirtir.
işlev. Çağrılırsa, işlev ortak argümanlarla aynı argümanları almalıdır.
"_flush_func()", yani önbelleğin kendisine ait olduğu bellek aralığının adresi
temizlenmiş, bellek aralığının boyutu ve 3 sayısı (her iki önbelleği temizlemek için). NS
varsayılan, GCC'nin yapılandırıldığı hedefe bağlıdır, ancak genellikle
_flush_func or __cpu_flush.

mbranch-maliyet=num
Şubelerin maliyetini kabaca ayarlayın num "basit" talimatlar. Bu maliyet sadece bir
buluşsaldır ve sürümler arasında tutarlı sonuçlar üretmesi garanti edilmez. bir sıfır
maliyet yedekli olarak varsayılanı seçer, bu da -mtune ayarı.

-mbranch-muhtemelen
-mno-dal-muhtemel
Şube Olası talimatlarının kullanımını etkinleştirin veya devre dışı bırakın, varsayılan ayardan bağımsız olarak.
seçilmiş mimari Varsayılan olarak, Şube Olası talimatları şu durumlarda oluşturulabilir:
seçilen mimari tarafından desteklenirler. Bir istisna, MIPS32 içindir ve
MIPS64 mimarileri ve bu mimarileri uygulayan işlemciler; bunlar için,
MIPS32 ve
MIPS64 mimarileri, kullanımlarını özellikle kullanımdan kaldırmaktadır.

-mfp-istisnaları
-mno-fp-istisnaları
FP istisnalarının etkinleştirilip etkinleştirilmediğini belirtir. Bu, FP'yi nasıl planladığımızı etkiler
bazı işlemciler için talimatlar. Varsayılan, FP istisnalarının etkinleştirilmesidir.

Örneğin, SB-1'de, FP istisnaları devre dışı bırakılırsa ve 64-bit yayarsak
kodu, o zaman her iki FP borusunu da kullanabiliriz. Aksi takdirde sadece bir FP borusu kullanabiliriz.

-mvr4130 hizalama
-mno-vr4130-hizalama
VR4130 ardışık düzeni iki yönlü süperskalerdir, ancak yalnızca iki talimat verebilir
ilki 8 bayt hizalanmışsa birlikte. Bu seçenek etkinleştirildiğinde, GCC
paralel olarak yürütülmesi gerektiğini düşündüğü talimat çiftlerini hizalayın.

Bu seçenek yalnızca VR4130 için optimizasyon yaparken etkilidir. Normalde kod yapar
daha hızlı, ama daha büyük yapma pahasına. Varsayılan olarak şurada etkindir:
optimizasyon seviyesi -O3.

-msynci
-mno-synci
Onu destekleyen mimarilerde "synci" talimatlarının oluşturulmasını etkinleştirin (devre dışı bırakın).
"synci" talimatları (etkinleştirilmişse) ne zaman oluşturulur?
"__builtin___clear_cache()" derlendi.

Bu seçenek varsayılan olarak "-mno-synci"dir, ancak varsayılan ayar yapılandırılarak geçersiz kılınabilir.
"--with-synci" ile.

Tek işlemcili sistemler için kod derlerken, "synci" kullanmak genellikle güvenlidir.
Ancak, birçok çok çekirdekli (SMP) sistemde, talimatı geçersiz kılmaz.
tüm çekirdeklerde önbelleğe alır ve tanımsız davranışa neden olabilir.

-mrelax-resimli aramalar
-mno-rahatla-resimli aramalar
Normalde 25$'lık kayıt yoluyla gönderilen PIC çağrılarını doğrudan çağrılara dönüştürmeyi deneyin.
Bu, yalnızca bağlayıcının hedefi bağlantı zamanında çözebilmesi ve
hedef, doğrudan arama için kapsama alanı içindedir.

-mrelax-resimli aramalar GCC bir montajcı ve bir
".reloc" derleme yönergesini ve "-mexplicit-relocs"u destekleyen linker
Efekt. "-mno-explicit-relocs" ile bu optimizasyon,
derleyiciden yardım almadan tek başına derleyici ve bağlayıcı.

-mmcount-ra-adresi
-mno-mcount-ra-adresi
"_mcount" öğesinin çağıran işlevin dönüşünü değiştirmesine izin veren kodu yayın (yayınlamayın)
adres. Etkinleştirildiğinde, bu seçenek olağan "_mcount" arabirimini yeni bir
ra-adresi "intptr_t *" tipine sahip olan ve 12$ kaydında geçirilen parametre.
"_mcount" daha sonra aşağıdakilerin her ikisini yaparak dönüş adresini değiştirebilir:

· Kayıttaki yeni adresin iade edilmesi 31 $.

· Yeni adresin "* içinde saklanmasıra-adresi", Eğer ra-adresi null değildir.

Varsayılan -mno-mcount-ra-adresi.

MMIX Opsiyonlar

Bu seçenekler MMIX için tanımlanmıştır:

-mlibfuncs
-mno-libfuncs
İçindeki tüm değerleri ileterek, içsel kitaplık işlevlerinin derlendiğini belirtin.
Kayıtlar, boyutu ne olursa olsun.

-mepsilon
-mno-epsilon
"rE" ile karşılaştıran kayan nokta karşılaştırma talimatları oluşturun
epsilon kaydı.

-mabi=mmixware
-mabi=gnu
İşlev parametrelerini ileten ve (çağrılan
işlevi), global kullanan GNU ABI'nin aksine $0 ve üzeri kayıtlar olarak görülür.
231$ ve üzeri kayıtlar.

-mzero-uzatma
-mno-sıfır-uzatma
64 bitten daha kısa boyutlardaki bellekten veri okurken, sıfır-kullanın (kullanmayın)
işaret genişletici olanlar yerine varsayılan olarak yükleme talimatlarını genişletmek.

-mknuthdiv
-mno-knuthdiv
Kalan veren bir bölme işleminin sonucunun bölenle aynı işarete sahip olmasını sağlayın.
Varsayılan ile, -mno-knuthdiv, kalanın işareti, kalanın işaretini takip eder.
kâr payı. Her iki yöntem de aritmetik olarak geçerlidir, ikincisi neredeyse yalnızca
Kullanılmış.

-mtoplevel-semboller
-mno-üst düzey-semboller
Başa ekle (başa ekleme) a : tüm global sembollere, böylece montaj kodu kullanılabilir
"PREFIX" montaj direktifi ile.

-melf
Varsayılan yerine ELF biçiminde bir yürütülebilir dosya oluşturun mmo tarafından kullanılan biçim
the karma simülatör.

-mbranch-tahmin
-mno-dal-tahmin
Statik dal tahmini yaparken olası dal talimatlarını kullanın (kullanmayın).
olası bir şubeyi gösterir.

-mbase-adresleri
-mno-taban-adresleri
Kullanan kod oluşturun (oluşturmayın) baz adresleri. Temel adres kullanma
için otomatik olarak bir istek oluşturur (birleştirici ve bağlayıcı tarafından işlenir)
küresel bir kayıtta kurulacak sabit. Kayıt, bir veya daha fazla baz için kullanılır
Kayıtta tutulan değerden 0 ila 255 aralığında adres istekleri. NS
genellikle kısa ve hızlı koda yol açar, ancak farklı veri öğelerinin sayısı
sınırlı olarak ele alınabilir. Bu, çok sayıda statik veri kullanan bir programın
gerektirebilir -mno-taban-adresleri.

-msingle-çıkış
-mno-tek çıkış
Oluşturulan kodu her işlevde tek bir çıkış noktasına sahip olmaya zorlayın (zorlamayın).

MN10300 Opsiyonlar

Bunlar -m Matsushita MN10300 mimarileri için seçenekler tanımlanmıştır:

-mult-bug
MN10300 işlemciler için çarpma talimatlarındaki hataları önlemek için kod oluşturun.
Bu varsayılan.

-mno-çoklu-hata
MN10300 için çarpma talimatlarındaki hataları önlemek için kod oluşturmayın
işlemciler.

-mam33
AM33 işlemciye özgü özellikleri kullanarak kod oluşturun.

-mno-am33
AM33 işlemciye özgü özellikleri kullanarak kod oluşturmayın. bu
Varsayılan.

-mam33-2
AM33/2.0 işlemciye özgü özellikleri kullanarak kod oluşturun.

-mam34
AM34 işlemciye özgü özellikleri kullanarak kod oluşturun.

-mtune=işlemci tipi
Talimatları planlarken belirtilen CPU tipinin zamanlama özelliklerini kullanın.
Bu, hedeflenen işlemci türünü değiştirmez. CPU tipi şunlardan biri olmalıdır:
mn10300, am33, 33-2 or am34.

-mreturn-işaretçisi-on-d0
Bir işaretçi döndüren bir işlev oluştururken, işaretçiyi hem "a0" hem de
"d0". Aksi takdirde, işaretçi yalnızca a0'da döndürülür ve böyle bir çağrı yapmaya çalışır.
prototipi olmayan işlevler hatalara neden olur. Bu seçeneğin şu tarihte açık olduğunu unutmayın:
varsayılan; kullanmak -mno-dönüş-işaretçi-on-d0 devre dışı bırakmak için.

-mno-crt0
C çalışma zamanı başlatma nesne dosyasında bağlantı kurmayın.

-mrelax
Bağlayıcıya, bir gevşeme optimizasyon geçişi gerçekleştirmesi gerektiğini belirtin.
şubeleri, çağrıları ve mutlak hafıza adreslerini kısaltın. Bu seçeneğin yalnızca bir etkisi vardır
son bağlantı adımı için komut satırında kullanıldığında.

Bu seçenek, sembolik hata ayıklamayı imkansız hale getirir.

-miliw
Derleyicinin oluşturmasına izin ver Uzun Talimat Word hedef ise talimatlar
AM33 veya daha sonra. Bu varsayılandır. Bu seçenek önişlemci makrosunu tanımlar
__LIW__.

-mnoliw
Derleyicinin oluşturmasına izin verme Uzun Talimat Word Talimatlar. Bu seçenek
önişlemci makrosunu tanımlar __NO_LIW__.

-msetlb
Derleyicinin oluşturmasına izin ver SELB ve LCC hedef ise talimatlar
AM33 veya daha sonra. Bu varsayılandır. Bu seçenek önişlemci makrosunu tanımlar
__SETLB__.

-mnosetlb
Derleyicinin oluşturmasına izin verme SELB or LCC Talimatlar. Bu seçenek tanımlar
önişlemci makrosu __NO_SETLB__.

KAP-11 Opsiyonlar

Bu seçenekler PDP-11 için tanımlanmıştır:

-mfpu
Donanım FPP kayan noktası kullanın. Bu varsayılandır. (FIS kayan nokta
PDP-11/40 desteklenmez.)

-msoft-float
Donanım kayan nokta kullanmayın.

-mac0
Kayan nokta sonuçlarını ac0 olarak döndürün (Unix derleyici sözdiziminde fr0).

-mno-ac0
Kayan nokta sonuçlarını bellekte döndürün. Bu varsayılandır.

-m40
PDP-11/40 için kod oluşturun.

-m45
PDP-11/45 için kod oluşturun. Bu varsayılandır.

-m10
PDP-11/10 için kod oluşturun.

-mbcopy-yerleşik
Belleği kopyalamak için satır içi "movmemhi" kalıplarını kullanın. Bu varsayılandır.

-mbkopya
Belleği kopyalamak için satır içi "movmemhi" kalıplarını kullanmayın.

-nane16
-mno-int32
16 bitlik "int" kullanın. Bu varsayılandır.

-nane32
-mno-int16
32 bit "int" kullanın.

-mfloat64
-mno-float32
64 bit "kayan" kullanın. Bu varsayılandır.

-mfloat32
-mno-float64
32 bit "kayan" kullanın.

-mabşi
"abshi2" desenini kullanın. Bu varsayılandır.

-mno-abshi
"abshi2" deseni kullanmayın.

-mbranch-pahalı
Şubelerin pahalı olduğunu varsayın. Bu, kod oluşturmayı denemek içindir
bir tek.

-mbranch-ucuz
Şubelerin pahalı olduğunu iddia etmeyin. Bu varsayılandır.

-munix-asm
Unix birleştirici sözdizimini kullanın. Bu, yapılandırıldığında varsayılandır. pdp11-*-bsd.

-mdec-asm
DEC birleştirici sözdizimini kullanın. Bu, herhangi bir PDP-11 hedefi için yapılandırıldığında varsayılandır
başka pdp11-*-bsd.

picoçip Opsiyonlar

Bunlar -m picoChip uygulamaları için seçenekler tanımlanmıştır:

-mae=ae_type
Dizi için komut seti, kayıt seti ve komut programlama parametrelerini ayarlayın
öğe türü ae_type. için desteklenen değerler ae_type vardır HERHANGİ, MUL, ve MAC.

-mae=HERHANGİ BİR tamamen genel bir AE türü seçer. Bu seçenekle oluşturulan kod
diğer AE türlerinden herhangi birinde çalıştırın. Kod, olacağı kadar verimli olmayacak
belirli bir AE türü ve bazı işlem türleri (örn. çarpma) için derlenmiş
tüm AE türlerinde düzgün çalışmayacaktır.

-mae=ÇOK bir MUL AE türü seçer. Bu, derlenmiş kod için en kullanışlı AE türüdür,
ve varsayılandır.

-mae=MAC DSP tarzı bir MAC AE seçer. Bu seçenekle derlenen kod,
DSP AE sağlamadığından bayt (char) manipülasyonunun düşük performansı
bayt yükü/depoları için donanım desteği.

-msymbol-adres
Derleyicinin bir sembol adını doğrudan bir yükleme/depoda adres olarak kullanmasını sağlayın
talimat, önce bir kayıt defterine yüklemeden. Tipik olarak, bunun kullanımı
seçenek, seçenek olmadığında olduğundan daha hızlı çalışan daha büyük programlar oluşturacaktır.
kullanılmış. Ancak sonuçlar programdan programa değişir, bu nedenle kullanıcı olarak bırakılır.
kalıcı olarak etkinleştirilmek yerine seçenek.

-mno-verimsiz-uyarılar
Verimsiz kod üretimiyle ilgili uyarıları devre dışı bırakır. Bu uyarılar şunlar olabilir:
örneğin bayt düzeyinde bellek işlemleri gerçekleştiren kod derlenirken oluşturulur
MAC AE tipinde. MAC AE'nin bayt düzeyinde bellek için donanım desteği yoktur
işlemler, bu nedenle tüm bayt yükleme/depolar, word load/store'dan sentezlenmelidir.
operasyonlar. Bu verimsizdir ve aşağıdakileri belirten bir uyarı oluşturulacaktır.
bayt işlemlerinden kaçınmak veya bir hedefi hedeflemek için kodu yeniden yazmaları gerektiğini
Gerekli donanım desteğine sahip AE tipi. Bu seçenek, uyarının
kapatılmak.

PowerPC Opsiyonlar

Bunlar aşağıda listelenmiştir

RL78 Opsiyonlar

-msim
Bir simülatör içinde çalışmayı desteklemek için ek hedef kitaplıklarındaki bağlantılar.

-mmul=yok
-mmul=g13
-mmul=rl78
Kullanılacak donanım çarpma desteğinin türünü belirtir. Varsayılan
yazılım çarpma işlevlerini kullanan "yok". "g13" seçeneği,
donanım çarpma/bölme çevre birimi yalnızca RL78/G13 hedeflerinde. "rl78" seçeneği
RL78 yazılım kılavuzunda tanımlanan standart donanım çoğaltması içindir.

IBM RS / 6000 ve PowerPC Opsiyonlar

Bunlar -m IBM RS/6000 ve PowerPC için seçenekler tanımlanmıştır:

-güç
-mno-güç
-mpower2
-mno-güç2
-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-zor-dfp
GCC, RS/6000 ve PowerPC için iki ilgili komut seti mimarisini destekler.
The GÜLÜŞ TASARIMI komut seti, tarafından desteklenen talimatlardır. rios kullanılan çip seti
orijinal RS/6000 sistemlerinde ve PowerPC komut seti mimarisidir
Freescale MPC5xx, MPC6xx, MPC8xx mikroişlemciler ve IBM 4xx, 6xx ve
takip eden mikroişlemciler.

Her iki mimari de diğerinin bir alt kümesi değildir. Ancak büyük bir ortak alt küme var
Her ikisi tarafından da desteklenen yönergeler. İşlemcilere bir MQ kaydı dahildir
POWER mimarisini destekler.

Kullandığınız işlemcide hangi talimatların mevcut olduğunu belirtmek için bu seçenekleri kullanırsınız.
kullanıyorlar. Bu seçeneklerin varsayılan değeri, GCC yapılandırılırken belirlenir.
belirterek -mcpu=cpu_type bu seçeneklerin belirtimini geçersiz kılar. Biz
kullanmanı tavsiye ederim -mcpu=cpu_type Yukarıda listelenen seçenekler yerine seçenek.

The -güç seçeneği, GCC'nin yalnızca
POWER mimarisi ve MQ registerını kullanmak. belirtme -mpower2 ima -güç ve
ayrıca GCC'nin POWER2 mimarisinde bulunan talimatları oluşturmasına izin verir
ama orijinal POWER mimarisi değil.

The -mpowerpc seçeneği, GCC'nin yalnızca
PowerPC mimarisinin 32 bit alt kümesi. belirtme -mpowerpc-gpopt ima
-mpowerpc ve ayrıca GCC'nin isteğe bağlı PowerPC mimarisi talimatlarını
kayan noktalı karekök dahil Genel Amaçlı grup. belirtme
-mpowerpc-gfxopt ima -mpowerpc ve ayrıca GCC'nin isteğe bağlı PowerPC'yi kullanmasına izin verir
kayan nokta seçimi de dahil olmak üzere Grafik grubundaki mimari talimatları.

The -mmfcrf seçenek, GCC'nin koşul kaydı alanından hareketi oluşturmasına izin verir
POWER4 işlemcisine ve aşağıdakileri destekleyen diğer işlemcilere uygulanan talimat
PowerPC V2.01 mimarisi. NS -mpopcntb seçenek, GCC'nin popcount oluşturmasına izin verir
ve POWER5'te uygulanan çift duyarlıklı FP karşılıklı tahmin talimatı
PowerPC V2.02 mimarisini destekleyen işlemci ve diğer işlemciler. NS
-mpopcntd seçeneği, GCC'nin üzerinde uygulanan popcount talimatını oluşturmasına izin verir.
POWER7 işlemci ve PowerPC V2.06 mimarisini destekleyen diğer işlemciler.
The -mfprnd seçenek, GCC'nin FP yuvarlaktan tamsayıya yönergeler oluşturmasına izin verir
POWER5+ işlemcide ve PowerPC'yi destekleyen diğer işlemcilerde uygulanır
V2.03 mimarisi. NS -mcmpb seçenek, GCC'nin karşılaştırma baytlarını oluşturmasına izin verir
POWER6 işlemcisine ve aşağıdakileri destekleyen diğer işlemcilere uygulanan talimat
PowerPC V2.05 mimarisi. NS -mmfpgpr seçenek, GCC'nin FP hareketini oluşturmasına izin verir
POWER6X işlemcide uygulanan genel amaçlı kayıt talimatlarına ve
genişletilmiş PowerPC V2.05 mimarisini destekleyen diğer işlemciler. NS -mhard-dfp
seçeneği, GCC'nin üzerinde uygulanan ondalık kayan nokta talimatlarını oluşturmasına izin verir.
bazı POWER işlemciler.

The -mpowerpc64 seçeneği, GCC'nin ek 64-bit yönergeler oluşturmasını sağlar.
tam PowerPC64 mimarisinde bulunur ve GPR'leri 64-bit, çift kelime olarak ele alır
miktarları. GCC varsayılanları -mno-powerpc64.

ikisini de belirtirseniz -mno-güç ve -mno-powerpc, GCC yalnızca aşağıdaki talimatları kullanacaktır:
her iki mimarinin ortak alt kümesi artı bazı özel AIX ortak mod çağrıları ve
MQ kaydını kullanmaz. her ikisini de belirtmek -güç ve -mpowerpc GCC'ye izin verir
her iki mimariden de herhangi bir talimatı kullanın ve MQ kaydının kullanımına izin verin;
Motorola MPC601 için bunu belirtin.

-mnew-anımsatıcılar
-küf-anımsatıcılar
Oluşturulan montajcı kodunda hangi anımsatıcıların kullanılacağını seçin. İle birlikte -mnew-anımsatıcılar,
GCC, PowerPC mimarisi için tanımlanan montajcı anımsatıcılarını kullanır. İle birlikte
-küf-anımsatıcılar POWER mimarisi için tanımlanan montajcı anımsatıcılarını kullanır.
Yalnızca bir mimaride tanımlanan komutların yalnızca bir anımsatıcısı vardır; GCC bunu kullanır
Bu seçeneklerden hangisinin belirtildiğinden bağımsız olarak anımsatıcı.

GCC, kullanımdaki mimariye uygun anımsatıcıları varsayılan olarak ayarlar. belirtme
-mcpu=cpu_type bazen bu seçeneğin değerini geçersiz kılar. inşa etmedikçe
bir çapraz derleyici, normalde ikisini de belirtmemelisiniz -mnew-anımsatıcılar or
-küf-anımsatıcılar, ancak bunun yerine varsayılanı kabul etmelidir.

-mcpu=cpu_type
Mimari türünü, kayıt kullanımını, anımsatıcı seçimini ve talimat zamanlamasını ayarlayın
makine tipi için parametreler cpu_type. için desteklenen değerler cpu_type vardır 401, 403,
405, 405 fps, 440, 440 fps, 464, 464 fps, 476, 476 fps, 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, güç kelimesini seçerim, power2, power3, power4, power5,
güç5+, power6, güç6x, power7, ortak, güç bilgisayarı, güçpc64, rios, nehirler1, nehirler2, RSC,
ve rs64.

-mcpu=ortak tamamen genel bir işlemci seçer. Bu seçenek altında oluşturulan kod
herhangi bir POWER veya PowerPC işlemcide çalışır. GCC, yalnızca aşağıdaki talimatlardaki talimatları kullanacaktır:
her iki mimarinin ortak alt kümesidir ve MQ kaydını kullanmaz. GCC, bir
zamanlama amaçları için genel işlemci modeli.

-mcpu=güç, -mcpu=güç2, -mcpu=powerpc, ve -mcpu=powerpc64 genel GÜÇ belirtin,
POWER2, ​​saf 32 bit PowerPC (yani MPC601 değil) ve 64 bit PowerPC mimarisi
programlama için varsayılan uygun, genel bir işlemci modeline sahip makine türleri
amaçlar.

Diğer seçenekler belirli bir işlemciyi belirtir. Bu seçenekler altında oluşturulan kod
en iyi o işlemcide çalışır ve diğerlerinde hiç çalışmayabilir.

The -mcpu seçenekler aşağıdaki seçenekleri otomatik olarak etkinleştirir veya devre dışı bırakır:

-maltivec -mfprnd -mhard-şamandıra -mmfcrf -mçoklu -mnew-anımsatıcılar -mpopcntb
-mpopcntd -güç -mpower2 -mpowerpc64 -mpowerpc-gpopt -mpowerpc-gfxopt
-msingle-şamandıra -mdouble-şamandıra -msimple-fpu -mstring -mmulhw -mdlmzb -mmfpgpr -mvsx

Belirli bir CPU için belirlenen belirli seçenekler, derleyici sürümleri arasında değişiklik gösterecektir,
o CPU için en uygun kodu hangi ayarın ürettiğine bağlı olarak; değil
mutlaka gerçek donanımın yeteneklerini yansıtır. ayarlamak isterseniz
belirli bir değere bireysel seçenek, sonra belirtebilirsiniz -mcpu seçeneği
sevmek -mcpu=970 -mno-altivec.

AIX'te, -maltivec ve -mpowerpc64 seçenekler tarafından etkinleştirilmez veya devre dışı bırakılır. -mcpu
AIX'in bu seçenekler için tam desteği olmadığı için şu anda seçenek. Yapabilirsin
bilgisayarınızda çalışacağından eminseniz, bunları ayrı ayrı etkinleştirin veya devre dışı bırakın.
ortamı.

-mtune=cpu_type
Makine tipi için talimat programlama parametrelerini ayarlayın cpu_type, ancak ayarlamayın
mimari türü, kayıt kullanımı veya anımsatıcı seçimi gibi -mcpu=cpu_type
istemek. için aynı değerler cpu_type için kullanılır -mtune olduğu gibi -mcpu. eğer ikisi de
belirtildiğinde, oluşturulan kod mimariyi, kayıtları ve anımsatıcı kümesini kullanacaktır.
by -mcpu, ancak tarafından ayarlanan zamanlama parametreleri -mtune.

-mcmodel=küçük
Küçük model için PowerPC64 kodu oluşturun: TOC, 64k ile sınırlıdır.

-mcmodel=orta
Orta model için PowerPC64 kodu oluşturun: TOC ve diğer statik veriler çalışıyor olabilir
toplam 4G boyutunda.

-mcmodel=büyük
Büyük model için PowerPC64 kodu oluşturun: TOC'nin boyutu 4G'ye kadar olabilir. Başka
veri ve kod yalnızca 64 bit adres alanıyla sınırlıdır.

-maltivec
-mno-altivec
AltiVec talimatlarını kullanan (kullanmayan) kod oluşturun ve ayrıca kullanımı etkinleştirin
AltiVec komut setine daha doğrudan erişim sağlayan yerleşik işlevler.
Ayrıca ayarlamanız gerekebilir -mabi=altifc AltiVec ABI ile mevcut ABI'yi ayarlamak için
geliştirmeleri.

-mvrsave
-mno-vrsave
AltiVec kodu oluştururken VRSAVE talimatları oluşturun.

-mgen-hücre-mikrokod
Hücre mikrokodu talimatları oluştur

-mwarn-hücre-mikrokod
Bir Hücre mikrokodu talimatı yayınlandığında uyarı. Bir Hücre örneği
mikrokod talimatı değişken bir kaymadır.

-msecure-plt
ld ve ld.so'nun yürütülebilir dosyalar ve paylaşılan kitaplıklar oluşturmasına izin veren kod oluşturun
exec olmayan .plt ve .got bölümleri. Bu, bir PowerPC 32-bit SYSV ABI seçeneğidir.

-mbss-plt
ld.so'nun doldurduğu ve .plt gerektiren bir BSS .plt bölümünü kullanan kod oluşturun ve
.get bölümleri hem yazılabilir hem de yürütülebilir. Bu bir PowerPC 32-bit SYSV'dir
ABI seçeneği.

-misel
-mno-isel
Bu anahtar, ISEL talimatlarının oluşturulmasını etkinleştirir veya devre dışı bırakır.

-misel=Evet Hayır
Bu anahtar kullanımdan kaldırıldı. Kullanmak -misel ve -mno-isel yerine.

-mspe
-mno-spe
Bu anahtar, SPE simd talimatlarının oluşturulmasını etkinleştirir veya devre dışı bırakır.

- engelli
-mno-eşleştirilmiş
Bu anahtar, PAIRED simd talimatlarının oluşturulmasını etkinleştirir veya devre dışı bırakır.

-mspe=Evet Hayır
Bu seçenek kullanımdan kaldırıldı. Kullanmak -mspe ve -mno-spe yerine.

-mvsx
-mno-vsx
Vektör/skaler (VSX) komutlarını kullanan (kullanmayan) ve ayrıca
VSX'e daha doğrudan erişime izin veren yerleşik işlevlerin kullanımını etkinleştirin
komut seti.

-mfloat-gprs=evet/tek/çift/hayır
-mfloat-gprs
Bu anahtar, üzerinde kayan nokta işlemlerinin oluşturulmasını etkinleştirir veya devre dışı bırakır.
onu destekleyen mimariler için genel amaçlı kayıtlar.

Argüman Evet or tek tek duyarlıklı kayan nokta kullanımını sağlar
işlemleri.

Argüman çift tek ve çift duyarlıklı kayan nokta kullanımını sağlar
işlemleri.

Argüman yok hayır genel amaçlı kayıtlarda kayan nokta işlemlerini devre dışı bırakır.

Bu seçenek şu anda yalnızca MPC854x'te mevcuttur.

-m32
-m64
Darwin ve SVR32 hedeflerinin 64 bit veya 4 bit ortamları için kod oluşturun (dahil
GNU/Linux). 32 bit ortam int, long ve pointer'ı 32 bite ayarlar ve
herhangi bir PowerPC varyantında çalışan kod üretir. 64-bit ortam, int'yi şu şekilde ayarlar:
32 bit ve uzun ve 64 bit işaretçi ve olduğu gibi PowerPC64 için kod üretir
-mpowerpc64.

-mfull-toc
-mno-fp-in-toc
-mno-toplam-toplam
-minimal-toc
Her biri için oluşturulan TOC'nin (İçindekiler) oluşturulmasını değiştirin.
çalıştırılabilir dosya. NS -mfull-toc seçeneği varsayılan olarak seçilidir. Bu durumda, GCC
her benzersiz otomatik olmayan değişken referansı için en az bir TOC girişi tahsis edecektir
programınızda. GCC, TOC'ye kayan nokta sabitleri de yerleştirecektir. Yine de,
TOC'de yalnızca 16,384 giriş mevcuttur.

Mevcut miktarı aştığınızı söyleyen bir linker hata mesajı alırsanız
TOC alanı ile kullanılan TOC alanı miktarını azaltabilirsiniz. -mno-fp-in-toc ve
-mno-toplam-toplam seçenekleri. -mno-fp-in-toc GCC'nin kayan nokta koymasını önler
TOC'deki sabitler ve -mno-toplam-toplam GCC'yi hesaplamak için kod oluşturmaya zorlar.
Bu toplamı TOC'ye koymak yerine çalışma zamanında bir adres ve bir sabitin toplamı.
Bu seçeneklerden birini veya her ikisini de belirtebilirsiniz. Her biri GCC'nin çok üretmesine neden olur
TOC alanını koruma pahasına biraz daha yavaş ve daha büyük kod.

Bu seçeneklerin her ikisini de belirttiğinizde bile İçindekiler'de hala yeriniz kalmazsa,
belirtmek -minimal-toc Bunun yerine. Bu seçenek, GCC'nin yalnızca bir TOC girişi yapmasına neden olur.
her dosya. Bu seçeneği belirlediğinizde, GCC daha yavaş kod üretecek ve
daha büyük ancak son derece az TOC alanı kullanan. Bu seçeneği kullanmak isteyebilirsiniz
yalnızca daha az sıklıkla yürütülen kod içeren dosyalarda.

-maix64
-maix32
64-bit AIX ABI ve çağrı kuralını etkinleştirin: 64-bit işaretçiler, 64-bit "uzun" tip ve
onları desteklemek için gerekli altyapı. belirtme -maix64 ima -mpowerpc64 ve
-mpowerpc, süre -maix32 64-bit ABI'yi devre dışı bırakır ve -mno-powerpc64. KİK
varsayılan -maix32.

-mxl-uyumluluğu
-mno-xl-uyumluluğu
AIX- kullanırken IBM XL derleyici semantiğine daha yakın olan kod üretin
uyumlu ABI. Kayan nokta bağımsız değişkenlerini, prototiplenmiş işlevlere,
bağımsız değişken FPR'lerine ek olarak yığında kaydetme alanını (RSA) kaydedin. varsayma
128 bit uzunluğundaki çift değerdeki en anlamlı çift, doğru şekilde yuvarlandığında
değerleri karşılaştırmak ve ikiye dönüştürmek. Uzun çift için XL sembol adlarını kullanın
rutinleri destekler.

AIX çağrı kuralı genişletildi, ancak başlangıçta bir sorunu işlemek için belgelenmedi.
argümanlarının adresini alan bir işlevi çağırmanın belirsiz K&R C durumu
beyan edilenden daha az argüman. IBM XL derleyicileri, kayan nokta bağımsız değişkenlerine şu şekilde erişir:
olmadan bir altyordam derlendiğinde yığından RSA'ya sığmaz.
optimizasyon. Çünkü her zaman kayan noktalı argümanları yığında depolamak
verimsiz ve nadiren ihtiyaç duyulan, bu seçenek varsayılan olarak etkin değildir ve yalnızca
optimizasyon olmadan IBM XL derleyicileri tarafından derlenen alt yordamları çağırırken gereklidir.

-mpe
Destek IBM RS / 6000 SP Paralel çevre (PE). Kullanmak için yazılmış bir uygulamayı bağlayın
uygulamanın çalışmasını sağlamak için özel başlangıç ​​koduyla iletilen mesaj. NS
sistem standart konuma PE kurulu olmalıdır (/usr/lpp/ppe.poe/), ya da
gözlük dosya ile geçersiz kılınmalıdır -özellikler= uygun olanı belirtme seçeneği
dizin konumu. Paralel Ortam iş parçacıklarını desteklemez, bu nedenle -mpe
seçeneği ve -pthread seçenek uyumsuz.

-malign-doğal
-malign-güç
AIX, 32 bit Darwin ve 64 bit PowerPC GNU/Linux'ta seçenek -malign-doğal
kayan noktalı çiftler gibi daha büyük türlerin ABI tanımlı hizalamasını geçersiz kılar,
doğal büyüklük temelli sınırlarında. Seçenek -malign-güç GCC'ye talimat verir
ABI tarafından belirtilen hizalama kurallarına uyun. GCC, standart hizalamayı varsayılan olarak ayarlar
ABI'de tanımlanmıştır.

64 bit Darwin'de, doğal hizalama varsayılandır ve -malign-güç değil
destekledi.

-msoft-float
-mhard-şamandıra
Kayan nokta kayıt kümesini kullanmayan (kullanmayan) kod oluşturun. Yazılım
kullanırsanız kayan nokta öykünmesi sağlanır. -msoft-float seçeneğini seçin ve
bağlanırken GCC seçeneği.

-msingle-şamandıra
-mdouble-şamandıra
Tek veya çift duyarlıklı kayan nokta işlemleri için kod oluşturun.
-mdouble-şamandıra ima -msingle-şamandıra.

-msimple-fpu
Donanım kayan nokta birimi için sqrt ve div yönergeleri oluşturmayın.

-mfpu
Kayan nokta biriminin türünü belirtin. Geçerli değerler sp_lite (eşittir
-msingle-fpu) dp_lite (-mdouble-float -msimple-fpu'ya eşdeğer),
sp_full (-msingle-float'a eşdeğer) ve dp_full (-mdouble-float'a eşdeğer).

-mxilinx-fpu
Xilinx PPC 405/440 üzerinde kayan nokta birimi için optimizasyonlar gerçekleştirin.

-mçoklu
-mno-çoklu
Birden çok kelime yükleme talimatını kullanan (kullanmayan) kod oluşturun ve
birden fazla kelime talimatını saklayın. Bu talimatlar varsayılan olarak
POWER sistemleri ve PowerPC sistemlerinde oluşturulmamıştır. Kullanmayın -mçoklu küçük-
endian PowerPC sistemleri, çünkü bu talimatlar işlemci devredeyken çalışmaz.
küçük endian modu. İstisnalar, bunlara izin veren PPC740 ve PPC750'dir.
küçük endian modunda talimatlar.

-mstring
-mno-dizesi
Yükleme dizesi yönergelerini ve depoyu kullanan (kullanmayan) kod oluşturun
birden çok kaydı kaydetmek ve küçük blok hareketleri yapmak için string word talimatları. Bunlar
talimatlar varsayılan olarak POWER sistemlerinde oluşturulur ve PowerPC'de oluşturulmaz
sistemler. Kullanmayın -mstring Little-endian PowerPC sistemlerinde,
işlemci küçük endian modundayken yönergeler çalışmaz. istisnalar
Little-endian modunda bu komutlara izin veren PPC740 ve PPC750'dir.

-güncelleme
-mno-güncelleme
Güncelleyen yükleme veya depolama talimatlarını kullanan (kullanmayan) kod oluşturun.
baz kaydı, hesaplanan hafıza konumunun adresine. Bu talimatlar
varsayılan olarak oluşturulur. Eğer kullanırsan -mno-güncellemearasında küçük bir pencere vardır.
yığın işaretçisinin güncellendiği ve önceki çerçevenin adresinin
depolanır, bu, yığın çerçevesini kesintiler veya sinyaller arasında dolaşan kodun
bozuk veri alın.

-mavoid-endeksli-adresler
-mno-avoid-endeksli-adresler
Dizine alınmış yük veya depolama kullanımından kaçınmaya (kaçınmamaya) çalışan kod oluşturun
Talimatlar. Bu talimatlar, Power6 işlemcilerde performans cezasına neden olabilir
16M'lik bir alanı geçen büyük dizilerden geçerken olduğu gibi belirli durumlarda
sınır. Bu seçenek, Power6 hedeflendiğinde varsayılan olarak etkinleştirilir ve devre dışı bırakılır
aksi takdirde.

-mfused-deli
-mno-kaynaşmış-madd
Kayan nokta çarpmasını kullanan (kullanmayan) kod oluşturun ve biriktirin
Talimatlar. Bu talimatlar, donanım kayan noktası varsa varsayılan olarak oluşturulur.
kullanıldı. Makineye bağlı -mfused-deli seçenek artık makineyle eşlenmiştir.
bağımsız -ffp-kontrat=hızlı seçenek ve -mno-kaynaşmış-madd ile eşlendi
-ffp-kontrat=kapalı.

-mmulhw
-mno-mulhw
Yarım kelime çarpma ve çarpma-birikimini kullanan (kullanmayan) kod oluşturun
IBM 405, 440, 464 ve 476 işlemcilere ilişkin yönergeler. Bu talimatlar
bu işlemciler hedeflenirken varsayılan olarak oluşturulur.

-mdlmzb
-mno-dlmzb
Dize aramasını kullanan (kullanmayan) kod oluşturun dlmzb IBM'deki talimat
405, 440, 464 ve 476 işlemciler. Bu talimat, varsayılan olarak şu durumlarda oluşturulur:
bu işlemcileri hedef alıyor.

-mno-bit hizalama
-mbit hizalama
System V.4'te ve yerleşik PowerPC sistemleri, yapıları ve birleşimleri zorlamaz (yapmaz).
bit alanının temel türüne hizalanacak bit alanlarını içeren.

Örneğin, varsayılan olarak, 8 "imzasız" bit alanından başka hiçbir şey içermeyen bir yapı.
uzunluk 1, 4 baytlık bir sınıra hizalanır ve 4 bayt boyutundadır. Kullanarak
-mno-bit hizalama, yapı 1 baytlık bir sınıra hizalanır ve 1 bayt boyutundadır.

-mno-katı hizalama
-mstrict-hizalama
System V.4'te ve yerleşik PowerPC sistemlerinde, hizalanmamış bellek
referanslar sistem tarafından işlenecektir.

- yeniden yerleştirilebilir
-mno-taşınabilir
Statik bir yürütülebilir dosyanın başka bir yere taşınmasına izin veren (izin vermeyen) kod oluşturun.
çalışma zamanında farklı adres. Basit bir gömülü PowerPC sistem yükleyicisi
".got2"nin tüm içeriğini ve ".fixup"ta listelenen 4 baytlık konumları yeniden konumlandırın
bölümünde, bu seçenek tarafından oluşturulan 32 bitlik adreslerin bir tablosu. Bunun çalışması için tüm
birbirine bağlı nesneler ile derlenmelidir - yeniden yerleştirilebilir or -mrelocable-lib.
- yeniden yerleştirilebilir kodu, yığını 8 baytlık bir sınıra hizalar.

-mrelocable-lib
-mno-yeniden konumlandırılabilir-lib
Facebok sayfasını beğenin : - yeniden yerleştirilebilir, -mrelocable-lib statik izin vermek için bir ".fixup" bölümü oluşturur
yürütülebilir dosyalar çalışma zamanında yeniden konumlandırılacak, ancak -mrelocable-lib kullanmaz
daha küçük yığın hizalama - yeniden yerleştirilebilir. ile derlenen nesneler -mrelocable-lib Mayıs ayı
herhangi bir kombinasyonu ile derlenen nesnelerle bağlantılı olmalıdır. - yeniden yerleştirilebilir seçenekleri.

-mno-toc
-mtoc
Sistem V.4'te ve yerleşik PowerPC sistemlerinde, kayıt 2'nin şunları içerdiğini varsaymayın (yapmayın).
programda kullanılan adresleri gösteren global bir alana işaretçi.

-biraz
-küçük endian
System V.4'te ve yerleşik PowerPC sistemlerinde, işlemci kodunu çok az bir sürede derler.
endian modu. NS -küçük endian seçenek aynı -biraz.

-büyük
-big-endian
System V.4'te ve yerleşik PowerPC sistemlerinde, işlemci kodunu büyük boyutlu olarak derler.
endian modu. NS -big-endian seçenek aynı -büyük.

-mdinamik-resimsiz
Darwin ve Mac OS X sistemlerinde, kodu yeniden konumlandırılamayacak şekilde derleyin, ancak
dış referansları yeniden yerleştirilebilir. Ortaya çıkan kod için uygundur
uygulamalar, ancak paylaşılan kitaplıklar değil.

-msingle-pic-base
PIC adreslemesi için kullanılan register'ı, onu bir dosyaya yüklemek yerine salt okunur olarak kabul edin.
Her işlev için önsöz. Çalışma zamanı sistemi bunu başlatmaktan sorumludur.
yürütme başlamadan önce uygun bir değerle kaydolun.

-mprioritize-kısıtlı-insns=öncelik
Bu seçenek, sınırlı dağıtım yuvasına atanan önceliği kontrol eder.
ikinci zamanlama geçişi sırasındaki talimatlar. Argüman öncelik değeri alır
0/1/2 atamak hayır/en yüksek/ikinci en yüksek sınırlanmış gönderme yuvası önceliği
talimatları.

-msched-maliyetli-dep=bağımlılık_tipi
Bu seçenek, sırasında hangi bağımlılıkların hedef tarafından maliyetli kabul edildiğini kontrol eder.
talimat zamanlaması. Argüman bağımlılık_tipi aşağıdakilerden birini alır
değerler: yok hayır: Hiçbir bağımlılık maliyetli değildir, herşey: tüm bağımlılıklar maliyetlidir,
true_store_to_load: mağazadan yüke gerçek bir bağımlılık maliyetlidir, mağaza_to_load: herhangi
mağazadan yüke bağımlılık maliyetlidir, numara: gecikme süresi >= olan herhangi bir bağımlılık
numara maliyetlidir.

-minsert-schedule-nops=plan
Bu seçenek, ikinci sırasında hangi nop ekleme şemasının kullanılacağını kontrol eder.
zamanlama geçişi. Argüman plan aşağıdaki değerlerden birini alır: yok hayır: yapma
nops ekleyin. ped: Boş sorun yuvaları olan herhangi bir gönderme grubunu nops ile ped,
zamanlayıcının gruplamasına göre. regroup_exact: Maliyeti zorlamak için nops ekleyin
bağımlı işletmeler ayrı gruplara ayrılır. Zorlamak için tam olarak gerektiği kadar düğüm ekleyin
Tahmini işlemci gruplamasına göre yeni bir gruba bir insn. numara: Ekle
pahalı bağımlı hanları ayrı gruplara zorlamak için nops. Sokmak numara hayır
bir insn'i yeni bir gruba zorla.

-mcall-sysv
System V.4'te ve yerleşik PowerPC sistemlerinde, arama kurallarını kullanarak kodu derler.
System V Uygulama İkili Arabirimi, PowerPC'nin Mart 1995 taslağına uyar
işlemci takviyesi GCC'yi kullanarak yapılandırmadığınız sürece bu varsayılandır.
powerpc-*-eabiaix.

-mcall-sysv-eabi
-mcall-eabi
Her ikisini de belirtin -mcall-sysv ve -meabi seçenekleri.

-mcall-sysv-noeabi
Her ikisini de belirtin -mcall-sysv ve -mno-eabi seçenekleri.

-mcall-aixdesc
System V.4 ve yerleşik PowerPC sistemlerinde AIX işletim sistemi için kod derler.

-mcall-linux
System V.4 ve yerleşik PowerPC sistemlerinde Linux tabanlı GNU için kod derler
sistem.

-mcall-freebsd
System V.4 ve yerleşik PowerPC sistemlerinde, FreeBSD işletim sistemi için kod derler.
sistem.

-mcall-netbsd
System V.4 ve yerleşik PowerPC sistemlerinde, NetBSD işletim sistemi için kod derler.
sistem.

-mcall-openbsd
System V.4 ve gömülü PowerPC sistemlerinde, OpenBSD işletim sistemi için kod derler.
sistem.

-maix-yapı-dönüş
Bellekteki tüm yapıları döndürün (AIX ABI tarafından belirtildiği gibi).

-msvr4-struct-dönüş
Kayıtlarda 8 bayttan küçük yapıları döndürür (SVR4 ABI tarafından belirtildiği gibi).

-mabi=abi tipi
Mevcut ABI'yi belirli bir uzantıyla genişletin veya bu uzantıyı kaldırın. Geçerli
değerler altivec, alternatifsiz, sPE, hayır-spe, Ibmlongdouble, eeeelongdouble.

-mabi=tür
Mevcut ABI'yi SPE ABI uzantılarıyla genişletin. Bu, varsayılan ABI'yi değiştirmez,
bunun yerine SPE ABI uzantılarını mevcut ABI'ye ekler.

-mabi=spe yok
Mevcut ABI için Booke SPE ABI uzantılarını devre dışı bırakın.

-mabi=ibmlongdouble
Mevcut ABI'yi, IBM genişletilmiş kesinlikli uzun çiftini kullanacak şekilde değiştirin. Bu bir PowerPC'dir
32 bit SYSV ABI seçeneği.

-mabi=ieeelongdouble
Geçerli ABI'yi, IEEE genişletilmiş kesinlikli uzun çift kullanacak şekilde değiştirin. Bu bir PowerPC'dir
32-bit Linux ABI seçeneği.

-mprototip
-mno-prototip
System V.4'te ve yerleşik PowerPC sistemlerinde, tüm çağrıların değişken bağımsız değişkene
işlevler uygun şekilde prototiplenir. Aksi takdirde, derleyici bir talimat eklemelidir.
durum kodu kaydının bit 6'sını ayarlamak veya temizlemek için prototiplenmemiş her çağrıdan önce
(CR) kayan nokta değerlerinin kayan nokta içinde geçirilip geçirilmediğini belirtmek için
işlevin değişken argümanlar alması durumunda kaydeder. İle birlikte -mprototip, sadece aramalar
prototiplenmiş değişken argüman işlevlerine, biti ayarlayacak veya temizleyecektir.

-msim
Gömülü PowerPC sistemlerinde, başlangıç ​​modülünün çağrıldığını varsayalım. sim-crt0.o ve
standart C kitaplıklarının libsim.a ve libc.a. Bu, varsayılan
powerpc-*-eabisim konfigürasyonları.

-mmvme
Gömülü PowerPC sistemlerinde, başlangıç ​​modülünün çağrıldığını varsayalım. crt0.o ve
standart C kitaplıkları libmvme.a ve libc.a.

-deli
Gömülü PowerPC sistemlerinde, başlangıç ​​modülünün çağrıldığını varsayalım. crt0.o ve
standart C kitaplıkları libads.a ve libc.a.

-sarı bıçak
Gömülü PowerPC sistemlerinde, başlangıç ​​modülünün çağrıldığını varsayalım. crt0.o ve
standart C kitaplıkları libyk.a ve libc.a.

-mvxworks
System V.4 ve yerleşik PowerPC sistemlerinde, bir
VxWorks sistemi.

-üye
Gömülü PowerPC sistemlerinde, PPC_EMB belirtmek için ELF bayrakları başlığındaki bit
o eabi genişletilmiş yer değiştirmeler kullanılır.

-meabi
-mno-eabi
System V.4'te ve yerleşik PowerPC sistemlerinde Gömülü
Sistem V.4'te yapılan bir dizi değişiklik olan Uygulamalar İkili Arabirimi (eabi)
özellikler. seçme -meabi yığının 8 bayta hizalandığı anlamına gelir
sınır, eabi ortamını kurmak için "ana"dan "__eabi" işlevi çağrılır,
ve -msdata seçenek, iki ayrı küçük veriye işaret etmek için hem "r2" hem de "r13" kullanabilir
alanlar. seçme -mno-eabi yığının 16 baytlık bir sınıra hizalandığı anlamına gelir,
"ana"dan bir başlatma işlevi çağırmaz ve -msdata seçeneği sadece kullanacak
"r13" tek bir küçük veri alanına işaret eder. NS -meabi seçerseniz, seçenek varsayılan olarak açıktır.
birini kullanarak yapılandırılmış GCC powerpc*-*-eabi* seçenekleri.

-msdata=eabi
System V.4 ve gömülü PowerPC sistemlerinde, küçük başlatılmış "const" global ve
içindeki statik veriler .sdata2 "r2" kaydı ile gösterilen bölüm. küçük koymak
"const" olmayan global ve statik veriler başlatıldı. .sdata işaret edilen bölüm
"r13" kaydederek. Küçük başlatılmamış genel ve statik verileri .sbss
bitişik olan bölüm, .sdata Bölüm. -msdata=eabi seçenektir
ile uyumsuz - yeniden yerleştirilebilir seçeneği. -msdata=eabi seçeneği de ayarlar
-üye seçeneği.

-msdata=sysv
System V.4 ve yerleşik PowerPC sistemlerinde, küçük global ve statik verileri
.sdata "r13" kaydı ile gösterilen bölüm. Küçük başlatılmamış global
ve statik veriler .sbss bitişik olan bölüm, .sdata Bölüm.
-msdata=sysv seçenek ile uyumlu değil - yeniden yerleştirilebilir seçeneği.

-msdata=varsayılan
-msdata
Sistem V.4 ve yerleşik PowerPC sistemlerinde, eğer -meabi kullanılır, kodu aynı şekilde derleyin
as -msdata=eabi, aksi takdirde kodu aynı şekilde derleyin -msdata=sysv.

-msdata=veri
System V.4 ve yerleşik PowerPC sistemlerinde, küçük global verileri .sdata
Bölüm. Küçük başlatılmamış küresel verileri .sbss Bölüm. Kullanmayın
ancak küçük verileri adreslemek için "r13" kaydedin. olmadıkça bu varsayılan davranıştır.
diğer -msdata seçenekler kullanılır.

-msdata=yok
-mno-sdata
Gömülü PowerPC sistemlerinde, başlatılmış tüm global ve statik verileri .veri
bölümünde ve tüm başlatılmamış veriler .bss Bölüm.

-mblock-hareket-inline-limit=num
Tüm blok hareketlerini satır içi ("memcpy" çağrıları veya yapı kopyaları gibi) küçük veya
eşittir num bayt. için minimum değer num 32 bit hedeflerde 32 bayt ve 64
64 bit hedeflerde bayt. Varsayılan değer hedefe özeldir.

-G num
Gömülü PowerPC sistemlerinde, global ve statik öğeleri şundan küçük veya eşit olarak koyun: num
baytları normal veri veya bss bölümü yerine küçük veri veya bss bölümlerine aktarın.
Varsayılan olarak, num 8'dır. -G num anahtarı da bağlayıcıya iletilir. Tüm modüller
aynı ile derlenmelidir -G num değeri.

-mregnames
-mno-yeni adlar
System V.4'te ve yerleşik PowerPC sistemlerinde,
sembolik formlar kullanarak montaj dili çıktısı.

-mlongcall
-mno-uzun arama
Varsayılan olarak, tüm aramaların uzakta olduğunu varsayın, böylece daha uzun ve daha pahalı bir arama
sıra gereklidir. Bu, 32 megabayttan daha uzun aramalar için gereklidir
(33,554,432 bayt) geçerli konumdan. kısa bir arama oluşturulacaktır.
derleyici, aramanın o kadar uzakta olamayacağını bilir. Bu ayar şu şekilde geçersiz kılınabilir:
"kısa arama" işlev özelliği veya "#pragma uzun arama(0)".

Bazı bağlayıcılar, menzil dışı aramaları tespit edebilir ve
Sinek. Bu sistemlerde uzun aramalar gereksizdir ve daha yavaş kod üretir. Olarak
Bu yazıdan, AIX bağlayıcısı, PowerPC/64 için GNU bağlayıcısı gibi bunu yapabilir. Bilişim Teknoloji
Bu özelliğin 32-bit PowerPC sistemleri için de GNU linker'a eklenmesi planlanmaktadır.

Darwin/PPC sistemlerinde "#pragma longcall", "jbsr callee, L42" ve artı bir
"dal adası" (yapıştırıcı kodu). İki hedef adres, aranan kişiyi ve
"dal adası". Darwin/PPC bağlayıcısı ilk adresi tercih edecek ve bir
"bl callee", PPC "bl" talimatı doğrudan aranan kişiye ulaşacaksa; aksi halde,
linker, "dal adası"nı çağırmak için "bl L42" üretecektir. "Şube adası"
çağıran işlevin gövdesine eklenir; tam 32 bit adresini hesaplar
arayan ve ona atlar.

Mach-O (Darwin) sistemlerinde, bu seçenek derleyicinin yayımını yapıştırıcıya yönlendirir.
her doğrudan arama ve Darwin bağlayıcı onu kullanıp kullanmamaya karar verir.

Gelecekte, bağlayıcı olduğunda GCC'nin tüm uzun arama özelliklerini görmezden gelmesine neden olabiliriz.
tutkal ürettiği bilinmektedir.

-mtls-işaretçileri
-mno-tls-işaretçileri
İşlevi belirten bir yer değiştirme ile "__tls_get_addr" çağrılarını işaretleyin (işaretlemeyin)
argüman. Yer değiştirme, ld'nin işlev çağrısını argümanla güvenilir bir şekilde ilişkilendirmesini sağlar
TLS optimizasyonu için kurulum talimatları, bu da gcc'nin daha iyi programlama yapmasını sağlar
sekans.

-pthread
ile çoklu kullanım için destek ekler. p-dişler kütüphane. Bu seçenek için bayraklar ayarlar
hem önişlemci hem de bağlayıcı.

-mrecip
-mno-reçete
Bu seçenek, GCC'nin karşılıklı tahmin ve karşılıklı karekökü kullanmasını sağlayacaktır.
hassasiyeti artırmak için ek Newton-Raphson adımlarıyla talimatları tahmin edin
kayan nokta argümanları için bölme veya karekök ve bölme yapmak yerine. Sen
kullanmalı -fffast-matematik kullanırken seçenek -mrecip (ya da en azından
-funsafe-matematik-optimizasyonları, -sonlu-matematik-sadece, -karşılıklı-matematik ve
-fno-trapping-matematiği). Dizinin verimi genellikle
karşılıklı olmayan talimatın veriminden daha yüksek, kesinliği
dizi 2 ulp'ye kadar azaltılabilir (yani 1.0'ın tersi 0.99999994'e eşittir)
karşılıklı karekökler için

-mrecip=yeğlemek
Bu seçenek, hangi karşılıklı tahmin talimatlarının kullanılabileceğini kontrol etmeye izin verir. yeğlemek
virgülle ayrılmış bir seçenekler listesidir ve önünde bir "!" olabilir. tersine çevirmek
seçenek: "tümü": tüm tahmin talimatlarını etkinleştir, "varsayılan": varsayılanı etkinleştir
talimatları, eşdeğer -mrecip, "none": tüm tahmin talimatlarını devre dışı bırakın,
eşdeğerdir -mno-reçete; "div": için karşılıklı yaklaşım talimatlarını etkinleştirin
hem tek hem de çift hassasiyet; "divf": tek duyarlıklı karşılıklılığı etkinleştir
yaklaşım talimatları; "divd": çift duyarlıklı karşılıklılığı etkinleştir
yaklaşım talimatları; "rsqrt": karşılıklı karekök yaklaşımını etkinleştir
hem tek hem de çift kesinlik için talimatlar; "rsqrtf": tek-
hassas karşılıklı karekök yaklaşımı yönergeleri; "rsqrtd": etkinleştir
çift ​​duyarlıklı karşılıklı karekök yaklaşımı yönergeleri;

Yani mesela, -mrecip=tümü,!rsqrtd karşılıklı tahminin tümünü mümkün kılar
"FRSQRTE", "XSRSQRTEDP" ve "XVRSQRTEDP" talimatları dışındaki talimatlar
çift ​​duyarlıklı karşılıklı karekök hesaplamalarını işleyen.

-mrecip-hassas
-mno-recip-hassas
Karşılıklı tahmin talimatlarının daha yüksek değerler sağladığını varsayın (varsaymayın).
PowerPC ABI tarafından zorunlu kılındığından daha hassas tahminler. seçme -mcpu=güç6 or
-mcpu=güç7 otomatik olarak seçer -mrecip-hassas. Çift duyarlıklı kare
Kök tahmin talimatları, düşük hassasiyetli makinelerde varsayılan olarak oluşturulmaz,
çünkü üç adımdan sonra yakınsayan bir tahmin sağlamazlar.

-mveclibabi=tip
Harici bir kitaplık kullanarak içselleri vektörleştirmek için kullanılacak ABI türünü belirtir.
Şu anda desteklenen tek tür, IBM'in
İçselleri vektörleştirmek için Matematiksel Hızlandırma Alt Sistemi (MASS) kitaplıkları
harici kütüphaneler. GCC şu anda "acosd2", "acosf4", "acoshd2" çağrıları yapacak,
"acoshf4", "asind2", "asinf4", "asinhd2", "asinhf4", "atan2d2", "atan2f4", "atand2",
"atanf4", "atanhd2", "atanhf4", "cbrtd2", "cbrtf4", "cosd2", "cosf4", "coshd2",
"coshf4", "erfcd2", "erfcf4", "erfd2", "erff4", "exp2d2", "exp2f4", "expd2", "expf4",
"expm1d2", "expm1f4", "hypotd2", "hypotf4", "lgammad2", "lgammaf4", "log10d2",
"log10f4", "log1pd2", "log1pf4", "log2d2", "log2f4", "logd2", "logf4", "powd2",
"powf4", "sind2", "sinf4", "sinhd2", "sinhf4", "sqrtd2", "sqrtf4", "tand2", "tanf4",
power2 için kod oluştururken "tanhd4" ve "tanhf7". Her ikisi de -ftree-vektörize ve
-funsafe-matematik-optimizasyonları etkinleştirilmelidir. MASS kütüphaneleri
bağlantı zamanında belirtilir.

-mfriz
-kıvırcık
olduğunda "friz" talimatını oluşturun (oluşturmayın). -funsafe-matematik-optimizasyonları
seçeneği, kayan noktalı değerlerin 64 bit tam sayıya yuvarlanmasını optimize etmek için kullanılır ve
kayan noktaya geri dönün. "friz" talimatı, aşağıdaki durumlarda aynı değeri döndürmez:
kayan nokta sayısı bir tam sayıya sığmayacak kadar büyük.

-mpointers-to-iç içe-işlevler
-mno-işaretçiler-iç içe-işlevler
Statik zincir kaydını (r11) ne zaman
AIX ve 64-bit Linux sistemlerinde bir işaretçi aracılığıyla bir işlev işaretçisinin çağrılması
fonksiyon adresini veren 3 kelimelik bir tanımlayıcıya işaret eder, yüklenecek TOC değeri
kayıt olmak r2, ve kayıtta yüklenecek statik zincir değeri r11.
-mpointers-to-iç içe-işlevler varsayılan olarak açıktır. üzerinden arama yapamayacaksınız
iç içe geçmiş işlevlere işaretçiler veya diğer dillerde derlenmiş işlevlere işaretçiler
kullanıyorsanız statik zinciri kullanın. -mno-işaretçiler-iç içe-işlevler.

-msave-toc-dolaylı
-mno-save-toc-dolaylı
İçindekiler değerini ayrılmış yığın konumuna kaydetmek için kod oluşturun (oluşturmayın)
işlev önsözünde, işlev AIX ve 64 bit üzerindeki bir işaretçi aracılığıyla çağırırsa
Linux sistemleri. Önsözde TOC değeri kaydedilmezse, hemen önce kaydedilir.
işaretçi aracılığıyla arama. NS -mno-save-toc-dolaylı seçenek varsayılandır.

RX Opsiyonlar

Bu komut satırı seçenekleri, RX hedefleri için tanımlanmıştır:

-m64bit-çiftler
-m32bit-çiftler
"Çift" veri türünü 64 bit yapın (-m64bit-çiftler) veya 32 bit (-m32bit-çiftler)
boyutunda. Varsayılan -m32bit-çiftler. not RX kayan nokta donanımı yalnızca çalışır
32 bit değerlerde, bu nedenle varsayılan -m32bit-çiftler.

-fpu
-nofpu
etkinleştirir (-fpu) veya devre dışı bırakır (-nofpu) RX kayan nokta donanımının kullanımı. NS
için varsayılan etkinleştirildi RX600 seri ve devre dışı RX200 serisi.

Kayan nokta yönergeleri yalnızca 32 bit kayan nokta değerleri için oluşturulur
ancak, eğer öyleyse -m64bit-çiftler seçenek kullanımdaysa, FPU donanımı çalışmayacaktır.
çiftler için kullanılır.

not Eğer -fpu o zaman seçenek etkinleştirildi -funsafe-matematik-optimizasyonları ayrıca etkin
otomatik olarak. Bunun nedeni, RX FPU talimatlarının kendilerinin güvenli olmamasıdır.

-mcpu=isim
Hedeflenecek RX CPU türünü seçer. Şu anda üç tür desteklenmektedir,
genel RX600 ve RX200 seri donanım ve özel RX610 İŞLEMCİ. Varsayılan
RX600.

Arasındaki tek fark RX600 ve RX610 olduğu RX610 desteklemiyor
"MVTIPL" talimatı.

The RX200 serisinde donanım kayan nokta birimi yoktur ve bu nedenle -nofpu etkin
bu tür seçildiğinde varsayılan olarak.

-big-endian-veri
-mlittle-endian-veri
Verileri (ancak kodu değil) büyük endian biçiminde depolayın. Varsayılan
-mlittle-endian-veri, yani verileri küçük endian biçiminde depolamak için.

-msmall-veri sınırı=N
Yerleştirilebilecek global ve statik değişkenlerin bayt cinsinden maksimum boyutunu belirtir
küçük veri alanına. Küçük veri alanını kullanmak, daha küçük ve daha hızlı sonuçlara yol açabilir
kod, ancak alanın boyutu sınırlıdır ve bunu sağlamak programcıya kalmıştır.
alan taşmaz. Ayrıca küçük veri alanı kullanıldığında RX'lerden biri
yazmaçlar (genellikle "r13") bu alana işaret eden kullanım için ayrılmıştır, bu nedenle
daha uzun süre derleyici tarafından kullanılabilir. Bu, daha yavaş ve/veya daha büyük
bir zamanlar ayrılmış kayıtta tutulabilecek değişkenler şimdi ise kod
yığının üzerine itilir.

Not, ortak değişkenler (başlatılmamış değişkenler) ve sabitler
diğer bölümlere atandıkları için küçük veri alanına yerleştirilmezler.
çıktı yürütülebilir.

Varsayılan değer, bu özelliği devre dışı bırakan sıfırdır. Not, bu özellik
daha yüksek optimizasyon seviyeleri ile varsayılan olarak etkindir (-O2 vb) nedeniyle
bir kayıt ayırmanın potansiyel olarak zararlı etkileri. Programcıya kalmış
Bu özelliğin programlarına fayda sağlayıp sağlamadığını denemek ve keşfetmek için. Görmek
açıklaması -mpid gerçek kaydın nasıl yapılacağına dair bir açıklama seçeneği
küçük veri alanı işaretçisini tutun seçilir.

-msim
-mno-sim
Simülatör çalışma zamanını kullanın. Varsayılan, libgloss panosuna özgü çalışma zamanını kullanmaktır.

-mas100-sözdizimi
-mno-as100-sözdizimi
Derleyici çıktısı oluştururken Renesas'ın AS100'ü ile uyumlu bir sözdizimi kullanın
montajcı. Bu sözdizimi GAS montajcısı tarafından da işlenebilir, ancak bazı özellikleri vardır.
kısıtlamalar, bu nedenle onu oluşturmak varsayılan seçenek değildir.

-mmax-sabit-boyut=N
içinde işlenen olarak kullanılabilecek bir sabitin bayt cinsinden maksimum boyutunu belirtir.
bir RX talimatı. RX komut seti 4'e kadar sabitlere izin verse de
komutlarda kullanılacak uzunlukta bayt varsa, daha uzun bir değer daha uzun bir değere eşittir.
talimat. Bu nedenle, bazı durumlarda boyutunu sınırlamak faydalı olabilir.
komutlarda kullanılan sabitler. Bunun yerine çok büyük sabitler
sabit bir havuza yerleştirilir ve kayıt dolaylı yoluyla başvurulur.

Değer N 0 ile 4 arasında olabilir. 0 (varsayılan) veya 4 değeri,
herhangi bir boyuttaki sabitlere izin verilir.

-mrelax
Bağlayıcı gevşemesini etkinleştirin. Bağlayıcı gevşemesi, bağlayıcının
çeşitli programların daha kısa versiyonlarını bularak bir programın boyutunu küçültmeye çalışmak
Talimatlar. Varsayılan olarak devre dışıdır.

-nane-kayıt=N
Hızlı kesme işleyici işlevleri için ayrılacak kayıt sayısını belirtin. NS
değer N 0 ile 4 arasında olabilir. 1 değeri, "r13" kaydının olacağı anlamına gelir.
hızlı kesme işleyicilerinin özel kullanımı için ayrılmıştır. 2 rezerv değeri
"r13" ve "r12". 3 yedek "r13", "r12" ve "r11" değeri ve 4 değeri
"r13" ile "r10" arasındaki yedekler. 0 değeri, varsayılan değer, herhangi bir ayırma yapmaz
kaydolur.

-msave-acc-in-kesmeler
Kesme işleyici işlevlerinin akümülatör kaydını koruması gerektiğini belirtir.
Bu, yalnızca normal kod, örneğin akümülatör kaydını kullanıyorsa gereklidir.
çünkü 64-bit çarpma işlemi gerçekleştirir. Varsayılan, akümülatörü yoksaymaktır
çünkü bu, kesme işleyicilerini daha hızlı hale getirir.

-mpid
-mno-pid
Konumdan bağımsız verilerin oluşturulmasını sağlar. Herhangi bir erişim etkinleştirildiğinde
sabit veriler, bir kayıtta tutulan bir temel adresten bir ofset yoluyla yapılacaktır. Bu
gerektirmeden çalışma zamanında sabit verilerin konumunun belirlenmesini sağlar.
yürütülebilir dosyanın yeri değiştirilecek, bu da sıkı gömülü uygulamalar için bir avantajdır.
hafıza kısıtlamaları Değiştirilebilen veriler bu seçenekten etkilenmez.

Bu özelliğin kullanılmasının, sabit veriler için genellikle "r13" olan bir kayıt tuttuğunu unutmayın.
temel adres. Bu, özellikle karmaşık kodlarda daha yavaş ve/veya daha büyük koda neden olabilir.
fonksiyonlar.

Sabit veri tabanı adresini tutmak için seçilen gerçek kayıt,
the -msmall-veri sınırı ve / veya -nane-kayıt komut satırı seçenekleri etkinleştirildi.
"r13" kaydı ile başlayıp aşağı doğru devam ederek, önce kayıtlar tahsis edilir.
gereksinimlerini karşılamak için -nane-kayıt, Daha sonra -mpid ve sonunda
-msmall-veri sınırı. Böylece küçük veri alanı kaydının "r8" olması mümkündür.
ikisi de olursa -nane-kayıt=4 ve -mpid komut satırında belirtilir.

Varsayılan olarak bu özellik etkin değildir. Varsayılan, aracılığıyla geri yüklenebilir -mno-pid
komut satırı seçeneği.

Not: Genel GCC komut satırı seçeneği -sabitlenmiş-reg RX için özel bir önemi var
"interrupt" işlev özniteliği ile kullanıldığında bağlantı noktası. Bu nitelik, bir
hızlı kesmeleri işlemeyi amaçlayan işlev. GCC, yalnızca
"r10", "r11", "r12" ve/veya "r13" kaydeder ve yalnızca normal kullanım
ilgili kayıtlar şu şekilde sınırlandırılmıştır: -sabitlenmiş-reg or -nane-kayıt
komut satırı seçenekleri.

S / 390 ve zSerisi Opsiyonlar

Bunlar şunlardır -m S/390 ve zSeries mimarisi için tanımlanan seçenekler.

-mhard-şamandıra
-msoft-float
Kayan nokta için donanım kayan nokta yönergelerini ve kayıtlarını kullanın (kullanmayın).
nokta işlemleri. Ne zaman -msoft-float belirtilir, işlevler libgcc.a kullanılacak
kayan nokta işlemlerini gerçekleştirmek için. Ne zaman -mhard-şamandıra belirtildiğinde, derleyici
IEEE kayan nokta yönergeleri oluşturur. Bu varsayılandır.

-mhard-dfp
-mno-zor-dfp
Ondalık sayı için donanım ondalık-kayan nokta yönergelerini kullanın (kullanmayın).
kayan nokta işlemleri. Ne zaman -mno-zor-dfp belirtilir, işlevler libgcc.a
ondalık kayan nokta işlemlerini gerçekleştirmek için kullanılacaktır. Ne zaman -mhard-dfp is
belirtildiğinde, derleyici ondalık kayan noktalı donanım yönergeleri oluşturur. Bu
için varsayılan -mart=z9-ec veya daha yüksek.

-mlong-çift-64
-mlong-çift-128
Bu anahtarlar "uzun çift" tipin boyutunu kontrol eder. 64 bitlik bir boyut,
"double" tipine eşdeğer "long double" tipi. Bu varsayılandır.

-mbackchain
-mno-arka zincir
Arayanın çerçevesinin adresini arka zincir işaretçisi olarak depolayın (saklamayın)
callee'nin yığın çerçevesi. Araçları kullanarak hata ayıklamaya izin vermek için bir arka zincir gerekebilir.
DWARF-2 çağrı çerçevesi bilgilerini anlamıyorum. Ne zaman -mno-paketlenmiş-yığın olduğu
etkisi, arka zincir işaretçisi yığın çerçevesinin altında depolanır; ne zaman
-mpacked-yığın yürürlükte olduğunda, arka zincir, kelimenin en üstteki kelimesine yerleştirilir.
96/160 bayt kayıt alanı kaydetme.

Genel olarak, kod ile derlenmiş -mbackchain ile derlenmiş kodla çağrı uyumludur
-mmo-arka zincir; ancak, hata ayıklama amacıyla arka zincirin kullanımı genellikle şunları gerektirir:
tüm ikili ile inşa edildiğini -mbackchain. kombinasyonuna dikkat edin.
-mbackchain, -mpacked-yığın ve -mhard-şamandıra desteklenmiyor. Bir inşa etmek için
linux çekirdek kullanımı -msoft-float.

Varsayılan, arka zinciri korumamaktır.

-mpacked-yığın
-mno-paketlenmiş-yığın
Paketlenmiş yığın düzenini kullanın (kullanmayın). Ne zaman -mno-paketlenmiş-yığın belirtilir,
derleyici, 96/160 baytlık kayıt kaydetme alanının tüm alanlarını yalnızca kendi bilgileri için kullanır.
varsayılan amaç; kullanılmayan alanlar hala yığın alanı kaplar. Ne zaman -mpacked-yığın is
belirtilen, kayıt kaydetme yuvaları, kayıt kaydetme işleminin en üstünde yoğun bir şekilde paketlenir
alan; kullanılmayan alan başka amaçlar için yeniden kullanılır, bu da daha verimli kullanılmasına izin verir.
kullanılabilir yığın alanı. Ancak, ne zaman -mbackchain aynı zamanda yürürlüktedir, en üstte
kaydetme alanının word'ü her zaman arka zinciri depolamak için kullanılır ve iade adresi
register her zaman arka zincirin iki kelime altına kaydedilir.

Yığın çerçevesi arka zinciri kullanılmadığı sürece, kod -mpacked-yığın
ile oluşturulan kodla çağrı uyumludur -mno-paketlenmiş-yığın. Bazı FSF olmayanların
S/2.95 için GCC 390 sürümleri veya yığın çerçevesini kullanan zSeries tarafından oluşturulan kod
yalnızca hata ayıklama amacıyla değil, çalışma zamanında backchain. Böyle bir kod çağrı değil-
ile derlenen kodla uyumlu -mpacked-yığın. Ayrıca, kombinasyonuna dikkat edin.
-mbackchain, -mpacked-yığın ve -mhard-şamandıra desteklenmiyor. Bir inşa etmek için
linux çekirdek kullanımı -msoft-float.

Varsayılan, paketlenmiş yığın düzenini kullanmamaktır.

-msmall-exec
-mno-küçük-yürütme
Alt yordamı yapmak için "sütyen" talimatını kullanarak kod oluşturun (veya oluşturmayın)
aramalar. Bu, yalnızca toplam yürütülebilir dosya boyutu 64k'yi geçmezse güvenilir şekilde çalışır.
Varsayılan, bunun yerine "basr" talimatını kullanmaktır, buna sahip değildir.
sınırlama.

-m64
-m31
Ne zaman -m31 belirtildiğinde, S/390 ABI için GNU/Linux ile uyumlu kod oluşturun. Ne zaman
-m64 belirtilirse, zSeries ABI için GNU/Linux ile uyumlu kod oluşturun. Bu
GCC'nin özellikle 64 bit yönergeler oluşturmasına izin verir. İçin s390 hedefler,
varsayılan -m31Iken s390x Hedefler varsayılan olarak -m64.

-mzarch
-mesa
Ne zaman -mzarch belirtilmişse, üzerinde bulunan talimatları kullanarak kod oluşturun.
z/Mimarlık. Ne zaman -mesa belirtilirse, talimatları kullanarak kod oluşturun
ESA/390'da mevcuttur. Bunu not et -mesa ile mümkün değil -m64. oluştururken
S/390 ABI için GNU/Linux ile uyumlu kod, varsayılan -mesa. oluştururken
zSeries ABI için GNU/Linux ile uyumlu kod, varsayılan -mzarch.

-mmvcle
-mno-mvcle
Blok gerçekleştirmek için "mvcle" komutunu kullanarak kod oluşturun (veya oluşturmayın)
hareket eder. Ne zaman -mno-mvcle belirtilirse, bunun yerine bir "mvc" döngüsü kullanın. Bu varsayılan
boyut için optimize etmedikçe.

-mdebug
-mno-hata ayıklama
Derlerken ek hata ayıklama bilgilerini yazdırın (veya yazdırmayın). Varsayılan
hata ayıklama bilgilerini yazdırmamak için.

-mart=işlemci tipi
Üzerinde çalışacak kod oluşturun işlemci tipitemsil eden bir sistemin adıdır.
belirli işlemci türü. için olası değerler işlemci tipi vardır g5, g6, z900, z990, z9-109,
z9-ec ve z10. adresinde bulunan talimatları kullanarak kod oluştururken
z/Architecture, varsayılan -mart=z900. Aksi takdirde, varsayılan -mart=g5.

-mtune=işlemci tipi
Ayarla işlemci tipi ABI hariç, oluşturulan kodla ilgili geçerli olan her şey
ve kullanılabilir yönergeler kümesi. Listesi işlemci tipi değerler için aynıdır
-Mart. Varsayılan, kullanılan değerdir -Mart.

-mtpf-izi
-mno-tpf-izleme
Rutinleri izlemek için TPF OS'ye özel dallara ekleyen (eklemeyen) kod oluşturun
işletim sisteminde. için derleme yaparken bile bu seçenek varsayılan olarak kapalıdır.
TPF işletim sistemi.

-mfused-deli
-mno-kaynaşmış-madd
Kayan nokta çarpmasını kullanan (kullanmayan) kod oluşturun ve biriktirin
Talimatlar. Bu talimatlar, donanım kayan noktası varsa varsayılan olarak oluşturulur.
kullanıldı.

-mwarn-çerçeve boyutu=çerçeve boyutu
Geçerli işlev verilen çerçeve boyutunu aşarsa bir uyarı verir. çünkü bu
derleme zamanı kontrolü, program çalışırken gerçek bir sorun olması gerekmez. Bilişim Teknoloji
büyük olasılıkla yığın taşmasına neden olan işlevleri tanımlamaya yöneliktir. Bu
linux çekirdeği gibi sınırlı yığın boyutuna sahip bir ortamda kullanılmak için kullanışlıdır.

-mwarn-dinamik yığın
İşlev alloca'yı çağırırsa veya dinamik olarak boyutlandırılmış diziler kullanıyorsa bir uyarı yayınlayın. Bu
genellikle sınırlı bir yığın boyutuyla kötü bir fikir.

-mstack-guard=yığın koruyucu
-mstack-boyutu=yığın boyutu
Bu seçenekler sağlanırsa, s390 arka ucu,
yığın boyutu ise bir tuzağı tetikleyen işlev prologu yığın koruyucu bayt yukarıda
the yığın boyutu (s390'daki yığının aşağı doğru büyüdüğünü unutmayın). Eğer yığın koruyucu
seçenek, derlenen çerçeve boyutundan 2'nin en küçük gücü hariç tutulur.
fonksiyon seçilir. Bu seçenekler, yığın hata ayıklamaya yardımcı olmak için kullanılmak üzere tasarlanmıştır.
taşma sorunları Ek olarak yayılan kod, yalnızca çok az ek yüke neden olur ve
dolayısıyla daha yüksek performans olmadan üretim benzeri sistemlerde de kullanılabilir
bozulma. Verilen değerler 2'nin tam katı olmalıdır ve yığın boyutu olmalı
daha büyük yığın koruyucu 64k'yı aşmadan. Verimli olmak için ekstra
kodu, yığının değere hizalanmış bir adreste başladığını varsayar.
tarafından verildi yığın boyutu. yığın koruyucu seçeneği yalnızca ile birlikte kullanılabilir
yığın boyutu.

Puan Opsiyonlar

Bu seçenekler Puan uygulamaları için tanımlanmıştır:

-meb
Big-endian modu için kod derleyin. Bu varsayılandır.

-mel
Little-endian modu için kod derleyin.

-mnhwloop
Oluşturma bcnz komutunu devre dışı bırakın.

- muls
Hizalanmamış yük oluşturmayı etkinleştir ve talimatı depola.

-mmac
Çoklu biriktirme talimatlarının kullanımını etkinleştirin. Varsayılan olarak devre dışıdır.

-mscore5
SCORE5'i hedef mimari olarak belirtin.

-mscore5u
Hedef mimarinin SCORE5U'sunu belirtin.

-mscore7
SCORE7'yi hedef mimari olarak belirtin. Bu varsayılandır.

-mscore7d
SCORE7D'yi hedef mimari olarak belirtin.

SH Opsiyonlar

Bunlar -m SH uygulamaları için seçenekler tanımlanmıştır:

-m1 SH1 için kod oluşturun.

-m2 SH2 için kod oluşturun.

-m2e
SH2e için kod oluşturun.

-m2a-nofpu
FPU'suz SH2a için veya SH2a-FPU için şu şekilde kod oluşturun:
kayan nokta birimi kullanılmaz.

-m2a-tek-sadece
SH2a-FPU için, çift duyarlıklı kayan nokta olmayacak şekilde kod oluşturun.
işlemler kullanılır.

-m2a-tek
Kayan nokta biriminin tek duyarlıklı olduğunu varsayarak SH2a-FPU için kod oluşturun
varsayılan olarak mod.

-m2a
Kayan nokta biriminin çift hassasiyette olduğunu varsayarak SH2a-FPU için kod oluşturun
varsayılan olarak mod.

-m3 SH3 için kod oluşturun.

-m3e
SH3e için kod oluşturun.

-m4-nofpu
Kayan nokta birimi olmadan SH4 için kod oluşturun.

-m4-yalnızca
Yalnızca tekli noktayı destekleyen kayan nokta birimiyle SH4 için kod oluşturun.
hassas aritmetik.

-m4-tek
Kayan nokta biriminin tek duyarlıklı modda olduğunu varsayarak SH4 için kod oluşturun
varsayılan olarak.

-m4 SH4 için kod oluşturun.

-m4a-nofpu
SH4al-dsp için veya bir SH4a için, kayan noktanın
birim kullanılmaz.

-m4a-tek-sadece
SH4a için, çift duyarlıklı kayan nokta olmayacak şekilde kod oluşturun.
işlemler kullanılır.

-m4a-tek
Kayan nokta biriminin tek duyarlıklı olduğunu varsayarak SH4a için kod oluşturun
varsayılan olarak mod.

-m4a
SH4a için kod oluşturun.

-m4al
Aynısı -m4a-nofpu, dolaylı olarak geçmesi dışında -dsp montajcıya. KİK
şu anda herhangi bir DSP talimatı oluşturmaz.

-mb Big-endian modunda işlemci için kod derleyin.

-ml Küçük endian modunda işlemci için kod derleyin.

-mdalign
Hizalama, 64 bit sınırlarda iki katına çıkar. Bunun arama kurallarını değiştirdiğini unutmayın,
ve bu nedenle standart C kitaplığındaki bazı işlevler, yeniden derlemediğiniz sürece çalışmayacaktır.
ilk onunla -mdalign.

-mrelax
Mümkün olduğunda, bağlantı zamanında bazı adres referanslarını kısaltın; bağlayıcı seçeneğini kullanır
-Rahatlayın.

-bigtable
"Switch" tablolarında 32 bit ofsetler kullanın. Varsayılan, 16 bitlik ofsetleri kullanmaktır.

-mbittoplar
SH2A'da bit işleme talimatlarının kullanımını etkinleştirin.

-mfmovd
"fmovd" komutunun kullanımını etkinleştirin. Kontrol etmek -mdalign hizalama kısıtlamaları için.

-mhitachi
Renesas tarafından tanımlanan çağrı kurallarına uyun.

-mrenesas
Renesas tarafından tanımlanan çağrı kurallarına uyun.

-mno-renesas
Renesas sözleşmelerinden önce GCC için tanımlanan çağrı kurallarına uyun
Mevcuttu. Bu seçenek, SH takım zincirinin tüm hedefleri için varsayılandır.

-mnomacsave
"MAC" kaydını çağrı engellendi olarak işaretleyin. -mhitachi verilmiş.

-mieee
-mno-ieee
İşlemi etkileyen kayan nokta karşılaştırmalarının IEEE uyumluluğunu kontrol edin
Bir karşılaştırma sonucunun sırasız olduğu durumlarda. Varsayılan olarak -mieee is
dolaylı olarak etkinleştirildi. Eğer -ffinite-matematik-sadece etkin -mno-ieee dolaylı olarak ayarlanır,
bu da daha hızlı kayan noktalı daha büyük eşit ve daha az eşit karşılaştırmalarla sonuçlanır. NS
örtük ayarlar, aşağıdakilerden biri belirtilerek geçersiz kılınabilir -mieee or -mno-ieee.

-minline-ic_invalidate
İç içe işlevi ayarladıktan sonra talimat önbellek girişlerini geçersiz kılmak için satır içi kod
trambolinler. -musermode etkinse ve seçiliyse bu seçeneğin hiçbir etkisi yoktur.
kod oluşturma seçeneği (örn. -m4) icbi komutunun kullanımına izin vermez. Eğer
seçilen kod oluşturma seçeneği icbi komutunun kullanımına izin vermiyor,
ve -musermode etkin değil, satır içi kod talimatı değiştirecek
Adres dizisini doğrudan ilişkisel yazma ile önbelleğe alın. Bu sadece gerektirmez
ayrıcalıklı mod, ancak önbellek satırı TLB aracılığıyla eşlenmişse de başarısız olur
ve haritasız hale geldi.

-missize
Montaj kodunda talimat boyutunu ve yerini boşaltın.

-mpadstruct
Bu seçenek kullanımdan kaldırılmıştır. Yapıları 4 baytın katlarına kadar doldurur;
SH ABI ile uyumlu değil.

-msoft-atomik
Atomik yerleşik için GNU/Linux uyumlu gUSA yazılımı atomik dizileri oluşturun
fonksiyonlar. Üretilen atomik diziler, kesmeden destek gerektirir /
sistemin istisna işleme kodudur ve yalnızca tek çekirdekli sistemler için uygundur.
Çok çekirdekli sistemlerde düzgün çalışmazlar. Bu seçenek tarafından etkinleştirildi
hedef "sh-*-linux*" olduğunda varsayılandır. Atomik yerleşik hakkında ayrıntılar için
fonksiyonlar bkz. __atomik yerleşikler.

-mspace
Hız yerine alan için optimize edin. tarafından ima edildi -İşletim sistemi.

-mprefergot
Konumdan bağımsız kod oluştururken, Global Offset'i kullanarak işlev çağrıları yayınlayın
Prosedür Bağlantı Tablosu yerine Tablo.

-müzer modu
Yalnızca ayrıcalıklı mod kodu oluşturmayın; aşağıdaki durumlarda -mno-inline-ic_invalidate anlamına gelir:
satır içi kod, kullanıcı modunda çalışmaz. Hedef olduğunda bu varsayılandır.
"sh-*-linux*".

-çok maliyet=numara
Çarpma sayısı için varsayılacak maliyeti ayarlayın.

-mdiv=strateji
Tamsayılı bölme işlemleri için kullanılacak bölme stratejisini ayarlayın. SHmedia için
strateji şunlardan biri olabilir:

fp İşlemi kayan noktada gerçekleştirir. Bu çok yüksek bir gecikme süresine sahiptir, ancak
yalnızca birkaç talimat, bu nedenle kodunuz yeterliyse bu iyi bir seçim olabilir
derleyicinin kayan noktayı programlamasına izin vermek için kolayca kullanılabilir ILP
diğer talimatlarla birlikte talimatlar. Sıfıra bölme neden olur
kayan nokta istisnası.

inv Bölenin tersini hesaplamak için tamsayı işlemlerini kullanır ve sonra
temettü ile tersini çarpar. Bu strateji, ÖAM ve kaldırmaya izin verir
ters hesaplama. Sıfıra bölme, belirtilmemiş bir sonuç hesaplar,
ama tutmuyor.

yatırım:minlat
Bir varyantı inv CSE veya kaldırma fırsatları bulunmadığında veya
tüm operasyon aynı yere çekildi, operasyonun son aşamaları
ters hesaplama genel azaltmak için son çarpma ile iç içedir
gecikme, birkaç talimat daha kullanma pahasına ve böylece daha az
diğer kodlarla zamanlama fırsatları.

çağrı
Genellikle aşağıdakileri uygulayan bir kitaplık işlevini çağırır: yatırım:minlat strateji. Bu
"m5-*media-nofpu" derlemeleri için yüksek kod yoğunluğu verir.

call2
Aynı kitaplık işlevinin farklı bir giriş noktasını kullanır, burada bir
bir arama tablosuna yönelik işaretçi zaten kurulmuş, bu da işaretçi yükünü ortaya çıkarıyor
CSE ve kod kaldırma optimizasyonlarına.

inv:çağrı
inv:çağrı2
env:fp
Kullan inv ilk kod üretimi için algoritma, ancak kod kalırsa
optimize edilmemiş, geri dön çağrı, call2ya da fp stratejileri sırasıyla. Bunu not et
sıfıra bölmenin potansiyel olarak kapana kıstırıcı yan etkisi, ayrı bir
talimat, bu nedenle tüm tamsayı talimatlarının kaldırılması mümkündür,
ancak yan etkinin işareti olduğu yerde kalır. için bir rekombinasyon
bu durumda kayan nokta işlemleri veya bir çağrı mümkün değildir.

inv20u
inv20l
Varyantları yatırım:minlat strateji. Ters hesaplamanın yapılması durumunda
çarpmadan ayrılmazlar, temettüsünün sığdığı bölmeyi hızlandırırlar
bir dizi atlamak için bir test ekleyerek 20 bite (varsa artı işareti)
bu durumdaki işlemler; bu test, daha büyük temettüler durumunu yavaşlatır.
inv20u bu kadar küçük bir temettü durumunun olası olmadığını varsayar ve inv20l
muhtemel olduğunu varsayar.

SHmedia dışındaki hedefler için strateji şunlardan biri olabilir:

çağrı div1
için "div1" tek adımlı bölme talimatını kullanan bir kitaplık işlevini çağırır.
işlemi gerçekleştirin. Sıfıra bölme, belirtilmemiş bir sonucu hesaplar ve
tuzak değil. Bu, SH4, SH2A ve SHcompact dışında varsayılandır.

çağrı-fp
İşlemi çift duyarlıklı yüzer biçimde gerçekleştiren bir kitaplık işlevini çağırır
puan. Sıfıra bölme, kayan nokta istisnasına neden olur. Bu varsayılan
FPU ile SHcompact için. İki katı olmayan hedefler için bunu belirtmek
hassas FPU varsayılan olarak "call-div1" olacaktır.

çağrı masası
Küçük bölenler için bir arama tablosu kullanan bir kitaplık işlevi çağırır ve
Daha büyük bölenler için büyük/küçük harf ayrımına sahip "div1" komutu. Sıfıra bölüm
belirtilmemiş bir sonuç hesaplar ve bindirmez. Bu, SH4 için varsayılandır.
Dinamik kaydırma talimatlarına sahip olmayan hedefler için bunu belirtmek,
varsayılan olarak "call-div1".

Bir bölünme stratejisi belirlenmediğinde, varsayılan strateji seçilecektir.
mevcut hedefe göre. SH2A için varsayılan strateji "divs" kullanmaktır ve
kütüphane fonksiyon çağrıları yerine "divu" talimatları.

-maccumulate-giden-arglar
İşlev prologunda etraftan ziyade giden argümanlar için bir kez yer ayırın
her arama Genellikle performans ve boyut için faydalıdır. Gevşemek için de gerekli
yığın çerçevesini koşullu kod etrafında değiştirmekten kaçınmak için.

-mdivsi3_libfunc=isim
32 bit işaretli bölme için kullanılan kitaplık işlevinin adını şu şekilde ayarlayın: isim. Bu
yalnızca çağrı ve çağrı bölme stratejilerinde kullanılan adı etkiler ve
derleyici hala aynı girdi/çıktı/kapalı kayıt setlerini sanki sanki
bu seçenek mevcut değildi.

-mfixed-aralık=kayıt aralığı
Verilen kayıt aralığını sabit kayıtlar olarak ele alan kod oluşturun. Sabit bir kayıt
kayıt ayırıcının kullanamayacağı bir tanesidir. Bu, çekirdeği derlerken kullanışlıdır.
kod. Bir kayıt aralığı, bir tire ile ayrılmış iki kayıt olarak belirtilir. çoklu
kayıt aralıkları virgülle ayrılarak belirtilebilir.

-madjust-aç
Hedef kayıtların bozulmasını önlemek için gaz kelebeği açılır. Bu seçenek yalnızca bir
gcc kod tabanı TARGET_ADJUST_UNROLL_MAX hedef kancasını destekliyorsa etki.

-mindexed-adresleme
SHmedia32/SHcompact için dizinlenmiş adresleme modunun kullanımını etkinleştirin. Bu sadece
donanım ve/veya işletim sistemi, dizine eklenenler için 32-bit sarma semantiği uygularsa güvenlidir.
adresleme modu Mimari, 64 bitlik işlemcilerin uygulanmasına izin verir
İşletim sisteminin 32 bit adresleme almak için kullanabileceği, ancak mevcut donanım olmadığı için MMU
uygulama, dizinlenmiş adresleme modunu güvenli hale getirmek için bunu veya başka herhangi bir yolu destekler
32 bit ABI'de kullanmak için varsayılan -mno-endeksli-adresleme.

-mgettrcost=numara
gettr komutu için varsayılan maliyeti şu şekilde ayarlayın: numara. Varsayılan 2 ise
-mpt-sabit yürürlükte, aksi takdirde 100.

-mpt-sabit
pt* talimatlarının yakalanmayacağını varsayın. Bu genellikle daha iyi planlanmış
kod, ancak mevcut donanımda güvenli değil. Mevcut mimari tanımı diyor ki
bu ptabs ve ptrel, hedef 3 ile ve 3 olduğunda tuzak kurar.
bir daldan önce ptabs / ptrel programlamayı güvensiz hale getirmenin kasıtsız etkisi veya
bir döngüden kaldırın. Örneğin, çalışan libgcc'nin bir parçası olan __do_global_ctors
yapılandırıcılar program başlangıcında, -1 ile sınırlandırılmış bir listedeki işlevleri çağırır.
-mpt-fixed seçeneğiyle, ptab'ler -1'e karşı test edilmeden önce yapılacaktır. o
tüm kurucuların biraz daha hızlı çalıştırılacağı anlamına gelir, ancak döngü geldiğinde
listenin sonunda, ptabs bir hedefe -1 yüklediği için program çöküyor
Kayıt ol. Bu seçenek, akımı uygulayan herhangi bir donanım için güvenli olmadığından
mimari belirtimi, varsayılan -mno-pt-sabittir. Kullanıcı belirtmediği sürece
ile özel maliyet -mgettrcost, -mno-pt-fixed ayrıca şu anlama gelir: -mgettrcost=100; bu
Sıradan tamsayıları depolamak için hedef kayıtları kullanarak kayıt tahsisini engeller.

-minvalid-semboller
Sembollerin geçersiz olabileceğini varsayın. Derleyici tarafından oluşturulan sıradan fonksiyon sembolleri
movi/shori/ptabs veya movi/shori/ptrel ile yüklemek için her zaman geçerli olacaktır, ancak
montajcı ve/veya bağlayıcı hileler neden olacak semboller oluşturmak mümkündür
tuzak için ptabs / ptrel. Bu seçenek yalnızca şu durumlarda anlamlıdır: -mno-pt-sabit olduğu
Efekt. Daha sonra çapraz temel blok cse'yi, kaldırmayı ve çoğu planlamayı önleyecektir.
sembol yükler. Varsayılan -mno-geçersiz-semboller.

-mbranch-maliyet=num
üstlenmek num bir şube talimatının maliyeti olmak. Daha yüksek sayılar yapacak
derleyici mümkünse daha fazla dal içermeyen kod oluşturmaya çalışır. belirtilmemişse
değer, derlenmekte olan işlemci türüne bağlı olarak seçilir.

-mcbranchdi
"cbranchdi4" talimat düzenini etkinleştirin.

-mcmpeqdi
"cmpeqdi_t" talimat desenini yayınlasanız bile -mcbranchdi yürürlüktedir.

-mfused-deli
"fmac" talimatının kullanılmasına izin verin (kayan noktalı çarpma-birikimli)
işlemci türü destekler. Bu seçeneğin etkinleştirilmesi, aşağıdakileri üreten kod üretebilir:
katı IEEE 754 aritmetiğine kıyasla farklı sayısal kayan nokta sonuçları.

-impretend-cmove
Koşullu hareket talimatı için sıfır yer değiştirme koşullu dalları tercih edin
desenler. Bu, SH4 işlemcide daha hızlı kod ile sonuçlanabilir.

Solaris 2 Opsiyonlar

Bunlar -m seçenekler Solaris 2'de desteklenir:

-mimpur-metin
-mimpur-metin, ek olarak kullanılan -paylaşılan, derleyiciye geçmemesini söyler -z metin için
paylaşılan bir nesneyi bağlarken bağlayıcı. Bu seçeneği kullanarak konum-
bağımlı kod, paylaşılan bir nesneye dönüştürülür.

-mimpur-metin "yer değiştirmelerin tahsis edilebilir ancak yazılamaz durumda kalmasını" bastırır
bölümler" linker hata mesajı. Ancak, gerekli yer değiştirmeler kopyalamayı tetikleyecektir.
yazılır ve paylaşılan nesne aslında süreçler arasında paylaşılmaz. Onun yerine
kullanma -mimpur-metin, tüm kaynak kodunu ile derlemelisin -fpic or -fPIC.

Bu anahtarlar, Solaris 2'de yukarıdakilere ek olarak desteklenir:

-pthread'ler
POSIX iş parçacığı kitaplığını kullanarak çoklu iş parçacığı desteği ekleyin. Bu seçenek ayarlar
hem önişlemci hem de bağlayıcı için bayraklar. Bu seçenek iş parçacığını etkilemez
derleyici tarafından üretilen nesne kodunun veya onunla sağlanan kitaplıkların güvenliği.

-pthread
Bu eş anlamlısı -pthread'ler.

SPARC Opsiyonlar

Bunlar -m seçenekler SPARC'ta desteklenir:

-mno-app-regs
-mapp-reg'ler
Belirtmek -mapp-reg'ler 2'den 4'e kadar olan global kayıtları kullanarak çıktı üretmek için
SPARC SVR4 ABI, uygulamalar için saklıdır. Global register 1 gibi, her global
2'den 4'e kadar olan kayıtlar daha sonra
işlev çağrıları. Bu varsayılandır.

Bir miktar performans kaybı pahasına tamamen SVR4 ABI uyumlu olmak için şunları belirtin:
-mno-app-regs. Bu seçenek ile kütüphaneleri ve sistem yazılımlarını derlemelisiniz.

-mflat
-mno-düz
İle -mflat, derleyici kaydetme/geri yükleme talimatları oluşturmaz ve bir
"düz" veya tek kayıt penceresi modeli. Bu model normal ile uyumludur.
pencere modelini kaydedin. Yerel kayıtlar ve giriş kayıtları (0--5) hala
"çağrı kaydedilmiş" kayıtlar olarak değerlendirilir ve gerektiğinde yığına kaydedilir.

İle -mno-düz (varsayılan), derleyici kaydetme/geri yükleme yönergeleri oluşturur (
yaprak işlevleri için). Bu normal çalışma modudur.

-mfpu
-mhard-şamandıra
Kayan nokta talimatları içeren çıktı oluşturun. Bu varsayılandır.

-mno-fpu
-msoft-float
Kayan nokta için kitaplık çağrılarını içeren çıktı oluşturun. Uyarı: gerekli
kitaplıklar tüm SPARC hedefleri için mevcut değildir. Normalde tesislerin
makinenin olağan C derleyicisi kullanılır, ancak bu doğrudan çapraz olarak yapılamaz.
derleme. Uygun kütüphane sağlamak için kendi düzenlemelerinizi yapmalısınız.
çapraz derleme için işlevler. Gömülü hedefler sparc-*-aout ve spaclite-*-*
yazılım kayan nokta desteği sağlar.

-msoft-float çıktı dosyasındaki çağrı kuralını değiştirir; bu nedenle, sadece
derlerseniz faydalı herşey Bu seçeneğe sahip bir programın Özellikle, yapmanız gereken
derlemek libgcc.a, GCC ile birlikte gelen kitaplık, -msoft-float bunun için
çalışmak.

-mhard-dörtlü-şamandıra
Dört sözcüklü (uzun çift) kayan nokta yönergelerini içeren çıktı oluşturun.

-msoft-dörtlü-şamandıra
Dört sözcüklü (uzun çift) kayan nokta için kitaplık çağrıları içeren çıktı oluşturun
Talimatlar. Çağrılan işlevler, SPARC ABI'de belirtilen işlevlerdir. bu
Varsayılan.

Bu yazı itibariyle, donanım desteğine sahip hiçbir SPARC uygulaması bulunmamaktadır.
dört kelimelik kayan nokta talimatları. Hepsi biri için bir tuzak işleyicisi çağırır.
bu talimatları ve ardından tuzak işleyicisi talimatın etkisini taklit eder.
Tuzak işleyici ek yükü nedeniyle, bu, ABI kitaplığını çağırmaktan çok daha yavaştır.
rutinler. Böylece -msoft-dörtlü-şamandıra seçenek varsayılandır.

-mno-hizasız-çiftler
-düzensiz-çiftler
Çiftlerin 8 baytlık hizalamaya sahip olduğunu varsayalım. Bu varsayılandır.

İle -düzensiz-çiftler, GCC, çiftlerin yalnızca 8 baytlık hizalamaya sahip olduğunu varsayar.
başka bir türde yer alıyorsa veya mutlak bir adresleri varsa. Aksi takdirde
4 baytlık hizalamaları olduğunu varsayar. Bu seçeneğin belirtilmesi bazı nadir durumlardan kaçınır.
diğer derleyiciler tarafından oluşturulan kodla uyumluluk sorunları. varsayılan değil
çünkü özellikle kayan noktalı kod için performans kaybına neden olur.

-mno-daha hızlı-yapılar
-mfaster-yapıları
İle -mfaster-yapıları, derleyici yapıların 8 bayt olması gerektiğini varsayar.
hizalama. Bu, kopyalar için "ldd" ve "std" komut çiftlerinin kullanılmasını sağlar.
yapı atamasında, iki kat daha fazla "ld" ve "st" çifti yerine. Ancak
bu değiştirilmiş hizalamanın kullanılması SPARC ABI'yi doğrudan ihlal eder. Böylece amaçlanan
yalnızca geliştiricinin elde ettikleri kodun doğru olduğunu kabul ettiği hedeflerde kullanım içindir.
doğrudan ABI kurallarına uygun olmayacaktır.

-mcpu=cpu_type
Komut seti, kayıt seti ve komut programlama parametrelerini ayarlayın.
makine tipi cpu_type. için desteklenen değerler cpu_type vardır v7, selvi, v8, süper parc,
hiperpark, leon, sparlit, f930, f934, spaclite86x, kıvılcım, tsc701, v9,
ultraspark, ultrasparc3, Niyagara, Niagara2, Niagara3, ve Niagara4.

Yerel Solaris ve GNU/Linux araç zincirleri de değeri destekler yerli, hangisini seçer
ana bilgisayar işlemcisi için en iyi mimari seçeneği. -mcpu=yerel eğer etkisi yoktur
GCC işlemciyi tanımıyor.

Varsayılan talimat zamanlama parametreleri, bir
mimari ve bir uygulama değil. Bunlar v7, v8, sparlit, kıvılcım, v9.

Desteklenen her bir mimarinin ve desteklenen uygulamalarının listesi aşağıdadır.

v7 selvi

v8 süpersparc, hipersparc, leon

sparlit
f930, f934, sraclite86x

kıvılcım
tsc701

v9 ultrasparc, ultrasparc3, ​​niagara, niagara2, niagara3, niagara4

Varsayılan olarak (aksi şekilde yapılandırılmadıkça), GCC, V7 varyantı için kod oluşturur.
SPARC mimarisi. İle birlikte -mcpu=selvi, derleyici ayrıca için optimize eder
SPARCStation/SPARCServer 7xx serisinde kullanıldığı şekliyle Cypress CY602C3 yongası. Bu
eski SPARCSstation 1, 2, IPX vb. için de uygundur.

İle -mcpu=v8, GCC, SPARC mimarisinin V8 varyantı için kod üretir. NS
V7 kodundan tek fark, derleyicinin tamsayı çarpmasını yayması ve
SPARC-V8'de bulunan ancak SPARC-V7'de olmayan tamsayı bölme talimatları. İle birlikte
-mcpu=süper sparc, derleyici ayrıca SuperSPARC yongası için optimize eder.
SPARCSstation 10, 1000 ve 2000 serilerinde kullanılır.

İle -mcpu=parklilit, GCC, SPARC'ın SPARClite varyantı için kod üretir
mimari. Bu, tamsayı çarpmasını, tamsayı bölme adımını ve taramayı ("ffs") ekler
SPARClite'da bulunan ancak SPARC-V7'de olmayan talimatlar. İle birlikte -mcpu=f930,
derleyici ayrıca orijinal olan Fujitsu MB86930 yongası için optimize eder.
SPARClite, FPU'suz. İle birlikte -mcpu=f934, derleyici ayrıca için optimize eder
FPU'lu daha yeni SPARClite olan Fujitsu MB86934 yongası.

İle -mcpu=parıltı, GCC, SPARC'ın SPARClet varyantı için kod üretir
mimari. Bu, tamsayı çarpma, çarpma/biriktirme, tamsayı bölme işlemlerini ekler
SPARClet'te bulunan ancak SPARC-V7'de olmayan adım ve tarama ("ffs") talimatları. İle birlikte
-mcpu=tsc701, derleyici ayrıca onu TEMIC SPARClet çipi için optimize eder.

İle -mcpu=v9, GCC, SPARC mimarisinin V9 varyantı için kod üretir. Bu
64-bit tamsayı ve kayan nokta taşıma talimatları, 3 ek kayan nokta ekler
koşul kodu kayıtları ve koşullu taşıma talimatları. İle birlikte -mcpu=ultraparc,
derleyici ayrıca onu Sun UltraSPARC I/II/III yongaları için optimize eder. İle birlikte
-mcpu=ultraparc3, derleyici ayrıca Sun UltraSPARC için optimize eder
III/III+/IIIi/IIIi+/IV/IV+ çipler. İle birlikte -mcpu=niagara, derleyici ayrıca
Sun UltraSPARC T1 çipleri için optimize eder. İle birlikte -mcpu=niagara2, derleyici
ayrıca Sun UltraSPARC T2 çipleri için optimize eder. İle birlikte -mcpu=niagara3,
derleyici ayrıca Sun UltraSPARC T3 yongaları için optimize eder. İle birlikte -mcpu=niagara4,
derleyici ayrıca onu Sun UltraSPARC T4 yongaları için optimize eder.

-mtune=cpu_type
Makine tipi için talimat programlama parametrelerini ayarlayın cpu_type, ancak ayarlamayın
seçeneğin olduğu komut seti veya kayıt seti -mcpu=cpu_type olur.

için aynı değerler -mcpu=cpu_type için kullanılabilir -mtune=cpu_typeama tek
yararlı değerler, belirli bir CPU uygulamasını seçen değerlerdir. Onlar
selvi, süper parc, hiperpark, leon, f930, f934, spaclite86x, tsc701, ultraspark,
ultrasparc3, Niyagara, Niagara2, Niagara3 ve Niagara4. Yerli Solaris ve
GNU/Linux araç zincirleri, yerli ayrıca kullanılabilir.

-mv8plus
-mno-v8plus
İle -mv8plus, GCC, SPARC-V8+ ABI için kod oluşturur. V8'den farkı
ABI, genel ve çıkış kayıtlarının 64 bit genişliğinde kabul edilmesidir. Bu etkinleştirildi
tüm SPARC-V32 işlemciler için varsayılan olarak Solaris'te 9 bit modunda.

-mvis
-mno-vis
İle -mvis, GCC, UltraSPARC Görselinden yararlanan kod üretir.
Komut Seti uzantıları. Varsayılan -mno-vis.

-mvis2
-mno-vis2
İle -mvis2, GCC, UltraSPARC'ın 2.0 sürümünden yararlanan kod üretir
Görsel Komut Seti uzantıları. Varsayılan -mvis2 bir işlemciyi hedeflerken
UltraSPARC-III ve sonraki sürümler gibi bu tür talimatları destekler. Ayar -mvis2 Ayrıca
setleri -mvis.

-mvis3
-mno-vis3
İle -mvis3, GCC, UltraSPARC'ın 3.0 sürümünden yararlanan kod üretir
Görsel Komut Seti uzantıları. Varsayılan -mvis3 bir işlemciyi hedeflerken
niagara-3 ve sonrası gibi talimatları destekler. Ayar -mvis3 ayrıca ayarlar
-mvis2 ve -mvis.

-mpopc
-mno-popc
İle -mpopc, GCC, UltraSPARC popülasyonundan yararlanan kod üretir
sayma talimatı Varsayılan -mpopc bunu destekleyen bir işlemciyi hedeflerken
Niagara-2 ve sonrası gibi talimatlar.

-mfmaf
-mno-fmaf
İle -mfmaf, GCC, UltraSPARC Fused Multiply'den yararlanan kod üretir.
Kayan nokta uzantıları ekleyin. Varsayılan -mfmaf bir işlemciyi hedeflerken
Niagara-3 ve sonraki sürümler gibi bu tür talimatları destekler.

-mfix-at697f
Atmel AT697F işlemcinin tek hata hatası için belgelenmiş geçici çözümü etkinleştirin
(AT13E işlemcisinin 697 numaralı hata hatasına karşılık gelir).

Bunlar -m 9-bit SPARC-V64 işlemcilerde yukarıdakilere ek olarak seçenekler desteklenir
ortamları:

-m32
-m64
32 bit veya 64 bit ortam için kod oluşturun. 32 bit ortam int'yi ayarlar,
uzun ve işaretçi 32 bit. 64 bit ortam, int'yi 32 bit olarak ayarlar ve uzun ve
64 bit işaretçisi.

-mcmodel=hangi
Kod modelini aşağıdakilerden birine ayarlayın

orta
Orta/Düşük kod modeli: 64 bit adresler, programlar düşük 32'de bağlanmalıdır
bit bellek. Programlar statik veya dinamik olarak bağlanabilir.

medyum
Orta/Orta kod modeli: 64 bit adresler, programlar düşük
44 bit bellek, metin ve veri bölümlerinin boyutu 2 GB'den küçük olmalı ve
veri bölümü, metin bölümünün 2 GB'ı içinde yer almalıdır.

medani
Orta/Her Yerde kod modeli: 64 bit adresler, programlar herhangi bir yere bağlanabilir
bellekte, metin ve veri bölümlerinin boyutu 2 GB'tan küçük olmalıdır ve veriler
segmenti, metin segmentinin 2 GB'ı içinde bulunmalıdır.

gömme
Gömülü sistemler için Orta/Her Yerde kod modeli: 64 bit adresler, metin
ve veri bölümlerinin boyutu 2 GB'den küçük olmalıdır, her ikisi de bellekte herhangi bir yerden başlar
(bağlantı zamanında belirlenir). Küresel kayıt %g4 veri tabanına işaret ediyor
segment. Programlar statik olarak bağlantılıdır ve PIC desteklenmez.

-mbellek-modeli=bellek modeli
İşlemcide yürürlükte olan bellek modelini aşağıdakilerden birine ayarlayın.

varsayılan
İşlemci ve işletim sistemi için varsayılan bellek modeli.

rmo Rahat Hafıza Düzeni

PSO Kısmi Mağaza Siparişi

tso Toplam Mağaza Siparişi

sc Sıralı Tutarlılık

Bu bellek modelleri, Sparc V9 mimarisinin Ek D'sinde resmi olarak tanımlanmıştır.
kılavuzu, işlemcinin "PSATE.MM" alanında ayarlandığı şekilde.

-mstack-bias
-mno-yığın önyargısı
İle -mstack-bias, GCC, yığın işaretçisinin ve varsa çerçeve işaretçisinin,
yığın çerçeve referansları yapılırken geri eklenmesi gereken -2047 ile dengelenir. Bu
64 bit modunda varsayılandır. Aksi takdirde, böyle bir ofsetin bulunmadığını varsayın.

SPU Opsiyonlar

Bunlar -m seçenekler SPU'da desteklenir:

-mwarn-reloc
-merror-reloc
SPU için yükleyici, dinamik yer değiştirmeleri işlemez. Varsayılan olarak, GCC bir
dinamik bir yer değiştirme gerektiren kod oluşturduğunda hata. -mno-hata-reloc
hatayı devre dışı bırakır, -mwarn-reloc bunun yerine bir uyarı oluşturacaktır.

-msafe-dma
-munsafe-dma
DMA'yı başlatan veya tamamlamayı test eden talimatlar,
erişilmekte olan belleğin yüklerine ve depolarına göre. Kullanıcılar genellikle
volatile anahtar sözcüğünü kullanarak bu sorunu giderin, ancak bu verimsiz koda yol açabilir
hafızanın değişmediği bilinen yerlerde. Belleği olarak işaretlemek yerine
uçucu, DMA talimatlarını tüm belleği potansiyel olarak etkileyen olarak ele alıyoruz. İle birlikte
-munsafe-dma kullanıcılar, bellek erişimlerini korumak için volatile anahtar sözcüğünü kullanmalıdır.

-mbranch-ipuçları
Varsayılan olarak, GCC, boru hattı duraklamalarını önlemek için bir dal ipucu talimatı oluşturacaktır.
her zaman alınan veya muhtemelen alınan dallar. 8'den daha yakın bir ipucu oluşturulmaz
talimatları şubesinden uzakta. dışında onları devre dışı bırakmak için çok az neden var
hata ayıklama amacıyla veya bir nesneyi biraz daha küçültmek için.

-msmall-mem
-mlarge-mem
Varsayılan olarak, GCC, adreslerin hiçbir zaman 18 bitten büyük olmadığını varsayarak kod üretir.
İle -mlarge-mem tam bir 32-bit adresi varsayan kod oluşturulur.

-mstdmain
Varsayılan olarak, GCC, SPU tarzı ana işlevi üstlenen başlangıç ​​koduna bağlanır
arabirim (geleneksel olmayan bir parametre listesine sahiptir). İle birlikte -mstdmain, GCC bağlanacak
programınız, "main" olarak C99 tarzı bir arayüz varsayan başlangıç ​​koduna karşı,
"argv" dizelerinin yerel bir kopyası dahil.

-mfixed-aralık=kayıt aralığı
Verilen kayıt aralığını sabit kayıtlar olarak ele alan kod oluşturun. Sabit bir kayıt
kayıt ayırıcının kullanamayacağı bir tanesidir. Bu, çekirdeği derlerken kullanışlıdır.
kod. Bir kayıt aralığı, bir tire ile ayrılmış iki kayıt olarak belirtilir. çoklu
kayıt aralıkları virgülle ayrılarak belirtilebilir.

-mea32
-mea64
"__ea" aracılığıyla erişilen PPU adres alanını işaret ettiğini varsayarak kodu derleyin
adlandırılmış adres alanı niteleyicisi 32 veya 64 bit genişliğindedir. Varsayılan 32 bittir.
Bu bir ABI değiştirme seçeneği olduğundan, yürütülebilir dosyadaki tüm nesne kodu derlenmelidir
aynı ayar ile.

-madress-space-dönüşüm
-mno-adres-alanı-dönüşüm
"__ea" adres alanının genel adresin üst kümesi olarak ele alınmasına izin ver/izin verme
Uzay. Bu, "__ea" ile genel işaretçi arasında açık tip yayınların yanı sıra
genel işaretçilerin "__ea" işaretçilerine örtük dönüşümleri. Varsayılan izin vermektir
adres alanı işaretçisi dönüşümleri.

-mcache-boyutu=önbellek boyutu
Bu seçenek, derleyicinin yürütülebilir bir dosyaya bağladığı libgcc sürümünü kontrol eder.
ve "__ea" adresindeki değişkenlere erişmek için yazılım tarafından yönetilen bir önbellek seçer
belirli bir önbellek boyutuna sahip alan. Olası seçenekler önbellek boyutu vardır 8, 16, 32, 64
ve 128. Varsayılan önbellek boyutu 64KB'dir.

-matomik-güncellemeler
-mno-atomik-güncellemeler
Bu seçenek, derleyicinin yürütülebilir bir dosyaya bağladığı libgcc sürümünü kontrol eder.
ve PPU tarafı değişkenlerinin yazılım tarafından yönetilen önbelleğinde atomik güncellemelerin yapılıp yapılmayacağını seçer
kullanılmış. Atomik güncellemeleri kullanırsanız, kullanarak SPU kodundan bir PPU değişkenine değişir.
"__ea" adlı adres alanı niteleyicisi, diğer PPU'larda yapılan değişiklikleri engellemez
PPU kodundan aynı önbellek satırında bulunan değişkenler. atomik kullanmazsanız
güncellemeler, bu tür parazitler meydana gelebilir; ancak, önbellek satırlarını geri yazmak daha fazla
verimli. Varsayılan davranış, atomik güncellemeleri kullanmaktır.

-mdual-nops
-mdual-nops=n
Varsayılan olarak, GCC, artmasını beklediğinde ikili sorunu artırmak için nops ekler
performans. n 0 ile 10 arasında bir değer olabilir. Daha küçük n daha az nops ekleyecektir. 10
varsayılandır, 0 ile aynıdır -mno-çift-nops. ile devre dışı -İşletim sistemi.

-mint-max-nops=n
Dal ipucu için eklenecek maksimum nops sayısı. Dal ipucu en az 8 olmalıdır
talimatları etkilediği şubeden uzakta. GCC n hayır
bunu uygula, aksi halde dal ipucunu oluşturmaz.

-mint-max-mesafe=n
Dal ipucu talimatının kodlaması, ipucunu 256 içinde olacak şekilde sınırlar.
gerçekleştirdiği şubenin talimatları. Varsayılan olarak, GCC,
125

-msafe-ipuçları
SPU'nun süresiz olarak durmasına neden olan bir donanım hatasını giderin. Varsayılan olarak, GCC
bu duraklamanın olmayacağından emin olmak için "hbrp" talimatını ekleyecektir.

Opsiyonlar için sistem V

Bu ek seçenekler, diğerleriyle uyumluluk için System V Sürüm 4'te mevcuttur.
bu sistemlerdeki derleyiciler:

-G Paylaşılan bir nesne oluşturun. tavsiye edilir -simgesel or -paylaşılan yerine kullanılabilir.

-Qy Bir ".ident" derleyicisinde derleyici tarafından kullanılan her aracın sürümlerini tanımlayın
çıktıdaki yönerge.

-Qn Çıktı dosyasına ".ident" yönergeleri eklemekten kaçının (bu varsayılandır).

-YP,dirs
dizinleri ara dirsile belirtilen kitaplıklar için ve diğerleri değil -l.

-Ym,dir
dizine bak dir M4 önişlemcisini bulmak için. Montajcı bunu kullanır
seçeneği.

KARO-Gx Opsiyonlar

Bunlar -m seçenekler TILE-Gx'te desteklenir:

-mcpu=isim
Hedeflenecek CPU türünü seçer. Şu anda desteklenen tek tür kiremit.

-m32
-m64
32 bit veya 64 bit ortam için kod oluşturun. 32 bit ortam int'yi ayarlar,
uzun ve işaretçi 32 bit. 64 bit ortam, int'yi 32 bit olarak ayarlar ve uzun ve
64 bit işaretçisi.

TILEPro Opsiyonlar

Bunlar -m seçenekler TILEPro'da desteklenir:

-mcpu=isim
Hedeflenecek CPU türünü seçer. Şu anda desteklenen tek tür kiremit.

-m32
32 bitlik bir ortam için int, long ve işaretçiyi 32 bit olarak ayarlayan kod oluşturun.
Bu, desteklenen tek davranıştır, bu nedenle bayrak esasen yoksayılır.

V850 Opsiyonlar

Bunlar -m V850 uygulamaları için seçenekler tanımlanmıştır:

-mlong-çağrıları
-çok uzun aramalar
Tüm aramaları uzakta (yakın) olarak kabul edin. Çağrıların uzak olduğu varsayılırsa,
derleyici her zaman fonksiyon adresini bir kayıt defterine yükler ve dolaylı olarak çağırır.
işaretçi aracılığıyla.

-mno-ep
-mep
Aynı indeks işaretçisi 4 veya daha fazlasını kullanan temel blokları optimize etmeyin (optimize etmeyin)
işaretçiyi "ep" kaydına kopyalamak ve daha kısa olan "sld" ve "sst"yi kullanmak için
Talimatlar. NS -mep optimize ederseniz, seçenek varsayılan olarak açıktır.

-mno-prolog-fonksiyonu
-mprolog-fonksiyonu
Giriş bölümündeki kayıtları kaydetmek ve geri yüklemek için harici işlevleri kullanmayın (kullanmayın).
ve bir fonksiyonun epilogu. Harici işlevler daha yavaştır, ancak daha az kod kullanır
birden fazla işlev aynı sayıda kayıt kaydediyorsa boşluk. NS
-mprolog-fonksiyonu optimize ederseniz, seçenek varsayılan olarak açıktır.

-mspace
Kodu mümkün olduğunca küçük yapmaya çalışın. Şu anda, bu sadece -mep
ve -mprolog-fonksiyonu seçenekleri.

-mtda=n
Boyutu olan statik veya global değişkenleri koyun n küçük veri alanına bayt veya daha az
Bu kayıt "ep" işaret eder. Küçük veri alanı toplamda 256 bayta kadar tutabilir
(bayt referansları için 128 bayt).

-msda=n
Boyutu olan statik veya global değişkenleri koyun n küçük veri alanına bayt veya daha az
Bu kayıt "gp" işaret eder. Küçük veri alanı 64 kilobayta kadar tutabilir.

-mzda=n
Boyutu olan statik veya global değişkenleri koyun n ilk 32'ye bayt veya daha az
kilobayt bellek.

-mv850
Hedef işlemcinin V850 olduğunu belirtin.

-big-anahtar
Büyük anahtar tabloları için uygun kod oluşturun. Bu seçeneği yalnızca,
montajcı/bağlayıcı, bir anahtar tablosundaki aralık dışı dallardan şikayet eder.

-mapp-reg'ler
Bu seçenek, derleyici tarafından oluşturulan kodda r2 ve r5'in kullanılmasına neden olur.
Bu ayar varsayılandır.

-mno-app-regs
Bu seçenek, r2 ve r5'in sabit kayıtlar olarak ele alınmasına neden olur.

-mv850e2v3
Hedef işlemcinin V850E2V3 olduğunu belirtin. önişlemci sabitleri
__v850e2v3__ Bu seçenek kullanılırsa tanımlanacaktır.

-mv850e2
Hedef işlemcinin V850E2 olduğunu belirtin. önişlemci sabitleri
__v850e2__ Bu seçenek kullanılırsa tanımlanacaktır.

-mv850e1
Hedef işlemcinin V850E1 olduğunu belirtin. önişlemci sabitleri
__v850e1__ ve __v850e__ Bu seçenek kullanılırsa tanımlanacaktır.

-mv850es
Hedef işlemcinin V850ES olduğunu belirtin. Bu bir takma addır -mv850e1
seçeneği.

-mv850e
Hedef işlemcinin V850E olduğunu belirtin. önişlemci sabiti __v850e__
Bu seçenek kullanılırsa tanımlanacaktır.

eğer hiçbiri -mv850 ne de -mv850e ne de -mv850e1 ne de -mv850e2 ne de -mv850e2v3 tanımlanmış
daha sonra varsayılan bir hedef işlemci seçilecek ve ilgili __v850*__ önişlemci
sabit tanımlanacaktır.

önişlemci sabitleri __v850 ve __v851__ ne olursa olsun her zaman tanımlanır
işlemci varyantı hedeftir.

-mdisable-çağrı
Bu seçenek, v850e, v850e1 için CALLT komutunun oluşturulmasını engelleyecektir.
v850 mimarisinin v2e850 ve v2e3v850 lezzetleri. Varsayılan
-mno-devre dışı-çağrı CALLT komutunun kullanılmasına izin verir.

VAX Opsiyonlar

Bunlar -m VAX için seçenekler tanımlanmıştır:

-munix
Unix derleyicisinin erişemeyeceği belirli atlama talimatlarını ("aobleq" vb.)
VAX için uzun mesafelerde işleyemez.

-mgnu
ile bir araya getireceğiniz varsayımıyla, bu atlama talimatlarının çıktısını alın.
GNU birleştirici.

-mg D-biçimi yerine G-biçimli kayan noktalı sayılar için çıktı kodu.

VxWorks Opsiyonlar

Bu bölümdeki seçenekler tüm VxWorks hedefleri için tanımlanmıştır. Özel seçenekler
hedef donanım, o hedef için diğer seçeneklerle birlikte listelenir.

-mrtp
GCC, hem VxWorks çekirdekleri hem de gerçek zamanlı işlemler (RTP'ler) için kod üretebilir. Bu
seçenek birinciden ikinciye geçer. Ayrıca önişlemci makrosunu da tanımlar.
"__RTP__".

-statik olmayan
Yürütülebilir bir RTP dosyasını statik kitaplıklar yerine paylaşılan kitaplıklara bağlayın. NS
seçenekleri -statik ve -paylaşılan RTP'ler için de kullanılabilir; -statik varsayılandır.

-Bstatik
-Bdinamik
Bu seçenekler bağlayıcıya aktarılır. Uyumluluk için tanımlanırlar
Diyab.

-Xbind-tembel
İşlev çağrılarının tembel bağlanmasını etkinleştirin. Bu seçenek eşdeğerdir -Wl,-z,şimdi ve bir
Diab ile uyumluluk için tanımlanmıştır.

-Xbind-şimdi
İşlev çağrılarının tembel bağlanmasını devre dışı bırakın. Bu seçenek varsayılandır ve şu şekilde tanımlanmıştır:
Diab ile uyumluluk.

x86-64 Opsiyonlar

Bunlar aşağıda listelenmiştir

Xstormy16 Opsiyonlar

Bu seçenekler Xstormy16 için tanımlanmıştır:

-msim
Simülatöre uygun başlangıç ​​dosyalarını ve bağlayıcı komut dosyasını seçin.

Xtensa Opsiyonlar

Bu seçenekler, Xtensa hedefleri için desteklenir:

-mconst16
-mno-const16
Sabit değerleri yüklemek için "CONST16" talimatlarının kullanımını etkinleştirin veya devre dışı bırakın. NS
"CONST16" komutu şu anda Tensilica'dan standart bir seçenek değildir. Ne zaman
etkinleştirildiğinde, "CONST16" komutları her zaman standart "L32R" yerine kullanılır
Talimatlar. "CONST16" kullanımı varsayılan olarak yalnızca "L32R"
talimat mevcut değildir.

-mfused-deli
-mno-kaynaşmış-madd
Birleştirilmiş çarpma/toplama ve çarpma/çıkarma talimatlarının kullanımını etkinleştirin veya devre dışı bırakın.
kayan nokta seçeneği. Kayan nokta seçeneği de değilse, bunun bir etkisi yoktur.
etkinleştirilmiş. Birleştirilmiş çarpma/toplama ve çarpma/çıkarma talimatlarının devre dışı bırakılması,
çarpma ve toplama/çıkarma işlemleri için ayrı yönergeler kullanmak için derleyici.
Bu, katı IEEE 754 uyumlu sonuçların geçerli olduğu bazı durumlarda istenebilir.
gerekli: kaynaşmış çarpma toplama/çıkarma talimatları ara noktayı yuvarlamaz
sonuç, böylece sonuçlar üreten Daha tarafından belirtilenden daha hassas bitler
IEEE standardı. Birleştirilmiş çarpma ekleme/çıkarma talimatlarının devre dışı bırakılması, aynı zamanda şunu da sağlar:
program çıktısı, derleyicinin çarpma ve birleştirme yeteneğine duyarlı değildir.
toplama/çıkarma işlemleri.

-mserialize-uçucu
-mno-seri hale getir-uçucu
Bu seçenek etkinleştirildiğinde, GCC, "geçici" bellekten önce "MEMW" talimatlarını ekler.
sıralı tutarlılığı garanti etmek için referanslar. Varsayılan -mserialize-uçucu.
kullanım -mno-seri hale getir-uçucu "MEMW" talimatlarını atlamak için.

-mforce-no-resim
GNU/Linux gibi, tüm kullanıcı modu Xtensa kodunun konumsal olması gereken hedefler için
bağımsız kod (PIC), bu seçenek çekirdek kodunu derlemek için PIC'yi devre dışı bırakır.

-mtext-bölüm değişmezleri
-mno-metin-bölümü-harf değerleri
Değişmez havuzların tedavisini kontrol edin. Varsayılan -mno-metin-bölümü-harf değerleri,
bu, değişmezleri çıktı dosyasında ayrı bir bölüme yerleştirir. Bu,
bir veri RAM/ROM'una yerleştirilecek değişmez bilgi havuzu ve ayrıca bağlayıcının birleştirilmesine izin verir.
gereksiz değişmezleri kaldırmak ve kodu iyileştirmek için ayrı nesne dosyalarından sabit bilgi havuzları
boy. İle birlikte -mtext-bölüm değişmezleri, değişmezler metin bölümünde serpiştirilmiş
onları referanslarına mümkün olduğunca yakın tutmak için. Bu gerekli olabilir
büyük montaj dosyaları için.

-mtarget-hizalama
-mno-hedef hizalama
Bu seçenek etkinleştirildiğinde, GCC, montajcıya otomatik olarak hizalama talimatı verir.
bazı kod yoğunluğu pahasına şube cezalarını azaltmaya yönelik talimatlar. NS
montajcı, dal hedeflerini hizalamak için yoğunluk talimatlarını genişletmeye çalışır ve
çağrı talimatlarını takip eden talimatlar. Yeterli ön kasa yoksa
bir hedefi hizalamak için yoğunluk talimatları, genişletme yapılmayacaktır. Varsayılan
-mtarget-hizalama. Bu seçenekler, otomatik hizalamanın tedavisini etkilemez.
montajcının her zaman genişleterek hizalayacağı "LOOP" gibi talimatlar
yoğunluk talimatları veya işlem gerektirmeyen talimatlar ekleyerek.

-mlongcall'lar
-mno-uzun aramalar
Bu seçenek etkinleştirildiğinde, GCC, montajcıya doğrudan çağrıları şuraya çevirmesi talimatını verir:
bir doğrudan aramanın hedefinin
çağrı talimatının izin verdiği aralık. Bu çeviri genellikle
diğer kaynak dosyalardaki işlevler. Özellikle, montajcı doğrudan bir
"CALL" talimatını bir "L32R"ye ve ardından bir "CALLX" talimatına. Varsayılan
-mno-uzun aramalar. Bu seçenek, çağrı hedefinin kullanılabildiği programlarda kullanılmalıdır.
potansiyel olarak kapsama alanı dışında olabilir. Bu seçenek, montajcıda değil, montajcıda uygulanır.
derleyici, bu nedenle GCC tarafından oluşturulan derleme kodu hala doğrudan çağrıyı gösterecek
talimatlar --- gerçek talimatları görmek için demonte nesne koduna bakın.
Derleyicinin, yalnızca dosyalar arası değil, her çapraz dosya araması için dolaylı bir arama kullanacağını unutmayın.
gerçekten menzil dışında olacak olanlar.

zSerisi Opsiyonlar

Bunlar aşağıda listelenmiştir

Opsiyonlar için Kod nesil konvansiyonlar
Bu makineden bağımsız seçenekler, kodda kullanılan arayüz kurallarını kontrol eder.
nesil.

Çoğunun hem olumlu hem de olumsuz biçimleri vardır; olumsuz biçimi -ffoo olurdu
-fno-foo. Aşağıdaki tabloda, formlardan yalnızca biri listelenmiştir---
varsayılan. Kaldırarak diğer formu anlayabilirsiniz. yok hayır- veya ekleyerek.

-fbounds-kontrol
Bunu destekleyen ön uçlar için, kullanılan dizinleri kontrol etmek için ek kod oluşturun.
erişim dizileri beyan edilen aralık içindedir. Bu, şu anda yalnızca
Bu seçeneğin varsayılan olarak doğru ve yanlış olduğu Java ve Fortran ön uçları
respectivamente.

-ftrapv
Bu seçenek, toplama, çıkarma ve çıkarma işlemlerinde imzalı taşma için tuzaklar oluşturur.
çarpma işlemleri.

-fwrapv
Bu seçenek, derleyiciye, işaretli aritmetik taşmanın
toplama, çıkarma ve çarpma ikişerli tamamlayıcı kullanarak sarmalar
temsil. Bu bayrak, bazı optimizasyonları etkinleştirir ve diğerlerini devre dışı bırakır. Bu
seçenek, Java dilinin gerektirdiği şekilde Java ön ucu için varsayılan olarak etkindir
Şartname.

-istisnalar
İstisna işlemeyi etkinleştirin. İstisnaları yaymak için gereken ekstra kodu üretir. İçin
bazı hedefler, bu GCC'nin herkes için çerçeve çözme bilgisi üreteceği anlamına gelir
önemli veri boyutu ek yükü üretebilen işlevler, ancak
yürütmeyi etkiler. Bu seçeneği belirlemezseniz, GCC varsayılan olarak etkinleştirecektir.
normalde istisna işleme gerektiren C++ gibi diller için ve
normalde gerektirmeyen C gibi diller. Ancak, etkinleştirmeniz gerekebilir
istisna dışında düzgün bir şekilde birlikte çalışması gereken C kodunu derlerken bu seçenek
C++ ile yazılmış işleyiciler. kullanıyorsanız, bu seçeneği devre dışı bırakmak da isteyebilirsiniz.
istisna işleme kullanmayan eski C++ programlarını derlemek.

-fnon-çağrı-istisnaları
Özel durumlar oluşturmak için bindirme talimatlarına izin veren kod oluşturun. unutmayın ki bu
her yerde bulunmayan platforma özel çalışma zamanı desteği gerektirir. Dahası,
sadece izin verir yakalama istisnalar, yani bellek referansları veya
kayan nokta komutları. İstisnaların keyfi olarak atılmasına izin vermez.
"SIGALRM" gibi sinyal işleyiciler.

-funwind-tabloları
Benzer -istisnalar, yalnızca gerekli statik verileri oluşturması dışında, ancak
oluşturulan kodu başka hiçbir şekilde etkilemez. normalde etkinleştirmeyeceksin
bu seçenek; bunun yerine, bu işleme ihtiyaç duyan bir dil işlemcisi,
senin adına.

-fasenkronize-çözme-tabloları
Hedef makine tarafından destekleniyorsa, çözme tablosunu dwarf2 formatında oluşturun. tablo
her talimat sınırında kesindir, bu nedenle yığının çözülmesi için kullanılabilir
zaman uyumsuz olaylar (hata ayıklayıcı veya çöp toplayıcı gibi).

-fpcc-yapı-dönüş
"Kısa" "yapı" ve "birlik" değerlerini bellekte değil, daha uzun olanlar gibi bellekte döndürün
kayıtlar. Bu sözleşme daha az verimlidir, ancak izin verme avantajına sahiptir.
GCC tarafından derlenen dosyalar ve diğer derleyicilerle derlenen dosyalar arasındaki karşılıklı çağrılabilirlik,
özellikle Portable C Compiler (pcc).

Bellekteki yapıları döndürmek için kesin kural, hedefe bağlıdır.
yapılandırma makroları.

Kısa yapılar ve birlikler, boyutları ve hizaları bazılarınınkiyle eşleşen yapılardır.
tamsayı türü.

Uyarı: ile derlenen kod -fpcc-yapı-dönüş anahtar ikili uyumlu değil
ile derlenmiş kod ile -freg-struct-dönüş değiştirmek. olmayan bir şeye uymak için kullanın.
varsayılan uygulama ikili arabirimi.

-freg-struct-dönüş
Mümkün olduğunda kayıtlarda "struct" ve "union" değerlerini döndürün. Bu daha verimli
daha küçük yapılar için -fpcc-yapı-dönüş.

Hiçbirini belirtmezseniz -fpcc-yapı-dönüş ne de -freg-struct-dönüş, GCC varsayılan olarak
hedef için standart hangisiyse. Standart bir sözleşme yoksa,
GCC varsayılanları -fpcc-yapı-dönüş, GCC'nin asıl olduğu hedefler hariç
derleyici. Bu gibi durumlarda standardı seçebiliriz ve daha verimli olanı seçtik.
dönüş alternatifini kaydedin.

Uyarı: ile derlenen kod -freg-struct-dönüş anahtar ikili uyumlu değil
ile derlenmiş kod ile -fpcc-yapı-dönüş değiştirmek. olmayan bir şeye uymak için kullanın.
varsayılan uygulama ikili arabirimi.

-fshort-enumlar
Bir "enum" türüne yalnızca belirtilen aralık için ihtiyaç duyduğu kadar bayt ayırın.
olası değerler. Spesifik olarak, "enum" türü en küçüğüne eşdeğer olacaktır.
yeterli alana sahip tam sayı türü.

Uyarı: the -fshort-enumlar anahtar, GCC'nin ikili olmayan kod oluşturmasına neden olur
bu anahtar olmadan oluşturulan kodla uyumludur. olmayan bir şeye uymak için kullanın.
varsayılan uygulama ikili arabirimi.

-fshort-double
"Double" için "float" ile aynı boyutu kullanın.

Uyarı: the -fshort-double anahtar, GCC'nin ikili olmayan kod oluşturmasına neden olur
bu anahtar olmadan oluşturulan kodla uyumludur. olmayan bir şeye uymak için kullanın.
varsayılan uygulama ikili arabirimi.

-fshort-wchar
için temel alınan türü geçersiz kıl wchar_t'den olduğu kısa imzasız int onun yerine
hedef için varsayılan. Bu seçenek, altında çalışacak programlar oluşturmak için kullanışlıdır.
ŞARAP.

Uyarı: the -fshort-wchar anahtar, GCC'nin ikili olmayan kod oluşturmasına neden olur
bu anahtar olmadan oluşturulan kodla uyumludur. olmayan bir şeye uymak için kullanın.
varsayılan uygulama ikili arabirimi.

-fno-ortak
C kodunda, başlatılmamış global değişkenlerin yerleşimini kontrol eder. Unix C derleyicileri
geleneksel olarak bu tür değişkenlerin farklı şekillerde çoklu tanımlarına izin vermiştir.
değişkenleri ortak bir bloğa yerleştirerek derleme birimleri. bu davranış
tarafından belirtilen -fortak, ve çoğu hedefte GCC için varsayılandır. Diğer yandan,
bu davranış ISO C tarafından gerekli değildir ve bazı hedeflerde bir hız veya kod taşıyabilir
değişken referanslarda boyut cezası. NS -fno-ortak seçeneği belirtir
derleyici, başlatılmamış global değişkenleri nesnenin veri bölümüne yerleştirmelidir
onları ortak bloklar olarak oluşturmak yerine dosya. Bunun etkisi vardır ki, eğer
aynı değişken ("extern" olmadan) iki farklı derlemede bildirilirse,
bağladığınızda çoklu tanım hatası alıyorum. Bu durumda, derlemeniz gerekir
ile -fortak Bunun yerine. ile derleme -fno-ortak olduğu hedeflerde faydalıdır.
daha iyi performans sağlar veya programın üzerinde çalışacağını doğrulamak istiyorsanız
her zaman başlatılmamış değişken bildirimlerini bu şekilde ele alan diğer sistemler.

-fno-kimliği
Görmezden gel #kimlik Direktif.

-finhibit-size-direktifi
Bir ".size" montajcı yönergesi veya sorun yaratacak başka bir şey çıkarmayın
fonksiyon ortadan bölünmüşse ve iki yarı uzak yerlere yerleştirilmişse
hafızada ayrı. Bu seçenek derlerken kullanılır crtstuff.c; ihtiyacın olmamalı
başka bir şey için kullanmak için.

-fverbose-asm
Daha fazla hale getirmek için oluşturulan derleme koduna ekstra yorum bilgileri koyun
okunabilir. Bu seçenek genellikle sadece gerçekten okuması gerekenler için kullanılır.
oluşturulan derleme kodu (belki derleyicinin kendisinde hata ayıklarken).

-fno-ayrıntılı-asm, varsayılan, ek bilgilerin atlanmasına neden olur ve
iki assembler dosyasını karşılaştırırken kullanışlıdır.

-frecord-gcc-anahtarları
Bu anahtar, derleyiciyi çağırmak için kullanılan komut satırının
oluşturulmakta olan nesne dosyasına kaydedilir. Bu anahtar yalnızca uygulanır
bazı hedeflerde ve kaydın tam formatı hedef ve ikili dosya formatıdır
bağlıdır, ancak genellikle ASCII metni içeren bir bölüm şeklini alır. Bu
anahtarı ile ilgilidir -fverbose-asm geçiş, ancak bu geçiş yalnızca kayıtları
derleyici çıktı dosyasındaki bilgiler yorum olarak, bu nedenle asla nesneye ulaşmaz
dosya. Ayrıca bakınız -grecord-gcc-anahtarları derleyici seçeneklerini saklamanın başka bir yolu için
nesne dosyası.

-fpic
Aşağıdaki durumlarda, paylaşılan bir kitaplıkta kullanıma uygun konumdan bağımsız kod (PIC) oluşturun.
hedef makine için desteklenir. Bu kod, tüm sabit adreslere bir
küresel ofset tablosu (GOT). Dinamik yükleyici, aşağıdaki durumlarda GOT girişlerini çözer.
program başlar (dinamik yükleyici GCC'nin bir parçası değildir; işletim sisteminin bir parçasıdır)
sistem). Bağlantılı yürütülebilir dosyanın GOT boyutu makineye özel bir maksimum değeri aşarsa
boyutunda, bağlayıcıdan şunu belirten bir hata mesajı alırsınız. -fpic çalışmıyor; içinde
bu durumda, ile yeniden derleyin -fPIC Bunun yerine. (Bu maksimum değerler SPARC'ta 8k ve 32k'dir.
m68k ve RS/6000'de. 386'nın böyle bir sınırı yoktur.)

Konumdan bağımsız kod özel destek gerektirir ve bu nedenle yalnızca
belirli makineler. 386 için GCC, System V için PIC'yi destekler, ancak Sun için desteklemez
386i. IBM RS/6000 için oluşturulan kod her zaman konumdan bağımsızdır.

Bu bayrak ayarlandığında, "__pic__" ve "__PIC__" makroları 1 olarak tanımlanır.

-fPIC
Hedef makine için destekleniyorsa, aşağıdakiler için uygun konumdan bağımsız kod yayınlayın.
dinamik bağlama ve global ofset tablosunun boyutunda herhangi bir sınırlamadan kaçınma. Bu
seçeneği m68k, PowerPC ve SPARC'ta fark yaratır.

Konumdan bağımsız kod özel destek gerektirir ve bu nedenle yalnızca
belirli makineler.

Bu bayrak ayarlandığında, "__pic__" ve "__PIC__" makroları 2 olarak tanımlanır.

-fpie
-fPIE
Bu seçenekler benzer -fpic ve -fPIC, ancak oluşturulan konumdan bağımsız kod
yalnızca yürütülebilir dosyalara bağlanabilir. Genellikle bu seçenekler şu durumlarda kullanılır: -turta GCC
seçeneği bağlantı sırasında kullanılacaktır.

-fpie ve -fPIE her ikisi de "__pie__" ve "__PIE__" makrolarını tanımlar. Makroların sahip olduğu
için değer 1 -fpie Ve için 2 -fPIE.

-fno-atlama-tabloları
Daha verimli olacağı yerlerde bile switch ifadeleri için atlama tabloları kullanmayın
diğer kod oluşturma stratejilerinden daha fazla. Bu seçenek aşağıdakilerle birlikte kullanılır:
-fpic or -fPIC dinamik bir bağlayıcının parçasını oluşturan ve yapamayan kod oluşturmak için
bir atlama tablosunun adresini referans alın. Bazı hedeflerde, atlama tabloları için bir
GOT ve bu seçeneğe gerek yok.

-sabitlenmiş-reg
adlı kaydı tedavi et reg sabit kayıt olarak; oluşturulan kod asla başvurmamalıdır
(belki bir yığın işaretçisi, çerçeve işaretçisi veya başka bir sabit rol dışında).

reg bir kaydın adı olmalıdır. Kabul edilen kayıt adları makineye özeldir
ve makine açıklama makro dosyasındaki "REGISTER_NAMES" makrosunda tanımlanır.

Bu bayrağın negatif bir formu yoktur, çünkü üç yönlü bir seçim belirtir.

-fcall-kullanılmış-reg
adlı kaydı tedavi et reg işlev tarafından engellenen tahsis edilebilir bir kayıt olarak
aramalar. Bir bölgede yaşamayan geçiciler veya değişkenler için tahsis edilebilir.
Arama. Bu şekilde derlenen işlevler kaydı kaydetmez ve geri yüklemez reg.

Bu bayrağı çerçeve işaretçisi veya yığın işaretçisi ile kullanmak bir hatadır. Bunun kullanımı
makinenin yürütülmesinde sabit yaygın rollere sahip diğer kayıtlar için bayrak
model feci sonuçlar doğuracaktır.

Bu bayrağın negatif bir formu yoktur, çünkü üç yönlü bir seçim belirtir.

-fcall-kaydedildi-reg
adlı kaydı tedavi et reg işlevler tarafından kaydedilen tahsis edilebilir bir kayıt olarak. Olabilir
bir çağrı boyunca yaşayan geçiciler veya değişkenler için bile tahsis edilmiştir. Fonksiyonlar
bu şekilde derlenmiş, kaydı kaydedecek ve geri yükleyecektir reg eğer kullanırlarsa.

Bu bayrağı çerçeve işaretçisi veya yığın işaretçisi ile kullanmak bir hatadır. Bunun kullanımı
makinenin yürütülmesinde sabit yaygın rollere sahip diğer kayıtlar için bayrak
model feci sonuçlar doğuracaktır.

Bu bayrağın bir kayıt için kullanılmasından farklı bir felaket türü ortaya çıkacaktır.
hangi fonksiyon değerleri döndürülebilir.

Bu bayrağın negatif bir formu yoktur, çünkü üç yönlü bir seçim belirtir.

-fpack-yapısı[=n]
Belirtilen bir değer olmadan, tüm yapı elemanlarını deliksiz olarak paketleyin. Zaman
değer belirtilir (ikinin küçük bir kuvveti olmalıdır), paket yapı elemanları
maksimum hizalamayı temsil eden bu değere göre (yani,
bundan daha büyük varsayılan hizalama gereksinimleri, potansiyel olarak hizalanmamış olarak çıkacaktır
bir sonraki montaj yerinde.

Uyarı: the -fpack-yapı anahtar, GCC'nin ikili olmayan kod oluşturmasına neden olur
bu anahtar olmadan oluşturulan kodla uyumludur. Ek olarak, kodu yapar
standart altı. Varsayılan olmayan bir uygulama ikili arabirimine uymak için kullanın.

-enstrüman-fonksiyonları
Fonksiyonlara giriş ve çıkış için enstrümantasyon çağrıları oluşturun. fonksiyondan hemen sonra
giriş ve işlev çıkışından hemen önce, aşağıdaki profil oluşturma işlevleri çağrılır
geçerli işlevin adresi ve çağrı sitesi ile. (Bazı platformlarda,
"__builtin_return_address" mevcut işlevin ötesinde çalışmıyor, bu nedenle çağrı sitesi
aksi takdirde profil oluşturma işlevleri için bilgi mevcut olmayabilir.)

geçersiz __cyg_profile_func_enter (geçersiz *this_fn,
geçersiz *call_site);
geçersiz __cyg_profile_func_exit (geçersiz *this_fn,
geçersiz *call_site);

İlk argüman, geçerli işlevin başlangıcının adresidir.
tam olarak sembol tablosuna baktı.

Bu enstrümantasyon, diğer işlevlerde satır içi genişletilmiş işlevler için de yapılır.
Profil oluşturma çağrıları, kavramsal olarak satır içi işlevin nereye girildiğini gösterecektir.
ve çıkıldı. Bu, bu tür işlevlerin adreslenebilir sürümlerinin mevcut olması gerektiği anlamına gelir.
Bir işlevin tüm kullanımlarınız satır içi olarak genişletilirse, bu ek bir işlev anlamına gelebilir.
kod boyutunun genişletilmesi. Eğer kullanırsan stajyer doktor inline C kodunuzda, adreslenebilir bir
bu tür işlevlerin sürümü sağlanmalıdır. (Normalde durum böyledir ama
Şanslıysanız ve optimize edici her zaman satır içi işlevleri genişletirse,
statik kopyalar sağlamadan kurtuldu.)

Bir işleve "no_instrument_function" niteliği verilebilir, bu durumda bu
enstrümantasyon yapılmayacaktır. Bu, örneğin profil oluşturma için kullanılabilir.
yukarıda listelenen işlevler, yüksek öncelikli kesme rutinleri ve hangi işlevlerden
profil oluşturma işlevleri güvenli bir şekilde çağrılamaz (eğer
profil oluşturma rutinleri çıktı üretir veya bellek ayırır).

-finstrument-fonksiyonlar-hariç tutma-dosya listesi=dosya,dosya, ...
Enstrümantasyondan hariç tutulan işlevlerin listesini ayarlayın (açıklamaya bakın)
"-finstrument-fonksiyonları"). Bir işlev tanımını içeren dosya eşleşirse
bunlardan biriyle dosya, o zaman bu işlev aletli değildir. maç yapılır
alt dizeler: eğer dosya parametre dosya adının bir alt dizisidir,
maç ol.

Örneğin:

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

yol adları "/bits/stl" içeren dosyalarda tanımlanan tüm satır içi işlevleri hariç tutar
veya "dahil/sys".

Herhangi bir nedenle, ',' harfini aşağıdakilerden birine eklemek isterseniz, sym, yazı yazmak ','. İçin
örneğin, "-finstrument-functions-exclude-file-list=',,tmp'" (tek alıntıya dikkat edin
seçeneği çevreleyen).

-finstrument-fonksiyonları-hariç tutma-fonksiyonu-listesi=sym,sym, ...
Bu, "-finstrument-functions-exclude-file-list"e benzer, ancak bu seçenek
enstrümantasyondan hariç tutulacak fonksiyon adlarının listesi. işlev adı
eşleştirilmesi, "vektör" gibi kullanıcı tarafından görülebilen adıdır. falan(sabit vektör &)",
dahili karışık ad değil (örneğin, "_Z4blahRSt6vectorIiSaIiEE"). maç bitti
alt dizelerde: eğer sym parametre, işlev adının bir alt dizesidir,
maç olarak kabul edilir. C99 ve C++ genişletilmiş tanımlayıcıları için işlev adı
evrensel karakter adları kullanılmadan UTF-8'de verilmelidir.

-fstack-kontrol
Yığın sınırlarının ötesine geçmediğinizi doğrulamak için kod oluşturun. Sen
birden çok iş parçacığına sahip bir ortamda çalışıyorsanız bu bayrağı belirtmelisiniz,
ancak yığından beri tek iş parçacıklı bir ortamda nadiren belirtmeniz gerekir
yalnızca bir yığın varsa, taşma hemen hemen tüm sistemlerde otomatik olarak algılanır.

Bu anahtarın aslında kontrolün yapılmasına neden olmadığına dikkat edin; işletim
sistem veya dil çalışma zamanı bunu yapmalıdır. Anahtar, kod üretilmesine neden olur
yığının uzatıldığını görmelerini sağlayın.

Ek olarak bir dize parametresi belirleyebilirsiniz: "no" kontrol yok anlamına gelir, "jenerik"
eski tarz kontrol kullanımını zorlamak anlamına gelir, "özel" en iyi kontrolü kullanmak anlamına gelir
yöntem ve çıplak eşdeğerdir -fstack-kontrol.

Eski tarz kontrol, belirli bir hedef desteği gerektirmeyen genel bir mekanizmadır.
derleyici ancak aşağıdaki dezavantajlarla birlikte gelir:

1. Büyük nesneler için değiştirilmiş tahsis stratejisi: her zaman tahsis edilecektir
boyutları sabit bir eşiği aşarsa dinamik olarak.

2. Statik fonksiyon çerçevesinin boyutundaki sabit sınır: tepesinde bir
belirli bir işlev, yığın denetimi güvenilir değildir ve sistem tarafından bir uyarı verilir.
derleyici.

3. Verimsizlik: hem değiştirilmiş tahsis stratejisi hem de genel
uygulanması, kodun performansları engellenir.

Eski tarz yığın denetiminin aynı zamanda "belirli" için geri dönüş yöntemi olduğunu unutmayın.
derleyiciye hedef desteği eklendi.

-fstack-limit-kayıt=reg
-fstack-limit-sembol=sym
-fno-yığın limiti
Yığının belirli bir değerin ötesine geçmemesini sağlamak için kod oluşturun.
bir kaydın değeri veya bir sembolün adresi. Yığın ötesinde büyürse
değer, bir sinyal yükseltilir. Çoğu hedef için sinyal, hedeften önce yükseltilir.
yığın sınırı aşar, bu nedenle sinyali almadan sinyali yakalamak mümkündür.
özel önlemler.

Örneğin, yığın mutlak adreste başlarsa 0x80000000 ve aşağı doğru büyür,
bayrakları kullanabilirsin -fstack-limit-symbol=__stack_limit ve
-Wl,--defsym,__stack_limit=0x7ffe0000 128 KB yığın sınırını zorlamak için. Bunu not et
bu sadece GNU linker ile çalışabilir.

-fsplit-yığın
Yığını taşmadan önce otomatik olarak bölmek için kod oluşturun. Sonuç
program, yalnızca program yapamıyorsa taşabilen bitişik olmayan bir yığına sahiptir.
daha fazla bellek ayırın. Bu, en çok iş parçacıklı programları çalıştırırken kullanışlıdır, çünkü
her bir iş parçacığı için kullanılacak iyi bir yığın boyutunu hesaplamak artık gerekli değildir. Bu
şu anda yalnızca GNU/Linux çalıştıran i386 ve x86_64 arka uçları için uygulanmaktadır.

Kod ile derlendiğinde -fsplit-yığın olmadan derlenmiş kodu çağırır -fsplit-yığın, Orada
ikinci kodun çalışması için fazla yığın alanı olmayabilir. hepsini derlerseniz
kütüphane kodu da dahil olmak üzere kod, -fsplit-yığın bir seçenek değilse, bağlayıcı
bu çağrıları düzeltin, böylece kod derlenmeden -fsplit-yığın her zaman büyük
yığın. Bunun için destek, GNU binutils sürümündeki altın bağlayıcıda uygulanmaktadır.
2.21 ve sonrası.

-geçen-alt çizgi
Bu seçenek ve karşılığı, -fno-önde gelen-alt çizgi, C yolunu zorla değiştir
semboller nesne dosyasında temsil edilir. Bir kullanım, eski ile bağlantı kurmaya yardımcı olmaktır
montaj kodu.

Uyarı: the -geçen-alt çizgi anahtarı, GCC'nin olmayan kod oluşturmasına neden olur
bu anahtar olmadan oluşturulan kodla ikili uyumlu. Bir
varsayılan olmayan uygulama ikili arabirimi. Tüm hedefler tam destek sağlamaz
bu anahtar için.

-ftls-modeli=model
Kullanılacak iş parçacığı yerel depolama modelini değiştirin. NS model argüman şunlardan biri olmalı
"global-dinamik", "yerel-dinamik", "ilk-yürütme" veya "yerel-yürütme".

olmadan varsayılan -fpic "ilk-yürütme" dir; ile birlikte -fpic varsayılan
"küresel-dinamik".

-fgörünürlük=varsayılan|dahili|gizli|korumalı
Varsayılan ELF görüntü sembolü görünürlüğünü belirtilen seçeneğe ayarlayın --- tüm semboller
kod içinde geçersiz kılınmadıkça bununla işaretlenmelidir. Bu özelliği kullanmak çok
paylaşılan nesne kitaplıklarının bağlantı ve yükleme sürelerini önemli ölçüde iyileştirin, daha fazlasını üretin
optimize edilmiş kod, mükemmele yakın API dışa aktarımı sağlar ve sembol çakışmalarını önler. Bu
şiddetle bunu dağıttığınız tüm paylaşılan nesnelerde kullanmanız önerilir.

Adlandırmaya rağmen, "varsayılan" her zaman genel anlamına gelir; yani, bağlantı kurulabilir
paylaşılan nesnenin dışından karşı. "korumalı" ve "dahili" oldukça işe yaramaz
gerçek dünya kullanımında, bu nedenle yaygın olarak kullanılan diğer tek seçenek "gizli" olacaktır. NS
varsayılan ise -görünürlük belirtilmemiş "varsayılan", yani her sembolü yap
public --- bu, GCC'nin önceki sürümleriyle aynı davranışa neden olur.

ELF sembollerinin doğru değerlere sahip olmasını sağlamanın sunduğu faydaların iyi bir açıklaması
görünürlük, Ulrich Drepper tarafından yazılan "Paylaşılan Kitaplıklar Nasıl Yazılır" (ki bu
bulunanhttp://people.redhat.com/~drepper/>>)---ancak üstün bir çözüm yapılmış
bu seçenek ile mümkün olan şeyleri gizli olarak işaretlemek varsayılan olduğunda genel yapmaktır.
varsayılan gizli ve her şeyi herkese açık olarak işaretleyin. Bu, Windows'ta DLL'lerle ilgili normdur ve
ile -fvisibility=gizli ve "__attribute__ ((visibility("varsayılan")))" yerine
"__declspec(dllexport)" ile aynı sözdizimi ile neredeyse aynı anlambilimi elde edersiniz.
Bu, platformlar arası projelerle çalışanlar için büyük bir nimet.

Mevcut koda görünürlük desteği ekleyenler için şunları bulabilirsiniz: #pragma GCC
görünürlük kullanım. Bu, ayarlamak istediğiniz bildirimleri ekleyerek sizin tarafınızdan çalışır.
ile görünürlük (örneğin) #pragma GCC görünürlük itmek(gizli) ve #pragma GCC
görünürlük pop. Sembol görünürlüğünün görülmesi gerektiğini unutmayın as Bölüm of the
API arayüzey sözleşme ve bu nedenle tüm yeni kodlar her zaman görünürlüğü belirtmelidir.
varsayılan değil; yani, yalnızca yerel DSO içinde kullanım için bildirimler her zaman
PLT dolaylı yüklerinden kaçınmak için açıkça gizli olarak işaretlenmelidir --- bunu yapmak
çok net ayrıca kodun okunabilirliğine ve kendi kendine belgelenmesine yardımcı olur. Bunu not et
ISO C++ spesifikasyon gereksinimleri nedeniyle, operatör yeni ve operatör silme
her zaman varsayılan görünürlükte olun.

Projenizin dışından gelen başlıkların, özellikle sistem başlıklarının ve
kullandığınız diğer herhangi bir kitaplıktan gelen başlıklar ile derlenmeyi beklemeyebilir
varsayılan dışındaki görünürlük. Açıkça söylemeniz gerekebilir #pragma GCC
görünürlük it (varsayılan) bu tür başlıkları eklemeden önce.

stajyer doktor beyannameler etkilenmez -görünürlük, bu yüzden çok fazla kod olabilir
ile yeniden derlenmiş -fvisibility=gizli hiçbir değişiklik olmadan. Ancak bunun anlamı şudur:
çağrıları stajyer doktor açık bir görünürlüğü olmayan işlevler PLT'yi kullanır, bu nedenle daha
kullanımı etkili __bağlanmak ((görünürlük)) ve / veya #pragma GCC görünürlük anlatmak
hangi derleyici stajyer doktor bildirimler gizli olarak ele alınmalıdır.

Bunu not et -görünürlük C++ belirsiz bağlantı varlıklarını etkiler. Bunun anlamı,
Örneğin, DSO'lar arasında atılacak bir istisna sınıfı açıkça belirtilmelidir.
varsayılan görünürlük ile işaretlenmiştir, böylece type_info düğümler arasında birleşecek
DSO'lar.

Bu tekniklere, faydalarına ve nasıl kullanılacağına ilişkin genel bir bakış şu adrestedir:
<http://gcc.gnu.org/wiki/Visibility>.

-fstrict-uçucu-bit alanları
Bu seçenek, geçici bit alanlarına (veya diğer yapılara) erişim varsa kullanılmalıdır.
alanlar, derleyici genellikle bu türleri zaten kabul etse de) tek bir
mümkünse doğal bir hizalamaya hizalanmış alan türünün genişliğine erişim.
Örneğin, bellek eşlemeli çevresel kayıtlara sahip hedefler, bu tür tüm işlemleri gerektirebilir.
16 bit genişliğe erişim; bu bayrakla kullanıcı tüm çevresel bitleri bildirebilir-
GCC'yi zorlamak için "işaretsiz kısa" olarak alanlar (kısa olduğu varsayılarak bu hedeflerde 16 bit)
belki daha verimli bir 16-bit erişim yerine 32-bit erişimleri kullanmak.

Bu seçenek devre dışı bırakılırsa, derleyici en verimli talimatı kullanacaktır. İçinde
önceki örnekte, bu 32 bitlik bir yükleme talimatı olabilir, ancak bu
bit alanının herhangi bir bölümünü içermeyen veya bellek eşlemeli erişim baytları
güncellenen ile ilgisi olmayan kayıtlar.

Hedef katı bir hizalama gerektiriyorsa ve alan türünü onurlandırmak için
bu hizalamayı ihlal eden bir uyarı verilir. Alanın "paketlenmiş" özelliği varsa,
erişim, alan türü dikkate alınmadan yapılır. alan yoksa
"paketlenmiş" özniteliği, erişim alan türü dikkate alınarak yapılır. Her iki durumda da GCC
kullanıcının hedef donanım hakkında bilmediği bir şey bildiğini varsayar.

Bu seçeneğin varsayılan değeri, uygulama ikili arabirimi tarafından belirlenir.
hedef işlemci

ÇEVRE


Bu bölüm, GCC'nin nasıl çalıştığını etkileyen birkaç ortam değişkenini açıklar. Biraz
bunların çoğu, çeşitli türleri ararken kullanılacak dizinleri veya önekleri belirleyerek çalışır.
dosya sayısı. Bazıları derleme ortamının diğer yönlerini belirtmek için kullanılır.

gibi seçenekleri kullanarak aranacak yerleri de belirtebileceğinizi unutmayın. -B, -I ve -L.
Bunlar, ortam değişkenleri kullanılarak belirtilen yerlere göre önceliklidir, bu da sırayla
GCC yapılandırması tarafından belirtilenlere göre önceliklidir.

DİL
LC_CTYPE
LC_MESSAGES
LC_ALL
Bu ortam değişkenleri, GCC'nin yerelleştirme bilgilerini kullanma şeklini kontrol eder.
Bu, GCC'nin farklı ulusal sözleşmelerle çalışmasına izin verir. GCC yerel ayarı inceler
kategoriler LC_CTYPE ve LC_MESSAGES bunu yapmak için yapılandırılmışsa. Bu yerel ayarlar
kategoriler, kurulumunuz tarafından desteklenen herhangi bir değere ayarlanabilir. Tipik bir değer
en_GB.UTF-8 UTF-8 ile kodlanmış Birleşik Krallık'taki İngilizce için.

The LC_CTYPE ortam değişkeni karakter sınıflandırmasını belirtir. GCC bunu kullanır
bir dizideki karakter sınırlarını belirlemek; bu bazı çok baytlar için gereklidir
aksi halde yorumlanacak olan alıntı ve kaçış karakterlerini içeren kodlamalar
bir dize sonu veya kaçış olarak.

The LC_MESSAGES ortam değişkeni, tanılamada kullanılacak dili belirtir
mesajları.

Eğer LC_ALL ortam değişkeni ayarlandığında, değerini geçersiz kılar LC_CTYPE ve
LC_MESSAGES; aksi takdirde, LC_CTYPE ve LC_MESSAGES varsayılan değere DİL
Çevre değişkeni. Bu değişkenlerden hiçbiri ayarlanmazsa, GCC varsayılan olarak geleneksel
C İngilizce davranışı.

TMPDIR
If TMPDIR ayarlanırsa, geçici dosyalar için kullanılacak dizini belirtir. GCC kullanır
olarak kullanılacak olan bir derleme aşamasının çıktısını tutan geçici dosyalar
bir sonraki aşamaya girdi: örneğin, önişlemcinin çıktısı, yani
derleyiciye uygun girdi.

GCC_COMPARE_DEBUG
ayar GCC_COMPARE_DEBUG geçmekle neredeyse eşdeğerdir -fcompare-hata ayıklama için
derleyici sürücüsü. Daha fazla ayrıntı için bu seçeneğin belgelerine bakın.

GCC_EXEC_PREFIX
If GCC_EXEC_PREFIX ayarlanırsa, adlarında kullanılacak bir önek belirtir.
derleyici tarafından yürütülen alt programlar. Bu önek birleştirildiğinde eğik çizgi eklenmez
bir alt programın adıyla, ancak aşağıdaki durumlarda eğik çizgi ile biten bir önek belirtebilirsiniz.
diliyorum.

If GCC_EXEC_PREFIX ayarlanmadıysa, GCC uygun bir önek bulmaya çalışacaktır.
çağrıldığı yol adına göre kullanın.

GCC, belirtilen öneki kullanarak alt programı bulamazsa,
alt program için olağan yerler.

varsayılan değeri GCC_EXEC_PREFIX is önek/lib/gcc/ nerede önek önek
yüklü derleyici. Çoğu durumda önek çalıştırdığınızda "ön ek" değeridir
yapılandırmak komut.

ile belirtilen diğer önekler -B bu önek üzerinde öncelik alır.

Bu önek aynı zamanda aşağıdaki gibi dosyaları bulmak için de kullanılır. crt0.o bağlamak için kullanılanlardır.

Ayrıca önek, aranacak dizinleri bulmada alışılmadık bir şekilde kullanılır.
başlık dosyaları için. Adı normalde başlayan standart dizinlerin her biri için
ile /usr/yerel/lib/gcc (daha doğrusu, değeri ile GCC_INCLUDE_DIR), GCC denemeleri
alternatif bir dizin oluşturmak için bu başlangıcı belirtilen önekle değiştirmek
isim. Böylece, -bfoo/, GCC arayacak foo/çubuk normalde nerede aranır
/usr/yerel/lib/bar. Önce bu alternatif dizinler aranır; standart
dizinler sonra gelir. Standart bir dizin yapılandırılan ile başlarsa önek sonra
değerini önek tarafından değiştirilir GCC_EXEC_PREFIX başlık dosyalarını ararken.

Derleyici_PATH
Değeri Derleyici_PATH iki nokta üst üste ayrılmış bir dizin listesidir, tıpkı PATH.
GCC, alt programları ararken bu şekilde belirtilen dizinleri dener, eğer yapamazsa
kullanarak alt programları bulun GCC_EXEC_PREFIX.

KÜTÜPHANE_PATH
Değeri KÜTÜPHANE_PATH iki nokta üst üste ayrılmış bir dizin listesidir, tıpkı PATH.
Yerel bir derleyici olarak yapılandırıldığında, GCC, aşağıdaki durumlarda belirtilen dizinleri dener:
kullanarak bulamazsa, özel bağlayıcı dosyaları aramak GCC_EXEC_PREFIX.
GCC kullanarak bağlama, sıradan kitaplıkları ararken de bu dizinleri kullanır.
için -l seçeneği (ancak ile belirtilen dizinler -L önce gel).

DİL
Bu değişken, yerel ayar bilgilerini derleyiciye iletmek için kullanılır. Bunun bir yolu
Bu bilgi karakter kullanıldığında kullanılacak karakter setini belirlemek içindir.
değişmez değerler, dize değişmezleri ve yorumlar C ve C++'da ayrıştırılır. derleyici olduğunda
çok baytlı karakterlere izin verecek şekilde yapılandırılmış, aşağıdaki değerler DİL vardır
tanınan:

C-JIS
JIS karakterlerini tanır.

C-SJIS
SJIS karakterlerini tanır.

C-EUCJP
EUCJP karakterlerini tanır.

If DİL tanımlı değil veya başka bir değeri varsa, derleyici kullanacak
mblen ve mbtowc, varsayılan yerel ayar tarafından tanımlandığı şekliyle çok baytı tanımak ve çevirmek için
karakterler.

Bazı ek ortam değişkenleri, önişlemcinin davranışını etkiler.

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
Her değişkenin değeri, özel bir karakterle ayrılmış dizinlerin bir listesidir.
sevmek PATH, başlık dosyalarının aranacağı yer. Özel karakter,
"PATH_SEPARATOR", hedefe bağlıdır ve GCC oluşturma zamanında belirlenir. Microsoft için
Windows tabanlı hedefler bir noktalı virgüldür ve neredeyse tüm diğer hedefler için bir
kolon.

CPATH ile belirtilmiş gibi aranacak dizinlerin bir listesini belirtir. -I, fakat
ile verilen herhangi bir yoldan sonra -I komut satırındaki seçenekler. Bu ortam değişkeni
hangi dilin önceden işlendiğine bakılmaksızın kullanılır.

Kalan ortam değişkenleri yalnızca belirli bir önişleme yapılırken geçerlidir.
belirtilen dil. Her biri, sanki aranacak dizinlerin bir listesini belirtir.
ile belirtilen -isistem, ancak verilen herhangi bir yoldan sonra -isistem seçenekleri
Komut satırı.

Tüm bu değişkenlerde, boş bir öğe derleyiciye mevcut değerini aramasını söyler.
çalışma dizini. Boş öğeler bir yolun başında veya sonunda görünebilir. İçin
örneğin, eğer değeri CPATH ile aynı etkiye sahip olan ":/özel/include"
-BEN. -I/özel/dahil.

DEPENDENCECIES_OUTPUT
Bu değişken ayarlanırsa, değeri, Make tabanlı için bağımlılıkların nasıl çıktı alınacağını belirtir.
derleyici tarafından işlenen sistem dışı başlık dosyalarında. Sistem başlık dosyaları
bağımlılık çıktısında yoksayılır.

Değeri DEPENDENCECIES_OUTPUT sadece bir dosya adı olabilir, bu durumda Yap kuralları
kaynak dosya adından hedef adını tahmin ederek o dosyaya yazılır. Ya da
değer forma sahip olabilir dosya hedef, bu durumda kurallar dosyaya yazılır dosya
kullanma hedef hedef adı olarak

Başka bir deyişle, bu ortam değişkeni seçenekleri birleştirmeye eşdeğerdir. -MM
ve -MF, isteğe bağlı -MT de geçiş yapın.

SUNPRO_DEPENDERCIES
Bu değişken aynı DEPENDENCECIES_OUTPUT (yukarıya bakın), bu sistem hariç
başlık dosyaları göz ardı edilmez, bu nedenle -M ziyade -MM. Bununla birlikte,
ana girdi dosyasına bağımlılık atlanır.

onworks.net hizmetlerini kullanarak g++-4.7'u çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

  • 1
    türkdevops
    türkdevops
    TurkDevOps a ?k kaynak yaz?l?m
    geli?tirici topluluklar? DevTurks-Ekibi
    Tarafından desteklenmektedir..
    Özellikler: https://github.com/turkdevopshttps://turkdevops.g...
    turkdevops'u indir
  • 2
    assammdf
    assammdf
    *asammdf* hızlı bir Python ayrıştırıcısıdır ve
    ASAM editörü (Association for
    Otomasyonun Standardizasyonu ve
    Ölçüm Sistemleri) MDF / MF4
    (Ölçüm Veri Formatı...
    asammdf'i indir
  • 3
    LAME (Lame Aint bir MP3 Encoder)
    LAME (Lame Aint bir MP3 Encoder)
    LAME, kullanılacak bir eğitim aracıdır.
    MP3 kodlamayı öğrenmek için. bu
    LAME projesinin amacı geliştirmektir
    psiko akustik, kalite ve hız
    Milletvekili...
    LAME'yi İndirin (Lame MP3 Kodlayıcı Değildir)
  • 4
    wxPython
    wxPython
    sağlayan bir dizi Python genişletme modülü
    platformlar arası GUI sınıflarını sarın
    wxWidgets.. Kitle: Geliştiriciler. kullanıcı
    arayüz: X Pencere Sistemi (X11), Win32 ...
    wxPython'u indirin
  • 5
    paket dosya yöneticisi
    paket dosya yöneticisi
    Bu, Total War paketi dosya yöneticisidir.
    proje, sürüm 1.7'den başlayarak. A
    Warscape'e kısa bir giriş
    modlama: ...
    packfilemanager'ı indirin
  • 6
    IPerf2
    IPerf2
    Ölçmek için bir ağ trafiği aracı
    Metriklerle TCP ve UDP performansı
    hem verim hem de gecikme süresi civarında. NS
    hedefler aktif bir şekilde sürdürmeyi içerir
    iperf kodu...
    IPerf2'yi indirin
  • Daha fazla »

Linux komutları

Ad