ഇംഗ്ലീഷ്ഫ്രഞ്ച്സ്പാനിഷ്

Ad


OnWorks ഫെവിക്കോൺ

mipsel-linux-gnu-g++-5 - ക്ലൗഡിൽ ഓൺലൈനിൽ

Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിവയിലൂടെ OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ mipsel-linux-gnu-g++-5 പ്രവർത്തിപ്പിക്കുക

Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാവുന്ന mipsel-linux-gnu-g++-5 എന്ന കമാൻഡാണിത്.

പട്ടിക:

NAME


gcc - GNU പ്രൊജക്റ്റ് C, C++ കമ്പൈലർ

സിനോപ്സിസ്


gcc [-c|-S|-E] [-std=സാധാരണ]
[-g] [-പേജ്] [-Oലെവൽ]
[-Wമുന്നറിയിപ്പ്...] [-Wpedantic]
[-Iമുതലാളി...] [-Lമുതലാളി...]
[-Dമാക്രോ[=defn]...] [-Uമാക്രോ]
[-fഓപ്ഷൻ...] [-mമെഷീൻ-ഓപ്ഷൻ...]
[-o ഔട്ട്ഫിൽ] [@ഫയല്] infile...

ഏറ്റവും ഉപയോഗപ്രദമായ ഓപ്ഷനുകൾ മാത്രം ഇവിടെ പട്ടികപ്പെടുത്തിയിരിക്കുന്നു; ബാക്കിയുള്ളവയ്ക്കായി താഴെ കാണുക. g ++ സമ്മതിക്കുന്നു
മിക്കവാറും സമാന ഓപ്ഷനുകൾ ജിസി.

വിവരണം


നിങ്ങൾ GCC അഭ്യർത്ഥിക്കുമ്പോൾ, അത് സാധാരണയായി പ്രീപ്രോസസ്സിംഗ്, കംപൈലേഷൻ, അസംബ്ലി, ലിങ്കിംഗ് എന്നിവ ചെയ്യുന്നു.
ഒരു ഇന്റർമീഡിയറ്റ് ഘട്ടത്തിൽ ഈ പ്രക്രിയ നിർത്താൻ "മൊത്തത്തിലുള്ള ഓപ്ഷനുകൾ" നിങ്ങളെ അനുവദിക്കുന്നു. വേണ്ടി
ഉദാഹരണത്തിന്, ദി -c ലിങ്കർ പ്രവർത്തിപ്പിക്കരുതെന്ന് ഓപ്ഷൻ പറയുന്നു. അപ്പോൾ ഔട്ട്പുട്ട് ഒബ്ജക്റ്റ് ഉൾക്കൊള്ളുന്നു
അസംബ്ലർ മുഖേനയുള്ള ഫയലുകൾ ഔട്ട്പുട്ട്.

മറ്റ് ഓപ്ഷനുകൾ പ്രോസസ്സിംഗിന്റെ ഒരു ഘട്ടത്തിലേക്ക് കടന്നുപോകുന്നു. ചില ഓപ്ഷനുകൾ നിയന്ത്രിക്കുന്നു
പ്രീപ്രൊസസ്സറും മറ്റുള്ളവ കംപൈലറും തന്നെ. മറ്റ് ഓപ്ഷനുകൾ അസംബ്ലറെയും നിയന്ത്രിക്കുന്നു
ലിങ്കർ; ഇവയിൽ മിക്കതും ഇവിടെ രേഖപ്പെടുത്തിയിട്ടില്ല, കാരണം നിങ്ങൾ അവയിലേതെങ്കിലും ഉപയോഗിക്കേണ്ടതില്ല.

ജിസിസിയിൽ നിങ്ങൾക്ക് ഉപയോഗിക്കാനാകുന്ന മിക്ക കമാൻഡ്-ലൈൻ ഓപ്ഷനുകളും സി പ്രോഗ്രാമുകൾക്ക് ഉപയോഗപ്രദമാണ്; എപ്പോൾ
ഒരു ഓപ്ഷൻ മറ്റൊരു ഭാഷയിൽ മാത്രമേ ഉപയോഗപ്രദമാകൂ (സാധാരണയായി C++), വിശദീകരണം അങ്ങനെ പറയുന്നു
വ്യക്തമായി. ഒരു പ്രത്യേക ഓപ്ഷന്റെ വിവരണം ഒരു ഉറവിടം പരാമർശിക്കുന്നില്ലെങ്കിൽ
ഭാഷ, പിന്തുണയ്ക്കുന്ന എല്ലാ ഭാഷകളിലും നിങ്ങൾക്ക് ആ ഓപ്ഷൻ ഉപയോഗിക്കാം.

ദി ജിസി പ്രോഗ്രാം ഓപ്ഷനുകളും ഫയൽ നാമങ്ങളും ഓപ്പറണ്ടുകളായി സ്വീകരിക്കുന്നു. നിരവധി ഓപ്ഷനുകൾക്ക് ഒന്നിലധികം ഉണ്ട്
അക്ഷരങ്ങളുടെ പേരുകൾ; അതിനാൽ ഒന്നിലധികം ഒറ്റ-അക്ഷര ഓപ്ഷനുകൾ ഉണ്ടാകാം അല്ല ഗ്രൂപ്പുചെയ്യുക: -ഡിവി വളരെ ആണ്
എന്നതിൽ നിന്ന് വ്യത്യസ്തമാണ് -d -v.

നിങ്ങൾക്ക് ഓപ്ഷനുകളും മറ്റ് ആർഗ്യുമെന്റുകളും മിക്സ് ചെയ്യാം. മിക്കവാറും, നിങ്ങൾ ഉപയോഗിക്കുന്ന ഓർഡർ അല്ല
കാര്യം. നിങ്ങൾ ഒരേ തരത്തിലുള്ള നിരവധി ഓപ്ഷനുകൾ ഉപയോഗിക്കുമ്പോൾ ഓർഡർ പ്രധാനമാണ്; ഉദാഹരണത്തിന്, എങ്കിൽ
നിങ്ങൾ വ്യക്തമാക്കുക -L ഒന്നിലധികം തവണ, നിർദ്ദേശിച്ച ക്രമത്തിൽ ഡയറക്ടറികൾ തിരയുന്നു. കൂടാതെ,
യുടെ സ്ഥാനം -l ഓപ്ഷൻ പ്രധാനമാണ്.

പല ഓപ്ഷനുകൾക്കും നീളമുള്ള പേരുകൾ ആരംഭിക്കുന്നു -f അല്ലെങ്കിൽ കൂടെ -W---ഉദാഹരണത്തിന്,
-fmove-loop-invariants, - ഫോർമാറ്റ് ഇത്യാദി. ഇവയിൽ മിക്കതും പോസിറ്റീവും നെഗറ്റീവും ഉള്ളവയാണ്
രൂപങ്ങൾ; നെഗറ്റീവ് ഫോം -foo is -fno-foo. ഈ മാനുവൽ ഇവയിലൊന്ന് മാത്രമേ രേഖപ്പെടുത്തൂ
രണ്ട് ഫോമുകൾ, ഏതാണ് സ്ഥിരസ്ഥിതിയല്ല.

ഓപ്ഷനുകൾ


ഓപ്ഷൻ ചുരുക്കം
തരം അനുസരിച്ച് ഗ്രൂപ്പുചെയ്‌ത എല്ലാ ഓപ്ഷനുകളുടെയും സംഗ്രഹം ഇതാ. വിശദീകരണങ്ങൾ താഴെ കൊടുത്തിരിക്കുന്നു
വിഭാഗങ്ങൾ.

മൊത്തത്തിൽ ഓപ്ഷനുകൾ
-c -S -E -o ഫയല് -നോ-കാനോനിക്കൽ-പ്രിഫിക്സുകൾ -പൈപ്പ് -പാസ്-എക്സിറ്റ്-കോഡുകൾ -x ഭാഷ -v
-### --സഹായിക്കൂ[=ക്ലാസ്[...]] --ലക്ഷ്യം-സഹായം --പതിപ്പ് - റാപ്പർ @ഫയല് -fplugin=ഫയല്
-fplugin-arg-പേര്=ആർഗ് -fdump-ada-spec[-മെലിഞ്ഞ] -fada-spec-parent=യൂണിറ്റ്
-fdump-go-spec=ഫയല്

C ഭാഷ ഓപ്ഷനുകൾ
-ആൻസി -std=സാധാരണ -fgnu89-ഇൻലൈൻ -aux-info ഫയലിന്റെ പേര്
-ഫാലോ-പാരാമീറ്ററില്ലാത്ത-വേരിയാഡിക്-ഫംഗ്ഷനുകൾ -fno-asm -fno-builtin -fno-builtin-ഫംഗ്ഷൻ
-ഫോസ്റ്റഡ് -ഫ്രീസ്റ്റാൻഡിംഗ് -ഫോപെനാക്ക് -fopenmp -fopenmp-simd -fms-വിപുലീകരണങ്ങൾ
-fplan9-വിപുലീകരണങ്ങൾ -ട്രിഗ്രാഫ്സ് - പരമ്പരാഗത -പരമ്പരാഗത-സിപിപി -ഫാലോ-സിംഗിൾ-പ്രിസിഷൻ
-fcond-പൊരുത്തക്കേട് -ഫ്ളാക്സ്-വെക്റ്റർ-പരിവർത്തനങ്ങൾ -fsigned-bitfields -fsigned-char
-ഫൺസൈൻഡ്-ബിറ്റ്ഫീൽഡുകൾ -ഫൺസൈൻഡ്-ചാർ

സി ++ ഭാഷ ഓപ്ഷനുകൾ
-fabi-version=n -fno-access-control -fcheck-പുതിയ -fconstexpr-depth=n
-ഫ്രണ്ട്-ഇഞ്ചക്ഷൻ -fno-elide-നിർമ്മാതാക്കൾ -fno-enforce-eh-specs -ഫോർ-സ്കോപ്പ്
-fno-for-scope -fno-gnu-കീവേഡുകൾ -fno-inmplicit-templates
-fno-inmplicit-inline-templates -fno-implement-inlines -fms-വിപുലീകരണങ്ങൾ
-fno-nonansi-builtins -fnthrow-opt -fno-operator-names -fno-optional-diags
-അനുവദനീയം -fno-pretti-ടെംപ്ലേറ്റുകൾ -ഫ്രെപ്പോ -fno-rtti -fsized-deallocation -fstats
-ftemplate-backtrace-limit=n -ftemplate-depth=n -fno-threadsafe-statics
-ഫ്യൂസ്-cxa-atexit -fno-ദുർബലമായ -nostdinc++ -fvisibility-inlines-hidden
-fvtable-verify=[ക്ലാസ്|പ്രീനിറ്റ്|ആരും] -fvtv-എണ്ണം -fvtv-ഡീബഗ് -fvisibility-ms-compat
-ഫെക്‌സ്‌റ്റ്-ന്യൂമെറിക്-ലിറ്ററലുകൾ -വാബി=n -വാബി-ടാഗ് -Wconversion-null -Wctor-dtor-സ്വകാര്യത
-Wdelete-non-virtual-dtor -Wliteral-suffix - ചുരുങ്ങുന്നു -ഒഴികെ -Wnon-virtual-dtor
-ഓർഡർ -Weffc++ -വിസ്ട്രിക്റ്റ്-നൾ-സെന്റിനൽ -Wno-നോൺ-ടെംപ്ലേറ്റ്-സുഹൃത്ത് -വോൾഡ്-സ്റ്റൈൽ-കാസ്റ്റ്
-Woverloaded-വെർച്വൽ -Wno-pmf-പരിവർത്തനങ്ങൾ -വിസൈൻ-പ്രമോ

ലക്ഷ്യം-സി ഒപ്പം ലക്ഷ്യം-C++ ഭാഷ ഓപ്ഷനുകൾ
-fconstant-string-class=ക്ലാസ്-നാമം -fgnu-റൺടൈം -fnext-runtime -fno-nil-recevers
-fobjc-abi-version=n -fobjc-call-cxx-cdtors -fobjc-direct-dispatch -fobjc-ഒഴിവാക്കലുകൾ
-fobjc-gc -fobjc-nilcheck -fobjc-std=objc1 -fno-local-ivars
-fivar-visibility=[പൊതു|സംരക്ഷിച്ചിരിക്കുന്നു|സ്വകാര്യ|പാക്കേജ്] -freplace-objc-classes
-fzero-link -gen-decls -അസൈൻ-ഇന്റർസെപ്റ്റ് -Wno-പ്രോട്ടോക്കോൾ -സെലക്ടർ
-സ്ട്രിക്റ്റ്-സെലക്ടർ-മാച്ച് -Wundeclared-selector

ഭാഷ സ്വതന്ത്ര ഓപ്ഷനുകൾ
-fmessage-length=n -fdiagnostics-show-location=[ഒരിക്കല്|ഓരോ വരിയും]
-fdiagnostics-color=[കാര്|ഒരിക്കലും|എല്ലായിപ്പോഴും] -fno-diagnostics-show-option
-fno-diagnostics-show-caret

മുന്നറിയിപ്പ് ഓപ്ഷനുകൾ
-fsyntax-മാത്രം -fmax-errors=n -Wpedantic -പെഡന്റിക്-പിശകുകൾ -w -വെക്സ്ട്ര - മതിൽ
-വഡ്രസ്സ് -വാഗ്രിഗേറ്റ്-റിട്ടേൺ -വാഗ്രസീവ്-ലൂപ്പ്-ഒപ്റ്റിമൈസേഷനുകൾ -വാറേ-ബൗണ്ടുകൾ
-വാറേ-ബൗണ്ട്സ്=n -Wbool- താരതമ്യം ചെയ്യുക -ആട്രിബ്യൂട്ടുകൾ -Wno-builtin-macro-redefined
-Wc90-c99-compat -Wc99-c11-compat -Wc++-compat -Wc++11-compat -Wc++14-compat
-Wcast-align -Wcast-qual -Wchar-subscripts -Wclobbered - കമന്റ്
- സോപാധിക-പിന്തുണ - പരിവർത്തനം -കവറേജ്-പൊരുത്തക്കേട് -ദിവസം-സമയം
-Wdelete-അപൂർണ്ണം -Wno-cpp -വിനോ-ഒഴിവാക്കപ്പെട്ടു -ഒഴിവാക്കപ്പെട്ട പ്രഖ്യാപനങ്ങൾ
-Wno-designated-init -Wdisabled-optimization -ഒഴിവാക്കിയത്-യോഗ്യതകൾ
-Wno-discorded-array-qualifiers -Wno-div-by-zero -ഡബിൾ-പ്രമോഷൻ - വെമ്പ്റ്റി-ബോഡി
-വേണം-താരതമ്യം ചെയ്യുക -Wno-endif-ലേബലുകൾ -വെറർ -വെറർ=* -Wfatal-പിശകുകൾ -Wfloat-തുല്യം
- ഫോർമാറ്റ് -Wformat=2 -Wno-format-contains-nul -Wno-format-extra-args
-Wformat-നോൺ ലിറ്ററൽ -ഫോർമാറ്റ്-സെക്യൂരിറ്റി -ഫോർമാറ്റ്-ഒപ്പ് -Wformat-y2k
-Wframe-larger-than=ലെൻ -Wno-free-nonheap-object -Wjump- misses-init
-വിഗ്നോർഡ്-യോഗ്യതക്കാർ -Wincompatible-പോയിന്റർ-തരം -വിംപ്ലിസിറ്റ്
-വിംപ്ലിസിറ്റ്-ഫംഗ്ഷൻ-പ്രഖ്യാപനം -വിംപ്ലിസിറ്റ്-ഇന്റ് -വിനിറ്റ്-സ്വയം -വിൻലൈൻ
-Wno-int-പരിവർത്തനം -Wno-int-to-pointer-cast -അസാധുവായ ഓഫ്സെറ്റോഫ് -Winvalid-pch
-Wlarger- than=ലെൻ -Wunsafe-loop-optimizations -ലോജിക്കൽ-ഓപ് -ലോജിക്കൽ-അല്ല-പരാന്തീസിസ്
- നീളമുള്ളത് -Wmain -Wmaybe-uninitialised -Wmemset-transposed-args -Wmissing-braces
-Wmissing-ഫീൽഡ്-ഇനീഷ്യലൈസറുകൾ -Wmissing-include-dirs -Wno-multichar -വന്നൂൾ
-അസാധാരണമാക്കിയ=[ആരും|id|nfc|nfkc]
-വോഡർ -Wno-ഓവർഫ്ലോ -Wopenmp-simd -Woverlength-strings - പായ്ക്ക് ചെയ്തു
-Wpacked-bitfield-compat -Wpadded -Wparentheses -Wpedantic-ms-format
-Wno-pedantic-ms-format -വ്പോയിന്റർ-അരിത്ത് -Wno-pointer-to-int-cast -അപവാദം-വിസമ്മതിക്കുന്നു
-Wno-return-local-addr -റെട്ടേൺ-ടൈപ്പ് -സീക്വൻസ്-പോയിന്റ് - ഷാഡോ -Wno-shadow-ivar
-Wshift-count-negative -Wshift-count-overflow -വിസൈൻ-താരതമ്യം ചെയ്യുക -വിസൈൻ-പരിവർത്തനം
-Wfloat-പരിവർത്തനം -Wsizeof-pointer-memaccess -Wsizeof-array-argument
-Wstack-protector -Wstack-usage=ലെൻ -വിസ്ട്രിക്റ്റ്-അപരനാമം -Wstrict-aliasing=n
-സ്ട്രിക്റ്റ്-ഓവർഫ്ലോ -Wstrict-overflow=n -Wsuggest-attribute=[ശുദ്ധമായ|കൺസ്ട്രക്റ്റർ|മടക്കം ഇല്ല|ഫോർമാറ്റ്]
-അവസാന തരങ്ങൾ നിർദ്ദേശിക്കുക -അവസാന-രീതികൾ നിർദ്ദേശിക്കുക നിർദ്ദേശിക്കുക-അസാധുവാക്കുക
-Wmissing-format-attribute -Wswitch -Wswitch-default -Wswitch-enum -Wswitch-bool
-Wsync-nand -ഡബ്ല്യുസിസ്റ്റം-ഹെഡറുകൾ -വാട്രാംപോളിൻ -Wtrigraphs -ടൈപ്പ്-പരിധികൾ -വുണ്ടെഫ്
-വിനിയോഗം ചെയ്തു -അറിയപ്പെടാത്ത-പ്രാഗ്മകൾ -Wno-pragmas -വുൺസഫിക്സഡ്-ഫ്ലോട്ട്-കോൺസ്റ്റന്റുകൾ
- ഉപയോഗിച്ചത് -Wunused-ഫംഗ്ഷൻ -ഉപയോഗിച്ച ലേബൽ -Wunused-local-typedefs -Wunused-parameter
- ഉപയോഗിക്കാത്ത ഫലം -ഉപയോഗിച്ച മൂല്യം -Wunused-variable -Wunused-but-set-parameter
-Wunused-but-set-variable -ഉപയോഗമില്ലാത്ത-കാസ്റ്റ് -Wvariadic-macros
-Wvector-ഓപ്പറേഷൻ-പ്രകടനം -Wvla -Wvolatile-register-var -Wwrite-strings
-Wzero-as-null-pointer-constant

C ഒപ്പം ലക്ഷ്യം-സി-മാത്രം മുന്നറിയിപ്പ് ഓപ്ഷനുകൾ
-Wbad-function-cast -Wmissing-പ്രഖ്യാപനങ്ങൾ -Wmissing-parameter-type
-Wmissing-പ്രോട്ടോടൈപ്പുകൾ -Wnested-externs -വോൾഡ്-സ്റ്റൈൽ-പ്രഖ്യാപനം -Wold-style-definition
-സ്ട്രിക്റ്റ്-പ്രോട്ടോടൈപ്പുകൾ - പരമ്പരാഗത പരമ്പരാഗത-പരിവർത്തനം
-പ്രസ്താവനയ്ക്ക് ശേഷമുള്ള പ്രസ്താവന - പോയിന്റർ-അടയാളം

ഡീബഗ്ഗിംഗ് ഓപ്ഷനുകൾ
-dഅക്ഷരങ്ങൾ -ഡംപ്‌സ്പെക്‌സ് -ഡമ്പ്മെഷീൻ -ഡംപ്വേർഷൻ -fsanitize=ശൈലി -fsanitize-recover
-fsanitize-recover=ശൈലി -fasan-shadow-offset=അക്കം
-fsanitize-undefined-trap-on-error -fcheck-പോയിന്റർ-ബൗണ്ടുകൾ -fchkp-check-incomplete-type
-fchkp-fist-field-has-own-bounds -fchkp-ഇടുങ്ങിയ പരിധികൾ
-fchkp-ഇടുങ്ങിയത് മുതൽ അകത്തെ-അറേ -fchkp-ഒപ്റ്റിമൈസ് -fchkp-use-fast-string-functions
-fchkp-use-nochk-string-functions -fchkp-use-static-bounds
-fchkp-use-static-const-bounds -fchkp-treat-zero-dynamic-size-as-infinite
-fchkp-ചെക്ക്-റീഡ് -fchkp-ചെക്ക്-റീഡ് -fchkp-ചെക്ക്-റൈറ്റ് -fchkp-സ്റ്റോർ-ബൗണ്ടുകൾ
-fchkp-instrument-കോളുകൾ -fchkp-instrument-marked-only -fchkp-use-wrappers
-fdbg-cnt-list -fdbg-cnt=പ്രതി-മൂല്യം-ലിസ്റ്റ് -fdisable-ipa-പാസ്_പേര്
-fdisable-rtl-പാസ്_പേര് -fdisable-rtl-പാസ്-നെയിം=ശ്രേണി-ലിസ്റ്റ് - fdisable-tree-പാസ്_പേര്
- fdisable-tree-പാസ്-നെയിം=ശ്രേണി-ലിസ്റ്റ് -fdump-noaddr -fdump-unnumbered
-fdump-unnumbered-links -fdump-translation-unit[-n] -fdump-class-hierarchy[-n]
-fdump-ipa-all -fdump-ipa-cgraph -fdump-ipa-inline -fdump-പാസുകൾ -fdump-statistics
-fdump-tree-എല്ലാം -fdump-മരം-ഒറിജിനൽ[-n] -fdump-tree-optimized[-n] -fdump-tree-cfg
-fdump-tree-alias -fdump-tree-ch -fdump-tree-ssa[-n] -fdump-tree-pre[-n]
-fdump-tree-ccp[-n] -fdump-tree-dce[-n] -fdump-tree-gimple[- അസംസ്കൃത] -fdump-tree-dom[-n]
-fdump-tree-dse[-n] -fdump-tree-phiprop[-n] -fdump-tree-phiopt[-n]
-fdump-tree-forwprop[-n] -fdump-tree-copyrename[-n] -fdump-tree-nrv -fdump-tree-vect
-fdump-ട്രീ-സിങ്ക് -fdump-tree-sra[-n] -fdump-tree-forwprop[-n] -fdump-tree-fre[-n]
-fdump-tree-vtable-verify -fdump-tree-vrp[-n] -fdump-tree-storeccp[-n]
-fdump-final-insns=ഫയല് -fcompare-debug[=തിരഞ്ഞെടുക്കുന്നു] -fcompare-debug-second
-feliminate-dwarf2-dups -fno-eliminate-unused-debug-types
-ഫെലിമിനേറ്റ്-ഉപയോഗിക്കാത്ത-ഡീബഗ്-ചിഹ്നങ്ങൾ -femit-class-debug-always -ശല്യപ്പെടുത്താവുന്ന-ദയയോടെ-കടന്നുപോകുക
-ശല്യപ്പെടുത്താവുന്ന-ദയയോടെ-കടന്നുപോകുക=ശ്രേണി-ലിസ്റ്റ് -fdebug-types-section -fmem-report-wpa -fmem-റിപ്പോർട്ട്
-fpre-ipa-mem-report -fpost-ipa-mem-report -fprofile-arcs -fopt-info
-fopt-info-ഓപ്ഷനുകൾ[=ഫയല്] -frandom-seed=അക്കം -fsched-verbose=n -fsel-sched-verbose
-fsel-sched-dump-cfg -fsel-sched-pipelining-verbose -fstack-ഉപയോഗം -ftest-കവറേജ്
-ftime-റിപ്പോർട്ട് -fvar-ട്രാക്കിംഗ് -fvar-ട്രാക്കിംഗ്-അസൈൻമെന്റുകൾ
-fvar-tracking-assignments-toggle -g -gലെവൽ -gtoggle -ജികോഫ് -gdwarf-പതിപ്പ് -ggdb
-grecord-gcc-സ്വിച്ചുകൾ -gno-record-gcc-switches -gstabs -gstabs+ -gstrict-dwarf
-ഗ്നോ-സ്ട്രിക്റ്റ്-ഡ്വാർഫ് -ജിവിഎംഎസ് -gxcoff -gxcoff+ -gz[=ടൈപ്പ് ചെയ്യുക] -fno-merge-debug-strings
-fno-dwarf2-cfi-asm -fdebug-prefix-map=പഴയത്=പുതിയ -femit-struct-debug-baseonly
-ഫെമിറ്റ്-സ്ട്രക്റ്റ്-ഡീബഗ്-കുറച്ചു -ഫെമിറ്റ്-സ്ട്രക്റ്റ്-ഡീബഗ്-വിശദമായ[=സ്പെക്-ലിസ്റ്റ്] -p -പേജ്
-print-file-name=ലൈബ്രറി -print-libgcc-file-name -പ്രിന്റ്-മൾട്ടി-ഡയറക്‌ടറി
-പ്രിന്റ്-മൾട്ടി-ലിബ് -print-multi-os-directory -print-prog-name=പ്രോഗ്രാം
-പ്രിന്റ്-സെർച്ച്-ഡൈർസ് -Q -പ്രിന്റ്-സിസ്‌റൂട്ട് -print-sysroot-headers-suffix -സേവ്-ടെമ്പുകൾ
-save-temps=cwd -save-temps=obj - സമയം[=ഫയല്]

ഒപ്റ്റിമൈസേഷൻ ഓപ്ഷനുകൾ
- faggressive-loop-optimizations -falign-functions[=n] -falign-jumps[=n]
-falign-ലേബലുകൾ[=n] -falign-loops[=n] ഫാസോസിയേറ്റീവ്-ഗണിതം -fauto-profile
-fauto-profile[=പാത] -fauto-inc-ഡിസം -fbranch-സാധ്യതകൾ
-fbranch-target-load-optimize -fbranch-target-load-optimize2 -fbtr-bb-എക്‌സ്‌ക്ലൂസീവ്
-fcaller-സംരക്ഷിക്കുന്നു -fcheck-data-deps -fcombine-stack-adjustments -fconserve-stack
-fcompare-elim -fcprop-രജിസ്റ്ററുകൾ -ഫ്ക്രോസ്ജമ്പിംഗ് -fcse-follow-jumps -fcse-skip-blocks
-fcx-fortran-rules -fcx-limited-range -fdata-വിഭാഗങ്ങൾ -fdce -fdelayed-branch
-fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively
-fdevirtualize-at-ltrans -fdse -ഭയത്തോടെ-ഇൻലൈനിംഗ് -ഫിപ-സ്ര -fexpensive-optimizations
-ffat-lto-objects ഫാസ്റ്റ്-ഗണിതം -ഫിനിറ്റ്-ഗണിതം-മാത്രം -ഫ്ലോട്ട്-സ്റ്റോർ
-fexcess-precision=ശൈലി -ഫോർവേഡ്-പ്രചരിപ്പിക്കുക -ffp-contract=ശൈലി -ഫംഗ്ഷൻ-വിഭാഗങ്ങൾ
-fgcse -fgcse-ആഫ്റ്റർ-റീലോഡ് -fgcse-las -fgcse-lm -ഫ്ഗ്രാഫൈറ്റ്-ഐഡന്റിറ്റി -fgcse-sm
-ഫോയിസ്റ്റ്-അടുത്തുള്ള-ലോഡുകൾ -ഫിഫ്-പരിവർത്തനം -ഫിഫ്-പരിവർത്തനം2 -findirect-inlining
-ഫിൻലൈൻ-ഫംഗ്ഷനുകൾ -finline-functions-called-ഒരിക്കൽ -finline-limit=n
-ഫിൻലൈൻ-സ്മോൾ-ഫംഗ്ഷനുകൾ -fipa-cp -fipa-cp-clone -fipa-cp-അലൈൻമെന്റ് -fipa-pta
-fipa-profile -fipa-pure-const -ഫിപ-റഫറൻസ് -fipa-icf -fira-algorithm=അൽഗോരിതം
-fira-region=പ്രദേശം -fira-hoist-മർദ്ദം -ഫിറ-ലൂപ്പ്-മർദ്ദം -fno-ira-share-save-slots
-fno-ira-share-spill-slots -fira-verbose=n -ഫിസൊലേറ്റ്-തെറ്റായ-പാതകൾ-ഡെറഫറൻസ്
-ഫിസൊലേറ്റ്-തെറ്റായ-പാതകൾ-ആട്രിബ്യൂട്ട് -fivopts -fkeep-inline-functions
-fkeep-static-consts -ഫ്ലൈവ്-റേഞ്ച്-ഷ്രിങ്കേജ് -ഫ്ലോപ്പ്-ബ്ലോക്ക് -ഫ്ലോപ്പ്-ഇന്റർചേഞ്ച്
-ഫ്ലോപ്പ്-സ്ട്രിപ്പ്-മൈൻ -ഫ്ലോപ്പ്-അൺറോൾ-ആൻഡ്-ജാം -ഫ്ലോപ്പ്-നെസ്റ്റ്-ഒപ്റ്റിമൈസ് -ഫ്ലോപ്പ്-പാരലലൈസ്-എല്ലാം
-ഫ്ലറ-റെമാറ്റ് -ഫ്ൾട്ടോ -flto-കംപ്രഷൻ-ലെവൽ -flto-partition=alga ഇംഗ്ലീഷ് -flto-റിപ്പോർട്ട്
-flto-report-wpa -fmerge-എല്ലാ-സ്ഥിരതകളും -fmerge-സ്ഥിരങ്ങൾ -fmodulo-sched
-fmodulo-sched-allow-regmoves -fmove-loop-invariants -fno-branch-count-reg
-fno-defer-pop -fno-function-cse -fno-guess-branch-probability -fno-ഇൻലൈൻ
-fno-math-errno -fno-peephole -fno-peephole2 -fno-sched-interblock -fno-sched-spec
-fno-signed-പൂജ്യം -fno-toplevel-reorder -fno-trapping-math
-fno-zero-initialized-in-bss -ഫോമിറ്റ്-ഫ്രെയിം-പോയിന്റർ -ഫോപ്റ്റിമൈസ്-സഹോദര-വിളികൾ
-fpartial-inlining -fpeel-ലൂപ്പുകൾ -fpredictive-പൊതുവായ -fprefetch-loop-arrays
-fprofile-റിപ്പോർട്ട് -fprofile-തിരുത്തൽ -fprofile-dir=പാത -fprofile-ജനറേറ്റ്
-fprofile-genrate=പാത -fprofile-ഉപയോഗം -fprofile-use=പാത -fprofile-മൂല്യങ്ങൾ
-fprofile-reorder-functions -ഫ്രെസിപ്രോക്കൽ-ഗണിതം -സ്വഭാവം -ഫ്രെയിം-രജിസ്റ്ററുകൾ
-ഫ്രെഒദെര്-ബ്ലോക്കുകൾ -freorder-blocks-and-partition -ഫ്രീഓർഡർ-ഫംഗ്ഷനുകൾ
-frerun-cse-after-loop -freschedule-modulo-scheduled-loops -ഫ്രൗണ്ടിംഗ്-ഗണിതം
-fsched2-ഉപയോഗം-സൂപ്പർ ബ്ലോക്കുകൾ -fsched-മർദ്ദം -fsched-സ്പെക്-ലോഡ്
-fsched-spec-load-dangerous -fsched-stalled-insns-dep[=n] -fsched-stalled-insns[=n]
-fsched-group-heuristic -fsched-ക്രിട്ടിക്കൽ-പാത്ത്-ഹ്യൂറിസ്റ്റിക് -fsched-spec-insn-heuristic
-fsched-rank-heuristic -fsched-last-insn-heuristic -fsched-dep-count-heuristic
-ഫ്ഷെഡ്യൂൾ-ഫ്യൂഷൻ -fschedule-insns -fschedule-insns2 -fsection-ആങ്കറുകൾ
-ഫ്സെലക്ടീവ്-ഷെഡ്യൂളിംഗ് -fselective-scheduling2 -fsel-ഷെഡ്-പൈപ്പ്ലൈനിംഗ്
-fsel-sched-pipelining-outer-loops -ഫ്സെമാന്റിക്-ഇന്റർപോസിഷൻ -fshrink-wrap
-fsignaling-nans -fsingle-പ്രിസിഷൻ-സ്ഥിരം -fsplit-ivs-in-unroller
-fsplit-wid-types -fssa-phiopt -fstack-protectctor -fstack-protector-എല്ലാം
-fstack-protector-strong -fstack-protector-വ്യക്തം -fstdarg-opt - fstrict-aliasing
- fstrict-overflow -ഫ്ത്രെഡ്-ജമ്പ്സ് -ഫ്ട്രാസർ -ftree-bit-ccp -ftree-builtin-call-dce
-ftree-ccp -ftree-ch -ftree-coalesce-inline-vars -ftree-coalesce-vars -ftree-പകർപ്പ്-പ്രോപ്പ്
-ftree-പകർപ്പിന്റെ പേര് -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-forwprop
-ഫ്രീ-ഫ്രീ -ftree-loop-if-convert -ftree-loop-if-convert-Stores -ftree-loop-im
-ftree-phiprop -ftree-loop-distribution -ftree-loop-distribute-patterns
-ftree-loop-ivcanon -ftree-ലൂപ്പ്-ലീനിയർ -ftree-loop-optimize -ftree-loop-vectorize
-ftree-parallelize-loops=n -ftree-pre -ftree-partial-pre -ftree-pta -ftree-reassoc
-ftree-സിങ്ക് -ftree-slsr -ftree-sra -ftree-സ്വിച്ച്-പരിവർത്തനം -ftree-tail-merge
-ftree-ter -ftree-vectorize -ftree-vrp ഒരു സമയത്ത് രസകരമായി -funroll-all-loops
-ഫൺറോൾ-ലൂപ്പുകൾ -funsafe-loop-optimizations -funsafe-math-optimizations
-ഫൺസ്വിച്ച്-ലൂപ്പുകൾ -ഫിപ-റ -fvariable-expansion-in-unroller -fvect-cost-model -fvpt
-fweb മുഴുവൻ-പ്രോഗ്രാം -fwpa -ഫ്യൂസ്-ലിങ്കർ-പ്ലഗിൻ --പരം പേര്=മൂല്യം -O -O0 -O1 -O2
-O3 -ഓസ് -ഓഫാസ്റ്റ് -ഓ

പ്രീപ്രൊസസ്സർ ഓപ്ഷനുകൾ
-Aചോദ്യം=ഉത്തരം -എ-ചോദ്യം[=ഉത്തരം] -C -തീയതി -dI -ഡിഎം -ഡിഎൻ -Dമാക്രോ[=defn] -E -H
-ഇദിരാഫ്റ്റർ മുതലാളി -ഉൾപ്പെടുന്നു ഫയല് -ഇമാക്രോസ് ഫയല് -പ്രിഫിക്സ് ഫയല് -iwithprefix മുതലാളി
-iwithprefix മുമ്പ് മുതലാളി -വ്യവസ്ഥ മുതലാളി -ഇമൾട്ടിലിബ് മുതലാളി -isysroot മുതലാളി -M -എം.എം -എം.എഫ് -എം.ജി
-എം.പി -എം.ക്യു -എം.ടി -nostdinc -P -fdebug-cpp -ഫ്ട്രാക്ക്-മാക്രോ-വിപുലീകരണം -fworking-directory
- റീമാപ്പ് -ട്രിഗ്രാഫ്സ് -undef -Uമാക്രോ -Wp,ഓപ്ഷൻ -എക്സ്പ്രെപ്രൊസസ്സർ ഓപ്ഷൻ -no-integrated-cpp

അസംബ്ലർ ഓപ്ഷൻ
-വാ,ഓപ്ഷൻ -ക്സഅസെംബ്ലർ ഓപ്ഷൻ

ലിങ്കർ ഓപ്ഷനുകൾ
ഒബ്ജക്റ്റ്-ഫയൽ-നാമം -fuse-ld=ലിങ്കർ -lലൈബ്രറി -നൊസ്റ്റാർട്ട് ഫയലുകൾ -nodefaultlibs -nostdlib
-പൈ - ചലനാത്മകം -s - സ്റ്റാറ്റിക് -static-libgcc -static-libstdc++ -സ്റ്റാറ്റിക്-ലിബാസൻ
-സ്റ്റാറ്റിക്-ലിബ്റ്റ്സാൻ -സ്റ്റാറ്റിക്-ലിബ്ലസൻ -സ്റ്റാറ്റിക്-ലിബുബ്സൻ -static-libmpx -static-libmpxwrappers
- പങ്കിട്ടു -shared-libgcc - പ്രതീകാത്മകം -T സ്ക്രിപ്റ്റ് -Wl,ഓപ്ഷൻ -എക്സ്ലിങ്കർ ഓപ്ഷൻ -u ചിഹ്നം -z
കീവേഡ്

ഡയറക്ടറി ഓപ്ഷനുകൾ
-Bപ്രിഫിക്‌സ് -Iമുതലാളി -iplugindir=മുതലാളി - iquoteമുതലാളി -Lമുതലാളി -സ്‌പെസിഫിക്കേഷൻ=ഫയല് -ഞാൻ- --sysroot=മുതലാളി
--no-sysroot-suffix

മെഷീൻ ആശ്രയിച്ചിരിക്കുന്നു ഓപ്ഷനുകൾ
AAArch64 ഓപ്ഷനുകൾ -mabi=പേര് -mbig-endian -mlittle-endian -mgeneral-regs-മാത്രം
-mcmodel=ചെറിയ -mcmodel=ചെറിയത് -mcmodel=വലുത് -mstrict-align -മോമിറ്റ്-ലീഫ്-ഫ്രെയിം-പോയിന്റർ
-mno-ഒമിറ്റ്-ലീഫ്-ഫ്രെയിം-പോയിന്റർ -mtls-dialect=desc -mtls-dialect=പരമ്പരാഗത
-mfix-cortex-a53-835769 -mno-fix-cortex-a53-835769 -mfix-cortex-a53-843419
-mno-fix-cortex-a53-843419 -മാർച്ച്=പേര് -mcpu=പേര് -mtune=പേര്

അഡാപ്റ്റേവ എപ്പിഫാനി ഓപ്ഷനുകൾ -mhalf-reg-file -mprefer-short-insn-regs -mbranch-cost=സംഖ്യ
-mcmove -mnops=സംഖ്യ -msoft-cmpsf -mssplit-lohi -mpost-inc -post-modify
-mstack-offset=സംഖ്യ -mround-സമീപം -mlong-കോളുകൾ - ഹ്രസ്വ കോളുകൾ -msmall16 -mfp-mode=മോഡ്
-mvect-ഇരട്ട -max-vect-align=സംഖ്യ -msplit-vecmove-നേരത്തേ -m1reg-reg

ARC ഓപ്ഷനുകൾ -mbarrel-shifter -mcpu=സിപിയു -mA6 -mARC600 -mA7 -mARC700 -mdpfp
-mdpfp-compact -mdpfp-വേഗത -mno-dpfp-lrsr -mea -mno-mpy -mmul32x16 -mmul64 -mnorm
-mspfp -mspfp-compact -mspfp-വേഗത -msimd -msoft-float -mswap -എംസിആർസി -mdsp-packa -mdvbf
-mlock -mmac-d16 -mmac-24 -mrtsc -mswape -മെലിഫോണി -mxy - തെറ്റിദ്ധരിപ്പിക്കുക -മന്നോട്ട്-അലൈൻ
-മാർക്ലിനക്സ് -marclinux_prof -മെപിലോഗ്-സിഎഫ്ഐ -mlong-കോളുകൾ - ഇടത്തരം കോളുകൾ -msdata
-mucb-mcount -mvolatile-cache -മലിൻ-കോൾ -mauto-modify-reg -mbbit-peephole -mno-brcc
-mcase-vector-pcrel -എംകോംപാക്ട്-കേസി -mno-cond-exec -മെർലി-സിബ്രാഞ്ച്സി -mexpand-adddi
-mindexed-loads -mlra -mlra-മുൻഗണന-ഒന്നുമില്ല -mlra-priority-compact mlra-മുൻഗണന-
ഒതുക്കമില്ലാത്തത് -mno-millicode -മിക്സഡ്-കോഡ് -mq-ക്ലാസ് -mRcq -mRcw -msize-level=ലെവൽ
-mtune=സിപിയു -mmultcost=സംഖ്യ -munalign-prob-threshold=പ്രോബബിലിറ്റി

കൈക്ക് ഓപ്ഷനുകൾ -mapcs-frame -mno-apcs-frame -mabi=പേര് -mapcs-stack-check
-mno-apcs-stack-check -mapcs-float -mno-apcs-float -mapcs-reentrant
-mno-apcs-reentrant -msched-prolog -mno-sched-prolog -mlittle-endian -mbig-endian
-mfloat-abi=പേര് -mfp16-format=പേര് -mthumb-ഇന്റർവർക്ക് -mno-thumb-interwork -mcpu=പേര്
-മാർച്ച്=പേര് -mfpu=പേര് -mtune=പേര് -mprint-tune-info -structure-size-boundary=n
-mabort-on-noreturn -mlong-കോളുകൾ -mno-ലോംഗ്-കോളുകൾ -msingle-pic-base
-mno-single-pic-base -mpic-register=reg -mnop-fun-dllimport -mpoke-function-name
-മുമ്പ് -മാർം -mtpcs-frame -mtpcs-leaf-frame -എംകോളർ-സൂപ്പർ-ഇന്റർവർക്കിംഗ്
-mcallee-സൂപ്പർ-ഇന്റർവർക്കിംഗ് -എംടിപി=പേര് -mtls-dialect=ഭാഷ -mword-relocations
-mfix-cortex-m3-ldrd - munaligned-access -mneon-for-64bits -mslow-ഫ്ലാഷ്-ഡാറ്റ
-മാസം-വാക്യഘടന-ഏകീകൃത -അത്

എ.വി.ആർ ഓപ്ഷനുകൾ -mmcu=mcu -maccumulate-args -mbranch-cost=ചെലവ് -mcall-prologes -മിന്റ്8
-mn_flash=വലുപ്പം -mno-തടസ്സങ്ങൾ -mrelax -mrmw -mstrict-X -mtiny-stack -നോഡിവിസെലിബ്
-Waddr-space-convert

ബ്ലാക്ക്ഫിൻ ഓപ്ഷനുകൾ -mcpu=സിപിയു[-sirevision] -എംസിം -മോമിറ്റ്-ലീഫ്-ഫ്രെയിം-പോയിന്റർ
-mno-ഒമിറ്റ്-ലീഫ്-ഫ്രെയിം-പോയിന്റർ -mspecld-അനോമലി -mno-specld-അനോമലി -mcsync-അനോമലി
-mno-csync-അനോമലി -mlow-64k -mno-low64k -mstack-check-l1 -മിഡ്-ഷെയർഡ്-ലൈബ്രറി
-mno-id-shared-library -mshared-library-id=n -mleaf-id-shared-library
-mno-leaf-id-shared-library -msep-data -mno-sep-data -mlong-കോളുകൾ -mno-ലോംഗ്-കോളുകൾ
-mfast-fp -minline-plt -മൾട്ടികോർ -എംകോറിയ -എംകോറെബ് -msdram -micplb

C6x ഓപ്ഷനുകൾ -mbig-endian -mlittle-endian -മാർച്ച്=സിപിയു -എംസിം -msdata=sdata-തരം

ച്രിസ് ഓപ്ഷനുകൾ -mcpu=സിപിയു -മാർച്ച്=സിപിയു -mtune=സിപിയു -mmax-stack-frame=n
-melinux-stacksize=n -മെട്രാക്സ്4 -മെട്രാക്സ്100 -mpdebug -mcc-init -mno-പാർശ്വഫലങ്ങൾ
-mstack-align -mdata-align -mconst-align -m32-ബിറ്റ് -m16-ബിറ്റ് -m8-ബിറ്റ്
-mno-prologue-epilogue -mno-gotplt -മെൽഫ് - മൗട്ട് -മെലിനക്സ് -mlinux -സിം -സിം2
-mmul-ബഗ്-പരിഹാരം -mno-mul-bug-പരിഹാരം

CR16 ഓപ്ഷനുകൾ -എംഎംഎസി -mcr16cplus -mcr16c -എംസിം -മിന്റ്32 -mbit-ops -mdata-model=മാതൃക

ഡാര്വിന് ഓപ്ഷനുകൾ -എല്ലാ_ലോഡ് -allowable_client -കമാനം -ആർച്ച്_എററുകൾ_മാരകമായ -കമാനം_മാത്രം
-ബൈൻഡ്_അറ്റ്_ലോഡ് -ബണ്ടിൽ -ബണ്ടിൽ_ലോഡർ -ഇടപാടുകാരന്റെ പേര് -compatibility_version
-നിലവിലെ പതിപ്പ് -ഡെഡ്_സ്ട്രിപ്പ് -ആശ്രിത-ഫയൽ -dylib_file -dylinker_install_name
- ചലനാത്മകം -ഡൈനാമിക്ലിബ് -exported_symbols_list -ഫയലിസ്റ്റ് -ഫ്ലാറ്റ്_നെയിംസ്പേസ്
-force_cpusubtype_ALL -force_flat_namespace -headerpad_max_install_names -iframework
-ഇമേജ്_ബേസ് -init -install_name -keep_private_externs -multi_module
-multiply_defined -multiply_defined_unused -noall_load
-no_dead_strip_inits_and_terms -നോഫിക്സ്പ്രെബൈൻഡിംഗ് -നാമൾട്ടിഡിഫുകൾ -നോപ്രെബൈൻഡ്
-മൂക്ക് ലിങ്ക്ഡിറ്റ് -pagezero_size -പ്രീബൈൻഡ് -prebind_all_twolevel_modules -സ്വകാര്യ_ബണ്ടിൽ
-read_only_relocks -sectalign -സെക്ടോബ്ജക്റ്റ് ചിഹ്നങ്ങൾ -whyload -seg1addr -വിഭാഗം സൃഷ്ടിക്കുക
-സെക്ടോബ്ജക്റ്റ് ചിഹ്നങ്ങൾ -മേഖല -സെഗദ്ദർ -segs_read_only_addr -segs_read_write_addr
-seg_addr_table -seg_addr_table_filename -സെഗ്ലിങ്കെഡിറ്റ് -സെഗ്പ്രോട്ട് -segs_read_only_addr
-segs_read_write_addr -single_module - സ്റ്റാറ്റിക് -സബ്_ലൈബ്രറി -ഉപ_കുട
-twolevel_namespace -കുട - നിർവചിക്കാത്തത് - unexported_symbols_list
ദുർബലമായ_റഫറൻസ്_പൊരുത്തക്കേടുകൾ - whatsloaded -F - ഊഹിച്ചു -ജിഫുൾ -mmacosx-version-min=പതിപ്പ്
-എംകെർണൽ -mone-byte-bool

DEC ആൽഫ ഓപ്ഷനുകൾ -mno-fp-regs -msoft-float -മീ -mieee-with-inexact
-mieee-conformant -mfp-trap-mode=മോഡ് -mfp-rounding-mode=മോഡ് -mtrap-precision=മോഡ്
-ബിൽഡ്-കോൺസ്റ്റന്റുകൾ -mcpu=cpu-തരം -mtune=cpu-തരം -mbwx പരമാവധി -എംഫിക്സ് -mcix
-mfloat-vax -mfloat-ieee -എക്‌സ്‌പ്ലിസിറ്റ്-റെലോക്കുകൾ -msmall-ഡാറ്റ -mlarge-ഡാറ്റ -msmall-text
-mlarge-text -മെമ്മറി-ലേറ്റൻസി=കാലം

FR30 ഓപ്ഷനുകൾ -msmall-മോഡൽ -mno-lsim

LIF ഓപ്ഷനുകൾ -എംജിപിആർ-32 -എംജിപിആർ-64 -mfpr-32 -mfpr-64 -mhard-float -msoft-float
-malloc-cc -mfixed-cc -mdword -mno-dword - ഇരട്ട -mno-ഇരട്ട - മീഡിയ -mno-media
-മുലദ്ദ് -mno-muladd -mfdpic -minline-plt -mgprel-ro -multilib-library-pic
-mlinked-fp -mlong-കോളുകൾ -മാലിൻ-ലേബലുകൾ -mlibrary-ചിത്രം -macc-4 -macc-8 -പാക്ക്
-mno-പാക്ക് -mno-കൊടികൾ -mcond-നീക്കം -mno-cond-നീക്കം -മോപ്റ്റിമൈസ്-അംഗം
-mno-optimize-membar -mscc -mno-sc -mcond-exec -mno-cond-exec -mvliw-ശാഖ
-mno-vliw-ശാഖ -multi-cond-exec -mno-multi-cond-exec -mnested-cond-exec
-mno-nested-cond-exec -mtomcat-stats -mTLS -mtls -mcpu=സിപിയു

ഗ്നു / ലിനക്സ് ഓപ്ഷനുകൾ -mglibc -മുക്ലിബിസി -ബയോണിക് -മണ്ട്രോയിഡ് -tno-android-cc -tno-android-ld

H8 / 300 ഓപ്ഷനുകൾ -mrelax -mh -മിസ് -mn -മെക്സർ -mno-exr -മിന്റ്32 -malign-300

എച്ച്പിപിഎ ഓപ്ഷനുകൾ -മാർച്ച്=വാസ്തുവിദ്യ-തരം -mdisable-fpregs -mdisable-indexing
-mfast-പരോക്ഷ-കോളുകൾ -mgas -mgnu-ld -mhp-ld -mfixed-range=രജിസ്റ്റർ-പരിധി
-mjump-in-delay -mlinker-opt -mlong-കോളുകൾ -mlong-ലോഡ്-സ്റ്റോർ -mno-disable-fpregs
-mno-disable-indexing -mno-വേഗത-പരോക്ഷ-കോളുകൾ -എംനോ-ഗ്യാസ് -mno-jump-in-delay
-mno-long-load-store -mno-portable-runtime -mno-soft-float -mno-space-regs
-msoft-float -mpa-risc-1-0 -mpa-risc-1-1 -mpa-risc-2-0 -കയറ്റാവുന്ന-റൺടൈം
-mschedule=cpu-തരം -mspace-regs -msio -mwsio -munix=unix-std -nolibdld - സ്റ്റാറ്റിക്
- ത്രെഡുകൾ

IA-64 ഓപ്ഷനുകൾ -mbig-endian -mlittle-endian -mgnu-as -mgnu-ld -mno-pic
-mvolatile-asm-സ്റ്റോപ്പ് -mregister-names -msdata -mno-sdata -mconstant-gp -mauto-ചിത്രം
-mfused-madd -മിൻലൈൻ-ഫ്ലോട്ട്-ഡിവൈഡ്-മിനിറ്റ്-ലേറ്റൻസി -minline-float-divide-max-throughput
-mno-inline-float-divide -minline-int-divide-min-lateency
-minline-int-divide-max-throughput -mno-inline-int-divide -minline-sqrt-min-latency
-minline-sqrt-max-thoughput -mno-inline-sqrt -mdwarf2-asm -മെർലി-സ്റ്റോപ്പ്-ബിറ്റുകൾ
-mfixed-range=രജിസ്റ്റർ-പരിധി -mtls-size=tls-വലിപ്പം -mtune=cpu-തരം -milp32 -mlp64
-msched-br-data-spec -msched-ar-data-spec -msched-control-spec -msched-br-in-data-spec
-msched-ar-in-data-spec -msched-in-control-spec -msched-spec-ldc
-msched-spec-control-ldc -msched-prefer-non-data-spec-insns
-msched-prefer-non-control-spec-insns ഓരോ സൈക്കിളിനും ശേഷം -msched-stop-bits
-msched-count-spec-in-critical-path -msel-sched-dont-check-control-spec
-msched-fp-mem-deps-zero-cost -msched-max-memory-insns-hard-limit
-msched-max-memory-insns=max-insns

LM32 ഓപ്ഷനുകൾ -mbarrel-shift-enabled -mdivide-പ്രവർത്തനക്ഷമമാക്കി -multiply-പ്രവർത്തനക്ഷമമാക്കി
-msign-extend-enabled -മ്യൂസർ-പ്രാപ്തമാക്കി

M32R/D ഓപ്ഷനുകൾ -m32r2 -m32rx -m32r -mdebug -മാലിൻ-ലൂപ്പുകൾ -mno-align-loops
-missue-rate=അക്കം -mbranch-cost=അക്കം -mmodel=കോഡ്-വലിപ്പം-മോഡൽ-തരം -msdata=sdata-
ടൈപ്പ് ചെയ്യുക -mno-flush-func -mflush-func=പേര് -mno-flush-trap -mflush-trap=അക്കം -G സംഖ്യ

മ്ക്സനുമ്ക്സച് ഓപ്ഷനുകൾ -mcpu=സിപിയു -എംസിം -memregs=അക്കം

മ്ക്സനുമ്ക്സക്സക്സനുമ്ക്സ ഓപ്ഷനുകൾ -മാർച്ച്=കമാനം -mcpu=സിപിയു -mtune=രാഗം -m68000 -m68020 -m68020-40
-m68020-60 -m68030 -m68040 -m68060 -mcpu32 -m5200 -m5206e -m528x -m5307 -m5407
-mcfv4e -mbitfield -mno-bitfield -mc68000 -mc68020 -mnobitfield -mrtd -mno-rtd
-എംഡിവി -mno-div -msshort -mno-ഹ്രസ്വ -mhard-float -m68881 -msoft-float -mpcrel
-malign-int -mstrict-align -msep-data -mno-sep-data -mshared-library-id=n
-മിഡ്-ഷെയർഡ്-ലൈബ്രറി -mno-id-shared-library -mxgot -mno-xgot

എംകോർ ഓപ്ഷനുകൾ -mhardlit -mno-hardlit -എംഡിവി -mno-div -mrelax-immediates
-mno-relax-immediates -mwide-bitfields -mno-wid-bitfields -m4byte-പ്രവർത്തനങ്ങൾ
-mno-4byte-പ്രവർത്തനങ്ങൾ -mcallgraph-data -mno-calgraph-data -mslow-ബൈറ്റുകൾ
-mno-slow-bytes -mno-lsim -mlittle-endian -mbig-endian -m210 -m340
-mstack-ഇൻക്രിമെന്റ്

എം.പി ഓപ്ഷനുകൾ -മാബ്സ്ഡിഫ് -മാൾ-ഓപ്‌റ്റുകൾ -മാവറേജ് -m based=n -mbitops -mc=n -mclip
-mconfig=പേര് -എംകോപ് -mcop32 -mcop64 -mivc2 -എംഡിസി -എംഡിവി -മെബ് -മെൽ -മിയോ-അസ്ഥിരമായ - മില്ലി
-mleadz -എംഎം -mminmax -mult -mno-opts - ആവർത്തിക്കുക -മിസ് -മസാതുർ -msdram -എംസിം -msimnovec
-എംടിഎഫ് -mtiny=n

മൈക്രോബ്ലേസ് ഓപ്ഷനുകൾ -msoft-float -mhard-float -small-divides -mcpu=സിപിയു -mmemcpy
-mxl-soft-mul -mxl-soft-div -mxl-ബാരൽ-ഷിഫ്റ്റ് -mxl-പാറ്റേൺ-താരതമ്യം ചെയ്യുക -mxl-stack-check
-mxl-gp-opt -mno-clearbss -mxl-multiply-high -mxl-float-convert -mxl-float-sqrt
-mbig-endian -mlittle-endian -mxl-reorder -mxl-മോഡ്-ആപ്ലിക്കേഷൻ മോഡൽ

എംഐപിഎസ് ഓപ്ഷനുകൾ -ഇഎൽ -ഇ.ബി -മാർച്ച്=കമാനം -mtune=കമാനം -mips1 -mips2 -mips3 -mips4
-mips32 -mips32r2 -mips32r3 -mips32r5 -mips32r6 -mips64 -mips64r2 -mips64r3
-mips64r5 -mips64r6 -mips16 -mno-mips16 -mflip-mips16 -minterlink-compressed
-mno-interlink-compressed -minterlink-mips16 -mno-interlink-mips16 -mabi=അബി
-മാബിക്കൽസ് -mno-abicalls -mshared -mno-പങ്കിട്ടത് -mplt -mno-plt -mxgot -mno-xgot
-mgp32 -mgp64 -mfp32 -mfpxx -mfp64 -mhard-float -msoft-float -mno-float
-സിംഗിൾ-ഫ്ലോട്ട് -mdouble-float -modd-spreg -mno-odd-spreg -mabs=മോഡ് -mnan=എൻകോഡിംഗ്
-എംഡിഎസ്പി -mno-dsp -mdspr2 -mno-dspr2 -എംഎംസിയു -mmno-mcu -മേവ -mno-eva -mvirt -mno-virt
-mxpa -mno-xpa -മിമിക്രൊമിപ്സ് -mno-micromips -mfpu=fpu-തരം -msmartmips -mno-smartmips
- ജോഡി-അവിവാഹിതൻ -mno-ജോഡി-ഒറ്റ -mdmx -mno-mdmx -mips3d -mno-mips3d -എംഎംടി
-mno-mt -mllsc -mno-llsc -mlong64 -mlong32 -msym32 -mno-sym32 -Gസംഖ്യ
-mlocal-sdata -mno-local-sdata -മെക്സ്റ്റേൺ-സ്ഡാറ്റ -mno-extern-sdata -mgpopt -mno-gopt
-membedded-data -mno-എംബെഡഡ്-ഡാറ്റ -മുനിനിറ്റ്-കോൺസ്റ്റ്-ഇൻ-റോഡാറ്റ
-mno-uninit-const-in-rodata -mcode-readable=ക്രമീകരണം -msplit-വിലാസങ്ങൾ
-mno-split-വിലാസങ്ങൾ -എക്‌സ്‌പ്ലിസിറ്റ്-റെലോക്കുകൾ -mno-വ്യക്തമായ-relocks -mcheck-zero-division
-mno-check-zero-division -mdivide-ട്രാപ്പുകൾ -mdivide-ബ്രേക്കുകൾ -mmemcpy -mno-memcpy
-mlong-കോളുകൾ -mno-ലോംഗ്-കോളുകൾ -മ്മദ് -mno-ഭ്രാന്തൻ -മിമാദ് -mno-imadd -mfused-madd
-mno-fused-madd -nocpp -mfix-24k -mno-fix-24k -mfix-r4000 -mno-fix-r4000
-mfix-r4400 -mno-fix-r4400 -mfix-r10000 -mno-fix-r10000 -mfix-rm7000 -mno-fix-rm7000
-mfix-vr4120 -mno-fix-vr4120 -mfix-vr4130 -mno-fix-vr4130 -mfix-sb1 -mno-fix-sb1
-mflush-func=ഫങ്ക് -mno-flush-func -mbranch-cost=സംഖ്യ - ശാഖ-സാധ്യത
-mno-ശാഖ-സാധ്യത -mfp-ഒഴിവാക്കലുകൾ -mno-fp-exceptions -mvr4130-അലൈൻ -mno-vr4130-align
-എംസിൻസി -mno-synci -mrelax-pic-കോളുകൾ -mno-relax-pic-കോളുകൾ -mmcount-ra-വിലാസം

MMIX ഓപ്ഷനുകൾ -mlibfuncs -mno-libfuncs -മെപ്സിലോൺ -mno-epsilon -മാബി=ഗ്നു
-mabi=mmixware -mzero-വിപുലീകരിക്കുക -mknuthdiv -mtoplevel-ചിഹ്നങ്ങൾ -മെൽഫ് -ബ്രാഞ്ച്-പ്രവചിക്കുക
-mno-ശാഖ-പ്രവചനം -ബേസ്-വിലാസങ്ങൾ -mno-ബേസ്-വിലാസങ്ങൾ -സിംഗിൾ-എക്സിറ്റ്
-mno-single-exit

MN10300 ഓപ്ഷനുകൾ -mult-ബഗ് -mno-mult-bug -mno-am33 -മാം33 -മാം33-2 -മാം34 -mtune=സിപിയു-
ടൈപ്പ് ചെയ്യുക -mreturn-pointer-on-d0 -mno-crt0 -mrelax -mliw -msetlb

മോക്സി ഓപ്ഷനുകൾ -മെബ് -മെൽ -mmul.x -mno-crt0

MSP430 ഓപ്ഷനുകൾ -എംസിം -മസ്ം-ഹെക്സ് -mmcu= -mcpu= -mlarge - ചെറുത് -mrelax -mhwmult= -മിന്റ്

NDS32 ഓപ്ഷനുകൾ -mbig-endian -mlittle-endian -mreduced-regs -mfull-regs -mcmov -mno-cmov
-mperf-ext -mno-perf-ext -mv3push -mno-v3push -m16bit -mno-16bit -misr-vector-size=സംഖ്യ
-mcache-block-size=സംഖ്യ -മാർച്ച്=കമാനം -mcmodel=കോഡ് മോഡൽ -mctor-dtor -mrelax

നോയിസ് II ഓപ്ഷനുകൾ -G സംഖ്യ -mgopt=ഓപ്ഷൻ -mgpopt -mno-gpt -മെൽ -മെബ് -mno-ബൈപാസ്-കാഷെ
-mbypass-cache -mno-കാഷെ-അസ്ഥിരമായ -mcache-അസ്ഥിരമായ -mno-fast-sw-div -mfast-sw-div
-mhw-mul -mno-hw-mul -mhw-mulx -mno-hw-mulx -mno-hw-div -mhw-div -മകസ്റ്റം-ഇൻസ്‌എൻ=N
-mno-കസ്റ്റം-ഇൻസ്‌എൻ -mcustom-fpu-cfg=പേര് -mhal -msmallc -msys-crt0=പേര് -msys-lib=പേര്

എൻവിഡിയ PTX ഓപ്ഷനുകൾ -m32 -m64 -മെയിൻകെർണൽ

PDP-11 ഓപ്ഷനുകൾ -mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10 -എംബികോപ്പി
-mbcopy-builtin -മിന്റ്32 -mno-int16 -മിന്റ്16 -mno-int32 -mfloat32 -mno-float64
-mfloat64 -mno-float32 -മാബ്ഷി -mno-abshi -ബ്രാഞ്ച്-ചെലവേറിയത് -mbranch-വിലകുറഞ്ഞ
-munix-asm -mdec-asm

picoChip ഓപ്ഷനുകൾ -mae=ae_type -mvliw-lookahead=N -വിലാസമായി ചിഹ്നം
-mno-infective-warnings

പവർപിസി ഓപ്ഷനുകൾ RS/6000, PowerPC ഓപ്ഷനുകൾ എന്നിവ കാണുക.

RX78 ഓപ്ഷനുകൾ -എംസിം -mmul=ഒന്നുമില്ല -mmul=g13 -mmul=rl78 -m64bit-ഡബിൾസ് -m32bit-ഡബിൾസ്

RS / 6000 ഒപ്പം പവർപിസി ഓപ്ഷനുകൾ -mcpu=cpu-തരം -mtune=cpu-തരം -mcmodel=കോഡ് മോഡൽ
-mpowerpc64 -മാൾട്ടിവെക് -mno-altivec -mpowerpc-gpopt -mno-powerpc-gpopt
-mpowerpc-gfxopt -mno-powerpc-gfxopt -mmfcrf -mno-mfcrf -mpopcntb -mno-popcntb
-mpopcntd -mno-popcntd -mfprnd -mno-fprnd -എംസിഎംപിബി -mno-cmpb -എംഎംഎഫ്പിജിപിആർ -mno-mfpgpr
-mhard-dfp -mno-hard-dfp -mfull-toc -മിനിമൽ-ടോക്ക് -mno-fp-in-toc -mno-സം-ഇൻ-ടോക്ക്
-m64 -m32 -mxl-compat -mno-xl-compat -mpe -മലിഗ്-പവർ -മലിൻ-സ്വാഭാവികം
-msoft-float -mhard-float - ഒന്നിലധികം -mno-ഒന്നിലധികം -സിംഗിൾ-ഫ്ലോട്ട് -mdouble-float
-സിമ്പിൾ-എഫ്പിയു -ംസ്ട്രിംഗ് -mno-സ്ട്രിംഗ് -മാറ്റുക -mno-update -മാവോയിഡ്-സൂചിക-വിലാസങ്ങൾ
-mno-avoid-indexed-addresses -mfused-madd -mno-fused-madd -mbit-align
-mno-bit-align -mstrict-align -mno-strict-align - mrelocatable -mno-reloocatable
-mrelocatable-lib -mno-relocatable-lib -എംടിഒസി -mno-toc - ചെറിയ -mlittle-endian
-മ്പിഗ് -mbig-endian -mdynamic-no-pic -മാൾട്ടിവെക് -mswdiv -msingle-pic-base
-mprioritize-restricted-insns=മുൻഗണന -msched-costly-dep=ആശ്രിതത്വം_തരം
-minsert-sched-nops=സ്കീം -mcall-sysv -mcall-netbsd -maix-struct-return
-msvr4-struct-return -mabi=അബി-തരം -സുരക്ഷിത-plt -mbss-plt
-mblock-move-inline-limit=സംഖ്യ - മിസൽ -mno-isel -മിസൽ=അതെ -മിസൽ=ഇല്ല -എംഎസ്പി -mno-spe
-mspe=അതെ -mspe=ഇല്ല - ജോടിയാക്കിയത് -mgen-സെൽ-മൈക്രോകോഡ് -mwarn-cell-microcode -mvrsave
-mno-vrsave -mmulhw -mno-mulhw -mdlmzb -mno-dlmzb -mfloat-gprs=അതെ -mfloat-gprs=No
-mfloat-gprs=single -mfloat-gprs=ഇരട്ട -പ്രോട്ടോടൈപ്പ് -mno-പ്രോട്ടോടൈപ്പ് -എംസിം -mmvme
-ഭ്രാന്തന്മാർ - myellowknife - അംഗം -msdata -msdata=തിരഞ്ഞെടുക്കുക -mvxworks -G സംഖ്യ -pthread -mrecip
-mrecip=തിരഞ്ഞെടുക്കുക -mno-recip -mrecip-പ്രിസിഷൻ -mno-റെസിപ്പ്-പ്രിസിഷൻ -mveclibabi=ടൈപ്പ് ചെയ്യുക -mfriz
-mno-friz --നെസ്റ്റഡ്-ഫംഗ്ഷനുകൾക്ക് പോയിന്ററുകൾ -mno-pointers-to-nested-functions
-save-toc-indirect -mno-save-toc-indirect -mpower8-ഫ്യൂഷൻ -mno-mpower8-ഫ്യൂഷൻ
-mpower8-വെക്റ്റർ -mno-power8-vector -mcrypto -mno-crypto -mdirect-move -mno-direct-move
-mquad-മെമ്മറി -mno-quad-memory -mquad-memory-atomic -mno-quad-memory-atomic
-mcompat-align-parm -mno-compat-align-parm -mupper-regs-df -mno-upper-regs-df
-mupper-regs-sf -mno-upper-regs-sf -mupper-regs -mno-upper-regs

RX ഓപ്ഷനുകൾ -m64bit-ഡബിൾസ് -m32bit-ഡബിൾസ് -എഫ്പിയു -നോഫ്പു -mcpu= -mbig-endian-data
-mlittle-endian-data -msmall-ഡാറ്റ -എംസിം -mno-sim -mas100-വാക്യഘടന -mno-as100-വാക്യഘടന
-mrelax -mmax-constant-size= -mint-register= -mpid -mno-warn-multiple-fast-interrupts
-msave-ac-in-interrupts

S / 390 ഒപ്പം zSeries ഓപ്ഷനുകൾ -mtune=cpu-തരം -മാർച്ച്=cpu-തരം -mhard-float -msoft-float
-mhard-dfp -mno-hard-dfp -mlong-ഇരട്ട-64 -mlong-ഇരട്ട-128 -എംബാക്ക്ചെയിൻ
-mno-backchain -പാക്ക്ഡ്-സ്റ്റാക്ക് -mno-പാക്ക്ഡ്-സ്റ്റാക്ക് -msmall-exec -mno-small-exec
-mmvcle -mno-mvcle -m64 -m31 -mdebug -mno-ഡീബഗ് -മെസ -mzarch -mtpf-ട്രേസ്
-mno-tpf-trace -mfused-madd -mno-fused-madd -mwarn-framesize -mwarn-dynamicstack
-mstack-വലിപ്പം -mstack-guard -mhotpatch=പകുതി വാക്കുകൾ,പകുതി വാക്കുകൾ

സ്കോർ ഓപ്ഷനുകൾ -മെബ് -മെൽ -mnhwloop -മുൾസ് -എംഎംഎസി -എംസ്‌കോർ 5 -mscore5u -എംസ്‌കോർ 7 -mscore7d

SH ഓപ്ഷനുകൾ -m1 -m2 -m2e -m2a-nofpu -m2a-ഒറ്റ-മാത്രം -m2a-ഒറ്റ -m2a -m3 -m3e
-m4-nofpu -m4-ഒറ്റയ്ക്ക് മാത്രം -m4-ഒറ്റ -m4 -m4a-nofpu -m4a-ഒറ്റ-മാത്രം -m4a-ഒറ്റ
-m4a -m4al -m5-64media -m5-64media-nofpu -m5-32media -m5-32media-nofpu -m5-കോംപാക്റ്റ്
-m5-കോംപാക്ട്-നോഫ്പു -mb - മില്ലി -mdalign -mrelax -mbigtable -mfmovd -മിതാച്ചി -മ്രെനെസാസ്
-mno-renesas -mnomacsave -മീ -mno-ieee -mbitops - തെറ്റിദ്ധരിപ്പിക്കുക -minline-ic_invalidate
-പാഡ്സ്ട്രക്റ്റ് -mspace -മുമ്പ് മറന്നു -മ്യൂസർമോഡ് -multcost=അക്കം -mdiv=കൗശലം
-mdivsi3_libfunc=പേര് -mfixed-range=രജിസ്റ്റർ-പരിധി -mindexed-addressing
-mgettrcost=അക്കം -mpt-fixed -മക്യുമുലേറ്റ്-ഔട്ട്‌ഗോയിംഗ്-ആർഗ്സ് അസാധുവായ ചിഹ്നങ്ങൾ
-matomic-model=ആറ്റോമിക്-മാതൃക -mbranch-cost=സംഖ്യ -mzdcbranch -mno-zdcbranch
-mcbranch-force-delay-slot -mfused-madd -mno-fused-madd -mfsca -mno-fsca -mfsrra
-mno-fsrra -നടക്കുക-ചലിക്കുക -mtas

സൊളാരിസ് 2 ഓപ്ഷനുകൾ -mclear-hwcap -mno-clear-hwcap -മിമ്പൂർ-ടെക്സ്റ്റ് -mno-impure-text
-പ്ത്രെഡുകൾ -pthread

സ്പാർക്ക് ഓപ്ഷനുകൾ -mcpu=cpu-തരം -mtune=cpu-തരം -mcmodel=കോഡ് മോഡൽ -memory-model=മെം-
മാതൃക -m32 -m64 -മാപ്പ്-റെഗ്സ് -mno-app-regs -mfaster-structs -mno-faster-structs
- mflat -mno-ഫ്ലാറ്റ് -mfpu -mno-fpu -mhard-float -msoft-float -mhard-quad-float
-msoft-quad-float -mstack-പക്ഷപാതം -mno-stack-bias -മുനലൈൻഡ്-ഡബിൾസ്
-mno-unaligned-doubles -മ്യൂസർ-മോഡ് -mno-user-mode -mv8plus -mno-v8plus -എംവിഎസ്
-mno-vis -mvis2 -mno-vis2 -mvis3 -mno-vis3 -mcbcond -mno-cbcond -mfmaf -mno-fmaf
-mpopc -mno-popc -mfix-at697f -mfix-ut699

എസ്പിഎസ് ഓപ്ഷനുകൾ -mwarn-reloc -മെറർ-റെലോക്ക് -msafe-dma -munsafe-dma -ബ്രാഞ്ച്-സൂചനകൾ
-msmall-mem -mlarge-mem -mstdmain -mfixed-range=രജിസ്റ്റർ-പരിധി -mea32 -mea64
-മാഡ്രസ്സ്-സ്പേസ്-കൺവേർഷൻ -mno-വിലാസം-സ്പേസ്-പരിവർത്തനം -mcache-size=കാഷെ വലിപ്പം
-മാറ്റോമിക്-അപ്ഡേറ്റുകൾ -mno-atomic-updates

സിസ്റ്റം V ഓപ്ഷനുകൾ -Qy -ക്യു.എൻ -വൈ.പി.പാതകൾ -Ym,മുതലാളി

ടൈൽ-Gx ഓപ്ഷനുകൾ -mcpu=CPU -m32 -m64 -mbig-endian -mlittle-endian -mcmodel=കോഡ് മോഡൽ

ടൈൽപ്രോ ഓപ്ഷനുകൾ -mcpu=സിപിയു -m32

V850 ഓപ്ഷനുകൾ -mlong-കോളുകൾ -mno-ലോംഗ്-കോളുകൾ -എംപി -mno-ep -mprolog-പ്രവർത്തനം
-mno-prolog-function -mspace -mtda=n -msda=n -mzda=n -മാപ്പ്-റെഗ്സ് -mno-app-regs
-mdisable-കോൾ -mno-disable-കോൾ -mv850e2v3 -mv850e2 -mv850e1 -mv850es -mv850e
-mv850 -mv850e3v5 -മ്ലൂപ്പ് -mrelax -mlong-ജമ്പുകൾ -msoft-float -mhard-float -mgcc-abi
-mrh850-abi -mbig-സ്വിച്ച്

വാക്സ് ഓപ്ഷനുകൾ -എംജി -എംഗ്നു -മ്യൂണിക്സ്

വിസിയം ഓപ്ഷനുകൾ -mdebug -എംസിം -mfpu -mno-fpu -mhard-float -msoft-float -mcpu=cpu-തരം
-mtune=cpu-തരം -msv-മോഡ് -മ്യൂസർ-മോഡ്

വി.എം.എസ് ഓപ്ഷനുകൾ -mvms-റിട്ടേൺ-കോഡുകൾ -mdebug-main=പ്രിഫിക്‌സ് -malloc64 -mpointer-size=വലുപ്പം

VxWorks ഓപ്ഷനുകൾ -mrtp --നോൺ-സ്റ്റാറ്റിക് - ബിസ്റ്റാറ്റിക് -Bdynamic -എക്സ്ബൈൻഡ്-അലസമായ -എക്സ്ബൈൻഡ്-ഇപ്പോൾ

x86 ഓപ്ഷനുകൾ -mtune=cpu-തരം -മാർച്ച്=cpu-തരം -mtune-ctrl=ഫീച്ചർ-ലിസ്റ്റ്
-mdump-tune-features -mno-default -mfpmath=യൂണിറ്റ് -masm=ഭാഷ -mno-fancy-math-387
-mno-fp-ret-in-387 -msoft-float -mno-wid-multiply -mrtd -മലിൻ-ഇരട്ട
-mpreferred-stack-boundary=സംഖ്യ -mincoming-stack-boundary=സംഖ്യ -mcld -mcx16 -msahf
-mmovbe -mcrc32 -mrecip -mrecip=തിരഞ്ഞെടുക്കുക -mvzeroupper -mprefer-avx128 -mmmx -msse -msse2
-msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -mavx -mavx2 -mavx512f -mavx512pf -mavx512er
-mavx512cd -ംഷ -മേസ് -mpclmul -mfsgsbase -mrdrnd -mf16c -എംഎഫ്എംഎ -mprefetchwt1
-mclflushopt -mxsavec -mxsaves -msse4a -m3dnow -mpopcnt -mabm -mbmi -എംടിബിഎം -mfma4 -mxop
-mlzcnt -mbmi2 -mfxsr -mxsave -mxsaveopt -mrtm -mlwp -എംഎംപിഎക്സ് -mmwaitx -mthreads
-mno-align-stringops -minline-all-stringops -minline-stringops-dynamically
-mstringop-strategy=alga ഇംഗ്ലീഷ് -mmemcpy-strategy=കൗശലം -mmemset-strategy=കൗശലം
-mpush-args -മക്യുമുലേറ്റ്-ഔട്ട്‌ഗോയിംഗ്-ആർഗ്സ് -m128bit-നീണ്ട-ഇരട്ട -m96bit-നീണ്ട-ഇരട്ട
-mlong-ഇരട്ട-64 -mlong-ഇരട്ട-80 -mlong-ഇരട്ട-128 -mregparm=സംഖ്യ -msseregparm
-mveclibabi=ടൈപ്പ് ചെയ്യുക -mvect8-ret-in-mem -mpc32 -mpc64 -mpc80 -mstackrealign
-മോമിറ്റ്-ലീഫ്-ഫ്രെയിം-പോയിന്റർ -mno-red-zone -mno-tls-direct-seg-refs -mcmodel=കോഡ് മോഡൽ
-mabi=പേര് -maddress-mode=മോഡ് -m32 -m64 -mx32 -m16 -mlarge-data-threshold=സംഖ്യ
-msse2avx -എംഫെൻട്രി -mrecord-mcount -mnop-mcount -m8bit-idiv
-mavx256-സ്പ്ലിറ്റ്-അൺലൈൻഡ്-ലോഡ് -mavx256-സ്പ്ലിറ്റ്-അൺലൈൻഡ്-സ്റ്റോർ -malign-data=ടൈപ്പ് ചെയ്യുക
-mstack-protector-guard=ഗാർഡ്

x86 വിൻഡോസ് ഓപ്ഷനുകൾ -എംകൺസോൾ -എംസിഗ്വിൻ -mno-cygwin -mdll -mnop-fun-dllimport -mthread
-മ്യൂണിക്കോട് -എംവിൻ32 -mwindows -fno-set-stack-എക്സിക്യൂട്ടബിൾ

എക്സ്സ്റ്റോമി16 ഓപ്ഷനുകൾ -എംസിം

എക്സ്റ്റെൻസ ഓപ്ഷനുകൾ -mconst16 -mno-const16 -mfused-madd -mno-fused-madd -mforce-no-pic
-serialize-അസ്ഥിരമായ -mno-serialize-volatile -mtext-section-literals
-mno-text-section-literals -mtarget-align -mno-target-align -മോംഗ്കോളുകൾ
-mno-longcalls

zSeries ഓപ്ഷനുകൾ S/390, zSeries ഓപ്ഷനുകൾ കാണുക.

കോഡ് തലമുറ ഓപ്ഷനുകൾ
-fcal-save-reg -fcall-ഉപയോഗിച്ച-reg -ഘടിപ്പിച്ചത്-reg - ഒഴിവാക്കലുകൾ -fnon-call-exceptions
-fdelete-dead-exceptions -ഫൺവിൻഡ്-ടേബിളുകൾ -fasynchronous-unwind-tables -fno-gnu-unique
-finhibit-size-directive -ഫിൻസ്ട്രമെന്റ്-ഫംഗ്ഷനുകൾ
-finstrument-functions-exclude-function-list=സിം,സിം...
-finstrument-functions-exclude-file-list=ഫയല്,ഫയല്... -fno-common -fno-ident
-fpcc-struct-return -fpic -fPIC -fpie -fPIE -fno-ജമ്പ്-ടേബിളുകൾ -frecord-gcc-സ്വിച്ചുകൾ
-ഫ്രെഗ്-സ്ട്രക്റ്റ്-റിട്ടേൺ -fshort-enums -fshort-ഇരട്ട -fshort-wchar -fverbose-asm
-fpack-struct[=n] -fstack-ചെക്ക് -fstack-limit-register=reg -fstack-limit-symbol=സിം
-fno-stack-limit -fsplit-stack -ഫ്ലീഡിംഗ്-അണ്ടർസ്കോർ -ftls-model=മാതൃക
-fstack-reuse=പുനരുപയോഗ_നില -ftrapv -fwrapv -fbounds-ചെക്ക്
-fvisibility=[സ്ഥിരസ്ഥിതി|ആന്തരിക|മറച്ചു|സംരക്ഷിച്ചിരിക്കുന്നു] -fstrict-volatile-bitfields
-fsync-libcalls

ഓപ്ഷനുകൾ നിയന്ത്രിക്കുന്നു The തരം of ഔട്ട്പുട്ട്
സമാഹാരത്തിൽ നാല് ഘട്ടങ്ങൾ വരെ ഉൾപ്പെടാം: പ്രീപ്രോസസ്സിംഗ്, കംപൈലേഷൻ ശരിയായത്, അസംബ്ലി കൂടാതെ
ലിങ്കിംഗ്, എല്ലായ്പ്പോഴും ആ ക്രമത്തിൽ. പലതും പ്രീപ്രോസസ് ചെയ്യാനും കംപൈൽ ചെയ്യാനും ജിസിസിക്ക് കഴിയും
ഒന്നുകിൽ നിരവധി അസംബ്ലർ ഇൻപുട്ട് ഫയലുകളിലേക്കോ ഒരു അസംബ്ലർ ഇൻപുട്ട് ഫയലിലേക്കോ ഫയലുകൾ; പിന്നെ
ഓരോ അസംബ്ലർ ഇൻപുട്ട് ഫയലും ഒരു ഒബ്ജക്റ്റ് ഫയൽ നിർമ്മിക്കുന്നു, കൂടാതെ ലിങ്കിംഗ് എല്ലാ ഒബ്ജക്റ്റിനെയും സംയോജിപ്പിക്കുന്നു
ഫയലുകൾ (പുതുതായി കംപൈൽ ചെയ്തവയും ഇൻപുട്ടായി വ്യക്തമാക്കിയവയും) ഒരു എക്സിക്യൂട്ടബിൾ ഫയലിലേക്ക്.

തന്നിരിക്കുന്ന ഏതൊരു ഇൻപുട്ട് ഫയലിനും, ഫയലിന്റെ നാമ സഫിക്സ് ഏത് തരത്തിലുള്ള കംപൈലേഷൻ ആണെന്ന് നിർണ്ണയിക്കുന്നു
ചെയ്തു:

ഫയല്.c
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യേണ്ട സി സോഴ്സ് കോഡ്.

ഫയല്.i
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യാൻ പാടില്ലാത്ത സി സോഴ്സ് കോഡ്.

ഫയല്.ii
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യാൻ പാടില്ലാത്ത C++ സോഴ്സ് കോഡ്.

ഫയല്.m
ഒബ്ജക്റ്റീവ്-സി സോഴ്സ് കോഡ്. എന്നതുമായി നിങ്ങൾ ലിങ്ക് ചെയ്യണം എന്നത് ശ്രദ്ധിക്കുക ലിബോബ്ജിസി ഉണ്ടാക്കാൻ ലൈബ്രറി
ഒബ്ജക്റ്റീവ്-സി പ്രോഗ്രാം വർക്ക്.

ഫയല്.മൈ
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യാൻ പാടില്ലാത്ത ഒബ്ജക്റ്റീവ്-സി സോഴ്സ് കോഡ്.

ഫയല്.എംഎം
ഫയല്.M
ഒബ്ജക്റ്റീവ്-സി++ സോഴ്സ് കോഡ്. എന്നതുമായി നിങ്ങൾ ലിങ്ക് ചെയ്യണം എന്നത് ശ്രദ്ധിക്കുക ലിബോബ്ജിസി ഉണ്ടാക്കാൻ ലൈബ്രറി
ഒരു ഒബ്ജക്റ്റീവ്-സി++ പ്രോഗ്രാം വർക്ക്. അതല്ല .M M എന്ന അക്ഷര മൂലധനത്തെ സൂചിപ്പിക്കുന്നു.

ഫയല്.mii
ഒബ്ജക്റ്റീവ്-സി++ സോഴ്സ് കോഡ്, അത് മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യാൻ പാടില്ല.

ഫയല്.h
C, C++, Objective-C അല്ലെങ്കിൽ Objective-C++ എന്ന തലക്കെട്ട് ഫയൽ ഒരു പ്രീ കംപൈൽ ആക്കി മാറ്റണം
തലക്കെട്ട് (സ്ഥിരസ്ഥിതി), അല്ലെങ്കിൽ C, C++ ഹെഡ്ഡർ ഫയൽ ഒരു Ada സ്പെസിഫിക്കേഷനാക്കി മാറ്റും (വഴി
-fdump-ada-spec സ്വിച്ച്).

ഫയല്.cc
ഫയല്.cp
ഫയല്.cxx
ഫയല്.cpp
ഫയല്.സി.പി.പി
ഫയല്.c++
ഫയല്.C
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യേണ്ട സി++ സോഴ്സ് കോഡ്. എന്നതിൽ ശ്രദ്ധിക്കുക .cxx, അവസാനത്തെ രണ്ട് അക്ഷരങ്ങൾ
രണ്ടും അക്ഷരാർത്ഥത്തിൽ ആയിരിക്കണം x. അതുപോലെ, .C ഒരു അക്ഷര മൂലധനം C യെ സൂചിപ്പിക്കുന്നു.

ഫയല്.എംഎം
ഫയല്.M
ഒബ്ജക്റ്റീവ്-സി++ സോഴ്സ് കോഡ് അത് മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യണം.

ഫയല്.mii
ഒബ്ജക്റ്റീവ്-സി++ സോഴ്സ് കോഡ്, അത് മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യാൻ പാടില്ല.

ഫയല്.hh
ഫയല്.H
ഫയല്.hp
ഫയല്.hxx
ഫയല്.hpp
ഫയല്.എച്ച്പിപി
ഫയല്.h++
ഫയല്.tcc
C++ ഹെഡർ ഫയൽ ഒരു പ്രീ കംപൈൽഡ് ഹെഡർ അല്ലെങ്കിൽ Ada സ്പെക് ആക്കി മാറ്റണം.

ഫയല്.f
ഫയല്.വേണ്ടി
ഫയല്.ftn
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യാൻ പാടില്ലാത്ത ഫോർട്രാൻ സോഴ്സ് കോഡ് ഫിക്സഡ് ഫോം.

ഫയല്.F
ഫയല്.വേണ്ടി
ഫയല്.fpp
ഫയല്.എഫ്പിപി
ഫയല്.എഫ്.ടി.എൻ
നിശ്ചിത ഫോം ഫോർട്രാൻ സോഴ്സ് കോഡ് അത് മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യണം (പരമ്പരാഗതമായി
പ്രീപ്രൊസസ്സർ).

ഫയല്.f90
ഫയല്.f95
ഫയല്.f03
ഫയല്.f08
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യാൻ പാടില്ലാത്ത ഫോർട്രാൻ സോഴ്സ് കോഡ് സൗജന്യ ഫോം.

ഫയല്.F90
ഫയല്.F95
ഫയല്.F03
ഫയല്.F08
ഫ്രീ ഫോം ഫോർട്രാൻ സോഴ്സ് കോഡ് മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്തിരിക്കണം (പരമ്പരാഗതമായി
പ്രീപ്രൊസസ്സർ).

ഫയല്.പോകൂ
സോഴ്സ് കോഡിലേക്ക് പോകുക.

ഫയല്.ആഡ്സ്
ഒരു ലൈബ്രറി യൂണിറ്റ് ഡിക്ലറേഷൻ അടങ്ങുന്ന Ada സോഴ്സ് കോഡ് ഫയൽ (ഒരു പ്രഖ്യാപനം
പാക്കേജ്, ഉപപ്രോഗ്രാം, അല്ലെങ്കിൽ ജനറിക്, അല്ലെങ്കിൽ ഒരു പൊതു തൽക്ഷണം), അല്ലെങ്കിൽ ഒരു ലൈബ്രറി യൂണിറ്റ്
പുനർനാമകരണ പ്രഖ്യാപനം (ഒരു പാക്കേജ്, ജനറിക്, അല്ലെങ്കിൽ ഉപപ്രോഗ്രാം പുനർനാമകരണ പ്രഖ്യാപനം). അത്തരം
ഫയലുകൾ എന്നും വിളിക്കുന്നു നവ്യ.

ഫയല്.adb
ഒരു ലൈബ്രറി യൂണിറ്റ് ബോഡി (ഒരു ഉപപ്രോഗ്രാം അല്ലെങ്കിൽ പാക്കേജ് ബോഡി) അടങ്ങുന്ന Ada സോഴ്സ് കോഡ് ഫയൽ.
അത്തരം ഫയലുകൾ എന്നും വിളിക്കപ്പെടുന്നു മൃതദേഹങ്ങൾ.

ഫയല്.s
അസംബ്ലർ കോഡ്.

ഫയല്.S
ഫയല്.sx
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്യേണ്ട അസംബ്ലർ കോഡ്.

മറ്റ്
ലിങ്കിംഗിലേക്ക് നേരിട്ട് നൽകേണ്ട ഒരു ഒബ്‌ജക്റ്റ് ഫയൽ. അംഗീകൃതമല്ലാത്ത ഏതെങ്കിലും ഫയലിന്റെ പേര്
പ്രത്യയം ഈ രീതിയിൽ കൈകാര്യം ചെയ്യുന്നു.

ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇൻപുട്ട് ഭാഷ വ്യക്തമായി വ്യക്തമാക്കാൻ കഴിയും -x ഓപ്ഷൻ:

-x ഭാഷ
വ്യക്തമായി വ്യക്തമാക്കുക ഭാഷ ഇനിപ്പറയുന്ന ഇൻപുട്ട് ഫയലുകൾക്കായി (അനുവദിക്കുന്നതിന് പകരം
കംപൈലർ ഫയലിന്റെ പേര് സഫിക്സ് അടിസ്ഥാനമാക്കി ഒരു സ്ഥിരസ്ഥിതി തിരഞ്ഞെടുക്കുക). ഈ ഓപ്ഷൻ എല്ലാവർക്കും ബാധകമാണ്
അടുത്തത് വരെ ഇൻപുട്ട് ഫയലുകൾ പിന്തുടരുന്നു -x ഓപ്ഷൻ. സാധ്യമായ മൂല്യങ്ങൾ ഭാഷ ആകുന്നു:

സി സി-ഹെഡർ cpp-ഔട്ട്പുട്ട്
c++ c++-ഹെഡർ c++-cpp-ഔട്ട്‌പുട്ട്
ഒബ്ജക്റ്റീവ്-സി ഒബ്ജക്ടീവ്-സി-ഹെഡർ ഒബ്ജക്റ്റീവ്-സി-സിപിപി-ഔട്ട്പുട്ട്
ഒബ്ജക്റ്റീവ്-സി++ ഒബ്ജക്റ്റീവ്-സി++-ഹെഡർ ഒബ്ജക്റ്റീവ്-സി++-സിപിപി-ഔട്ട്‌പുട്ട്
അസംബ്ലർ അസംബ്ലർ-വിത്ത്-സിപിപി
അഡ
f77 f77-cpp-input f95 f95-cpp-input
go
ജാവ

-x ആരും
ഒരു ഭാഷയുടെ ഏത് സ്പെസിഫിക്കേഷനും ഓഫാക്കുക, അതുവഴി തുടർന്നുള്ള ഫയലുകൾ കൈകാര്യം ചെയ്യപ്പെടും
അവയുടെ ഫയൽ നാമ സഫിക്സുകൾ അനുസരിച്ച് (അത് പോലെ -x ഉപയോഗിച്ചിട്ടില്ല).

-പാസ്-എക്സിറ്റ്-കോഡുകൾ
സാധാരണയായി ജിസി കംപൈലറിന്റെ ഏതെങ്കിലും ഘട്ടം തിരിച്ചെത്തിയാൽ, 1 എന്ന കോഡ് ഉപയോഗിച്ച് പ്രോഗ്രാം പുറത്തുകടക്കുന്നു
വിജയിക്കാത്ത റിട്ടേൺ കോഡ്. നിങ്ങൾ വ്യക്തമാക്കിയാൽ -പാസ്-എക്സിറ്റ്-കോഡുകൾ, ജിസി പകരം പ്രോഗ്രാം
ഒരു പിശക് റിട്ടേൺ ചെയ്യുന്ന ഏത് ഘട്ടവും സൃഷ്ടിക്കുന്ന സംഖ്യാപരമായി ഏറ്റവും ഉയർന്ന പിശകോടെയാണ് മടങ്ങുന്നത്
സൂചന. സി, സി++, ഫോർട്രാൻ ഫ്രണ്ട് എൻഡുകൾ എന്നിവ ആന്തരിക കംപൈലർ പിശകാണെങ്കിൽ 4 നൽകുന്നു
നേരിടുന്നുണ്ട്.

സമാഹാരത്തിന്റെ ചില ഘട്ടങ്ങൾ മാത്രം വേണമെങ്കിൽ, നിങ്ങൾക്ക് ഉപയോഗിക്കാം -x (അല്ലെങ്കിൽ ഫയൽ നാമ സഫിക്സുകൾ)
പറയാൻ ജിസി എവിടെ തുടങ്ങണം, കൂടാതെ ഓപ്ഷനുകളിലൊന്ന് -c, -S, അഥവാ -E എവിടെ എന്ന് പറയാൻ ജിസി ആണ്
നിർത്തുക. ചില കോമ്പിനേഷനുകൾ (ഉദാഹരണത്തിന്, -x cpp-ഔട്ട്പുട്ട് -E) നിർദേശിക്കുക ജിസി ചെയ്യാൻ
ഒന്നുമില്ല.

-c ഉറവിട ഫയലുകൾ കംപൈൽ ചെയ്യുക അല്ലെങ്കിൽ കൂട്ടിച്ചേർക്കുക, പക്ഷേ ലിങ്ക് ചെയ്യരുത്. ലിങ്കിംഗ് ഘട്ടം ലളിതമാണ്
ചെയ്തിട്ടില്ല. ഓരോ സോഴ്സ് ഫയലിനും ഒരു ഒബ്ജക്റ്റ് ഫയലിന്റെ രൂപത്തിലാണ് ആത്യന്തിക ഔട്ട്പുട്ട്.

സ്ഥിരസ്ഥിതിയായി, ഒരു സോഴ്സ് ഫയലിന്റെ ഒബ്ജക്റ്റ് ഫയലിന്റെ പേര് സഫിക്സ് മാറ്റിസ്ഥാപിച്ചാണ് നിർമ്മിച്ചിരിക്കുന്നത് .c,
.i, .sമുതലായവ., കൂടെ .o.

കംപൈലേഷനോ അസംബ്ലിയോ ആവശ്യമില്ലാത്ത, തിരിച്ചറിയാത്ത ഇൻപുട്ട് ഫയലുകൾ അവഗണിക്കപ്പെടുന്നു.

-S സമാഹാരത്തിന്റെ ശരിയായ ഘട്ടത്തിന് ശേഷം നിർത്തുക; കൂട്ടിച്ചേർക്കരുത്. എന്നതിലാണ് ഔട്ട്പുട്ട്
ഓരോ നോൺ-അസംബ്ലർ ഇൻപുട്ട് ഫയലിനും ഒരു അസംബ്ലർ കോഡ് ഫയലിന്റെ രൂപം.

സ്ഥിരസ്ഥിതിയായി, ഒരു സോഴ്സ് ഫയലിന്റെ അസംബ്ലർ ഫയലിന്റെ പേര് സഫിക്സ് മാറ്റിസ്ഥാപിച്ചാണ് നിർമ്മിച്ചിരിക്കുന്നത്.
.c, .iമുതലായവ., കൂടെ .s.

കംപൈലേഷൻ ആവശ്യമില്ലാത്ത ഇൻപുട്ട് ഫയലുകൾ അവഗണിക്കപ്പെടും.

-E പ്രീപ്രോസസിംഗ് ഘട്ടത്തിന് ശേഷം നിർത്തുക; കമ്പൈലർ ശരിയായി പ്രവർത്തിപ്പിക്കരുത്. ഔട്ട്പുട്ട് ഉണ്ട്
സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലേക്ക് അയക്കുന്ന പ്രീപ്രോസസ്ഡ് സോഴ്സ് കോഡിന്റെ രൂപം.

പ്രീപ്രോസസ്സ് ആവശ്യമില്ലാത്ത ഇൻപുട്ട് ഫയലുകൾ അവഗണിക്കപ്പെടും.

-o ഫയല്
ഫയലിൽ ഔട്ട്പുട്ട് സ്ഥാപിക്കുക ഫയല്. ഏത് തരത്തിലുള്ള ഔട്ട്പുട്ടും ഉത്പാദിപ്പിക്കപ്പെടുന്നുവോ അത് ബാധകമാണ്,
അത് എക്സിക്യൂട്ടബിൾ ഫയലോ ഒബ്ജക്റ്റ് ഫയലോ അസംബ്ലർ ഫയലോ പ്രീപ്രോസസ്ഡ് സിയോ ആകട്ടെ
കോഡ്.

If -o വ്യക്തമാക്കിയിട്ടില്ല, ഒരു എക്സിക്യൂട്ടബിൾ ഫയൽ ഇടുക എന്നതാണ് സ്ഥിരസ്ഥിതി a.out, വസ്തു
എന്നതിനായുള്ള ഫയൽ source.suffix in source.o, അതിന്റെ അസംബ്ലർ ഫയൽ ഇൻ ഉറവിടം.എസ്, ഒരു മുൻകൂട്ടി തയ്യാറാക്കിയത്
ഹെഡ്ഡർ ഫയൽ ഇൻ source.suffix.gch, കൂടാതെ സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലെ എല്ലാ പ്രീപ്രോസസ്ഡ് സി ഉറവിടവും.

-v ഘട്ടങ്ങൾ പ്രവർത്തിപ്പിക്കുന്നതിന് എക്സിക്യൂട്ട് ചെയ്ത കമാൻഡുകൾ പ്രിന്റ് ചെയ്യുക (സാധാരണ പിശക് ഔട്ട്പുട്ടിൽ).
സമാഹാരം. കംപൈലർ ഡ്രൈവർ പ്രോഗ്രാമിന്റെയും പതിപ്പിന്റെയും പതിപ്പ് നമ്പറും പ്രിന്റ് ചെയ്യുക
പ്രീപ്രൊസസ്സറും കംപൈലറും ശരിയായി.

-###
പോലെ -v അല്ലാതെ കമാൻഡുകൾ എക്സിക്യൂട്ട് ചെയ്യില്ല, കൂടാതെ ആർഗ്യുമെന്റുകൾ ഉദ്ധരിക്കപ്പെടും
ആൽഫാന്യൂമെറിക് പ്രതീകങ്ങൾ അല്ലെങ്കിൽ "./-_" മാത്രം അടങ്ങിയിരിക്കുന്നു. ഷെൽ സ്ക്രിപ്റ്റുകൾക്ക് ഇത് ഉപയോഗപ്രദമാണ്
ഡ്രൈവർ സൃഷ്ടിച്ച കമാൻഡ് ലൈനുകൾ ക്യാപ്‌ചർ ചെയ്യുക.

-പൈപ്പ്
വിവിധ ഘട്ടങ്ങൾ തമ്മിലുള്ള ആശയവിനിമയത്തിന് താൽക്കാലിക ഫയലുകളേക്കാൾ പൈപ്പുകൾ ഉപയോഗിക്കുക
സമാഹാരം. അസംബ്ലർക്ക് വായിക്കാൻ കഴിയാത്ത ചില സിസ്റ്റങ്ങളിൽ ഇത് പ്രവർത്തിക്കുന്നതിൽ പരാജയപ്പെടുന്നു
ഒരു പൈപ്പിൽ നിന്ന്; എന്നാൽ ഗ്നു അസംബ്ലറിന് കുഴപ്പമില്ല.

--സഹായിക്കൂ
മനസ്സിലാക്കിയ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകളുടെ ഒരു വിവരണം (സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിൽ) പ്രിന്റ് ചെയ്യുക
ജിസി. ആണെങ്കിൽ -v ഓപ്ഷനും അപ്പോൾ വ്യക്തമാക്കിയിട്ടുണ്ട് --സഹായിക്കൂ പലതിലേക്കും കൈമാറ്റം ചെയ്യപ്പെടുന്നു
അഭ്യർത്ഥിച്ച പ്രക്രിയകൾ ജിസി, അതുവഴി അവർക്ക് കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ പ്രദർശിപ്പിക്കാൻ കഴിയും
സ്വീകരിക്കുക. എങ്കിൽ -വെക്സ്ട്ര ഓപ്ഷനും വ്യക്തമാക്കിയിട്ടുണ്ട് (മുൻപ് --സഹായിക്കൂ ഓപ്ഷൻ),
പിന്നീട് അവയുമായി ബന്ധപ്പെട്ട ഡോക്യുമെന്റേഷൻ ഇല്ലാത്ത കമാൻഡ്-ലൈൻ ഓപ്ഷനുകളും ഉണ്ട്
പ്രദർശിപ്പിക്കുന്നു.

--ലക്ഷ്യം-സഹായം
ടാർഗെറ്റ്-നിർദ്ദിഷ്ട കമാൻഡ്-ലൈൻ ഓപ്ഷനുകളുടെ ഒരു വിവരണം (സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിൽ) പ്രിന്റ് ചെയ്യുക
ഓരോ ഉപകരണത്തിനും. ചില ടാർഗെറ്റുകൾക്ക് അധിക ടാർഗെറ്റ്-നിർദ്ദിഷ്ട വിവരങ്ങളും ഉണ്ടാകാം
അച്ചടിച്ചു.

--സഹായം={ക്ലാസ്|[^]യോഗമാക്കുക}[...]
മനസ്സിലാക്കിയ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകളുടെ ഒരു വിവരണം (സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിൽ) പ്രിന്റ് ചെയ്യുക
എല്ലാ നിർദ്ദിഷ്‌ട ക്ലാസുകളിലേക്കും യോഗ്യതകളിലേക്കും യോജിക്കുന്ന കംപൈലർ. ഇവയാണ്
പിന്തുണയ്ക്കുന്ന ക്ലാസുകൾ:

ഒപ്റ്റിമൈസറുകൾ
കംപൈലർ പിന്തുണയ്ക്കുന്ന എല്ലാ ഒപ്റ്റിമൈസേഷൻ ഓപ്ഷനുകളും പ്രദർശിപ്പിക്കുക.

മുന്നറിയിപ്പുകൾ
കമ്പൈലർ നിർമ്മിക്കുന്ന മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ നിയന്ത്രിക്കുന്ന എല്ലാ ഓപ്ഷനുകളും പ്രദർശിപ്പിക്കുക.

ലക്ഷ്യം
ടാർഗെറ്റ്-നിർദ്ദിഷ്ട ഓപ്ഷനുകൾ പ്രദർശിപ്പിക്കുക. പോലെയല്ല --ലക്ഷ്യം-സഹായം ഓപ്ഷൻ എന്നിരുന്നാലും, ലക്ഷ്യം-
ലിങ്കറിന്റെയും അസംബ്ലറിന്റെയും നിർദ്ദിഷ്ട ഓപ്ഷനുകൾ പ്രദർശിപ്പിക്കില്ല. ഈ കാരണം ആണ്
ആ ഉപകരണങ്ങൾ നിലവിൽ വിപുലീകരിച്ചതിനെ പിന്തുണയ്ക്കുന്നില്ല --സഹായം= വാക്യഘടന.

പാരാമുകൾ
അംഗീകരിച്ച മൂല്യങ്ങൾ പ്രദർശിപ്പിക്കുക --പരം ഓപ്ഷൻ.

ഭാഷ
പിന്തുണയ്ക്കുന്ന ഓപ്ഷനുകൾ പ്രദർശിപ്പിക്കുക ഭാഷഎവിടെ ഭാഷ അതിലൊന്നിന്റെ പേരാണ്
GCC-യുടെ ഈ പതിപ്പിൽ പിന്തുണയ്ക്കുന്ന ഭാഷകൾ.

സാധാരണ
എല്ലാ ഭാഷകൾക്കും പൊതുവായുള്ള ഓപ്ഷനുകൾ പ്രദർശിപ്പിക്കുക.

പിന്തുണയ്‌ക്കുന്ന യോഗ്യതകൾ ഇവയാണ്:

രേഖകളില്ലാത്ത
രേഖപ്പെടുത്താത്ത ഓപ്ഷനുകൾ മാത്രം പ്രദർശിപ്പിക്കുക.

ചേർന്നു
ഒരേ ചിഹ്നത്തിന് ശേഷം ദൃശ്യമാകുന്ന ഒരു ആർഗ്യുമെന്റ് എടുക്കുന്ന ഓപ്ഷനുകൾ പ്രദർശിപ്പിക്കുക
ഇനിപ്പറയുന്നതുപോലുള്ള തുടർച്ചയായ വാചകം: --സഹായം=ലക്ഷ്യം.

പ്രത്യേക
ഒരു പ്രത്യേക പദമായി ദൃശ്യമാകുന്ന ഒരു ആർഗ്യുമെന്റ് എടുക്കുന്ന ഓപ്ഷനുകൾ പ്രദർശിപ്പിക്കുക
ഒറിജിനൽ ഓപ്ഷൻ, ഉദാഹരണത്തിന്: -o ഔട്ട്പുട്ട്-ഫയൽ.

ഇപ്രകാരം പിന്തുണയ്ക്കുന്ന എല്ലാ രേഖകളില്ലാത്ത ടാർഗെറ്റ്-നിർദ്ദിഷ്ട സ്വിച്ചുകളും പ്രദർശിപ്പിക്കുന്നതിന് ഉദാഹരണത്തിന്
കംപൈലർ, ഉപയോഗിക്കുക:

--സഹായം=ലക്ഷ്യം, രേഖപ്പെടുത്താത്തത്

ഒരു ക്വാളിഫയറിന്റെ അർത്ഥം എന്നതിന്റെ പ്രിഫിക്‌സ് ഉപയോഗിച്ച് വിപരീതമാക്കാം ^ സ്വഭാവം, അങ്ങനെ
എല്ലാ ബൈനറി മുന്നറിയിപ്പ് ഓപ്‌ഷനുകളും പ്രദർശിപ്പിക്കുന്നതിനുള്ള ഉദാഹരണം (അതായത്, ഓൺ അല്ലെങ്കിൽ ഓഫ് ആയവ
ഒരു വാദഗതി എടുക്കുന്നില്ല) അതിന് ഒരു വിവരണമുണ്ട്, ഉപയോഗിക്കുക:

--സഹായം=മുന്നറിയിപ്പുകൾ,^ജോയിൻ ചെയ്തു,^രേഖകളില്ലാത്തത്

എന്ന വാദം --സഹായം= വിപരീത യോഗ്യതയുള്ളവരെ മാത്രം ഉൾക്കൊള്ളാൻ പാടില്ല.

പല ക്ലാസുകളും സംയോജിപ്പിക്കുന്നത് സാധ്യമാണ്, എന്നിരുന്നാലും ഇത് സാധാരണയായി ഔട്ട്പുട്ടിനെ പരിമിതപ്പെടുത്തുന്നു
പ്രദർശിപ്പിക്കാൻ ഒന്നുമില്ല എന്നതുതന്നെ. ഇത് പ്രവർത്തിക്കുന്ന ഒരു കേസ്, എപ്പോൾ എന്നതാണ്
ക്ലാസുകളിൽ ഒന്നാണ് ലക്ഷ്യം. ഉദാഹരണത്തിന്, എല്ലാ ടാർഗെറ്റ്-നിർദ്ദിഷ്ടവും പ്രദർശിപ്പിക്കുന്നതിന്
ഒപ്റ്റിമൈസേഷൻ ഓപ്ഷനുകൾ, ഉപയോഗിക്കുക:

--സഹായം=ലക്ഷ്യം, ഒപ്റ്റിമൈസറുകൾ

ദി --സഹായം= കമാൻഡ് ലൈനിൽ ഓപ്ഷൻ ആവർത്തിക്കാം. ഓരോ തുടർച്ചയായ ഉപയോഗവും പ്രദർശിപ്പിക്കുന്നു
ഇതിനകം പ്രദർശിപ്പിച്ചവ ഒഴിവാക്കി, അതിന്റെ അഭ്യർത്ഥിച്ച ക്ലാസ് ഓപ്‌ഷനുകൾ.

എങ്കില് -Q എന്നതിന് മുമ്പുള്ള കമാൻഡ് ലൈനിൽ ഓപ്ഷൻ ദൃശ്യമാകുന്നു --സഹായം= ഓപ്ഷൻ, പിന്നെ
വിവരണാത്മക വാചകം പ്രദർശിപ്പിക്കുന്നത് --സഹായം= മാറ്റിയിരിക്കുന്നു. പ്രദർശിപ്പിച്ചത് വിവരിക്കുന്നതിന് പകരം
ഓപ്ഷനുകൾ, ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടോ, അപ്രാപ്‌തമാക്കിയിട്ടുണ്ടോ അല്ലെങ്കിൽ സജ്ജമാക്കിയിട്ടുണ്ടോ എന്നതിനെക്കുറിച്ചുള്ള സൂചന നൽകുന്നു
ഒരു നിർദ്ദിഷ്‌ട മൂല്യത്തിലേക്ക് (കമ്പൈലറിന് ഇത് അറിയാവുന്ന പോയിന്റിൽ
--സഹായം= ഓപ്ഷൻ ഉപയോഗിക്കുന്നു).

ARM പോർട്ടിൽ നിന്നുള്ള വെട്ടിച്ചുരുക്കിയ ഉദാഹരണം ഇതാ ജിസി:

% gcc -Q -mabi=2 --help=target -c
ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ ടാർഗെറ്റ് നിർദ്ദിഷ്ടമാണ്:
-മാബി= 2
-mabort-on-noreturn [വൈകല്യം]
-mapcs [അപ്രാപ്തമാക്കി]

മുൻ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകളുടെ ഫലങ്ങളോട് ഔട്ട്പുട്ട് സെൻസിറ്റീവ് ആണ്, അതിനാൽ
ഉദാഹരണമായി ഏതൊക്കെ ഒപ്റ്റിമൈസേഷനുകളാണ് പ്രവർത്തനക്ഷമമാക്കിയതെന്ന് കണ്ടെത്താൻ കഴിയും -O2 ഉപയോഗിച്ച്:

-Q -O2 --help=optimizers

പകരമായി, ഏത് ബൈനറി ഒപ്റ്റിമൈസേഷനാണ് പ്രവർത്തനക്ഷമമാക്കിയതെന്ന് നിങ്ങൾക്ക് കണ്ടെത്താനാകും -O3 ഉപയോഗിച്ച്:

gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
വ്യത്യാസം /tmp/O2-opts /tmp/O3-opts | grep പ്രവർത്തനക്ഷമമാക്കി

-നോ-കാനോനിക്കൽ-പ്രിഫിക്സുകൾ
പ്രതീകാത്മക ലിങ്കുകളൊന്നും വികസിപ്പിക്കരുത്, അവലംബങ്ങൾ പരിഹരിക്കുക /../ or /./, അല്ലെങ്കിൽ പാത ഉണ്ടാക്കുക
ഒരു ആപേക്ഷിക പ്രിഫിക്സ് സൃഷ്ടിക്കുമ്പോൾ കേവലം.

--പതിപ്പ്
അഭ്യർത്ഥിച്ച GCC-യുടെ പതിപ്പ് നമ്പറും പകർപ്പവകാശങ്ങളും പ്രദർശിപ്പിക്കുക.

- റാപ്പർ
ഒരു റാപ്പർ പ്രോഗ്രാമിന് കീഴിൽ എല്ലാ ഉപകമാൻഡുകളും അഭ്യർത്ഥിക്കുക. റാപ്പർ പ്രോഗ്രാമിന്റെ പേരും
അതിന്റെ പാരാമീറ്ററുകൾ കോമ വേർതിരിക്കുന്ന പട്ടികയായി കൈമാറുന്നു.

gcc -c tc -wrapper gdb,--args

ഇത് എല്ലാ ഉപപ്രോഗ്രാമുകളേയും അഭ്യർത്ഥിക്കുന്നു ജിസി കീഴെ ജിഡിബി --ആർഗ്സ്, അങ്ങനെ ആവാഹനം ച്ച്ക്സനുമ്ക്സ is
ജിഡിബി --ആർഗ്സ് ച്ച്ക്സനുമ്ക്സ ....

-fplugin=പേര്.സോ
ഫയലിൽ പ്ലഗിൻ കോഡ് ലോഡ് ചെയ്യുക പേര്.അതിനാൽ, dlopen'd ചെയ്യേണ്ട ഒരു പങ്കിട്ട ഒബ്‌ജക്റ്റ് ആണെന്ന് അനുമാനിക്കുന്നു
കമ്പൈലർ. പ്ലഗിൻ തിരിച്ചറിയാൻ പങ്കിട്ട ഒബ്‌ജക്റ്റ് ഫയലിന്റെ അടിസ്ഥാന നാമം ഉപയോഗിക്കുന്നു
ആർഗ്യുമെന്റ് പാഴ്‌സിംഗ് ആവശ്യങ്ങൾക്കായി (കാണുക -fplugin-arg-പേര്-കീ=മൂല്യം താഴെ). ഓരോന്നും
പ്ലഗിൻ API-യിൽ വ്യക്തമാക്കിയിട്ടുള്ള കോൾബാക്ക് ഫംഗ്‌ഷനുകൾ പ്ലഗിൻ നിർവ്വചിക്കേണ്ടതാണ്.

-fplugin-arg-പേര്-കീ=മൂല്യം
വിളിക്കപ്പെടുന്ന ഒരു വാദം നിർവ്വചിക്കുക കീ മൂല്യം ഉള്ളത് മൂല്യം വിളിക്കുന്ന പ്ലഗിൻ വേണ്ടി പേര്.

-fdump-ada-spec[-മെലിഞ്ഞ]
C, C++ ഉറവിടങ്ങൾക്കും ഫയലുകൾ ഉൾപ്പെടുത്തുന്നതിനും, അനുബന്ധ Ada സ്പെസിഫിക്കേഷനുകൾ സൃഷ്ടിക്കുക.

-fada-spec-parent=യൂണിറ്റ്
അതുമായി ബന്ധപെട്ടു -fdump-ada-spec[-മെലിഞ്ഞ] മുകളിൽ, ചൈൽഡ് യൂണിറ്റുകളായി Ada സ്പെസിഫിക്കേഷനുകൾ സൃഷ്ടിക്കുക
പാരന്റ് യൂണിറ്റ്.

-fdump-go-spec=ഫയല്
ഏത് ഭാഷയിലും ഇൻപുട്ട് ഫയലുകൾക്കായി, അനുബന്ധ Go പ്രഖ്യാപനങ്ങൾ സൃഷ്ടിക്കുക ഫയല്. ഈ
Go "const", "type", "var", "func" പ്രഖ്യാപനങ്ങൾ ജനറേറ്റുചെയ്യുന്നു, അത് ഉപയോഗപ്രദമായ ഒരു മാർഗമായിരിക്കാം
മറ്റേതെങ്കിലും ഭാഷയിൽ എഴുതിയ കോഡിലേക്ക് ഒരു Go ഇന്റർഫേസ് എഴുതാൻ തുടങ്ങുക.

@ഫയല്
കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ വായിക്കുക ഫയല്. എന്നതിന് പകരം വായിച്ച ഓപ്ഷനുകൾ ചേർത്തു
യഥാർത്ഥ @ഫയല് ഓപ്ഷൻ. എങ്കിൽ ഫയല് നിലവിലില്ല, അല്ലെങ്കിൽ വായിക്കാൻ കഴിയില്ല, തുടർന്ന് ഓപ്ഷൻ
അക്ഷരാർത്ഥത്തിൽ പരിഗണിക്കും, നീക്കം ചെയ്യില്ല.

ഓപ്ഷനുകൾ ഫയല് വൈറ്റ്‌സ്‌പെയ്‌സ് കൊണ്ട് വേർതിരിച്ചിരിക്കുന്നു. ഒരു വൈറ്റ്‌സ്‌പേസ് പ്രതീകം ഉൾപ്പെടുത്തിയേക്കാം
ഒറ്റ അല്ലെങ്കിൽ ഇരട്ട ഉദ്ധരണികളിൽ മുഴുവൻ ഓപ്‌ഷനും ചുറ്റിപ്പറ്റിയുള്ള ഒരു ഓപ്ഷനിൽ. ഏതെങ്കിലും
പ്രതീകം (ഒരു ബാക്ക്‌സ്ലാഷ് ഉൾപ്പെടെ) ഉള്ള പ്രതീകം പ്രിഫിക്‌സ് ചെയ്യുന്നതിലൂടെ ഉൾപ്പെടുത്താം
ഒരു ബാക്ക്സ്ലാഷ് ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. ദി ഫയല് അതിൽ തന്നെ അധിക @ അടങ്ങിയിരിക്കാംഫയല് ഓപ്ഷനുകൾ; ഏതെങ്കിലും
അത്തരം ഓപ്ഷനുകൾ ആവർത്തിച്ച് പ്രോസസ്സ് ചെയ്യും.

സമാഹരിക്കുന്നു സി ++ പ്രോഗ്രാമുകൾ
C++ ഉറവിട ഫയലുകൾ പരമ്പരാഗതമായി സഫിക്സുകളിലൊന്ന് ഉപയോഗിക്കുന്നു .C, .cc, .cpp, .സി.പി.പി, .c++, .cp, അഥവാ
.cxx; C++ ഹെഡർ ഫയലുകൾ പലപ്പോഴും ഉപയോഗിക്കുന്നു .hh, .hpp, .H, അല്ലെങ്കിൽ (പങ്കിട്ട ടെംപ്ലേറ്റ് കോഡിനായി) .tcc; ഒപ്പം
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്ത C++ ഫയലുകൾ സഫിക്സ് ഉപയോഗിക്കുന്നു .ii. ഈ പേരുകളുള്ള ഫയലുകൾ GCC തിരിച്ചറിയുന്നു
നിങ്ങൾ കംപൈലറിനെ വിളിക്കുന്നത് പോലെ തന്നെ കംപൈലറിനെ വിളിച്ചാലും അവ C++ പ്രോഗ്രാമുകളായി കംപൈൽ ചെയ്യുന്നു
സി പ്രോഗ്രാമുകൾ (സാധാരണയായി പേരിനൊപ്പം ജിസി).

എന്നിരുന്നാലും, ഉപയോഗം ജിസി C++ ലൈബ്രറി ചേർക്കുന്നില്ല. g ++ GCC എന്നും വിളിക്കുന്ന ഒരു പ്രോഗ്രാമാണ്
C++ ലൈബ്രറിയ്‌ക്കെതിരായ ലിങ്കിംഗ് സ്വയമേവ വ്യക്തമാക്കുന്നു. അത് ചികിത്സിക്കുന്നു .c, .h ഒപ്പം .i ഫയലുകൾ
സി സോഴ്‌സ് ഫയലുകൾക്ക് പകരം സി++ സോഴ്‌സ് ഫയലുകൾ ഒഴികെ -x ഉപയോഗിക്കുന്നു. ഈ പ്രോഗ്രാമും ഉപയോഗപ്രദമാണ്
a ഉപയോഗിച്ച് ഒരു C ഹെഡ്ഡർ ഫയൽ പ്രീ കംപൈൽ ചെയ്യുമ്പോൾ .h C++ കംപൈലേഷനുകളിൽ ഉപയോഗിക്കുന്നതിനുള്ള വിപുലീകരണം. ഓൺ
നിരവധി സംവിധാനങ്ങൾ, g ++ എന്ന പേരിലും ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ട് c ++.

നിങ്ങൾ C++ പ്രോഗ്രാമുകൾ കംപൈൽ ചെയ്യുമ്പോൾ, അതേ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ നിങ്ങൾക്ക് വ്യക്തമാക്കിയേക്കാം
ഏത് ഭാഷയിലും പ്രോഗ്രാമുകൾ കംപൈൽ ചെയ്യാൻ നിങ്ങൾ ഉപയോഗിക്കുന്നു; അല്ലെങ്കിൽ C-യ്‌ക്ക് അർത്ഥവത്തായ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ
അനുബന്ധ ഭാഷകളും; അല്ലെങ്കിൽ C++ പ്രോഗ്രാമുകൾക്ക് മാത്രം അർത്ഥമുള്ള ഓപ്ഷനുകൾ.

ഓപ്ഷനുകൾ നിയന്ത്രിക്കുന്നു C പ്രാദേശിക ഭാഷ
ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ C യുടെ ഭാഷയെ നിയന്ത്രിക്കുന്നു (അല്ലെങ്കിൽ C യിൽ നിന്ന് ഉരുത്തിരിഞ്ഞ ഭാഷകൾ, C++ പോലെ,
ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++) കംപൈലർ അംഗീകരിക്കുന്നു:

-ആൻസി
സി മോഡിൽ, ഇത് തുല്യമാണ് -std=c90. C++ മോഡിൽ, ഇത് തുല്യമാണ്
-std=c++98.

ഇത് ISO C90 (എപ്പോൾ
C കോഡ് കംപൈൽ ചെയ്യുന്നു), അല്ലെങ്കിൽ സ്റ്റാൻഡേർഡ് C++ (C++ കോഡ് കംപൈൽ ചെയ്യുമ്പോൾ), "asm" കൂടാതെ
"typeof" കീവേഡുകൾ, കൂടാതെ "unix", "vax" എന്നിവയെ തിരിച്ചറിയുന്ന മുൻനിർവചിക്കപ്പെട്ട മാക്രോകളും
നിങ്ങൾ ഉപയോഗിക്കുന്ന സിസ്റ്റം തരം. ഇത് അഭികാമ്യമല്ലാത്തതും അപൂർവ്വമായി ഉപയോഗിക്കുന്നതുമായ ഐഎസ്ഒയും പ്രാപ്തമാക്കുന്നു
ട്രൈഗ്രാഫ് സവിശേഷത. സി കംപൈലറിനായി, ഇത് C++ ശൈലിയുടെ തിരിച്ചറിയൽ പ്രവർത്തനരഹിതമാക്കുന്നു //
അഭിപ്രായങ്ങളും "ഇൻലൈൻ" കീവേഡും.

ഇതര കീവേഡുകൾ "__asm__", "__extension__", "__inline__", "__typeof__"
എന്നിട്ടും ജോലി തുടരുക -ആൻസി. ഒരു ISO C പ്രോഗ്രാമിൽ അവ ഉപയോഗിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നില്ല,
തീർച്ചയായും, പക്ഷേ അവ ഉൾപ്പെടുത്തിയേക്കാവുന്ന ഹെഡർ ഫയലുകളിൽ ഇടുന്നത് ഉപയോഗപ്രദമാണ്
ഉപയോഗിച്ച് സമാഹരിച്ചിരിക്കുന്നു -ആൻസി. "__unix__" പോലെയുള്ള ഇതര മുൻകൂട്ടി നിശ്ചയിച്ചിട്ടുള്ള മാക്രോകൾ
"__vax__" എന്നിവയും ഉണ്ടോ അല്ലാതെയോ ലഭ്യമാണ് -ആൻസി.

ദി -ആൻസി ഐഎസ്ഒ ഇതര പ്രോഗ്രാമുകൾ സൗജന്യമായി നിരസിക്കാൻ ഓപ്ഷൻ കാരണമാകില്ല. വേണ്ടി
-Wpedantic കൂടാതെ ആവശ്യമാണ് -ആൻസി.

മാക്രോ "__STRICT_ANSI__" എപ്പോൾ മുൻകൂട്ടി നിശ്ചയിച്ചിരിക്കുന്നു -ആൻസി ഓപ്ഷൻ ഉപയോഗിക്കുന്നു. ചില തലക്കെട്ടുകൾ
ഫയലുകൾ ഈ മാക്രോ ശ്രദ്ധിക്കുകയും ചില ഫംഗ്‌ഷനുകൾ പ്രഖ്യാപിക്കുന്നതിൽ നിന്നോ നിർവചിക്കുന്നതിൽ നിന്നോ വിട്ടുനിൽക്കും
ISO സ്റ്റാൻഡേർഡ് ആവശ്യപ്പെടാത്ത ചില മാക്രോകൾ; ഇടപെടാതിരിക്കാനാണിത്
മറ്റ് കാര്യങ്ങൾക്കായി ഈ പേരുകൾ ഉപയോഗിച്ചേക്കാവുന്ന ഏതെങ്കിലും പ്രോഗ്രാമുകൾക്കൊപ്പം.

സാധാരണയായി അന്തർനിർമ്മിതവും എന്നാൽ ഐഎസ്ഒ സി നിർവ്വചിച്ച സെമാന്റിക്സ് ഇല്ലാത്തതുമായ ഫംഗ്ഷനുകൾ (അത്തരം
"alloca", "ffs" എന്നിവ പോലെ) എപ്പോൾ ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകളല്ല -ആൻസി ഉപയോഗിക്കുന്നു.

-std=
ഭാഷാ നിലവാരം നിർണ്ണയിക്കുക. ഈ ഓപ്ഷൻ നിലവിൽ എപ്പോൾ മാത്രമേ പിന്തുണയ്ക്കൂ
C അല്ലെങ്കിൽ C++ കംപൈൽ ചെയ്യുന്നു.

കംപൈലറിന് നിരവധി അടിസ്ഥാന മാനദണ്ഡങ്ങൾ സ്വീകരിക്കാൻ കഴിയും C90 or c++98, GNU ഭാഷാഭേദങ്ങളും
പോലുള്ള ആ മാനദണ്ഡങ്ങൾ gnu90 or gnu++98. അടിസ്ഥാന നിലവാരം വ്യക്തമാക്കുമ്പോൾ,
കംപൈലർ ആ സ്റ്റാൻഡേർഡ് പിന്തുടരുന്ന എല്ലാ പ്രോഗ്രാമുകളും ഗ്നു എക്സ്റ്റൻഷനുകൾ ഉപയോഗിക്കുന്നവയും സ്വീകരിക്കുന്നു
അതിനെ എതിർക്കരുത്. ഉദാഹരണത്തിന്, -std=c90 GCC-യുടെ ചില സവിശേഷതകൾ ഓഫാക്കുന്നു
"asm", "typeof" എന്നീ കീവേഡുകൾ പോലെയുള്ള ISO C90-യുമായി പൊരുത്തപ്പെടാത്തവ
ISO C90-ൽ അർത്ഥമില്ലാത്ത മറ്റ് GNU എക്സ്റ്റൻഷനുകൾ ഒഴിവാക്കുന്നു
ഒരു "?:" പദപ്രയോഗത്തിന്റെ മധ്യഭാഗം. മറുവശത്ത്, ഒരു സ്റ്റാൻഡേർഡിന്റെ ഗ്നു ഭാഷാഭേദം
വ്യക്തമാക്കിയിരിക്കുന്നു, കംപൈലർ പിന്തുണയ്ക്കുന്ന എല്ലാ സവിശേഷതകളും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു, അവയിൽ പോലും
സവിശേഷതകൾ അടിസ്ഥാന നിലവാരത്തിന്റെ അർത്ഥം മാറ്റുന്നു. തൽഫലമായി, ചില കർശനമായ അനുരൂപങ്ങൾ
പ്രോഗ്രാമുകൾ നിരസിക്കപ്പെട്ടേക്കാം. പ്രത്യേക മാനദണ്ഡം ഉപയോഗിക്കുന്നു -Wpedantic തിരിച്ചറിയാൻ
സ്റ്റാൻഡേർഡിന്റെ ആ പതിപ്പ് നൽകിയിരിക്കുന്ന ഗ്നു വിപുലീകരണങ്ങളാണ് സവിശേഷതകൾ. ഉദാഹരണത്തിന്
-std=gnu90 -Wpedantic C++ ശൈലിയെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു // അഭിപ്രായങ്ങൾ, സമയത്ത് -std=gnu99 -Wpedantic
ഇല്ല.

ഈ ഓപ്ഷന് ഒരു മൂല്യം നൽകണം; സാധ്യമായ മൂല്യങ്ങൾ

C90
C89
iso9899:1990
എല്ലാ ഐഎസ്ഒ സി90 പ്രോഗ്രാമുകളും പിന്തുണയ്ക്കുക (ഐഎസ്ഒ സി90യുമായി വൈരുദ്ധ്യമുള്ള ചില ഗ്നു വിപുലീകരണങ്ങൾ
വികലാംഗരാണ്). അതേ പോലെ -ആൻസി സി കോഡിനായി.

iso9899:199409
ഭേദഗതി 90 ൽ പരിഷ്കരിച്ച ISO C1.

C99
ച്ക്സനുമ്ക്സക്സ
iso9899:1999
iso9899:199x
ISO C99. ഈ സ്റ്റാൻഡേർഡ് ഗണ്യമായി പൂർണ്ണമായും പിന്തുണയ്ക്കുന്നു, മൊഡ്യൂളോ ബഗുകൾ കൂടാതെ
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രശ്നങ്ങൾ (പ്രധാനമായും എന്നാൽ പൂർണ്ണമായും ഓപ്ഷണൽ C99 സവിശേഷതകളുമായി ബന്ധപ്പെട്ടതല്ല
Annexs F, G എന്നിവയിൽ നിന്ന്). കാണുകhttp://gcc.gnu.org/c99status.html> കൂടുതൽ കാര്യങ്ങൾക്കായി
വിവരങ്ങൾ. പേരുകൾ ച്ക്സനുമ്ക്സക്സ ഒപ്പം iso9899:199x ഒഴിവാക്കിയിരിക്കുന്നു.

C11
ച്ക്സനുമ്ക്സക്സ
iso9899:2011
ISO C11, ISO C നിലവാരത്തിന്റെ 2011 പുനരവലോകനം. ഈ മാനദണ്ഡം ഗണ്യമായതാണ്
പൂർണ്ണമായി പിന്തുണയ്ക്കുന്നു, മൊഡ്യൂളോ ബഗുകൾ, ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രശ്നങ്ങൾ (പ്രധാനമായും എന്നാൽ പൂർണ്ണമായും അല്ല
Annexes F, G എന്നിവയിൽ നിന്നുള്ള ഓപ്ഷണൽ C11 ഫീച്ചറുകളുമായും ഓപ്ഷണൽ Annexes K ലും ബന്ധപ്പെട്ടത്
(ബൗണ്ട്സ്-ചെക്കിംഗ് ഇന്റർഫേസുകൾ), എൽ (അനലൈസബിലിറ്റി). പേര് ച്ക്സനുമ്ക്സക്സ ഒഴിവാക്കിയിരിക്കുന്നു.

gnu90
gnu89
ISO C90-ന്റെ GNU ഭാഷാഭേദം (ചില C99 സവിശേഷതകൾ ഉൾപ്പെടെ).

gnu99
gnu9x
ISO C99-ന്റെ GNU ഭാഷ. പേര് gnu9x ഒഴിവാക്കിയിരിക്കുന്നു.

gnu11
gnu1x
ISO C11-ന്റെ GNU ഭാഷ. സി കോഡിന്റെ ഡിഫോൾട്ടാണിത്. പേര് gnu1x is
ഒഴിവാക്കി.

c++98
c++03
1998 ISO C++ സ്റ്റാൻഡേർഡും 2003-ലെ സാങ്കേതിക കോറിജണ്ടവും ചില അധികവും
വൈകല്യ റിപ്പോർട്ടുകൾ. അതേ പോലെ -ആൻസി C++ കോഡിനായി.

gnu++98
gnu++03
GNU ഭാഷാഭേദം -std=c++98. ഇത് C++ കോഡിന്റെ ഡിഫോൾട്ടാണ്.

c++11
c++0x
2011 ISO C++ സ്റ്റാൻഡേർഡ് പ്ലസ് ഭേദഗതികൾ. പേര് c++0x ഒഴിവാക്കിയിരിക്കുന്നു.

gnu++11
gnu++0x
GNU ഭാഷാഭേദം -std=c++11. പേര് gnu++0x ഒഴിവാക്കിയിരിക്കുന്നു.

c++14
c++1y
2014 ISO C++ സ്റ്റാൻഡേർഡ് പ്ലസ് ഭേദഗതികൾ. പേര് c++1y ഒഴിവാക്കിയിരിക്കുന്നു.

gnu++14
gnu++1y
GNU ഭാഷാഭേദം -std=c++14. പേര് gnu++1y ഒഴിവാക്കിയിരിക്കുന്നു.

c++1z
ISO C++ നിലവാരത്തിന്റെ അടുത്ത പുനരവലോകനം, 2017-ൽ താൽക്കാലികമായി ആസൂത്രണം ചെയ്‌തിരിക്കുന്നു. പിന്തുണ
ഇത് വളരെ പരീക്ഷണാത്മകമാണ്, ഒപ്പം പൊരുത്തമില്ലാത്ത വഴികളിൽ മിക്കവാറും മാറുകയും ചെയ്യും
ഭാവി റിലീസുകൾ.

gnu++1z
GNU ഭാഷാഭേദം -std=c++1z. പിന്തുണ വളരെ പരീക്ഷണാത്മകമാണ്, മിക്കവാറും ചെയ്യും
ഭാവിയിലെ റിലീസുകളിൽ തീർച്ചയായും പൊരുത്തപ്പെടാത്ത വഴികളിൽ മാറ്റം വരുത്തുക.

-fgnu89-ഇൻലൈൻ
ഓപ്ഷൻ -fgnu89-ഇൻലൈൻ "ഇൻലൈനിന്" പരമ്പരാഗത ഗ്നു സെമാന്റിക്സ് ഉപയോഗിക്കാൻ ജിസിസിയോട് പറയുന്നു
C99 മോഡിൽ പ്രവർത്തിക്കുമ്പോൾ.

ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കുന്നത് "gnu_inline" ഫംഗ്‌ഷൻ ആട്രിബ്യൂട്ട് ചേർക്കുന്നതിന് ഏകദേശം തുല്യമാണ്.
എല്ലാ ഇൻലൈൻ ഫംഗ്‌ഷനുകളിലേക്കും.

ഓപ്ഷൻ -fno-gnu89-inline ഇതിനായി C99 സെമാന്റിക്സ് ഉപയോഗിക്കാൻ GCC യോട് വ്യക്തമായി പറയുന്നു
C99 അല്ലെങ്കിൽ gnu99 മോഡിൽ ആയിരിക്കുമ്പോൾ "ഇൻലൈൻ" (അതായത്, ഇത് സ്ഥിരസ്ഥിതി സ്വഭാവം വ്യക്തമാക്കുന്നു). ഈ
ഓപ്ഷൻ പിന്തുണയ്ക്കുന്നില്ല -std=c90 or -std=gnu90 മോഡ്.

പ്രീപ്രൊസസ്സർ മാക്രോകൾ "__GNUC_GNU_INLINE__", "__GNUC_STDC_INLINE__" എന്നിവ ഉപയോഗിച്ചേക്കാം
"ഇൻലൈൻ" ഫംഗ്‌ഷനുകൾക്ക് ഏത് സെമാന്റിക്‌സ് പ്രാബല്യത്തിലാണെന്ന് പരിശോധിക്കാൻ.

-aux-info ഫയലിന്റെ പേര്
പ്രഖ്യാപിത കൂടാതെ/അല്ലെങ്കിൽ എല്ലാ ഫംഗ്‌ഷനുകൾക്കുമായി നൽകിയിരിക്കുന്ന ഫയൽ നാമത്തിന്റെ പ്രോട്ടോടൈപ്പ് ചെയ്ത പ്രഖ്യാപനങ്ങളിലേക്കുള്ള ഔട്ട്‌പുട്ട്
ഹെഡർ ഫയലുകളിലുള്ളവ ഉൾപ്പെടെ ഒരു വിവർത്തന യൂണിറ്റിൽ നിർവചിച്ചിരിക്കുന്നു. ഈ ഓപ്ഷൻ ആണ്
സി ഒഴികെയുള്ള ഏത് ഭാഷയിലും നിശബ്ദമായി അവഗണിക്കപ്പെട്ടു.

പ്രഖ്യാപനങ്ങൾക്ക് പുറമേ, ഓരോ പ്രഖ്യാപനത്തിന്റെയും ഉത്ഭവം കമന്റുകളിൽ ഫയൽ സൂചിപ്പിക്കുന്നു
(ഉറവിട ഫയലും വരിയും), പ്രഖ്യാപനം പരോക്ഷമായതോ പ്രോട്ടോടൈപ്പ് ചെയ്തതോ അല്ലെങ്കിൽ
പ്രോട്ടോടൈപ്പ് ചെയ്യാത്ത (I, N പുതിയത് അല്ലെങ്കിൽ O പഴയതിന്, യഥാക്രമം, ശേഷമുള്ള ആദ്യ പ്രതീകത്തിൽ
ലൈൻ നമ്പറും കോളനും), അത് ഒരു പ്രഖ്യാപനത്തിൽ നിന്നോ നിർവചനത്തിൽ നിന്നോ വന്നതാണോ എന്ന്
(C or F, യഥാക്രമം, ഇനിപ്പറയുന്ന പ്രതീകത്തിൽ). പ്രവർത്തനത്തിന്റെ കാര്യത്തിൽ
നിർവചനങ്ങൾ, ആർഗ്യുമെന്റുകളുടെ കെ&ആർ ശൈലിയിലുള്ള ഒരു ലിസ്റ്റ്, തുടർന്ന് അവയുടെ പ്രഖ്യാപനങ്ങളും
പ്രഖ്യാപനത്തിന് ശേഷം അഭിപ്രായങ്ങൾക്കുള്ളിൽ നൽകിയിരിക്കുന്നു.

-ഫാലോ-പാരാമീറ്ററില്ലാത്ത-വേരിയാഡിക്-ഫംഗ്ഷനുകൾ
പേരിട്ട പാരാമീറ്ററുകൾ ഇല്ലാതെ വേരിയാഡിക് ഫംഗ്‌ഷനുകൾ സ്വീകരിക്കുക.

അത്തരമൊരു ഫംഗ്ഷൻ നിർവചിക്കാൻ കഴിയുമെങ്കിലും, ഇത് വളരെ ഉപയോഗപ്രദമല്ല
വാദങ്ങൾ വായിക്കാൻ സാധ്യമല്ല. ഈ കൺസ്ട്രക്‌റ്റ് ഉള്ളതിനാൽ ഇത് C-യെ മാത്രമേ പിന്തുണയ്ക്കൂ
C++ അനുവദിച്ചു.

-fno-asm
"asm", "inline" അല്ലെങ്കിൽ "typeof" എന്നിവ ഒരു കീവേഡായി തിരിച്ചറിയരുത്, അതുവഴി കോഡിന് ഇവ ഉപയോഗിക്കാനാകും
ഐഡന്റിഫയറായി വാക്കുകൾ. നിങ്ങൾക്ക് "__asm__", "__inline__" എന്നീ കീവേഡുകൾ ഉപയോഗിക്കാം
പകരം "__typeof__". -ആൻസി ധ്വനിപ്പിക്കുന്നു -fno-asm.

C++ ൽ, "asm" ഉം "inline" ഉം ആയതിനാൽ ഈ സ്വിച്ച് "typeof" കീവേഡിനെ മാത്രമേ ബാധിക്കുകയുള്ളൂ.
സാധാരണ കീവേഡുകൾ. നിങ്ങൾക്ക് ഉപയോഗിക്കാൻ താൽപ്പര്യമുണ്ടാകാം -fno-gnu-കീവേഡുകൾ പകരം പതാക
അതേ പ്രഭാവം. C99 മോഡിൽ (-std=c99 or -std=gnu99), ഈ സ്വിച്ച് മാത്രമേ ബാധിക്കുകയുള്ളൂ
"asm", "typeof" എന്നീ കീവേഡുകൾ, ISO C99-ൽ "ഇൻലൈൻ" എന്നത് ഒരു സാധാരണ കീവേഡ് ആയതിനാൽ.

-fno-builtin
-fno-builtin-ഫംഗ്ഷൻ
ആരംഭിക്കാത്ത ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകൾ തിരിച്ചറിയരുത് __ബിൽറ്റിൻ_ പ്രിഫിക്സായി.

ചില ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകൾ കൂടുതൽ കൈകാര്യം ചെയ്യുന്നതിനായി GCC സാധാരണയായി പ്രത്യേക കോഡ് സൃഷ്ടിക്കുന്നു
കാര്യക്ഷമമായി; ഉദാഹരണത്തിന്, "alloca" എന്നതിലേക്കുള്ള കോളുകൾ ഒറ്റ നിർദ്ദേശങ്ങളായി മാറിയേക്കാം
സ്റ്റാക്ക് നേരിട്ട് ക്രമീകരിക്കുക, "memcpy" എന്നതിലേക്കുള്ള കോളുകൾ ഇൻലൈൻ കോപ്പി ലൂപ്പുകളായി മാറിയേക്കാം. ദി
തത്ഫലമായുണ്ടാകുന്ന കോഡ് പലപ്പോഴും ചെറുതും വേഗമേറിയതുമാണ്, എന്നാൽ ഫംഗ്ഷൻ നമ്പർ വിളിക്കുന്നതിനാൽ
ഇനി അങ്ങനെ തന്നെ ദൃശ്യമാകും, നിങ്ങൾക്ക് ആ കോളുകളിൽ ബ്രേക്ക്‌പോയിന്റ് സജ്ജീകരിക്കാനോ മാറ്റാനോ കഴിയില്ല
മറ്റൊരു ലൈബ്രറിയുമായി ലിങ്ക് ചെയ്തുകൊണ്ട് ഫംഗ്‌ഷനുകളുടെ പെരുമാറ്റം. കൂടാതെ, എപ്പോൾ
ഒരു ഫംഗ്‌ഷൻ ഒരു ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനായി അംഗീകരിക്കപ്പെട്ടിരിക്കുന്നു, അതിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ GCC ഉപയോഗിച്ചേക്കാം
ആ ഫംഗ്‌ഷനിലേക്കുള്ള കോളുകളിലെ പ്രശ്‌നങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നതിനോ കൂടുതൽ സൃഷ്‌ടിക്കുന്നതിനോ ഉള്ള പ്രവർത്തനം
കാര്യക്ഷമമായ കോഡ്, ഫലമായുണ്ടാകുന്ന കോഡിൽ ആ ഫംഗ്‌ഷനിലേക്കുള്ള കോളുകൾ അടങ്ങിയിട്ടുണ്ടെങ്കിലും. വേണ്ടി
ഉദാഹരണത്തിന്, മുന്നറിയിപ്പുകൾ നൽകിയിരിക്കുന്നു - ഫോർമാറ്റ് "printf" ആയിരിക്കുമ്പോൾ "printf" എന്നതിലേക്കുള്ള മോശം കോളുകൾക്ക്
അന്തർനിർമ്മിതവും "strlen" ഗ്ലോബൽ മെമ്മറി പരിഷ്ക്കരിക്കില്ലെന്ന് അറിയപ്പെടുന്നു.

കൂടെ -fno-builtin-ഫംഗ്ഷൻ ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷൻ മാത്രം ഓപ്ഷൻ ഫംഗ്ഷൻ പ്രവർത്തനരഹിതമാക്കി.
ഫംഗ്ഷൻ ആരംഭിക്കാൻ പാടില്ല __ബിൽറ്റിൻ_. ഒരു ഫംഗ്‌ഷന് പേരിട്ടാൽ അത് അന്തർനിർമ്മിതമല്ല
GCC-യുടെ ഈ പതിപ്പിൽ, ഈ ഓപ്ഷൻ അവഗണിക്കപ്പെട്ടിരിക്കുന്നു. അനുബന്ധമായി ഒന്നുമില്ല
-fbuiltin-ഫംഗ്ഷൻ ഓപ്ഷൻ; ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകൾ തിരഞ്ഞെടുത്ത് പ്രവർത്തനക്ഷമമാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ
ഉപയോഗിച്ച് -fno-builtin or -ഫ്രീസ്റ്റാൻഡിംഗ്, നിങ്ങൾക്ക് മാക്രോകൾ നിർവചിക്കാം:

#നിർവചിക്കുക abs(n) __builtin_abs ((n))
# define strcpy(d, s) __builtin_strcpy ((d), (s))

-ഫോസ്റ്റഡ്
ഒരു ഹോസ്റ്റ് ചെയ്ത പരിസ്ഥിതിയെയാണ് സമാഹാരം ലക്ഷ്യമിടുന്നതെന്ന് ഉറപ്പിക്കുക. ഇത് സൂചിപ്പിക്കുന്നു -ഫ്ബിൽറ്റിൻ. ഒരു
ഹോസ്റ്റ് ചെയ്ത പരിസ്ഥിതി എന്നത് മുഴുവൻ സ്റ്റാൻഡേർഡ് ലൈബ്രറിയും ലഭ്യമായ ഒന്നാണ്
ഏത് "മെയിൻ" എന്നതിന് "int" എന്ന റിട്ടേൺ തരം ഉണ്ട്. എ ഒഴികെ മിക്കവാറും എല്ലാം ഉദാഹരണങ്ങളാണ്
കേർണൽ. ഇതിന് തുല്യമാണ് -fno-freestanding.

-ഫ്രീസ്റ്റാൻഡിംഗ്
കംപൈലേഷൻ ഒരു സ്വതന്ത്ര അന്തരീക്ഷത്തെ ലക്ഷ്യമിടുന്നുവെന്ന് ഉറപ്പിക്കുക. ഇത് സൂചിപ്പിക്കുന്നു
-fno-builtin. ഒരു ഫ്രീസ്റ്റാൻഡിംഗ് പരിതസ്ഥിതിയാണ് സാധാരണ ലൈബ്രറി ഇല്ലാത്തത്
നിലവിലുണ്ട്, കൂടാതെ പ്രോഗ്രാം സ്റ്റാർട്ടപ്പ് "പ്രധാന" ആയിരിക്കണമെന്നില്ല. ഏറ്റവും വ്യക്തമായ ഉദാഹരണം
ഒരു OS കേർണൽ ആണ്. ഇതിന് തുല്യമാണ് -fno-ഹോസ്റ്റഡ്.

-ഫോപെനാക്ക്
C/C++ ൽ OpenACC നിർദ്ദേശങ്ങൾ "#pragma acc", ഫോർട്രാനിൽ "!$acc" എന്നിവ കൈകാര്യം ചെയ്യുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.
എപ്പോൾ -ഫോപെനാക്ക് വ്യക്തമാക്കിയിരിക്കുന്നു, കംപൈലർ അനുസരിച്ച് ത്വരിതപ്പെടുത്തിയ കോഡ് സൃഷ്ടിക്കുന്നു
OpenACC ആപ്ലിക്കേഷൻ പ്രോഗ്രാമിംഗ് ഇന്റർഫേസ് v2.0http://www.openacc.org/>. ഈ ഓപ്ഷൻ
ധ്വനിപ്പിക്കുന്നു -pthread, അതിനാൽ പിന്തുണയുള്ള ടാർഗെറ്റുകളിൽ മാത്രമേ പിന്തുണയ്ക്കൂ
-pthread.

ഇതൊരു പരീക്ഷണാത്മക സവിശേഷതയാണ്, അപൂർണ്ണവും ഭാവിയിൽ മാറ്റത്തിന് വിധേയവുമാണ്
GCC യുടെ പതിപ്പുകൾ. കാണുകhttps://gcc.gnu.org/wiki/OpenACC> കൂടുതൽ വിവരങ്ങൾക്ക്.

-fopenmp
C/C++ ൽ OpenMP നിർദ്ദേശങ്ങൾ "#pragma omp", ഫോർട്രാനിൽ "!$omp" എന്നിവ കൈകാര്യം ചെയ്യുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.
എപ്പോൾ -fopenmp വ്യക്തമാക്കിയിരിക്കുന്നു, കംപൈലർ അനുസരിച്ച് സമാന്തര കോഡ് സൃഷ്ടിക്കുന്നു
OpenMP ആപ്ലിക്കേഷൻ പ്രോഗ്രാം ഇന്റർഫേസ് v4.0http://www.openmp.org/>. ഈ ഓപ്ഷൻ
ധ്വനിപ്പിക്കുന്നു -pthread, അതിനാൽ പിന്തുണയുള്ള ടാർഗെറ്റുകളിൽ മാത്രമേ പിന്തുണയ്ക്കൂ
-pthread. -fopenmp ധ്വനിപ്പിക്കുന്നു -fopenmp-simd.

-fopenmp-simd
C/C++ ൽ "#pragma omp", "!$omp" എന്നിവ ഉപയോഗിച്ച് OpenMP-യുടെ SIMD നിർദ്ദേശങ്ങൾ കൈകാര്യം ചെയ്യുന്നത് പ്രവർത്തനക്ഷമമാക്കുക
ഫോർട്രാൻ. മറ്റ് OpenMP നിർദ്ദേശങ്ങൾ അവഗണിക്കപ്പെടുന്നു.

-fcilkplus
C/C++ നായുള്ള സിൽക്ക് പ്ലസ് ഭാഷാ വിപുലീകരണ ഫീച്ചറുകളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക. ഓപ്ഷൻ എപ്പോൾ
-fcilkplus വ്യക്തമാക്കിയിരിക്കുന്നു, സിൽക്ക് പ്ലസ് ലാംഗ്വേജ് എക്സ്റ്റൻഷൻ ഫീച്ചറുകളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക
C/C++ ന്. നിലവിലെ നടപ്പിലാക്കൽ ABI പതിപ്പ് 1.2 പിന്തുടരുന്നു. ഇതൊരു
ഭാഗികമായി മാത്രം പൂർത്തിയായതും ഇന്റർഫേസ് മാറിയേക്കാവുന്നതുമായ പരീക്ഷണാത്മക സവിശേഷത
ഔദ്യോഗിക സ്പെസിഫിക്കേഷൻ മാറുന്നതിനനുസരിച്ച് ജിസിസിയുടെ ഭാവി പതിപ്പുകളിൽ. നിലവിൽ, എല്ലാം
സവിശേഷതകൾ എന്നാൽ "_Cilk_for" നടപ്പിലാക്കി.

-fgnu-tm
ഓപ്ഷൻ എപ്പോൾ -fgnu-tm വ്യക്തമാക്കിയിരിക്കുന്നു, കംപൈലർ Linux-നുള്ള കോഡ് സൃഷ്ടിക്കുന്നു
ഇന്റലിന്റെ നിലവിലെ ട്രാൻസാക്ഷണൽ മെമ്മറി ABI സ്പെസിഫിക്കേഷൻ ഡോക്യുമെന്റിന്റെ വകഭേദം (റിവിഷൻ
1.1, മെയ് 6 2009). ഇന്റർഫേസ് മാറിയേക്കാവുന്ന ഒരു പരീക്ഷണാത്മക സവിശേഷതയാണിത്
ഔദ്യോഗിക സ്പെസിഫിക്കേഷൻ മാറുന്നതിനനുസരിച്ച് ജിസിസിയുടെ ഭാവി പതിപ്പുകൾ. അല്ല എന്ന് ദയവായി ശ്രദ്ധിക്കുക
എല്ലാ ആർക്കിടെക്ചറുകളും ഈ സവിശേഷതയെ പിന്തുണയ്ക്കുന്നു.

ട്രാൻസാക്ഷൻ മെമ്മറിക്കുള്ള ജിസിസിയുടെ പിന്തുണയെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്,

നോൺ-കോൾ ഒഴിവാക്കലുകൾക്കൊപ്പം ഇടപാട് മെമ്മറി ഫീച്ചർ പിന്തുണയ്‌ക്കുന്നില്ല എന്നത് ശ്രദ്ധിക്കുക
(-fnon-call-exceptions).

-fms-വിപുലീകരണങ്ങൾ
മൈക്രോസോഫ്റ്റ് ഹെഡർ ഫയലുകളിൽ ഉപയോഗിക്കുന്ന ചില നിലവാരമില്ലാത്ത നിർമ്മാണങ്ങൾ സ്വീകരിക്കുക.

C++ കോഡിൽ, ഘടനകളിലെ അംഗങ്ങളുടെ പേരുകൾ മുമ്പത്തെ തരങ്ങൾക്ക് സമാനമായിരിക്കാൻ ഇത് അനുവദിക്കുന്നു
പ്രഖ്യാപനങ്ങൾ.

ടൈപ്പ്ഡെഫ് int UOW;
ഘടന എബിസി {
UOW UOW;
};

സ്ട്രക്ച്ചറുകളിലും യൂണിയനുകളിലും പേരിടാത്ത ഫീൽഡുകളുടെ ചില കേസുകൾ ഇതിനൊപ്പം മാത്രമേ അംഗീകരിക്കപ്പെടുകയുള്ളൂ
ഓപ്ഷൻ.

എല്ലാ ടാർഗെറ്റുകൾക്കും ഈ ഓപ്‌ഷൻ ഓഫാണ്, എന്നാൽ ms-abi ഉപയോഗിക്കുന്ന x86 ടാർഗെറ്റുകൾക്ക്.

-fplan9-വിപുലീകരണങ്ങൾ
പ്ലാൻ 9 കോഡിൽ ഉപയോഗിച്ചിരിക്കുന്ന ചില നിലവാരമില്ലാത്ത നിർമ്മാണങ്ങൾ സ്വീകരിക്കുക.

ഇത് പ്രാപ്തമാക്കുന്നു -fms-വിപുലീകരണങ്ങൾ, അജ്ഞാതർ ഉള്ള ഘടനകളിലേക്ക് പോയിന്ററുകൾ കൈമാറാൻ അനുവദിക്കുന്നു
ഫീൽഡിന്റെ തരത്തിന്റെ ഘടകങ്ങളിലേക്ക് പോയിന്ററുകൾ പ്രതീക്ഷിക്കുന്ന ഫംഗ്‌ഷനുകളിലേക്കുള്ള ഫീൽഡുകൾ, കൂടാതെ
ടൈപ്പ്ഡെഫ് ഉപയോഗിച്ച് പ്രഖ്യാപിച്ച അജ്ഞാത ഫീൽഡുകളെ പരാമർശിക്കുന്ന പെർമിറ്റുകൾ. ഇത് മാത്രം
C-യെ പിന്തുണയ്ക്കുന്നു, C++ അല്ല.

-ട്രിഗ്രാഫ്സ്
ഐഎസ്ഒ സി ട്രൈഗ്രാഫുകളെ പിന്തുണയ്ക്കുക. ദി -ആൻസി ഓപ്ഷൻ (ഒപ്പം -std കർശനമായ ഐഎസ്ഒ സിക്കുള്ള ഓപ്ഷനുകൾ
അനുരൂപം) സൂചിപ്പിക്കുന്നു -ട്രിഗ്രാഫ്സ്.

- പരമ്പരാഗത
-പരമ്പരാഗത-സിപിപി
മുമ്പ്, ഈ ഓപ്ഷനുകൾ ഒരു പ്രീ-സ്റ്റാൻഡേർഡ് സി കംപൈലർ അനുകരിക്കാൻ GCC യെ പ്രേരിപ്പിച്ചു.
അവർ ഇപ്പോൾ പിന്തുണയ്ക്കുന്നത് -E സ്വിച്ച്. പ്രീപ്രൊസസ്സർ പിന്തുണയ്ക്കുന്നത് തുടരുന്നു
ഒരു പ്രീ-സ്റ്റാൻഡേർഡ് മോഡ്. വിശദാംശങ്ങൾക്ക് GNU CPP മാനുവൽ കാണുക.

-fcond-പൊരുത്തക്കേട്
രണ്ടാമത്തെയും മൂന്നാമത്തെയും ആർഗ്യുമെന്റുകളിൽ പൊരുത്തപ്പെടാത്ത തരങ്ങളുള്ള സോപാധിക പദപ്രയോഗങ്ങൾ അനുവദിക്കുക.
അത്തരമൊരു പദപ്രയോഗത്തിന്റെ മൂല്യം അസാധുവാണ്. ഈ ഓപ്‌ഷൻ C++-ന് പിന്തുണയ്‌ക്കുന്നില്ല.

-ഫ്ളാക്സ്-വെക്റ്റർ-പരിവർത്തനങ്ങൾ
വ്യത്യസ്ത സംഖ്യകളുള്ള മൂലകങ്ങൾ കൂടാതെ/അല്ലെങ്കിൽ വെക്‌ടറുകൾക്കിടയിൽ പരോക്ഷമായ പരിവർത്തനങ്ങൾ അനുവദിക്കുക
പൊരുത്തപ്പെടാത്ത മൂലക തരങ്ങൾ. പുതിയ കോഡിനായി ഈ ഓപ്ഷൻ ഉപയോഗിക്കരുത്.

-ഫൺസൈൻഡ്-ചാർ
"ചാർ" എന്ന തരം "അൺ സൈൻ ചെയ്യാത്ത ചാർ" പോലെ ഒപ്പിടാത്തതായിരിക്കട്ടെ.

ഓരോ തരത്തിലുമുള്ള മെഷീനുകൾക്കും "char" എന്തായിരിക്കണം എന്നതിന് ഒരു ഡിഫോൾട്ട് ഉണ്ട്. ഒന്നുകിൽ അത് പോലെയാണ്
ഡിഫോൾട്ടായി "അൺസൈഡ് ചാർ" അല്ലെങ്കിൽ ഡിഫോൾട്ടായി "സൈൻ ചെയ്ത ചാർ" പോലെ.

എബൌട്ട്, ഒരു പോർട്ടബിൾ പ്രോഗ്രാം എപ്പോഴും "സൈൻഡ് ചാർ" അല്ലെങ്കിൽ "അൺ സൈഡ് ചാർ" ഉപയോഗിക്കണം.
ഒരു വസ്തുവിന്റെ ഒപ്പിനെ ആശ്രയിച്ചിരിക്കുന്നു. എന്നാൽ ഉപയോഗിക്കാനായി പല പ്രോഗ്രാമുകളും എഴുതിയിട്ടുണ്ട്
പ്ലെയിൻ "char" കൂടാതെ അത് ഒപ്പിടുമെന്ന് പ്രതീക്ഷിക്കുക, അല്ലെങ്കിൽ അത് ഒപ്പിടാത്തതാണെന്ന് പ്രതീക്ഷിക്കുക
അവർ എഴുതിയ യന്ത്രങ്ങൾ. ഈ ഓപ്‌ഷനും അതിന്റെ വിപരീതവും അത്തരത്തിലുള്ള ഒന്ന് ഉണ്ടാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു
വിപരീത ഡിഫോൾട്ടിൽ പ്രോഗ്രാം പ്രവർത്തിക്കുന്നു.

"ചാർ" എന്ന തരം എല്ലായ്‌പ്പോഴും "ഒപ്പിട്ട ചാർ" അല്ലെങ്കിൽ "ഒപ്പ് ചെയ്യാത്തത്" എന്നിവയിൽ നിന്നും വ്യത്യസ്തമായ ഒരു തരമാണ്.
ചാർ", അതിന്റെ പെരുമാറ്റം എല്ലായ്പ്പോഴും ആ രണ്ടിൽ ഒന്ന് പോലെയാണെങ്കിലും.

-fsigned-char
"signed char" പോലെ "char" എന്ന് ടൈപ്പ് സൈൻ ചെയ്യട്ടെ.

ഇത് ഇതിന് തുല്യമാണെന്ന് ശ്രദ്ധിക്കുക -fno-unsigned-char, ഇത് നെഗറ്റീവ് രൂപമാണ്
-ഫൺസൈൻഡ്-ചാർ. അതുപോലെ, ഓപ്ഷൻ -fno-signed-char എന്നതിന് തുല്യമാണ്
-ഫൺസൈൻഡ്-ചാർ.

-fsigned-bitfields
-ഫൺസൈൻഡ്-ബിറ്റ്ഫീൽഡുകൾ
-fno-signed-bitfields
-fno-signed-bitfields
ഈ ഓപ്‌ഷനുകൾ ഡിക്ലറേഷൻ സമയത്ത് ഒരു ബിറ്റ്-ഫീൽഡ് സൈൻ ചെയ്‌തോ സൈൻ ചെയ്യാത്തതോ എന്നത് നിയന്ത്രിക്കുന്നു
"ഒപ്പ്" അല്ലെങ്കിൽ "ഒപ്പ് ചെയ്യാത്തത്" എന്നിവ ഉപയോഗിക്കുന്നില്ല. സ്ഥിരസ്ഥിതിയായി, അത്തരമൊരു ബിറ്റ്-ഫീൽഡ് ഒപ്പിട്ടിരിക്കുന്നു,
കാരണം ഇത് സ്ഥിരതയുള്ളതാണ്: "int" പോലുള്ള അടിസ്ഥാന പൂർണ്ണസംഖ്യ തരങ്ങൾ ഒപ്പിട്ട തരങ്ങളാണ്.

ഓപ്ഷനുകൾ നിയന്ത്രിക്കുന്നു സി ++ പ്രാദേശിക ഭാഷ
C++ പ്രോഗ്രാമുകൾക്ക് മാത്രം അർത്ഥമുള്ള കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ ഈ വിഭാഗം വിവരിക്കുന്നു.
നിങ്ങളുടെ പ്രോഗ്രാം ഏത് ഭാഷയിലാണെങ്കിലും നിങ്ങൾക്ക് മിക്ക ഗ്നു കമ്പൈലർ ഓപ്ഷനുകളും ഉപയോഗിക്കാം
ഇൻ. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് ഒരു ഫയൽ കംപൈൽ ചെയ്യാം ഒന്നാംക്ലാസ്.സി ഇതുപോലെ:

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

ഈ ഉദാഹരണത്തിൽ, മാത്രം -ഫ്രെപ്പോ C++ പ്രോഗ്രാമുകൾക്ക് മാത്രമുള്ള ഒരു ഓപ്ഷനാണ്; നിങ്ങൾക്ക് ഉപയോഗിക്കാം
GCC പിന്തുണയ്ക്കുന്ന ഏതെങ്കിലും ഭാഷയിലുള്ള മറ്റ് ഓപ്ഷനുകൾ.

ആ ഓപ്ഷനുകളുടെ ഒരു ലിസ്റ്റ് ഇതാ മാത്രം C++ പ്രോഗ്രാമുകൾ കംപൈൽ ചെയ്യുന്നതിന്:

-fabi-version=n
പതിപ്പ് ഉപയോഗിക്കുക n C++ ABI-യുടെ. സ്ഥിരസ്ഥിതി പതിപ്പ് 0 ആണ്.

പതിപ്പ് 0 എന്നത് C++ ABI സ്പെസിഫിക്കേഷനോട് ഏറ്റവും അടുത്ത് നിൽക്കുന്ന പതിപ്പിനെയാണ് സൂചിപ്പിക്കുന്നത്.
അതിനാൽ, പതിപ്പ് 0 ഉപയോഗിച്ച് ലഭിച്ച ABI G++ ന്റെ വ്യത്യസ്ത പതിപ്പുകളിൽ മാറും
ABI ബഗുകൾ പരിഹരിച്ചതിനാൽ.

G++ 1-ൽ ആദ്യമായി പ്രത്യക്ഷപ്പെട്ട C++ ABI-യുടെ പതിപ്പാണ് പതിപ്പ് 3.2.

G++ 2-ൽ ആദ്യമായി പ്രത്യക്ഷപ്പെട്ട C++ ABI-യുടെ പതിപ്പാണ് പതിപ്പ് 3.4,
G++ 4.9 വഴി സ്ഥിരസ്ഥിതി.

സ്ഥിരമായ വിലാസം ഒരു ടെംപ്ലേറ്റ് ആർഗ്യുമെന്റായി മാറ്റുന്നതിൽ ഒരു പിശക് പതിപ്പ് 3 ശരിയാക്കുന്നു.

G++ 4-ൽ ആദ്യം പ്രത്യക്ഷപ്പെട്ട പതിപ്പ് 4.5, വെക്റ്ററിനായി ഒരു സാധാരണ മാംഗ്ലിംഗ് നടപ്പിലാക്കുന്നു
തരങ്ങൾ.

G++ 5-ൽ ആദ്യം പ്രത്യക്ഷപ്പെട്ട പതിപ്പ് 4.6, ആട്രിബ്യൂട്ടിന്റെ മാംഗ്ലിംഗ് ശരിയാക്കുന്നു
ഫംഗ്‌ഷൻ പോയിന്റർ തരങ്ങളിൽ const/അസ്ഥിരത, ഒരു പ്ലെയിൻ decl-ന്റെ decltype, കൂടാതെ a യുടെ ഉപയോഗം
മറ്റൊരു പരാമീറ്ററിന്റെ പ്രഖ്യാപനത്തിലെ ഫംഗ്ഷൻ പരാമീറ്റർ.

G++ 6-ൽ ആദ്യം പ്രത്യക്ഷപ്പെട്ട പതിപ്പ് 4.7, C++11-ന്റെ പ്രമോഷൻ സ്വഭാവം ശരിയാക്കുന്നു
സ്കോപ്പ്ഡ് എനമുകളും ടെംപ്ലേറ്റ് ആർഗ്യുമെന്റ് പാക്കുകളുടെ മാംഗ്ലിംഗ്, const/static_cast, prefix ++
കൂടാതെ --, കൂടാതെ ഒരു ടെംപ്ലേറ്റ് ആർഗ്യുമെന്റായി ഉപയോഗിക്കുന്ന ഒരു ക്ലാസ് സ്കോപ്പ് ഫംഗ്‌ഷൻ.

G++ 7-ൽ ആദ്യമായി പ്രത്യക്ഷപ്പെട്ട പതിപ്പ് 4.8, nullptr_t ഒരു ബിൽട്ടിൻ തരമായി കണക്കാക്കുന്നു
കൂടാതെ ഡിഫോൾട്ട് ആർഗ്യുമെന്റ് സ്കോപ്പിൽ ലാംഡകളുടെ മാംഗ്ലിംഗ് ശരിയാക്കുന്നു.

G++ 8-ൽ ആദ്യം പ്രത്യക്ഷപ്പെട്ട പതിപ്പ് 4.9, ന്റെ പകരക്കാരന്റെ സ്വഭാവം ശരിയാക്കുന്നു
ഫംഗ്‌ഷൻ-സിവി-ക്വാളിഫയറുകളുള്ള ഫംഗ്‌ഷൻ തരങ്ങൾ.

ഇതും കാണുക -വാബി.

-fabi-compat-version=n
ശക്തമായ അപരനാമങ്ങളെ പിന്തുണയ്‌ക്കുന്ന ടാർഗെറ്റുകളിൽ, G++ മാറ്റങ്ങൾ സൃഷ്‌ടിക്കുന്നതിലൂടെ മാറ്റങ്ങൾ വരുത്തുന്നു
ഒരു ചിഹ്നം തെറ്റായി നിർവചിക്കുമ്പോൾ ശരിയായ മംഗളമായ പേരുള്ള ഒരു അപരനാമം
കുഴഞ്ഞ പേര്. അപരനാമത്തിന് ഏത് എബിഐ പതിപ്പാണ് ഉപയോഗിക്കേണ്ടതെന്ന് ഈ സ്വിച്ച് വ്യക്തമാക്കുന്നു.

കൂടെ -fabi-version=0 (സ്ഥിരസ്ഥിതി), ഇത് 2 ലേക്ക് ഡിഫോൾട്ട് ചെയ്യുന്നു. മറ്റൊരു എബിഐ പതിപ്പാണെങ്കിൽ
വ്യക്തമായി തിരഞ്ഞെടുത്തത്, ഇത് സ്ഥിരസ്ഥിതിയായി 0 ആയി മാറുന്നു.

അനുയോജ്യത പതിപ്പും സജ്ജീകരിച്ചിരിക്കുന്നു -വാബി=n.

-fno-access-control
എല്ലാ പ്രവേശന പരിശോധനയും ഓഫാക്കുക. ഈ സ്വിച്ച് പ്രധാനമായും ബഗുകളിൽ പ്രവർത്തിക്കുന്നതിന് ഉപയോഗപ്രദമാണ്
ആക്സസ് കൺട്രോൾ കോഡ്.

-fcheck-പുതിയ
ശ്രമിക്കുന്നതിന് മുമ്പ് "ഓപ്പറേറ്റർ ന്യൂ" നൽകിയ പോയിന്റർ അസാധുവാണോ എന്ന് പരിശോധിക്കുക
അനുവദിച്ച സംഭരണം പരിഷ്കരിക്കുക. C++ ആയതിനാൽ ഈ പരിശോധന സാധാരണയായി ആവശ്യമില്ല
"throw()" എന്ന് പ്രഖ്യാപിച്ചാൽ "ഓപ്പറേറ്റർ പുതിയത്" 0 മാത്രമേ നൽകൂ എന്ന് സ്റ്റാൻഡേർഡ് വ്യക്തമാക്കുന്നു.
ഈ ഓപ്ഷൻ ഇല്ലാതെ തന്നെ കംപൈലർ എല്ലായ്പ്പോഴും റിട്ടേൺ മൂല്യം പരിശോധിക്കുന്ന സാഹചര്യത്തിൽ. ഇൻ
മറ്റെല്ലാ സാഹചര്യങ്ങളിലും, "ഓപ്പറേറ്റർ പുതിയത്" ശൂന്യമല്ലാത്ത ഒരു ഒഴിവാക്കൽ സ്പെസിഫിക്കേഷൻ ഉള്ളപ്പോൾ, മെമ്മറി
"std::bad_alloc" എറിയുന്നതിലൂടെ ക്ഷീണം സൂചിപ്പിക്കപ്പെടുന്നു. ഇതും കാണുക പുതിയ (വോട്ട് ത്രോ).

-fconstexpr-depth=n
C++11 constexpr ഫംഗ്‌ഷനുകൾക്കായി പരമാവധി നെസ്റ്റഡ് മൂല്യനിർണ്ണയ ആഴം സജ്ജമാക്കുക n. ഒരു പരിധി
നിരന്തരമായ എക്സ്പ്രഷൻ മൂല്യനിർണ്ണയ സമയത്ത് അനന്തമായ ആവർത്തനം കണ്ടെത്തുന്നതിന് ആവശ്യമാണ്. ദി
സ്റ്റാൻഡേർഡ് വ്യക്തമാക്കിയ ഏറ്റവും കുറഞ്ഞത് 512 ആണ്.

-fdeduce-init-list
ഒരു ബ്രേസ്-ൽ നിന്ന് "std::initializer_list" ആയി ടെംപ്ലേറ്റ് തരം പാരാമീറ്ററിന്റെ കിഴിവ് പ്രവർത്തനക്ഷമമാക്കുക.
അടച്ച ഇനീഷ്യലൈസർ ലിസ്റ്റ്, അതായത്

ടെംപ്ലേറ്റ് ഓട്ടോ ഫോർവേഡ് (T t) -> decltype (realfn (t))
{
റിട്ടേൺ realfn (t);
}

ശൂന്യമായ f()
{
മുന്നോട്ട് ({1,2}); // മുന്നോട്ട് വിളിക്കുക >
}

ഈ കിഴിവ് ആദ്യം നിർദ്ദേശിച്ചതിന് സാധ്യമായ ഒരു വിപുലീകരണമായി നടപ്പിലാക്കി
C++11 സ്റ്റാൻഡേർഡിനുള്ള സെമാന്റിക്സ്, എന്നാൽ അന്തിമ സ്റ്റാൻഡേർഡിന്റെ ഭാഗമായിരുന്നില്ല, അങ്ങനെയാണ്
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കി. ഈ ഓപ്‌ഷൻ ഒഴിവാക്കി, ഭാവിയിൽ നീക്കം ചെയ്‌തേക്കാം
G++ ന്റെ പതിപ്പ്.

-ഫ്രണ്ട്-ഇഞ്ചക്ഷൻ
ചുറ്റുമുള്ള നെയിംസ്‌പെയ്‌സിലേക്ക് ഫ്രണ്ട് ഫംഗ്‌ഷനുകൾ കുത്തിവയ്ക്കുക, അതുവഴി അവ പുറത്ത് ദൃശ്യമാകും
അവർ പ്രഖ്യാപിച്ചിരിക്കുന്ന ക്ലാസിന്റെ വ്യാപ്തി. സുഹൃത്തിന്റെ പ്രവർത്തനങ്ങൾ രേഖപ്പെടുത്തി
പഴയ വ്യാഖ്യാനിച്ച C++ റഫറൻസ് മാനുവലിൽ ഈ രീതിയിൽ പ്രവർത്തിക്കാൻ. എന്നിരുന്നാലും, ISO C++ ൽ എ
ഒരു എൻക്ലോസിംഗ് സ്കോപ്പിൽ പ്രഖ്യാപിക്കാത്ത ഫ്രണ്ട് ഫംഗ്ഷൻ ഉപയോഗിച്ച് മാത്രമേ കണ്ടെത്താൻ കഴിയൂ
വാദം ആശ്രിത തിരയൽ. സ്റ്റാൻഡേർഡ് പെരുമാറ്റത്തിലേക്ക് GCC ഡിഫോൾട്ട് ചെയ്യുന്നു.

ഈ ഓപ്‌ഷൻ അനുയോജ്യതയ്‌ക്കുള്ളതാണ്, ഭാവിയിൽ G++ ന്റെ റിലീസിൽ ഇത് നീക്കം ചെയ്‌തേക്കാം.

-fno-elide-നിർമ്മാതാക്കൾ
C++ സ്റ്റാൻഡേർഡ് ഒരു താൽക്കാലികം സൃഷ്ടിക്കുന്നത് ഒഴിവാക്കാൻ ഒരു നടപ്പാക്കലിനെ അനുവദിക്കുന്നു
അതേ തരത്തിലുള്ള മറ്റൊരു ഒബ്ജക്റ്റ് ആരംഭിക്കാൻ ഉപയോഗിക്കുന്നു. ഈ ഓപ്‌ഷൻ വ്യക്തമാക്കുന്നത് പ്രവർത്തനരഹിതമാക്കുന്നു
അത് ഒപ്റ്റിമൈസേഷൻ, കൂടാതെ എല്ലാ സാഹചര്യങ്ങളിലും കോപ്പി കൺസ്ട്രക്റ്ററെ വിളിക്കാൻ G++-നെ നിർബന്ധിക്കുന്നു.

-fno-enforce-eh-specs
റൺ ടൈമിൽ ഒഴിവാക്കൽ സ്പെസിഫിക്കേഷനുകളുടെ ലംഘനം പരിശോധിക്കാൻ കോഡ് സൃഷ്ടിക്കരുത്.
ഈ ഓപ്ഷൻ C++ സ്റ്റാൻഡേർഡ് ലംഘിക്കുന്നു, എന്നാൽ കോഡ് വലുപ്പം കുറയ്ക്കുന്നതിന് ഇത് ഉപയോഗപ്രദമാകും
"NDEBUG" നിർവചിക്കുന്നത് പോലെ പ്രൊഡക്ഷൻ ബിൽഡുകൾ. ഇത് ഉപയോക്തൃ കോഡ് നൽകുന്നില്ല
ഒഴിവാക്കൽ സ്പെസിഫിക്കേഷനുകൾ ലംഘിച്ച് ഒഴിവാക്കലുകൾ എറിയാനുള്ള അനുമതി; ദി
കംപൈലർ ഇപ്പോഴും സ്പെസിഫിക്കേഷനുകളെ അടിസ്ഥാനമാക്കി ഒപ്റ്റിമൈസ് ചെയ്യുന്നു, അതിനാൽ അപ്രതീക്ഷിതമായി എറിയുന്നു
ഒഴിവാക്കൽ പ്രവർത്തനസമയത്ത് നിർവചിക്കാത്ത പെരുമാറ്റത്തിന് കാരണമാകുന്നു.

-fextern-tls-init
-fno-extern-tls-init
C++11, OpenMP മാനദണ്ഡങ്ങൾ "thread_local", "threadprivate" എന്നീ വേരിയബിളുകളെ അനുവദിക്കുന്നു
ഡൈനാമിക് (റൺടൈം) സമാരംഭം ഉണ്ടായിരിക്കുക. ഇതിനെ പിന്തുണയ്ക്കുന്നതിന്, അത്തരമൊരു വേരിയബിളിന്റെ ഏതെങ്കിലും ഉപയോഗം
ഒരു റാപ്പർ ഫംഗ്‌ഷനിലൂടെ കടന്നുപോകുന്നു, അത് ആവശ്യമായ ഏതെങ്കിലും സമാരംഭം നടത്തുന്നു. എപ്പോൾ
വേരിയബിളിന്റെ ഉപയോഗവും നിർവചനവും ഒരേ വിവർത്തന യൂണിറ്റിലാണ്, ഈ ഓവർഹെഡ് കഴിയും
ഒപ്റ്റിമൈസ് ചെയ്യപ്പെടും, പക്ഷേ ഉപയോഗം മറ്റൊരു വിവർത്തന യൂണിറ്റിലായിരിക്കുമ്പോൾ ഉണ്ട്
വേരിയബിളിന് യഥാർത്ഥത്തിൽ ഡൈനാമിക് ആവശ്യമില്ലെങ്കിലും കാര്യമായ ഓവർഹെഡ്
പ്രാരംഭം. നോൺ-ൽ വേരിയബിളിന്റെ ഉപയോഗമില്ലെന്ന് പ്രോഗ്രാമർക്ക് ഉറപ്പുണ്ടെങ്കിൽ
TU നിർവചിക്കുന്നതിന് ഡൈനാമിക് ഇനീഷ്യലൈസേഷൻ പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട് (ഒന്നുകിൽ വേരിയബിൾ ആയതിനാൽ
സ്റ്റാറ്റിക്കലി ഇനീഷ്യലൈസ് ചെയ്‌തത്, അല്ലെങ്കിൽ നിർവചിക്കുന്ന TU-യിലെ വേരിയബിളിന്റെ ഉപയോഗം എക്‌സിക്യൂട്ട് ചെയ്യപ്പെടും
മറ്റൊരു TU-ൽ എന്തെങ്കിലും ഉപയോഗിക്കുന്നതിന് മുമ്പ്, അവർക്ക് ഈ ഓവർഹെഡ് ഒഴിവാക്കാനാകും
-fno-extern-tls-init ഓപ്ഷൻ.

ചിഹ്ന അപരനാമങ്ങളെ പിന്തുണയ്ക്കുന്ന ടാർഗെറ്റുകളിൽ, സ്ഥിരസ്ഥിതിയാണ് -fextern-tls-init. ലക്ഷ്യങ്ങളിൽ
ചിഹ്ന അപരനാമങ്ങളെ പിന്തുണയ്ക്കാത്തത്, സ്ഥിരസ്ഥിതിയാണ് -fno-extern-tls-init.

-ഫോർ-സ്കോപ്പ്
-fno-for-scope
If -ഫോർ-സ്കോപ്പ് വ്യക്തമാക്കിയിരിക്കുന്നു, വേരിയബിളുകളുടെ വ്യാപ്തി a-ൽ പ്രഖ്യാപിച്ചു for-init-statement
C++ സ്റ്റാൻഡേർഡ് വ്യക്തമാക്കിയിട്ടുള്ള "for" ലൂപ്പിൽ തന്നെ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു. എങ്കിൽ
-fno-for-scope വ്യക്തമാക്കിയിരിക്കുന്നു, വേരിയബിളുകളുടെ വ്യാപ്തി a-ൽ പ്രഖ്യാപിച്ചു for-init-statement
G++ ന്റെ പഴയ പതിപ്പുകളിലെ പോലെ, എൻക്ലോസിംഗ് സ്കോപ്പിന്റെ അവസാനം വരെ നീളുന്നു, കൂടാതെ
C++ ന്റെ മറ്റ് (പരമ്പരാഗത) നടപ്പാക്കലുകൾ.

ഒരു ഫ്ലാഗും നൽകിയിട്ടില്ലെങ്കിൽ, സ്റ്റാൻഡേർഡ് പിന്തുടരുക, എന്നാൽ അനുവദിക്കുകയും നൽകുകയും ചെയ്യുക എന്നതാണ് സ്ഥിരസ്ഥിതി
അസാധുവായതോ വ്യത്യസ്തമായതോ ആയ പഴയ രീതിയിലുള്ള കോഡിനുള്ള മുന്നറിയിപ്പ്
പെരുമാറ്റം.

-fno-gnu-കീവേഡുകൾ
"typeof" എന്നത് ഒരു കീവേഡായി തിരിച്ചറിയരുത്, അതിനാൽ കോഡിന് ഈ വാക്ക് ഒരു ആയി ഉപയോഗിക്കാം
ഐഡന്റിഫയർ. പകരം നിങ്ങൾക്ക് "__typeof__" എന്ന കീവേഡ് ഉപയോഗിക്കാം. -ആൻസി ധ്വനിപ്പിക്കുന്നു
-fno-gnu-കീവേഡുകൾ.

-fno-inmplicit-templates
പരോക്ഷമായി ഉടനടി (അതായത്
ഉപയോഗം); വ്യക്തമായ തൽക്ഷണങ്ങൾക്കായി മാത്രം കോഡ് എമിറ്റ് ചെയ്യുക.

-fno-inmplicit-inline-templates
ഇൻലൈൻ ടെംപ്ലേറ്റുകളുടെ ഇൻസ്‌റ്റന്റിഷനുകൾക്കായി കോഡ് എമിറ്റ് ചെയ്യരുത്. സ്ഥിരസ്ഥിതി
ഇൻലൈനുകൾ വ്യത്യസ്തമായി കൈകാര്യം ചെയ്യുക, അങ്ങനെ ഒപ്റ്റിമൈസേഷൻ ആവശ്യമില്ലാതെയും കംപൈൽ ചെയ്യുന്നു
ഒരേ ഒരു കൂട്ടം വ്യക്തമായ ഇൻസ്റ്റിറ്റേഷനുകൾ.

-fno-implement-inlines
ഇടം ലാഭിക്കാൻ, നിയന്ത്രിത ഇൻലൈൻ ഫംഗ്‌ഷനുകളുടെ ഔട്ട്-ഓഫ്-ലൈൻ കോപ്പികൾ പുറത്തുവിടരുത്
"#പ്രാഗ്മ നടപ്പാക്കൽ". ഈ ഫംഗ്‌ഷനുകൾ ഇല്ലെങ്കിൽ ഇത് ലിങ്കർ പിശകുകൾക്ക് കാരണമാകുന്നു
അവരെ വിളിക്കുന്ന എല്ലായിടത്തും ഇൻലൈൻ ചെയ്തിരിക്കുന്നു.

-fms-വിപുലീകരണങ്ങൾ
MFC-ൽ ഉപയോഗിച്ചിരിക്കുന്ന നിർമ്മിതികളെക്കുറിച്ചുള്ള Wpedantic മുന്നറിയിപ്പുകൾ അപ്രാപ്തമാക്കുക, അതായത് Implicit int and
നിലവാരമില്ലാത്ത വാക്യഘടന വഴി അംഗത്തിന്റെ പ്രവർത്തനത്തിലേക്ക് ഒരു പോയിന്റർ ലഭിക്കുന്നു.

-fno-nonansi-builtins
ANSI/ISO C നിർബന്ധമാക്കാത്ത ഫംഗ്‌ഷനുകളുടെ ബിൽറ്റ്-ഇൻ ഡിക്ലറേഷനുകൾ പ്രവർത്തനരഹിതമാക്കുക
"ffs", "alloca", "_exit", "index", "bzero", "conjf" എന്നിവയും മറ്റ് അനുബന്ധങ്ങളും ഉൾപ്പെടുന്നു
പ്രവർത്തനങ്ങൾ.

-fnthrow-opt
ഒരു "ത്രോ()" ഒഴിവാക്കൽ സ്പെസിഫിക്കേഷൻ ഒരു "നൊഎക്സെപ്റ്റ്" സ്പെസിഫിക്കേഷൻ പോലെ കൈകാര്യം ചെയ്യുക
ഒരു ഫംഗ്ഷനുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ ടെക്സ്റ്റ് സൈസ് ഓവർഹെഡ് കുറയ്ക്കുകയോ ഒഴിവാക്കുകയോ ചെയ്യുക
സ്പെസിഫിക്കേഷൻ. ഫംഗ്ഷനിൽ നോൺ-ട്രിവിയൽ ഉള്ള തരങ്ങളുടെ പ്രാദേശിക വേരിയബിളുകൾ ഉണ്ടെങ്കിൽ
ഡിസ്ട്രക്റ്ററുകൾ, ഒഴിവാക്കൽ സ്പെസിഫിക്കേഷൻ യഥാർത്ഥത്തിൽ ഫംഗ്ഷനെ ചെറുതാക്കുന്നു, കാരണം
ആ വേരിയബിളുകൾക്കുള്ള EH ക്ലീനപ്പുകൾ ഒപ്റ്റിമൈസ് ചെയ്യാവുന്നതാണ്. സെമാന്റിക് പ്രഭാവം ആണ്
അത്തരമൊരു ഒഴിവാക്കൽ സ്പെസിഫിക്കേഷൻ ഉള്ള ഒരു ഫംഗ്ഷനിൽ നിന്ന് ഒഴിവാക്കിയ ഒരു അപവാദം
"അപ്രതീക്ഷിതമായത്" എന്നതിനുപകരം "അവസാനിപ്പിക്കുക" എന്ന ഒരു കോളിൽ കലാശിക്കുന്നു.

-fno-operator-names
ഓപ്പറേറ്റർ നെയിം കീവേഡുകൾ "and", "bitand", "bitor", "compl", "not", "or" എന്നിവ കൈകാര്യം ചെയ്യരുത്
കീവേഡുകളായി "xor" പര്യായപദങ്ങളായി.

-fno-optional-diags
ഒരു കമ്പൈലർ നൽകേണ്ടതില്ലെന്ന് സ്റ്റാൻഡേർഡ് പറയുന്ന ഡയഗ്നോസ്റ്റിക്സ് പ്രവർത്തനരഹിതമാക്കുക.
നിലവിൽ, G++ നൽകിയിട്ടുള്ള ഒരേയൊരു ഡയഗ്നോസ്റ്റിക് ഒരു പേരിന് വേണ്ടിയുള്ളതാണ്
ഒരു ക്ലാസിനുള്ളിൽ ഒന്നിലധികം അർത്ഥങ്ങൾ.

-അനുവദനീയം
പൊരുത്തപ്പെടാത്ത കോഡിനെക്കുറിച്ചുള്ള ചില ഡയഗ്നോസ്റ്റിക്സ് പിശകുകളിൽ നിന്ന് മുന്നറിയിപ്പുകളിലേക്ക് തരംതാഴ്ത്തുക. അങ്ങനെ,
ഉപയോഗിച്ച് -അനുവദനീയം ചില അനുരൂപമല്ലാത്ത കോഡ് കംപൈൽ ചെയ്യാൻ അനുവദിക്കുന്നു.

-fno-pretti-ടെംപ്ലേറ്റുകൾ
ഒരു പിശക് സന്ദേശം ഒരു ഫംഗ്ഷൻ ടെംപ്ലേറ്റിന്റെ സ്പെഷ്യലൈസേഷനെ പരാമർശിക്കുമ്പോൾ, കംപൈലർ
സാധാരണയായി ടെംപ്ലേറ്റിന്റെ ഒപ്പ് പ്രിന്റ് ചെയ്യുന്നു, തുടർന്ന് ടെംപ്ലേറ്റ് ആർഗ്യുമെന്റുകളും
ഒപ്പിലെ ഏതെങ്കിലും ടൈപ്പ്ഡെഫുകൾ അല്ലെങ്കിൽ ടൈപ്പ്നാമങ്ങൾ (ഉദാ: "അസാധുവായ f(T) [T = int ഉള്ളത്]"
"void f(int)") എന്നതിനേക്കാൾ, ഏത് ടെംപ്ലേറ്റാണ് ഉൾപ്പെട്ടിരിക്കുന്നതെന്ന് വ്യക്തമാകും. ഒരു പിശക് വരുമ്പോൾ
സന്ദേശം ഒരു ക്ലാസ് ടെംപ്ലേറ്റിന്റെ സ്പെഷ്യലൈസേഷനെ സൂചിപ്പിക്കുന്നു, കംപൈലർ ഏതെങ്കിലും ഒഴിവാക്കുന്നു
ആ ടെംപ്ലേറ്റിന്റെ സ്ഥിരസ്ഥിതി ടെംപ്ലേറ്റ് ആർഗ്യുമെന്റുകളുമായി പൊരുത്തപ്പെടുന്ന ടെംപ്ലേറ്റ് ആർഗ്യുമെന്റുകൾ. എങ്കിൽ
ഈ പെരുമാറ്റങ്ങളിൽ ഏതെങ്കിലും ഒരു പിശക് സന്ദേശം മനസ്സിലാക്കാൻ ബുദ്ധിമുട്ടാണ്
എളുപ്പത്തിൽ, നിങ്ങൾക്ക് ഉപയോഗിക്കാം -fno-pretti-ടെംപ്ലേറ്റുകൾ അവരെ പ്രവർത്തനരഹിതമാക്കാൻ.

-ഫ്രെപ്പോ
ലിങ്ക് സമയത്ത് സ്വയമേവയുള്ള ടെംപ്ലേറ്റ് തൽക്ഷണം പ്രവർത്തനക്ഷമമാക്കുക. ഈ ഓപ്ഷനും സൂചിപ്പിക്കുന്നു
-fno-inmplicit-templates.

-fno-rtti
വെർച്വൽ ഫംഗ്‌ഷനുകളുള്ള എല്ലാ ക്ലാസുകളേയും കുറിച്ചുള്ള വിവരങ്ങളുടെ ജനറേഷൻ അപ്രാപ്‌തമാക്കുക
C++ റൺ-ടൈം തരം തിരിച്ചറിയൽ സവിശേഷതകൾ ("dynamic_cast", "typeid"). നിങ്ങൾ എങ്കിൽ
ഭാഷയുടെ ആ ഭാഗങ്ങൾ ഉപയോഗിക്കരുത്, ഈ ഫ്ലാഗ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് കുറച്ച് സ്ഥലം ലാഭിക്കാം.
ഒഴിവാക്കൽ കൈകാര്യം ചെയ്യൽ ഒരേ വിവരങ്ങളാണ് ഉപയോഗിക്കുന്നത്, എന്നാൽ G++ അത് സൃഷ്ടിക്കുന്നു
ആവശ്യമുണ്ട്. ആവശ്യമില്ലാത്ത കാസ്റ്റുകൾക്കായി "dynamic_cast" ഓപ്പറേറ്റർ തുടർന്നും ഉപയോഗിക്കാം
റൺ-ടൈം തരം വിവരങ്ങൾ, അതായത് "അസാധുവായ *" അല്ലെങ്കിൽ വ്യക്തമായ അടിസ്ഥാന ക്ലാസുകളിലേക്ക് കാസ്റ്റുചെയ്യുന്നു.

-fsized-deallocation
അന്തർനിർമ്മിത ആഗോള പ്രഖ്യാപനങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക

ശൂന്യമായ ഓപ്പറേറ്റർ ഇല്ലാതാക്കുക (void *, std::size_t) ഒഴികെ;
void ഓപ്പറേറ്റർ ഇല്ലാതാക്കുക[] (void *, std::size_t) noexcept;

C++14-ൽ അവതരിപ്പിച്ചത് പോലെ. ഉപയോക്താക്കൾ നിർവചിച്ചിരിക്കുന്ന റീപ്ലേസ്‌മെന്റ് ഡീലോക്കേഷന് ഇത് ഉപയോഗപ്രദമാണ്
ഫംഗ്‌ഷനുകൾ, ഉദാഹരണത്തിന്, ഡീലോക്കേഷൻ വേഗത്തിലാക്കാൻ ഒബ്‌ജക്റ്റിന്റെ വലുപ്പം ഉപയോഗിക്കുന്നു.
ചുവടെ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -std=c++14 മുകളിൽ. പതാക -വിസൈസ്-ഡീലോക്കേഷൻ മുന്നറിയിപ്പ് നൽകുന്നു
ഒരു നിർവചനം ചേർക്കാൻ ആഗ്രഹിക്കുന്ന സ്ഥലങ്ങളെക്കുറിച്ച്.

-fstats
സമാഹാരത്തിന്റെ അവസാനം ഫ്രണ്ട് എൻഡ് പ്രോസസ്സിംഗിനെക്കുറിച്ചുള്ള സ്ഥിതിവിവരക്കണക്കുകൾ പുറത്തുവിടുക. ഈ
വിവരങ്ങൾ സാധാരണയായി G++ വികസന ടീമിന് മാത്രമേ ഉപയോഗപ്രദമാകൂ.

-fstrict-enums
കണക്കാക്കിയ തരത്തിലുള്ള ഒരു മൂല്യം എന്ന അനുമാനം ഉപയോഗിച്ച് ഒപ്റ്റിമൈസ് ചെയ്യാൻ കംപൈലറിനെ അനുവദിക്കുക
എണീമറേഷന്റെ മൂല്യങ്ങളിൽ ഒന്ന് മാത്രമേ ആകാൻ കഴിയൂ (C++ സ്റ്റാൻഡേർഡിൽ നിർവചിച്ചിരിക്കുന്നത് പോലെ;
അടിസ്ഥാനപരമായി, ആവശ്യമായ ഏറ്റവും കുറഞ്ഞ ബിറ്റുകളിൽ പ്രതിനിധീകരിക്കാൻ കഴിയുന്ന ഒരു മൂല്യം
എല്ലാ എന്യുമറേറ്റർമാരെയും പ്രതിനിധീകരിക്കുന്നു). പ്രോഗ്രാം ഉപയോഗിക്കുകയാണെങ്കിൽ ഈ അനുമാനം സാധുവാകണമെന്നില്ല
ഒരു അനിയന്ത്രിതമായ പൂർണ്ണസംഖ്യ മൂല്യം എണ്ണപ്പെട്ട തരത്തിലേക്ക് പരിവർത്തനം ചെയ്യുന്നതിനുള്ള ഒരു കാസ്റ്റ്.

-ftemplate-backtrace-limit=n
ഒരൊറ്റ മുന്നറിയിപ്പിനോ പിശകിനോ ടെംപ്ലേറ്റ് തൽക്ഷണ കുറിപ്പുകളുടെ പരമാവധി എണ്ണം സജ്ജമാക്കുക
ലേക്ക് n. സ്ഥിര മൂല്യം 10 ​​ആണ്.

-ftemplate-depth=n
ടെംപ്ലേറ്റ് ക്ലാസുകൾക്കായി പരമാവധി തൽക്ഷണ ഡെപ്ത് സജ്ജീകരിക്കുക n. ഒരു പരിധി
ടെംപ്ലേറ്റ് സമയത്ത് അനന്തമായ ആവർത്തനങ്ങൾ കണ്ടെത്തുന്നതിന് ടെംപ്ലേറ്റ് തൽക്ഷണ ഡെപ്ത് ആവശ്യമാണ്
ക്ലാസ് തൽക്ഷണം. ANSI/ISO C++ അനുരൂപമാക്കുന്ന പ്രോഗ്രാമുകൾ പരമാവധി ആശ്രയിക്കരുത്
17-ൽ കൂടുതൽ ആഴം (C++1024-ൽ 11 ആയി മാറ്റി). ഡിഫോൾട്ട് മൂല്യം 900 ആണ്
ചില സാഹചര്യങ്ങളിൽ 1024 അടിക്കുന്നതിന് മുമ്പ് കംപൈലറിന് സ്റ്റാക്ക് സ്പേസ് തീർന്നേക്കാം.

-fno-threadsafe-statics
ത്രെഡിനായി C++ ABI-യിൽ വ്യക്തമാക്കിയിട്ടുള്ള ദിനചര്യകൾ ഉപയോഗിക്കുന്നതിന് അധിക കോഡ് പുറപ്പെടുവിക്കരുത്-
ലോക്കൽ സ്റ്റാറ്റിക്സിന്റെ സുരക്ഷിതമായ സമാരംഭം. കോഡ് വലുപ്പം കുറയ്ക്കാൻ നിങ്ങൾക്ക് ഈ ഓപ്ഷൻ ഉപയോഗിക്കാം
ത്രെഡ്-സേഫ് ആവശ്യമില്ലാത്ത കോഡിൽ ചെറുതായി.

-ഫ്യൂസ്-cxa-atexit
"__cxa_atexit" ഉപയോഗിച്ച് സ്റ്റാറ്റിക് സ്റ്റോറേജ് ദൈർഘ്യമുള്ള ഒബ്‌ജക്റ്റുകൾക്കായി ഡിസ്ട്രക്റ്ററുകൾ രജിസ്റ്റർ ചെയ്യുക
"atexit" ഫംഗ്‌ഷനേക്കാൾ ഫംഗ്‌ഷൻ. ഈ ഓപ്ഷൻ പൂർണ്ണമായും ആവശ്യമാണ്
സ്റ്റാറ്റിക് ഡിസ്ട്രക്റ്ററുകളുടെ സ്റ്റാൻഡേർഡ്-കംപ്ലയിന്റ് ഹാൻഡ്ലിംഗ്, എന്നാൽ നിങ്ങളുടെ സി ലൈബ്രറിയാണെങ്കിൽ മാത്രമേ പ്രവർത്തിക്കൂ
"__cxa_atexit" പിന്തുണയ്ക്കുന്നു.

-fno-use-cxa-get-exception-ptr
"__cxa_get_exception_ptr" റൺടൈം ദിനചര്യ ഉപയോഗിക്കരുത്. ഇത് കാരണമാകുന്നു
"std::uncaught_exception" എന്നത് തെറ്റാണ്, എന്നാൽ റൺടൈം ദിനചര്യയാണെങ്കിൽ അത് ആവശ്യമാണ്
ലഭ്യമല്ല.

-fvisibility-inlines-hidden
ഇൻലൈനിലേക്ക് പോയിന്ററുകൾ താരതമ്യം ചെയ്യാൻ ഉപയോക്താവ് ശ്രമിക്കുന്നില്ലെന്ന് ഈ സ്വിച്ച് പ്രഖ്യാപിക്കുന്നു
രണ്ട് ഫംഗ്‌ഷനുകളുടെയും വിലാസങ്ങൾ വ്യത്യസ്തമായി എടുക്കുന്ന ഫംഗ്‌ഷനുകൾ അല്ലെങ്കിൽ രീതികൾ
പങ്കിട്ട വസ്തുക്കൾ.

GCC ഫലപ്രദമായി, ഇൻലൈൻ രീതികൾ ഉപയോഗിച്ച് അടയാളപ്പെടുത്തിയേക്കാം എന്നതാണ് ഇതിന്റെ ഫലം
"__attribute__ ((ദൃശ്യത ("മറഞ്ഞിരിക്കുന്നു"")))" അതിനാൽ അവ കയറ്റുമതിയിൽ ദൃശ്യമാകില്ല
ഒരു DSO യുടെ പട്ടിക, DSO-യിൽ ഉപയോഗിക്കുമ്പോൾ PLT പരോക്ഷം ആവശ്യമില്ല.
ഈ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നത് ഒരു ഡിഎസ്ഒയുടെ ലോഡ്, ലിങ്ക് സമയങ്ങളിൽ നാടകീയമായ സ്വാധീനം ചെലുത്തും
ലൈബ്രറി ഭാരമുള്ളതാകുമ്പോൾ ഡൈനാമിക് എക്‌സ്‌പോർട്ട് ടേബിളിന്റെ വലുപ്പം വൻതോതിൽ കുറയ്ക്കുന്നു
ടെംപ്ലേറ്റുകളുടെ ഉപയോഗം.

ഈ സ്വിച്ചിന്റെ സ്വഭാവം രീതികൾ മറഞ്ഞിരിക്കുന്നതായി അടയാളപ്പെടുത്തുന്നതിന് സമാനമല്ല
നേരിട്ട്, കാരണം ഇത് പ്രവർത്തനത്തിലോ കാരണത്തിലോ ഉള്ള സ്റ്റാറ്റിക് വേരിയബിളുകളെ ബാധിക്കില്ല
ഒരു പങ്കിട്ട ഒബ്‌ജക്റ്റിൽ മാത്രമേ ഫംഗ്‌ഷൻ നിർവചിക്കപ്പെട്ടിട്ടുള്ളൂ എന്ന് അനുമാനിക്കാനുള്ള കംപൈലർ.

ഇഫക്റ്റ് നിരാകരിക്കുന്നതിന് നിങ്ങൾക്ക് ഒരു രീതി വ്യക്തമായി ദൃശ്യപരത ഉള്ളതായി അടയാളപ്പെടുത്താം
ആ രീതിയിലേക്ക് മാറുക. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് പോയിന്ററുകൾ a യുമായി താരതമ്യം ചെയ്യണമെങ്കിൽ
പ്രത്യേക ഇൻലൈൻ രീതി, ഡിഫോൾട്ട് ദൃശ്യപരത ഉള്ളതായി നിങ്ങൾക്ക് അടയാളപ്പെടുത്താം. അടയാളപ്പെടുത്തുന്നു
വ്യക്തമായ ദൃശ്യപരതയോടെ ക്ലാസ് അടയ്ക്കുന്നത് ഫലമുണ്ടാക്കില്ല.

വ്യക്തമായ ഇൻസ്‌റ്റന്റിയേറ്റഡ് ഇൻലൈൻ രീതികളെ അവയുടെ ലിങ്കേജ് എന്ന നിലയിൽ ഈ ഓപ്ഷൻ ബാധിക്കില്ല
അല്ലെങ്കിൽ ഒരു പങ്കിട്ട ലൈബ്രറി അതിർത്തി കടന്നേക്കാം.

-fvisibility-ms-compat
GCC-യുടെ C++ ലിങ്കേജ് മോഡൽ നിർമ്മിക്കാൻ ഈ ഫ്ലാഗ് ദൃശ്യപരത ക്രമീകരണങ്ങൾ ഉപയോഗിക്കാൻ ശ്രമിക്കുന്നു
മൈക്രോസോഫ്റ്റ് വിഷ്വൽ സ്റ്റുഡിയോയുമായി പൊരുത്തപ്പെടുന്നു.

ജിസിസിയുടെ ലിങ്കേജ് മോഡലിൽ ഫ്ലാഗ് ഈ മാറ്റങ്ങൾ വരുത്തുന്നു:

1. ഇത് ഡിഫോൾട്ട് ദൃശ്യപരത "മറച്ചത്" ആയി സജ്ജീകരിക്കുന്നു -fvisibility=മറഞ്ഞിരിക്കുന്നു.

2. തരങ്ങൾ, എന്നാൽ അവരുടെ അംഗങ്ങളല്ല, സ്ഥിരസ്ഥിതിയായി മറച്ചിട്ടില്ല.

3. വ്യക്തമായ ദൃശ്യപരതയില്ലാത്ത തരങ്ങൾക്ക് വൺ ഡെഫനിഷൻ റൂൾ അയവുള്ളതാണ്
ഒന്നിലധികം പങ്കിട്ട ഒബ്‌ജക്റ്റുകളിൽ നിർവചിച്ചിരിക്കുന്ന സവിശേഷതകൾ: ആ പ്രഖ്യാപനങ്ങൾ
ഈ ഓപ്ഷൻ ഉപയോഗിക്കാത്തപ്പോൾ അനുവദനീയമാണെങ്കിൽ അനുവദനീയമാണ്.

പുതിയ കോഡിൽ ഉപയോഗിക്കുന്നതാണ് നല്ലത് -fvisibility=മറഞ്ഞിരിക്കുന്നു ആ ക്ലാസുകൾ കയറ്റുമതി ചെയ്യുക
ബാഹ്യമായി ദൃശ്യമാകാൻ ഉദ്ദേശിച്ചുള്ളതാണ്. നിർഭാഗ്യവശാൽ, കോഡിനെ ആശ്രയിക്കുന്നത് സാധ്യമാണ്,
ഒരുപക്ഷേ ആകസ്മികമായി, വിഷ്വൽ സ്റ്റുഡിയോ പെരുമാറ്റത്തിൽ.

ഈ മാറ്റങ്ങളുടെ അനന്തരഫലങ്ങളിൽ ഒരേ തരത്തിലുള്ള സ്റ്റാറ്റിക് ഡാറ്റ അംഗങ്ങളും ഉൾപ്പെടുന്നു
ഒരേ പേരിൽ, എന്നാൽ വ്യത്യസ്ത പങ്കിട്ട ഒബ്‌ജക്‌റ്റുകളിൽ നിർവചിച്ചിരിക്കുന്നത് വ്യത്യസ്തമാണ്, അതിനാൽ മാറുന്നു
ഒന്ന് മറ്റൊന്നിനെ മാറ്റുന്നില്ല; നിർവചിച്ചിരിക്കുന്ന ഫംഗ്‌ഷൻ അംഗങ്ങളിലേക്കുള്ള സൂചനകൾ
വ്യത്യസ്ത പങ്കിട്ട വസ്തുക്കൾ തുല്യമായി താരതമ്യം ചെയ്യണമെന്നില്ല. ഈ പതാക നൽകുമ്പോൾ, അത് എ
ഒരേ പേരിലുള്ള തരങ്ങളെ വ്യത്യസ്തമായി നിർവചിക്കുന്നതിനുള്ള ODR-ന്റെ ലംഘനം.

-fvtable-verify=[ക്ലാസ്|പ്രീനിറ്റ്|ആരും]
ഉപയോഗിക്കുകയാണെങ്കിൽ ഓണാക്കുക (അല്ലെങ്കിൽ ഓഫ് ചെയ്യുക -fvtable-verify=ഒന്നുമില്ല) പരിശോധിച്ചുറപ്പിക്കുന്ന സുരക്ഷാ സവിശേഷത
റൺ ടൈം, ഓരോ വെർച്വൽ കോളിനും, കോൾ ഏത് vtable പോയിന്റർ വഴിയാണ്
ഉണ്ടാക്കിയത് ഒബ്‌ജക്‌റ്റിന്റെ തരത്തിന് സാധുതയുള്ളതാണ്, മാത്രമല്ല കേടാകുകയോ തിരുത്തിയെഴുതുകയോ ചെയ്തിട്ടില്ല.
റൺ ടൈമിൽ ഒരു അസാധുവായ vtable പോയിന്റർ കണ്ടെത്തിയാൽ, ഒരു പിശക് റിപ്പോർട്ട് ചെയ്യപ്പെടും
പ്രോഗ്രാമിന്റെ നിർവ്വഹണം ഉടനടി നിർത്തി.

പ്രോഗ്രാം സ്റ്റാർട്ടപ്പിൽ റൺ-ടൈം ഡാറ്റാ ഘടനകൾ നിർമ്മിക്കുന്നതിന് ഈ ഓപ്ഷൻ കാരണമാകുന്നു, അവ
vtable പോയിന്ററുകൾ പരിശോധിക്കാൻ ഉപയോഗിക്കുന്നു. ഓപ്ഷനുകൾ ക്ലാസ് ഒപ്പം പ്രീനിറ്റ് നിയന്ത്രിക്കുക
ഈ ഡാറ്റ ഘടനകൾ നിർമ്മിക്കപ്പെടുന്ന സമയം. രണ്ട് സാഹചര്യങ്ങളിലും ഡാറ്റ ഘടനകൾ
എക്സിക്യൂഷൻ "മെയിൻ" എത്തുന്നതിന് മുമ്പ് നിർമ്മിച്ചത്. ഉപയോഗിക്കുന്നത് -fvtable-verify=std ഡാറ്റയ്ക്ക് കാരണമാകുന്നു
പങ്കിട്ട ലൈബ്രറികൾ ലോഡുചെയ്‌ത് സമാരംഭിച്ചതിന് ശേഷം നിർമ്മിക്കേണ്ട ഘടനകൾ.
-fvtable-verify=preinit പങ്കിട്ട ലൈബ്രറികൾ ഉണ്ടാകുന്നതിന് മുമ്പ് അവ നിർമ്മിക്കപ്പെടുന്നതിന് കാരണമാകുന്നു
ലോഡ് ചെയ്തു തുടങ്ങി.

വ്യത്യസ്ത മൂല്യങ്ങളുള്ള കമാൻഡ് ലൈനിൽ ഈ ഓപ്ഷൻ ഒന്നിലധികം തവണ ദൃശ്യമാകുകയാണെങ്കിൽ
വ്യക്തമാക്കിയ, ആരും രണ്ടിലും ഉയർന്ന മുൻഗണന എടുക്കുന്നു ക്ലാസ് ഒപ്പം പ്രീനിറ്റ്; പ്രീനിറ്റ് എടുക്കുന്നു
മുൻഗണന ക്ലാസ്.

-fvtv-ഡീബഗ്
കൂടെ ഉപയോഗിക്കുമ്പോൾ -fvtable-verify=std or -fvtable-verify=preinit, കാരണങ്ങൾ
vtable സ്ഥിരീകരണ ഫീച്ചറിനായുള്ള റൺടൈം ഫംഗ്‌ഷനുകളുടെ ഡീബഗ് പതിപ്പുകൾ
വിളിച്ചു. ഈ ഫ്ലാഗ് കംപൈലറിന് ഏത് vtable എന്നതിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ രേഖപ്പെടുത്തുന്നതിനും കാരണമാകുന്നു
ഓരോ ക്ലാസിനും അത് കണ്ടെത്തുന്ന പോയിന്ററുകൾ. എന്ന പേരിലുള്ള ഒരു ഫയലിലേക്കാണ് ഈ വിവരം എഴുതിയിരിക്കുന്നത്
vtv_set_ptr_data.log പരിസ്ഥിതി വേരിയബിൾ നാമകരണം ചെയ്ത ഡയറക്ടറിയിൽ VTV_LOGS_DIR
അത് നിർവചിച്ചിട്ടുണ്ടെങ്കിൽ അല്ലെങ്കിൽ നിലവിലുള്ള വർക്കിംഗ് ഡയറക്ടറി.

ശ്രദ്ധിക്കുക: ഈ സവിശേഷത കൂട്ടിച്ചേർക്കുന്നു ലോഗ് ഫയലിലേക്കുള്ള ഡാറ്റ. നിങ്ങൾക്ക് ഒരു പുതിയ ലോഗ് ഫയൽ വേണമെങ്കിൽ, ആകുക
നിലവിലുള്ള ഏതെങ്കിലും ഒന്ന് ഇല്ലാതാക്കുമെന്ന് ഉറപ്പാണ്.

-fvtv-എണ്ണം
ഇതൊരു ഡീബഗ്ഗിംഗ് ഫ്ലാഗ് ആണ്. കൂടെ ഉപയോഗിക്കുമ്പോൾ -fvtable-verify=std or
-fvtable-verify=preinit, ഇത് കംപൈലറിന് മൊത്തം സംഖ്യയുടെ ട്രാക്ക് സൂക്ഷിക്കാൻ കാരണമാകുന്നു
അത് നേരിടുന്ന വെർച്വൽ കോളുകളും അത് തിരുകുന്ന സ്ഥിരീകരണങ്ങളുടെ എണ്ണവും. അതും
ചില റൺ-ടൈം ലൈബ്രറി ഫംഗ്‌ഷനുകളിലേക്കുള്ള കോളുകളുടെ എണ്ണം അത് ചേർക്കുന്നു
ഓരോ കംപൈലേഷൻ യൂണിറ്റിനും ഈ വിവരങ്ങൾ രേഖപ്പെടുത്തുന്നു. കമ്പൈലർ ഈ വിവരങ്ങൾ എഴുതുന്നു
എന്ന പേരിലുള്ള ഫയലിലേക്ക് vtv_count_data.log പരിസ്ഥിതി വേരിയബിൾ നാമകരണം ചെയ്ത ഡയറക്ടറിയിൽ
VTV_LOGS_DIR അത് നിർവചിച്ചിട്ടുണ്ടെങ്കിൽ അല്ലെങ്കിൽ നിലവിലുള്ള വർക്കിംഗ് ഡയറക്ടറി. അതും
ഓരോ ക്ലാസിനുമുള്ള vtable പോയിന്റർ സെറ്റുകളുടെ വലുപ്പം കണക്കാക്കുകയും ഈ വിവരങ്ങൾ എഴുതുകയും ചെയ്യുന്നു
ലേക്ക് vtv_class_set_sizes.log ഒരേ ഡയറക്ടറിയിൽ.

ശ്രദ്ധിക്കുക: ഈ സവിശേഷത കൂട്ടിച്ചേർക്കുന്നു ലോഗ് ഫയലുകളിലേക്കുള്ള ഡാറ്റ. പുതിയ ലോഗ് ഫയലുകൾ ലഭിക്കാൻ, ഉറപ്പാക്കുക
നിലവിലുള്ളവ ഇല്ലാതാക്കുക.

-fno-ദുർബലമായ
ലിങ്കർ നൽകിയതാണെങ്കിലും, ദുർബലമായ ചിഹ്ന പിന്തുണ ഉപയോഗിക്കരുത്. സ്ഥിരസ്ഥിതിയായി, G++
അവ ലഭ്യമാണെങ്കിൽ ദുർബലമായ ചിഹ്നങ്ങൾ ഉപയോഗിക്കുന്നു. ഈ ഓപ്‌ഷൻ ടെസ്റ്റിംഗിനായി മാത്രം നിലവിലുണ്ട്, കൂടാതെ
അന്തിമ ഉപയോക്താക്കൾ ഉപയോഗിക്കരുത്; ഇത് താഴ്ന്ന കോഡിൽ കലാശിക്കുന്നു, കൂടാതെ പ്രയോജനങ്ങളൊന്നുമില്ല.
ഈ ഓപ്‌ഷൻ G++ ന്റെ ഭാവി പതിപ്പിൽ നീക്കം ചെയ്‌തേക്കാം.

-nostdinc++
C++ ന് മാത്രമുള്ള സ്റ്റാൻഡേർഡ് ഡയറക്ടറികളിൽ ഹെഡർ ഫയലുകൾക്കായി തിരയരുത്, പക്ഷേ ചെയ്യുക
ഇപ്പോഴും മറ്റ് സ്റ്റാൻഡേർഡ് ഡയറക്ടറികൾ തിരയുക. (ഈ ഓപ്ഷൻ നിർമ്മിക്കുമ്പോൾ ഉപയോഗിക്കുന്നു
C++ ലൈബ്രറി.)

കൂടാതെ, ഈ ഒപ്റ്റിമൈസേഷൻ, മുന്നറിയിപ്പ്, കോഡ് ജനറേഷൻ ഓപ്ഷനുകൾക്ക് അർത്ഥം മാത്രമേയുള്ളൂ
C++ പ്രോഗ്രാമുകൾക്കായി:

-വാബി (സി, ഒബ്ജക്റ്റീവ്-സി, സി++, ഒബ്ജക്റ്റീവ്-സി++ എന്നിവ മാത്രം)
ഒരു സ്പഷ്ടമായപ്പോൾ -fabi-version=n ഓപ്‌ഷൻ ഉപയോഗിക്കുന്നു, അത് സൃഷ്ടിക്കുമ്പോൾ G++ മുന്നറിയിപ്പ് നൽകുന്നു
വെണ്ടർ-ന്യൂട്രൽ C++ ABI-യുമായി ഒരുപക്ഷേ പൊരുത്തപ്പെടാത്ത കോഡ്. G++ മുതൽ ഇപ്പോൾ
സ്ഥിരസ്ഥിതിയായി -fabi-version=0, -വാബി ഒരു പഴയ എബിഐ പതിപ്പ് ഇല്ലെങ്കിൽ ഇതിന് യാതൊരു ഫലവുമില്ല
തിരഞ്ഞെടുത്തു (കൂടെ -fabi-version=n) അല്ലെങ്കിൽ ഒരു പഴയ അനുയോജ്യത പതിപ്പ് തിരഞ്ഞെടുത്തു (കൂടെ
-വാബി=n or -fabi-compat-version=n).

അത്തരം എല്ലാ സാഹചര്യങ്ങളെയും കുറിച്ച് മുന്നറിയിപ്പ് നൽകാൻ ശ്രമം നടത്തിയിട്ടുണ്ടെങ്കിലും, ഒരുപക്ഷേ ചിലതുണ്ട്
G++ അനുയോജ്യമല്ലാത്ത കോഡ് സൃഷ്ടിക്കുന്നുണ്ടെങ്കിലും മുന്നറിയിപ്പ് നൽകാത്ത കേസുകൾ.
കോഡ് ആണെങ്കിലും മുന്നറിയിപ്പുകൾ പുറപ്പെടുവിക്കുന്ന കേസുകളും ഉണ്ടാകാം
സൃഷ്ടിച്ചത് അനുയോജ്യമാണ്.

നിങ്ങൾക്ക് ആശങ്കയുണ്ടെങ്കിൽ ഈ മുന്നറിയിപ്പുകൾ ഒഴിവാക്കാൻ നിങ്ങളുടെ കോഡ് മാറ്റിയെഴുതണം
G++ സൃഷ്‌ടിക്കുന്ന കോഡ് സൃഷ്‌ടിച്ച കോഡുമായി ബൈനറി അനുയോജ്യമാകണമെന്നില്ല
മറ്റ് കംപൈലറുകൾ.

-വാബി അനുയോജ്യതയെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നതിന് വ്യക്തമായ പതിപ്പ് നമ്പറിനൊപ്പം ഉപയോഗിക്കാനും കഴിയും
ഒരു പ്രത്യേക കൂടെ -fabi-പതിപ്പ് ലെവൽ, ഉദാ -വാബി=2 ബന്ധപ്പെട്ട മാറ്റങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകാൻ
-fabi-version=2. ഒരു പതിപ്പ് നമ്പർ വ്യക്തമാക്കുന്നതും സജ്ജമാക്കുന്നു -fabi-compat-version=n.

അറിയപ്പെടുന്ന പൊരുത്തക്കേടുകൾ -fabi-version=2 (ഇത് GCC 3.4-ൽ നിന്ന് ഡിഫോൾട്ടായിരുന്നു
4.9) ഉൾപ്പെടുന്നു:

* റഫറൻസ് തരത്തിന്റെ നോൺ-ടൈപ്പ് ടെംപ്ലേറ്റ് പാരാമീറ്റർ ഉള്ള ഒരു ടെംപ്ലേറ്റ് മംഗൾ ചെയ്തു
തെറ്റായി:

എക്സ്റ്റേൺ ഇൻറ്റ് എൻ;
ടെംപ്ലേറ്റ് സ്ട്രക്റ്റ് എസ് {};
ശൂന്യമായ n (എസ് ) {2}

ഇത് ഉറപ്പിച്ചു -fabi-version=3.

* "__attribute ((vector_size))" ഉപയോഗിച്ച് പ്രഖ്യാപിച്ച SIMD വെക്റ്റർ തരങ്ങൾ ഒരു
വെക്റ്ററുകൾ എടുക്കുന്ന ഫംഗ്‌ഷനുകൾ ഓവർലോഡ് ചെയ്യാൻ അനുവദിക്കാത്ത നിലവാരമില്ലാത്ത മാർഗം
വ്യത്യസ്ത വലിപ്പത്തിലുള്ള.

മാംഗ്ലിംഗ് മാറ്റി -fabi-version=4.

* "__attribute ((const))" ഉം "noreturn" ഉം ടൈപ്പ് ക്വാളിഫയറുകളായി മംഗൾ ചെയ്തു, കൂടാതെ
ഒരു പ്ലെയിൻ ഡിക്ലറേഷന്റെ "decltype" മടക്കിവച്ചു.

ഈ മാംഗ്ലിംഗ് പ്രശ്നങ്ങൾ പരിഹരിച്ചു -fabi-version=5.

* വ്യത്യസ്‌തമായ ഒരു ഫംഗ്‌ഷനിലേക്കുള്ള ആർഗ്യുമെന്റുകളായി പാസാക്കുന്ന സ്‌കോപ്ഡ് എൻയുമറേറ്ററുകൾ ഇതുപോലെ പ്രമോട്ട് ചെയ്യുന്നു
അൺസ്കോപ്പ് എൻയുമറേറ്റർമാർ, "va_arg" പരാതിപ്പെടാൻ കാരണമാകുന്നു. മിക്ക ടാർഗെറ്റുകളിലും ഇത് സംഭവിക്കുന്നില്ല
ഒരു ആർഗ്യുമെന്റ് പാസാക്കാൻ വഴിയില്ലാത്തതിനാൽ, ABI കടന്നുപോകുന്ന പാരാമീറ്ററിനെ യഥാർത്ഥത്തിൽ ബാധിക്കും
"int" നേക്കാൾ ചെറുത്.

കൂടാതെ, "const_cast" എന്ന ടെംപ്ലേറ്റ് ആർഗ്യുമെന്റ് പാക്കുകളുടെ മാംഗ്ലിംഗ് എബിഐ മാറ്റി.
"static_cast", പ്രിഫിക്സ് ഇൻക്രിമെന്റ്/ഡിക്രിമെന്റ്, ഒരു ക്ലാസ് സ്കോപ്പ് ഫംഗ്ഷൻ എന്നിവ a ആയി ഉപയോഗിക്കുന്നു
ടെംപ്ലേറ്റ് വാദം.

ഈ പ്രശ്നങ്ങൾ പരിഹരിച്ചു -fabi-version=6.

* ഡിഫോൾട്ട് ആർഗ്യുമെന്റ് സ്കോപ്പിലുള്ള ലാംഡാസ് തെറ്റായി മംഗൾ ചെയ്തു, എബിഐ മാറി
"nullptr_t" ന്റെ മാംഗ്ലിംഗ്.

ഈ പ്രശ്നങ്ങൾ പരിഹരിച്ചു -fabi-version=7.

* ഫംഗ്‌ഷൻ-സിവി-ക്വാളിഫയറുകൾ ഉപയോഗിച്ച് ഒരു ഫംഗ്‌ഷൻ തരം മാംഗ്ലിംഗ് ചെയ്യുമ്പോൾ, യോഗ്യതയില്ലാത്തത്
ഫംഗ്‌ഷൻ തരം തെറ്റായി ഒരു സബ്‌സ്റ്റിറ്റ്യൂഷൻ കാൻഡിഡേറ്റായി കണക്കാക്കി.

ഇത് ഉറപ്പിച്ചു -fabi-version=8.

psABI-യുമായി ബന്ധപ്പെട്ട മാറ്റങ്ങളെക്കുറിച്ചും ഇത് മുന്നറിയിപ്പ് നൽകുന്നു. അറിയപ്പെടുന്ന psABI ഈ ഘട്ടത്തിൽ മാറുന്നു
ഉൾപ്പെടുന്നു:

* SysV/x86-64-ന്, "നീണ്ട ഇരട്ട" അംഗങ്ങളുള്ള യൂണിയനുകൾ മെമ്മറിയിൽ കടന്നുപോകുന്നു
psABI-യിൽ വ്യക്തമാക്കിയിട്ടുണ്ട്. ഉദാഹരണത്തിന്:

യൂണിയൻ യു {
നീണ്ട ഇരട്ട ld;
int i;
};

"യൂണിയൻ യു" എല്ലായ്പ്പോഴും ഓർമ്മയിൽ കടന്നുപോകുന്നു.

-വാബി-ടാഗ് (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ABI ടാഗ് ഇല്ലാത്ത ഒരു സന്ദർഭത്തിൽ ABI ടാഗ് ഉള്ള ഒരു തരം ഉപയോഗിക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക.
കാണുക സി ++ ഗുണവിശേഷങ്ങൾ എബിഐ ടാഗുകളെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്.

-Wctor-dtor-സ്വകാര്യത (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരു ക്ലാസ് ഉപയോഗയോഗ്യമല്ലെന്ന് തോന്നുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക, കാരണം അതിലെ എല്ലാ കൺസ്ട്രക്‌റ്ററുകളും ഡിസ്ട്രക്റ്ററുകളും
ക്ലാസ് സ്വകാര്യമാണ്, ഇതിന് സുഹൃത്തുക്കളോ പൊതു സ്റ്റാറ്റിക് അംഗങ്ങളുടെ പ്രവർത്തനങ്ങളോ ഇല്ല.
സ്വകാര്യമല്ലാത്ത രീതികൾ ഒന്നുമില്ലെങ്കിൽ, കുറഞ്ഞത് ഒരു സ്വകാര്യ അംഗമെങ്കിലും ഉണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
ഒരു കൺസ്ട്രക്റ്റർ അല്ലെങ്കിൽ ഡിസ്ട്രക്റ്റർ അല്ലാത്ത പ്രവർത്തനം.

-Wdelete-non-virtual-dtor (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
വെർച്വൽ ഉള്ള ഒരു ക്ലാസിന്റെ ഒരു ഉദാഹരണം നശിപ്പിക്കാൻ "ഇല്ലാതാക്കുക" ഉപയോഗിക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക
ഫംഗ്ഷനുകളും നോൺ-വെർച്വൽ ഡിസ്ട്രക്റ്ററും. ഉരുത്തിരിഞ്ഞ ഒരു ഉദാഹരണം ഇല്ലാതാക്കുന്നത് സുരക്ഷിതമല്ല
അടിസ്ഥാന ക്ലാസിന് വെർച്വൽ ഇല്ലെങ്കിൽ, ഒരു പോയിന്ററിലൂടെ ഒരു അടിസ്ഥാന ക്ലാസിലേക്ക് ക്ലാസ്
നശിപ്പിക്കുന്നവൻ. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-Wliteral-suffix (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരു സ്ട്രിംഗിനെയോ പ്രതീകത്തെയോ അക്ഷരാർത്ഥത്തിൽ പിന്തുടരാത്ത ഒരു ഉദ്-സഫിക്‌സ് വരുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക
അടിവരയിട്ട് ആരംഭിക്കുക. ഒരു അനുരൂപമായ വിപുലീകരണമെന്ന നിലയിൽ, GCC അത്തരം പ്രത്യയങ്ങളെ ഇങ്ങനെ പരിഗണിക്കുന്നു
കോഡുമായി പിന്നിലേക്ക് അനുയോജ്യത നിലനിർത്തുന്നതിന് പ്രീപ്രോസസിംഗ് ടോക്കണുകൾ വേർതിരിക്കുക
അതിൽ നിന്ന് ഫോർമാറ്റിംഗ് മാക്രോകൾ ഉപയോഗിക്കുന്നു " ". ഉദാഹരണത്തിന്:

#നിർവചിക്കുക __STDC_FORMAT_MACROS
#ഉൾപ്പെടുന്നു
#ഉൾപ്പെടുന്നു

int പ്രധാന () {
int64_t i64 = 123;
printf("My int64: %"PRId64"\n", i64);
}

ഈ സാഹചര്യത്തിൽ, "PRId64" ഒരു പ്രത്യേക പ്രീപ്രോസസിംഗ് ടോക്കണായി കണക്കാക്കുന്നു.

ഈ മുന്നറിയിപ്പ് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

- ചുരുങ്ങുന്നു (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
C++11 നിരോധിക്കുന്ന ഒരു ഇടുങ്ങിയ പരിവർത്തനം ഉള്ളിൽ സംഭവിക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക { }, ഉദാ

int i = { 2.2 }; // പിശക്: ഇരട്ടയിൽ നിന്ന് പൂർണ്ണതയിലേക്ക് ചുരുങ്ങുന്നു

ഈ പതാക ഉൾപ്പെടുത്തിയിട്ടുണ്ട് - മതിൽ ഒപ്പം -Wc++11-compat.

കൂടെ -std=c++11, -നോൺ-നരോവിംഗ് സ്റ്റാൻഡേർഡിന് ആവശ്യമായ ഡയഗ്നോസ്റ്റിക്സിനെ അടിച്ചമർത്തുന്നു.
ഇത് നന്നായി രൂപപ്പെടുത്തിയ കോഡിന്റെ അർത്ഥത്തെ ബാധിക്കില്ല എന്നത് ശ്രദ്ധിക്കുക; ഇടുങ്ങിയ പരിവർത്തനങ്ങൾ
SFINAE പശ്ചാത്തലത്തിൽ ഇപ്പോഴും മോശമായി രൂപപ്പെട്ടതായി കണക്കാക്കപ്പെടുന്നു.

-ഒഴികെ (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരു ഫംഗ്‌ഷനിലേക്കുള്ള കോൾ കാരണം ഒരു noexcept-expression തെറ്റായി വിലയിരുത്തുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക
അതിന് നോൺ-ത്രോയിംഗ് എക്‌സെപ്‌ഷൻ സ്പെസിഫിക്കേഷൻ ഇല്ല (അതായത് "ത്രോ()" അല്ലെങ്കിൽ
"noexcept") എന്നാൽ കംപൈലർ ഒരിക്കലും ഒരു അപവാദം ഇടരുത് എന്ന് അറിയപ്പെടുന്നു.

-Wnon-virtual-dtor (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരു ക്ലാസിന് വെർച്വൽ ഫംഗ്‌ഷനുകളും ആക്‌സസ് ചെയ്യാവുന്ന നോൺ-വെർച്വൽ ഡിസ്ട്രക്‌റ്ററും ഉള്ളപ്പോൾ മുന്നറിയിപ്പ് നൽകുക
സ്വയം അല്ലെങ്കിൽ ആക്സസ് ചെയ്യാവുന്ന പോളിമോർഫിക് ബേസ് ക്ലാസിൽ, ഈ സാഹചര്യത്തിൽ ഇത് സാധ്യമാണ്
ക്ലാസിലേക്ക് തന്നെ ഒരു പോയിന്റർ വഴി ഡിറൈവ്ഡ് ക്ലാസ്സിന്റെ ഒരു ഉദാഹരണം ഇല്ലാതാക്കുന്നത് സുരക്ഷിതമല്ല
അല്ലെങ്കിൽ അടിസ്ഥാന ക്ലാസ്. എങ്കിൽ ഈ മുന്നറിയിപ്പ് സ്വയമേവ പ്രവർത്തനക്ഷമമാകും -Weffc++ വ്യക്തമാക്കിയിട്ടുണ്ട്.

-ഓർഡർ (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
കോഡിൽ നൽകിയിരിക്കുന്ന അംഗങ്ങളുടെ ഇനീഷ്യലൈസറുകളുടെ ക്രമം ഓർഡറുമായി പൊരുത്തപ്പെടാത്തപ്പോൾ മുന്നറിയിപ്പ് നൽകുക
അതിൽ അവരെ വധിക്കണം. ഉദാഹരണത്തിന്:

ഘടന എ {
int i;
int j;
A(): j (0), i (1) {}
};

കംപൈലർ "i", "j" എന്നിവയ്‌ക്കായി മെമ്പർ ഇനീഷ്യലൈസറുകൾ പൊരുത്തപ്പെടുത്തുന്നതിന് പുനഃക്രമീകരിക്കുന്നു
അതിനായുള്ള മുന്നറിയിപ്പ് പുറപ്പെടുവിച്ചുകൊണ്ട് അംഗങ്ങളുടെ പ്രഖ്യാപന ഉത്തരവ്. ഈ മുന്നറിയിപ്പ്
പ്രാപ്തമാക്കിയത് - മതിൽ.

-ഫെക്‌സ്‌റ്റ്-ന്യൂമെറിക്-ലിറ്ററലുകൾ (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
സാങ്കൽപ്പിക, നിശ്ചിത-ബിന്ദു അല്ലെങ്കിൽ മെഷീൻ-നിർവചിക്കപ്പെട്ട അക്ഷര സംഖ്യകളുടെ പ്രത്യയങ്ങൾ ഗ്നു ആയി സ്വീകരിക്കുക
വിപുലീകരണങ്ങൾ. ഈ ഓപ്‌ഷൻ ഓഫാക്കുമ്പോൾ, ഈ പ്രത്യയങ്ങളെ C++11 ഉപയോക്താവായി കണക്കാക്കുന്നു-
നിർവചിച്ച അക്ഷരീയ സംഖ്യാ പ്രത്യയങ്ങൾ. എല്ലാ പ്രീ-സി++11 ഭാഷാഭേദങ്ങൾക്കും ഇത് ഡിഫോൾട്ടായി ഓണാണ്
കൂടാതെ എല്ലാ GNU ഭാഷകളും: -std=c++98, -std=gnu++98, -std=gnu++11, -std=gnu++14. ഈ
ഐഎസ്ഒ C++11 മുതലുള്ള ഓപ്‌ഷൻ ഡിഫോൾട്ടായി ഓഫാണ് (-std=c++11, ...).

ഇനിപ്പറയുന്നവ -ഡബ്ല്യു... ഓപ്ഷനുകൾ ബാധിക്കില്ല - മതിൽ.

-Weffc++ (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
സ്കോട്ട് മെയേഴ്സിൽ നിന്നുള്ള ഇനിപ്പറയുന്ന ശൈലി മാർഗ്ഗനിർദ്ദേശങ്ങളുടെ ലംഘനങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക ഫലപ്രദമായ
സി ++ പുസ്തകങ്ങളുടെ പരമ്പര:

* ചലനാത്മകമായി ക്ലാസുകൾക്കായി ഒരു കോപ്പി കൺസ്ട്രക്‌ടറും ഒരു അസൈൻമെന്റ് ഓപ്പറേറ്ററും നിർവ്വചിക്കുക-
അനുവദിച്ച മെമ്മറി.

* കൺസ്‌ട്രക്‌റ്ററുകളിലെ അസൈൻമെന്റിനേക്കാൾ ഇനിഷ്യലൈസേഷൻ മുൻഗണന നൽകുക.

*ഇതിലേക്ക് "ഓപ്പറേറ്റർ=" ഒരു റഫറൻസ് തിരികെ നൽകുക.

* നിങ്ങൾ ഒരു ഒബ്‌ജക്‌റ്റ് തിരികെ നൽകേണ്ടിവരുമ്പോൾ ഒരു റഫറൻസ് തിരികെ നൽകാൻ ശ്രമിക്കരുത്.

* ഇൻക്രിമെന്റ്, ഡിക്രിമെന്റ് ഓപ്പറേറ്റർമാരുടെ പ്രിഫിക്സ്, പോസ്റ്റ്ഫിക്സ് രൂപങ്ങൾ തമ്മിൽ വേർതിരിക്കുക.

* ഒരിക്കലും "&&", "||", അല്ലെങ്കിൽ "," ഓവർലോഡ് ചെയ്യരുത്.

ഈ ഓപ്ഷനും പ്രവർത്തനക്ഷമമാക്കുന്നു -Wnon-virtual-dtor, ഇത് ഫലപ്രദമായ C++ കളിൽ ഒന്നാണ്
ശുപാർശകൾ. എന്നിരുന്നാലും, വെർച്വലിന്റെ അഭാവത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകാനാണ് പരിശോധന നീട്ടിയിരിക്കുന്നത്
ആക്സസ് ചെയ്യാവുന്ന നോൺ-പോളിമോർഫിക് ബേസ് ക്ലാസുകളിലും ഡിസ്ട്രക്റ്റർ.

ഈ ഓപ്‌ഷൻ തിരഞ്ഞെടുക്കുമ്പോൾ, സ്റ്റാൻഡേർഡ് ലൈബ്രറി തലക്കെട്ടുകൾ എല്ലാം അനുസരിക്കുന്നില്ലെന്ന കാര്യം ശ്രദ്ധിക്കുക
ഈ മാർഗ്ഗനിർദ്ദേശങ്ങളുടെ; ഉപയോഗിക്കുക grep -v ആ മുന്നറിയിപ്പുകൾ ഫിൽട്ടർ ചെയ്യാൻ.

-വിസ്ട്രിക്റ്റ്-നൾ-സെന്റിനൽ (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
കാസ്റ്റ് ചെയ്യാത്ത "NULL" എന്നതിനെ കാവൽക്കാരനായി ഉപയോഗിക്കുന്നതിനെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. ജിസിസി ഉപയോഗിച്ച് മാത്രം കംപൈൽ ചെയ്യുമ്പോൾ
"NULL" എന്നത് "__null" എന്ന് നിർവ്വചിച്ചിരിക്കുന്നതിനാൽ ഇതൊരു സാധുവായ കാവൽക്കാരനാണ്. അത് ശൂന്യമാണെങ്കിലും
ഒരു നൾ പോയിന്ററിനേക്കാൾ പോയിന്റർ സ്ഥിരാങ്കം, അത് ഒരേ വലുപ്പമുള്ളതാണെന്ന് ഉറപ്പുനൽകുന്നു
ഒരു സൂചികയായി. എന്നാൽ ഈ ഉപയോഗം വിവിധ കംപൈലറുകളിലുടനീളം പോർട്ടബിൾ അല്ല.

-Wno-നോൺ-ടെംപ്ലേറ്റ്-സുഹൃത്ത് (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരു ടെംപ്ലേറ്റിനുള്ളിൽ ടെംപ്ലേറ്റ് ചെയ്യാത്ത ഫ്രണ്ട് ഫംഗ്‌ഷനുകൾ പ്രഖ്യാപിക്കുമ്പോൾ മുന്നറിയിപ്പുകൾ പ്രവർത്തനരഹിതമാക്കുക.
G++-ൽ വ്യക്തമായ ടെംപ്ലേറ്റ് സ്പെസിഫിക്കേഷൻ പിന്തുണയുടെ വരവ് മുതൽ, പേരാണെങ്കിൽ
സുഹൃത്ത് ഒരു യോഗ്യതയില്ലാത്ത ഐഡിയാണ് (അതായത്, സുഹൃത്ത് foo(int)), C++ ഭാഷാ സ്പെസിഫിക്കേഷൻ
ഒരു സാധാരണ, നോൺ ടെംപ്ലേറ്റ് ഫംഗ്‌ഷൻ പ്രഖ്യാപിക്കാനോ നിർവചിക്കാനോ സുഹൃത്ത് ആവശ്യപ്പെടുന്നു. (വിഭാഗം
14.5.3). G++ വ്യക്തമായ സ്പെസിഫിക്കേഷൻ നടപ്പിലാക്കുന്നതിന് മുമ്പ്, യോഗ്യതയില്ലാത്ത ഐഡികൾ ആയിരിക്കാം
ഒരു ടെംപ്ലേറ്റൈസ്ഡ് ഫംഗ്ഷന്റെ ഒരു പ്രത്യേക സ്പെഷ്യലൈസേഷനായി വ്യാഖ്യാനിക്കുന്നു. കാരണം ഇത്
അനുരൂപമല്ലാത്ത പെരുമാറ്റം G++ നുള്ള ഡിഫോൾട്ട് സ്വഭാവമല്ല,
-Wnon-template-friend സാധ്യമായ പ്രശ്‌നങ്ങൾക്കായി നിലവിലുള്ള കോഡ് പരിശോധിക്കാൻ കംപൈലറിനെ അനുവദിക്കുന്നു
പാടുകൾ കൂടാതെ സ്ഥിരസ്ഥിതിയായി ഓണാണ്. ഈ പുതിയ കംപൈലർ സ്വഭാവം ഉപയോഗിച്ച് ഓഫ് ചെയ്യാം
-Wno-നോൺ-ടെംപ്ലേറ്റ്-സുഹൃത്ത്, ഇത് അനുരൂപമായ കംപൈലർ കോഡ് നിലനിർത്തുന്നു, എന്നാൽ ഇത് പ്രവർത്തനരഹിതമാക്കുന്നു
സഹായകരമായ മുന്നറിയിപ്പ്.

-വോൾഡ്-സ്റ്റൈൽ-കാസ്റ്റ് (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
C++ പ്രോഗ്രാമിനുള്ളിൽ പഴയ രീതിയിലുള്ള (C-സ്റ്റൈൽ) കാസ്‌റ്റ് അസാധുവായ തരത്തിലേക്ക് ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക.
പുതിയ ശൈലിയിലുള്ള കാസ്റ്റുകൾ ("dynamic_cast", "static_cast", "reinterpret_cast", കൂടാതെ
"const_cast") ഉദ്ദേശിക്കാത്ത ഇഫക്റ്റുകൾക്ക് സാധ്യത കുറവാണ്, മാത്രമല്ല തിരയാൻ വളരെ എളുപ്പവുമാണ്.

-Woverloaded-വെർച്വൽ (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരു ഫംഗ്‌ഷൻ ഡിക്ലറേഷൻ ഒരു അടിസ്ഥാന ക്ലാസിൽ നിന്ന് വെർച്വൽ ഫംഗ്‌ഷനുകൾ മറയ്‌ക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക. വേണ്ടി
ഉദാഹരണത്തിന്, ഇതിൽ:

ഘടന എ {
വെർച്വൽ ശൂന്യമായ f();
};

ഘടന ബി: പൊതു എ {
ശൂന്യമായ f (int);
};

"F" ന്റെ "A" ക്ലാസ് പതിപ്പ് "B" ൽ മറച്ചിരിക്കുന്നു, കൂടാതെ കോഡ് പോലെ:

ബി * ബി;
b->f();

കംപൈൽ ചെയ്യുന്നതിൽ പരാജയപ്പെടുന്നു.

-Wno-pmf-പരിവർത്തനങ്ങൾ (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
അംഗത്വ ഫംഗ്‌ഷനിലേക്ക് ബൗണ്ട് പോയിന്റർ പ്ലെയ്‌നിലേക്ക് പരിവർത്തനം ചെയ്യുന്നതിനുള്ള ഡയഗ്നോസ്റ്റിക് പ്രവർത്തനരഹിതമാക്കുക
പോയിന്റർ.

-വിസൈൻ-പ്രമോ (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒപ്പിടാത്തതോ എണ്ണിയതോ ആയ തരത്തിൽ നിന്ന് ഓവർലോഡ് റെസലൂഷൻ ഒരു പ്രമോഷൻ തിരഞ്ഞെടുക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക
ഒപ്പിട്ട തരം, അതേ വലുപ്പത്തിലുള്ള ഒപ്പിടാത്ത തരത്തിലേക്ക് പരിവർത്തനം ചെയ്യുന്നതിലൂടെ. മുമ്പത്തെ
G++ പതിപ്പുകൾ ഒപ്പിടാതിരിക്കാൻ ശ്രമിച്ചു, എന്നാൽ സ്റ്റാൻഡേർഡ് നിലവിലുള്ളത് നിർബന്ധമാക്കുന്നു
പെരുമാറ്റം.

ഓപ്ഷനുകൾ നിയന്ത്രിക്കുന്നു ലക്ഷ്യം-സി ഒപ്പം ലക്ഷ്യം-C++ പ്രാദേശിക ഭാഷകൾ
(ശ്രദ്ധിക്കുക: ഈ മാനുവൽ ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ ഭാഷകളെ വിവരിക്കുന്നില്ല
തങ്ങളെത്തന്നെ.

ഒബ്ജക്റ്റീവ്-സിക്ക് മാത്രം അർത്ഥമുള്ള കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ ഈ വിഭാഗം വിവരിക്കുന്നു
ഒബ്ജക്റ്റീവ്-സി++ പ്രോഗ്രാമുകളും. നിങ്ങൾക്ക് മിക്ക ഭാഷാ-സ്വതന്ത്ര ഗ്നുവും ഉപയോഗിക്കാം
കമ്പൈലർ ഓപ്ഷനുകൾ. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് ഒരു ഫയൽ കംപൈൽ ചെയ്യാം some_class.m ഇതുപോലെ:

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

ഈ ഉദാഹരണത്തിൽ, -fgnu-റൺടൈം ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ എന്നിവയ്‌ക്ക് മാത്രമുള്ള ഒരു ഓപ്ഷനാണ്
പ്രോഗ്രാമുകൾ; GCC പിന്തുണയ്ക്കുന്ന ഏത് ഭാഷയിലും നിങ്ങൾക്ക് മറ്റ് ഓപ്ഷനുകൾ ഉപയോഗിക്കാം.

ഒബ്ജക്റ്റീവ്-സി സി ഭാഷയുടെ വിപുലീകരണമായതിനാൽ ഒബ്ജക്റ്റീവ്-സി സമാഹരണങ്ങൾ ശ്രദ്ധിക്കുക
C ഫ്രണ്ട്-എൻഡിന് പ്രത്യേകമായ ഓപ്ഷനുകളും ഉപയോഗിക്കാം (ഉദാ. - പരമ്പരാഗത). സമാനമായി,
ഒബ്ജക്റ്റീവ്-സി++ സമാഹാരങ്ങൾ C++-നിർദ്ദിഷ്ട ഓപ്ഷനുകൾ ഉപയോഗിച്ചേക്കാം (ഉദാ, -വാബി).

ആ ഓപ്ഷനുകളുടെ ഒരു ലിസ്റ്റ് ഇതാ മാത്രം ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ എന്നിവ കംപൈൽ ചെയ്യുന്നതിന്
പ്രോഗ്രാമുകൾ:

-fconstant-string-class=ക്ലാസ്-നാമം
ഉപയോഗം ക്ലാസ്-നാമം ഓരോ അക്ഷര സ്ട്രിംഗിനും തൽക്ഷണം നൽകേണ്ട ക്ലാസിന്റെ പേര്
"@"..."" എന്ന വാക്യഘടനയിൽ വ്യക്തമാക്കിയിരിക്കുന്നു. സ്ഥിരസ്ഥിതി ക്ലാസ്സിന്റെ പേര് "NXConstantString" ആണെങ്കിൽ
ഗ്നു റൺടൈം ആണ് ഉപയോഗിക്കുന്നത്, നെക്സ്റ്റ് റൺടൈം ആണെങ്കിൽ "NSConstantString"
ഉപയോഗിച്ചു (ചുവടെ കാണുക). ദി -fconstant-cfstrings ഓപ്‌ഷനും ഉണ്ടെങ്കിൽ, അതിനെ അസാധുവാക്കുന്നു
-fconstant-string-class സജ്ജീകരിക്കുകയും "@"..."" ലിറ്ററലുകൾ സ്ഥിരമായി നിരത്തുകയും ചെയ്യുന്നു
കോർഫൗണ്ടേഷൻ സ്ട്രിംഗുകൾ.

-fgnu-റൺടൈം
സ്റ്റാൻഡേർഡ് ഗ്നു ഒബ്ജക്റ്റീവ്-സി റൺടൈമിന് അനുയോജ്യമായ ഒബ്ജക്റ്റ് കോഡ് സൃഷ്ടിക്കുക. ഇതാണ്
മിക്ക തരത്തിലുള്ള സിസ്റ്റങ്ങളുടെയും സ്ഥിരസ്ഥിതി.

-fnext-runtime
NeXT റൺടൈമിന് അനുയോജ്യമായ ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. NeXT-അടിസ്ഥാനത്തിലുള്ള ഡിഫോൾട്ടാണിത്
ഡാർവിനും Mac OS X ഉം ഉൾപ്പെടെയുള്ള സിസ്റ്റങ്ങൾ. മാക്രോ "__NEXT_RUNTIME__" മുൻനിർവചിച്ചതാണെങ്കിൽ
(ഒപ്പം മാത്രം) ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു.

-fno-nil-recevers
ഇതിലെ എല്ലാ ഒബ്ജക്റ്റീവ്-സി സന്ദേശങ്ങളും ("[റിസീവർ സന്ദേശം:arg]") അയയ്‌ക്കുന്നുവെന്ന് കരുതുക.
വിവർത്തന യൂണിറ്റ് റിസീവർ "പൂജ്യം" അല്ലെന്ന് ഉറപ്പാക്കുന്നു. ഇത് കൂടുതൽ അനുവദിക്കുന്നു
ഉപയോഗിക്കേണ്ട റൺടൈമിലെ കാര്യക്ഷമമായ എൻട്രി പോയിന്റുകൾ. ഈ ഓപ്ഷൻ മാത്രമേ ലഭ്യമാകൂ
NeXT റൺടൈം, ABI പതിപ്പ് 0 അല്ലെങ്കിൽ 1 എന്നിവയുമായി സംയോജിപ്പിക്കുക.

-fobjc-abi-version=n
പതിപ്പ് ഉപയോഗിക്കുക n തിരഞ്ഞെടുത്ത റൺടൈമിനായുള്ള ഒബ്ജക്റ്റീവ്-സി എബിഐ. ഈ ഓപ്ഷൻ ആണ്
നിലവിൽ NeXT റൺടൈമിന് മാത്രമേ പിന്തുണയുള്ളൂ. അങ്ങനെയെങ്കിൽ, പതിപ്പ് 0 ആണ്
പരമ്പരാഗത (32-ബിറ്റ്) ABI പ്രോപ്പർട്ടികൾക്കും മറ്റ് ഒബ്ജക്റ്റീവ്-സി 2.0 നും പിന്തുണയില്ല
കൂട്ടിച്ചേർക്കലുകൾ. പതിപ്പ് 1 പരമ്പരാഗത (32-ബിറ്റ്) ABI ആണ് പ്രോപ്പർട്ടികൾ കൂടാതെ
മറ്റ് ഒബ്ജക്റ്റീവ്-സി 2.0 കൂട്ടിച്ചേർക്കലുകൾ. പതിപ്പ് 2 ആധുനിക (64-ബിറ്റ്) ABI ആണ്. ഒന്നുമില്ലെങ്കിൽ
വ്യക്തമാക്കിയിരിക്കുന്നു, 0-ബിറ്റ് ടാർഗെറ്റ് മെഷീനുകളിൽ പതിപ്പ് 32 ഉം 2-ബിറ്റിലെ പതിപ്പ് 64 ഉം ആണ്.
ടാർഗെറ്റ് മെഷീനുകൾ.

-fobjc-call-cxx-cdtors
ഓരോ ഒബ്ജക്റ്റീവ്-സി ക്ലാസിനും, അതിലെ ഏതെങ്കിലും ഇൻസ്‌റ്റൻസ് വേരിയബിളുകൾ ഒരു C++ ഒബ്‌ജക്റ്റ് ആണോ എന്ന് പരിശോധിക്കുക.
ഒരു നോൺ-ട്രിവിയൽ ഡിഫോൾട്ട് കൺസ്ട്രക്റ്റർ ഉപയോഗിച്ച്. അങ്ങനെയാണെങ്കിൽ, ഒരു പ്രത്യേക "- (ഐഡി) സമന്വയിപ്പിക്കുക
.cxx_confirst" ഇൻസ്‌റ്റൻസ് മെത്തേഡ് ഏത് നോൺ-ട്രിവിയൽ ഡിഫോൾട്ട് കൺസ്‌ട്രക്‌റ്ററുകൾ പ്രവർത്തിപ്പിക്കുന്നു
അത്തരം സന്ദർഭ വേരിയബിളുകൾ, ക്രമത്തിൽ, തുടർന്ന് "സ്വയം" തിരികെ നൽകുക. അതുപോലെ, എന്തെങ്കിലും ഉണ്ടോ എന്ന് പരിശോധിക്കുക
ഇൻസ്‌റ്റൻസ് വേരിയബിൾ എന്നത് നിസ്സാരമല്ലാത്ത ഡിസ്ട്രക്‌റ്ററുള്ള ഒരു C++ ഒബ്‌ജക്‌റ്റാണ്, അങ്ങനെയാണെങ്കിൽ, സിന്തസൈസ് ചെയ്യുക
അത്തരം എല്ലാ ഡിഫോൾട്ട് ഡിസ്ട്രക്റ്ററുകളും പ്രവർത്തിപ്പിക്കുന്ന ഒരു പ്രത്യേക "- (അസാധു) .cxx_destruct" രീതി
റിവേഴ്സ് ഓർഡർ.

"- (id) .cxx_confirst", "- (void) .cxx_destruct" രീതികൾ ഇങ്ങനെ മാത്രം ജനറേറ്റുചെയ്‌തു
നിലവിലെ ഒബ്‌ജക്റ്റീവ്-സി ക്ലാസിൽ പ്രഖ്യാപിച്ച ഇൻസ്‌റ്റൻസ് വേരിയബിളുകളിൽ പ്രവർത്തിക്കുക, അതല്ല
സൂപ്പർക്ലാസ്സുകളിൽ നിന്ന് പാരമ്പര്യമായി. ഒബ്ജക്റ്റീവ്-സി റൺടൈമിന്റെ ഉത്തരവാദിത്തമാണ്
ഒരു വസ്തുവിന്റെ അനന്തരാവകാശ ശ്രേണിയിൽ അത്തരം എല്ലാ രീതികളും പ്രയോഗിക്കുക. "- (ഐഡി)
.cxx_confirst" രീതികൾ ഒരു പുതിയ ഒബ്‌ജക്റ്റിന് ശേഷം ഉടൻ തന്നെ റൺടൈം വഴി അഭ്യർത്ഥിക്കുന്നു
ഉദാഹരണം അനുവദിച്ചിരിക്കുന്നു; "- (void) .cxx_destruct" രീതികൾ ഉടനടി അഭ്യർത്ഥിക്കുന്നു
റൺടൈം ഒരു ഒബ്ജക്റ്റ് ഉദാഹരണം ഡീലോക്കേറ്റ് ചെയ്യുന്നതിന് മുമ്പ്.

ഇത് എഴുതുമ്പോൾ, Mac OS X 10.4-ലും അതിനുശേഷമുള്ള NeXT റൺടൈമിന് മാത്രമേ പിന്തുണയുള്ളൂ
"- (id) .cxx_construct", "- (void) .cxx_destruct" രീതികൾ അഭ്യർത്ഥിക്കുന്നു.

-fobjc-direct-dispatch
മെസേജ് ഡിസ്പാച്ചറിലേക്ക് അതിവേഗ ജമ്പുകൾ അനുവദിക്കുക. ഡാർവിനിലൂടെ ഇത് പൂർത്തീകരിക്കപ്പെടുന്നു
com പേജ്.

-fobjc-ഒഴിവാക്കലുകൾ
ഒബ്‌ജക്‌റ്റീവ്-സിയിലെ ഘടനാപരമായ ഒഴിവാക്കലുകൾ കൈകാര്യം ചെയ്യുന്നതിനായി സിന്റക്‌റ്റിക് പിന്തുണ പ്രവർത്തനക്ഷമമാക്കുക
C++, Java എന്നിവ വാഗ്ദാനം ചെയ്യുന്നത്. ഒബ്ജക്റ്റീവ്-സി ഉപയോഗിക്കുന്നതിന് ഈ ഓപ്ഷൻ ആവശ്യമാണ്
കീവേഡുകൾ @try, @throw, @catch, @finally and @synchronized. ഈ ഓപ്ഷൻ ലഭ്യമാണ്
GNU റൺടൈമിലും NeXT റൺടൈമിലും (എന്നാൽ ഇതുമായി ബന്ധപ്പെട്ട് ലഭ്യമല്ല
Mac OS X 10.2-ലും അതിനുമുമ്പും ഉള്ള NeXT റൺടൈം).

-fobjc-gc
ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ പ്രോഗ്രാമുകളിൽ ഗാർബേജ് കളക്ഷൻ (ജിസി) പ്രവർത്തനക്ഷമമാക്കുക. ഈ ഓപ്ഷൻ
NeXT റൺടൈമിൽ മാത്രമേ ലഭ്യമാകൂ; ഗ്നു റൺടൈമിന് വ്യത്യസ്തമായ മാലിന്യമുണ്ട്
പ്രത്യേക കംപൈലർ ഫ്ലാഗുകൾ ആവശ്യമില്ലാത്ത ശേഖരം നടപ്പിലാക്കൽ.

-fobjc-nilcheck
എബിഐയുടെ വേർഷൻ 2 ഉള്ള നെക്സ്റ്റ് റൺടൈമിനായി, നോൺ റിസീവർ ഇൻ മെത്തേഡുണ്ടോയെന്ന് പരിശോധിക്കുക
യഥാർത്ഥ മെത്തേഡ് കോൾ ചെയ്യുന്നതിന് മുമ്പുള്ള അഭ്യർത്ഥനകൾ. ഇത് സ്ഥിരസ്ഥിതിയാണ്, ആകാം
ഉപയോഗിച്ച് അപ്രാപ്തമാക്കി -fno-objc-nilcheck. ക്ലാസ് രീതികളും സൂപ്പർ കോളുകളും ഒരിക്കലും പരിശോധിക്കില്ല
ഈ പതാക എന്താക്കിയാലും ഈ രീതിയിൽ ശൂന്യമാണ്. നിലവിൽ ഈ പതാക പ്രവർത്തിക്കുന്നു
GNU റൺടൈം അല്ലെങ്കിൽ NeXT റൺടൈം ABI-യുടെ പഴയ പതിപ്പ് ഉപയോഗിക്കുമ്പോൾ ഒന്നുമില്ല.

-fobjc-std=objc1
ജിസിസി 1.0 അംഗീകരിച്ച ഭാഷയായ ഒബ്ജക്റ്റീവ്-സി 4.0-ന്റെ ഭാഷാ വാക്യഘടനയുമായി പൊരുത്തപ്പെടുക.
ഇത് C/C++ ഭാഷയിലേക്കുള്ള ഒബ്ജക്റ്റീവ്-C കൂട്ടിച്ചേർക്കലുകളെ മാത്രമേ ബാധിക്കുകയുള്ളൂ; അത് ബാധിക്കുന്നില്ല
C/C++ മാനദണ്ഡങ്ങളോടുള്ള അനുരൂപത, പ്രത്യേക C/C++ ഭാഷാഭേദത്താൽ നിയന്ത്രിക്കപ്പെടുന്നു
ഓപ്ഷൻ ഫ്ലാഗുകൾ. ഒബ്ജക്റ്റീവ്-സി അല്ലെങ്കിൽ ഒബ്ജക്റ്റീവ്-സി++ ഉപയോഗിച്ച് ഈ ഓപ്ഷൻ ഉപയോഗിക്കുമ്പോൾ
കംപൈലർ, GCC 4.0 തിരിച്ചറിയാത്ത ഏതെങ്കിലും ഒബ്ജക്റ്റീവ്-സി വാക്യഘടന നിരസിക്കപ്പെട്ടു. ഈ
നിങ്ങളുടെ ഒബ്‌ജക്‌റ്റീവ്-സി കോഡ് കംപൈൽ ചെയ്യാൻ കഴിയുമെന്ന് ഉറപ്പാക്കണമെങ്കിൽ ഇത് ഉപയോഗപ്രദമാണ്
ജിസിസിയുടെ പഴയ പതിപ്പുകൾ.

-freplace-objc-classes
നിർദ്ദേശങ്ങൾ നൽകുന്ന ഒരു പ്രത്യേക മാർക്കർ പുറപ്പെടുവിക്കുക ld(1) തത്ഫലമായുണ്ടാകുന്ന ഒബ്‌ജക്റ്റിൽ സ്ഥിരമായി ലിങ്ക് ചെയ്യരുത്
ഫയൽ, അനുവദിക്കുക ഡിൽഡ്(1) പകരം റൺ ടൈമിൽ ലോഡ് ചെയ്യാൻ. ഇതിൽ ഉപയോഗിക്കുന്നു
ഒബ്‌ജക്‌റ്റ് ഫയൽ ഉള്ളിടത്ത്, ഡീബഗ്ഗിംഗ് മോഡ്, ഫിക്‌സ് ആൻഡ്-തുടരുക എന്നതുമായി സംയോജിപ്പിക്കുക
പ്രോഗ്രാമിന്റെ കോഴ്‌സിൽ ചോദ്യം വീണ്ടും കംപൈൽ ചെയ്യുകയും ചലനാത്മകമായി റീലോഡ് ചെയ്യുകയും ചെയ്യാം
നിർവ്വഹണം, പ്രോഗ്രാം തന്നെ പുനരാരംഭിക്കേണ്ടതില്ല. നിലവിൽ, ഫിക്സ്-ആൻഡ്-
Mac-ലെ NeXT റൺടൈമുമായി സംയോജിച്ച് മാത്രമേ പ്രവർത്തനം തുടരൂ
OS X 10.3 ഉം അതിനുശേഷമുള്ളതും.

-fzero-link
NeXT റൺടൈമിനായി കംപൈൽ ചെയ്യുമ്പോൾ, കംപൈലർ സാധാരണയായി കോളുകൾ മാറ്റിസ്ഥാപിക്കുന്നു
"objc_getClass("...")" (കംപൈൽ സമയത്ത് ക്ലാസിന്റെ പേര് അറിയുമ്പോൾ)
ലോഡ് സമയത്ത് ആരംഭിക്കുന്ന സ്റ്റാറ്റിക് ക്ലാസ് റഫറൻസുകൾ, ഇത് റൺ-ടൈം മെച്ചപ്പെടുത്തുന്നു
പ്രകടനം. വ്യക്തമാക്കുന്നത് -fzero-link പതാക ഈ സ്വഭാവത്തെയും കാരണങ്ങളെയും അടിച്ചമർത്തുന്നു
"objc_getClass("...")" എന്നതിലേക്കുള്ള കോളുകൾ നിലനിർത്തണം. സീറോ-ലിങ്കിൽ ഇത് ഉപയോഗപ്രദമാണ്
ഡീബഗ്ഗിംഗ് മോഡ്, കാരണം ഇത് വ്യക്തിഗത ക്ലാസ് നടപ്പിലാക്കലുകൾ പരിഷ്കരിക്കാൻ അനുവദിക്കുന്നു
പ്രോഗ്രാം എക്സിക്യൂഷൻ സമയത്ത്. ഗ്നു റൺടൈം നിലവിൽ എപ്പോഴും കോളുകൾ നിലനിർത്തുന്നു
കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ പരിഗണിക്കാതെ "objc_get_class("...")".

-fno-local-ivars
ഒബ്ജക്റ്റീവ്-സിയിലെ ഡിഫോൾട്ടായി ഇൻസ്‌റ്റൻസ് വേരിയബിളുകൾ ലോക്കൽ ആയി ആക്‌സസ് ചെയ്യാൻ കഴിയും
അവർ ഡിക്ലെയർ ചെയ്തിരിക്കുന്ന ക്ലാസ്സിന്റെ രീതികളിൽ നിന്നുള്ള വേരിയബിളുകൾ. ഇത് നയിച്ചേക്കാം
ഇൻസ്‌റ്റൻസ് വേരിയബിളുകൾക്കും മറ്റ് വേരിയബിളുകൾക്കും ഇടയിലുള്ള നിഴൽ പ്രാദേശികമായി പ്രഖ്യാപിക്കപ്പെടുന്നു
ഒരു ക്ലാസ് രീതിക്കുള്ളിൽ അല്ലെങ്കിൽ ആഗോളതലത്തിൽ അതേ പേരിൽ. വ്യക്തമാക്കുന്നത് -fno-local-ivars
ഫ്ലാഗ് ഈ സ്വഭാവത്തെ പ്രവർത്തനരഹിതമാക്കുന്നു, അങ്ങനെ വേരിയബിൾ ഷാഡോയിംഗ് പ്രശ്നങ്ങൾ ഒഴിവാക്കുന്നു.

-fivar-visibility=[പൊതു|സംരക്ഷിച്ചിരിക്കുന്നു|സ്വകാര്യ|പാക്കേജ്]
ഡിഫോൾട്ട് ഇൻസ്‌റ്റൻസ് വേരിയബിൾ വിസിബിലിറ്റി നിർദ്ദിഷ്ട ഓപ്ഷനിലേക്ക് സജ്ജമാക്കുക, അങ്ങനെ ആ ഇൻസ്‌റ്റൻസ്
ഏതെങ്കിലും ആക്‌സസ് മോഡിഫയർ ഡയറക്‌ടീവുകളുടെ പരിധിക്ക് പുറത്ത് പ്രഖ്യാപിച്ച വേരിയബിളുകൾ ഡിഫോൾട്ടായി
വ്യക്തമാക്കിയ ദൃശ്യപരത.

-gen-decls
സോഴ്‌സ് ഫയലിൽ കാണുന്ന എല്ലാ ക്ലാസുകൾക്കുമുള്ള ഇന്റർഫേസ് ഡിക്ലറേഷനുകൾ എന്ന പേരിലുള്ള ഫയലിലേക്ക് ഡംപ് ചെയ്യുക
sourcename.decl.

-അസൈൻ-ഇന്റർസെപ്റ്റ് (ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരു ഒബ്ജക്റ്റീവ്-സി അസൈൻമെന്റ് മാലിന്യ ശേഖരണക്കാരൻ തടസ്സപ്പെടുത്തുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക.

-Wno-പ്രോട്ടോക്കോൾ (ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരു പ്രോട്ടോക്കോൾ നടപ്പിലാക്കാൻ ഒരു ക്ലാസ് പ്രഖ്യാപിച്ചാൽ, എല്ലാ രീതികൾക്കും ഒരു മുന്നറിയിപ്പ് നൽകും
ക്ലാസ് നടപ്പിലാക്കാത്ത പ്രോട്ടോക്കോളിൽ. എന്നതാണ് സ്ഥിര സ്വഭാവം
ക്ലാസിൽ വ്യക്തമായി നടപ്പിലാക്കാത്ത എല്ലാ രീതികൾക്കും ഒരു മുന്നറിയിപ്പ് നൽകുക, a
രീതി നടപ്പിലാക്കൽ സൂപ്പർക്ലാസിൽ നിന്ന് പാരമ്പര്യമായി ലഭിച്ചതാണ്. നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ -Wno-പ്രോട്ടോക്കോൾ
ഓപ്ഷൻ, തുടർന്ന് സൂപ്പർക്ലാസിൽ നിന്ന് പാരമ്പര്യമായി ലഭിച്ച രീതികൾ നടപ്പിലാക്കുന്നതായി കണക്കാക്കുന്നു,
അവർക്കായി ഒരു മുന്നറിയിപ്പും നൽകിയിട്ടില്ല.

-സെലക്ടർ (ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരേ സെലക്‌ടറിന് വ്യത്യസ്ത തരത്തിലുള്ള ഒന്നിലധികം രീതികൾ ഈ സമയത്ത് കണ്ടെത്തിയാൽ മുന്നറിയിപ്പ് നൽകുക
സമാഹാരം. യുടെ അവസാന ഘട്ടത്തിലെ രീതികളുടെ പട്ടികയിലാണ് പരിശോധന നടത്തുന്നത്
സമാഹാരം. കൂടാതെ, a-യിൽ ദൃശ്യമാകുന്ന ഓരോ സെലക്ടറിനും ഒരു പരിശോധന നടത്തുന്നു
"@selector(...)" എക്‌സ്‌പ്രഷനും ആ സെലക്‌ടറിന് അനുയോജ്യമായ ഒരു രീതിയും ഉണ്ട്
സമാഹരിക്കുന്ന സമയത്ത് കണ്ടെത്തി. കാരണം ഈ പരിശോധനകൾ മെത്തേഡ് ടേബിൾ അവസാനം മാത്രം സ്കാൻ ചെയ്യുന്നു
സമാഹാരത്തിന്റെ അവസാന ഘട്ടമാണെങ്കിൽ, ഈ മുന്നറിയിപ്പുകൾ നിർമ്മിക്കപ്പെടുന്നില്ല
എത്തിയില്ല, ഉദാഹരണത്തിന്, സമാഹരിക്കുന്ന സമയത്ത് ഒരു പിശക് കണ്ടെത്തിയതിനാൽ, അല്ലെങ്കിൽ കാരണം
-fsyntax-മാത്രം ഓപ്ഷൻ ഉപയോഗിക്കുന്നു.

-സ്ട്രിക്റ്റ്-സെലക്ടർ-മാച്ച് (ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
വ്യത്യസ്‌ത ആർഗ്യുമെന്റ് കൂടാതെ/അല്ലെങ്കിൽ റിട്ടേൺ തരങ്ങളുള്ള ഒന്നിലധികം രീതികൾ a എന്നതിനായി കണ്ടെത്തിയാൽ മുന്നറിയിപ്പ് നൽകുക
ഒരു റിസീവറിന് ഈ സെലക്ടർ ഉപയോഗിച്ച് ഒരു സന്ദേശം അയക്കാൻ ശ്രമിക്കുമ്പോൾ സെലക്ടർ നൽകി
"id" അല്ലെങ്കിൽ "Class" എന്ന് ടൈപ്പ് ചെയ്യുക. ഈ ഫ്ലാഗ് ഓഫ് ചെയ്യുമ്പോൾ (ഇത് ഡിഫോൾട്ട് സ്വഭാവമാണ്), the
ഏതെങ്കിലും വ്യത്യാസങ്ങൾ പങ്കിടുന്ന തരങ്ങളിൽ മാത്രം ഒതുങ്ങുകയാണെങ്കിൽ കംപൈലർ അത്തരം മുന്നറിയിപ്പുകൾ ഒഴിവാക്കുന്നു
ഒരേ വലിപ്പവും വിന്യാസവും.

-Wundeclared-selector (ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരു അപ്രഖ്യാപിത സെലക്ടറെ പരാമർശിക്കുന്ന ഒരു "@selector(...)" എക്സ്പ്രഷൻ കണ്ടെത്തിയാൽ മുന്നറിയിപ്പ് നൽകുക. എ
ആ പേരിലുള്ള ഒരു രീതിയും മുമ്പ് പ്രഖ്യാപിച്ചിട്ടില്ലെങ്കിൽ, സെലക്‌ടർ അൺഡിക്ലയർ ആയി കണക്കാക്കും
"@selector(...)" എക്സ്പ്രഷൻ, ഒന്നുകിൽ ഒരു @interface അല്ലെങ്കിൽ @protocol
പ്രഖ്യാപനം, അല്ലെങ്കിൽ ഒരു @ഇംപ്ലിമെന്റേഷൻ വിഭാഗത്തിൽ പരോക്ഷമായി. ഈ ഓപ്ഷൻ എല്ലായ്പ്പോഴും പ്രവർത്തിക്കുന്നു
"@selector(...)" എക്‌സ്‌പ്രഷൻ കണ്ടെത്തിയാലുടൻ അത് പരിശോധിക്കുന്നു -സെലക്ടർ മാത്രം
സമാഹാരത്തിന്റെ അവസാന ഘട്ടത്തിൽ അതിന്റെ പരിശോധനകൾ നടത്തുന്നു. ഇത് കോഡിംഗും നടപ്പിലാക്കുന്നു
രീതികളും സെലക്ടറുകളും ഉപയോഗിക്കുന്നതിന് മുമ്പ് പ്രഖ്യാപിക്കേണ്ട ശൈലി കൺവെൻഷൻ.

-print-objc-runtime-info
മൂല്യം വഴി കൈമാറുന്ന ഏറ്റവും വലിയ ഘടനയെ വിവരിക്കുന്ന C തലക്കെട്ട് സൃഷ്ടിക്കുക.

ഓപ്ഷനുകൾ ലേക്ക് നിയന്ത്രണ ഡയഗ്നോസ്റ്റിക് സന്ദേശങ്ങൾ ഫോർമാറ്റിംഗ്
പരമ്പരാഗതമായി, ഔട്ട്‌പുട്ട് ഉപകരണത്തിന്റെ കാര്യത്തിൽ ഡയഗ്നോസ്റ്റിക് സന്ദേശങ്ങൾ ഫോർമാറ്റ് ചെയ്യപ്പെടുന്നു
വശം (ഉദാ: അതിന്റെ വീതി, ...). നിയന്ത്രിക്കാൻ നിങ്ങൾക്ക് താഴെ വിവരിച്ചിരിക്കുന്ന ഓപ്ഷനുകൾ ഉപയോഗിക്കാം
ഡയഗ്നോസ്റ്റിക് സന്ദേശങ്ങൾക്കായുള്ള ഫോർമാറ്റിംഗ് അൽഗോരിതം, ഉദാ ഒരു വരിയിൽ എത്ര പ്രതീകങ്ങൾ, എത്ര തവണ
ഉറവിട ലൊക്കേഷൻ വിവരങ്ങൾ റിപ്പോർട്ട് ചെയ്യണം. ചില ഭാഷാ മുൻഭാഗങ്ങൾ ഉണ്ടാകാം എന്നത് ശ്രദ്ധിക്കുക
ഈ ഓപ്ഷനുകൾ മാനിക്കരുത്.

-fmessage-length=n
പിശക് സന്ദേശങ്ങൾ ഫോർമാറ്റ് ചെയ്യാൻ ശ്രമിക്കുക, അതുവഴി അവ എബൗട്ട് ലൈനുകളിൽ യോജിക്കുന്നു n കഥാപാത്രങ്ങൾ. എങ്കിൽ n is
പൂജ്യം, പിന്നെ ലൈൻ-റാപ്പിംഗ് നടക്കുന്നില്ല; ഓരോ പിശക് സന്ദേശവും ഒരൊറ്റ വരിയിൽ ദൃശ്യമാകുന്നു.
എല്ലാ ഫ്രണ്ട് എൻഡുകളുടെയും ഡിഫോൾട്ടാണിത്.

-fdiagnostics-show-location=ഒരിക്കൽ
ലൈൻ-റാപ്പിംഗ് മോഡിൽ മാത്രം അർത്ഥപൂർണ്ണമാണ്. ഡയഗ്നോസ്റ്റിക് സന്ദേശ റിപ്പോർട്ടർക്ക് നിർദ്ദേശം നൽകുന്നു
ഉറവിട ലൊക്കേഷൻ വിവരങ്ങൾ പുറത്തുവിടുക ഒരിക്കല്; അതായത്, മെസേജ് ദൈർഘ്യമേറിയതാണെങ്കിൽ
ഒരൊറ്റ ഫിസിക്കൽ ലൈനിൽ പൊതിഞ്ഞിരിക്കണം, ഉറവിട സ്ഥാനം പുറത്തുവിടില്ല
(പ്രിഫിക്‌സായി) വീണ്ടും വീണ്ടും, തുടർന്നുള്ള തുടർച്ചയായ വരികളിൽ. ഇതാണ്
സ്ഥിര സ്വഭാവം.

-fdiagnostics-show-location=ഓരോ വരിയും
ലൈൻ-റാപ്പിംഗ് മോഡിൽ മാത്രം അർത്ഥപൂർണ്ണമാണ്. ഡയഗ്നോസ്റ്റിക് സന്ദേശ റിപ്പോർട്ടർക്ക് നിർദ്ദേശം നൽകുന്നു
ഫലമായുണ്ടാകുന്ന ഫിസിക്കൽ ലൈനുകൾക്കായി അതേ ഉറവിട ലൊക്കേഷൻ വിവരങ്ങൾ (പ്രിഫിക്‌സ് ആയി) പുറത്തുവിടുക
ഒരൊറ്റ വരിയിൽ ഒതുങ്ങാൻ കഴിയാത്തവിധം ദൈർഘ്യമേറിയ ഒരു സന്ദേശം തകർക്കുന്ന പ്രക്രിയയിൽ നിന്ന്.

-fdiagnostics-color[=എപ്പോൾ]
-fno-diagnostics-color
ഡയഗ്നോസ്റ്റിക്സിൽ നിറം ഉപയോഗിക്കുക. എപ്പോൾ is ഒരിക്കലും, എല്ലായിപ്പോഴും, അഥവാ കാര്. ഡിഫോൾട്ട് എങ്ങനെ എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു
കംപൈലർ ക്രമീകരിച്ചിരിക്കുന്നു, മുകളിൽ പറഞ്ഞവയിൽ ഏതെങ്കിലും ആകാം എപ്പോൾ ഓപ്ഷനുകൾ അല്ലെങ്കിൽ
ഒരിക്കലും if GCC_COLORS പരിസ്ഥിതി വേരിയബിൾ പരിസ്ഥിതിയിൽ ഇല്ല, കൂടാതെ കാര്
അല്ലെങ്കിൽ. കാര് സാധാരണ പിശക് ഒരു ടെർമിനൽ ആയിരിക്കുമ്പോൾ മാത്രം നിറം ഉപയോഗിക്കുക എന്നാണ് അർത്ഥമാക്കുന്നത്. ദി
ഫോമുകൾ -fdiagnostics-നിറം ഒപ്പം -fno-diagnostics-color എന്നതിന്റെ അപരനാമങ്ങളാണ്
-fdiagnostics-color=എപ്പോഴും ഒപ്പം -fdiagnostics-color=ഒരിക്കലും, യഥാക്രമം.

പരിസ്ഥിതി വേരിയബിളാണ് നിറങ്ങൾ നിർവചിച്ചിരിക്കുന്നത് GCC_COLORS. അതിന്റെ മൂല്യം ഒരു കോളൻ ആണ്-
കഴിവുകളുടെ വേർതിരിച്ച പട്ടികയും ഗ്രാഫിക് റെൻഡിഷൻ (SGR) സബ്‌സ്ട്രിംഗുകളും തിരഞ്ഞെടുക്കുക. എസ്.ജി.ആർ
കമാൻഡുകൾ ടെർമിനൽ അല്ലെങ്കിൽ ടെർമിനൽ എമുലേറ്റർ വ്യാഖ്യാനിക്കുന്നു. (ഇതിലെ വിഭാഗം കാണുക
അനുവദനീയമായ മൂല്യങ്ങൾക്കായുള്ള നിങ്ങളുടെ ടെക്സ്റ്റ് ടെർമിനലിന്റെ ഡോക്യുമെന്റേഷനും അവയുടെ അർത്ഥങ്ങളും
പ്രതീക ആട്രിബ്യൂട്ടുകൾ.) ഈ സബ്‌സ്ട്രിംഗ് മൂല്യങ്ങൾ ദശാംശ പ്രാതിനിധ്യത്തിലെ പൂർണ്ണസംഖ്യകളാണ്
കൂടാതെ അർദ്ധവിരാമങ്ങൾ കൊണ്ട് സംയോജിപ്പിക്കാം. സംയോജിപ്പിക്കുന്നതിനുള്ള പൊതുവായ മൂല്യങ്ങൾ ഉൾപ്പെടുന്നു 1 വേണ്ടി
ധീരമായ, 4 അടിവരയിടുന്നതിന്, 5 കണ്ണിറുക്കുന്നതിന്, 7 വിപരീതത്തിന്, 39 ഡിഫോൾട്ട് ഫോർഗ്രൗണ്ട് നിറത്തിന്, 30
ലേക്ക് 37 മുൻവശത്തെ നിറങ്ങൾക്ക്, 90 ലേക്ക് 97 16-കളർ മോഡ് ഫോർഗ്രൗണ്ട് നിറങ്ങൾക്ക്, 38; 5; 0 ലേക്ക്
38; 5; 255 88-കളർ, 256-വർണ്ണ മോഡുകൾക്ക് ഫോർഗ്രൗണ്ട് നിറങ്ങൾ, 49 സ്ഥിരസ്ഥിതി പശ്ചാത്തലത്തിനായി
നിറം 40 ലേക്ക് 47 പശ്ചാത്തല നിറങ്ങൾക്കായി, 100 ലേക്ക് 107 16-വർണ്ണ മോഡ് പശ്ചാത്തല നിറങ്ങൾക്ക്,
ഒപ്പം 48; 5; 0 ലേക്ക് 48; 5; 255 88-കളർ, 256-വർണ്ണ മോഡുകളുടെ പശ്ചാത്തല വർണ്ണങ്ങൾക്ക്.

സ്വതവേ GCC_COLORS is

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

എവിടെ 01; 31 കടും ചുവപ്പ്, 01; 35 ബോൾഡ് മജന്ത ആണ്, 01; 36 ധീരമായ സിയാൻ ആണ്, 01; 32 ബോൾഡാണ്
പച്ചയും 01 ബോൾഡാണ്. ക്രമീകരണം GCC_COLORS ശൂന്യമായ സ്ട്രിംഗിലേക്ക് നിറങ്ങൾ പ്രവർത്തനരഹിതമാക്കുന്നു.
പിന്തുണയ്ക്കുന്ന കഴിവുകൾ ഇനിപ്പറയുന്നവയാണ്.

"പിശക്="
പിശകിനുള്ള SGR സബ്‌സ്‌ട്രിംഗ്: മാർക്കറുകൾ.

"മുന്നറിയിപ്പ്="
മുന്നറിയിപ്പിനുള്ള SGR സബ്‌സ്‌ട്രിംഗ്: മാർക്കറുകൾ.

"കുറിപ്പ്="
കുറിപ്പിനുള്ള SGR സബ്‌സ്‌ട്രിംഗ്: മാർക്കറുകൾ.

"caret="
കാരറ്റ് ലൈനിനുള്ള SGR സബ്‌സ്ട്രിംഗ്.

"ലോക്കസ്="
ലൊക്കേഷൻ വിവരങ്ങൾക്കായുള്ള SGR സബ്‌സ്‌ട്രിംഗ്, ഫയൽ:ലൈൻ or ഫയൽ:ലൈൻ:നിര തുടങ്ങിയവ.

"quote="
ഉദ്ധരണികൾക്കുള്ളിൽ അച്ചടിച്ച വിവരങ്ങൾക്കായുള്ള SGR സബ്‌സ്‌ട്രിംഗ്.

-fno-diagnostics-show-option
ഡിഫോൾട്ടായി, പുറപ്പെടുവിക്കുന്ന ഓരോ ഡയഗ്നോസ്റ്റിക്സിനും കമാൻഡ്-ലൈൻ ഓപ്ഷൻ സൂചിപ്പിക്കുന്ന വാചകം ഉൾപ്പെടുന്നു
ഡയഗ്നോസ്റ്റിക് നേരിട്ട് നിയന്ത്രിക്കുന്നത് (അത്തരം ഒരു ഓപ്ഷൻ ഡയഗ്നോസ്റ്റിക്സിന് അറിയാമെങ്കിൽ
യന്ത്രങ്ങൾ). വ്യക്തമാക്കുന്നത് -fno-diagnostics-show-option പതാക അതിനെ അടിച്ചമർത്തുന്നു
പെരുമാറ്റം.

-fno-diagnostics-show-caret
ഡിഫോൾട്ടായി, പുറത്തുവിടുന്ന ഓരോ ഡയഗ്‌നോസ്‌റ്റിക്കും ഒറിജിനൽ സോഴ്‌സ് ലൈനും ഒരു കാരറ്റും '^' ഉൾപ്പെടുന്നു
നിരയെ സൂചിപ്പിക്കുന്നു. ഈ ഓപ്‌ഷൻ ഈ വിവരങ്ങൾ അടിച്ചമർത്തുന്നു. സോഴ്സ് ലൈൻ ആണ്
വരെ വെട്ടിച്ചുരുക്കി n പ്രതീകങ്ങൾ, എങ്കിൽ -fmessage-length=n ഓപ്ഷൻ നൽകിയിരിക്കുന്നു. ഔട്ട്പുട്ട് ചെയ്യുമ്പോൾ
ടെർമിനലിലേക്ക് ചെയ്തു, വീതി നൽകിയിരിക്കുന്ന വീതിയിൽ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു കോളങ്ങൾ
പരിസ്ഥിതി വേരിയബിൾ അല്ലെങ്കിൽ, സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ, ടെർമിനൽ വീതിയിലേക്ക്.

ഓപ്ഷനുകൾ ലേക്ക് അപേക്ഷ or അടിച്ചമർത്തുക മുന്നറിയിപ്പുകൾ
അന്തർലീനമല്ലാത്ത നിർമ്മാണങ്ങൾ റിപ്പോർട്ട് ചെയ്യുന്ന ഡയഗ്നോസ്റ്റിക് സന്ദേശങ്ങളാണ് മുന്നറിയിപ്പുകൾ
തെറ്റാണ്, പക്ഷേ അത് അപകടകരമാണ് അല്ലെങ്കിൽ ഒരു പിശക് സംഭവിച്ചിരിക്കാമെന്ന് നിർദ്ദേശിക്കുന്നു.

ഇനിപ്പറയുന്ന ഭാഷാ-സ്വതന്ത്ര ഓപ്‌ഷനുകൾ നിർദ്ദിഷ്ട മുന്നറിയിപ്പുകൾ പ്രവർത്തനക്ഷമമാക്കുന്നില്ല, പക്ഷേ നിയന്ത്രിക്കുന്നു
GCC നിർമ്മിക്കുന്ന തരത്തിലുള്ള ഡയഗ്നോസ്റ്റിക്സ്.

-fsyntax-മാത്രം
വാക്യഘടന പിശകുകൾക്കായി കോഡ് പരിശോധിക്കുക, എന്നാൽ അതിനപ്പുറം ഒന്നും ചെയ്യരുത്.

-fmax-errors=n
പിശക് സന്ദേശങ്ങളുടെ പരമാവധി എണ്ണം പരിമിതപ്പെടുത്തുന്നു n, ആ സമയത്ത് ജിസിസി ജാമ്യം നേടി
സോഴ്സ് കോഡ് പ്രോസസ്സ് ചെയ്യുന്നത് തുടരാൻ ശ്രമിക്കുന്നതിനേക്കാൾ. എങ്കിൽ n 0 ആണ് (സ്ഥിരസ്ഥിതി),
നിർമ്മിച്ച പിശക് സന്ദേശങ്ങളുടെ എണ്ണത്തിന് പരിധിയില്ല. എങ്കിൽ -Wfatal-പിശകുകൾ കൂടിയാണ്
വ്യക്തമാക്കിയ, തുടർന്ന് -Wfatal-പിശകുകൾ ഈ ഓപ്ഷനേക്കാൾ മുൻഗണന നൽകുന്നു.

-w എല്ലാ മുന്നറിയിപ്പ് സന്ദേശങ്ങളും തടയുക.

-വെറർ
എല്ലാ മുന്നറിയിപ്പുകളും പിശകുകളാക്കി മാറ്റുക.

-വെറർ=
നിർദ്ദിഷ്‌ട മുന്നറിയിപ്പ് ഒരു പിശകായി മാറ്റുക. ഒരു മുന്നറിയിപ്പിനുള്ള സ്പെസിഫയർ ചേർത്തിരിക്കുന്നു;
ഉദാഹരണത്തിന് -വെറർ=സ്വിച്ച് നിയന്ത്രിത മുന്നറിയിപ്പുകൾ മാറ്റുന്നു -Wswitch തെറ്റുകളിലേക്ക്.
ഈ സ്വിച്ച് ഒരു നെഗറ്റീവ് ഫോം എടുക്കുന്നു, ഇത് നിരാകരിക്കാൻ ഉപയോഗിക്കും -വെറർ പ്രത്യേക മുന്നറിയിപ്പുകൾക്കായി;
ഉദാഹരണത്തിന് -Wno-error=switch നിർമ്മാതാക്കൾ -Wswitch എപ്പോഴെങ്കിലും മുന്നറിയിപ്പുകൾ പിശകുകളാകരുത് -വെറർ
പ്രാബല്യത്തിൽ ഉണ്ട്.

നിയന്ത്രിക്കാവുന്ന ഓരോ മുന്നറിയിപ്പിനുമുള്ള മുന്നറിയിപ്പ് സന്ദേശത്തിൽ നിയന്ത്രിക്കുന്ന ഓപ്ഷൻ ഉൾപ്പെടുന്നു
മുന്നറിയിപ്പ്. അപ്പോൾ ആ ഓപ്ഷൻ ഉപയോഗിക്കാം -വെറർ= ഒപ്പം -Wno-error= വിവരിച്ചതു പോലെ
മുകളിൽ. (മുന്നറിയിപ്പ് സന്ദേശത്തിലെ ഓപ്‌ഷൻ പ്രിന്റ് ചെയ്യുന്നത് ഇത് ഉപയോഗിച്ച് പ്രവർത്തനരഹിതമാക്കാം
-fno-diagnostics-show-option പതാക.)

വ്യക്തമാക്കുന്നത് ശ്രദ്ധിക്കുക -വെറർ=ഫൂ സ്വയമേവ സൂചിപ്പിക്കുന്നു -Wഫൂ. എന്നിരുന്നാലും, -Wno-error=ഫൂ
ഒന്നും സൂചിപ്പിക്കുന്നില്ല.

-Wfatal-പിശകുകൾ
ഈ ഓപ്‌ഷൻ കംപൈലറിന് സംഭവിച്ച ആദ്യത്തെ പിശകിൽ കംപൈലേഷൻ നിർത്തലാക്കുന്നു
തുടരാനും കൂടുതൽ പിശക് സന്ദേശങ്ങൾ അച്ചടിക്കാനും ശ്രമിക്കുന്നതിനുപകരം.

ആരംഭിക്കുന്ന ഓപ്‌ഷനുകൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് നിരവധി നിർദ്ദിഷ്ട മുന്നറിയിപ്പുകൾ അഭ്യർത്ഥിക്കാം -W, ഉദാഹരണത്തിന്
-വിംപ്ലിസിറ്റ് പരോക്ഷമായ പ്രഖ്യാപനങ്ങളിൽ മുന്നറിയിപ്പുകൾ അഭ്യർത്ഥിക്കാൻ. ഈ ഓരോ പ്രത്യേക മുന്നറിയിപ്പ്
ഓപ്ഷനുകൾക്ക് ഒരു നെഗറ്റീവ് ഫോം ആരംഭമുണ്ട് -അറിയില്ല- മുന്നറിയിപ്പുകൾ ഓഫ് ചെയ്യാൻ; ഉദാഹരണത്തിന്,
-വ്യക്തമല്ല. ഈ മാനുവൽ രണ്ട് ഫോമുകളിൽ ഒന്ന് മാത്രമേ ലിസ്റ്റ് ചെയ്യുന്നുള്ളൂ, ഏതാണ് ഡിഫോൾട്ട് അല്ലാത്തത്.
കൂടുതൽ ഭാഷാ-നിർദ്ദിഷ്‌ട ഓപ്‌ഷനുകൾക്കും കാണുക സി ++ പ്രാദേശിക ഭാഷ ഓപ്ഷനുകൾ ഒപ്പം ലക്ഷ്യം-സി
ഒപ്പം ലക്ഷ്യം-C++ പ്രാദേശിക ഭാഷ ഓപ്ഷനുകൾ.

പോലുള്ള ചില ഓപ്ഷനുകൾ - മതിൽ ഒപ്പം -വെക്സ്ട്ര, പോലുള്ള മറ്റ് ഓപ്ഷനുകൾ ഓണാക്കുക - ഉപയോഗിച്ചത്ഏത്
പോലുള്ള കൂടുതൽ ഓപ്ഷനുകൾ ഓണാക്കിയേക്കാം -ഉപയോഗിച്ച മൂല്യം. പോസിറ്റീവ്, എന്നിവയുടെ സംയോജിത പ്രഭാവം
നെഗറ്റീവ് ഫോമുകൾ, കൂടുതൽ നിർദ്ദിഷ്ട ഓപ്ഷനുകൾക്ക് കുറച്ച് നിർദ്ദിഷ്ട ഓപ്ഷനുകളേക്കാൾ മുൻഗണനയുണ്ട്,
കമാൻഡ് ലൈനിലെ അവരുടെ സ്ഥാനത്ത് നിന്ന് സ്വതന്ത്രമായി. ഒരേ പ്രത്യേകതയുള്ള ഓപ്ഷനുകൾക്കായി,
അവസാനത്തേത് പ്രാബല്യത്തിൽ വരും. പ്രാഗ്മാസ് വഴി പ്രവർത്തനക്ഷമമാക്കിയതോ പ്രവർത്തനരഹിതമാക്കിയതോ ആയ ഓപ്‌ഷനുകൾ അവ പോലെ തന്നെ പ്രാബല്യത്തിൽ വരും
കമാൻഡ് ലൈനിന്റെ അവസാനം പ്രത്യക്ഷപ്പെട്ടു.

ഒരു തിരിച്ചറിയപ്പെടാത്ത മുന്നറിയിപ്പ് ഓപ്‌ഷൻ അഭ്യർത്ഥിക്കുമ്പോൾ (ഉദാ, -അജ്ഞാത-മുന്നറിയിപ്പ്), GCC എമിറ്റ് ചെയ്യുന്നു
ഓപ്‌ഷൻ തിരിച്ചറിഞ്ഞിട്ടില്ലെന്ന് ഡയഗ്നോസ്റ്റിക് പ്രസ്താവിക്കുന്നു. എന്നിരുന്നാലും, എങ്കിൽ -അറിയില്ല- ഫോം ഉപയോഗിക്കുന്നു,
പെരുമാറ്റം അൽപ്പം വ്യത്യസ്തമാണ്: രോഗനിർണ്ണയമൊന്നും ഉണ്ടാക്കിയിട്ടില്ല -അറിയപ്പെടാത്ത മുന്നറിയിപ്പ്
മറ്റ് ഡയഗ്നോസ്റ്റിക്സ് നിർമ്മിക്കുന്നില്ലെങ്കിൽ. ഇത് പുതിയത് ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു -അറിയില്ല- ഓപ്ഷനുകൾ
പഴയ കംപൈലറുകൾക്കൊപ്പം, പക്ഷേ എന്തെങ്കിലും തെറ്റ് സംഭവിക്കുകയാണെങ്കിൽ, ഒരു തിരിച്ചറിയപ്പെടാത്തതാണെന്ന് കംപൈലർ മുന്നറിയിപ്പ് നൽകുന്നു
ഓപ്ഷൻ നിലവിലുണ്ട്.

-Wpedantic
-പെഡാന്റിക്
കർശനമായ ISO C, ISO C++ എന്നിവ ആവശ്യപ്പെടുന്ന എല്ലാ മുന്നറിയിപ്പുകളും നൽകുക; എല്ലാ പ്രോഗ്രാമുകളും നിരസിക്കുക
വിലക്കപ്പെട്ട വിപുലീകരണങ്ങളും ISO C, ISO എന്നിവ പിന്തുടരാത്ത മറ്റ് ചില പ്രോഗ്രാമുകളും ഉപയോഗിക്കുക
C++. ഐഎസ്ഒ സിക്ക്, ഏതെങ്കിലും വ്യക്തമാക്കിയിട്ടുള്ള ഐഎസ്ഒ സി സ്റ്റാൻഡേർഡിന്റെ പതിപ്പ് പിന്തുടരുന്നു -std
ഉപയോഗിച്ച ഓപ്ഷൻ.

സാധുവായ ISO C, ISO C++ പ്രോഗ്രാമുകൾ ഈ ഓപ്ഷൻ ഉപയോഗിച്ചോ അല്ലാതെയോ ശരിയായി കംപൈൽ ചെയ്യണം
(അപൂർവ്വം ചിലർക്ക് ആവശ്യമാണെങ്കിലും -ആൻസി അല്ലെങ്കിൽ -std ആവശ്യമുള്ള പതിപ്പ് വ്യക്തമാക്കുന്ന ഓപ്ഷൻ
ISO C). എന്നിരുന്നാലും, ഈ ഓപ്ഷൻ കൂടാതെ, ചില ഗ്നു എക്സ്റ്റൻഷനുകളും പരമ്പരാഗത സിയും
C++ ഫീച്ചറുകളും പിന്തുണയ്ക്കുന്നു. ഈ ഓപ്ഷൻ ഉപയോഗിച്ച്, അവ നിരസിക്കപ്പെട്ടു.

-Wpedantic ഇതര കീവേഡുകൾ ഉപയോഗിക്കുന്നതിന് മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ നൽകുന്നില്ല
പേരുകൾ ആരംഭിക്കുകയും അവസാനിക്കുകയും ചെയ്യുന്നു __. എക്സ്പ്രഷനിൽ പെഡന്റിക് മുന്നറിയിപ്പുകളും പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു
അത് "__ വിപുലീകരണം__" പിന്തുടരുന്നു. എന്നിരുന്നാലും, സിസ്റ്റം ഹെഡർ ഫയലുകൾ മാത്രമേ ഇവ ഉപയോഗിക്കാവൂ
രക്ഷപ്പെടാനുള്ള വഴികൾ; ആപ്ലിക്കേഷൻ പ്രോഗ്രാമുകൾ അവ ഒഴിവാക്കണം.

ചില ഉപയോക്താക്കൾ ഉപയോഗിക്കാൻ ശ്രമിക്കുന്നു -Wpedantic കർശനമായ ISO C അനുരൂപത്തിനായി പ്രോഗ്രാമുകൾ പരിശോധിക്കുന്നതിന്. അവർ
ഉടൻ തന്നെ അവർ ആഗ്രഹിക്കുന്നത് അത് ചെയ്യുന്നില്ലെന്ന് കണ്ടെത്തുക: ഇത് ചില ISO ഇതര രീതികൾ കണ്ടെത്തുന്നു,
എന്നാൽ എല്ലാം അല്ല--- ഐഎസ്ഒ സി ആവശ്യമാണ് ഒരു ഡയഗ്നോസ്റ്റിക്, മറ്റു ചിലത്
ഏത് ഡയഗ്നോസ്റ്റിക്സ് ചേർത്തു.

ഐഎസ്ഒ സിയുമായി പൊരുത്തപ്പെടുന്നതിൽ എന്തെങ്കിലും പരാജയം റിപ്പോർട്ട് ചെയ്യുന്നതിനുള്ള ഒരു ഫീച്ചർ ചില സന്ദർഭങ്ങളിൽ ഉപയോഗപ്രദമാകും.
എന്നാൽ ഗണ്യമായ അധിക ജോലി ആവശ്യമായി വരും, അത് തികച്ചും വ്യത്യസ്തമായിരിക്കും
-Wpedantic. സമീപഭാവിയിൽ അത്തരം ഒരു ഫീച്ചറിനെ പിന്തുണയ്ക്കാൻ ഞങ്ങൾക്ക് പദ്ധതിയില്ല.

സ്റ്റാൻഡേർഡ് വ്യക്തമാക്കിയിരിക്കുന്നിടത്ത് -std C യുടെ GNU വിപുലീകൃത ഭാഷയെ പ്രതിനിധീകരിക്കുന്നു
gnu90 or gnu99, ഒരു അനുബന്ധമുണ്ട് അടിസ്ഥാനം സാധാരണ, ഏത് ഐഎസ്ഒ സി പതിപ്പ്
ഗ്നു വിപുലീകൃത ഭാഷ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. നിന്നുള്ള മുന്നറിയിപ്പുകൾ -Wpedantic അവർ എവിടെയാണ് നൽകിയിരിക്കുന്നത്
അടിസ്ഥാന നിലവാരം അനുസരിച്ച് ആവശ്യമാണ്. (ഇത്തരം മുന്നറിയിപ്പുകൾ നൽകുന്നതിൽ അർത്ഥമില്ല
നിർവ്വചനം അനുസരിച്ച് GNU എന്നതിനാൽ നിർദ്ദിഷ്ട GNU C ഭാഷയിലുള്ള സവിശേഷതകൾക്ക് വേണ്ടി മാത്രം
നൽകിയിരിക്കുന്ന ഓപ്‌ഷനോടൊപ്പം കംപൈലർ പിന്തുണയ്ക്കുന്ന എല്ലാ സവിശേഷതകളും C യുടെ ഭാഷകളിൽ ഉൾപ്പെടുന്നു, കൂടാതെ
മുന്നറിയിപ്പ് നൽകാൻ ഒന്നുമില്ല.)

-പെഡന്റിക്-പിശകുകൾ
എപ്പോഴെങ്കിലും ഒരു പിശക് നൽകുക അടിസ്ഥാനം സാധാരണ (കാണുക -Wpedantic) ഒരു ഡയഗ്നോസ്റ്റിക് ആവശ്യമാണ്, ഇൻ
കംപൈൽ-ടൈമിലും മറ്റ് ചില കേസുകളിലും നിർവചിക്കാത്ത പെരുമാറ്റം ഉണ്ടാകുമ്പോൾ ചില സന്ദർഭങ്ങളിൽ
സ്റ്റാൻഡേർഡ് അനുസരിച്ച് സാധുതയുള്ള പ്രോഗ്രാമുകളുടെ സമാഹാരം തടയില്ല.
ഇത് തുല്യമല്ല -വെറർ=പെഡാന്റിക്, ഇത് പ്രവർത്തനക്ഷമമാക്കിയ പിശകുകൾ ഉള്ളതിനാൽ
ഓപ്ഷൻ കൂടാതെ രണ്ടാമത്തേത് പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല, തിരിച്ചും.

- മതിൽ
ചില ഉപയോക്താക്കൾ പരിഗണിക്കുന്ന നിർമ്മാണങ്ങളെക്കുറിച്ചുള്ള എല്ലാ മുന്നറിയിപ്പുകളും ഇത് പ്രാപ്തമാക്കുന്നു
സംശയാസ്പദമായ, അത് ഒഴിവാക്കാൻ എളുപ്പമാണ് (അല്ലെങ്കിൽ മുന്നറിയിപ്പ് തടയുന്നതിന് പരിഷ്ക്കരിക്കുക), പോലും
മാക്രോകളുമായുള്ള സംയോജനം. വിവരിച്ചിരിക്കുന്ന ചില ഭാഷാ-നിർദ്ദിഷ്ട മുന്നറിയിപ്പുകളും ഇത് പ്രാപ്തമാക്കുന്നു
in സി ++ പ്രാദേശിക ഭാഷ ഓപ്ഷനുകൾ ഒപ്പം ലക്ഷ്യം-സി ഒപ്പം ലക്ഷ്യം-C++ പ്രാദേശിക ഭാഷ ഓപ്ഷനുകൾ.

- മതിൽ ഇനിപ്പറയുന്ന മുന്നറിയിപ്പ് ഫ്ലാഗുകൾ ഓണാക്കുന്നു:

-വഡ്രസ്സ് -വാറേ-ബൗണ്ടുകൾ=1 (കൂടെ മാത്രം -O2) -Wc++11-compat -Wc++14-compat
-Wchar-subscripts -വേണം-താരതമ്യം ചെയ്യുക (C/ObjC-ൽ; ഇത് C++-ൽ ഡിഫോൾട്ടായി ഓണാണ്)
-വിംപ്ലിസിറ്റ്-ഇന്റ് (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം) -വിംപ്ലിസിറ്റ്-ഫംഗ്ഷൻ-പ്രഖ്യാപനം (സി ഒപ്പം
ലക്ഷ്യം-സി മാത്രം) - കമന്റ് - ഫോർമാറ്റ് -Wmain (സി/ഒബ്‌ജെസിക്ക് മാത്രം
-ഫ്രീസ്റ്റാൻഡിംഗ്) -Wmaybe-uninitialised -Wmissing-braces (സി/ഒബ്‌ജെസിക്ക് മാത്രം) -വന്നൂൾ
-Wopenmp-simd -Wparentheses - പോയിന്റർ-അടയാളം -ഓർഡർ -റെട്ടേൺ-ടൈപ്പ് -സീക്വൻസ്-പോയിന്റ്
-വിസൈൻ-താരതമ്യം ചെയ്യുക (C++ ൽ മാത്രം) -വിസ്ട്രിക്റ്റ്-അപരനാമം -Wstrict-overflow=1 -Wswitch
-Wtrigraphs -വിനിയോഗം ചെയ്തു -അറിയപ്പെടാത്ത-പ്രാഗ്മകൾ -Wunused-ഫംഗ്ഷൻ -ഉപയോഗിച്ച ലേബൽ
-ഉപയോഗിച്ച മൂല്യം -Wunused-variable -Wvolatile-register-var

ചില മുന്നറിയിപ്പ് ഫ്ലാഗുകൾ സൂചിപ്പിക്കുന്നില്ല എന്നത് ശ്രദ്ധിക്കുക - മതിൽ. അവരിൽ ചിലർ മുന്നറിയിപ്പ് നൽകുന്നു
ഉപയോക്താക്കൾ സാധാരണയായി സംശയാസ്പദമായി പരിഗണിക്കാത്ത നിർമ്മാണങ്ങൾ, എന്നാൽ ഏതാണ്
ഇടയ്ക്കിടെ നിങ്ങൾ പരിശോധിക്കാൻ ആഗ്രഹിച്ചേക്കാം; മറ്റുള്ളവർ നിർമ്മാണത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു
ചില സന്ദർഭങ്ങളിൽ ഒഴിവാക്കേണ്ടത് അത്യാവശ്യമോ ബുദ്ധിമുട്ടുള്ളതോ ആണ്, മാത്രമല്ല പരിഷ്ക്കരിക്കാൻ ലളിതമായ മാർഗമില്ല
മുന്നറിയിപ്പ് അടിച്ചമർത്താൻ കോഡ്. അവയിൽ ചിലത് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -വെക്സ്ട്ര എന്നാൽ അവയിൽ പലതും
വ്യക്തിഗതമായി പ്രവർത്തനക്ഷമമാക്കണം.

-വെക്സ്ട്ര
ഇത് പ്രവർത്തനക്ഷമമാക്കാത്ത ചില അധിക മുന്നറിയിപ്പ് ഫ്ലാഗുകൾ പ്രവർത്തനക്ഷമമാക്കുന്നു - മതിൽ. (ഈ ഓപ്ഷൻ ഉപയോഗിച്ചു
വിളിക്കണം -W. പഴയ പേര് ഇപ്പോഴും പിന്തുണയ്ക്കുന്നു, എന്നാൽ പുതിയ പേര് കൂടുതൽ ആണ്
വിവരണാത്മക.)

-Wclobbered - വെമ്പ്റ്റി-ബോഡി -വിഗ്നോർഡ്-യോഗ്യതക്കാർ -Wmissing-ഫീൽഡ്-ഇനീഷ്യലൈസറുകൾ
-Wmissing-parameter-type (സി മാത്രം) -വോൾഡ്-സ്റ്റൈൽ-പ്രഖ്യാപനം (സി മാത്രം) -Woverride-init
-വിസൈൻ-താരതമ്യം ചെയ്യുക -ടൈപ്പ്-പരിധികൾ -വിനിയോഗം ചെയ്തു -Wunused-parameter (കൂടെ മാത്രം - ഉപയോഗിച്ചത് or
- മതിൽ) -Wunused-but-set-parameter (കൂടെ മാത്രം - ഉപയോഗിച്ചത് or - മതിൽ)

ഓപ്ഷൻ -വെക്സ്ട്ര ഇനിപ്പറയുന്ന സന്ദർഭങ്ങളിൽ മുന്നറിയിപ്പ് സന്ദേശങ്ങളും പ്രിന്റ് ചെയ്യുന്നു:

* ഒരു പോയിന്റർ "<", "<=", ">", അല്ലെങ്കിൽ ">=" എന്നിവയുമായി പൂർണ്ണസംഖ്യ പൂജ്യവുമായി താരതമ്യം ചെയ്യുന്നു.

* (C++ മാത്രം) ഒരു എൻയുമറേറ്ററും നോൺ-എൻയുമറേറ്ററും ഒരു സോപാധികത്തിൽ പ്രത്യക്ഷപ്പെടുന്നു
എക്സ്പ്രഷൻ.

* (C++ മാത്രം) അവ്യക്തമായ വെർച്വൽ ബേസുകൾ.

* (C++ മാത്രം) "രജിസ്റ്റർ" എന്ന് പ്രഖ്യാപിച്ചിരിക്കുന്ന ഒരു അറേ സബ്‌സ്‌ക്രിപ്റ്റ് ചെയ്യുന്നു.

* (C++ മാത്രം) "രജിസ്റ്റർ" എന്ന് പ്രഖ്യാപിച്ച ഒരു വേരിയബിളിന്റെ വിലാസം എടുക്കുന്നു.

* (C++ മാത്രം) ഒരു ഡിറൈവ്ഡ് ക്ലാസ്സിന്റെ കോപ്പി കൺസ്ട്രക്റ്ററിൽ ഒരു അടിസ്ഥാന ക്ലാസ് ആരംഭിച്ചിട്ടില്ല.

-Wchar-subscripts
ഒരു അറേ സബ്‌സ്‌ക്രിപ്റ്റിന് "char" എന്ന തരമുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ഇത് പിശകിന്റെ ഒരു സാധാരണ കാരണമാണ്
ചില മെഷീനുകളിൽ ഈ തരം സൈൻ ചെയ്തിട്ടുണ്ടെന്ന് പ്രോഗ്രാമർമാർ പലപ്പോഴും മറക്കുന്നു. ഈ മുന്നറിയിപ്പ്
പ്രാപ്തമാക്കിയത് - മതിൽ.

- കമന്റ്
ഒരു കമന്റ്-സ്റ്റാർട്ട് സീക്വൻസ് എപ്പോഴെങ്കിലും മുന്നറിയിപ്പ് നൽകുക /* a-ൽ ദൃശ്യമാകുന്നു /* അഭിപ്രായം, അല്ലെങ്കിൽ എപ്പോഴെങ്കിലും a
ബാക്ക്സ്ലാഷ്-ന്യൂലൈൻ എയിൽ ദൃശ്യമാകുന്നു // അഭിപ്രായം. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-നോ-കവറേജ്-പൊരുത്തക്കേട്
ഉപയോഗിക്കുമ്പോൾ ഫീഡ്‌ബാക്ക് പ്രൊഫൈലുകൾ പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക -fprofile-ഉപയോഗം ഓപ്ഷൻ. അത് അങ്ങിനെയെങ്കിൽ
ഉപയോഗിച്ച് കംപൈൽ ചെയ്യുന്നതിനിടയിൽ സോഴ്സ് ഫയൽ മാറ്റി -fprofile-gen ഒപ്പം കൂടെ -fprofile-ഉപയോഗം,
പ്രൊഫൈൽ ഫീഡ്‌ബാക്ക് ഉള്ള ഫയലുകൾ സോഴ്‌സ് ഫയലുമായി പൊരുത്തപ്പെടുന്നതിൽ പരാജയപ്പെടാം, GCC ന് കഴിയില്ല
പ്രൊഫൈൽ ഫീഡ്ബാക്ക് വിവരങ്ങൾ ഉപയോഗിക്കുക. സ്ഥിരസ്ഥിതിയായി, ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
ഒരു പിശകായി കണക്കാക്കുന്നു. -നോ-കവറേജ്-പൊരുത്തക്കേട് മുന്നറിയിപ്പ് പ്രവർത്തനരഹിതമാക്കാൻ ഉപയോഗിക്കാം അല്ലെങ്കിൽ
-Wno-error=കവറേജ്-പൊരുത്തക്കേട് പിശക് പ്രവർത്തനരഹിതമാക്കാൻ ഉപയോഗിക്കാം. പിശക് പ്രവർത്തനരഹിതമാക്കുന്നു
കാരണം, ഈ മുന്നറിയിപ്പ് മോശമായി ഒപ്റ്റിമൈസ് ചെയ്ത കോഡിന് കാരണമാകും, ഇത് ഈ സാഹചര്യത്തിൽ മാത്രം ഉപയോഗപ്രദമാണ്
നിലവിലുള്ള ഒരു കോഡ്-ബേസിലേക്കുള്ള ബഗ് പരിഹാരങ്ങൾ പോലുള്ള വളരെ ചെറിയ മാറ്റങ്ങൾ. പൂർണ്ണമായും പ്രവർത്തനരഹിതമാക്കുന്നു
മുന്നറിയിപ്പ് ശുപാർശ ചെയ്തിട്ടില്ല.

-Wno-cpp
(സി, ഒബ്ജക്റ്റീവ്-സി, സി++, ഒബ്ജക്റ്റീവ്-സി++, ഫോർട്രാൻ എന്നിവ മാത്രം)

"#മുന്നറിയിപ്പ്" നിർദ്ദേശങ്ങൾ പുറപ്പെടുവിക്കുന്ന മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ അടിച്ചമർത്തുക.

-ഡബിൾ-പ്രമോഷൻ (സി, സി++, ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
"ഫ്ലോട്ട്" എന്ന തരത്തിന്റെ മൂല്യം "ഇരട്ട" എന്നതിലേക്ക് പരോക്ഷമായി പ്രൊമോട്ട് ചെയ്യുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക. CPU-കൾ
32-ബിറ്റ് "സിംഗിൾ-പ്രിസിഷൻ" ഫ്ലോട്ടിംഗ്-പോയിന്റ് യൂണിറ്റ് ഹാർഡ്‌വെയറിൽ "ഫ്ലോട്ട്" നടപ്പിലാക്കുന്നു,
എന്നാൽ സോഫ്റ്റ്‌വെയറിൽ "ഇരട്ട" അനുകരിക്കുക. അത്തരം ഒരു മെഷീനിൽ, ഉപയോഗിച്ച് കണക്കുകൂട്ടലുകൾ നടത്തുന്നു
സോഫ്റ്റ്‌വെയറിന് ആവശ്യമായ ഓവർഹെഡ് കാരണം "ഇരട്ട" മൂല്യങ്ങൾ വളരെ ചെലവേറിയതാണ്
അനുകരണം.

ഫ്ലോട്ടിംഗ് പോയിന്റ് ആയതിനാൽ ആകസ്മികമായി "ഡബിൾ" ഉപയോഗിച്ച് കണക്കുകൂട്ടലുകൾ നടത്തുന്നത് എളുപ്പമാണ്
അക്ഷരങ്ങൾ പരോക്ഷമായി "ഇരട്ട" എന്ന തരത്തിലാണ്. ഉദാഹരണത്തിന്, ഇതിൽ:

ഫ്ലോട്ട് ഏരിയ (ഫ്ലോട്ട് ആരം)
{
തിരികെ 3.14159 * ആരം * ആരം;
}

ഫ്ലോട്ടിംഗ് പോയിന്റ് ആയതിനാൽ കമ്പൈലർ മുഴുവൻ കണക്കുകൂട്ടലും "ഇരട്ട" ഉപയോഗിച്ച് നടത്തുന്നു
അക്ഷരാർത്ഥത്തിൽ ഒരു "ഇരട്ട" ആണ്.

- ഫോർമാറ്റ്
-Wformat=n
ആർഗ്യുമെന്റുകൾ നൽകിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കാൻ "printf", "scanf" മുതലായവയിലേക്കുള്ള കോളുകൾ പരിശോധിക്കുക.
വ്യക്തമാക്കിയ ഫോർമാറ്റ് സ്ട്രിംഗിന് അനുയോജ്യമായ തരങ്ങളും പരിവർത്തനങ്ങളും ഉണ്ട്
ഫോർമാറ്റ് സ്ട്രിംഗിൽ വ്യക്തമാക്കിയിരിക്കുന്നത് അർത്ഥവത്താണ്. ഇതിൽ സ്റ്റാൻഡേർഡ് ഫംഗ്ഷനുകൾ ഉൾപ്പെടുന്നു, കൂടാതെ
"printf", "scanf", "strftime" എന്നിവയിൽ ഫോർമാറ്റ് ആട്രിബ്യൂട്ടുകൾ പ്രകാരം വ്യക്തമാക്കിയ മറ്റുള്ളവ
"strfmon" (ഒരു X/ഓപ്പൺ എക്സ്റ്റൻഷൻ, C സ്റ്റാൻഡേർഡിലല്ല) കുടുംബങ്ങൾ (അല്ലെങ്കിൽ മറ്റ് ലക്ഷ്യം-
പ്രത്യേക കുടുംബങ്ങൾ). ഫോർമാറ്റ് ആട്രിബ്യൂട്ടുകൾ ഇല്ലാതെ ഏതൊക്കെ ഫംഗ്ഷനുകളാണ് പരിശോധിക്കുന്നത്
തിരഞ്ഞെടുത്ത സ്റ്റാൻഡേർഡ് പതിപ്പിനെയും ഫംഗ്‌ഷനുകളുടെ അത്തരം പരിശോധനകളെയും ആശ്രയിച്ചിരിക്കുന്നു
വ്യക്തമാക്കിയ ആട്രിബ്യൂട്ട് ഇല്ലാതെ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു -ഫ്രീസ്റ്റാൻഡിംഗ് or -fno-builtin.

GNU libc പതിപ്പ് 2.2 പിന്തുണയ്‌ക്കുന്ന ഫോർമാറ്റ് സവിശേഷതകൾക്കെതിരെ ഫോർമാറ്റുകൾ പരിശോധിക്കുന്നു.
ഇവയിൽ എല്ലാ ISO C90, C99 സവിശേഷതകളും സിംഗിൾ Unix-ൽ നിന്നുള്ള സവിശേഷതകളും ഉൾപ്പെടുന്നു
സ്പെസിഫിക്കേഷനും ചില ബിഎസ്ഡി, ഗ്നു വിപുലീകരണങ്ങളും. മറ്റ് ലൈബ്രറി നടപ്പാക്കലുകൾ പാടില്ല
ഈ സവിശേഷതകളെല്ലാം പിന്തുണയ്ക്കുക; അപ്പുറം പോകുന്ന ഫീച്ചറുകളെ കുറിച്ചുള്ള മുന്നറിയിപ്പ് GCC പിന്തുണയ്ക്കുന്നില്ല
ഒരു പ്രത്യേക ലൈബ്രറിയുടെ പരിമിതികൾ. എന്നിരുന്നാലും, എങ്കിൽ -Wpedantic ഉപയോഗിച്ച് ഉപയോഗിക്കുന്നു - ഫോർമാറ്റ്,
തിരഞ്ഞെടുത്ത സ്റ്റാൻഡേർഡ് പതിപ്പിലല്ല ഫോർമാറ്റ് ഫീച്ചറുകളെ കുറിച്ചുള്ള മുന്നറിയിപ്പുകൾ നൽകിയിരിക്കുന്നത് (പക്ഷേ അല്ല
"strfmon" ഫോർമാറ്റുകൾക്കായി, അവ C സ്റ്റാൻഡേർഡിന്റെ ഒരു പതിപ്പിലും ഇല്ലാത്തതിനാൽ).

-Wformat=1
- ഫോർമാറ്റ്
ഓപ്ഷൻ - ഫോർമാറ്റ് എന്നതിന് തുല്യമാണ് -Wformat=1, ഒപ്പം -Wno-ഫോർമാറ്റ് എന്നതിന് തുല്യമാണ്
-Wformat=0. മുതലുള്ള - ഫോർമാറ്റ് പലതിനായുള്ള നൾ ഫോർമാറ്റ് ആർഗ്യുമെന്റുകളും പരിശോധിക്കുന്നു
പ്രവർത്തനങ്ങൾ, - ഫോർമാറ്റ് എന്നും സൂചിപ്പിക്കുന്നു -വന്നൂൾ. ഈ നിലയിലുള്ള ഫോർമാറ്റിന്റെ ചില വശങ്ങൾ
ഓപ്‌ഷനുകൾ ഉപയോഗിച്ച് പരിശോധന പ്രവർത്തനരഹിതമാക്കാം: -Wno-format-contains-nul,
-Wno-format-extra-args, ഒപ്പം -Wno-format-zero-length. - ഫോർമാറ്റ് വഴി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
- മതിൽ.

-Wno-format-contains-nul
If - ഫോർമാറ്റ് വ്യക്തമാക്കിയിരിക്കുന്നു, NUL ബൈറ്റുകൾ അടങ്ങിയ ഫോർമാറ്റ് സ്ട്രിംഗുകളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകരുത്.

-Wno-format-extra-args
If - ഫോർമാറ്റ് വ്യക്തമാക്കിയിരിക്കുന്നു, ഒരു "printf" ലേക്കുള്ള അധിക ആർഗ്യുമെന്റുകളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകരുത് അല്ലെങ്കിൽ
"സ്കാൻഫ്" ഫോർമാറ്റ് ഫംഗ്ഷൻ. സി സ്റ്റാൻഡേർഡ് അത്തരം വാദങ്ങൾ വ്യക്തമാക്കുന്നു
അവഗണിച്ചു.

ഉപയോഗിച്ച ആർഗ്യുമെന്റുകൾക്കിടയിൽ ഉപയോഗിക്കാത്ത ആർഗ്യുമെന്റുകൾ ഉള്ളിടത്ത് $
ഓപ്പറാൻറ് നമ്പർ സ്പെസിഫിക്കേഷനുകൾ, സാധാരണയായി മുന്നറിയിപ്പുകൾ ഇപ്പോഴും നൽകാറുണ്ട്
ഉപയോഗിക്കാത്തത് ഒഴിവാക്കുന്നതിന് "va_arg" ലേക്ക് ഏത് തരത്തിലാണ് കൈമാറേണ്ടതെന്ന് നടപ്പിലാക്കലിന് അറിയില്ല
വാദങ്ങൾ. എന്നിരുന്നാലും, "സ്കാൻഫ്" ഫോർമാറ്റുകളുടെ കാര്യത്തിൽ, ഈ ഐച്ഛികം അടിച്ചമർത്തുന്നു
സിംഗിൾ യുണിക്സ് മുതൽ ഉപയോഗിക്കാത്ത ആർഗ്യുമെന്റുകൾ എല്ലാം പോയിന്ററുകളാണെങ്കിൽ മുന്നറിയിപ്പ്
ഉപയോഗിക്കാത്ത ഇത്തരം വാദങ്ങൾ അനുവദനീയമാണെന്ന് സ്പെസിഫിക്കേഷൻ പറയുന്നു.

-Wno-format-zero-length
If - ഫോർമാറ്റ് വ്യക്തമാക്കിയിരിക്കുന്നു, സീറോ-ലെങ്ത് ഫോർമാറ്റുകളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകരുത്. സി നിലവാരം
പൂജ്യം നീളമുള്ള ഫോർമാറ്റുകൾ അനുവദനീയമാണെന്ന് വ്യക്തമാക്കുന്നു.

-Wformat=2
പ്രവർത്തനക്ഷമമാക്കുക - ഫോർമാറ്റ് കൂടാതെ അധിക ഫോർമാറ്റ് പരിശോധനകൾ. നിലവിൽ ഇതിന് തുല്യമാണ് - ഫോർമാറ്റ്
-Wformat-നോൺ ലിറ്ററൽ -ഫോർമാറ്റ്-സെക്യൂരിറ്റി -Wformat-y2k.

-Wformat-നോൺ ലിറ്ററൽ
If - ഫോർമാറ്റ് വ്യക്തമാക്കിയിട്ടുണ്ട്, ഫോർമാറ്റ് സ്ട്രിംഗ് ഒരു സ്ട്രിംഗ് അക്ഷരമല്ലെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
അതിനാൽ ഫോർമാറ്റ് ഫംഗ്‌ഷൻ അതിന്റെ ഫോർമാറ്റ് ആർഗ്യുമെന്റുകൾ എടുക്കുന്നില്ലെങ്കിൽ പരിശോധിക്കാൻ കഴിയില്ല
ഒരു "va_list".

-ഫോർമാറ്റ്-സെക്യൂരിറ്റി
If - ഫോർമാറ്റ് വ്യക്തമാക്കിയിരിക്കുന്നു, പ്രതിനിധീകരിക്കുന്ന ഫോർമാറ്റ് ഫംഗ്‌ഷനുകളുടെ ഉപയോഗത്തെക്കുറിച്ചും മുന്നറിയിപ്പ് നൽകുന്നു
സാധ്യമായ സുരക്ഷാ പ്രശ്നങ്ങൾ. നിലവിൽ, "printf" എന്നതിലേക്കുള്ള കോളുകളെക്കുറിച്ച് ഇത് മുന്നറിയിപ്പ് നൽകുന്നു
"scanf" ഫംഗ്‌ഷനുകൾ ഫോർമാറ്റ് സ്ട്രിംഗ് ഒരു സ്ട്രിംഗ് അക്ഷരമല്ല, കൂടാതെ ഇല്ല
"printf (foo);" എന്നതുപോലെ ഫോർമാറ്റ് ആർഗ്യുമെന്റുകൾ. എങ്കിൽ ഇതൊരു സുരക്ഷാ ദ്വാരമായിരിക്കാം
ഫോർമാറ്റ് സ്ട്രിംഗ് വിശ്വസനീയമല്ലാത്ത ഇൻപുട്ടിൽ നിന്നാണ് വന്നത്, അതിൽ അടങ്ങിയിരിക്കുന്നു %n. (ഇത് നിലവിൽ എ
എന്തിന്റെ ഉപവിഭാഗം -Wformat-നോൺ ലിറ്ററൽ മുന്നറിയിപ്പ് നൽകുന്നു, എന്നാൽ ഭാവിയിൽ മുന്നറിയിപ്പുകൾ ഉണ്ടായേക്കാം
എന്നതിലേക്ക് ചേർത്തു -ഫോർമാറ്റ്-സെക്യൂരിറ്റി അതിൽ ഉൾപ്പെടുത്തിയിട്ടില്ല -Wformat-നോൺ ലിറ്ററൽ.)

-ഫോർമാറ്റ്-ഒപ്പ്
If - ഫോർമാറ്റ് വ്യക്തമാക്കിയിരിക്കുന്നു, ഫോർമാറ്റ് സ്‌ട്രിംഗിന് ഒപ്പിടാത്തത് ആവശ്യമാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
വാദവും വാദവും ഒപ്പിടുകയും തിരിച്ചും.

ശ്രദ്ധിക്കുക: ഉബുണ്ടു 8.10-ലും അതിനുശേഷമുള്ള പതിപ്പുകളിലും ഈ ഓപ്ഷൻ C-യ്‌ക്കായി സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു,
C++, ObjC, ObjC++. പ്രവർത്തനരഹിതമാക്കാൻ, ഉപയോഗിക്കുക -Wno-format-security, അല്ലെങ്കിൽ എല്ലാ ഫോർമാറ്റുകളും പ്രവർത്തനരഹിതമാക്കുക
കൂടെ മുന്നറിയിപ്പുകൾ -Wformat=0. ഫോർമാറ്റ് സുരക്ഷാ മുന്നറിയിപ്പുകൾ മാരകമാക്കാൻ, വ്യക്തമാക്കുക
-വെറർ=ഫോർമാറ്റ്-സെക്യൂരിറ്റി.

-Wformat-y2k
If - ഫോർമാറ്റ് വ്യക്തമാക്കിയിരിക്കുന്നു, a മാത്രം ലഭിച്ചേക്കാവുന്ന "strftime" ഫോർമാറ്റുകളെക്കുറിച്ചും മുന്നറിയിപ്പ് നൽകുക
രണ്ടക്ക വർഷം.

-വന്നൂൾ
അസാധുവായ മൂല്യം ആവശ്യമാണെന്ന് അടയാളപ്പെടുത്തിയ ആർഗ്യുമെന്റുകൾക്കായി ഒരു നൾ പോയിന്റർ നൽകുന്നതിനെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
"nonnull" ഫംഗ്ഷൻ ആട്രിബ്യൂട്ട് വഴി.

-വന്നൂൾ ൽ ഉൾപ്പെടുത്തിയിരിക്കുന്നു - മതിൽ ഒപ്പം - ഫോർമാറ്റ്. ഉപയോഗിച്ച് ഇത് പ്രവർത്തനരഹിതമാക്കാം -Wno-nonnull
ഓപ്ഷൻ.

-വിനിറ്റ്-സ്വയം (സി, സി++, ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
സ്വയം ആരംഭിക്കുന്ന അൺഇനീഷ്യലൈസ്ഡ് വേരിയബിളുകളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. ഇത് ശ്രദ്ധിക്കുക
എന്നതിനൊപ്പം മാത്രമേ ഓപ്ഷൻ ഉപയോഗിക്കാൻ കഴിയൂ -വിനിയോഗം ചെയ്തു ഓപ്ഷൻ.

ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന സ്‌നിപ്പറ്റിൽ മാത്രം "i" അൺഇനിഷ്യലൈസ് ചെയ്യുന്നതിനെക്കുറിച്ച് GCC മുന്നറിയിപ്പ് നൽകുന്നു
എപ്പോൾ -വിനിറ്റ്-സ്വയം വ്യക്തമാക്കിയിട്ടുണ്ട്:

int f()
{
int i = i;
മടങ്ങുക ഞാൻ;
}

ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ C++ ൽ.

-വിംപ്ലിസിറ്റ്-ഇന്റ് (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ഒരു പ്രഖ്യാപനം ഒരു തരം വ്യക്തമാക്കാത്തപ്പോൾ മുന്നറിയിപ്പ് നൽകുക. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-വിംപ്ലിസിറ്റ്-ഫംഗ്ഷൻ-പ്രഖ്യാപനം (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
പ്രഖ്യാപിക്കുന്നതിന് മുമ്പ് ഒരു ഫംഗ്‌ഷൻ ഉപയോഗിക്കുമ്പോഴെല്ലാം ഒരു മുന്നറിയിപ്പ് നൽകുക. C99 മോഡിൽ
(-std=c99 or -std=gnu99), ഈ മുന്നറിയിപ്പ് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുകയും അത് ഒരു ആക്കി മാറ്റുകയും ചെയ്യുന്നു
വഴി പിശക് -പെഡന്റിക്-പിശകുകൾ. ഈ മുന്നറിയിപ്പും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - മതിൽ.

-വിംപ്ലിസിറ്റ് (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
അതുപോലെ തന്നെ -വിംപ്ലിസിറ്റ്-ഇന്റ് ഒപ്പം -വിംപ്ലിസിറ്റ്-ഫംഗ്ഷൻ-പ്രഖ്യാപനം. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
by - മതിൽ.

-വിഗ്നോർഡ്-യോഗ്യതക്കാർ (സി, സി++ മാത്രം)
ഒരു ഫംഗ്‌ഷന്റെ റിട്ടേൺ തരത്തിന് "const" പോലുള്ള ഒരു തരം യോഗ്യതയുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ഐഎസ്ഒ സിക്ക് വേണ്ടി
ഒരു ഫംഗ്‌ഷൻ നൽകുന്ന മൂല്യം ഒരു അല്ലാത്തതിനാൽ അത്തരം ഒരു തരം യോഗ്യതയ്ക്ക് യാതൊരു ഫലവുമില്ല
മൂല്യം. C++ ന്, സ്കെയിലർ തരങ്ങൾ അല്ലെങ്കിൽ "ശൂന്യം" എന്നതിന് മാത്രമേ മുന്നറിയിപ്പ് പുറപ്പെടുവിക്കുകയുള്ളൂ. ഐഎസ്ഒ സി
ഫംഗ്‌ഷൻ നിർവചനങ്ങളിൽ യോഗ്യതയുള്ള "ശൂന്യമായ" റിട്ടേൺ തരങ്ങളെ നിരോധിക്കുന്നു, അതിനാൽ അത്തരം റിട്ടേൺ തരങ്ങൾ
ഈ ഓപ്‌ഷൻ ഇല്ലാതെ പോലും എപ്പോഴും ഒരു മുന്നറിയിപ്പ് സ്വീകരിക്കുക.

ഈ മുന്നറിയിപ്പും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -വെക്സ്ട്ര.

-Wmain
"പ്രധാന" തരം സംശയാസ്പദമാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. "പ്രധാന" എന്നത് ബാഹ്യമായ ഒരു ഫംഗ്‌ഷൻ ആയിരിക്കണം
ലിങ്കേജ്, ഇൻറ് റിട്ടേണിംഗ്, ഒന്നുകിൽ പൂജ്യം ആർഗ്യുമെന്റുകൾ, രണ്ടോ മൂന്നോ ആർഗ്യുമെന്റുകൾ എടുക്കൽ
ഉചിതമായ തരങ്ങൾ. ഈ മുന്നറിയിപ്പ് C++ ൽ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കുകയും ഒന്നുകിൽ പ്രവർത്തനക്ഷമമാക്കുകയും ചെയ്യുന്നു
- മതിൽ or -Wpedantic.

-Wmissing-braces
ഒരു അഗ്രഗേറ്റ് അല്ലെങ്കിൽ യൂണിയൻ ഇനീഷ്യലൈസർ പൂർണ്ണമായി ബ്രാക്കറ്റ് ചെയ്തിട്ടില്ലെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. താഴെ പറയുന്നതിൽ
ഉദാഹരണത്തിന്, "a" എന്നതിനുള്ള ഇനീഷ്യലൈസർ പൂർണ്ണമായി ബ്രാക്കറ്റുചെയ്‌തിട്ടില്ല, എന്നാൽ "b" എന്നതിനുള്ളത് പൂർണ്ണമാണ്
ബ്രാക്കറ്റഡ്. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ സിയിൽ

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

ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-Wmissing-include-dirs (സി, സി++, ഒബ്ജക്റ്റീവ്-സി, ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഉപയോക്താവ് നൽകിയ ഉൾപ്പെടുത്തിയ ഡയറക്‌ടറി നിലവിലില്ലെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക.

-Wparentheses
ചില സന്ദർഭങ്ങളിൽ പരാൻതീസിസുകൾ ഒഴിവാക്കിയാൽ മുന്നറിയിപ്പ് നൽകുക
ഒരു സത്യമൂല്യം പ്രതീക്ഷിക്കുന്ന സന്ദർഭത്തിലോ അല്ലെങ്കിൽ ഓപ്പറേറ്റർമാരെ നെസ്റ്റ് ചെയ്യുമ്പോഴോ അസൈൻമെന്റ്
ആരുടെ മുൻഗണനയെക്കുറിച്ച് ആളുകൾ പലപ്പോഴും ആശയക്കുഴപ്പത്തിലാകുന്നു.

"x<=y<=z" പോലെയുള്ള ഒരു താരതമ്യം പ്രത്യക്ഷപ്പെടുകയാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക; ഇത് "(x<=y ? 1 :
0) <= z", ഇത് സാധാരണ ഗണിതശാസ്ത്രത്തിൽ നിന്ന് വ്യത്യസ്തമായ വ്യാഖ്യാനമാണ്
നൊട്ടേഷൻ.

ആശയക്കുഴപ്പം ഉണ്ടായേക്കാവുന്ന നിർമ്മാണങ്ങളെക്കുറിച്ചും മുന്നറിയിപ്പ് നൽകുക
"മറ്റുള്ള" ശാഖയാണ്. അത്തരമൊരു കേസിന്റെ ഒരു ഉദാഹരണം ഇതാ:

{
അത് അങ്ങിനെയെങ്കിൽ)
എങ്കിൽ (ബി)
foo ();
മറ്റാരെങ്കിലും
ബാർ ();
}

C/C++ ൽ, എല്ലാ "മറ്റുള്ള" ശാഖകളും സാധ്യമായ ഏറ്റവും ഉള്ളിലുള്ള "if" പ്രസ്താവനയുടേതാണ്.
ഈ ഉദാഹരണത്തിൽ "if (b)" ആണ്. ഇത് പലപ്പോഴും പ്രോഗ്രാമർ പ്രതീക്ഷിച്ചതല്ല
പ്രോഗ്രാമർ തിരഞ്ഞെടുത്ത ഇൻഡന്റേഷൻ വഴി മുകളിലെ ഉദാഹരണത്തിൽ ചിത്രീകരിച്ചിരിക്കുന്നു. ഉള്ളപ്പോൾ
ഈ ആശയക്കുഴപ്പത്തിനുള്ള സാധ്യത, ഈ പതാക വ്യക്തമാക്കുമ്പോൾ GCC മുന്നറിയിപ്പ് നൽകുന്നു.
മുന്നറിയിപ്പ് ഇല്ലാതാക്കാൻ, അകത്തെ "if" പ്രസ്താവനയ്ക്ക് ചുറ്റും വ്യക്തമായ ബ്രേസുകൾ ചേർക്കുക
"മറ്റുള്ളവ" എന്നത് "if" എന്നതിൽ ഉൾപ്പെടാൻ വഴിയില്ല. തത്ഫലമായുണ്ടാകുന്ന കോഡ് കാണപ്പെടുന്നു
ഇതുപോലെ:

{
അത് അങ്ങിനെയെങ്കിൽ)
{
എങ്കിൽ (ബി)
foo ();
മറ്റാരെങ്കിലും
ബാർ ();
}
}

ഒഴിവാക്കിയ മിഡിൽ ഓപ്പറണ്ടിനൊപ്പം "?:" എന്നതിലേക്കുള്ള ഗ്നു വിപുലീകരണത്തിന്റെ അപകടകരമായ ഉപയോഗങ്ങൾക്കും മുന്നറിയിപ്പ് നൽകുക.
"?" എന്നതിലെ വ്യവസ്ഥ: ഓപ്പറേറ്റർ ഒരു ബൂളിയൻ എക്സ്പ്രഷൻ ആണെങ്കിൽ, ഒഴിവാക്കിയ മൂല്യം ഇതാണ്
എല്ലായ്‌പ്പോഴും 1. പലപ്പോഴും പ്രോഗ്രാമർമാർ ഇത് സോപാധികത്തിനുള്ളിൽ കണക്കാക്കിയ മൂല്യമായിരിക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു
പകരം പദപ്രയോഗം.

ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-സീക്വൻസ്-പോയിന്റ്
ക്രമത്തിന്റെ ലംഘനങ്ങൾ കാരണം നിർവചിക്കാത്ത സെമാന്റിക്‌സ് ഉണ്ടായേക്കാവുന്ന കോഡിനെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
C, C++ മാനദണ്ഡങ്ങളിലെ പോയിന്റ് നിയമങ്ങൾ.

C, C++ മാനദണ്ഡങ്ങൾ ഒരു C/C++ പ്രോഗ്രാമിലെ എക്‌സ്‌പ്രഷനുകളുടെ ക്രമം നിർവ്വചിക്കുന്നു
എന്ന രീതിയിൽ വിലയിരുത്തപ്പെടുന്നു ക്രമം പോയിന്റ്, ഇത് തമ്മിലുള്ള ഭാഗിക ക്രമപ്പെടുത്തലിനെ പ്രതിനിധീകരിക്കുന്നു
പ്രോഗ്രാമിന്റെ ഭാഗങ്ങളുടെ നിർവ്വഹണം: സീക്വൻസ് പോയിന്റിന് മുമ്പ് എക്സിക്യൂട്ട് ചെയ്തവ, അവ
അതിനു ശേഷം വധിച്ചു. ഒരു പൂർണ്ണ പദപ്രയോഗത്തിന്റെ മൂല്യനിർണ്ണയത്തിന് ശേഷം ഇവ സംഭവിക്കുന്നു (ഏത്
ഒരു വലിയ പദപ്രയോഗത്തിന്റെ ഭാഗമല്ല), a യുടെ ആദ്യ ഓപ്പറണ്ടിന്റെ മൂല്യനിർണ്ണയത്തിന് ശേഷം
"&&", "||", "? :" അല്ലെങ്കിൽ "," (കോമ) ഓപ്പറേറ്റർ, ഒരു ഫംഗ്ഷൻ വിളിക്കുന്നതിന് മുമ്പ് (എന്നാൽ ശേഷം
അതിന്റെ ആർഗ്യുമെന്റുകളുടെ വിലയിരുത്തലും വിളിക്കപ്പെടുന്ന ഫംഗ്‌ഷനെ സൂചിപ്പിക്കുന്ന പദപ്രയോഗവും), കൂടാതെ ഇൻ
മറ്റ് ചില സ്ഥലങ്ങൾ. സീക്വൻസ് പോയിന്റ് നിയമങ്ങളാൽ പ്രകടമാകുന്നത് ഒഴികെ, ഓർഡർ
ഒരു പദപ്രയോഗത്തിന്റെ ഉപപദങ്ങളുടെ മൂല്യനിർണ്ണയം വ്യക്തമാക്കിയിട്ടില്ല. ഈ നിയമങ്ങളെല്ലാം
മൊത്തത്തിലുള്ള ഓർഡറിനേക്കാൾ ഒരു ഭാഗിക ക്രമം മാത്രം വിവരിക്കുക, ഉദാഹരണത്തിന്, രണ്ടാണെങ്കിൽ
ഫംഗ്‌ഷനുകളെ ഒരു പദപ്രയോഗത്തിനുള്ളിൽ വിളിക്കുന്നു, അവയ്‌ക്കിടയിൽ സീക്വൻസ് പോയിന്റ് ഇല്ല
ഫംഗ്‌ഷനുകൾ വിളിക്കുന്ന ക്രമം വ്യക്തമാക്കിയിട്ടില്ല. എന്നിരുന്നാലും, മാനദണ്ഡങ്ങൾ
ഫംഗ്‌ഷൻ കോളുകൾ ഓവർലാപ്പ് ചെയ്യുന്നില്ലെന്ന് കമ്മിറ്റി വിധിച്ചു.

സീക്വൻസ് പോയിന്റുകൾക്കിടയിൽ എപ്പോഴാണ് മൂല്യങ്ങളിൽ മാറ്റം വരുത്തുന്നത് എന്ന് വ്യക്തമാക്കിയിട്ടില്ല
വസ്തുക്കൾ പ്രാബല്യത്തിൽ വരും. ഇതിനെ ആശ്രയിച്ചിരിക്കുന്ന സ്വഭാവമുള്ള പ്രോഗ്രാമുകൾക്ക് നിർവചിക്കപ്പെടാത്ത സ്വഭാവമുണ്ട്;
C, C++ സ്റ്റാൻഡേർഡുകൾ സൂചിപ്പിക്കുന്നത് "മുമ്പത്തെയും അടുത്ത സീക്വൻസ് പോയിന്റിനും ഇടയിൽ an
ഒബ്ജക്റ്റ് അതിന്റെ സംഭരിച്ച മൂല്യം ഒരു മൂല്യനിർണ്ണയത്തിലൂടെ ഒരു തവണയെങ്കിലും പരിഷ്കരിക്കും
ആവിഷ്കാരം. കൂടാതെ, മൂല്യം നിർണ്ണയിക്കാൻ മാത്രമേ മുൻ മൂല്യം വായിക്കൂ
സംഭരിക്കപ്പെടും.". ഒരു പ്രോഗ്രാം ഈ നിയമങ്ങൾ ലംഘിക്കുകയാണെങ്കിൽ, ഏതെങ്കിലും പ്രത്യേക ഫലങ്ങൾ
നടപ്പാക്കൽ തീർത്തും പ്രവചനാതീതമാണ്.

നിർവചിക്കാത്ത സ്വഭാവമുള്ള കോഡിന്റെ ഉദാഹരണങ്ങൾ "a = a++;", "a[n] = b[n++]", "a[i++] = എന്നിവയാണ്.
i;". കൂടുതൽ സങ്കീർണ്ണമായ ചില കേസുകൾ ഈ ഓപ്‌ഷൻ മുഖേന രോഗനിർണ്ണയം ചെയ്യപ്പെടുന്നില്ല, കൂടാതെ ഇത് നൽകാം
ഇടയ്ക്കിടെ തെറ്റായ പോസിറ്റീവ് ഫലം, പക്ഷേ പൊതുവെ ഇത് വളരെ ഫലപ്രദമാണെന്ന് കണ്ടെത്തി
പ്രോഗ്രാമുകളിൽ ഇത്തരത്തിലുള്ള പ്രശ്നം കണ്ടെത്തുന്നു.

സ്റ്റാൻഡേർഡ് ആശയക്കുഴപ്പമുണ്ടാക്കുന്ന വാക്കുകളാണ്, അതിനാൽ കൃത്യതയെക്കുറിച്ച് ചില ചർച്ചകൾ നടക്കുന്നു
സൂക്ഷ്മമായ കേസുകളിൽ സീക്വൻസ് പോയിന്റ് നിയമങ്ങളുടെ അർത്ഥം. യുടെ ചർച്ചകളിലേക്കുള്ള ലിങ്കുകൾ
നിർദ്ദിഷ്ട ഔപചാരിക നിർവചനങ്ങൾ ഉൾപ്പെടെയുള്ള പ്രശ്നം, GCC റീഡിംഗ് പേജിൽ കണ്ടെത്താം,
ചെയ്തത്http://gcc.gnu.org/readings.html>.

ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ C, C++ എന്നിവയ്ക്കായി.

-Wno-return-local-addr
പോകുന്ന ഒരു വേരിയബിളിലേക്ക് ഒരു പോയിന്റർ (അല്ലെങ്കിൽ C++, ഒരു റഫറൻസ്) തിരികെ നൽകുന്നതിനെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകരുത്
ഫംഗ്‌ഷൻ തിരിച്ചെത്തിയതിന് ശേഷം പരിധിക്ക് പുറത്താണ്.

-റെട്ടേൺ-ടൈപ്പ്
"int" ലേക്ക് ഡിഫോൾട്ട് ചെയ്യുന്ന ഒരു റിട്ടേൺ തരം ഉപയോഗിച്ച് ഒരു ഫംഗ്ഷൻ നിർവചിക്കുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക. കൂടാതെ
റിട്ടേൺ തരമുള്ള ഒരു ഫംഗ്‌ഷനിൽ റിട്ടേൺ മൂല്യമില്ലാത്ത ഏതെങ്കിലും "റിട്ടേൺ" പ്രസ്താവനയെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
"ശൂന്യം" അല്ല (ഫംഗ്ഷൻ ബോഡിയുടെ അവസാനം വീഴുന്നത് തിരികെ വരുന്നതായി കണക്കാക്കുന്നു
ഒരു മൂല്യം കൂടാതെ), കൂടാതെ ഒരു ഫംഗ്ഷനിലെ ഒരു പദപ്രയോഗത്തോടുകൂടിയ "റിട്ടേൺ" പ്രസ്താവനയെക്കുറിച്ചും
ആരുടെ റിട്ടേൺ തരം "ശൂന്യം" ആണ്.

C++ ന്, റിട്ടേൺ തരം ഇല്ലാത്ത ഒരു ഫംഗ്‌ഷൻ എപ്പോഴും ഒരു ഡയഗ്നോസ്റ്റിക് സന്ദേശം ഉണ്ടാക്കുന്നു, പോലും
എപ്പോൾ -Wno-return-type വ്യക്തമാക്കിയിട്ടുണ്ട്. "പ്രധാനവും" പ്രവർത്തനങ്ങളും മാത്രമാണ് ഒഴിവാക്കലുകൾ
സിസ്റ്റം തലക്കെട്ടുകളിൽ നിർവചിച്ചിരിക്കുന്നു.

ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-Wshift-count-negative
ഷിഫ്റ്റ് കൗണ്ട് നെഗറ്റീവ് ആണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ഈ മുന്നറിയിപ്പ് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

-Wshift-count-overflow
ഷിഫ്റ്റ് എണ്ണം >= തരത്തിന്റെ വീതിയുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ഈ മുന്നറിയിപ്പ് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

-Wswitch
"സ്വിച്ച്" പ്രസ്‌താവനയിൽ എണ്ണപ്പെട്ട തരത്തിന്റെ സൂചികയും "കേസ്" ഇല്ലാത്തതും എപ്പോഴെങ്കിലും മുന്നറിയിപ്പ് നൽകുക
ആ എണ്ണത്തിന്റെ പേരിലുള്ള ഒന്നോ അതിലധികമോ കോഡുകൾക്ക്. (ഒരു "സ്ഥിരസ്ഥിതി" സാന്നിധ്യം
ലേബൽ ഈ മുന്നറിയിപ്പ് തടയുന്നു.) "കേസ്" ലേബലുകൾ എണ്ണൽ പരിധിക്ക് പുറത്തുള്ളതും
ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കുമ്പോൾ മുന്നറിയിപ്പുകളെ പ്രകോപിപ്പിക്കുക (ഒരു "സ്ഥിര" ലേബൽ ഉണ്ടെങ്കിലും). ഈ
മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - മതിൽ.

-Wswitch-default
"സ്വിച്ച്" പ്രസ്താവനയ്ക്ക് "ഡിഫോൾട്ട്" കേസ് ഇല്ലാത്തപ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക.

-Wswitch-enum
"സ്വിച്ച്" പ്രസ്‌താവനയിൽ എണ്ണപ്പെട്ട തരത്തിന്റെ സൂചികയും "കേസ്" ഇല്ലാത്തതും എപ്പോഴെങ്കിലും മുന്നറിയിപ്പ് നൽകുക
ആ എണ്ണത്തിന്റെ പേരിലുള്ള ഒന്നോ അതിലധികമോ കോഡുകൾക്ക്. പുറത്ത് "കേസ്" ലേബലുകൾ
ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കുമ്പോൾ ഗണന ശ്രേണിയും മുന്നറിയിപ്പ് നൽകുന്നു. ഒരേയൊരു വ്യത്യാസം
തമ്മിലുള്ള -Wswitch കൂടാതെ ഈ ഓപ്‌ഷൻ ഒഴിവാക്കിയതിനെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു എന്നതാണ്
ഒരു "ഡിഫോൾട്ട്" ലേബൽ ഉണ്ടെങ്കിലും എണ്ണൽ കോഡ്.

-Wswitch-bool
"സ്വിച്ച്" പ്രസ്‌താവനയിൽ ബൂളിയൻ തരത്തിന്റെ സൂചിക ഉണ്ടാകുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക. അത് സാധ്യമാണ്
അല്ലാതെ മറ്റൊരു തരത്തിലേക്ക് കൺട്രോളിംഗ് എക്സ്പ്രഷൻ കാസ്‌റ്റ് ചെയ്‌ത് ഈ മുന്നറിയിപ്പ് അടിച്ചമർത്തുക
"ബൂൾ". ഉദാഹരണത്തിന്:

സ്വിച്ച് ((ഇന്റ്) (a == 4))
{
...
}

C, C++ പ്രോഗ്രാമുകൾക്കായി ഈ മുന്നറിയിപ്പ് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

-Wsync-nand (സി, സി++ മാത്രം)
"__sync_fetch_and_nand", "__sync_nand_and_fetch" എന്നിവ ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകൾ ആയിരിക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക
ഉപയോഗിച്ചു. ഈ ഫംഗ്‌ഷനുകൾ GCC 4.4-ൽ സെമാന്റിക്‌സ് മാറ്റി.

-Wtrigraphs
പ്രോഗ്രാമിന്റെ അർത്ഥം മാറ്റിയേക്കാവുന്ന ഏതെങ്കിലും ട്രൈഗ്രാഫുകൾ നേരിടുകയാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
(അഭിപ്രായങ്ങൾക്കുള്ളിലെ ട്രൈഗ്രാഫുകളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നില്ല). ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-Wunused-but-set-parameter
ഒരു ഫംഗ്‌ഷൻ പാരാമീറ്റർ അസൈൻ ചെയ്യപ്പെടുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക, എന്നാൽ ഉപയോഗിക്കാത്തത് (അല്ലാതെ
അതിന്റെ പ്രഖ്യാപനം).

ഈ മുന്നറിയിപ്പ് അടിച്ചമർത്താൻ "ഉപയോഗിക്കാത്ത" ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുക.

ഈ മുന്നറിയിപ്പും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - ഉപയോഗിച്ചത് ഒപ്പം കൂടെ -വെക്സ്ട്ര.

-Wunused-but-set-variable
ഒരു ലോക്കൽ വേരിയബിളിന് അസൈൻ ചെയ്യുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക, എന്നാൽ ഉപയോഗിക്കാത്തത് (അത് മാറ്റിനിർത്തി
പ്രഖ്യാപനം). ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

ഈ മുന്നറിയിപ്പ് അടിച്ചമർത്താൻ "ഉപയോഗിക്കാത്ത" ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുക.

ഈ മുന്നറിയിപ്പും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - ഉപയോഗിച്ചത്, ഇത് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - മതിൽ.

-Wunused-ഫംഗ്ഷൻ
ഒരു സ്റ്റാറ്റിക് ഫംഗ്‌ഷൻ പ്രഖ്യാപിക്കപ്പെടുമ്പോഴും നിർവചിക്കപ്പെട്ടിട്ടില്ലാത്തപ്പോഴോ അല്ലെങ്കിൽ ഇൻലൈൻ അല്ലാത്ത സ്റ്റാറ്റിക് ആയിരിക്കുമ്പോഴോ മുന്നറിയിപ്പ് നൽകുക
പ്രവർത്തനം ഉപയോഗിക്കാത്തതാണ്. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-ഉപയോഗിച്ച ലേബൽ
ഒരു ലേബൽ പ്രഖ്യാപിക്കപ്പെടുമ്പോഴും ഉപയോഗിക്കാതിരിക്കുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

ഈ മുന്നറിയിപ്പ് അടിച്ചമർത്താൻ "ഉപയോഗിക്കാത്ത" ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുക.

-Wunused-local-typedefs (സി, ഒബ്ജക്റ്റീവ്-സി, സി++, ഒബ്ജക്റ്റീവ്-സി++ എന്നിവ മാത്രം)
ഒരു ഫംഗ്ഷനിൽ പ്രാദേശികമായി നിർവചിച്ചിരിക്കുന്ന ടൈപ്പ്ഡെഫ് ഉപയോഗിക്കാത്തപ്പോൾ മുന്നറിയിപ്പ് നൽകുക. ഈ മുന്നറിയിപ്പ്
പ്രാപ്തമാക്കിയത് - മതിൽ.

-Wunused-parameter
ഒരു ഫംഗ്‌ഷൻ പാരാമീറ്റർ അതിന്റെ ഡിക്ലറേഷൻ മാറ്റിവെച്ച് ഉപയോഗിക്കാത്തപ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക.

ഈ മുന്നറിയിപ്പ് അടിച്ചമർത്താൻ "ഉപയോഗിക്കാത്ത" ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുക.

- ഉപയോഗിക്കാത്ത ഫലം
"warn_unused_result" എന്ന ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് അടയാളപ്പെടുത്തിയ ഒരു ഫംഗ്‌ഷന്റെ കോളർ മുന്നറിയിപ്പ് നൽകിയാൽ മുന്നറിയിപ്പ് നൽകരുത്
അതിന്റെ റിട്ടേൺ മൂല്യം ഉപയോഗിക്കരുത്. സ്ഥിരസ്ഥിതിയാണ് -ഉപയോഗിച്ച ഫലം.

-Wunused-variable
ഒരു ലോക്കൽ വേരിയബിളോ നോൺ-കോൺസ്റ്റന്റ് സ്റ്റാറ്റിക് വേരിയബിളോ ഉപയോഗിക്കാത്തപ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക
അതിന്റെ പ്രഖ്യാപനം. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

ഈ മുന്നറിയിപ്പ് അടിച്ചമർത്താൻ "ഉപയോഗിക്കാത്ത" ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുക.

-ഉപയോഗിച്ച മൂല്യം
വ്യക്തമായും ഉപയോഗിക്കാത്ത ഫലത്തെ ഒരു പ്രസ്താവന കണക്കാക്കുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക. അടിച്ചമർത്താൻ
ഈ മുന്നറിയിപ്പ് ഉപയോഗിക്കാത്ത പദപ്രയോഗം "അസാധു" എന്നാക്കി മാറ്റുന്നു. ഇതിൽ ഒരു പദപ്രയോഗം ഉൾപ്പെടുന്നു-
പ്രസ്താവന അല്ലെങ്കിൽ പാർശ്വഫലങ്ങളില്ലാത്ത കോമ എക്സ്പ്രഷന്റെ ഇടത് വശം.
ഉദാഹരണത്തിന്, "x[i,j]" പോലുള്ള ഒരു പദപ്രയോഗം ഒരു മുന്നറിയിപ്പിന് കാരണമാകുന്നു, അതേസമയം "x[(void)i,j]"
ഇല്ല.

ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

- ഉപയോഗിച്ചത്
മുകളിലെ എല്ലാം - ഉപയോഗിച്ചത് ഓപ്ഷനുകൾ കൂടിച്ചേർന്നു.

ഉപയോഗിക്കാത്ത ഫംഗ്‌ഷൻ പാരാമീറ്ററിനെക്കുറിച്ച് മുന്നറിയിപ്പ് ലഭിക്കുന്നതിന്, നിങ്ങൾ ഒന്നുകിൽ വ്യക്തമാക്കണം
-വെക്സ്ട്ര - ഉപയോഗിച്ചത് (അതല്ല - മതിൽ ധ്വനിപ്പിക്കുന്നു - ഉപയോഗിച്ചത്), അല്ലെങ്കിൽ പ്രത്യേകം വ്യക്തമാക്കുക
-Wunused-parameter.

-വിനിയോഗം ചെയ്തു
ആദ്യം ആരംഭിക്കാതെ ഒരു ഓട്ടോമാറ്റിക് വേരിയബിൾ ഉപയോഗിക്കുന്നുണ്ടോ അല്ലെങ്കിൽ ഒരു വേരിയബിൾ ആണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
ഒരു "setjmp" കോൾ വഴി ക്ലോബ്ബർ ചെയ്തേക്കാം. C++-ൽ, നോൺ-സ്റ്റാറ്റിക് റഫറൻസ് ആണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
കൺസ്ട്രക്‌റ്ററുകൾ ഇല്ലാത്ത ഒരു ക്ലാസിൽ സ്റ്റാറ്റിക് "കോൺസ്റ്റ്" അംഗം പ്രത്യക്ഷപ്പെടുന്നു.

വേരിയബിളിന്റെ അൺഇനീഷ്യലൈസ്ഡ് മൂല്യം ഉപയോഗിക്കുന്ന കോഡിനെക്കുറിച്ച് നിങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകണമെങ്കിൽ
സ്വന്തം ഇനീഷ്യലൈസർ, ഉപയോഗിക്കുക -വിനിറ്റ്-സ്വയം ഓപ്ഷൻ.

ഈ മുന്നറിയിപ്പുകൾ ഉണ്ടാകുന്നത് ഘടനയുടെ വ്യക്തിഗതമല്ലാത്ത അല്ലെങ്കിൽ ക്ലോബ്ബർ ചെയ്ത ഘടകങ്ങൾക്കാണ്,
യൂണിയൻ അല്ലെങ്കിൽ അറേ വേരിയബിളുകൾ, അതുപോലെ തന്നെ അൺഇനീഷ്യലൈസ്ഡ് അല്ലെങ്കിൽ ക്ലോബർഡ് വേരിയബിളുകൾക്കും
മൊത്തമായി. "അസ്ഥിര" എന്ന് പ്രഖ്യാപിക്കപ്പെട്ട വേരിയബിളുകൾക്കോ ​​മൂലകങ്ങൾക്കോ ​​അവ സംഭവിക്കുന്നില്ല. കാരണം
ഈ മുന്നറിയിപ്പുകൾ ഒപ്റ്റിമൈസേഷൻ, കൃത്യമായ വേരിയബിളുകൾ അല്ലെങ്കിൽ ഘടകങ്ങൾ എന്നിവയെ ആശ്രയിച്ചിരിക്കുന്നു
മുന്നറിയിപ്പുകൾ കൃത്യമായ ഒപ്റ്റിമൈസേഷൻ ഓപ്ഷനുകളെയും ഉപയോഗിച്ച GCC പതിപ്പിനെയും ആശ്രയിച്ചിരിക്കുന്നു.

a കണക്കാക്കാൻ മാത്രം ഉപയോഗിക്കുന്ന ഒരു വേരിയബിളിനെക്കുറിച്ച് മുന്നറിയിപ്പ് ഉണ്ടാകണമെന്നില്ല എന്നത് ശ്രദ്ധിക്കുക
ഒരിക്കലും ഉപയോഗിക്കാത്ത മൂല്യം, കാരണം അത്തരം കണക്കുകൂട്ടലുകൾ ഡാറ്റാ ഫ്ലോ വഴി ഇല്ലാതാക്കിയേക്കാം
മുന്നറിയിപ്പുകൾ അച്ചടിക്കുന്നതിന് മുമ്പുള്ള വിശകലനം.

-Wmaybe-uninitialised
ഒരു ഓട്ടോമാറ്റിക് വേരിയബിളിനായി, ഫംഗ്‌ഷൻ എൻട്രിയിൽ നിന്ന് ഒരു ഉപയോഗത്തിലേക്ക് ഒരു പാത്ത് നിലവിലുണ്ടെങ്കിൽ
ആരംഭിച്ച വേരിയബിൾ, എന്നാൽ മറ്റ് ചില പാതകൾ നിലവിലുണ്ട്
വേരിയബിൾ ആരംഭിച്ചിട്ടില്ല, തെളിയിക്കാൻ കഴിയുന്നില്ലെങ്കിൽ കംപൈലർ ഒരു മുന്നറിയിപ്പ് പുറപ്പെടുവിക്കുന്നു
ആരംഭിക്കാത്ത പാതകൾ റൺ ടൈമിൽ എക്സിക്യൂട്ട് ചെയ്യുന്നില്ല. ഈ മുന്നറിയിപ്പുകൾ ഓപ്ഷണൽ ആക്കി
കാരണം കോഡ് ശരിയായിരിക്കാനുള്ള എല്ലാ കാരണങ്ങളും കാണാൻ ജിസിസി വേണ്ടത്ര സ്മാർട്ടല്ല
ഒരു പിശക് ഉണ്ടെന്ന് തോന്നിയിട്ടും. ഇത് എങ്ങനെ സംഭവിക്കാം എന്നതിന്റെ ഒരു ഉദാഹരണം ഇതാ:

{
int x;
മാറുക (y)
{
കേസ് 1: x = 1;
പൊട്ടി;
കേസ് 2: x = 4;
പൊട്ടി;
കേസ് 3: x = 5;
}
foo (x);
}

"y" യുടെ മൂല്യം എല്ലായ്പ്പോഴും 1, 2 അല്ലെങ്കിൽ 3 ആണെങ്കിൽ, "x" എപ്പോഴും ആരംഭിക്കും, എന്നാൽ GCC
ഇത് അറിയില്ല. മുന്നറിയിപ്പ് അടിച്ചമർത്താൻ, നിങ്ങൾ ഒരു ഡിഫോൾട്ട് കേസ് നൽകേണ്ടതുണ്ട്
ഉറപ്പിക്കുക(0) അല്ലെങ്കിൽ സമാനമായ കോഡ്.

ഒരു അസ്ഥിരമല്ലാത്ത ഓട്ടോമാറ്റിക് വേരിയബിൾ മാറ്റുമ്പോൾ ഈ ഓപ്‌ഷൻ മുന്നറിയിപ്പ് നൽകുന്നു
"longjmp" ലേക്ക് വിളിക്കുക. ഈ മുന്നറിയിപ്പുകളും ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിൽ മാത്രമേ സാധ്യമാകൂ
സമാഹാരം.

"setjmp" എന്നതിലേക്കുള്ള കോളുകൾ മാത്രമേ കംപൈലർ കാണുന്നത്. "longjmp" എവിടെയാണെന്ന് അതിന് അറിയില്ല
വിളിച്ചു; വാസ്തവത്തിൽ, ഒരു സിഗ്നൽ ഹാൻഡ്‌ലറിന് കോഡിന്റെ ഏത് ഘട്ടത്തിലും അതിനെ വിളിക്കാനാകും. പോലെ
ഫലം, "ലോംഗ്‌ജെഎംപി" കാരണം യഥാർത്ഥത്തിൽ പ്രശ്‌നമൊന്നുമില്ലെങ്കിൽപ്പോലും നിങ്ങൾക്ക് മുന്നറിയിപ്പ് ലഭിച്ചേക്കാം.
പ്രശ്‌നമുണ്ടാക്കുന്ന സ്ഥലത്തേക്ക് വിളിക്കാൻ കഴിയില്ല.

നിങ്ങൾ ഉപയോഗിക്കുന്ന എല്ലാ പ്രവർത്തനങ്ങളും പ്രഖ്യാപിക്കുകയാണെങ്കിൽ ചില വ്യാജ മുന്നറിയിപ്പുകൾ ഒഴിവാക്കാനാകും
ഒരിക്കലും "നോർടേൺ" ആയി തിരിച്ചുവരരുത്.

ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ or -വെക്സ്ട്ര.

-അറിയപ്പെടാത്ത-പ്രാഗ്മകൾ
ജിസിസിക്ക് മനസ്സിലാകാത്ത ഒരു "#പ്രാഗ്മ" നിർദ്ദേശം നേരിടുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക. ഇത് എങ്കിൽ
കമാൻഡ്-ലൈൻ ഓപ്‌ഷൻ ഉപയോഗിക്കുന്നു, സിസ്റ്റത്തിലെ അജ്ഞാതമായ പ്രയോഗങ്ങൾക്ക് പോലും മുന്നറിയിപ്പുകൾ നൽകുന്നു
ഹെഡ്ഡർ ഫയലുകൾ. മുന്നറിയിപ്പുകൾ പ്രവർത്തനക്ഷമമാക്കിയാൽ ഇത് അങ്ങനെയല്ല - മതിൽ
കമാൻഡ്-ലൈൻ ഓപ്ഷൻ.

-Wno-pragmas
തെറ്റായ പാരാമീറ്ററുകൾ, അസാധുവായ വാക്യഘടന, അല്ലെങ്കിൽ
പ്രയോഗങ്ങൾ തമ്മിലുള്ള സംഘർഷങ്ങൾ. ഇതും കാണുക -അറിയപ്പെടാത്ത-പ്രാഗ്മകൾ.

-വിസ്ട്രിക്റ്റ്-അപരനാമം
എപ്പോൾ മാത്രമേ ഈ ഓപ്ഷൻ സജീവമാകൂ - fstrict-aliasing സജീവമാണ്. കോഡിനെക്കുറിച്ച് ഇത് മുന്നറിയിപ്പ് നൽകുന്നു
ഒപ്റ്റിമൈസേഷനായി കമ്പൈലർ ഉപയോഗിക്കുന്ന കർശനമായ അപരനാമ നിയമങ്ങൾ ലംഘിച്ചേക്കാം.
മുന്നറിയിപ്പ് എല്ലാ കേസുകളും പിടിക്കുന്നില്ല, എന്നാൽ കൂടുതൽ സാധാരണമായവ പിടിക്കാൻ ശ്രമിക്കുന്നു
ചതിക്കുഴികൾ. അതിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട് - മതിൽ. ഇതിന് തുല്യമാണ് -Wstrict-aliasing=3

-Wstrict-aliasing=n
എപ്പോൾ മാത്രമേ ഈ ഓപ്ഷൻ സജീവമാകൂ - fstrict-aliasing സജീവമാണ്. കോഡിനെക്കുറിച്ച് ഇത് മുന്നറിയിപ്പ് നൽകുന്നു
ഒപ്റ്റിമൈസേഷനായി കമ്പൈലർ ഉപയോഗിക്കുന്ന കർശനമായ അപരനാമ നിയമങ്ങൾ ലംഘിച്ചേക്കാം.
ഉയർന്ന ലെവലുകൾ ഉയർന്ന കൃത്യതയുമായി പൊരുത്തപ്പെടുന്നു (കുറച്ച് തെറ്റായ പോസിറ്റീവുകൾ). ഉയർന്ന തലങ്ങൾ
വഴിക്ക് സമാനമായി കൂടുതൽ പ്രയത്നവുമായി പൊരുത്തപ്പെടുന്നു -O പ്രവൃത്തികൾ. -വിസ്ട്രിക്റ്റ്-അപരനാമം is
തുല്യമായ -Wstrict-aliasing=3.

ലെവൽ 1: ഏറ്റവും ആക്രമണാത്മകവും വേഗതയേറിയതും ഏറ്റവും കൃത്യതയില്ലാത്തതും. ഉയർന്ന തലത്തിൽ ആയിരിക്കുമ്പോൾ ഉപയോഗപ്രദമാകും
മുന്നറിയിപ്പ് നൽകരുത് - fstrict-aliasing ഇപ്പോഴും കോഡ് ലംഘിക്കുന്നു, കാരണം അതിൽ വളരെ കുറച്ച് തെറ്റ് മാത്രമേ ഉള്ളൂ
നെഗറ്റീവ്. എന്നിരുന്നാലും, ഇതിന് ധാരാളം തെറ്റായ പോസിറ്റീവുകൾ ഉണ്ട്. എല്ലാ പോയിന്റർ പരിവർത്തനങ്ങൾക്കും മുന്നറിയിപ്പ് നൽകുന്നു
ഒരുപക്ഷേ പൊരുത്തപ്പെടാത്ത തരങ്ങൾക്കിടയിൽ, ഒരിക്കലും പരാമർശിച്ചിട്ടില്ലെങ്കിലും. മുന്നിൽ ഓടുന്നു
അവസാനം മാത്രം.

ലെവൽ 2: ആക്രമണാത്മകവും വേഗതയുള്ളതും വളരെ കൃത്യമല്ലാത്തതും. ഇനിയും പല തെറ്റായ പോസിറ്റീവുകളും ഉണ്ടായേക്കാം (അല്ല
ലെവൽ 1 വരെ, കുറച്ച് തെറ്റായ നെഗറ്റീവുകൾ (എന്നാൽ ലെവൽ 1 നേക്കാൾ കൂടുതലായിരിക്കാം).
ലെവൽ 1 ൽ നിന്ന് വ്യത്യസ്തമായി, ഒരു വിലാസം എടുക്കുമ്പോൾ മാത്രമേ മുന്നറിയിപ്പ് നൽകൂ. അപൂർണ്ണമായ തരങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു.
മുൻവശത്ത് മാത്രം ഓടുന്നു.

ലെവൽ 3 (ഇതിനായി സ്ഥിരസ്ഥിതി -വിസ്ട്രിക്റ്റ്-അപരനാമം): വളരെ കുറച്ച് തെറ്റായ പോസിറ്റീവുകളും കുറവും ഉണ്ടായിരിക്കണം
തെറ്റായ നെഗറ്റീവ്. ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ ലെവലുകൾ 1 അല്ലെങ്കിൽ 2 നേക്കാൾ അൽപ്പം സാവധാനം.
മുൻവശത്തെ പൊതുവായ pun+dereference പാറ്റേൺ ശ്രദ്ധിക്കുന്നു:
"*(int*)&some_float". ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ, അത് ബാക്ക് എൻഡിലും പ്രവർത്തിക്കുന്നു
ഫ്ലോ-സെൻസിറ്റീവ് പോയിന്റ്-ടു ഇൻഫർമേഷൻ ഉപയോഗിച്ച് ഒന്നിലധികം പ്രസ്താവന കേസുകൾ ഇത് കൈകാര്യം ചെയ്യുന്നു.
പരിവർത്തനം ചെയ്‌ത പോയിന്റർ ഒഴിവാക്കപ്പെടുമ്പോൾ മാത്രം മുന്നറിയിപ്പ് നൽകുന്നു. അപൂർണ്ണതയെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നില്ല
തരങ്ങൾ.

-സ്ട്രിക്റ്റ്-ഓവർഫ്ലോ
-Wstrict-overflow=n
എപ്പോൾ മാത്രമേ ഈ ഓപ്ഷൻ സജീവമാകൂ - fstrict-overflow സജീവമാണ്. കേസുകളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു
ഒപ്പിട്ട ഓവർഫ്ലോ ഇല്ല എന്ന അനുമാനത്തെ അടിസ്ഥാനമാക്കി കംപൈലർ ഒപ്റ്റിമൈസ് ചെയ്യുന്നു
സംഭവിക്കുക. കോഡ് കവിഞ്ഞൊഴുകാനിടയുള്ള എല്ലാ സാഹചര്യങ്ങളെയും കുറിച്ച് ഇത് മുന്നറിയിപ്പ് നൽകുന്നില്ല എന്നത് ശ്രദ്ധിക്കുക: അത്
കംപൈലർ ചില ഒപ്റ്റിമൈസേഷൻ നടപ്പിലാക്കുന്ന സന്ദർഭങ്ങളെക്കുറിച്ച് മാത്രമേ മുന്നറിയിപ്പ് നൽകൂ. അങ്ങനെ ഇത്
മുന്നറിയിപ്പ് ഒപ്റ്റിമൈസേഷൻ നിലയെ ആശ്രയിച്ചിരിക്കുന്നു.

ഒപ്പിട്ട ഓവർഫ്ലോ സംഭവിക്കുന്നില്ലെന്ന് അനുമാനിക്കുന്ന ഒരു ഒപ്റ്റിമൈസേഷൻ തികച്ചും സുരക്ഷിതമാണ്
ഉൾപ്പെട്ടിരിക്കുന്ന വേരിയബിളുകളുടെ മൂല്യങ്ങൾ ഓവർഫ്ലോ ഒരിക്കലും ചെയ്യാത്തതാണ്, വാസ്തവത്തിൽ,
സംഭവിക്കുക. അതിനാൽ ഈ മുന്നറിയിപ്പ് എളുപ്പത്തിൽ തെറ്റായ പോസിറ്റീവ് നൽകാം: കോഡിനെക്കുറിച്ചുള്ള മുന്നറിയിപ്പ്
അത് യഥാർത്ഥത്തിൽ ഒരു പ്രശ്നമല്ല. പ്രധാനപ്പെട്ട വിഷയങ്ങളിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ സഹായിക്കുന്നതിന്, നിരവധി മുന്നറിയിപ്പ്
ലെവലുകൾ നിർവചിച്ചിരിക്കുന്നു. നിർവചിക്കാത്ത ഒപ്പിട്ട ഓവർഫ്ലോ ഉപയോഗിക്കുന്നതിന് മുന്നറിയിപ്പുകളൊന്നും നൽകുന്നില്ല
ഒരു ലൂപ്പിന് എത്ര ആവർത്തനങ്ങൾ ആവശ്യമാണെന്ന് കണക്കാക്കുമ്പോൾ, പ്രത്യേകിച്ചും നിർണ്ണയിക്കുമ്പോൾ
ഒരു ലൂപ്പ് എക്സിക്യൂട്ട് ചെയ്യുമോ എന്ന്.

-Wstrict-overflow=1
സംശയാസ്പദമായതും ഒഴിവാക്കാൻ എളുപ്പമുള്ളതുമായ കേസുകളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. ഉദാഹരണത്തിന്, കൂടെ
- fstrict-overflow, കംപൈലർ "x + 1 > x" എന്നത് 1 ആയി ലളിതമാക്കുന്നു. ഈ ലെവൽ
-സ്ട്രിക്റ്റ്-ഓവർഫ്ലോ വഴി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - മതിൽ; ഉയർന്ന തലങ്ങൾ അല്ല, ആയിരിക്കണം
വ്യക്തമായി അഭ്യർത്ഥിച്ചു.

-Wstrict-overflow=2
ഒരു സ്ഥിരാങ്കവുമായി താരതമ്യപ്പെടുത്തൽ ലളിതമാക്കിയ മറ്റ് സാഹചര്യങ്ങളെക്കുറിച്ചും മുന്നറിയിപ്പ് നൽകുക. വേണ്ടി
ഉദാഹരണം: "abs (x) >= 0". എപ്പോൾ മാത്രമേ ഇത് ലളിതമാക്കാൻ കഴിയൂ - fstrict-overflow ഉണ്ട്
പ്രഭാവം, കാരണം "abs (INT_MIN)" "INT_MIN" എന്നതിലേക്ക് ഒഴുകുന്നു, അത് പൂജ്യത്തേക്കാൾ കുറവാണ്.
-സ്ട്രിക്റ്റ്-ഓവർഫ്ലോ (നിലയില്ലാതെ) സമാനമാണ് -Wstrict-overflow=2.

-Wstrict-overflow=3
താരതമ്യപ്പെടുത്തൽ ലളിതമാക്കിയ മറ്റ് സാഹചര്യങ്ങളെക്കുറിച്ചും മുന്നറിയിപ്പ് നൽകുക. ഉദാഹരണത്തിന്: "x + 1
> 1" എന്നത് "x > 0" ആയി ലളിതമാക്കിയിരിക്കുന്നു.

-Wstrict-overflow=4
മേൽപ്പറഞ്ഞ കേസുകളിൽ ഉൾപ്പെടാത്ത മറ്റ് ലളിതവൽക്കരണങ്ങളെക്കുറിച്ചും മുന്നറിയിപ്പ് നൽകുക. വേണ്ടി
ഉദാഹരണം: "(x * 10) / 5" എന്നത് "x * 2" ആയി ലളിതമാക്കിയിരിക്കുന്നു.

-Wstrict-overflow=5
കംപൈലർ സ്ഥിരാങ്കത്തിന്റെ വ്യാപ്തി കുറയ്ക്കുന്ന സാഹചര്യങ്ങളെക്കുറിച്ചും മുന്നറിയിപ്പ് നൽകുക
ഒരു താരതമ്യത്തിൽ ഉൾപ്പെടുന്നു. ഉദാഹരണത്തിന്: "x + 2 > y" എന്നത് "x + 1 >= y" ആയി ലളിതമാക്കിയിരിക്കുന്നു.
ഇത് ഏറ്റവും ഉയർന്ന മുന്നറിയിപ്പ് തലത്തിൽ മാത്രമേ റിപ്പോർട്ട് ചെയ്യപ്പെട്ടിട്ടുള്ളൂ, കാരണം ഈ ലളിതവൽക്കരണം
പല താരതമ്യങ്ങൾക്കും ബാധകമാണ്, അതിനാൽ ഈ മുന്നറിയിപ്പ് നില വളരെ വലിയ സംഖ്യ നൽകുന്നു
തെറ്റായ പോസിറ്റീവ്.

-Wsuggest-attribute=[ശുദ്ധമായ|കൺസ്ട്രക്റ്റർ|മടക്കം ഇല്ല|ഫോർമാറ്റ്]
ഒരു ആട്രിബ്യൂട്ട് ചേർക്കുന്നത് പ്രയോജനകരമായേക്കാവുന്ന സന്ദർഭങ്ങളിൽ മുന്നറിയിപ്പ് നൽകുക. നിലവിലുള്ള ആട്രിബ്യൂട്ടുകൾ
പിന്തുണയ്ക്കുന്നവ ചുവടെ പട്ടികപ്പെടുത്തിയിരിക്കുന്നു.

-Wsuggest-attribute=pure
-Wsuggest-attribute=const
-Wsuggest-attribute=noreturn
"പ്യുവർ", "കോൺസ്റ്റ്" അല്ലെങ്കിൽ ആട്രിബ്യൂട്ടുകൾക്കായി കാൻഡിഡേറ്റ് ആയേക്കാവുന്ന ഫംഗ്ഷനുകളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
"മടക്കം ഇല്ല". കംപൈലർ മറ്റ് കംപൈലേഷനിൽ ദൃശ്യമാകുന്ന ഫംഗ്ഷനുകൾക്ക് മാത്രമേ മുന്നറിയിപ്പ് നൽകൂ
യൂണിറ്റുകൾ അല്ലെങ്കിൽ ("ശുദ്ധമായ", "കോൺസ്റ്റ്" എന്നിവയുടെ കാര്യത്തിൽ) അത് പ്രവർത്തനമാണെന്ന് തെളിയിക്കാൻ കഴിയുന്നില്ലെങ്കിൽ
സാധാരണ തിരിച്ചുവരുന്നു. ഒരു ഫംഗ്‌ഷൻ അതിൽ അനന്തമായത് അടങ്ങിയിട്ടില്ലെങ്കിൽ സാധാരണഗതിയിൽ തിരിച്ചെത്തുന്നു
എറിഞ്ഞോ "അബോർട്ട്" വിളിച്ചുകൊണ്ടോ കുടുക്കിയാലോ അസാധാരണമായി ലൂപ്പ് ചെയ്യുക അല്ലെങ്കിൽ മടങ്ങുക. ഈ വിശകലനം
ഓപ്ഷൻ ആവശ്യമാണ് -fipa-pure-const, എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഉയർന്നത്.
ഉയർന്ന ഒപ്റ്റിമൈസേഷൻ ലെവലുകൾ വിശകലനത്തിന്റെ കൃത്യത മെച്ചപ്പെടുത്തുന്നു.

-Wsuggest-attribute=format
-Wmissing-format-attribute
"ഫോർമാറ്റ്" ആട്രിബ്യൂട്ടുകളുടെ സ്ഥാനാർത്ഥികളായേക്കാവുന്ന ഫംഗ്ഷൻ പോയിന്ററുകളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക.
ഇവ സാധ്യമായ സ്ഥാനാർത്ഥികൾ മാത്രമാണ്, കേവലമല്ല. ജിസിസി ഊഹിക്കുന്നു
അസൈൻമെന്റിൽ ഉപയോഗിക്കുന്ന "ഫോർമാറ്റ്" ആട്രിബ്യൂട്ടുകളുള്ള ഫംഗ്ഷൻ പോയിന്ററുകൾ,
ഇനീഷ്യലൈസേഷൻ, പാരാമീറ്റർ പാസിംഗ് അല്ലെങ്കിൽ റിട്ടേൺ സ്റ്റേറ്റ്‌മെന്റുകൾക്ക് അനുബന്ധം ഉണ്ടായിരിക്കണം
തത്ഫലമായുണ്ടാകുന്ന തരത്തിൽ "ഫോർമാറ്റ്" ആട്രിബ്യൂട്ട്. അതായത് ഇടതുവശം
അസൈൻമെന്റ് അല്ലെങ്കിൽ ഇനീഷ്യലൈസേഷൻ, പാരാമീറ്റർ വേരിയബിളിന്റെ തരം അല്ലെങ്കിൽ റിട്ടേൺ
അടങ്ങുന്ന ഫംഗ്‌ഷന്റെ തരത്തിന് യഥാക്രമം ഒരു "ഫോർമാറ്റ്" ആട്രിബ്യൂട്ട് ഉണ്ടായിരിക്കണം
മുന്നറിയിപ്പ് ഒഴിവാക്കാൻ.

"ഫോർമാറ്റിന്റെ" സ്ഥാനാർത്ഥികളായേക്കാവുന്ന ഫംഗ്‌ഷൻ നിർവചനങ്ങളെക്കുറിച്ചും GCC മുന്നറിയിപ്പ് നൽകുന്നു
ഗുണവിശേഷങ്ങൾ. വീണ്ടും, ഇത് സാധ്യമായ സ്ഥാനാർത്ഥികൾ മാത്രമാണ്. "ഫോർമാറ്റ്" എന്ന് ജിസിസി ഊഹിക്കുന്നു
ഒരു ഫംഗ്‌ഷനെ വിളിക്കുന്ന ഏതൊരു ഫംഗ്‌ഷനും ആട്രിബ്യൂട്ടുകൾ ഉചിതമായിരിക്കും
"vprintf" അല്ലെങ്കിൽ "vscanf", എന്നാൽ ഇത് എല്ലായ്‌പ്പോഴും അങ്ങനെ ആയിരിക്കണമെന്നില്ല, കൂടാതെ ചില പ്രവർത്തനങ്ങൾ
ഏത് "ഫോർമാറ്റ്" ആട്രിബ്യൂട്ടുകൾ ഉചിതമാണോ എന്ന് കണ്ടെത്തിയേക്കില്ല.

-അവസാന തരങ്ങൾ നിർദ്ദേശിക്കുക
തരം ആണെങ്കിൽ കോഡ് നിലവാരം മെച്ചപ്പെടുന്ന വെർച്വൽ രീതികളുള്ള തരങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
C++11 "ഫൈനൽ" സ്പെസിഫയർ ഉപയോഗിച്ച് പ്രഖ്യാപിച്ചു, അല്ലെങ്കിൽ സാധ്യമെങ്കിൽ a-ൽ പ്രഖ്യാപിച്ചു
അജ്ഞാത നാമമേഖല. ഇത് പോളിമോർഫിക്കിനെ കൂടുതൽ ആക്രമണാത്മകമായി വ്യതിചലിപ്പിക്കാൻ ജിസിസിയെ അനുവദിക്കുന്നു
വിളിക്കുന്നു. ലിങ്ക് ടൈം ഒപ്റ്റിമൈസേഷൻ ഉപയോഗിച്ച് ഈ മുന്നറിയിപ്പ് കൂടുതൽ ഫലപ്രദമാണ്
ക്ലാസ് ശ്രേണി ഗ്രാഫിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ കൂടുതൽ പൂർണ്ണമാണ്.

-അവസാന-രീതികൾ നിർദ്ദേശിക്കുക
കോഡ് നിലവാരം മെച്ചപ്പെടുന്ന വെർച്വൽ രീതികളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
C++11 "ഫൈനൽ" സ്പെസിഫയർ ഉപയോഗിച്ച് പ്രഖ്യാപിച്ചു, അല്ലെങ്കിൽ, സാധ്യമെങ്കിൽ, അതിന്റെ തരം പ്രഖ്യാപിച്ചു
ഒരു അജ്ഞാത നെയിംസ്പേസ് അല്ലെങ്കിൽ "ഫൈനൽ" സ്പെസിഫയർ. ഈ മുന്നറിയിപ്പ് കൂടുതൽ ഫലപ്രദമാണ്
ലിങ്ക് ടൈം ഒപ്റ്റിമൈസേഷനോടൊപ്പം, ക്ലാസ് ശ്രേണി ഗ്രാഫിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ എവിടെയാണ്
കൂടുതൽ പൂർണ്ണമായത്. എന്ന നിർദ്ദേശങ്ങൾ ആദ്യം പരിഗണിക്കാൻ ശുപാർശ ചെയ്യുന്നു
-അവസാന തരങ്ങൾ നിർദ്ദേശിക്കുക തുടർന്ന് പുതിയ വ്യാഖ്യാനങ്ങൾ ഉപയോഗിച്ച് പുനർനിർമ്മിക്കുക.

നിർദ്ദേശിക്കുക-അസാധുവാക്കുക
ഓവർറൈഡ് കീവേഡ് ഉപയോഗിച്ച് അടയാളപ്പെടുത്തിയിട്ടില്ലാത്ത വെർച്വൽ ഫംഗ്‌ഷനുകളെ മറികടക്കുന്നതിനെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക.

-വാറേ-ബൗണ്ടുകൾ
-വാറേ-ബൗണ്ട്സ്=n
എപ്പോൾ മാത്രമേ ഈ ഓപ്ഷൻ സജീവമാകൂ -ftree-vrp സജീവമാണ് (ഇതിനായി സ്ഥിരസ്ഥിതി -O2 കൂടാതെ മുകളിൽ). അത്
എല്ലായ്‌പ്പോഴും പരിധിക്ക് പുറത്തുള്ള അറേകളിലേക്കുള്ള സബ്‌സ്‌ക്രിപ്‌റ്റുകളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു. ഈ മുന്നറിയിപ്പ്
പ്രാപ്തമാക്കിയത് - മതിൽ.

-വാറേ-ബൗണ്ടുകൾ=1
യുടെ മുന്നറിയിപ്പ് നിലയാണിത് -വാറേ-ബൗണ്ടുകൾ കൂടാതെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - മതിൽ; ഉയർന്ന തലങ്ങൾ
അല്ല, വ്യക്തമായി അഭ്യർത്ഥിക്കേണ്ടതാണ്.

-വാറേ-ബൗണ്ടുകൾ=2
ഈ മുന്നറിയിപ്പ് ലെവൽ, പരിധിക്ക് പുറത്തുള്ള അറേകൾക്കുള്ള പ്രവേശനത്തെക്കുറിച്ചും മുന്നറിയിപ്പ് നൽകുന്നു
ഒരു സ്ട്രക്‌റ്റും പോയിന്ററുകൾ വഴി ആക്‌സസ് ചെയ്‌ത അറേകൾക്കായും. ഈ മുന്നറിയിപ്പ് നില നൽകിയേക്കാം
തെറ്റായ പോസിറ്റീവുകളുടെ വലിയ സംഖ്യയും സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കുകയും ചെയ്യുന്നു.

-Wbool- താരതമ്യം ചെയ്യുക
വ്യത്യസ്തമായ ഒരു പൂർണ്ണസംഖ്യ മൂല്യവുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ ബൂളിയൻ പദപ്രയോഗത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
"ശരി തെറ്റ്". ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന താരതമ്യം എല്ലായ്പ്പോഴും തെറ്റാണ്:

int n = 5;
...
എങ്കിൽ ((n > 1) == 2) { ...}

ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-ഒഴിവാക്കിയത്-യോഗ്യതകൾ (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
പോയിന്ററുകളിലെ ടൈപ്പ് ക്വാളിഫയറുകൾ നിരസിക്കുകയാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകരുത്. സാധാരണഗതിയിൽ, ദി
ഒരു "char എടുക്കുന്ന ഒരു ഫംഗ്ഷനിലേക്ക് ഒരു "const char *" വേരിയബിൾ കൈമാറിയാൽ കംപൈലർ മുന്നറിയിപ്പ് നൽകുന്നു
*" പാരാമീറ്റർ. അത്തരമൊരു മുന്നറിയിപ്പ് അടിച്ചമർത്താൻ ഈ ഓപ്ഷൻ ഉപയോഗിക്കാം.

-Wno-discorded-array-qualifiers (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
പോയിന്റർ ടാർഗെറ്റായ അറേകളിൽ ടൈപ്പ് ക്വാളിഫയറുകൾ ഉണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകരുത്
ഉപേക്ഷിച്ചു. സാധാരണഗതിയിൽ, "const int (*)[]" വേരിയബിൾ കൈമാറുകയാണെങ്കിൽ കംപൈലർ മുന്നറിയിപ്പ് നൽകുന്നു
"int (*)[]" പാരാമീറ്റർ എടുക്കുന്ന ഒരു ഫംഗ്‌ഷൻ. അടിച്ചമർത്താൻ ഈ ഓപ്ഷൻ ഉപയോഗിക്കാം
അത്തരമൊരു മുന്നറിയിപ്പ്.

-പൊരുത്തമില്ലാത്ത-പോയിന്റർ തരങ്ങൾ (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
പൊരുത്തമില്ലാത്ത തരങ്ങളുള്ള പോയിന്ററുകൾക്കിടയിൽ ഒരു പരിവർത്തനം ഉണ്ടാകുമ്പോൾ മുന്നറിയിപ്പ് നൽകരുത്.
കവർ ചെയ്യാത്ത കേസുകൾക്കാണ് ഈ മുന്നറിയിപ്പ് -വിനോ-പോയിന്റർ-സൈൻ, ഇത് പോയിന്ററിനായി മുന്നറിയിപ്പ് നൽകുന്നു
വ്യത്യസ്‌ത ഒപ്പ് വച്ചുള്ള വാദം പാസുചെയ്യൽ അല്ലെങ്കിൽ അസൈൻമെന്റ്.

-Wno-int-പരിവർത്തനം (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
പൊരുത്തമില്ലാത്ത പൂർണ്ണസംഖ്യ പോയിന്ററിലേക്കും പോയിന്ററിലേക്കുള്ള പൂർണ്ണസംഖ്യയിലേക്കുമുള്ള പരിവർത്തനങ്ങളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകരുത്.
ഈ മുന്നറിയിപ്പ് പരോക്ഷമായ പരിവർത്തനങ്ങളെ കുറിച്ചാണ്; വ്യക്തമായ പരിവർത്തനങ്ങൾക്ക് മുന്നറിയിപ്പുകൾ
-Wno-int-to-pointer-cast ഒപ്പം -Wno-pointer-to-int-cast ഉപയോഗിച്ചേക്കാം.

-Wno-div-by-zero
പൂജ്യം കൊണ്ട് കംപൈൽ-ടൈം പൂർണ്ണസംഖ്യ വിഭജനത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകരുത്. ഫ്ലോട്ടിംഗ് പോയിന്റ് ഡിവിഷൻ പ്രകാരം
പൂജ്യത്തെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നില്ല, കാരണം ഇത് അനന്തതകൾ നേടുന്നതിനുള്ള നിയമാനുസൃതമായ മാർഗമാണ്
NaNs.

-ഡബ്ല്യുസിസ്റ്റം-ഹെഡറുകൾ
സിസ്റ്റം ഹെഡർ ഫയലുകളിൽ കാണുന്ന നിർമ്മാണങ്ങൾക്കുള്ള മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ പ്രിന്റ് ചെയ്യുക. നിന്നുള്ള മുന്നറിയിപ്പുകൾ
സിസ്റ്റം ഹെഡറുകൾ സാധാരണയായി അടിച്ചമർത്തപ്പെടുന്നു, അവ സാധാരണയായി ചെയ്യില്ല എന്ന അനുമാനത്തിൽ
യഥാർത്ഥ പ്രശ്‌നങ്ങൾ സൂചിപ്പിക്കുകയും കംപൈലർ ഔട്ട്‌പുട്ട് വായിക്കാൻ പ്രയാസകരമാക്കുകയും ചെയ്യും. ഉപയോഗിക്കുന്നത്
ഈ കമാൻഡ്-ലൈൻ ഓപ്‌ഷൻ GCC-യോട് സിസ്റ്റം ഹെഡറുകളിൽ നിന്ന് മുന്നറിയിപ്പുകൾ പുറപ്പെടുവിക്കാൻ പറയുന്നു
ഉപയോക്തൃ കോഡിൽ സംഭവിച്ചു. എന്നിരുന്നാലും, ഉപയോഗിക്കുന്നത് ശ്രദ്ധിക്കുക - മതിൽ ഈ ഓപ്ഷനുമായി സംയോജിച്ച്
ചെയ്യുന്നവൻ അല്ല സിസ്റ്റം ഹെഡറുകളിലെ അജ്ഞാതമായ പ്രയോഗങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക--- അതിനായി, -അറിയപ്പെടാത്ത-പ്രാഗ്മകൾ
ഉപയോഗിക്കുകയും വേണം.

-വാട്രാംപോളിൻ
നെസ്റ്റഡ് ഫംഗ്‌ഷനുകളിലേക്കുള്ള പോയിന്ററുകൾക്കായി സൃഷ്‌ടിച്ച ട്രാംപോളിനുകളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. ഒരു ട്രാംപോളിൻ എ
അഡ്രസ് ചെയ്യുമ്പോൾ സ്റ്റാക്കിൽ റൺ ടൈമിൽ സൃഷ്‌ടിച്ച ചെറിയ ഡാറ്റ അല്ലെങ്കിൽ കോഡ്
നെസ്റ്റഡ് ഫംഗ്‌ഷന്റെ ഒരു നെസ്റ്റഡ് ഫംഗ്‌ഷൻ എടുക്കുന്നു, കൂടാതെ നെസ്റ്റഡ് ഫംഗ്‌ഷനെ പരോക്ഷമായി വിളിക്കാൻ ഉപയോഗിക്കുന്നു.
ചില ടാർഗെറ്റുകൾക്ക്, ഇത് ഡാറ്റ കൊണ്ട് മാത്രം നിർമ്മിച്ചതാണ്, അതിനാൽ പ്രത്യേക ചികിത്സ ആവശ്യമില്ല.
പക്ഷേ, മിക്ക ടാർഗെറ്റുകൾക്കും, ഇത് കോഡ് ഉപയോഗിച്ചാണ് നിർമ്മിച്ചിരിക്കുന്നത്, അതിനാൽ സ്റ്റാക്ക് നിർമ്മിക്കേണ്ടതുണ്ട്
പ്രോഗ്രാം ശരിയായി പ്രവർത്തിക്കുന്നതിന് എക്സിക്യൂട്ടബിൾ.

-Wfloat-തുല്യം
തുല്യതാ താരതമ്യങ്ങളിൽ ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യങ്ങൾ ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക.

ഇതിന് പിന്നിലെ ആശയം ചിലപ്പോൾ ഇത് സൗകര്യപ്രദമാണ് (പ്രോഗ്രാമർക്ക്) എന്നതാണ്
ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യങ്ങളെ അനന്തമായ കൃത്യമായ യഥാർത്ഥ സംഖ്യകളിലേക്കുള്ള ഏകദേശ കണക്കുകളായി പരിഗണിക്കുക.
നിങ്ങൾ ഇത് ചെയ്യുകയാണെങ്കിൽ, നിങ്ങൾ കണക്കുകൂട്ടേണ്ടതുണ്ട് (കോഡ് വിശകലനം ചെയ്തുകൊണ്ട്, അല്ലെങ്കിൽ ചിലതിൽ
മറ്റൊരു വിധത്തിൽ) കമ്പ്യൂട്ടേഷൻ അവതരിപ്പിക്കുന്ന പരമാവധി അല്ലെങ്കിൽ സാധ്യതയുള്ള പരമാവധി പിശക്, കൂടാതെ
താരതമ്യങ്ങൾ നടത്തുമ്പോൾ അത് അനുവദിക്കുക (ഒപ്പം ഔട്ട്പുട്ട് ഉൽപ്പാദിപ്പിക്കുമ്പോൾ, എന്നാൽ അത് a
വ്യത്യസ്ത പ്രശ്നം). പ്രത്യേകിച്ചും, തുല്യതയ്ക്കായി പരിശോധിക്കുന്നതിനുപകരം, നിങ്ങൾ പരിശോധിക്കണം
രണ്ട് മൂല്യങ്ങൾക്കും ഓവർലാപ്പ് ചെയ്യുന്ന ശ്രേണികൾ ഉണ്ടോ എന്ന് കാണാൻ; കൂടാതെ ഇത് ചെയ്യുന്നത്
റിലേഷണൽ ഓപ്പറേറ്റർമാർ, അതിനാൽ സമത്വ താരതമ്യങ്ങൾ ഒരുപക്ഷേ തെറ്റിദ്ധരിക്കപ്പെടുന്നു.

- പരമ്പരാഗത (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
പരമ്പരാഗത, ഐഎസ്ഒ സി എന്നിവയിൽ വ്യത്യസ്തമായി പെരുമാറുന്ന ചില നിർമ്മിതികളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
പരമ്പരാഗത സി തത്തുല്യവും കൂടാതെ/അല്ലെങ്കിൽ പ്രശ്‌നകരവുമായ ISO C നിർമ്മിതികളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
ഒഴിവാക്കേണ്ട നിർമ്മാണങ്ങൾ.

* മാക്രോ ബോഡിയിലെ സ്ട്രിംഗ് ലിറ്ററലുകളിൽ ദൃശ്യമാകുന്ന മാക്രോ പാരാമീറ്ററുകൾ. ഇൻ
പരമ്പരാഗത സി മാക്രോ റീപ്ലേസ്‌മെന്റ് സ്ട്രിംഗ് ലിറ്ററലുകൾക്കുള്ളിൽ നടക്കുന്നു, എന്നാൽ ഐഎസ്ഒ സിയിൽ
അത് ചെയുനില്ല.

* പരമ്പരാഗത സിയിൽ, ചില പ്രീപ്രോസസർ നിർദ്ദേശങ്ങൾ നിലവിലില്ല. പരമ്പരാഗത
പ്രീപ്രോസസറുകൾ ഒരു ലൈൻ ഒരു നിർദ്ദേശമായി മാത്രമേ കണക്കാക്കൂ # കോളത്തിൽ പ്രത്യക്ഷപ്പെട്ടു
1 വരിയിൽ. അതുകൊണ്ടു - പരമ്പരാഗത പരമ്പരാഗത സി നിർദ്ദേശങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു
മനസ്സിലാക്കുന്നു എന്നാൽ അവഗണിക്കുന്നു കാരണം # എന്നതിൽ ആദ്യ കഥാപാത്രമായി പ്രത്യക്ഷപ്പെടുന്നില്ല
വര. നിങ്ങൾക്ക് മനസ്സിലാകാത്ത "#പ്രാഗ്മ" പോലുള്ള നിർദ്ദേശങ്ങൾ മറയ്ക്കാനും ഇത് നിർദ്ദേശിക്കുന്നു
അവ ഇൻഡന്റുചെയ്യുന്നതിലൂടെ പരമ്പരാഗത സി. ചില പരമ്പരാഗത പ്രയോഗങ്ങൾ അങ്ങനെയല്ല
"#elif" തിരിച്ചറിയുക, അതിനാൽ ഇത് പൂർണ്ണമായും ഒഴിവാക്കാൻ ഈ ഓപ്ഷൻ നിർദ്ദേശിക്കുന്നു.

* ആർഗ്യുമെന്റുകളില്ലാതെ ദൃശ്യമാകുന്ന ഫംഗ്‌ഷൻ പോലുള്ള മാക്രോ.

* യുണറി പ്ലസ് ഓപ്പറേറ്റർ.

* ദി U പൂർണ്ണസംഖ്യ സ്ഥിരമായ പ്രത്യയം, അല്ലെങ്കിൽ F or L ഫ്ലോട്ടിംഗ് പോയിന്റ് സ്ഥിരമായ പ്രത്യയങ്ങൾ.
(പരമ്പരാഗത സി പിന്തുണയ്ക്കുന്നു L പൂർണ്ണസംഖ്യകളുടെ സ്ഥിരാങ്കങ്ങളുടെ പ്രത്യയം.) ശ്രദ്ധിക്കുക, ഇവ
മിക്ക ആധുനിക സിസ്റ്റങ്ങളുടെയും സിസ്റ്റം ഹെഡറുകളിൽ നിർവചിച്ചിരിക്കുന്ന മാക്രോകളിൽ പ്രത്യയങ്ങൾ പ്രത്യക്ഷപ്പെടുന്നു,
ഉദാ _MIN/_MAX "ഇൽ മാക്രോകൾ ". ഉപയോക്തൃ കോഡിൽ ഈ മാക്രോകളുടെ ഉപയോഗം ഉണ്ടാകാം
സാധാരണഗതിയിൽ വ്യാജമായ മുന്നറിയിപ്പുകളിലേക്കാണ് നയിക്കുന്നത്, എന്നിരുന്നാലും ജിസിസിയുടെ ഇന്റഗ്രേറ്റഡ് പ്രീപ്രൊസസ്സർ ഉണ്ട്
ഇത്തരം സന്ദർഭങ്ങളിൽ മുന്നറിയിപ്പ് ഒഴിവാക്കാൻ മതിയായ സന്ദർഭം.

* ഒരു ഫംഗ്‌ഷൻ ഒരു ബ്ലോക്കിൽ എക്‌സ്‌റ്റേണൽ ആയി പ്രഖ്യാപിക്കുകയും അതിന്റെ അവസാനത്തിന് ശേഷം ഉപയോഗിക്കുകയും ചെയ്യുന്നു
തടയുക.

* ഒരു "സ്വിച്ച്" പ്രസ്താവനയ്ക്ക് "ലോംഗ്" എന്ന തരത്തിലുള്ള ഒരു ഓപ്പറണ്ടുണ്ട്.

* ഒരു നോൺ-"സ്റ്റാറ്റിക്" ഫംഗ്‌ഷൻ ഡിക്ലറേഷൻ "സ്റ്റാറ്റിക്" ഒന്നിനെ പിന്തുടരുന്നു. ഈ നിർമ്മാണം അല്ല
ചില പരമ്പരാഗത സി കമ്പൈലർമാർ അംഗീകരിച്ചു.

* ഒരു പൂർണ്ണസംഖ്യ സ്ഥിരാങ്കത്തിന്റെ ISO തരത്തിന് അതിൽ നിന്ന് വ്യത്യസ്തമായ വീതിയോ സൈൻഡ്‌നെസ് ഉണ്ട്
പരമ്പരാഗത തരം. സ്ഥിരാങ്കത്തിന്റെ അടിസ്ഥാനം പത്താണെങ്കിൽ മാത്രമേ ഈ മുന്നറിയിപ്പ് നൽകൂ.
അതായത് ബിറ്റ് പാറ്റേണുകളെ സാധാരണയായി പ്രതിനിധീകരിക്കുന്ന ഹെക്സാഡെസിമൽ അല്ലെങ്കിൽ ഒക്ടൽ മൂല്യങ്ങൾ അല്ല
കുറിച്ച് മുന്നറിയിപ്പ് നൽകി.

* ISO സ്ട്രിംഗ് കോൺകാറ്റനേഷന്റെ ഉപയോഗം കണ്ടെത്തി.

* ഓട്ടോമാറ്റിക് അഗ്രഗേറ്റുകളുടെ ആരംഭം.

* ലേബലുകളുമായി ഐഡന്റിഫയർ വൈരുദ്ധ്യങ്ങൾ. പരമ്പരാഗത സിക്ക് ഒരു പ്രത്യേക നെയിംസ്പേസ് ഇല്ല
ലേബലുകൾ.

* യൂണിയനുകളുടെ തുടക്കം. ഇനിഷ്യലൈസർ പൂജ്യമാണെങ്കിൽ, മുന്നറിയിപ്പ് ഒഴിവാക്കപ്പെടും.
ഉപയോക്തൃ കോഡിൽ സീറോ ഇനീഷ്യലൈസർ ദൃശ്യമാകുമെന്ന അനുമാനത്തിലാണ് ഇത് ചെയ്യുന്നത്
ഇനീഷ്യലൈസർ മുന്നറിയിപ്പുകൾ നഷ്‌ടപ്പെടാതിരിക്കാനും ആശ്രയിക്കാനും "__STDC__" എന്നതിൽ വ്യവസ്ഥ ചെയ്യുന്നു
പരമ്പരാഗത C കേസിൽ പൂജ്യത്തിലേക്കുള്ള ഡിഫോൾട്ട് സമാരംഭം.

* സ്ഥിര/ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യങ്ങൾക്കിടയിലും തിരിച്ചും പ്രോട്ടോടൈപ്പുകൾ വഴിയുള്ള പരിവർത്തനങ്ങൾ. ദി
പരമ്പരാഗത സി ഉപയോഗിച്ച് കംപൈൽ ചെയ്യുമ്പോൾ ഈ പ്രോട്ടോടൈപ്പുകളുടെ അഭാവം ഗുരുതരമായ കാരണങ്ങളാണ്
പ്രശ്നങ്ങൾ. ഇത് സാധ്യമായ പരിവർത്തന മുന്നറിയിപ്പുകളുടെ ഒരു ഉപവിഭാഗമാണ്; മുഴുവൻ സെറ്റിനായി
ഉപയോഗം പരമ്പരാഗത-പരിവർത്തനം.

* ISO C ശൈലി ഫംഗ്‌ഷൻ നിർവചനങ്ങളുടെ ഉപയോഗം. ഈ മുന്നറിയിപ്പ് മനപ്പൂർവമാണ് അല്ല ഇഷ്യൂചെയ്തു
ഈ ഐഎസ്ഒ സി സവിശേഷതകൾ കാരണം പ്രോട്ടോടൈപ്പ് ഡിക്ലറേഷനുകൾ അല്ലെങ്കിൽ വേരിയാഡിക് ഫംഗ്ഷനുകൾക്കായി
ലിബിബർട്ടിയുടെ പരമ്പരാഗത സി കോംപാറ്റിബിലിറ്റി മാക്രോകൾ ഉപയോഗിക്കുമ്പോൾ നിങ്ങളുടെ കോഡിൽ ദൃശ്യമാകും,
"PARAMS", "VPARAMS" എന്നിവ. നെസ്റ്റഡ് ഫംഗ്‌ഷനുകൾക്കും ഈ മുന്നറിയിപ്പ് ഒഴിവാക്കിയിരിക്കുന്നു
കാരണം ആ സവിശേഷത ഇതിനകം തന്നെ ഒരു GCC വിപുലീകരണമാണ്, അതിനാൽ ഇതിന് പ്രസക്തമല്ല
പരമ്പരാഗത സി അനുയോജ്യത.

പരമ്പരാഗത-പരിവർത്തനം (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ഒരു പ്രോട്ടോടൈപ്പ് സംഭവിക്കുന്നതിൽ നിന്ന് വ്യത്യസ്തമായ ഒരു തരം പരിവർത്തനത്തിന് കാരണമാകുകയാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
ഒരു പ്രോട്ടോടൈപ്പിന്റെ അഭാവത്തിൽ അതേ വാദത്തിലേക്ക്. യുടെ പരിവർത്തനങ്ങൾ ഇതിൽ ഉൾപ്പെടുന്നു
ഫ്ലോട്ടിംഗിലേക്കും തിരിച്ചും നിശ്ചിത പോയിന്റ്, വീതി മാറ്റുന്ന പരിവർത്തനങ്ങൾ അല്ലെങ്കിൽ
ഡിഫോൾട്ട് പ്രമോഷന്റെ അതേ അവസരത്തിലൊഴികെ ഒരു നിശ്ചിത പോയിന്റ് ആർഗ്യുമെന്റിന്റെ ഒപ്പ്.

-പ്രസ്താവനയ്ക്ക് ശേഷമുള്ള പ്രസ്താവന (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ഒരു ബ്ലോക്കിലെ ഒരു പ്രസ്താവനയ്ക്ക് ശേഷം ഒരു പ്രഖ്യാപനം കണ്ടെത്തുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക. ഈ നിർമ്മാണം, അറിയപ്പെടുന്നത്
C++-ൽ നിന്ന്, ISO C99-നൊപ്പം അവതരിപ്പിച്ചു, ഇത് GCC-യിൽ സ്ഥിരസ്ഥിതിയായി അനുവദനീയമാണ്. ഇതല്ല
ISO C90 പിന്തുണയ്ക്കുന്നു.

-വുണ്ടെഫ്
ഒരു "#if" നിർദ്ദേശത്തിൽ നിർവചിക്കാത്ത ഐഡന്റിഫയർ മൂല്യനിർണ്ണയം നടത്തുകയാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക.

-Wno-endif-ലേബലുകൾ
ഒരു "#else" അല്ലെങ്കിൽ "#endif" എന്നതിന് ശേഷം ടെക്‌സ്‌റ്റ് വരുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകരുത്.

- ഷാഡോ
ഒരു ലോക്കൽ വേരിയബിളോ ടൈപ്പ് ഡിക്ലറേഷനോ മറ്റൊരു വേരിയബിളിനെ നിഴൽ വീഴ്ത്തുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക,
പാരാമീറ്റർ, തരം, ക്ലാസ് അംഗം (സി++ ൽ), അല്ലെങ്കിൽ ഇൻസ്‌റ്റൻസ് വേരിയബിൾ (ഒബ്ജക്റ്റീവ്-സിയിൽ) അല്ലെങ്കിൽ
ഒരു ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷൻ നിഴൽ വീഴുമ്പോഴെല്ലാം. C++ ൽ, a ആണെങ്കിൽ കംപൈലർ മുന്നറിയിപ്പ് നൽകുന്നു എന്നത് ശ്രദ്ധിക്കുക
ലോക്കൽ വേരിയബിൾ നിഴലുകൾ ഒരു വ്യക്തമായ ടൈപ്പ്ഡെഫാണ്, പക്ഷേ അത് ഒരു struct/class/enum ഷാഡോ ആണെങ്കിൽ അല്ല.

-Wno-shadow-ivar (ലക്ഷ്യം-സി മാത്രം)
ഒരു ലോക്കൽ വേരിയബിൾ ഒബ്ജക്റ്റീവ്-സിയിൽ ഒരു ഇൻസ്‌റ്റൻസ് വേരിയബിളിനെ നിഴലാക്കുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകരുത്.
രീതി.

-Wlarger- than=ലെൻ
ഒരു വസ്തുവിനെക്കാൾ വലുതാകുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക ലെൻ ബൈറ്റുകൾ നിർവചിച്ചിരിക്കുന്നു.

-Wframe-larger-than=ലെൻ
ഫംഗ്‌ഷൻ ഫ്രെയിമിന്റെ വലുപ്പം അതിലും വലുതാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക ലെൻ ബൈറ്റുകൾ. കണക്കുകൂട്ടൽ നടത്തി
സ്റ്റാക്ക് ഫ്രെയിമിന്റെ വലുപ്പം നിർണ്ണയിക്കുന്നത് ഏകദേശവും യാഥാസ്ഥിതികവുമല്ല. യഥാർത്ഥ
ആവശ്യകതകൾ കുറച്ചുകൂടി കൂടുതലായിരിക്കാം ലെൻ നിങ്ങൾക്ക് മുന്നറിയിപ്പ് ലഭിച്ചില്ലെങ്കിൽ പോലും. ഇൻ
കൂടാതെ, "അലോക്ക", വേരിയബിൾ-ലെങ്ത്ത് അറേകൾ അല്ലെങ്കിൽ അനുബന്ധമായി അനുവദിച്ചിട്ടുള്ള ഏതെങ്കിലും സ്ഥലം
എ ഇഷ്യൂ ചെയ്യണോ വേണ്ടയോ എന്ന് തീരുമാനിക്കുമ്പോൾ കംപൈലർ കൺസ്ട്രക്‌റ്റുകൾ ഉൾപ്പെടുത്തിയിട്ടില്ല
മുന്നറിയിപ്പ്.

-Wno-free-nonheap-object
കൂമ്പാരത്തിൽ അനുവദിച്ചിട്ടില്ലാത്ത ഒരു വസ്തുവിനെ സ്വതന്ത്രമാക്കാൻ ശ്രമിക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകരുത്.

-Wstack-usage=ലെൻ
ഒരു ഫംഗ്‌ഷന്റെ സ്‌റ്റാക്ക് ഉപയോഗം ഇതിലും വലുതായിരിക്കുമെന്ന് മുന്നറിയിപ്പ് നൽകുക ലെൻ ബൈറ്റുകൾ. കണക്കുകൂട്ടൽ
സ്റ്റാക്ക് ഉപയോഗം യാഥാസ്ഥിതികമാണെന്ന് നിർണ്ണയിക്കാൻ ചെയ്തു. "അലോക്ക" വഴി അനുവദിച്ചിട്ടുള്ള ഏത് സ്ഥലവും,
വേരിയബിൾ-ലെങ്ത് അറേകൾ അല്ലെങ്കിൽ അനുബന്ധ നിർമ്മാണങ്ങൾ കംപൈലർ എപ്പോൾ ഉൾപ്പെടുത്തുന്നു
മുന്നറിയിപ്പ് നൽകണോ വേണ്ടയോ എന്ന് തീരുമാനിക്കുന്നു.

എന്നതിന്റെ ഔട്ട്‌പുട്ടിന് അനുസൃതമാണ് സന്ദേശം -fstack-ഉപയോഗം.

* സ്റ്റാക്ക് ഉപയോഗം പൂർണ്ണമായും സ്റ്റാറ്റിക് ആണെങ്കിലും നിർദ്ദിഷ്ട തുക കവിയുന്നുവെങ്കിൽ, ഇത്:

മുന്നറിയിപ്പ്: സ്റ്റാക്ക് ഉപയോഗം 1120 ബൈറ്റുകൾ ആണ്

* സ്റ്റാക്ക് ഉപയോഗം (ഭാഗികമായി) ചലനാത്മകമാണെങ്കിലും പരിമിതമാണെങ്കിൽ, ഇത്:

മുന്നറിയിപ്പ്: സ്റ്റാക്ക് ഉപയോഗം 1648 ബൈറ്റുകൾ ആയിരിക്കാം

* സ്റ്റാക്ക് ഉപയോഗം (ഭാഗികമായി) ചലനാത്മകവും പരിധിയില്ലാത്തതുമാണെങ്കിൽ, ഇത്:

മുന്നറിയിപ്പ്: സ്റ്റാക്ക് ഉപയോഗം പരിധിയില്ലാത്തതായിരിക്കാം

-Wunsafe-loop-optimizations
കംപൈലറിന് ഒന്നും അനുമാനിക്കാൻ കഴിയാത്തതിനാൽ ലൂപ്പ് ഒപ്റ്റിമൈസ് ചെയ്യാൻ കഴിയുന്നില്ലെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
ലൂപ്പ് സൂചികകളുടെ അതിരുകൾ. കൂടെ -funsafe-loop-optimizations കമ്പൈലർ ആണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
അത്തരം അനുമാനങ്ങൾ ഉണ്ടാക്കുന്നു.

-Wno-pedantic-ms-format (MinGW ലക്ഷ്യങ്ങൾ മാത്രം)
സംയോജിച്ച് ഉപയോഗിക്കുമ്പോൾ - ഫോർമാറ്റ് ഒപ്പം -പെഡാന്റിക് ഗ്നു വിപുലീകരണങ്ങളില്ലാതെ, ഇത്
ഐഎസ്ഒ അല്ലാത്ത "printf" / "scanf" ഫോർമാറ്റ് വീതി സ്പെസിഫയറുകളെക്കുറിച്ചുള്ള മുന്നറിയിപ്പുകൾ ഓപ്ഷൻ പ്രവർത്തനരഹിതമാക്കുന്നു
"I32", "I64", "I" എന്നിവ MS റൺടൈമിനെ ആശ്രയിച്ചിരിക്കുന്ന വിൻഡോസ് ടാർഗെറ്റുകളിൽ ഉപയോഗിക്കുന്നു.

-വ്പോയിന്റർ-അരിത്ത്
ഒരു ഫംഗ്‌ഷൻ തരത്തിന്റെ "വലിപ്പം" അല്ലെങ്കിൽ "ശൂന്യത" എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്ന എന്തിനെക്കുറിച്ചും മുന്നറിയിപ്പ് നൽകുക. ഗ്നു സി
"അസാധു *" ഉപയോഗിച്ച് കണക്കുകൂട്ടലുകളുടെ സൗകര്യാർത്ഥം ഈ തരങ്ങൾക്ക് 1 വലുപ്പം നൽകുന്നു
ഫംഗ്‌ഷനുകളിലേക്കുള്ള പോയിന്ററുകളും പോയിന്ററുകളും. C++-ൽ, ഒരു ഗണിത പ്രവർത്തനവും മുന്നറിയിപ്പ് നൽകുക
"NULL" ഉൾപ്പെടുന്നു. ഈ മുന്നറിയിപ്പും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -Wpedantic.

-ടൈപ്പ്-പരിധികൾ
ഒരു താരതമ്യത്തിന്റെ പരിമിതമായ പരിധി കാരണം എല്ലായ്പ്പോഴും ശരിയോ എല്ലായ്‌പ്പോഴും തെറ്റോ ആണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
ഡാറ്റ തരം, എന്നാൽ സ്ഥിരമായ എക്സ്പ്രഷനുകൾക്ക് മുന്നറിയിപ്പ് നൽകരുത്. ഉദാഹരണത്തിന്, ഒപ്പിട്ടിട്ടില്ലെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
വേരിയബിളിനെ പൂജ്യവുമായി താരതമ്യം ചെയ്യുന്നത് "<" അല്ലെങ്കിൽ ">=". ഈ മുന്നറിയിപ്പും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
-വെക്സ്ട്ര.

-Wbad-function-cast (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ഒരു ഫംഗ്‌ഷൻ കോൾ പൊരുത്തപ്പെടാത്ത തരത്തിലേക്ക് കാസ്‌റ്റ് ചെയ്യുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക. ഉദാഹരണത്തിന്, ഒരു കോളുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
ഒരു ഫംഗ്‌ഷനിലേക്ക് തിരികെ നൽകുന്ന ഒരു പൂർണ്ണസംഖ്യ തരം ഒരു പോയിന്റർ തരത്തിലേക്ക് കാസ്‌റ്റ് ചെയ്യുന്നു.

-Wc90-c99-compat (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ISO C90-ൽ ഇല്ലെങ്കിലും ISO C99-ൽ ഉള്ള ഫീച്ചറുകളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. ഉദാഹരണത്തിന്,
വേരിയബിൾ ലെങ്ത് അറേകൾ, "ലോംഗ് ലോംഗ്" തരം, "ബൂൾ" തരം, സംയുക്തം എന്നിവയുടെ ഉപയോഗത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
അക്ഷരങ്ങൾ, നിയുക്ത ഇനീഷ്യലൈസറുകൾ തുടങ്ങിയവ. ഈ ഓപ്ഷൻ സ്വതന്ത്രമാണ്
സ്റ്റാൻഡേർഡ് മോഡ്. "__extension__" എന്ന പദപ്രയോഗത്തിൽ മുന്നറിയിപ്പുകൾ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.

-Wc99-c11-compat (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ISO C99-ൽ ഇല്ലെങ്കിലും ISO C11-ൽ ഉള്ള ഫീച്ചറുകളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. ഉദാഹരണത്തിന്,
അജ്ഞാത ഘടനകളുടെയും യൂണിയനുകളുടെയും ഉപയോഗത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക, "_Atomic" തരം യോഗ്യത,
"_Thread_local" സ്റ്റോറേജ്-ക്ലാസ് സ്പെസിഫയർ, "_Alignas" സ്പെസിഫയർ, "Alignof" ഓപ്പറേറ്റർ,
"_ജനറിക്" കീവേഡ്, തുടങ്ങിയവ. ഈ ഓപ്ഷൻ സ്റ്റാൻഡേർഡ് മോഡിൽ നിന്ന് സ്വതന്ത്രമാണ്.
"__extension__" എന്ന പദപ്രയോഗത്തിൽ മുന്നറിയിപ്പുകൾ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.

-Wc++-compat (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ഐഎസ്ഒ സിയുടെയും ഐഎസ്ഒയുടെയും പൊതുവായ ഉപവിഭാഗത്തിന് പുറത്തുള്ള ഐഎസ്ഒ സി കൺസ്ട്രക്റ്റുകളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
C++, ഉദാ: "ശൂന്യമായ *" എന്നതിൽ നിന്ന് ഒരു പോയിന്ററിലേക്ക് "അസാധുവല്ല" എന്നതിലേക്കുള്ള പരോക്ഷമായ പരിവർത്തനത്തിനുള്ള അഭ്യർത്ഥന
ടൈപ്പ് ചെയ്യുക.

-Wc++11-compat (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ISO C++ 1998 നും ISO C++ 2011 നും ഇടയിൽ അർത്ഥവ്യത്യാസമുള്ള C++ നിർമ്മിതികളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക,
ഉദാ, ISO C++ 1998 ലെ ഐഡന്റിഫയറുകൾ ISO C++ 2011 ലെ കീവേഡുകളാണ്. ഈ മുന്നറിയിപ്പ്
ഓണാക്കുന്നു - ചുരുങ്ങുന്നു കൂടാതെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - മതിൽ.

-Wc++14-compat (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ISO C++ 2011 നും ISO C++ 2014 നും ഇടയിൽ അർത്ഥവ്യത്യാസമുള്ള C++ നിർമ്മിതികളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക.
ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-Wcast-qual
ടാർഗെറ്റ് തരത്തിൽ നിന്ന് ഒരു ടൈപ്പ് ക്വാളിഫയർ നീക്കം ചെയ്യുന്നതിനായി ഒരു പോയിന്റർ കാസ്റ്റുചെയ്യുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക.
ഉദാഹരണത്തിന്, ഒരു സാധാരണ "char *" എന്നതിലേക്ക് "const char *" കാസ്‌റ്റ് ചെയ്‌താൽ മുന്നറിയിപ്പ് നൽകുക.

സുരക്ഷിതമല്ലാത്ത രീതിയിൽ ഒരു തരം ക്വാളിഫയർ അവതരിപ്പിക്കുന്ന ഒരു കാസ്റ്റ് നിർമ്മിക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക. വേണ്ടി
ഉദാഹരണത്തിന്, ഈ ഉദാഹരണത്തിലെന്നപോലെ, "char **" "const char **" എന്നതിലേക്ക് കാസ്‌റ്റുചെയ്യുന്നത് സുരക്ഷിതമല്ല:

/* p എന്നത് char ** മൂല്യമാണ്. */
const char **q = (const char **) p;
/* കോൺസ്റ്റ് ചാറിലേക്ക് വായിക്കാൻ മാത്രമുള്ള സ്ട്രിംഗിന്റെ അസൈൻമെന്റ് ശരിയാണ്. */
*q = "സ്ട്രിംഗ്";
/* ഇപ്പോൾ ചാർ** പോയിന്റർ റീഡ്-ഒൺലി മെമ്മറിയിലേക്ക് പോയിന്റ് ചെയ്യുന്നു. */
** p = 'b';

-Wcast-align
ടാർഗെറ്റിന്റെ ആവശ്യമായ വിന്യാസം ഒരു പോയിന്റർ ഇടുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക
വർദ്ധിച്ചു. ഉദാഹരണത്തിന്, മെഷീനുകളിൽ ഒരു "char *" ഒരു "int *" എന്നതിലേക്ക് കാസ്‌റ്റ് ചെയ്‌തിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
രണ്ടോ നാലോ-ബൈറ്റ് ബൗണ്ടറികളിൽ മാത്രമേ പൂർണ്ണസംഖ്യകൾ ആക്സസ് ചെയ്യാൻ കഴിയൂ.

-Wwrite-strings
C കംപൈൽ ചെയ്യുമ്പോൾ, സ്ട്രിംഗ് കോൺസ്റ്റന്റുകൾക്ക് "const char[" എന്ന് നൽകുക.നീളം]" അങ്ങനെ പകർത്തുന്നു
"കോൺസ്റ്റ്" അല്ലാത്ത "ചാർ *" പോയിന്ററിലേക്ക് ഒരാളുടെ വിലാസം ഒരു മുന്നറിയിപ്പ് നൽകുന്നു. ഇവ
ഒരു സ്ട്രിംഗിൽ എഴുതാൻ ശ്രമിക്കാവുന്ന സമയ കോഡ് കംപൈൽ ചെയ്യുമ്പോൾ കണ്ടെത്താൻ മുന്നറിയിപ്പുകൾ നിങ്ങളെ സഹായിക്കുന്നു
സ്ഥിരം, എന്നാൽ പ്രഖ്യാപനങ്ങളിൽ "const" ഉപയോഗിക്കുന്നതിൽ നിങ്ങൾ വളരെ ശ്രദ്ധാലുവായിരുന്നെങ്കിൽ മാത്രം
പ്രോട്ടോടൈപ്പുകളും. അല്ലെങ്കിൽ, അത് ഒരു ശല്യം മാത്രമാണ്. ഇതുകൊണ്ടാണ് ഞങ്ങൾ ഉണ്ടാക്കാത്തത് - മതിൽ
ഈ മുന്നറിയിപ്പുകൾ അഭ്യർത്ഥിക്കുക.

C++ കംപൈൽ ചെയ്യുമ്പോൾ, സ്ട്രിംഗ് ലിറ്ററലുകളിൽ നിന്ന് "char" ലേക്കുള്ള ഒഴിവാക്കിയ പരിവർത്തനത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
*". ഈ മുന്നറിയിപ്പ് C++ പ്രോഗ്രാമുകൾക്കായി സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

-Wclobbered
"longjmp" അല്ലെങ്കിൽ "vfork" വഴി മാറിയേക്കാവുന്ന വേരിയബിളുകൾക്കായി മുന്നറിയിപ്പ് നൽകുക. ഈ മുന്നറിയിപ്പ്
മുഖേനയും പ്രവർത്തനക്ഷമമാക്കി -വെക്സ്ട്ര.

- സോപാധിക-പിന്തുണ (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
സോപാധിക-പിന്തുണയുള്ള (C++11 [intro.defs]) നിർമ്മിതികൾക്ക് മുന്നറിയിപ്പ് നൽകുക.

- പരിവർത്തനം
മൂല്യം മാറ്റിയേക്കാവുന്ന പരോക്ഷമായ പരിവർത്തനങ്ങൾക്കായി മുന്നറിയിപ്പ് നൽകുക. ഇതിൽ പരിവർത്തനങ്ങളും ഉൾപ്പെടുന്നു
യഥാർത്ഥത്തിനും പൂർണ്ണസംഖ്യയ്ക്കും ഇടയിൽ, "abs (x)" പോലെ, "x" "ഇരട്ട" ആയിരിക്കുമ്പോൾ; തമ്മിലുള്ള പരിവർത്തനങ്ങൾ
"അൺസൈഡ് യുഐ = -1" പോലെ ഒപ്പിട്ടതും ഒപ്പിടാത്തതും; കൂടാതെ ചെറിയ തരങ്ങളിലേക്കുള്ള പരിവർത്തനങ്ങൾ
"sqrtf (M_PI)". "abs ((int) x)", "ui = എന്നിങ്ങനെയുള്ള വ്യക്തമായ കാസ്റ്റുകൾക്ക് മുന്നറിയിപ്പ് നൽകരുത്.
(ഒപ്പ് ചെയ്യാത്തത്) -1", അല്ലെങ്കിൽ "abs (2.0)" പോലെയുള്ള പരിവർത്തനം വഴി മൂല്യം മാറിയില്ലെങ്കിൽ.
ഒപ്പിട്ടതും ഒപ്പിടാത്തതുമായ പൂർണ്ണസംഖ്യകൾ തമ്മിലുള്ള പരിവർത്തനങ്ങളെക്കുറിച്ചുള്ള മുന്നറിയിപ്പുകൾ പ്രവർത്തനരഹിതമാക്കാം
ഉപയോഗിച്ച് -Wno-sign-conversion.

C++ ന്, ഉപയോക്തൃ നിർവചിച്ച പരിവർത്തനങ്ങൾക്കായി ഓവർലോഡ് റെസല്യൂഷൻ ആശയക്കുഴപ്പത്തിലാക്കുന്നതിനും മുന്നറിയിപ്പ് നൽകുക; ഒപ്പം
ഒരിക്കലും ഒരു തരം കൺവേർഷൻ ഓപ്പറേറ്റർ ഉപയോഗിക്കാത്ത പരിവർത്തനങ്ങൾ: "അസാധു" എന്നതിലേക്കുള്ള പരിവർത്തനങ്ങൾ, സമാനമാണ്
തരം, ഒരു അടിസ്ഥാന ക്ലാസ് അല്ലെങ്കിൽ അവയ്ക്കുള്ള ഒരു റഫറൻസ്. ഒപ്പിട്ടവർ തമ്മിലുള്ള പരിവർത്തനത്തെക്കുറിച്ചുള്ള മുന്നറിയിപ്പ്
കൂടാതെ ഒപ്പിടാത്ത പൂർണ്ണസംഖ്യകൾ C++-ൽ ഡിഫോൾട്ടായി പ്രവർത്തനരഹിതമാക്കും -വിസൈൻ-പരിവർത്തനം is
വ്യക്തമായി പ്രവർത്തനക്ഷമമാക്കി.

-Wno-conversion-null (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
"NULL" ഉം നോൺ-പോയിന്റർ തരങ്ങളും തമ്മിലുള്ള പരിവർത്തനങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകരുത്. -Wconversion-null is
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-Wzero-as-null-pointer-constant (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
അക്ഷരാർത്ഥത്തിലുള്ള '0' നൾ പോയിന്റർ കോൺസ്റ്റന്റ് ആയി ഉപയോഗിക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക. ഇത് ഉപയോഗപ്രദമാകും
C++11-ൽ "nullptr" ലേക്ക് പരിവർത്തനം സുഗമമാക്കുക.

-ദിവസം-സമയം
മാക്രോകൾ "__TIME__", "__DATE__" അല്ലെങ്കിൽ "__TIMESTAMP__" എന്നിവ നേരിടുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക
ബിറ്റ്-വൈസ്-ഇൻഡിക്കൽ റീപ്രൊഡ്യൂസിബിൾ കോമ്പൈലേഷനുകൾ തടയാം.

-Wdelete-അപൂർണ്ണം (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
അപൂർണ്ണമായ തരത്തിലേക്ക് ഒരു പോയിന്റർ ഇല്ലാതാക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക, ഇത് നിർവചിക്കാത്ത സ്വഭാവത്തിന് കാരണമാകാം
റൺടൈം. ഈ മുന്നറിയിപ്പ് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

-ഉപയോഗമില്ലാത്ത-കാസ്റ്റ് (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
ഒരു പദപ്രയോഗം അതിന്റേതായ തരത്തിലേക്ക് മാറ്റുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക.

- വെമ്പ്റ്റി-ബോഡി
"if", " else" അല്ലെങ്കിൽ "do while" എന്ന പ്രസ്താവനയിൽ ഒരു ശൂന്യമായ ശരീരം സംഭവിക്കുകയാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ഈ മുന്നറിയിപ്പ്
വഴിയും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -വെക്സ്ട്ര.

-വേണം-താരതമ്യം ചെയ്യുക
വ്യത്യസ്ത എണ്ണപ്പെട്ട തരങ്ങളുടെ മൂല്യങ്ങൾ തമ്മിലുള്ള താരതമ്യത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. C++ എന്യൂമറലിൽ
സോപാധിക പദപ്രയോഗങ്ങളിലെ പൊരുത്തക്കേടുകളും രോഗനിർണ്ണയം നടത്തുകയും മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കുകയും ചെയ്യുന്നു
സ്ഥിരസ്ഥിതി. C-ൽ ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - മതിൽ.

-Wjump- misses-init (സി, ഒബ്ജക്റ്റീവ്-സി മാത്രം)
ഒരു "ഗോട്ടോ" പ്രസ്താവനയോ "സ്വിച്ച്" പ്രസ്താവനയോ കുറുകെ മുന്നോട്ട് കുതിക്കുകയാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
ഒരു വേരിയബിളിന്റെ സമാരംഭം, അല്ലെങ്കിൽ വേരിയബിൾ ആയതിന് ശേഷം ഒരു ലേബലിലേക്ക് പിന്നിലേക്ക് കുതിക്കുന്നു
ആരംഭിച്ചത്. വേരിയബിളുകൾ ഉള്ളപ്പോൾ ആരംഭിക്കുന്നതിനെക്കുറിച്ച് മാത്രമേ ഇത് മുന്നറിയിപ്പ് നൽകൂ
പ്രഖ്യാപിച്ചു. C, Objective-C എന്നിവയ്ക്ക് മാത്രമേ ഈ മുന്നറിയിപ്പ് പിന്തുണയുള്ളൂ; C++ ൽ ഇത്തരത്തിലുള്ള
ഏത് സാഹചര്യത്തിലും ബ്രാഞ്ച് ഒരു പിശകാണ്.

-Wjump- misses-init ൽ ഉൾപ്പെടുത്തിയിരിക്കുന്നു -Wc++-compat. ഉപയോഗിച്ച് ഇത് പ്രവർത്തനരഹിതമാക്കാം
-Wno-ജമ്പ്-മിസ്സ്-ഇനിറ്റ് ഓപ്ഷൻ.

-വിസൈൻ-താരതമ്യം ചെയ്യുക
ഒപ്പിട്ടതും ഒപ്പിട്ടിട്ടില്ലാത്തതുമായ മൂല്യങ്ങൾ തമ്മിലുള്ള താരതമ്യം തെറ്റായി വരുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക
ഒപ്പിട്ട മൂല്യം ഒപ്പിടാത്തതാക്കി മാറ്റുമ്പോൾ ഫലം. ഈ മുന്നറിയിപ്പും പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ട്
by -വെക്സ്ട്ര; മറ്റ് മുന്നറിയിപ്പുകൾ ലഭിക്കാൻ -വെക്സ്ട്ര ഈ മുന്നറിയിപ്പ് ഇല്ലാതെ, ഉപയോഗിക്കുക -വെക്സ്ട്ര
-Wno-sign-compare.

-വിസൈൻ-പരിവർത്തനം
ഒരു പൂർണ്ണസംഖ്യ മൂല്യത്തിന്റെ അടയാളം മാറ്റിയേക്കാവുന്ന പരോക്ഷമായ പരിവർത്തനങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകുക
ഒപ്പിടാത്ത ഒരു പൂർണ്ണസംഖ്യാ വേരിയബിളിലേക്ക് ഒരു ഒപ്പിട്ട പൂർണ്ണസംഖ്യാ പദപ്രയോഗം നൽകുന്നു. വ്യക്തമായ ഒരു
മുന്നറിയിപ്പ് നിശബ്ദമാക്കുന്നു. സിയിൽ, ഈ ഓപ്‌ഷനും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - പരിവർത്തനം.

-Wfloat-പരിവർത്തനം
ഒരു യഥാർത്ഥ മൂല്യത്തിന്റെ കൃത്യത കുറയ്ക്കുന്ന പരോക്ഷമായ പരിവർത്തനങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകുക. ഈ
യഥാർത്ഥത്തിൽ നിന്ന് പൂർണ്ണസംഖ്യയിലേക്കുള്ള പരിവർത്തനങ്ങളും ഉയർന്ന കൃത്യതയിൽ നിന്ന് താഴ്ന്നതിലേക്കുള്ള പരിവർത്തനങ്ങളും ഉൾപ്പെടുന്നു
കൃത്യമായ യഥാർത്ഥ മൂല്യങ്ങൾ. ഈ ഓപ്ഷനും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു - പരിവർത്തനം.

-വിസൈസ്-ഡീലോക്കേഷൻ (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
വലിപ്പമില്ലാത്ത ഡീലോക്കേഷൻ ഫംഗ്‌ഷന്റെ നിർവചനത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക

അസാധുവായ ഓപ്പറേറ്റർ ഇല്ലാതാക്കുക (അസാധു *) ഒഴികെ;
ശൂന്യമായ ഓപ്പറേറ്റർ ഇല്ലാതാക്കുക[] (അസാധു *) ഒഴികെ;

അനുബന്ധ വലുപ്പത്തിലുള്ള ഡീലോക്കേഷൻ ഫംഗ്‌ഷന്റെ നിർവചനം കൂടാതെ

ശൂന്യമായ ഓപ്പറേറ്റർ ഇല്ലാതാക്കുക (void *, std::size_t) ഒഴികെ;
void ഓപ്പറേറ്റർ ഇല്ലാതാക്കുക[] (void *, std::size_t) noexcept;

അല്ലെങ്കിൽ തിരിച്ചും. പ്രവർത്തനക്ഷമമാക്കിയത് -വെക്സ്ട്ര അതിനൊപ്പം -fsized-deallocation.

-Wsizeof-pointer-memaccess
ചില സ്‌ട്രിംഗുകളിലേക്കും മെമ്മറി ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകളിലേക്കും സംശയാസ്പദമായ ദൈർഘ്യ പാരാമീറ്ററുകൾക്കായി മുന്നറിയിപ്പ് നൽകുക
വാദം "sizeof" ഉപയോഗിക്കുകയാണെങ്കിൽ. ഈ മുന്നറിയിപ്പ് മുന്നറിയിപ്പ് നൽകുന്നു ഉദാ "മെംസെറ്റ് (ptr, 0, sizeof
(ptr));" "ptr" ഒരു അറേ അല്ല, ഒരു പോയിന്റർ ആണെങ്കിൽ, സാധ്യമായ ഒരു പരിഹാരം നിർദ്ദേശിക്കുന്നു, അല്ലെങ്കിൽ
"memcpy (&foo, ptr, sizeof (&foo));" എന്നതിനെക്കുറിച്ച്. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-Wsizeof-array-argument
ഒരു അറേ ആയി പ്രഖ്യാപിച്ചിരിക്കുന്ന ഒരു പരാമീറ്ററിൽ "sizeof" ഓപ്പറേറ്റർ പ്രയോഗിക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക
ഒരു ഫംഗ്ഷൻ നിർവചനത്തിൽ. C, C++ പ്രോഗ്രാമുകൾക്കായി ഈ മുന്നറിയിപ്പ് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

-Wmemset-transposed-args
രണ്ടാമത്തെ ആർഗ്യുമെന്റ് ആണെങ്കിൽ "മെംസെറ്റ്" ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനിലേക്കുള്ള സംശയാസ്പദമായ കോളുകൾക്ക് മുന്നറിയിപ്പ് നൽകുക
പൂജ്യമല്ല, മൂന്നാമത്തെ വാദം പൂജ്യമാണ്. ഇത് മുന്നറിയിപ്പ് നൽകുന്നു ഉദാ@ "മെംസെറ്റ് (buf, sizeof
buf, 0)" ഇവിടെ മിക്കവാറും "memset (buf, 0, sizeof buf)" ആണ് ഉദ്ദേശിച്ചത്.
മൂന്നാമത്തെ വാദം അക്ഷരാർത്ഥത്തിൽ പൂജ്യമാണെങ്കിൽ മാത്രമേ ഡയഗ്നോസ്റ്റിക്സ് പുറത്തുവിടുകയുള്ളൂ. അത് ചിലതാണെങ്കിൽ
പൂജ്യത്തിലേക്ക് മടക്കിയ പദപ്രയോഗം, ഏതെങ്കിലും തരത്തിലേക്ക് പൂജ്യത്തിന്റെ ഒരു കാസ്റ്റ് മുതലായവ, ഇത് വളരെ കുറവാണ്
ഉപയോക്താവ് തെറ്റായി വാദങ്ങൾ കൈമാറ്റം ചെയ്‌തിരിക്കാനും മുന്നറിയിപ്പൊന്നും പുറപ്പെടുവിക്കാതിരിക്കാനും സാധ്യതയുണ്ട്.
ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-വഡ്രസ്സ്
മെമ്മറി വിലാസങ്ങളുടെ സംശയാസ്പദമായ ഉപയോഗങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. a എന്ന വിലാസം ഉപയോഗിക്കുന്നത് ഇതിൽ ഉൾപ്പെടുന്നു
"void func(void); if (func)", കൂടാതെ ഒരു സോപാധിക പദപ്രയോഗത്തിൽ പ്രവർത്തിക്കുക
"if (x == "abc")" പോലെയുള്ള അക്ഷരാർത്ഥത്തിലുള്ള ഒരു സ്ട്രിംഗിന്റെ മെമ്മറി വിലാസവുമായി താരതമ്യം ചെയ്യുന്നു.
അത്തരം ഉപയോഗങ്ങൾ സാധാരണയായി ഒരു പ്രോഗ്രാമർ പിശകിനെ സൂചിപ്പിക്കുന്നു: എല്ലായ്പ്പോഴും ഒരു ഫംഗ്ഷന്റെ വിലാസം
ശരി എന്ന് വിലയിരുത്തുന്നു, അതിനാൽ ഒരു സോപാധികമായ അവരുടെ ഉപയോഗം സാധാരണയായി പ്രോഗ്രാമർ എന്ന് സൂചിപ്പിക്കുന്നു
ഒരു ഫംഗ്‌ഷൻ കോളിൽ പരാൻതീസിസ് മറന്നു; സ്ട്രിംഗ് ലിറ്ററലുകളുമായുള്ള താരതമ്യവും
അവ്യക്തമായ സ്വഭാവത്തിന് കാരണമാകുന്നു, സിയിൽ പോർട്ടബിൾ അല്ല, അതിനാൽ അവ സാധാരണയായി സൂചിപ്പിക്കുന്നു
പ്രോഗ്രാമർ "strcmp" ഉപയോഗിക്കാനാണ് ഉദ്ദേശിക്കുന്നത്. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-ലോജിക്കൽ-ഓപ്
എക്സ്പ്രഷനുകളിൽ ലോജിക്കൽ ഓപ്പറേറ്റർമാരുടെ സംശയാസ്പദമായ ഉപയോഗങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. ഇതിൽ ഉപയോഗിക്കുന്നത് ഉൾപ്പെടുന്നു
ഒരു ബിറ്റ് വൈസ് ഓപ്പറേറ്ററെ പ്രതീക്ഷിക്കാൻ സാധ്യതയുള്ള സന്ദർഭങ്ങളിൽ ലോജിക്കൽ ഓപ്പറേറ്റർമാർ.

-ലോജിക്കൽ-അല്ല-പരാന്തീസിസ്
ഒരു താരതമ്യത്തിന്റെ ഇടതുവശത്തുള്ള ഓപ്പറണ്ടിൽ ഉപയോഗിക്കാത്ത ലോജിക്കിനെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. ഈ
RHS ഓപ്പറാൻറ് ഒരു ബൂളിയൻ തരത്തിലുള്ളതാണെങ്കിൽ ഓപ്ഷൻ മുന്നറിയിപ്പ് നൽകുന്നില്ല. എന്നതാണ് അതിന്റെ ഉദ്ദേശം
ഇനിപ്പറയുന്നതുപോലുള്ള സംശയാസ്പദമായ കോഡ് കണ്ടെത്തുക:

int a;
...
എങ്കിൽ (!a > 1) { ...}

LHS-നെ പരാൻതീസിസിലേക്ക് പൊതിഞ്ഞ് മുന്നറിയിപ്പ് അടിച്ചമർത്തുന്നത് സാധ്യമാണ്:

എങ്കിൽ ((!a) > 1) { ...}

ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-വാഗ്രിഗേറ്റ്-റിട്ടേൺ
ഘടനകളോ യൂണിയനുകളോ തിരിച്ച് നൽകുന്ന ഏതെങ്കിലും ഫംഗ്‌ഷനുകൾ നിർവചിക്കപ്പെടുകയോ വിളിക്കപ്പെടുകയോ ചെയ്‌തിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. (ഇൻ
നിങ്ങൾക്ക് ഒരു അറേ തിരികെ നൽകാൻ കഴിയുന്ന ഭാഷകൾ, ഇത് ഒരു മുന്നറിയിപ്പും നൽകുന്നു.)

-Wno-അഗ്രസീവ്-ലൂപ്പ്-ഒപ്റ്റിമൈസേഷനുകൾ
സ്ഥിരമായ ആവർത്തനങ്ങളുള്ള ഒരു ലൂപ്പിൽ കംപൈലർ നിർവചിച്ചിട്ടില്ലെന്ന് കണ്ടെത്തുകയാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
ഒന്നോ അതിലധികമോ ആവർത്തന സമയത്ത് ചില പ്രസ്താവനകളിലെ പെരുമാറ്റം.

-ആട്രിബ്യൂട്ടുകൾ
തിരിച്ചറിയാത്ത ആട്രിബ്യൂട്ടുകൾ പോലെ, അപ്രതീക്ഷിതമായ "__attribute__" ഉപയോഗിച്ചാൽ മുന്നറിയിപ്പ് നൽകരുത്,
ഫംഗ്‌ഷൻ ആട്രിബ്യൂട്ടുകൾ വേരിയബിളുകളിൽ പ്രയോഗിക്കുന്നു, മുതലായവ. ഇത് പിശകുകൾ തടയുന്നില്ല
പിന്തുണയ്ക്കുന്ന ആട്രിബ്യൂട്ടുകളുടെ തെറ്റായ ഉപയോഗം.

-Wno-builtin-macro-redefined
ചില ബിൽറ്റ്-ഇൻ മാക്രോകൾ പുനർ നിർവചിച്ചിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകരുത്. എന്നതിനായുള്ള മുന്നറിയിപ്പുകളെ ഇത് അടിച്ചമർത്തുന്നു
"__TIMESTAMP__", "__TIME__", "__DATE__", "__FILE__" എന്നിവയുടെ പുനർനിർവചനം, കൂടാതെ
"__BASE_FILE__".

-സ്ട്രിക്റ്റ്-പ്രോട്ടോടൈപ്പുകൾ (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ആർഗ്യുമെന്റ് തരങ്ങൾ വ്യക്തമാക്കാതെ ഒരു ഫംഗ്‌ഷൻ പ്രഖ്യാപിക്കുകയോ നിർവചിക്കുകയോ ചെയ്‌താൽ മുന്നറിയിപ്പ് നൽകുക. (അൻ
പഴയ രീതിയിലുള്ള ഫംഗ്‌ഷൻ നിർവചനം ഒരു മുന്നറിയിപ്പുമില്ലാതെ അനുവദനീയമാണ് a
ആർഗ്യുമെന്റ് തരങ്ങൾ വ്യക്തമാക്കുന്ന പ്രഖ്യാപനം.)

-വോൾഡ്-സ്റ്റൈൽ-പ്രഖ്യാപനം (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ഒരു ഡിക്ലറേഷനിൽ, C സ്റ്റാൻഡേർഡ് അനുസരിച്ച്, കാലഹരണപ്പെട്ട ഉപയോഗങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകുക. വേണ്ടി
ഉദാഹരണത്തിന്, "സ്റ്റാറ്റിക്" പോലുള്ള സ്റ്റോറേജ്-ക്ലാസ് സ്പെസിഫയറുകൾ a യിലെ ആദ്യ കാര്യങ്ങളല്ലെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
പ്രഖ്യാപനം. ഈ മുന്നറിയിപ്പും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -വെക്സ്ട്ര.

-Wold-style-definition (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ഒരു പഴയ രീതിയിലുള്ള ഫംഗ്‌ഷൻ നിർവചനം ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ഉണ്ടെങ്കിലും മുന്നറിയിപ്പ് നൽകാറുണ്ട്
മുമ്പത്തെ പ്രോട്ടോടൈപ്പ്.

-Wmissing-parameter-type (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
K&R-ശൈലി ഫംഗ്‌ഷനുകളിൽ ഒരു തരം സ്‌പെസിഫയർ ഇല്ലാതെ ഒരു ഫംഗ്‌ഷൻ പാരാമീറ്റർ പ്രഖ്യാപിച്ചു:

അസാധുവായ foo(ബാർ) {}

ഈ മുന്നറിയിപ്പും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -വെക്സ്ട്ര.

-Wmissing-പ്രോട്ടോടൈപ്പുകൾ (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
മുൻ പ്രോട്ടോടൈപ്പ് പ്രഖ്യാപനം കൂടാതെ ഒരു ആഗോള ഫംഗ്ഷൻ നിർവചിച്ചിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ഈ
നിർവചനം തന്നെ ഒരു പ്രോട്ടോടൈപ്പ് നൽകിയാലും മുന്നറിയിപ്പ് നൽകുന്നു. ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക
a-യിൽ പൊരുത്തപ്പെടുന്ന പ്രോട്ടോടൈപ്പ് പ്രഖ്യാപനം ഇല്ലാത്ത ആഗോള പ്രവർത്തനങ്ങൾ കണ്ടെത്തുന്നതിന്
തലക്കെട്ട് ഫയൽ. ഈ ഓപ്‌ഷൻ C++ ന് സാധുതയുള്ളതല്ല കാരണം എല്ലാ പ്രവർത്തന പ്രഖ്യാപനങ്ങളും
പ്രോട്ടോടൈപ്പുകൾ നൽകുകയും ഒരു നോൺ-മാച്ചിംഗ് ഡിക്ലറേഷൻ ഒരു ഓവർലോഡ് പ്രഖ്യാപിക്കുകയും ചെയ്യുന്നു
നേരത്തെയുള്ള പ്രഖ്യാപനവുമായി വൈരുദ്ധ്യം. ഉപയോഗിക്കുക -Wmissing-പ്രഖ്യാപനങ്ങൾ കാണാതായത് കണ്ടെത്തുന്നതിന്
C++ ലെ പ്രഖ്യാപനങ്ങൾ.

-Wmissing-പ്രഖ്യാപനങ്ങൾ
മുൻ പ്രഖ്യാപനമില്ലാതെ ഒരു ആഗോള ഫംഗ്‌ഷൻ നിർവചിച്ചിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ആണെങ്കിലും അങ്ങനെ ചെയ്യുക
നിർവചനം തന്നെ ഒരു പ്രോട്ടോടൈപ്പ് നൽകുന്നു. ആഗോള കണ്ടെത്തുന്നതിന് ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക
ഹെഡ്ഡർ ഫയലുകളിൽ പ്രഖ്യാപിച്ചിട്ടില്ലാത്ത ഫംഗ്‌ഷനുകൾ. സിയിൽ, മുന്നറിയിപ്പുകളൊന്നും നൽകിയിട്ടില്ല
മുമ്പത്തെ നോൺ-പ്രോട്ടോടൈപ്പ് പ്രഖ്യാപനങ്ങളുള്ള പ്രവർത്തനങ്ങൾ; ഉപയോഗിക്കുക -Wmissing-പ്രോട്ടോടൈപ്പുകൾ കണ്ടുപിടിക്കുന്നതിനായി
പ്രോട്ടോടൈപ്പുകൾ കാണുന്നില്ല. C++-ൽ, ഫംഗ്‌ഷൻ ടെംപ്ലേറ്റുകൾക്കോ ​​അല്ലെങ്കിൽ അതിനുള്ള മുന്നറിയിപ്പുകളോ നൽകുന്നില്ല
ഇൻലൈൻ ഫംഗ്‌ഷനുകൾ, അല്ലെങ്കിൽ അജ്ഞാത നെയിംസ്‌പെയ്‌സുകളിലെ ഫംഗ്‌ഷനുകൾക്കായി.

-Wmissing-ഫീൽഡ്-ഇനീഷ്യലൈസറുകൾ
ഒരു ഘടനയുടെ ഇനിഷ്യലൈസറിൽ ചില ഫീൽഡുകൾ നഷ്‌ടപ്പെട്ടാൽ മുന്നറിയിപ്പ് നൽകുക. ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്നവ
കോഡ് അത്തരമൊരു മുന്നറിയിപ്പ് നൽകുന്നു, കാരണം "xh" പരോക്ഷമായി പൂജ്യമാണ്:

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

ഈ ഓപ്‌ഷൻ നിയുക്ത ഇനീഷ്യലൈസറുകളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നില്ല, അതിനാൽ ഇനിപ്പറയുന്ന പരിഷ്‌ക്കരണം
ഒരു മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കുന്നില്ല:

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

C++ ൽ, ഈ ഓപ്ഷൻ ശൂന്യമായ {} ഇനീഷ്യലൈസറിനെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നില്ല, ഉദാഹരണത്തിന്:

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

ഈ മുന്നറിയിപ്പ് ഉൾപ്പെടുത്തിയിട്ടുണ്ട് -വെക്സ്ട്ര. മറ്റൊന്ന് ലഭിക്കാൻ -വെക്സ്ട്ര ഇതില്ലാത്ത മുന്നറിയിപ്പുകൾ,
ഉപയോഗം -വെക്സ്ട്ര -നഷ്‌ടമായ-ഫീൽഡ്-ഇനീഷ്യലൈസറുകൾ.

-Wno-multichar
ഒന്നിലധികം പ്രതീകങ്ങൾ സ്ഥിരമായാൽ മുന്നറിയിപ്പ് നൽകരുത് ('ഫൂഫ്') ഉപയോഗിക്കുന്നു. സാധാരണയായി അവർ എ സൂചിപ്പിക്കുന്നു
ഉപയോക്താവിന്റെ കോഡിലെ അക്ഷരത്തെറ്റ്, അവയ്ക്ക് നടപ്പിലാക്കൽ-നിർവചിച്ച മൂല്യങ്ങൾ ഉള്ളതിനാൽ, പാടില്ല
പോർട്ടബിൾ കോഡിൽ ഉപയോഗിക്കുന്നു.

-അസാധാരണമാക്കി[=<ആരും|id|nfc|nfkc>]
ISO C, ISO C++ എന്നിവയിൽ, രണ്ട് ഐഡന്റിഫയറുകൾ വ്യത്യസ്ത ശ്രേണികളാണെങ്കിൽ വ്യത്യസ്തമായിരിക്കും
കഥാപാത്രങ്ങൾ. എന്നിരുന്നാലും, ചിലപ്പോൾ അടിസ്ഥാന ASCII പ്രതീക സെറ്റിന് പുറത്തുള്ള പ്രതീകങ്ങൾ
ഉപയോഗിച്ചിരിക്കുന്നു, നിങ്ങൾക്ക് ഒരേ പോലെയുള്ള രണ്ട് വ്യത്യസ്ത പ്രതീക ശ്രേണികൾ ഉണ്ടായിരിക്കാം. ഒഴിവാക്കാൻ
ആശയക്കുഴപ്പം, ISO 10646 നിലവാരം ചിലത് വ്യക്തമാക്കുന്നു നോർമലൈസേഷൻ നിയമങ്ങൾ പ്രയോഗിക്കുമ്പോൾ ഏത്
ഒരേ പോലെ കാണപ്പെടുന്ന രണ്ട് സീക്വൻസുകൾ ഒരേ ശ്രേണിയിലേക്ക് മാറ്റുന്നുവെന്ന് ഉറപ്പാക്കുക. ജി.സി.സി
നിങ്ങൾ നോർമലൈസ് ചെയ്തിട്ടില്ലാത്ത ഐഡന്റിഫയറുകൾ ഉപയോഗിക്കുകയാണെങ്കിൽ നിങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകാൻ കഴിയും; ഈ ഓപ്ഷൻ
ആ മുന്നറിയിപ്പ് നിയന്ത്രിക്കുന്നു.

GCC പിന്തുണയ്ക്കുന്ന നാല് തലത്തിലുള്ള മുന്നറിയിപ്പ് ഉണ്ട്. സ്ഥിരസ്ഥിതിയാണ് -Normalized=nfc,
ISO 10646 "C" നോർമലൈസ്ഡ് ഫോമിൽ ഇല്ലാത്ത ഏതെങ്കിലും ഐഡന്റിഫയറിനെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു,
എൻഎഫ്സി. NFC ആണ് മിക്ക ഉപയോഗങ്ങൾക്കും ശുപാർശ ചെയ്യുന്ന ഫോം. ഇതിന് തുല്യമാണ് -അസാധാരണമാക്കി.

നിർഭാഗ്യവശാൽ, ISO C, ISO C++ എന്നിവയാൽ ഐഡന്റിഫയറുകളിൽ ചില പ്രതീകങ്ങൾ അനുവദനീയമാണ്.
അത്, NFC ആയി മാറുമ്പോൾ, ഐഡന്റിഫയറുകളിൽ അനുവദനീയമല്ല. അതായത്, ഒരു വഴിയുമില്ല
ഈ ചിഹ്നങ്ങൾ പോർട്ടബിൾ ISO C അല്ലെങ്കിൽ C++-ൽ ഉപയോഗിക്കാനും നിങ്ങളുടെ എല്ലാ ഐഡന്റിഫയറുകളും NFC-ൽ ഉണ്ടായിരിക്കാനും.
-നോർമലൈസ്ഡ്=ഐഡി ഈ കഥാപാത്രങ്ങൾക്കുള്ള മുന്നറിയിപ്പ് അടിച്ചമർത്തുന്നു. ഭാവിയുണ്ടാകുമെന്ന് പ്രതീക്ഷിക്കുന്നു
ഉൾപ്പെട്ടിരിക്കുന്ന മാനദണ്ഡങ്ങളുടെ പതിപ്പുകൾ ഇത് ശരിയാക്കും, അതിനാലാണ് ഈ ഓപ്ഷൻ ഇല്ല
സ്ഥിരസ്ഥിതി.

എഴുതുന്നതിലൂടെ നിങ്ങൾക്ക് എല്ലാ പ്രതീകങ്ങൾക്കും മുന്നറിയിപ്പ് സ്വിച്ച് ഓഫ് ചെയ്യാം -അസാധാരണമാക്കിയ=ഒന്നുമില്ല or
- നോ-നോർമലൈസ്ഡ്. നിങ്ങൾ മറ്റേതെങ്കിലും നോർമലൈസേഷൻ ഉപയോഗിക്കുകയാണെങ്കിൽ മാത്രമേ നിങ്ങൾ ഇത് ചെയ്യാവൂ
സ്കീം ("ഡി" പോലെ), അല്ലാത്തപക്ഷം നിങ്ങൾക്ക് അക്ഷരാർത്ഥത്തിൽ ബഗുകൾ എളുപ്പത്തിൽ സൃഷ്ടിക്കാൻ കഴിയും
കാണാൻ അസാധ്യമാണ്.

ISO 10646-ലെ ചില പ്രതീകങ്ങൾക്ക് വ്യത്യസ്‌തമായ അർത്ഥങ്ങളുണ്ടെങ്കിലും ചില ഫോണ്ടുകളിൽ സമാനമായി കാണപ്പെടുന്നു.
അല്ലെങ്കിൽ രീതിശാസ്ത്രങ്ങൾ പ്രദർശിപ്പിക്കുക, പ്രത്യേകിച്ച് ഫോർമാറ്റിംഗ് പ്രയോഗിച്ചുകഴിഞ്ഞാൽ. ഉദാഹരണത്തിന്
"\u207F", "സൂപ്പർസ്ക്രിപ്റ്റ് ലാറ്റിൻ ചെറിയ അക്ഷരം N", ഒരു സാധാരണ "n" പോലെ പ്രദർശിപ്പിക്കുന്നു
ഒരു സൂപ്പർസ്ക്രിപ്റ്റിൽ സ്ഥാപിച്ചിട്ടുണ്ട്. ISO 10646 നിർവ്വചിക്കുന്നു എൻ.എഫ്.കെ.സി ലേക്കുള്ള നോർമലൈസേഷൻ സ്കീം
ഇവയെല്ലാം ഒരു സ്റ്റാൻഡേർഡ് ഫോമിലേക്ക് പരിവർത്തനം ചെയ്യുക, നിങ്ങളുടെ കോഡ് ഇല്ലെങ്കിൽ GCC മുന്നറിയിപ്പ് നൽകുന്നു
നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ NFKC -Normalized=nfkc. ഈ മുന്നറിയിപ്പ് എല്ലാത്തിനെയും കുറിച്ചുള്ള മുന്നറിയിപ്പുമായി താരതമ്യപ്പെടുത്താവുന്നതാണ്
0 എന്ന അക്കവുമായി ആശയക്കുഴപ്പത്തിലായതിനാൽ O എന്ന അക്ഷരം ഉൾക്കൊള്ളുന്ന ഐഡന്റിഫയർ,
അത് ഡിഫോൾട്ടല്ല, എന്നാൽ ഒരു പ്രാദേശിക കോഡിംഗ് കൺവെൻഷൻ എന്ന നിലയിൽ ഇത് ഉപയോഗപ്രദമാകും
ഈ പ്രതീകങ്ങൾ വ്യക്തമായി പ്രദർശിപ്പിക്കുന്നതിന് പ്രോഗ്രാമിംഗ് അന്തരീക്ഷം ശരിയാക്കാൻ കഴിയില്ല.

-വിനോ-ഒഴിവാക്കപ്പെട്ടു
ഒഴിവാക്കിയ ഫീച്ചറുകളുടെ ഉപയോഗത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകരുത്.

-ഒഴിവാക്കപ്പെട്ട പ്രഖ്യാപനങ്ങൾ
ഫംഗ്‌ഷനുകൾ, വേരിയബിളുകൾ, ഒഴിവാക്കിയതായി അടയാളപ്പെടുത്തിയ തരങ്ങൾ എന്നിവയുടെ ഉപയോഗങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകരുത്
"ഒഴിവാക്കപ്പെട്ട" ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുന്നു.

-Wno-ഓവർഫ്ലോ
നിരന്തരമായ എക്സ്പ്രഷനുകളിൽ കംപൈൽ-ടൈം ഓവർഫ്ലോയെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകരുത്.

-Wno-odr
ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷൻ സമയത്ത് വൺ ഡെഫനിഷൻ റൂൾ ലംഘനങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. ആവശ്യമാണ്
-flto-odr-type-merging പ്രവർത്തനക്ഷമമാക്കാൻ. സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-Wopenmp-simd
വെക്‌ടറൈസർ കോസ്റ്റ് മോഡൽ ഓപ്പൺഎംപിയെയോ സിൽക്ക് പ്ലസ് സിംഡ് നിർദ്ദേശത്തെയോ അസാധുവാക്കുകയാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
ഉപയോക്താവ് സജ്ജമാക്കി. ദി -fsimd-cost-model=അൺലിമിറ്റഡ് ചെലവ് കുറയ്ക്കാൻ ഓപ്ഷൻ ഉപയോഗിക്കാം
മാതൃക.

-Woverride-init (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
നിയുക്ത ഉപയോഗിക്കുമ്പോൾ പാർശ്വഫലങ്ങളില്ലാത്ത ഒരു പ്രാരംഭ ഫീൽഡ് അസാധുവാക്കപ്പെട്ടാൽ മുന്നറിയിപ്പ് നൽകുക
ഇനിഷ്യലൈസറുകൾ.

ഈ മുന്നറിയിപ്പ് ഉൾപ്പെടുത്തിയിട്ടുണ്ട് -വെക്സ്ട്ര. മറ്റൊന്ന് ലഭിക്കാൻ -വെക്സ്ട്ര ഇതില്ലാത്ത മുന്നറിയിപ്പുകൾ,
ഉപയോഗം -വെക്സ്ട്ര -Wno-override-init.

- പായ്ക്ക് ചെയ്തു
ഒരു ഘടനയ്ക്ക് പാക്ക് ചെയ്ത ആട്രിബ്യൂട്ട് നൽകിയിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക, എന്നാൽ പായ്ക്ക് ചെയ്ത ആട്രിബ്യൂട്ടിന് ഇല്ല
ഘടനയുടെ ലേഔട്ടിലോ വലുപ്പത്തിലോ ഉള്ള പ്രഭാവം. അത്തരം ഘടനകൾ തെറ്റായി വിന്യസിച്ചേക്കാം
ചെറിയ പ്രയോജനം. ഉദാഹരണത്തിന്, ഈ കോഡിൽ, "struct bar" ലെ "fx" എന്ന വേരിയബിൾ ആണ്
"struct bar"-ന് തന്നെ പാക്ക് ചെയ്ത ആട്രിബ്യൂട്ട് ഇല്ലെങ്കിലും തെറ്റായി ക്രമീകരിച്ചിരിക്കുന്നു:

struct foo {
int x;
ചാർ എ, ബി, സി, ഡി;
} __ വിതരണം __ ((പായ്ക്ക് ചെയ്തത്));
സ്ട്രക്റ്റ് ബാർ {
ചാർ ഇസഡ്;
struct foo f;
};

-Wpacked-bitfield-compat
ജിസിസിയുടെ 4.1, 4.2, 4.3 സീരീസ് ബിറ്റ് ഫീൽഡുകളിലെ "പാക്ക്" ആട്രിബ്യൂട്ട് അവഗണിക്കുന്നു.
"ചാർ". ഇത് GCC 4.4-ൽ പരിഹരിച്ചിട്ടുണ്ടെങ്കിലും മാറ്റം വ്യത്യാസങ്ങൾക്ക് ഇടയാക്കും
ഘടന ലേഔട്ട്. ജിസിസിയിൽ അത്തരം ഒരു ഫീൽഡിന്റെ ഓഫ്‌സെറ്റ് മാറിയപ്പോൾ ജിസിസി നിങ്ങളെ അറിയിക്കുന്നു
4.4 ഉദാഹരണത്തിന്, ഇതിൽ "a", "b" എന്നീ ഫീൽഡുകൾക്കിടയിൽ ഇനി 4-ബിറ്റ് പാഡിംഗ് ഇല്ല
ഘടന:

struct foo
{
char a:4;
ചാർ ബി:8;
} __ആട്രിബ്യൂട്ട്__ ((പാക്ക് ചെയ്‌തത്));

ഈ മുന്നറിയിപ്പ് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു. ഉപയോഗിക്കുക -Wno-packed-bitfield-compat ഇത് പ്രവർത്തനരഹിതമാക്കാൻ
മുന്നറിയിപ്പ്.

-Wpadded
ഒരു ഘടനയിൽ പാഡിംഗ് ഉൾപ്പെടുത്തിയിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക, ഒന്നുകിൽ ഒരു ഘടകം വിന്യസിക്കുക
ഘടന അല്ലെങ്കിൽ മുഴുവൻ ഘടനയും വിന്യസിക്കുക. ചിലപ്പോൾ ഇത് സംഭവിക്കുമ്പോൾ അത് സാധ്യമാണ്
പാഡിംഗ് കുറയ്ക്കുന്നതിന് ഘടനയുടെ ഫീൽഡുകൾ പുനഃക്രമീകരിക്കുന്നതിനും അങ്ങനെ നിർമ്മിക്കുന്നതിനും
ഘടന ചെറുതാണ്.

-അപവാദം-വിസമ്മതിക്കുന്നു
ഒരേ സ്കോപ്പിൽ ഒന്നിലധികം തവണ എന്തെങ്കിലും പ്രഖ്യാപിക്കപ്പെട്ടാൽ മുന്നറിയിപ്പ് നൽകുക
ഒന്നിലധികം പ്രഖ്യാപനം സാധുവാണ്, ഒന്നും മാറ്റില്ല.

-Wnested-externs (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ഒരു ഫംഗ്ഷനിൽ ഒരു "ബാഹ്യ" പ്രഖ്യാപനം നേരിട്ടാൽ മുന്നറിയിപ്പ് നൽകുക.

-Wno-inherited-variadic-ctor
അടിസ്ഥാന ക്ലാസ് ആയിരിക്കുമ്പോൾ C++11 ഇൻഹെറിറ്റിംഗ് കൺസ്ട്രക്‌ടറുകളുടെ ഉപയോഗത്തെക്കുറിച്ചുള്ള മുന്നറിയിപ്പുകൾ അടിച്ചമർത്തുക
പാരമ്പര്യമായി ലഭിച്ചതിന് ഒരു സി വേരിയാഡിക് കൺസ്ട്രക്റ്റർ ഉണ്ട്; മുന്നറിയിപ്പ് സ്ഥിരസ്ഥിതിയായി ഓണാണ്, കാരണം
എലിപ്സിസ് പാരമ്പര്യമായി ലഭിക്കുന്നില്ല.

-വിൻലൈൻ
ഇൻലൈൻ ആയി പ്രഖ്യാപിക്കപ്പെട്ട ഒരു ഫംഗ്‌ഷൻ ഇൻലൈൻ ചെയ്യാൻ കഴിയുന്നില്ലെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ഇതിനൊപ്പം പോലും
ഓപ്ഷൻ, പ്രഖ്യാപിച്ച ഇൻലൈൻ ഫംഗ്‌ഷനുകളിലെ പരാജയങ്ങളെക്കുറിച്ച് കംപൈലർ മുന്നറിയിപ്പ് നൽകുന്നില്ല
സിസ്റ്റം തലക്കെട്ടുകൾ.

എ ഇൻലൈൻ ചെയ്യണോ വേണ്ടയോ എന്ന് നിർണ്ണയിക്കാൻ കംപൈലർ വൈവിധ്യമാർന്ന ഹ്യൂറിസ്റ്റിക്സ് ഉപയോഗിക്കുന്നു
പ്രവർത്തനം. ഉദാഹരണത്തിന്, കംപൈലർ ഫംഗ്‌ഷന്റെ വലുപ്പം കണക്കിലെടുക്കുന്നു
ഇൻലൈൻ ചെയ്‌തിരിക്കുന്നതും നിലവിലെ ഫംഗ്‌ഷനിൽ ഇതിനകം ചെയ്‌തിരിക്കുന്ന ഇൻലൈനിംഗിന്റെ അളവും.
അതിനാൽ, ഉറവിട പ്രോഗ്രാമിലെ നിസ്സാരമെന്ന് തോന്നുന്ന മാറ്റങ്ങൾ കാരണമാകാം
നിർമ്മിച്ച മുന്നറിയിപ്പുകൾ -വിൻലൈൻ പ്രത്യക്ഷപ്പെടുകയോ അപ്രത്യക്ഷമാകുകയോ ചെയ്യുക.

-അസാധുവായ ഓഫ്സെറ്റോഫ് (സി++ ഉം ഒബ്ജക്റ്റീവ്-സി++ മാത്രം)
POD അല്ലാത്ത തരത്തിലേക്ക് "ഓഫ്സെറ്റോഫ്" മാക്രോ പ്രയോഗിക്കുന്നതിൽ നിന്നുള്ള മുന്നറിയിപ്പുകൾ അടിച്ചമർത്തുക. ഇതനുസരിച്ച്
2014 ISO C++ സ്റ്റാൻഡേർഡ്, ഒരു നോൺ-സ്റ്റാൻഡേർഡ്-ലേഔട്ട് തരത്തിലേക്ക് "ഓഫ്സെറ്റോഫ്" പ്രയോഗിക്കുന്നു
നിർവചിക്കാത്തത്. എന്നിരുന്നാലും, നിലവിലുള്ള C++ നടപ്പിലാക്കലുകളിൽ, "offsetof" സാധാരണ നൽകുന്നു
അർത്ഥവത്തായ ഫലങ്ങൾ. ഈ ഫ്ലാഗ് എഴുതുന്നത് അറിയാവുന്ന ഉപയോക്താക്കൾക്കുള്ളതാണ്
പോർട്ടബിൾ അല്ലാത്ത കോഡും അതിനെക്കുറിച്ചുള്ള മുന്നറിയിപ്പ് അവഗണിക്കാൻ മനഃപൂർവ്വം തിരഞ്ഞെടുത്തവരും.

C++ സ്റ്റാൻഡേർഡിന്റെ ഭാവി പതിപ്പിൽ "ഓഫ്‌സെറ്റോഫിന്റെ" നിയന്ത്രണങ്ങൾ ഇളവ് ചെയ്തേക്കാം.

-Wno-int-to-pointer-cast
വ്യത്യസ്ത വലുപ്പത്തിലുള്ള ഒരു പൂർണ്ണസംഖ്യയുടെ കാസ്റ്റുകളിൽ നിന്ന് പോയിന്റർ തരത്തിലേക്കുള്ള മുന്നറിയിപ്പുകൾ അടിച്ചമർത്തുക. ഇൻ
C++, ചെറിയ വലിപ്പത്തിലുള്ള ഒരു പോയിന്റർ തരത്തിലേക്ക് കാസ്‌റ്റുചെയ്യുന്നത് ഒരു പിശകാണ്. വിന്റ്-ടു-പോയിന്റർ-കാസ്റ്റ് is
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-Wno-pointer-to-int-cast (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ഒരു പോയിന്ററിൽ നിന്ന് വ്യത്യസ്ത വലുപ്പത്തിലുള്ള ഒരു പൂർണ്ണസംഖ്യയിലേക്കുള്ള കാസ്റ്റുകളിൽ നിന്നുള്ള മുന്നറിയിപ്പുകൾ അടിച്ചമർത്തുക.

-Winvalid-pch
തിരയൽ പാതയിൽ മുൻകൂട്ടി കംപൈൽ ചെയ്‌ത തലക്കെട്ട് കണ്ടെത്തിയാൽ, അത് ഉപയോഗിക്കാൻ കഴിയുന്നില്ലെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക.

- നീളമുള്ളത്
"നീണ്ട നീളമുള്ള" തരം ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ഒന്നുകിൽ ഇത് പ്രവർത്തനക്ഷമമാക്കുന്നു -Wpedantic or
- പരമ്പരാഗത ISO C90, C++98 മോഡുകളിൽ. മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ തടയാൻ, ഉപയോഗിക്കുക
- നീണ്ട-നീണ്ട.

-Wvariadic-macros
ISO C90 മോഡിൽ വേരിയാഡിക് മാക്രോകൾ ഉപയോഗിക്കുന്നുണ്ടോ അല്ലെങ്കിൽ GNU ഇതര വാക്യഘടന ആണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക
ISO C99 മോഡിൽ ഉപയോഗിക്കുന്നു. ഒന്നുകിൽ ഇത് പ്രവർത്തനക്ഷമമാക്കുന്നു -Wpedantic or - പരമ്പരാഗത. ലേക്ക്
മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ തടയുക, ഉപയോഗിക്കുക -Wno-variadic-macros.

-വാറാർഗ്സ്
പോലുള്ള വേരിയബിൾ ആർഗ്യുമെന്റുകൾ കൈകാര്യം ചെയ്യാൻ ഉപയോഗിക്കുന്ന മാക്രോകളുടെ സംശയാസ്പദമായ ഉപയോഗത്തെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
"va_start". ഇത് സ്ഥിരസ്ഥിതിയാണ്. മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ തടയാൻ, ഉപയോഗിക്കുക -Wno-varargs.

-Wvector-ഓപ്പറേഷൻ-പ്രകടനം
ആർക്കിടെക്ചറിന്റെ SIMD കഴിവുകൾ വഴി വെക്റ്റർ പ്രവർത്തനം നടപ്പിലാക്കിയില്ലെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക.
പ്രകടന ട്യൂണിംഗിന് പ്രധാനമായും ഉപയോഗപ്രദമാണ്. വെക്റ്റർ പ്രവർത്തനം നടപ്പിലാക്കാൻ കഴിയും
"പീസ്‌വൈസ്", അതായത് എല്ലാ വെക്‌റ്ററിലും സ്‌കെലാർ ഓപ്പറേഷൻ നടത്തപ്പെടുന്നു
മൂലകം; "സമാന്തരമായി", അതായത് വെക്റ്റർ പ്രവർത്തനം ഉപയോഗിച്ച് നടപ്പിലാക്കുന്നു
സാധാരണയായി കൂടുതൽ കാര്യക്ഷമതയുള്ള, വിശാലമായ തരത്തിലുള്ള സ്കെയിലറുകൾ; കൂടാതെ "അവിവാഹിതനായി
സ്കെയിലർ", അതായത് വെക്റ്റർ ഒരു സ്കെയിലർ തരത്തിലേക്ക് യോജിക്കുന്നു എന്നാണ്.

-Wno-virtual-move-assign
നിസ്സാരമല്ലാത്ത C++11 നീക്കം ഉപയോഗിച്ച് ഒരു വെർച്വൽ ബേസിൽ നിന്ന് പാരമ്പര്യമായി ലഭിക്കുന്നതിനെക്കുറിച്ചുള്ള മുന്നറിയിപ്പുകൾ അടിച്ചമർത്തുക
അസൈൻമെന്റ് ഓപ്പറേറ്റർ. ഇത് അപകടകരമാണ്, കാരണം വെർച്വൽ ബേസ് സഹിതം എത്തിച്ചേരാവുന്നതാണെങ്കിൽ
ഒന്നിൽക്കൂടുതൽ പാത, അത് ഒന്നിലധികം തവണ നീക്കി, രണ്ട് വസ്തുക്കളും അവസാനിക്കുന്നു എന്നാണ് അർത്ഥമാക്കുന്നത്
സംസ്ഥാനത്ത് നിന്ന് മാറ്റി. നീക്കൽ അസൈൻമെന്റ് ഓപ്പറേറ്റർ നീക്കുന്നത് ഒഴിവാക്കാൻ എഴുതിയതാണെങ്കിൽ
ഒരു വസ്തുവിൽ നിന്ന് മാറ്റി, ഈ മുന്നറിയിപ്പ് പ്രവർത്തനരഹിതമാക്കാം.

-Wvla
കോഡിൽ വേരിയബിൾ ലെങ്ത് അറേ ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. -Wno-vla തടയുന്നു -Wpedantic
വേരിയബിൾ ലെങ്ത് അറേയുടെ മുന്നറിയിപ്പ്.

-Wvolatile-register-var
ഒരു രജിസ്റ്റർ വേരിയബിൾ അസ്ഥിരമായി പ്രഖ്യാപിച്ചാൽ മുന്നറിയിപ്പ് നൽകുക. അസ്ഥിര മോഡിഫയർ ചെയ്യുന്നില്ല
രജിസ്ട്രേഷനായി വായിക്കുന്നതും കൂടാതെ/അല്ലെങ്കിൽ എഴുതുന്നതും ഇല്ലാതാക്കുന്ന എല്ലാ ഒപ്റ്റിമൈസേഷനുകളും തടയുക
വേരിയബിളുകൾ. ഈ മുന്നറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കിയത് - മതിൽ.

-Wdisabled-optimization
അഭ്യർത്ഥിച്ച ഒപ്റ്റിമൈസേഷൻ പാസ് പ്രവർത്തനരഹിതമാക്കിയിട്ടുണ്ടെങ്കിൽ മുന്നറിയിപ്പ് നൽകുക. ഈ മുന്നറിയിപ്പ് പൊതുവെ ഉണ്ടാകാറില്ല
നിങ്ങളുടെ കോഡിൽ എന്തെങ്കിലും കുഴപ്പമുണ്ടെന്ന് സൂചിപ്പിക്കുക; അത് GCC യുടേതാണെന്ന് സൂചിപ്പിക്കുന്നു
ഒപ്റ്റിമൈസറുകൾക്ക് കോഡ് ഫലപ്രദമായി കൈകാര്യം ചെയ്യാൻ കഴിയുന്നില്ല. പലപ്പോഴും, പ്രശ്നം നിങ്ങളുടേതാണ്
കോഡ് വളരെ വലുതാണ് അല്ലെങ്കിൽ വളരെ സങ്കീർണ്ണമാണ്; ഒപ്റ്റിമൈസേഷൻ ചെയ്യുമ്പോൾ പ്രോഗ്രാമുകൾ ഒപ്റ്റിമൈസ് ചെയ്യാൻ GCC വിസമ്മതിക്കുന്നു
അതിന് തന്നെ അമിതമായ സമയമെടുക്കാൻ സാധ്യതയുണ്ട്.

- പോയിന്റർ-അടയാളം (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
പോയിന്റർ ആർഗ്യുമെന്റ് പാസിംഗ് അല്ലെങ്കിൽ വ്യത്യസ്‌ത ഒപ്പിട്ട അസൈൻമെന്റിനായി മുന്നറിയിപ്പ് നൽകുക. ഈ
C, Objective-C എന്നിവയ്‌ക്ക് മാത്രമേ ഓപ്ഷൻ പിന്തുണയ്‌ക്കൂ. ഇത് സൂചിപ്പിക്കുന്നത് - മതിൽ ഒപ്പം
-Wpedantic, ഇത് ഉപയോഗിച്ച് പ്രവർത്തനരഹിതമാക്കാം -വിനോ-പോയിന്റർ-സൈൻ.

-Wstack-protector
എപ്പോൾ മാത്രമേ ഈ ഓപ്ഷൻ സജീവമാകൂ -fstack-protectctor സജീവമാണ്. ഇത് പ്രവർത്തനങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു
സ്റ്റാക്ക് സ്മാഷിംഗിൽ നിന്ന് സംരക്ഷിക്കപ്പെടാത്തവ.

-Woverlength-strings
"മിനിമം മാക്സിമം" ദൈർഘ്യത്തേക്കാൾ നീളമുള്ള സ്ട്രിംഗ് കോൺസ്റ്റന്റുകളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
സി സ്റ്റാൻഡേർഡിൽ വ്യക്തമാക്കിയിട്ടുണ്ട്. ആധുനിക കംപൈലറുകൾ സാധാരണയായി സ്ട്രിംഗ് കോൺസ്റ്റന്റുകളെ അനുവദിക്കുന്നു
സ്റ്റാൻഡേർഡിന്റെ ഏറ്റവും കുറഞ്ഞ പരിധിയേക്കാൾ വളരെ ദൈർഘ്യമേറിയതാണ്, എന്നാൽ വളരെ പോർട്ടബിൾ പ്രോഗ്രാമുകൾ ആയിരിക്കണം
നീളമുള്ള സ്ട്രിംഗുകൾ ഉപയോഗിക്കുന്നത് ഒഴിവാക്കുക.

പരിധി ബാധകമാണ് ശേഷം സ്ട്രിംഗ് സ്ഥിരമായ സംയോജനം, ഒപ്പം ട്രെയിലിംഗിനെ കണക്കാക്കുന്നില്ല
NUL. C90-ൽ, പരിധി 509 പ്രതീകങ്ങളായിരുന്നു; C99-ൽ അത് 4095 ആയി ഉയർത്തി. C++98 ചെയ്യുന്നു
ഒരു സാധാരണ മിനിമം മാക്സിമം വ്യക്തമാക്കരുത്, അതിനാൽ ഞങ്ങൾ ഓവർലെങ്ത്ത് സ്ട്രിംഗുകൾ നിർണ്ണയിക്കുന്നില്ല
സി ++.

ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നത് -Wpedantic, എന്നിവ ഉപയോഗിച്ച് പ്രവർത്തനരഹിതമാക്കാം
-Wno-overlength-strings.

-വുൺസഫിക്സഡ്-ഫ്ലോട്ട്-കോൺസ്റ്റന്റുകൾ (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
പ്രത്യയം ഇല്ലാത്ത ഏതെങ്കിലും ഫ്ലോട്ടിംഗ് സ്ഥിരാങ്കത്തിന് മുന്നറിയിപ്പ് നൽകുക. ഉപയോഗിക്കുമ്പോൾ
ഒപ്പം കൂടെ -ഡബ്ല്യുസിസ്റ്റം-ഹെഡറുകൾ സിസ്റ്റം ഹെഡർ ഫയലുകളിലെ അത്തരം സ്ഥിരാങ്കങ്ങളെക്കുറിച്ച് ഇത് മുന്നറിയിപ്പ് നൽകുന്നു.
"FLOAT_CONST_DECIMAL64" പ്രാഗ്മയ്‌ക്കൊപ്പം ഉപയോഗിക്കാൻ കോഡ് തയ്യാറാക്കുമ്പോൾ ഇത് ഉപയോഗപ്രദമാകും
ഡെസിമൽ ഫ്ലോട്ടിംഗ് പോയിന്റ് എക്സ്റ്റൻഷനിൽ നിന്ന് C99 ലേക്ക്.

-Wno-designated-init (സിയും ഒബ്ജക്‌റ്റും-സി മാത്രം)
ഒരു ഘടന ആരംഭിക്കാൻ ഒരു പൊസിഷണൽ ഇനീഷ്യലൈസർ ഉപയോഗിക്കുമ്പോൾ മുന്നറിയിപ്പുകൾ അടിച്ചമർത്തുക
"designated_init" ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് അടയാളപ്പെടുത്തിയിരിക്കുന്നു.

ഓപ്ഷനുകൾ വേണ്ടി ഡീബഗ്ഗിംഗ് നിങ്ങളുടെ പ്രോഗ്രാം or ജിസിസി
നിങ്ങളുടെ പ്രോഗ്രാമിലോ GCCയിലോ ഡീബഗ്ഗ് ചെയ്യാൻ ഉപയോഗിക്കുന്ന വിവിധ പ്രത്യേക ഓപ്ഷനുകൾ GCC-യിലുണ്ട്:

-g ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ നേറ്റീവ് ഫോർമാറ്റിൽ ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ നിർമ്മിക്കുക (കുത്ത്, COFF,
XCOFF, അല്ലെങ്കിൽ DWARF 2). ഈ ഡീബഗ്ഗിംഗ് വിവരങ്ങളുമായി ജിഡിബിക്ക് പ്രവർത്തിക്കാനാകും.

സ്റ്റാബ്സ് ഫോർമാറ്റ് ഉപയോഗിക്കുന്ന മിക്ക സിസ്റ്റങ്ങളിലും, -g അധിക ഡീബഗ്ഗിംഗ് വിവരങ്ങളുടെ ഉപയോഗം സാധ്യമാക്കുന്നു
ജിഡിബിക്ക് മാത്രമേ ഉപയോഗിക്കാൻ കഴിയൂ; ഈ അധിക വിവരങ്ങൾ ജിഡിബിയിൽ ഡീബഗ്ഗിംഗ് മികച്ചതാക്കുന്നു
ഒരുപക്ഷേ മറ്റ് ഡീബഗ്ഗറുകൾ തകരാറിലാകുകയോ പ്രോഗ്രാം വായിക്കാൻ വിസമ്മതിക്കുകയോ ചെയ്യും. നിങ്ങൾക്ക് വേണമെങ്കിൽ
അധിക വിവരങ്ങൾ ജനറേറ്റ് ചെയ്യണമോ എന്ന് ഉറപ്പിക്കുന്നതിനുള്ള നിയന്ത്രണം, ഉപയോഗിക്കുക -gstabs+, -gstabs,
-gxcoff+, -gxcoff, അഥവാ -ജിവിഎംഎസ് (താഴെ നോക്കുക).

ഉപയോഗിക്കാൻ GCC നിങ്ങളെ അനുവദിക്കുന്നു -g കൂടെ -O. ഒപ്റ്റിമൈസ് ചെയ്ത കോഡ് എടുത്ത കുറുക്കുവഴികൾ ഉണ്ടാകാം
ഇടയ്ക്കിടെ ആശ്ചര്യപ്പെടുത്തുന്ന ഫലങ്ങൾ നൽകുന്നു: നിങ്ങൾ പ്രഖ്യാപിച്ച ചില വേരിയബിളുകൾ നിലവിലില്ലായിരിക്കാം
എല്ലാം; നിയന്ത്രണത്തിന്റെ ഒഴുക്ക് നിങ്ങൾ പ്രതീക്ഷിക്കാത്ത ഇടത്തേക്ക് ഹ്രസ്വമായി നീങ്ങിയേക്കാം; ചില പ്രസ്താവനകൾ ഉണ്ടാകാം
അവ സ്ഥിരമായ ഫലങ്ങൾ കണക്കാക്കുന്നതിനാലോ അവയുടെ മൂല്യങ്ങൾ ഇതിനകം തന്നെ ആയതിനാലോ നടപ്പിലാക്കരുത്
കൈ; ചില പ്രസ്‌താവനകൾ വ്യത്യസ്‌ത സ്ഥലങ്ങളിൽ എക്‌സിക്യൂട്ട് ചെയ്‌തേക്കാം, കാരണം അവ നീക്കി
ലൂപ്പുകളുടെ.

എന്നിരുന്നാലും ഒപ്റ്റിമൈസ് ചെയ്ത ഔട്ട്പുട്ട് ഡീബഗ് ചെയ്യാൻ ഇത് സാധ്യമാണെന്ന് തെളിയിക്കുന്നു. ഇത് ന്യായയുക്തമാക്കുന്നു
ബഗുകൾ ഉണ്ടാകാനിടയുള്ള പ്രോഗ്രാമുകൾക്കായി ഒപ്റ്റിമൈസർ ഉപയോഗിക്കുന്നതിന്.

കൂടുതൽ കാര്യങ്ങൾക്കുള്ള ശേഷിയോടെ ജിസിസി ജനറേറ്റുചെയ്യുമ്പോൾ ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ ഉപയോഗപ്രദമാണ്
ഒരു ഡീബഗ്ഗിംഗ് ഫോർമാറ്റിനേക്കാൾ.

-gsplit-dwarf
ഒരു പ്രത്യേക ഔട്ട്പുട്ട് ഫയലിലേക്ക് കഴിയുന്നത്ര കുള്ളൻ ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ വേർതിരിക്കുക
.dwo വിപുലീകരണത്തോടൊപ്പം. ഫയലുകൾ ലിങ്കുചെയ്യുന്നത് ഒഴിവാക്കാൻ ഈ ഓപ്ഷൻ ബിൽഡ് സിസ്റ്റത്തെ അനുവദിക്കുന്നു
ഡീബഗ് വിവരങ്ങൾക്കൊപ്പം. ഉപയോഗപ്രദമാകാൻ, ഈ ഓപ്ഷന് കഴിവുള്ള ഒരു ഡീബഗ്ഗർ ആവശ്യമാണ്
.dwo ഫയലുകൾ വായിക്കുന്നു.

-ggdb
ജിഡിബിയുടെ ഉപയോഗത്തിനായി ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ നിർമ്മിക്കുക. ഇതിനർത്ഥം ഏറ്റവും പ്രകടമായത് ഉപയോഗിക്കുക എന്നാണ്
ഫോർമാറ്റ് ലഭ്യമാണ് (DWARF 2, സ്‌റ്റാബ്‌സ് അല്ലെങ്കിൽ നേറ്റീവ് ഫോർമാറ്റ് ഇവയിലൊന്നും ഇല്ലെങ്കിൽ
പിന്തുണയ്‌ക്കുന്നു), സാധ്യമെങ്കിൽ GDB വിപുലീകരണങ്ങൾ ഉൾപ്പെടെ.

-gpubnames
കുള്ളൻ .debug_pubnames ഉം .debug_pubtypes വിഭാഗങ്ങളും സൃഷ്ടിക്കുക.

-ggnu-pubnames
അനുയോജ്യമായ ഒരു ഫോർമാറ്റിൽ .debug_pubnames, .debug_pubtypes വിഭാഗങ്ങൾ സൃഷ്ടിക്കുക
ഒരു GDB സൂചികയിലേക്ക് പരിവർത്തനം. സാധ്യമായ ഒരു ലിങ്കറിന് മാത്രമേ ഈ ഓപ്ഷൻ ഉപയോഗപ്രദമാകൂ
GDB സൂചിക പതിപ്പ് 7 നിർമ്മിക്കുക.

-gstabs
ജിഡിബി കൂടാതെ, ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ സ്റ്റാബ്സ് ഫോർമാറ്റിൽ നിർമ്മിക്കുക (അത് പിന്തുണയ്ക്കുന്നുവെങ്കിൽ).
വിപുലീകരണങ്ങൾ. മിക്ക BSD സിസ്റ്റങ്ങളിലും DBX ഉപയോഗിക്കുന്ന ഫോർമാറ്റാണിത്. MIPS-ൽ, ആൽഫ കൂടാതെ
സിസ്റ്റം വി റിലീസ് 4 സിസ്റ്റങ്ങൾ ഈ ഐച്ഛികം സ്റ്റാബ്സ് ഡീബഗ്ഗിംഗ് ഔട്ട്പുട്ട് ഉണ്ടാക്കുന്നു
DBX അല്ലെങ്കിൽ SDB മനസ്സിലാക്കുന്നു. സിസ്റ്റം വി റിലീസ് 4 സിസ്റ്റങ്ങളിൽ ഈ ഐച്ഛികത്തിന് ഗ്നു ആവശ്യമാണ്
അസംബ്ലർ.

-ഫെലിമിനേറ്റ്-ഉപയോഗിക്കാത്ത-ഡീബഗ്-ചിഹ്നങ്ങൾ
ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ സ്റ്റാബ്സ് ഫോർമാറ്റിൽ നിർമ്മിക്കുക (അത് പിന്തുണയ്ക്കുന്നുവെങ്കിൽ), ചിഹ്നങ്ങൾക്കായി മാത്രം
യഥാർത്ഥത്തിൽ ഉപയോഗിക്കുന്നവ.

-femit-class-debug-always
ഒരു ഒബ്‌ജക്റ്റ് ഫയലിൽ മാത്രം C++ ക്ലാസിനായുള്ള ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ പുറത്തുവിടുന്നതിനുപകരം,
ക്ലാസ് ഉപയോഗിച്ച് എല്ലാ ഒബ്‌ജക്റ്റ് ഫയലുകളിലും ഇത് എമിറ്റ് ചെയ്യുക. ഈ ഓപ്ഷൻ ഉപയോഗിച്ച് മാത്രമേ ഉപയോഗിക്കാവൂ
GCC സാധാരണയായി ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ പുറത്തുവിടുന്ന രീതി കൈകാര്യം ചെയ്യാൻ കഴിയാത്ത ഡീബഗ്ഗറുകൾ
ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കുന്നത് ഡീബഗ്ഗിംഗ് വിവരങ്ങളുടെ വലുപ്പം വർദ്ധിപ്പിക്കുന്നതിനാൽ ക്ലാസുകൾക്കായി
രണ്ടിന്റെ ഘടകം പോലെ.

-fdebug-types-section
DWARF പതിപ്പ് 4 അല്ലെങ്കിൽ അതിലും ഉയർന്നത് ഉപയോഗിക്കുമ്പോൾ, ടൈപ്പ് DIE-കൾ അവരുടേതായി ഉൾപ്പെടുത്താം
അവയെ ".debug_info" വിഭാഗത്തിന്റെ ഭാഗമാക്കുന്നതിന് പകരം ".debug_types" വിഭാഗം. അത്
ലിങ്കർക്ക് കഴിയുന്നതിനാൽ അവയെ പ്രത്യേക കോംഡാറ്റ് വിഭാഗങ്ങളിൽ ഉൾപ്പെടുത്തുന്നത് കൂടുതൽ കാര്യക്ഷമമാണ്
തനിപ്പകർപ്പുകൾ നീക്കം ചെയ്യുക. എന്നാൽ എല്ലാ DWARF ഉപഭോക്താക്കളും ഇതുവരെ ".debug_types" വിഭാഗങ്ങളെ പിന്തുണയ്ക്കുന്നില്ല
ചില ഒബ്‌ജക്‌റ്റുകളിൽ ".debug_types" ചെറിയ ഡീബഗ്ഗിംഗിന് പകരം വലുതാണ്
വിവരങ്ങൾ.

-gstabs+
ഗ്നു ഉപയോഗിച്ച് സ്റ്റാബ്സ് ഫോർമാറ്റിൽ ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ നിർമ്മിക്കുക (അത് പിന്തുണയ്ക്കുന്നുവെങ്കിൽ).
വിപുലീകരണങ്ങൾ GNU ഡീബഗ്ഗർ (GDB) മാത്രം മനസ്സിലാക്കുന്നു. ഈ വിപുലീകരണങ്ങളുടെ ഉപയോഗം
മറ്റ് ഡീബഗ്ഗറുകൾ തകരാറിലാകുകയോ പ്രോഗ്രാം വായിക്കാൻ വിസമ്മതിക്കുകയോ ചെയ്യും.

-ജികോഫ്
COFF ഫോർമാറ്റിൽ ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ നിർമ്മിക്കുക (അത് പിന്തുണയ്ക്കുന്നുവെങ്കിൽ). ഇതാണ്
സിസ്റ്റം V റിലീസ് 4-ന് മുമ്പുള്ള മിക്ക സിസ്റ്റം V സിസ്റ്റങ്ങളിലും SDB ഉപയോഗിച്ച ഫോർമാറ്റ്.

-gxcoff
ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ XCOFF ഫോർമാറ്റിൽ നിർമ്മിക്കുക (അത് പിന്തുണയ്ക്കുന്നുവെങ്കിൽ). ഇതാണ്
IBM RS/6000 സിസ്റ്റങ്ങളിൽ DBX ഡീബഗ്ഗർ ഉപയോഗിക്കുന്ന ഫോർമാറ്റ്.

-gxcoff+
GNU ഉപയോഗിച്ച് XCOFF ഫോർമാറ്റിൽ (പിന്തുണയുണ്ടെങ്കിൽ) ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ നിർമ്മിക്കുക
വിപുലീകരണങ്ങൾ GNU ഡീബഗ്ഗർ (GDB) മാത്രം മനസ്സിലാക്കുന്നു. ഈ വിപുലീകരണങ്ങളുടെ ഉപയോഗം
മറ്റ് ഡീബഗ്ഗറുകൾ തകരാറിലാകുകയോ പ്രോഗ്രാം വായിക്കാൻ വിസമ്മതിക്കുകയോ ചെയ്യും, ഇത് കാരണമായേക്കാം
GNU അസംബ്ലർ (GAS) ഒഴികെയുള്ള അസംബ്ലറുകൾ ഒരു പിശകിനാൽ പരാജയപ്പെടും.

-gdwarf-പതിപ്പ്
ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ DWARF ഫോർമാറ്റിൽ നിർമ്മിക്കുക (അത് പിന്തുണയ്ക്കുന്നുവെങ്കിൽ). മൂല്യം
പതിപ്പ് ഒന്നുകിൽ 2, 3, 4 അല്ലെങ്കിൽ 5 ആയിരിക്കാം; മിക്ക ടാർഗെറ്റുകളുടെയും സ്ഥിര പതിപ്പ് 4. DWARF ആണ്
പതിപ്പ് 5 പരീക്ഷണാത്മകമാണ്.

DWARF പതിപ്പ് 2-നൊപ്പം, ചില പോർട്ടുകൾ ആവശ്യപ്പെടുന്നതും എപ്പോഴും വൈരുദ്ധ്യമില്ലാത്ത ചിലതും ഉപയോഗിക്കുന്നതും ശ്രദ്ധിക്കുക
അൺവൈൻഡ് ടേബിളുകളിലെ DWARF 3 വിപുലീകരണങ്ങൾ.

പതിപ്പ് 4-ന് GDB 7.0 ആവശ്യമായി വന്നേക്കാം -fvar-ട്രാക്കിംഗ്-അസൈൻമെന്റുകൾ പരമാവധി പ്രയോജനത്തിനായി.

-grecord-gcc-സ്വിച്ചുകൾ
ഈ സ്വിച്ച് കംപൈലറിനെ വിളിക്കാൻ ഉപയോഗിക്കുന്ന കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾക്ക് കാരണമാകുന്നു
DWARF-ലെ DW_AT_producer ആട്രിബ്യൂട്ടിൽ ചേർക്കേണ്ട കോഡ് ജനറേഷൻ ബാധിക്കും
ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ. ഓപ്‌ഷനുകൾ അവയെ വേർതിരിക്കുന്ന സ്‌പെയ്‌സുകളാൽ സംയോജിപ്പിച്ചിരിക്കുന്നു
പരസ്പരം കംപൈലർ പതിപ്പിൽ നിന്ന്. ഇതും കാണുക -frecord-gcc-സ്വിച്ചുകൾ മറ്റൊരാൾക്ക്
ഒബ്ജക്റ്റ് ഫയലിലേക്ക് കംപൈലർ ഓപ്ഷനുകൾ സംഭരിക്കുന്നതിനുള്ള വഴി. ഇതാണ് സ്ഥിരസ്ഥിതി.

-gno-record-gcc-switches
DWARF-ലെ DW_AT_producer ആട്രിബ്യൂട്ടിലേക്ക് കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ ചേർക്കുന്നത് അനുവദിക്കരുത്
ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ.

-gstrict-dwarf
തിരഞ്ഞെടുത്തതിന് ശേഷമുള്ള DWARF സ്റ്റാൻഡേർഡ് പതിപ്പിന്റെ വിപുലീകരണങ്ങൾ ഉപയോഗിക്കുന്നത് അനുവദിക്കരുത്
-gdwarf-പതിപ്പ്. ഒട്ടുമിക്ക ടാർഗെറ്റുകളിലും പിന്നീട് മുതൽ വൈരുദ്ധ്യമില്ലാത്ത DWARF വിപുലീകരണങ്ങൾ ഉപയോഗിക്കുന്നു
സാധാരണ പതിപ്പുകൾ അനുവദനീയമാണ്.

-ഗ്നോ-സ്ട്രിക്റ്റ്-ഡ്വാർഫ്
തിരഞ്ഞെടുത്തതിനേക്കാൾ പിന്നീടുള്ള DWARF സ്റ്റാൻഡേർഡ് പതിപ്പിന്റെ വിപുലീകരണങ്ങൾ ഉപയോഗിക്കാൻ അനുവദിക്കുക
-gdwarf-പതിപ്പ്.

-gz[=ടൈപ്പ് ചെയ്യുക]
DWARF ഫോർമാറ്റിൽ കംപ്രസ് ചെയ്ത ഡീബഗ് വിഭാഗങ്ങൾ നിർമ്മിക്കുക, അത് പിന്തുണയ്ക്കുന്നുവെങ്കിൽ. എങ്കിൽ ടൈപ്പ് ചെയ്യുക is
നൽകിയിട്ടില്ല, സ്ഥിരസ്ഥിതി തരം അസംബ്ലറുടെയും ലിങ്കറിന്റെയും കഴിവുകളെ ആശ്രയിച്ചിരിക്കുന്നു
ഉപയോഗിച്ചു. ടൈപ്പ് ചെയ്യുക ഒന്നായിരിക്കാം ആരും (ഡീബഗ് വിഭാഗങ്ങൾ കംപ്രസ് ചെയ്യരുത്), zlib (zlib ഉപയോഗിക്കുക
ELF gABI ഫോർമാറ്റിലുള്ള കംപ്രഷൻ), അല്ലെങ്കിൽ zlib-gnu (പരമ്പരാഗത ഗ്നുവിൽ zlib കംപ്രഷൻ ഉപയോഗിക്കുക
ഫോർമാറ്റ്). കംപ്രസ് ചെയ്ത ഡീബഗ് വിഭാഗങ്ങൾ എഴുതുന്നതിനെ ലിങ്കർ പിന്തുണയ്ക്കുന്നില്ലെങ്കിൽ, ഓപ്ഷൻ
നിരസിക്കപ്പെട്ടിരിക്കുന്നു. അല്ലെങ്കിൽ, അസംബ്ലർ അവരെ പിന്തുണയ്ക്കുന്നില്ലെങ്കിൽ, -gz നിശബ്ദമാണ്
ഒബ്ജക്റ്റ് ഫയലുകൾ നിർമ്മിക്കുമ്പോൾ അവഗണിച്ചു.

-ജിവിഎംഎസ്
ആൽഫ/വിഎംഎസ് ഡീബഗ് ഫോർമാറ്റിൽ ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ നിർമ്മിക്കുക (അത് പിന്തുണയ്‌ക്കുകയാണെങ്കിൽ). ഈ
ആൽഫ/വിഎംഎസ് സിസ്റ്റങ്ങളിൽ ഡീബഗ് ഉപയോഗിക്കുന്ന ഫോർമാറ്റാണ്.

-gലെവൽ
-ggdbലെവൽ
-gstabsലെവൽ
-ജികോഫ്ലെവൽ
-gxcoffലെവൽ
-ജിവിഎംഎസ്ലെവൽ
ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ അഭ്യർത്ഥിക്കുകയും ഉപയോഗിക്കുകയും ചെയ്യുക ലെവൽ എത്ര വിവരങ്ങൾ വ്യക്തമാക്കാൻ. ദി
സ്ഥിരസ്ഥിതി ലെവൽ 2 ആണ്.

ലെവൽ 0 ഡീബഗ് വിവരങ്ങളൊന്നും നൽകുന്നില്ല. അങ്ങനെ, -g0 നിഷേധിക്കുന്നു -g.

ലെവൽ 1 ഏറ്റവും കുറഞ്ഞ വിവരങ്ങൾ നിർമ്മിക്കുന്നു, ഭാഗങ്ങളിൽ ബാക്ക്ട്രെയിസ് ഉണ്ടാക്കാൻ മതിയാകും
നിങ്ങൾ ഡീബഗ് ചെയ്യാൻ പദ്ധതിയിടാത്ത പ്രോഗ്രാം. ഇതിൽ പ്രവർത്തനങ്ങളുടെ വിവരണങ്ങളും ഉൾപ്പെടുന്നു
ബാഹ്യ വേരിയബിളുകൾ, ലൈൻ നമ്പർ ടേബിളുകൾ, എന്നാൽ ലോക്കൽ വേരിയബിളുകളെക്കുറിച്ച് ഒരു വിവരവുമില്ല.

ലെവൽ 3-ൽ ഉള്ള എല്ലാ മാക്രോ നിർവചനങ്ങളും പോലുള്ള അധിക വിവരങ്ങൾ ഉൾപ്പെടുന്നു
പ്രോഗ്രാം. നിങ്ങൾ ഉപയോഗിക്കുമ്പോൾ ചില ഡീബഗ്ഗറുകൾ മാക്രോ വിപുലീകരണത്തെ പിന്തുണയ്ക്കുന്നു -g3.

-gdwarf-2 ഒരു സംയോജിത ഡീബഗ് ലെവൽ സ്വീകരിക്കുന്നില്ല, കാരണം ജിസിസി ഒരു പിന്തുണയ്ക്കുന്നു
ഓപ്ഷൻ -gdwarf DWARF-ന്റെ പതിപ്പ് 1-ൽ ഡീബഗ് വിവരങ്ങൾ സൃഷ്‌ടിക്കുക എന്നർത്ഥം
ഫോർമാറ്റ് (ഇത് പതിപ്പ് 2 ൽ നിന്ന് വളരെ വ്യത്യസ്തമാണ്), ഇത് വളരെ ആശയക്കുഴപ്പമുണ്ടാക്കുമായിരുന്നു.
ആ ഡീബഗ് ഫോർമാറ്റ് കാലഹരണപ്പെട്ടതാണ്, എന്നാൽ ഇപ്പോൾ ഓപ്ഷൻ മാറ്റാൻ കഴിയില്ല. പകരം ഉപയോഗിക്കുക
അധികമായി -gലെവൽ DWARF-നുള്ള ഡീബഗ് ലെവൽ മാറ്റാനുള്ള ഓപ്ഷൻ.

-gtoggle
ഡീബഗ് വിവരങ്ങളുടെ ജനറേഷൻ ഓഫാക്കുക, ഈ ഓപ്‌ഷൻ ഉപേക്ഷിക്കുകയാണെങ്കിൽ അത് സൃഷ്‌ടിക്കുക, അല്ലെങ്കിൽ അത് ഓണാക്കുക
അല്ലാത്തപക്ഷം ലെവൽ 2-ൽ. കമാൻഡ് ലൈനിലെ ഈ ആർഗ്യുമെന്റിന്റെ സ്ഥാനം ഇല്ല
കാര്യം; മറ്റെല്ലാ ഓപ്‌ഷനുകളും പ്രോസസ്സ് ചെയ്‌തതിന് ശേഷം ഇത് പ്രാബല്യത്തിൽ വരും, അത് അങ്ങനെ മാത്രം ചെയ്യുന്നു
ഒരിക്കൽ, എത്ര പ്രാവശ്യം കൊടുത്താലും. ഇത് പ്രധാനമായും ഉപയോഗിക്കാനാണ് ഉദ്ദേശിക്കുന്നത്
-fcompare-debug.

-fsanitize=വിലാസം
വേഗത്തിലുള്ള മെമ്മറി പിശക് കണ്ടെത്തുന്ന അഡ്രസ് സാനിറ്റൈസർ പ്രവർത്തനക്ഷമമാക്കുക. മെമ്മറി ആക്സസ് നിർദ്ദേശങ്ങളാണ്
പരിധിക്ക് പുറത്തുള്ളതും ഉപയോഗിക്കാത്തതുമായ ബഗുകൾ കണ്ടെത്തുന്നതിനുള്ള ഉപകരണം. കാണുക
<https://github.com/google/sanitizers/wiki/AddressSanitizer> കൂടുതൽ വിവരങ്ങൾക്ക്. ദി
റൺ-ടൈം സ്വഭാവം ഉപയോഗിച്ച് സ്വാധീനിക്കാൻ കഴിയും ASAN_OPTIONS പരിസ്ഥിതി വേരിയബിൾ. എപ്പോൾ
"help=1" ആയി സജ്ജീകരിക്കുക, ലഭ്യമായ ഓപ്ഷനുകൾ ഇൻസ്ട്രുമെൻഡിന്റെ ആരംഭത്തിൽ കാണിക്കുന്നു
പ്രോഗ്രാം. കാണുക
<https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags> ഒരു
പിന്തുണയ്ക്കുന്ന ഓപ്ഷനുകളുടെ പട്ടിക.

-fsanitize=കേർണൽ-വിലാസം
Linux കേർണലിനായി AddressSanitizer പ്രവർത്തനക്ഷമമാക്കുക. കാണുകhttps://github.com/google/kasan/wiki>
കൂടുതൽ വിവരങ്ങൾക്ക്.

-fsanitize=ത്രെഡ്
വേഗതയേറിയ ഡാറ്റാ റേസ് ഡിറ്റക്ടറായ ThreadSanitizer പ്രവർത്തനക്ഷമമാക്കുക. മെമ്മറി ആക്സസ് നിർദ്ദേശങ്ങളാണ്
ഡാറ്റ റേസ് ബഗുകൾ കണ്ടെത്തുന്നതിനുള്ള ഉപകരണം. കാണുക
<https://github.com/google/sanitizers/wiki#threadsanitizer> കൂടുതൽ വിവരങ്ങൾക്ക്. ഓട്ടം-
ഉപയോഗിച്ച് സമയ സ്വഭാവത്തെ സ്വാധീനിക്കാൻ കഴിയും TSAN_OPTIONS പരിസ്ഥിതി വേരിയബിൾ; കാണുക
<https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags> ഒരു ലിസ്റ്റിനായി
പിന്തുണയ്ക്കുന്ന ഓപ്ഷനുകൾ.

-fsanitize=ചോർച്ച
മെമ്മറി ലീക്ക് ഡിറ്റക്ടറായ LeakSanitizer പ്രവർത്തനക്ഷമമാക്കുക. ഈ ഓപ്‌ഷൻ ലിങ്ക് ചെയ്യുന്നതിന് മാത്രം പ്രധാനമാണ്
എക്സിക്യൂട്ടബിളുകളും ഇല്ലെങ്കിൽ -fsanitize=വിലാസം വേണ്ടാ -fsanitize=ത്രെഡ് ഉപയോഗിക്കുന്നു. അതിൽ
"malloc" ഉം മറ്റും അസാധുവാക്കുന്ന ഒരു ലൈബ്രറിയുമായി എക്സിക്യൂട്ടബിൾ ലിങ്ക് ചെയ്ത സാഹചര്യത്തിൽ
അലോക്കേറ്റർ പ്രവർത്തനങ്ങൾ. കാണുക
<https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer> കൂടുതൽ കാര്യങ്ങൾക്കായി
വിശദാംശങ്ങൾ. റൺ-ടൈം സ്വഭാവം ഉപയോഗിച്ച് സ്വാധീനിക്കാൻ കഴിയും LSAN_OPTIONS പരിസ്ഥിതി
വേരിയബിൾ.

-fsanitize=നിർവചിക്കപ്പെട്ടിട്ടില്ല
നിർവചിക്കാത്ത പെരുമാറ്റ ഡിറ്റക്ടറായ UndefinedBehaviorSanitizer പ്രവർത്തനക്ഷമമാക്കുക. വിവിധ
റൺടൈമിൽ നിർവചിക്കപ്പെടാത്ത സ്വഭാവം കണ്ടെത്തുന്നതിനുള്ള ഉപകരണമാണ് കണക്കുകൂട്ടലുകൾ. നിലവിലുള്ളത്
ഉപ ഓപ്‌ഷനുകൾ ഇവയാണ്:

-fsanitize=ഷിഫ്റ്റ്
ഒരു ഷിഫ്റ്റ് ഓപ്പറേഷന്റെ ഫലം ഇല്ലെന്ന് പരിശോധിക്കുന്നത് ഈ ഓപ്ഷൻ പ്രാപ്തമാക്കുന്നു
നിർവചിക്കാത്തത്. കൃത്യമായി നിർവചിക്കാത്തതായി കണക്കാക്കുന്നത് ചെറുതായി വ്യത്യാസപ്പെട്ടിരിക്കുന്നു എന്നത് ശ്രദ്ധിക്കുക
C, C++ എന്നിവയ്ക്കിടയിലും ISO C90, C99 എന്നിവയ്ക്കിടയിലും.

-fsanitize=പൂർണ്ണസംഖ്യ-ഡിവൈഡ്-ബൈ-പൂജ്യം
"INT_MIN / -1" ഡിവിഷനും പൂജ്യവും കൊണ്ട് പൂർണ്ണസംഖ്യാ വിഭജനം കണ്ടെത്തുക.

-fsanitize=എത്താനാകില്ല
ഈ ഓപ്ഷൻ ഉപയോഗിച്ച്, കമ്പൈലർ "__builtin_unreachable" കോളിനെ a ആയി മാറ്റുന്നു
പകരം ഡയഗ്നോസ്റ്റിക്സ് സന്ദേശ കോൾ. "__builtin_unreachable" കോളിൽ എത്തുമ്പോൾ,
പെരുമാറ്റം നിർവചിക്കപ്പെട്ടിട്ടില്ല.

-fsanitize=vla-bound
ഒരു വേരിയബിൾ നീളത്തിന്റെ വലുപ്പം പരിശോധിക്കാൻ ഈ ഓപ്ഷൻ കംപൈലറോട് നിർദ്ദേശിക്കുന്നു
അറേ പോസിറ്റീവ് ആണ്.

-fsanitize=null
ഈ ഓപ്ഷൻ പോയിന്റർ പരിശോധന പ്രവർത്തനക്ഷമമാക്കുന്നു. പ്രത്യേകിച്ചും, ഉപയോഗിച്ച് നിർമ്മിച്ച ആപ്ലിക്കേഷൻ
ഓൺ ചെയ്‌തിരിക്കുന്ന ഈ ഓപ്‌ഷൻ അത് dereference ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ ഒരു പിശക് സന്ദേശം നൽകും
NULL പോയിന്റർ, അല്ലെങ്കിൽ ഒരു റഫറൻസ് (ഒരുപക്ഷേ ഒരു മൂല്യ റഫറൻസ്) ഒരു NULL-ലേക്ക് ബന്ധിപ്പിച്ചിട്ടുണ്ടെങ്കിൽ
പോയിന്റർ, അല്ലെങ്കിൽ ഒരു NULL പോയിന്റർ ചൂണ്ടിക്കാണിച്ച ഒരു വസ്തുവിൽ ഒരു രീതി അഭ്യർത്ഥിച്ചാൽ.

-fsanitize=മടങ്ങുക
ഈ ഓപ്‌ഷൻ റിട്ടേൺ സ്റ്റേറ്റ്‌മെന്റ് പരിശോധന പ്രവർത്തനക്ഷമമാക്കുന്നു. ഈ ഓപ്ഷൻ ഉപയോഗിച്ച് നിർമ്മിച്ച പ്രോഗ്രാമുകൾ
അസാധുവായ ഫംഗ്‌ഷന്റെ അവസാനമാകുമ്പോൾ ഓണാക്കിയത് ഒരു പിശക് സന്ദേശം നൽകും
യഥാർത്ഥത്തിൽ ഒരു മൂല്യം തിരികെ നൽകാതെ എത്തി. ഈ ഓപ്ഷൻ C++ ൽ മാത്രം പ്രവർത്തിക്കുന്നു.

-fsanitize=signed-integer-overflow
ഈ ഓപ്‌ഷൻ സൈൻ ചെയ്‌ത പൂർണ്ണസംഖ്യ ഓവർഫ്ലോ പരിശോധന പ്രവർത്തനക്ഷമമാക്കുന്നു. അതിന്റെ ഫലം ഞങ്ങൾ പരിശോധിക്കുന്നു
ഒപ്പിട്ടതിൽ "+", "*", കൂടാതെ ഏകീകൃതവും ബൈനറിയും "-" കവിഞ്ഞൊഴുകുന്നില്ല
ഗണിതശാസ്ത്രം. ശ്രദ്ധിക്കുക, പൂർണ്ണസംഖ്യ പ്രമോഷൻ നിയമങ്ങൾ കണക്കിലെടുക്കണം. അതാണ്,
ഇനിപ്പറയുന്നത് ഓവർഫ്ലോ അല്ല:

ഒപ്പിട്ട char a = SCHAR_MAX;
a++;

-fsanitize=പരിധികൾ
ഈ ഓപ്ഷൻ അറേ ബൗണ്ടുകളുടെ ഇൻസ്ട്രുമെന്റേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു. പരിധിക്ക് പുറത്തുള്ള വിവിധ
പ്രവേശനങ്ങൾ കണ്ടെത്തി. ഫ്ലെക്സിബിൾ അറേ അംഗങ്ങൾ, ഫ്ലെക്സിബിൾ അറേ അംഗങ്ങൾ പോലെയുള്ള അറേകൾ,
കൂടാതെ സ്റ്റാറ്റിക് സ്റ്റോറേജുള്ള വേരിയബിളുകളുടെ ഇനീഷ്യലൈസറുകൾ ഇൻസ്ട്രുമെന്റ് ചെയ്തിട്ടില്ല.

-fsanitize=അലൈൻമെന്റ്
പോയിന്ററുകൾ ഒഴിവാക്കപ്പെടുമ്പോൾ അവയുടെ വിന്യാസം പരിശോധിക്കുന്നത് ഈ ഓപ്ഷൻ പ്രാപ്തമാക്കുന്നു,
അല്ലെങ്കിൽ ഒരു റഫറൻസ് വേണ്ടത്ര വിന്യസിച്ചിട്ടില്ലാത്ത ടാർഗെറ്റുമായി ബന്ധിപ്പിച്ചിരിക്കുമ്പോൾ, അല്ലെങ്കിൽ ഒരു രീതി അല്ലെങ്കിൽ
വേണ്ടത്ര വിന്യസിച്ചിട്ടില്ലാത്ത ഒബ്‌ജക്‌റ്റിൽ കൺസ്‌ട്രക്‌റ്റർ അഭ്യർത്ഥിക്കുന്നു.

-fsanitize=വസ്തു-വലുപ്പം
ഈ ഓപ്ഷൻ ഉപയോഗിച്ച് മെമ്മറി റഫറൻസുകളുടെ ഇൻസ്ട്രുമെന്റേഷൻ സാധ്യമാക്കുന്നു
"__builtin_object_size" ഫംഗ്‌ഷൻ. പരിധിക്ക് പുറത്തുള്ള വിവിധ പോയിന്റർ ആക്‌സസുകളാണ്
കണ്ടെത്തി.

-fsanitize=float-divide-by-zero
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഡിവിഷൻ പൂജ്യം കൊണ്ട് കണ്ടെത്തുക. സമാനമായ മറ്റ് ഓപ്ഷനുകളിൽ നിന്ന് വ്യത്യസ്തമായി,
-fsanitize=float-divide-by-zero വഴി പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല -fsanitize=നിർവചിക്കപ്പെട്ടിട്ടില്ല, മുതലുള്ള
ഫ്ലോട്ടിംഗ് പോയിന്റ് പൂജ്യം കൊണ്ട് വിഭജിക്കുന്നത് അനന്തതകൾ നേടുന്നതിനുള്ള നിയമാനുസൃതമായ മാർഗമാണ്
ഒപ്പം NaN-കളും.

-fsanitize=float-cast-overflow
ഈ ഓപ്‌ഷൻ ഫ്ലോട്ടിംഗ്-പോയിന്റ് തരത്തിലേക്കുള്ള പൂർണ്ണസംഖ്യ പരിവർത്തന പരിശോധന പ്രവർത്തനക്ഷമമാക്കുന്നു. ഞങ്ങൾ പരിശോധിക്കുന്നു
പരിവർത്തനത്തിന്റെ ഫലം കവിഞ്ഞൊഴുകുന്നില്ലെന്ന്. സമാനമായ മറ്റുള്ളവയിൽ നിന്ന് വ്യത്യസ്തമായി
ഓപ്ഷനുകൾ, -fsanitize=float-cast-overflow വഴി പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല -fsanitize=നിർവചിക്കപ്പെട്ടിട്ടില്ല.
"FE_INVALID" ഒഴിവാക്കലുകൾ പ്രവർത്തനക്ഷമമാക്കിയപ്പോൾ ഈ ഓപ്‌ഷൻ നന്നായി പ്രവർത്തിക്കുന്നില്ല.

-fsanitize=nonnull-attribute
ഈ ഓപ്‌ഷൻ കോളുകളുടെ ഇൻസ്ട്രുമെന്റേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു, അസാധുവായ മൂല്യങ്ങൾ ഇല്ലേ എന്ന് പരിശോധിക്കുന്നു
"nonnull" ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് നോൺ-നൾ മൂല്യം ആവശ്യമാണെന്ന് അടയാളപ്പെടുത്തിയ ആർഗ്യുമെന്റുകളിലേക്ക് കടന്നു
ആട്രിബ്യൂട്ട്.

-fsanitize=returns-nonnull-attribute
അടയാളപ്പെടുത്തിയ ഫംഗ്‌ഷനുകളിൽ റിട്ടേൺ സ്റ്റേറ്റ്‌മെന്റുകളുടെ ഇൻസ്ട്രുമെന്റേഷൻ ഈ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു
"returns_nonnull" ഫംഗ്‌ഷൻ ആട്രിബ്യൂട്ട്, അത്തരത്തിൽ നിന്ന് അസാധുവായ മൂല്യങ്ങൾ തിരികെ നൽകുന്നത് കണ്ടെത്തുന്നതിന്
പ്രവർത്തനങ്ങൾ.

-fsanitize=bool
ബൂളിൽ നിന്നുള്ള ലോഡുകളുടെ ഇൻസ്ട്രുമെന്റേഷൻ ഈ ഐച്ഛികം സാധ്യമാക്കുന്നു. 0/1 അല്ലാത്ത ഒരു മൂല്യമാണെങ്കിൽ
ലോഡ് ചെയ്തു, ഒരു റൺ-ടൈം പിശക് ഇഷ്യൂ ചെയ്തു.

-fsanitize=enum
ഈ ഐച്ഛികം ഒരു enum തരത്തിൽ നിന്നുള്ള ലോഡുകളുടെ ഇൻസ്ട്രുമെന്റേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു. ഒരു മൂല്യമാണെങ്കിൽ
enum തരത്തിനായുള്ള മൂല്യങ്ങളുടെ പരിധിക്ക് പുറത്ത് ലോഡ് ചെയ്തിരിക്കുന്നു, ഒരു റൺ-ടൈം പിശക്
ഇഷ്യൂചെയ്തു.

-fsanitize=vptr
ഈ ഓപ്‌ഷൻ C++ അംഗങ്ങളുടെ ഫംഗ്‌ഷൻ കോളുകൾ, അംഗങ്ങളുടെ ആക്‌സസ് എന്നിവയുടെ ഇൻസ്‌ട്രുമെന്റേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു
പരിശോധിച്ചുറപ്പിക്കുന്നതിനായി, ബേസ്, ഡെറൈവ്ഡ് ക്ലാസുകളിലേക്കുള്ള പോയിന്ററുകൾ തമ്മിലുള്ള ചില പരിവർത്തനങ്ങൾ
പരാമർശിച്ച ഒബ്‌ജക്റ്റിന് ശരിയായ ഡൈനാമിക് തരം ഉണ്ട്.

അതേസമയം -ftrapv ഒപ്പിട്ട ഓവർഫ്ലോകൾ പുറപ്പെടുവിക്കുന്നതിനുള്ള കെണികൾ, -fsanitize=നിർവചിക്കപ്പെട്ടിട്ടില്ല
ഒരു ഡയഗ്നോസ്റ്റിക് സന്ദേശം നൽകുന്നു. ഇത് നിലവിൽ ഭാഷകളുടെ സി കുടുംബത്തിൽ മാത്രമേ പ്രവർത്തിക്കൂ.

-fno-sanitize=എല്ലാം
ഈ ഓപ്ഷൻ മുമ്പ് പ്രവർത്തനക്ഷമമാക്കിയ എല്ലാ സാനിറ്റൈസറുകളും പ്രവർത്തനരഹിതമാക്കുന്നു. -fsanitize=എല്ലാം അല്ല
ചില സാനിറ്റൈസറുകൾ ഒരുമിച്ച് ഉപയോഗിക്കാൻ കഴിയാത്തതിനാൽ അനുവദിച്ചിരിക്കുന്നു.

-fasan-shadow-offset=അക്കം
അഡ്രസ് സാനിറ്റൈസർ ചെക്കുകളിൽ ഇഷ്‌ടാനുസൃത ഷാഡോ ഓഫ്‌സെറ്റ് ഉപയോഗിക്കാൻ ഈ ഓപ്ഷൻ GCC യെ പ്രേരിപ്പിക്കുന്നു. അത്
കേർണലിൽ വ്യത്യസ്ത ഷാഡോ മെമ്മറി ലേഔട്ടുകൾ പരീക്ഷിക്കാൻ ഉപയോഗപ്രദമാണ്
വിലാസം സാനിറ്റൈസർ.

-fsanitize-recover[=തിരഞ്ഞെടുക്കുന്നു]
-fsanitize-recover= കോമയിൽ സൂചിപ്പിച്ചിരിക്കുന്ന സാനിറ്റൈസറുകൾക്കുള്ള പിശക് വീണ്ടെടുക്കൽ മോഡ് നിയന്ത്രിക്കുന്നു-
വേർതിരിച്ച പട്ടിക തിരഞ്ഞെടുക്കുന്നു. ഒരു സാനിറ്റൈസർ ഘടകത്തിനായി ഈ ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നത് അതിന് കാരണമാകുന്നു
ഒരു പിശകും സംഭവിക്കാത്തതുപോലെ പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുന്നത് തുടരാൻ ശ്രമിക്കുക. ഇതിനർത്ഥം ഒന്നിലധികം എന്നാണ്
റൺടൈം പിശകുകൾ ഒരൊറ്റ പ്രോഗ്രാം റണ്ണിലും എക്സിറ്റ് കോഡിലും റിപ്പോർട്ട് ചെയ്യാവുന്നതാണ്
പിശകുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടുമ്പോൾ പോലും പ്രോഗ്രാം വിജയത്തെ സൂചിപ്പിക്കാം. ദി
-fno-sanitize-recover= ഈ സ്വഭാവം മാറ്റാൻ ഓപ്ഷൻ ഉപയോഗിക്കാം: ആദ്യത്തേത് മാത്രം
കണ്ടെത്തിയ പിശക് റിപ്പോർട്ട് ചെയ്യപ്പെടുകയും പ്രോഗ്രാം പിന്നീട് പൂജ്യമല്ലാത്ത എക്സിറ്റ് കോഡ് ഉപയോഗിച്ച് പുറത്തുകടക്കുകയും ചെയ്യുന്നു.

നിലവിൽ ഈ സവിശേഷത മാത്രമേ പ്രവർത്തിക്കൂ -fsanitize=നിർവചിക്കപ്പെട്ടിട്ടില്ല (അതിന്റെ ഉപഓപ്‌ഷനുകൾ ഒഴികെ
വേണ്ടി -fsanitize=എത്താനാകില്ല ഒപ്പം -fsanitize=മടങ്ങുക), -fsanitize=float-cast-overflow,
-fsanitize=float-divide-by-zero ഒപ്പം -fsanitize=കേർണൽ-വിലാസം. ഈ സാനിറ്റൈസറുകൾക്ക്
പിശക് വീണ്ടെടുക്കൽ സ്ഥിരസ്ഥിതിയായി ഓണാണ്. -fsanitize-recover=എല്ലാം ഒപ്പം
-fno-sanitize-recover=എല്ലാം അംഗീകരിക്കപ്പെടുന്നു, ആദ്യത്തേത് എല്ലാവർക്കും വീണ്ടെടുക്കൽ പ്രാപ്തമാക്കുന്നു
അതിനെ പിന്തുണയ്ക്കുന്ന സാനിറ്റൈസറുകൾ, രണ്ടാമത്തേത് എല്ലാ സാനിറ്റൈസറുകൾക്കും വീണ്ടെടുക്കൽ പ്രവർത്തനരഹിതമാക്കുന്നു
അതിനെ പിന്തുണയ്ക്കുക.

വ്യക്തമല്ലാത്ത വാക്യഘടന തിരഞ്ഞെടുക്കുന്നു പാരാമീറ്റർ ഒഴിവാക്കിയിരിക്കുന്നു. ഇതിന് തുല്യമാണ്

-fsanitize-recover=defined,float-cast-overflow,float-divide-by-zero

സമാനമായി -fno-sanitize-recover എന്നതിന് തുല്യമാണ്

-fno-sanitize-recover=defined,float-cast-overflow,float-divide-by-zero

-fsanitize-undefined-trap-on-error
ദി -fsanitize-undefined-trap-on-error റിപ്പോർട്ട് ചെയ്യാൻ കംപൈലറോട് ഓപ്ഷൻ നിർദ്ദേശിക്കുന്നു
ഒരു "libubsan" ലൈബ്രറി ദിനചര്യയ്ക്ക് പകരം "__builtin_trap" ഉപയോഗിച്ചുള്ള നിർവചിക്കാത്ത പെരുമാറ്റം.
"libubsan" ലൈബ്രറി ആവശ്യമില്ല, ലിങ്ക് ചെയ്തിട്ടില്ല എന്നതാണ് ഇതിന്റെ ഗുണം
ഇൻ, അതിനാൽ ഇത് ഫ്രീസ്റ്റാൻഡിംഗ് പരിതസ്ഥിതികളിൽ പോലും ഉപയോഗിക്കാവുന്നതാണ്.

-fcheck-പോയിന്റർ-ബൗണ്ടുകൾ
പോയിന്റർ ബൗണ്ട്സ് ചെക്കർ ഇൻസ്ട്രുമെന്റേഷൻ പ്രവർത്തനക്ഷമമാക്കുക. ഓരോ മെമ്മറി റഫറൻസും ഉപകരണമാണ്
അതുമായി ബന്ധപ്പെട്ട അതിരുകൾക്കെതിരായ മെമ്മറി ആക്‌സസ്സിനായി ഉപയോഗിക്കുന്ന പോയിന്ററിന്റെ പരിശോധനകൾക്കൊപ്പം
പോയിന്റർ.

നിലവിൽ ഇന്റൽ എം‌പി‌എക്‌സിനായി ഒരു നടപ്പാക്കൽ മാത്രമേ ലഭ്യമുള്ളൂ, അതിനാൽ x86 ടാർഗെറ്റും
-എംഎംപിഎക്സ് ഈ സവിശേഷത പ്രവർത്തനക്ഷമമാക്കാൻ ആവശ്യമാണ്. MPX-അടിസ്ഥാനത്തിലുള്ള ഇൻസ്ട്രുമെന്റേഷൻ ആവശ്യമാണ്
ഹാർഡ്‌വെയറിൽ MPX പ്രവർത്തനക്ഷമമാക്കുന്നതിനും പരിധി ലംഘന സിഗ്നലുകൾ കൈകാര്യം ചെയ്യുന്നതിനുമുള്ള റൺടൈം ലൈബ്രറി. എഴുതിയത്
എപ്പോൾ സ്ഥിരസ്ഥിതി -fcheck-പോയിന്റർ-ബൗണ്ടുകൾ ഒപ്പം -എംഎംപിഎക്സ് ഒരു പ്രോഗ്രാം ലിങ്ക് ചെയ്യാൻ ഓപ്ഷനുകൾ ഉപയോഗിക്കുന്നു, the
ഇതിനെതിരെ ജിസിസി ഡ്രൈവർ ലിങ്കുകൾ libmpx റൺടൈം ലൈബ്രറിയും libmpxwrappers പുസ്തകശാല. അത്
ഈ ഓപ്ഷനെ പിന്തുണയ്‌ക്കുന്ന സാഹചര്യത്തിൽ ഒരു ലിങ്കറിലേക്ക് '-z bndplt' കൈമാറുന്നു (ഇത് പരിശോധിച്ചു
libmpx കോൺഫിഗറേഷനിൽ). ലിങ്കറിന്റെ പഴയ പതിപ്പുകൾ ഓപ്‌ഷൻ അവഗണിക്കാനിടയുണ്ടെന്ന കാര്യം ശ്രദ്ധിക്കുക. സ്വർണ്ണം
ലിങ്കർ '-z bndplt' ഓപ്ഷനെ പിന്തുണയ്ക്കുന്നില്ല. എല്ലാ ലിങ്കറിലും '-z bndplt' പിന്തുണയില്ലാതെ
ഡൈനാമിക് ലൈബ്രറികളിലേക്കുള്ള കോളുകൾക്ക് പാസായ പരിധികൾ നഷ്‌ടപ്പെടുകയും മൊത്തത്തിലുള്ള സംരക്ഷണ നില കുറയ്ക്കുകയും ചെയ്യുന്നു. അത്
'-z bndplt' പിന്തുണയുള്ള ലിങ്കർ ഉപയോഗിക്കാൻ വളരെ ശുപാർശ ചെയ്യുന്നു. അത്തരം ലിങ്കർ ഇല്ലെങ്കിൽ
ലഭ്യമാണ്, അത് എപ്പോഴും ഉപയോഗിക്കാൻ നിർദ്ദേശിക്കുന്നു -static-libmpxwrappers മികച്ച സംരക്ഷണത്തിനായി
നില അല്ലെങ്കിൽ ഉപയോഗം - സ്റ്റാറ്റിക് ഡൈനാമിക് ലൈബ്രറികളിലേക്കുള്ള ബാഹ്യ കോളുകൾ പൂർണ്ണമായും ഒഴിവാക്കുന്നതിന്. MPX-
ഡീബഗ്ഗിംഗിനായി അടിസ്ഥാനമാക്കിയുള്ള ഇൻസ്ട്രുമെന്റേഷൻ ഉപയോഗിക്കാം കൂടാതെ ഉൽപ്പാദനത്തിലും ഉൾപ്പെടുത്താം
പ്രോഗ്രാം സുരക്ഷ വർദ്ധിപ്പിക്കുന്നതിനുള്ള കോഡ്. ഉപയോഗത്തെ ആശ്രയിച്ച്, നിങ്ങൾക്ക് വ്യത്യസ്തമായിരിക്കാം
റൺടൈം ലൈബ്രറിയുടെ ആവശ്യകതകൾ. MPX റൺടൈം ലൈബ്രറിയുടെ നിലവിലെ പതിപ്പ്
ഒരു ഡീബഗ്ഗിംഗ് ടൂളായി ഉപയോഗിക്കുന്നതിന് കൂടുതൽ ഓറിയന്റഡ് ആണ്. MPX റൺടൈം ലൈബ്രറി ഉപയോഗം സൂചിപ്പിക്കുന്നു
-lpthread. ഇതും കാണുക -static-libmpx. റൺടൈം ലൈബ്രറി സ്വഭാവത്തെ സ്വാധീനിക്കാൻ കഴിയും
വിവിധ ഉപയോഗിക്കുന്നു CHKP_RT_* പരിസ്ഥിതി വേരിയബിളുകൾ. കാണുക
<https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler> കൂടുതൽ കാര്യങ്ങൾക്കായി
വിശദാംശങ്ങൾ.

ജനറേറ്റഡ് ഇൻസ്ട്രുമെന്റേഷൻ പലതരത്തിൽ നിയന്ത്രിക്കപ്പെടാം -fchkp-* ഓപ്ഷനുകൾ വഴിയും
"bnd_variable_size" ഘടന ഫീൽഡ് ആട്രിബ്യൂട്ടും "bnd_legacy", "bnd_instrument" എന്നിവയും
ഫംഗ്ഷൻ ആട്രിബ്യൂട്ടുകൾ. നിയന്ത്രിക്കുന്നതിനായി നിരവധി അന്തർനിർമ്മിത പ്രവർത്തനങ്ങളും ജിസിസി നൽകുന്നു
പോയിന്റർ ബൗണ്ട്സ് ചെക്കർ.

-fchkp-check-incomplete-type
അപൂർണ്ണമായ തരം വേരിയബിളുകൾക്കായി പോയിന്റർ ബൗണ്ട് ചെക്കുകൾ സൃഷ്ടിക്കുക. പ്രവർത്തനക്ഷമമാക്കിയത്
സ്ഥിരസ്ഥിതിയായി.

-fchkp-ഇടുങ്ങിയ പരിധികൾ
ഒബ്‌ജക്റ്റ് ഫീൽഡുകളിലേക്കുള്ള പോയിന്ററുകൾക്കായി പോയിന്റർ ബൗണ്ട്സ് ചെക്കർ ഉപയോഗിക്കുന്ന നിയന്ത്രണ പരിധികൾ. എങ്കിൽ
ചുരുക്കൽ പ്രവർത്തനക്ഷമമാക്കിയ ശേഷം ഫീൽഡ് ബൗണ്ടുകൾ ഉപയോഗിക്കുന്നു. അല്ലെങ്കിൽ ഒബ്ജക്റ്റ് ബൗണ്ടുകൾ ഉപയോഗിക്കുന്നു.
ഇതും കാണുക -fchkp-ഇടുങ്ങിയത് മുതൽ അകത്തെ-അറേ ഒപ്പം -fchkp-fist-field-has-own-bounds.
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-fchkp-fist-field-has-own-bounds
ആദ്യത്തേതിന്റെ വിലാസത്തിനായി ഇടുങ്ങിയ അതിരുകൾ ഉപയോഗിക്കാൻ പോയിന്റർ ബൗണ്ട്സ് ചെക്കറിനെ നിർബന്ധിക്കുന്നു
ഘടനയിൽ ഫീൽഡ്. ഡിഫോൾട്ടായി, ആദ്യ ഫീൽഡിലേക്കുള്ള ഒരു പോയിന്ററിന് സമാന പരിധികളുണ്ട്
മുഴുവൻ ഘടനയിലേക്കുള്ള ഒരു സൂചനയായി.

-fchkp-ഇടുങ്ങിയത് മുതൽ അകത്തെ-അറേ
നെസ്റ്റഡ് ആണെങ്കിൽ ഏറ്റവും അകത്തെ അറേകളുടെ അതിരുകൾ ഉപയോഗിക്കാൻ പോയിന്റർ ബൗണ്ട്സ് ചെക്കറിനെ നിർബന്ധിക്കുന്നു
സ്റ്റാറ്റിക് അറേ ആക്സസ്. ഡിഫോൾട്ടായി ഈ ഓപ്‌ഷൻ അപ്രാപ്‌തമാക്കി, ഏറ്റവും പുറത്തുള്ളതിന്റെ അതിരുകൾ
അറേ ഉപയോഗിക്കുന്നു.

-fchkp-ഒപ്റ്റിമൈസ്
പോയിന്റർ ബൗണ്ട്സ് ചെക്കർ ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനക്ഷമമാക്കുന്നു. ഒപ്റ്റിമൈസേഷനിൽ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കി
ലെവലുകൾ -O, -O2, -O3.

-fchkp-use-fast-string-functions
പോയിന്റർ മുഖേന സ്ട്രിംഗ് ഫംഗ്‌ഷനുകളുടെ *_nobnd പതിപ്പുകളുടെ ഉപയോഗം (ബൗണ്ടുകൾ പകർത്തുന്നില്ല) പ്രാപ്‌തമാക്കുന്നു
ബൗണ്ട്സ് ചെക്കർ. സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കി.

-fchkp-use-nochk-string-functions
പോയിന്റർ മുഖേന സ്ട്രിംഗ് ഫംഗ്‌ഷനുകളുടെ *_nochk പതിപ്പുകളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുന്നു (പരിധി പരിശോധിക്കുന്നില്ല)
ബൗണ്ട്സ് ചെക്കർ. സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കി.

-fchkp-use-static-bounds
പോയിന്റർ ബൗണ്ട്സ് ചെക്കറിനെ സ്റ്റാറ്റിക് ഹോൾഡിംഗ് ബൗണ്ടുകൾ സൃഷ്ടിക്കാൻ അനുവദിക്കുക
വേരിയബിളുകൾ. സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-fchkp-use-static-const-bounds
സ്ഥിരമായ അതിരുകൾക്കായി അവ ഓരോന്നും സൃഷ്ടിക്കുന്നതിനുപകരം സ്റ്റാറ്റിക്-ഇനീഷ്യലൈസ്ഡ് ബൗണ്ടുകൾ ഉപയോഗിക്കുക
അവ ആവശ്യമുള്ള സമയം. എപ്പോൾ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -fchkp-use-static-bounds പ്രാപ്തമാക്കി.

-fchkp-treat-zero-dynamic-size-as-infinite
ഈ ഓപ്‌ഷൻ ഉപയോഗിച്ച്, ചലനാത്മകമായി ലഭിച്ച വലുപ്പം പൂജ്യമായ അപൂർണ്ണമായ തരത്തിലുള്ള ഒബ്‌ജക്റ്റുകൾ
പോയിന്റർ ബൗണ്ട്സ് ചെക്കർ പകരം അനന്തമായ വലുപ്പമുള്ളതായി കണക്കാക്കുന്നു. ഈ ഓപ്ഷൻ
ഒരു ഗ്രന്ഥശാലയുമായി ഒരു പ്രോഗ്രാം ലിങ്ക് ചെയ്‌തിട്ടുണ്ടെങ്കിൽ, ചിലർക്ക് സൈസ് വിവരങ്ങൾ നഷ്‌ടമായാൽ സഹായകമായേക്കാം
ചിഹ്നങ്ങൾ. സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കി.

-fchkp-ചെക്ക്-റീഡ്
മെമ്മറിയിലേക്കുള്ള എല്ലാ റീഡ് ആക്‌സസ്സുകൾക്കുമായി ചെക്കുകൾ ജനറേറ്റുചെയ്യാൻ പോയിന്റർ ബൗണ്ട്സ് ചെക്കറിന് നിർദ്ദേശം നൽകുന്നു.
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-fchkp-ചെക്ക്-റൈറ്റ്
മെമ്മറിയിലേക്കുള്ള എല്ലാ റൈറ്റ് ആക്‌സസ്സുകൾക്കുമായി ചെക്കുകൾ സൃഷ്ടിക്കാൻ പോയിന്റർ ബൗണ്ട്സ് ചെക്കറിന് നിർദ്ദേശം നൽകുന്നു.
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-fchkp-സ്റ്റോർ-ബൗണ്ടുകൾ
പോയിന്റർ റൈറ്റുകൾക്കായി പരിധി സ്റ്റോറുകൾ സൃഷ്ടിക്കാൻ പോയിന്റർ ബൗണ്ട്സ് ചെക്കറിന് നിർദ്ദേശം നൽകുന്നു.
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-fchkp-instrument-കോളുകൾ
കോളുകളിലേക്ക് പോയിന്റർ ബൗണ്ടുകൾ കൈമാറാൻ പോയിന്റർ ബൗണ്ട്സ് ചെക്കറിന് നിർദേശം നൽകുന്നു. സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-fchkp-instrument-marked-only
ഉപയോഗിച്ച് അടയാളപ്പെടുത്തിയ ഫംഗ്‌ഷനുകൾക്ക് മാത്രം പോയിന്റർ ബൗണ്ട്സ് ചെക്കറിന് നിർദ്ദേശം നൽകുന്നു
"bnd_instrument" ആട്രിബ്യൂട്ട്. സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കി.

-fchkp-use-wrappers
ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകളിലേക്കുള്ള കോളുകളെ കോളുകൾ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കാൻ പോയിന്റർ ബൗണ്ട്സ് ചെക്കറിനെ അനുവദിക്കുന്നു
റാപ്പർ പ്രവർത്തനങ്ങൾ. എപ്പോൾ -fchkp-use-wrappers ഒരു പ്രോഗ്രാം ലിങ്ക് ചെയ്യാൻ ഉപയോഗിക്കുന്നു, GCC ഡ്രൈവർ
നേരെ സ്വയമേ ലിങ്കുകൾ libmpxwrappers. ഇതും കാണുക -static-libmpxwrappers. പ്രവർത്തനക്ഷമമാക്കി
സ്ഥിരസ്ഥിതിയായി.

-fdump-final-insns[=ഫയല്]
അവസാന ആന്തരിക പ്രാതിനിധ്യം (RTL) ഇതിലേക്ക് കളയുക ഫയല്. ഓപ്ഷണൽ ആർഗ്യുമെന്റ് ആണെങ്കിൽ
ഒഴിവാക്കി (അല്ലെങ്കിൽ ഫയല് "."), ഡംപ് ഫയലിന്റെ പേര് കൂട്ടിച്ചേർക്കുന്നതിലൂടെ നിർണ്ണയിക്കപ്പെടുന്നു
കംപൈലേഷൻ ഔട്ട്‌പുട്ട് ഫയലിന്റെ പേരിലേക്ക് ".gkd".

-fcompare-debug[=തിരഞ്ഞെടുക്കുന്നു]
സമാഹരിക്കുന്ന സമയത്ത് ഒരു പിശകും സംഭവിച്ചില്ലെങ്കിൽ, കംപൈലർ രണ്ടാമതും പ്രവർത്തിപ്പിക്കുക, ചേർക്കുക തിരഞ്ഞെടുക്കുന്നു ഒപ്പം
-fcompare-debug-second രണ്ടാമത്തെ സമാഹാരത്തിലേക്ക് പാസാക്കിയ വാദങ്ങളിലേക്ക്. കളയുക
രണ്ട് സമാഹാരങ്ങളിലും അന്തിമ ആന്തരിക പ്രാതിനിധ്യം, അവ വ്യത്യാസപ്പെട്ടാൽ ഒരു പിശക് പ്രിന്റ് ചെയ്യുക.

തുല്യ ചിഹ്നം ഒഴിവാക്കിയാൽ, സ്ഥിരസ്ഥിതി -gtoggle ഉപയോഗിക്കുന്നു.

പരിസ്ഥിതി വേരിയബിൾ GCC_COMPARE_DEBUG, നിർവചിച്ചാൽ, ശൂന്യവും പൂജ്യവുമല്ല,
പരോക്ഷമായി പ്രാപ്തമാക്കുന്നു -fcompare-debug. എങ്കിൽ GCC_COMPARE_DEBUG ഒരു സ്ട്രിംഗിലേക്ക് നിർവചിച്ചിരിക്കുന്നു
ഒരു ഡാഷിൽ ആരംഭിച്ച്, പിന്നീട് അത് ഉപയോഗിക്കുന്നു തിരഞ്ഞെടുക്കുന്നു, അല്ലെങ്കിൽ സ്ഥിരസ്ഥിതി -gtoggle is
ഉപയോഗിച്ചു.

-fcompare-debug=, തുല്യ ചിഹ്നത്തോടുകൂടിയ എന്നാൽ ഇല്ലാതെ തിരഞ്ഞെടുക്കുന്നു, എന്നതിന് തുല്യമാണ്
-fno-compare-debug, ഇത് അന്തിമ പ്രാതിനിധ്യത്തിന്റെ ഡംപിംഗ് പ്രവർത്തനരഹിതമാക്കുന്നു
രണ്ടാമത്തെ സമാഹാരം, പോലും തടയുന്നു GCC_COMPARE_DEBUG പ്രാബല്യത്തിൽ നിന്ന്.

സമയത്ത് പൂർണ്ണ കവറേജ് പരിശോധിക്കാൻ -fcompare-debug ടെസ്റ്റിംഗ്, സെറ്റ് GCC_COMPARE_DEBUG പറയാൻ
-fcompare-debug-not-overridden, ഏത് യഥാർത്ഥത്തിലും അസാധുവായ ഓപ്ഷനായി GCC നിരസിക്കുന്നു
സമാഹാരം (പ്രീപ്രോസസ്സിംഗ്, അസംബ്ലി അല്ലെങ്കിൽ ലിങ്കിംഗ് എന്നിവയ്ക്ക് പകരം). ഒരു മുന്നറിയിപ്പ് ലഭിക്കാൻ,
ക്രമീകരണം GCC_COMPARE_DEBUG ലേക്ക് -w%n-fcompare-debug അല്ല അസാധുവാക്കി ചെയ്യും.

-fcompare-debug-second
അഭ്യർത്ഥിച്ച രണ്ടാമത്തെ സമാഹാരത്തിനായി ഈ ഓപ്ഷൻ കംപൈലറിന് പരോക്ഷമായി കൈമാറുന്നു
by -fcompare-debug, മുന്നറിയിപ്പുകൾ നിശബ്ദമാക്കുന്നതിനും മറ്റ് ഓപ്ഷനുകൾ ഒഴിവാക്കുന്നതിനുമുള്ള ഓപ്ഷനുകൾക്കൊപ്പം
അത് ഫയലുകളിലേക്കോ സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലേക്കോ സൈഡ്-ഇഫക്റ്റ് കംപൈലർ ഔട്ട്പുട്ടുകൾക്ക് കാരണമാകും.
".gk" അടങ്ങിയിരിക്കുന്ന തരത്തിൽ ഡംപ് ഫയലുകളും സംരക്ഷിച്ചിരിക്കുന്ന താൽക്കാലിക ഫയലുകളും പുനർനാമകരണം ചെയ്യുന്നു
രണ്ടാമത്തെ സമാഹാരത്തിനിടയിൽ അധിക വിപുലീകരണം, അവ തിരുത്തിയെഴുതുന്നത് ഒഴിവാക്കാൻ
ആദ്യത്തേത് സൃഷ്ടിച്ചത്.

ഈ ഓപ്ഷൻ കംപൈലർ ഡ്രൈവറിലേക്ക് കൈമാറുമ്പോൾ, അത് കാരണമാകുന്നു ആദ്യം സമാഹാരം
ഒഴിവാക്കുക, ഇത് കംപൈലർ ശരിയായി ഡീബഗ്ഗിംഗ് ചെയ്യുന്നതല്ലാതെ മറ്റെന്തെങ്കിലും ഉപയോഗപ്രദമാക്കുന്നു.

-feliminate-dwarf2-dups
ഡ്യൂപ്ലിക്കേറ്റഡ് വിവരങ്ങൾ ഒഴിവാക്കിക്കൊണ്ട് DWARF 2 ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ കംപ്രസ് ചെയ്യുക
ഓരോ ചിഹ്നവും. DWARF 2 ഡീബഗ്ഗിംഗ് സൃഷ്ടിക്കുമ്പോൾ മാത്രമേ ഈ ഓപ്ഷൻ അർത്ഥമുള്ളൂ
ഉള്ള വിവരങ്ങൾ -gdwarf-2.

-femit-struct-debug-baseonly
എന്നതിന്റെ അടിസ്ഥാന നാമമായിരിക്കുമ്പോൾ മാത്രം സ്ട്രക്റ്റ് പോലുള്ള തരങ്ങൾക്കായി ഡീബഗ് വിവരങ്ങൾ പുറത്തുവിടുക
കംപൈലേഷൻ സോഴ്സ് ഫയൽ സ്ട്രക്റ്റ് നിർവചിച്ചിരിക്കുന്ന ഫയലിന്റെ അടിസ്ഥാന നാമവുമായി പൊരുത്തപ്പെടുന്നു.

ഈ ഓപ്ഷൻ ഡീബഗ്ഗിംഗ് വിവരങ്ങളുടെ വലുപ്പം ഗണ്യമായി കുറയ്ക്കുന്നു, പക്ഷേ
ഡീബഗ്ഗറിലേക്കുള്ള വിവരങ്ങളുടെ തരം കാര്യമായ നഷ്ടം. കാണുക
-ഫെമിറ്റ്-സ്ട്രക്റ്റ്-ഡീബഗ്-കുറച്ചു കുറച്ച് ആക്രമണാത്മക ഓപ്ഷനായി. കാണുക
-ഫെമിറ്റ്-സ്ട്രക്റ്റ്-ഡീബഗ്-വിശദമായ കൂടുതൽ വിശദമായ നിയന്ത്രണത്തിനായി.

ഈ ഓപ്ഷൻ DWARF 2-ൽ മാത്രമേ പ്രവർത്തിക്കൂ.

-ഫെമിറ്റ്-സ്ട്രക്റ്റ്-ഡീബഗ്-കുറച്ചു
എന്നതിന്റെ അടിസ്ഥാന നാമമായിരിക്കുമ്പോൾ മാത്രം സ്ട്രക്റ്റ് പോലുള്ള തരങ്ങൾക്കായി ഡീബഗ് വിവരങ്ങൾ പുറത്തുവിടുക
കംപൈലേഷൻ സോഴ്സ് ഫയൽ തരം നിർവചിച്ചിരിക്കുന്ന ഫയലിന്റെ അടിസ്ഥാന നാമവുമായി പൊരുത്തപ്പെടുന്നു,
struct ഒരു ടെംപ്ലേറ്റ് അല്ലെങ്കിൽ ഒരു സിസ്റ്റം ഹെഡറിൽ നിർവചിച്ചിട്ടില്ലെങ്കിൽ.

ഈ ഓപ്‌ഷൻ ഡീബഗ്ഗിംഗ് വിവരങ്ങളുടെ വലുപ്പം ഗണ്യമായി കുറയ്ക്കുന്നു, ചിലത്
ഡീബഗ്ഗറിലേക്കുള്ള വിവരങ്ങളുടെ തരം നഷ്ടമാകാൻ സാധ്യതയുണ്ട്. കാണുക -femit-struct-debug-baseonly
കൂടുതൽ ആക്രമണാത്മക ഓപ്ഷനായി. കാണുക -ഫെമിറ്റ്-സ്ട്രക്റ്റ്-ഡീബഗ്-വിശദമായ കൂടുതൽ വിശദമായി
നിയന്ത്രണം.

ഈ ഓപ്ഷൻ DWARF 2-ൽ മാത്രമേ പ്രവർത്തിക്കൂ.

-ഫെമിറ്റ്-സ്ട്രക്റ്റ്-ഡീബഗ്-വിശദമായ[=സ്പെക്-ലിസ്റ്റ്]
കംപൈലർ ഡീബഗ് വിവരങ്ങൾ സൃഷ്ടിക്കുന്ന ഘടന പോലുള്ള തരങ്ങൾ വ്യക്തമാക്കുക. ദി
വ്യത്യസ്‌ത ഒബ്‌ജക്‌റ്റ് ഫയലുകൾക്കിടയിൽ ഡ്യൂപ്ലിക്കേറ്റ് സ്‌ട്രക്‌റ്റ് ഡീബഗ് വിവരങ്ങൾ കുറയ്ക്കുക എന്നതാണ് ഉദ്ദേശ്യം
ഒരേ പ്രോഗ്രാമിനുള്ളിൽ.

ഈ ഓപ്ഷൻ ഒരു വിശദമായ പതിപ്പാണ് -ഫെമിറ്റ്-സ്ട്രക്റ്റ്-ഡീബഗ്-കുറച്ചു ഒപ്പം
-femit-struct-debug-baseonly, ഇത് മിക്ക ആവശ്യങ്ങൾക്കും സേവനം നൽകുന്നു.

ഒരു സ്പെസിഫിക്കേഷന് വാക്യഘടനയുണ്ട്[സംവിധാനം:|ഇൻഡ്:][ഓർഡർ:|ജനനം:](എന്തെങ്കിലും|sys|അടിസ്ഥാനം|ആരും)

ഓപ്ഷണൽ ഫസ്റ്റ് വാക്ക് സ്പെസിഫിക്കേഷനെ നേരിട്ട് ഉപയോഗിക്കുന്ന സ്ട്രക്റ്റുകളിലേക്ക് പരിമിതപ്പെടുത്തുന്നു
(സംവിധാനം:) അല്ലെങ്കിൽ പരോക്ഷമായി ഉപയോഗിക്കുന്നു (ഇൻഡ്:). ഒരു struct തരം അത് തരം ആയിരിക്കുമ്പോൾ നേരിട്ട് ഉപയോഗിക്കുന്നു
ഒരു വേരിയബിളിന്റെ, അംഗം. പരോക്ഷമായ ഉപയോഗങ്ങൾ സ്ട്രക്‌റ്റുകളിലേക്കുള്ള പോയിന്ററുകൾ വഴി ഉണ്ടാകുന്നു. അതാണ്,
അപൂർണ്ണമായ ഘടനയുടെ ഉപയോഗം സാധുവാണെങ്കിൽ, ഉപയോഗം പരോക്ഷമാണ്. ഒരു ഉദാഹരണമാണ് സ്ട്രക്റ്റ്
ഒന്ന് നേരിട്ട്; സ്ട്രക്റ്റ് രണ്ട് * പരോക്ഷമായി;.

ഓപ്ഷണൽ രണ്ടാമത്തെ വാക്ക് സ്പെസിഫിക്കേഷനെ സാധാരണ സ്ട്രക്റ്റുകളിലേക്ക് പരിമിതപ്പെടുത്തുന്നു (ഓർഡർ:) അഥവാ
പൊതുവായ ഘടനകൾ (ജനനം:). പൊതുവായ ഘടനകൾ വിശദീകരിക്കാൻ അൽപ്പം സങ്കീർണ്ണമാണ്. C++ ന്,
ഇവ ടെംപ്ലേറ്റ് ക്ലാസുകളുടെ അല്ലെങ്കിൽ ടെംപ്ലേറ്റ് അല്ലാത്ത ക്ലാസുകളുടെ വ്യക്തമല്ലാത്ത സ്പെഷ്യലൈസേഷനുകളാണ്
മുകളിൽ ഉള്ളിൽ. മറ്റ് പ്രോഗ്രാമിംഗ് ഭാഷകൾക്ക് ജനറിക്‌സ് ഉണ്ട്, പക്ഷേ
-ഫെമിറ്റ്-സ്ട്രക്റ്റ്-ഡീബഗ്-വിശദമായ അവ ഇതുവരെ നടപ്പിലാക്കിയിട്ടില്ല.

മൂന്നാമത്തെ വാക്ക് കംപൈലർ ഏത് സ്‌ട്രക്‌റ്റുകളുടെ ഉറവിട ഫയലുകൾ വ്യക്തമാക്കുന്നു
ഡീബഗ് വിവരങ്ങൾ പുറത്തുവിടണം. മൂല്യങ്ങൾ ആരും ഒപ്പം എന്തെങ്കിലും സാധാരണ അർത്ഥമുണ്ട്. ദി
മൂല്യം അടിസ്ഥാനം ടൈപ്പ് ഡിക്ലറേഷൻ ഉള്ള ഫയലിന്റെ പേരിന്റെ അടിസ്ഥാനം എന്നാണ് അർത്ഥമാക്കുന്നത്
ദൃശ്യമാകുന്നത് പ്രധാന കംപൈലേഷൻ ഫയലിന്റെ പേരിന്റെ അടിസ്ഥാനവുമായി പൊരുത്തപ്പെടണം. പ്രായോഗികമായി,
കംപൈൽ ചെയ്യുമ്പോൾ എന്നാണ് ഇതിനർത്ഥം foo.c, ഡീബഗ് വിവരങ്ങൾ തരങ്ങൾക്കായി സൃഷ്ടിക്കുന്നു
ആ ഫയലിൽ പ്രഖ്യാപിച്ചു foo.h, എന്നാൽ മറ്റ് ഹെഡർ ഫയലുകൾ അല്ല. മൂല്യം sys അർത്ഥം
അത്തരം തരങ്ങൾ തൃപ്തികരമാണ് അടിസ്ഥാനം അല്ലെങ്കിൽ സിസ്റ്റം അല്ലെങ്കിൽ കംപൈലർ തലക്കെട്ടുകളിൽ പ്രഖ്യാപിച്ചു.

നിങ്ങളുടെ ആപ്ലിക്കേഷന്റെ മികച്ച ക്രമീകരണം നിർണ്ണയിക്കാൻ നിങ്ങൾ പരീക്ഷണം നടത്തേണ്ടി വന്നേക്കാം.

സ്ഥിരസ്ഥിതി -femit-struct-debug-detailed=എല്ലാം.

ഈ ഓപ്ഷൻ DWARF 2-ൽ മാത്രമേ പ്രവർത്തിക്കൂ.

-fno-merge-debug-strings
ഡീബഗ്ഗിംഗ് വിവരങ്ങളിൽ സ്ട്രിംഗുകൾ ഒന്നിച്ച് ലയിപ്പിക്കാതിരിക്കാൻ ലിങ്കറിന് നിർദ്ദേശം നൽകുക
വ്യത്യസ്ത ഒബ്ജക്റ്റ് ഫയലുകളിൽ സമാനമാണ്. ലയിപ്പിക്കുന്നത് എല്ലാ അസംബ്ലർമാരും പിന്തുണയ്ക്കുന്നില്ല അല്ലെങ്കിൽ
ലിങ്കറുകൾ. ലയിപ്പിക്കുന്നത് ഔട്ട്പുട്ട് ഫയലിലെ ഡീബഗ് വിവരങ്ങളുടെ വലുപ്പം കുറയ്ക്കുന്നു
ലിങ്ക് പ്രോസസ്സിംഗ് സമയം വർദ്ധിപ്പിക്കുന്നതിനുള്ള ചെലവ്. ഡിഫോൾട്ടായി ലയിപ്പിക്കൽ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

-fdebug-prefix-map=പഴയത്=പുതിയ
ഡയറക്ടറിയിൽ ഫയലുകൾ കംപൈൽ ചെയ്യുമ്പോൾ പഴയത്, അവയെ വിവരിക്കുന്ന ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ രേഖപ്പെടുത്തുക
in പുതിയ പകരം.

-fno-dwarf2-cfi-asm
ഉപയോഗിക്കുന്നതിന് പകരം കംപൈലർ സൃഷ്ടിച്ച ".eh_frame" വിഭാഗമായി DWARF 2 അൺവൈൻഡ് വിവരം പുറത്തുവിടുക
GAS ".cfi_*" നിർദ്ദേശങ്ങൾ.

-p വിശകലന പ്രോഗ്രാമിന് അനുയോജ്യമായ പ്രൊഫൈൽ വിവരങ്ങൾ എഴുതാൻ അധിക കോഡ് സൃഷ്ടിക്കുക
പ്രൊഫ. നിങ്ങൾക്ക് ഡാറ്റ ആവശ്യമുള്ള ഉറവിട ഫയലുകൾ കംപൈൽ ചെയ്യുമ്പോൾ ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കണം,
ലിങ്ക് ചെയ്യുമ്പോൾ നിങ്ങൾ അത് ഉപയോഗിക്കുകയും വേണം.

-പേജ് വിശകലന പ്രോഗ്രാമിന് അനുയോജ്യമായ പ്രൊഫൈൽ വിവരങ്ങൾ എഴുതാൻ അധിക കോഡ് സൃഷ്ടിക്കുക
gprof. നിങ്ങൾക്ക് ഡാറ്റ ആവശ്യമുള്ള ഉറവിട ഫയലുകൾ കംപൈൽ ചെയ്യുമ്പോൾ ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കണം,
ലിങ്ക് ചെയ്യുമ്പോൾ നിങ്ങൾ അത് ഉപയോഗിക്കുകയും വേണം.

-Q കംപൈലർ ഓരോ ഫംഗ്‌ഷൻ നാമവും കംപൈൽ ചെയ്യുമ്പോൾ പ്രിന്റ് ഔട്ട് ചെയ്യാനും ചിലത് പ്രിന്റ് ചെയ്യാനും സഹായിക്കുന്നു
ഓരോ പാസ് പൂർത്തിയാകുമ്പോൾ അതിന്റെ സ്ഥിതിവിവരക്കണക്കുകൾ.

-ftime-റിപ്പോർട്ട്
കംപൈലർ ഓരോ പാസിലും ചെലവഴിക്കുന്ന സമയത്തെക്കുറിച്ചുള്ള ചില സ്ഥിതിവിവരക്കണക്കുകൾ അച്ചടിക്കാൻ സഹായിക്കുന്നു
പൂർത്തിയാക്കുന്നു.

-fmem-റിപ്പോർട്ട്
സ്ഥിരമായ മെമ്മറി അലോക്കേഷനെ കുറിച്ചുള്ള ചില സ്ഥിതിവിവരക്കണക്കുകൾ കംപൈലർ അച്ചടിക്കുമ്പോൾ
പൂർത്തിയാക്കുന്നു.

-fmem-report-wpa
WPA-യ്‌ക്കുള്ള സ്ഥിരമായ മെമ്മറി അലോക്കേഷനെക്കുറിച്ചുള്ള ചില സ്ഥിതിവിവരക്കണക്കുകൾ കംപൈലർ പ്രിന്റ് ചെയ്യുന്നു
ഘട്ടം മാത്രം.

-fpre-ipa-mem-report
-fpost-ipa-mem-report
മുമ്പോ അല്ലെങ്കിൽ സ്ഥിരമായ മെമ്മറി അലോക്കേഷനെക്കുറിച്ചുള്ള ചില സ്ഥിതിവിവരക്കണക്കുകൾ കംപൈലർ പ്രിന്റ് ചെയ്യുന്നു
ഇന്റർപ്രൊസീജറൽ ഒപ്റ്റിമൈസേഷന് ശേഷം.

-fprofile-റിപ്പോർട്ട്
(കണക്കാക്കിയ) പ്രൊഫൈലിന്റെ സ്ഥിരതയെക്കുറിച്ചുള്ള ചില സ്ഥിതിവിവരക്കണക്കുകൾ കംപൈലർ പ്രിന്റ് ചെയ്യുന്നു
വ്യക്തിഗത പാസുകളുടെ ഫലവും.

-fstack-ഉപയോഗം
പ്രോഗ്രാമിനായുള്ള കംപൈലർ ഔട്ട്‌പുട്ട് സ്റ്റാക്ക് ഉപയോഗ വിവരങ്ങൾ ഓരോ ഫംഗ്ഷനിലും ഉണ്ടാക്കുന്നു
അടിസ്ഥാനം. ഡംപിന്റെ ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത് .സു ലേക്ക് auxname. auxname is
ഔട്ട്‌പുട്ട് ഫയലിന്റെ പേരിൽ നിന്ന് ജനറേറ്റ് ചെയ്‌തത്, വ്യക്തമായി വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിൽ അത് ഒരു അല്ല
എക്സിക്യൂട്ടബിൾ, അല്ലാത്തപക്ഷം ഇത് സോഴ്സ് ഫയലിന്റെ അടിസ്ഥാനനാമമാണ്. ഒരു എൻട്രി നിർമ്മിച്ചിരിക്കുന്നത്
മൂന്ന് ഫീൽഡുകൾ:

* പ്രവർത്തനത്തിന്റെ പേര്.

* നിരവധി ബൈറ്റുകൾ.

* ഒന്നോ അതിലധികമോ യോഗ്യതകൾ: "സ്റ്റാറ്റിക്", "ഡൈനാമിക്", "ബൗണ്ടഡ്".

"സ്റ്റാറ്റിക്" എന്ന ക്വാളിഫയർ അർത്ഥമാക്കുന്നത്, ഫംഗ്ഷൻ സ്റ്റാക്കിനെ സ്റ്റാറ്റിക്കായി കൈകാര്യം ചെയ്യുന്നു എന്നാണ്: a
ഫംഗ്‌ഷൻ എൻട്രിയിൽ ഫ്രെയിമിനായി നിശ്ചിത എണ്ണം ബൈറ്റുകൾ അനുവദിക്കുകയും റിലീസ് ചെയ്യുകയും ചെയ്യുന്നു
ഫംഗ്ഷൻ എക്സിറ്റ്; ഫംഗ്‌ഷനിൽ സ്റ്റാക്ക് അഡ്ജസ്റ്റ്‌മെന്റുകളൊന്നും വരുത്തിയിട്ടില്ല. രണ്ടാമത്തെ
ഈ നിശ്ചിത എണ്ണം ബൈറ്റുകളാണ് ഫീൽഡ്.

ക്വാളിഫയർ "ഡൈനാമിക്" എന്നതിനർത്ഥം ഫംഗ്ഷൻ സ്റ്റാക്കിനെ ചലനാത്മകമായി കൈകാര്യം ചെയ്യുന്നു എന്നാണ്: ഇൻ
മുകളിൽ വിവരിച്ച സ്റ്റാറ്റിക് അലോക്കേഷന് പുറമേ, സ്റ്റാക്ക് അഡ്ജസ്റ്റ്‌മെന്റുകൾ ഇതിൽ വരുത്തിയിട്ടുണ്ട്
ഫംഗ്‌ഷന്റെ ബോഡി, ഉദാഹരണത്തിന് ഫംഗ്‌ഷൻ കോളുകൾക്ക് ചുറ്റുമുള്ള ആർഗ്യുമെന്റുകൾ പുഷ്/പോപ്പ് ചെയ്യാൻ. എങ്കിൽ
ക്വാളിഫയർ "ബൗണ്ടഡ്" എന്നതും നിലവിലുണ്ട്, ഈ ക്രമീകരണങ്ങളുടെ തുക പരിധിയിലാണ്
കംപൈൽ സമയം, രണ്ടാമത്തെ ഫീൽഡ് ഉപയോഗിച്ചിരിക്കുന്ന സ്റ്റാക്കിന്റെ മൊത്തം തുകയുടെ മുകളിലെ പരിധിയാണ്
ചടങ്ങിലൂടെ. അത് നിലവിലില്ലെങ്കിൽ, ഈ ക്രമീകരണങ്ങളുടെ അളവ് പരിധിയില്ല
കംപൈൽ സമയത്ത്, രണ്ടാമത്തെ ഫീൽഡ് ബൗണ്ടഡ് ഭാഗത്തെ മാത്രം പ്രതിനിധീകരിക്കുന്നു.

-fprofile-arcs
കോഡ് ചേർക്കുക, അങ്ങനെ പ്രോഗ്രാം ഒഴുകും ആർക്കികൾ ഉപകരണങ്ങളാണ്. പ്രോഗ്രാം എക്സിക്യൂഷൻ സമയത്ത്
ഓരോ ബ്രാഞ്ചും കോളും എത്ര തവണ എക്സിക്യൂട്ട് ചെയ്തുവെന്നും എത്ര തവണ എടുത്തെന്നും രേഖപ്പെടുത്തുന്നു
അല്ലെങ്കിൽ തിരിച്ചുവരുന്നു. കംപൈൽ ചെയ്ത പ്രോഗ്രാം പുറത്തുകടക്കുമ്പോൾ, അത് ഈ ഡാറ്റ ഒരു ഫയലിലേക്ക് സംരക്ഷിക്കുന്നു
auxname.gcda ഓരോ സോഴ്സ് ഫയലിനും. പ്രൊഫൈൽ ഡയറക്‌ട് ചെയ്യുന്നതിനായി ഡാറ്റ ഉപയോഗിച്ചേക്കാം
ഒപ്റ്റിമൈസേഷനുകൾ (-fbranch-സാധ്യതകൾ), അല്ലെങ്കിൽ ടെസ്റ്റ് കവറേജ് വിശകലനത്തിനായി
(-ftest-കവറേജ്). ഓരോ ഒബ്ജക്റ്റ് ഫയലും auxname എന്ന പേരിൽ നിന്നാണ് ജനറേറ്റ് ചെയ്യുന്നത്
ഔട്ട്‌പുട്ട് ഫയൽ, വ്യക്തമായി വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിൽ, അത് അന്തിമ എക്സിക്യൂട്ടബിൾ അല്ല, അല്ലെങ്കിൽ അത്
സോഴ്സ് ഫയലിന്റെ അടിസ്ഥാന നാമമാണ്. രണ്ട് സാഹചര്യങ്ങളിലും ഏതെങ്കിലും പ്രത്യയം നീക്കം ചെയ്യപ്പെടും (ഉദാ
foo.gcda ഇൻപുട്ട് ഫയലിനായി dir/foo.c, അഥവാ dir/foo.gcda ഔട്ട്‌പുട്ട് ഫയലിനായി വ്യക്തമാക്കിയിരിക്കുന്നു -o
dir/foo.o).

--കവറേജ്
കവറേജ് വിശകലനത്തിനായി കോഡ് കംപൈൽ ചെയ്യുന്നതിനും ലിങ്ക് ചെയ്യുന്നതിനും ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു. ദി
എന്നതിന്റെ പര്യായപദമാണ് ഓപ്ഷൻ -fprofile-arcs -ftest-കവറേജ് (കംപൈൽ ചെയ്യുമ്പോൾ) കൂടാതെ -എൽജികോവ്
(ലിങ്ക് ചെയ്യുമ്പോൾ). കൂടുതൽ വിശദാംശങ്ങൾക്ക് ആ ഓപ്‌ഷനുകൾക്കായുള്ള ഡോക്യുമെന്റേഷൻ കാണുക.

* ഇതുപയോഗിച്ച് ഉറവിട ഫയലുകൾ കംപൈൽ ചെയ്യുക -fprofile-arcs കൂടാതെ ഒപ്റ്റിമൈസേഷനും കോഡ് ജനറേഷനും
ഓപ്ഷനുകൾ. ടെസ്റ്റ് കവറേജ് വിശകലനത്തിനായി, അധികമായി ഉപയോഗിക്കുക -ftest-കവറേജ് ഓപ്ഷൻ.
ഒരു പ്രോഗ്രാമിലെ എല്ലാ ഉറവിട ഫയലുകളും നിങ്ങൾ പ്രൊഫൈൽ ചെയ്യേണ്ടതില്ല.

* നിങ്ങളുടെ ഒബ്‌ജക്റ്റ് ഫയലുകൾ ഇതുമായി ലിങ്ക് ചെയ്യുക -എൽജികോവ് or -fprofile-arcs (അവസാനത്തേത് സൂചിപ്പിക്കുന്നു
മുൻ).

* ആർക്ക് പ്രൊഫൈൽ സൃഷ്‌ടിക്കാൻ ഒരു പ്രതിനിധി വർക്ക്‌ലോഡിൽ പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുക
വിവരങ്ങൾ. ഇത് എത്ര തവണ വേണമെങ്കിലും ആവർത്തിക്കാം. നിങ്ങൾക്ക് ഒരേസമയം പ്രവർത്തിപ്പിക്കാം
നിങ്ങളുടെ പ്രോഗ്രാമിന്റെ ഉദാഹരണങ്ങൾ, കൂടാതെ ഫയൽ സിസ്റ്റം ലോക്കിംഗിനെ പിന്തുണയ്ക്കുന്നുവെങ്കിൽ,
ഡാറ്റ ഫയലുകൾ ശരിയായി അപ്ഡേറ്റ് ചെയ്യും. കൂടാതെ "ഫോർക്ക്" കോളുകളും കണ്ടെത്തി
ശരിയായി കൈകാര്യം ചെയ്തു (ഇരട്ട എണ്ണൽ നടക്കില്ല).

* പ്രൊഫൈൽ-ഡയറക്ട്ഡ് ഒപ്റ്റിമൈസേഷനുകൾക്കായി, സോഴ്സ് ഫയലുകൾ വീണ്ടും കംപൈൽ ചെയ്യുക
ഒപ്റ്റിമൈസേഷനും കോഡ് ജനറേഷൻ ഓപ്ഷനുകളും പ്ലസ് -fbranch-സാധ്യതകൾ.

* ടെസ്റ്റ് കവറേജ് വിശകലനത്തിനായി, ഉപയോഗിക്കുക gcov മനുഷ്യർക്ക് വായിക്കാൻ കഴിയുന്ന വിവരങ്ങൾ നിർമ്മിക്കുന്നതിന്
The .gcno ഒപ്പം .gcda ഫയലുകൾ. റഫർ ചെയ്യുക gcov കൂടുതൽ കാര്യങ്ങൾക്കുള്ള ഡോക്യുമെന്റേഷൻ
വിവരങ്ങൾ.

കൂടെ -fprofile-arcs, നിങ്ങളുടെ പ്രോഗ്രാമിന്റെ ഓരോ പ്രവർത്തനത്തിനും GCC ഒരു പ്രോഗ്രാം ഫ്ലോ സൃഷ്ടിക്കുന്നു
ഗ്രാഫ്, തുടർന്ന് ഗ്രാഫിനായി പരന്നുകിടക്കുന്ന ഒരു വൃക്ഷം കണ്ടെത്തുന്നു. ന് ഇല്ലാത്ത കമാനങ്ങൾ മാത്രം
സ്പാനിംഗ് ട്രീ ഇൻസ്ട്രുമെന്റ് ചെയ്യണം: കംപൈലർ ഇവയുടെ എണ്ണം കണക്കാക്കാൻ കോഡ് ചേർക്കുന്നു
ഈ കമാനങ്ങൾ നിർവ്വഹിക്കുന്ന സമയം. ഒരു ആർക്ക് എക്സിറ്റ് അല്ലെങ്കിൽ ഒരേയൊരു പ്രവേശനമാകുമ്പോൾ
ഒരു ബ്ലോക്ക്, ഇൻസ്ട്രുമെന്റേഷൻ കോഡ് ബ്ലോക്കിലേക്ക് ചേർക്കാം; അല്ലെങ്കിൽ, ഒരു പുതിയ അടിസ്ഥാനം
ഇൻസ്ട്രുമെന്റേഷൻ കോഡ് ഹോൾഡ് ചെയ്യാൻ ബ്ലോക്ക് ഉണ്ടാക്കണം.

-ftest-കവറേജ്
ഒരു കുറിപ്പ് ഫയൽ നിർമ്മിക്കുക gcov പ്രോഗ്രാം കാണിക്കാൻ കോഡ്-കവറേജ് യൂട്ടിലിറ്റി ഉപയോഗിക്കാം
കവറേജ്. ഓരോ സോഴ്സ് ഫയലിന്റെയും നോട്ട് ഫയലിനെ വിളിക്കുന്നു auxname.gcno. കാണുക
-fprofile-arcs ഒരു വിവരണത്തിന് മുകളിലുള്ള ഓപ്ഷൻ auxname എങ്ങനെ എന്നതിനെക്കുറിച്ചുള്ള നിർദ്ദേശങ്ങളും
ടെസ്റ്റ് കവറേജ് ഡാറ്റ സൃഷ്ടിക്കുക. കവറേജ് ഡാറ്റ സോഴ്സ് ഫയലുകളുമായി കൂടുതൽ അടുത്ത് പൊരുത്തപ്പെടുന്നു
നിങ്ങൾ ഒപ്റ്റിമൈസ് ചെയ്യരുത്.

-fdbg-cnt-list
എല്ലാ ഡീബഗ് കൗണ്ടറുകൾക്കും മുകളിലുള്ള പേരും കൗണ്ടറും പ്രിന്റ് ചെയ്യുക.

-fdbg-cnt=പ്രതി-മൂല്യം-ലിസ്റ്റ്
ആന്തരിക ഡീബഗ് കൌണ്ടർ മുകളിലെ പരിധിയിൽ സജ്ജമാക്കുക. പ്രതി-മൂല്യം-ലിസ്റ്റ് ഒരു കോമയാൽ വേർതിരിച്ചിരിക്കുന്നു
ലിസ്റ്റ് പേര്:മൂല്യം ഓരോ ഡീബഗ് കൗണ്ടറിന്റെയും മുകളിലെ പരിധി സജ്ജമാക്കുന്ന ജോഡികൾ പേര് ലേക്ക്
മൂല്യം. എല്ലാ ഡീബഗ് കൗണ്ടറുകൾക്കും "UINT_MAX" ന്റെ പ്രാരംഭ മുകളിലെ പരിധിയുണ്ട്; അങ്ങനെ "dbg_cnt"
ഈ ഓപ്‌ഷൻ ഉപയോഗിച്ച് അപ്പർ ബൗണ്ട് സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ എല്ലായ്‌പ്പോഴും true എന്ന് നൽകുന്നു. ഉദാഹരണത്തിന്, കൂടെ
-fdbg-cnt=dce:10,tail_call:0, "dbg_cnt(dce)" ആദ്യ 10-ന് മാത്രം ശരിയാണെന്ന് നൽകുന്നു
അഭ്യർത്ഥനകൾ.

-ശല്യപ്പെടുത്താവുന്ന-ദയയോടെ-കടന്നുപോകുക
- fdisable-ദയയോടെ-കടന്നുപോകുക=ശ്രേണി-ലിസ്റ്റ്
ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനരഹിതമാക്കാൻ/പ്രാപ്തമാക്കാൻ ഉപയോഗിക്കുന്ന ഒരു കൂട്ടം ഓപ്‌ഷനാണിത്
കടന്നുപോകുന്നു. ഈ ഓപ്‌ഷനുകൾ ജിസിസി ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ള ഉപയോഗത്തിനായി ഉദ്ദേശിച്ചുള്ളതാണ്. കമ്പൈലർ ഉപയോക്താക്കൾ ചെയ്യണം
പകരം പാസുകൾ പ്രവർത്തനക്ഷമമാക്കുന്നതിനും പ്രവർത്തനരഹിതമാക്കുന്നതിനും പതിവ് ഓപ്ഷനുകൾ ഉപയോഗിക്കുക.

-fdisable-ipa-കടന്നുപോകുക
IPA പാസ് അപ്രാപ്തമാക്കുക കടന്നുപോകുക. കടന്നുപോകുക പാസ് നാമമാണ്. ഒരേ പാസ് സ്ഥിരമായി ആണെങ്കിൽ
കംപൈലറിൽ ഒന്നിലധികം തവണ അഭ്യർത്ഥിച്ചാൽ, പാസ് നാമം a എന്നതിനൊപ്പം ചേർക്കണം
1 മുതൽ ആരംഭിക്കുന്ന ക്രമസംഖ്യ.

-fdisable-rtl-കടന്നുപോകുക
-fdisable-rtl-കടന്നുപോകുക=ശ്രേണി-ലിസ്റ്റ്
RTL പാസ് പ്രവർത്തനരഹിതമാക്കുക കടന്നുപോകുക. കടന്നുപോകുക പാസ് നാമമാണ്. ഒരേ പാസ് സ്ഥിരമായി ആണെങ്കിൽ
കംപൈലറിൽ ഒന്നിലധികം തവണ അഭ്യർത്ഥിച്ചാൽ, പാസ് നാമം a എന്നതിനൊപ്പം ചേർക്കണം
1 മുതൽ ആരംഭിക്കുന്ന ക്രമസംഖ്യ. ശ്രേണി-ലിസ്റ്റ് കോമയാൽ വേർതിരിച്ച പട്ടികയാണ്
ഫംഗ്ഷൻ ശ്രേണികൾ അല്ലെങ്കിൽ അസംബ്ലർ പേരുകൾ. ഓരോ ശ്രേണിയും a കൊണ്ട് വേർതിരിച്ച ഒരു സംഖ്യ ജോഡിയാണ്
കോളൻ. ശ്രേണി രണ്ടറ്റത്തും ഉൾക്കൊള്ളുന്നു. പരിധി നിസ്സാരമാണെങ്കിൽ, നമ്പർ
ജോഡി ഒറ്റ സംഖ്യയായി ലളിതമാക്കാം. ഫംഗ്‌ഷന്റെ കോൾ ഗ്രാഫ് നോഡിന്റെ ആണെങ്കിൽ
uid നിർദ്ദിഷ്‌ട ശ്രേണികളിലൊന്നിൽ വരുന്നു, the കടന്നുപോകുക അതിനായി അപ്രാപ്തമാക്കിയിരിക്കുന്നു
പ്രവർത്തനം. ദി uid ഒരു ഡംപ് ഫയലിന്റെ ഫംഗ്‌ഷൻ ഹെഡറിലും പാസ്സിലും കാണിച്ചിരിക്കുന്നു
ഓപ്ഷൻ ഉപയോഗിച്ച് പേരുകൾ ഉപേക്ഷിക്കാം -fdump-പാസുകൾ.

- fdisable-tree-കടന്നുപോകുക
- fdisable-tree-കടന്നുപോകുക=ശ്രേണി-ലിസ്റ്റ്
ട്രീ പാസ് പ്രവർത്തനരഹിതമാക്കുക കടന്നുപോകുക. കാണുക -fdisable-rtl ഓപ്ഷന്റെ വിവരണത്തിനായി
വാദങ്ങൾ.

-fenable-ipa-കടന്നുപോകുക
IPA പാസ് പ്രവർത്തനക്ഷമമാക്കുക കടന്നുപോകുക. കടന്നുപോകുക പാസ് നാമമാണ്. ഒരേ പാസ് സ്ഥിരമായി ആണെങ്കിൽ
കംപൈലറിൽ ഒന്നിലധികം തവണ അഭ്യർത്ഥിച്ചാൽ, പാസ് നാമം a എന്നതിനൊപ്പം ചേർക്കണം
1 മുതൽ ആരംഭിക്കുന്ന ക്രമസംഖ്യ.

-fenable-rtl-കടന്നുപോകുക
-fenable-rtl-കടന്നുപോകുക=ശ്രേണി-ലിസ്റ്റ്
RTL പാസ് പ്രവർത്തനക്ഷമമാക്കുക കടന്നുപോകുക. കാണുക -fdisable-rtl ഓപ്‌ഷൻ ആർഗ്യുമെന്റ് വിവരണത്തിനും
ഉദാഹരണങ്ങൾ.

-വളർത്താവുന്ന-മരം-കടന്നുപോകുക
-വളർത്താവുന്ന-മരം-കടന്നുപോകുക=ശ്രേണി-ലിസ്റ്റ്
ട്രീ പാസ് പ്രവർത്തനക്ഷമമാക്കുക കടന്നുപോകുക. കാണുക -fdisable-rtl ഓപ്‌ഷൻ ആർഗ്യുമെന്റുകളുടെ വിവരണത്തിനായി.

ഈ ഓപ്ഷനുകളുടെ ഉപയോഗങ്ങൾ കാണിക്കുന്ന ചില ഉദാഹരണങ്ങൾ ഇതാ.

# എല്ലാ പ്രവർത്തനങ്ങൾക്കും ccp1 പ്രവർത്തനരഹിതമാക്കുക
-fdisable-tree-ccp1
# cgraph നോഡ് uid 1 ആയ ഫംഗ്‌ഷനായി പൂർണ്ണമായ അൺറോൾ പ്രവർത്തനരഹിതമാക്കുക
-fenable-tree-cunroll=1
# ഇനിപ്പറയുന്ന ശ്രേണികളിലെ പ്രവർത്തനങ്ങൾക്കായി gcse2 പ്രവർത്തനരഹിതമാക്കുക [1,1],
# [300,400], കൂടാതെ [400,1000]
# foo, foo2 എന്നീ ഫംഗ്‌ഷനുകൾക്കായി gcse2 പ്രവർത്തനരഹിതമാക്കുക
-fdisable-rtl-gcse2=foo,foo2
# നേരത്തെയുള്ള ഇൻലൈനിംഗ് പ്രവർത്തനരഹിതമാക്കുക
-fdisable-tree-einline
# ipa ഇൻലൈനിംഗ് പ്രവർത്തനരഹിതമാക്കുക
-fdisable-ipa-inline
# ട്രീ ഫുൾ അൺറോൾ പ്രവർത്തനക്ഷമമാക്കുക
-ഫെനബിൾ-ട്രീ-അൺറോൾ

-dഅക്ഷരങ്ങൾ
-fdump-rtl-കടന്നുപോകുക
-fdump-rtl-കടന്നുപോകുക=ഫയലിന്റെ പേര്
നിർദിഷ്ട സമയങ്ങളിൽ കംപൈലേഷൻ സമയത്ത് ഡീബഗ്ഗിംഗ് ഡംപുകൾ ഉണ്ടാക്കാൻ പറയുന്നു അക്ഷരങ്ങൾ. ഈ
കംപൈലറിന്റെ RTL-അടിസ്ഥാനത്തിലുള്ള പാസുകൾ ഡീബഗ്ഗ് ചെയ്യാൻ ഉപയോഗിക്കുന്നു. മിക്ക ഫയലുകളുടെയും പേരുകൾ
ഒരു പാസ് നമ്പറും ഒരു വാക്കും ചേർത്താണ് ഡംപുകൾ നിർമ്മിക്കുന്നത് ഡംപ്നെയിംഎന്നാൽ
ഔട്ട്‌പുട്ട് ഫയലിന്റെ ഡയറക്‌ടറിയിലാണ് ഫയലുകൾ സൃഷ്‌ടിക്കുന്നത്. കാര്യത്തിൽ =ഫയലിന്റെ പേര് ഓപ്ഷൻ,
പാസ് നമ്പറുള്ള ഡംപ് ഫയലുകൾക്ക് പകരം നൽകിയിരിക്കുന്ന ഫയലിൽ ഡംപ് ഔട്ട്പുട്ട് ആണ്. കുറിപ്പ്
പാസുകൾ പാസ്സിൽ രജിസ്റ്റർ ചെയ്യപ്പെടുമ്പോൾ പാസ് നമ്പർ സ്ഥിരമായി കണക്കാക്കുന്നു
മാനേജർ. അതിനാൽ, സംഖ്യകൾ നിർവ്വഹണത്തിന്റെ ചലനാത്മക ക്രമവുമായി ബന്ധപ്പെട്ടതല്ല
കടന്നുപോകുന്നു. പ്രത്യേകിച്ചും, ഒരു പ്ലഗിൻ ഇൻസ്റ്റാൾ ചെയ്ത പാസിന് 200-ൽ കൂടുതൽ എണ്ണം ഉണ്ടായിരിക്കാം
അത് വളരെ നേരത്തെ തന്നെ നടപ്പിലാക്കിയാൽ. ഡംപ്നെയിം ഔട്ട്‌പുട്ട് ഫയലിന്റെ പേരിൽ നിന്നാണ് ജനറേറ്റ് ചെയ്യുന്നത്,
വ്യക്തമായി വ്യക്തമാക്കുകയും അത് എക്സിക്യൂട്ടബിൾ അല്ലാതിരിക്കുകയും ചെയ്താൽ, അല്ലാത്തപക്ഷം ഇത് അടിസ്ഥാനനാമമാണ്
ഉറവിട ഫയൽ. ഈ സ്വിച്ചുകൾക്ക് വ്യത്യസ്ത ഇഫക്റ്റുകൾ ഉണ്ടാകാം -E ഇതിനായി ഉപയോഗിക്കുന്നു
പ്രീപ്രോസസിംഗ്.

ഒരു ഉപയോഗിച്ച് ഡീബഗ് ഡംപുകൾ പ്രവർത്തനക്ഷമമാക്കാം -fdump-rtl സ്വിച്ച് അല്ലെങ്കിൽ ചിലത് -d ഓപ്ഷൻ അക്ഷരങ്ങൾ. ഇവിടെ
ഉപയോഗിക്കുന്നതിന് സാധ്യമായ അക്ഷരങ്ങളാണ് കടന്നുപോകുക ഒപ്പം അക്ഷരങ്ങൾ, അവയുടെ അർത്ഥങ്ങൾ:

-fdump-rtl-alignments
ബ്രാഞ്ച് അലൈൻമെന്റുകൾ കണക്കാക്കിയതിന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-asmcons
ഇൻ/ഔട്ട് നിയന്ത്രണങ്ങൾ തൃപ്തികരമല്ലാത്ത ആർടിഎൽ പ്രസ്താവനകൾ പരിഹരിച്ചതിന് ശേഷം ഉപേക്ഷിക്കുക.

-fdump-rtl-auto_inc_dec
ഓട്ടോ-ഇൻക്-ഡിസെക് കണ്ടെത്തലിനുശേഷം ഉപേക്ഷിക്കുക. ഈ പാസ് ആർക്കിടെക്ചറിൽ മാത്രം പ്രവർത്തിക്കുന്നു
auto inc അല്ലെങ്കിൽ auto dec നിർദ്ദേശങ്ങൾ ഉണ്ട്.

-fdump-rtl-barriers
ബാരിയർ നിർദ്ദേശങ്ങൾ വൃത്തിയാക്കിയ ശേഷം വലിച്ചെറിയുക.

-fdump-rtl-bbpart
ചൂടുള്ളതും തണുത്തതുമായ അടിസ്ഥാന ബ്ലോക്കുകൾ വിഭജിച്ച ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-bbro
ബ്ലോക്ക് റീഓർഡറിംഗിന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-btl1
-fdump-rtl-btl2
-fdump-rtl-btl1 ഒപ്പം -fdump-rtl-btl2 രണ്ട് ബ്രാഞ്ച് ലക്ഷ്യത്തിന് ശേഷം ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
ലോഡ് ഒപ്റ്റിമൈസേഷൻ കടന്നുപോകുന്നു.

-fdump-rtl-ബൈപാസ്
ജമ്പ് ബൈപാസിംഗിന് ശേഷം ഡംപ് ചെയ്യുക, ഫ്ലോ ഒപ്റ്റിമൈസേഷനുകൾ നിയന്ത്രിക്കുക.

-fdump-rtl-combine
RTL നിർദ്ദേശ കോമ്പിനേഷൻ പാസിന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-compgotos
കമ്പ്യൂട്ട് ചെയ്ത ഗോട്ടോകൾ ഡ്യൂപ്ലിക്കേറ്റ് ചെയ്ത ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-ce1
-fdump-rtl-ce2
-fdump-rtl-ce3
-fdump-rtl-ce1, -fdump-rtl-ce2, ഒപ്പം -fdump-rtl-ce3 മൂന്നിന് ശേഷം ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
പരിവർത്തനം കടന്നുപോകുകയാണെങ്കിൽ.

-fdump-rtl-cprop_hardreg
ഹാർഡ് രജിസ്റ്റർ കോപ്പി പ്രചരണത്തിന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-csa
സ്റ്റാക്ക് അഡ്ജസ്റ്റ്മെന്റുകൾ സംയോജിപ്പിച്ച ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-cse1
-fdump-rtl-cse2
-fdump-rtl-cse1 ഒപ്പം -fdump-rtl-cse2 രണ്ട് പൊതുവായതിന് ശേഷം ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
subexpression ഉന്മൂലനം കടന്നുപോകുന്നു.

-fdump-rtl-dce
സ്റ്റാൻഡ് എലോൺ ഡെഡ് കോഡ് എലിമിനേഷൻ പാസ്സായതിന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-dbr
ബ്രാഞ്ച് ഷെഡ്യൂളിംഗ് വൈകിയതിന് ശേഷം ഉപേക്ഷിക്കുക.

-fdump-rtl-dce1
-fdump-rtl-dce2
-fdump-rtl-dce1 ഒപ്പം -fdump-rtl-dce2 രണ്ട് ഡെഡ് സ്റ്റോറിന് ശേഷം ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
ഉന്മൂലനം കടന്നുപോകുന്നു.

-fdump-rtl-eh
EH ഹാൻഡ്‌ലിംഗ് കോഡ് അന്തിമമാക്കിയ ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-eh_ranges
EH ഹാൻഡ്‌ലിംഗ് റേഞ്ച് റീജിയണുകളുടെ പരിവർത്തനത്തിന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-expand
RTL ജനറേഷനുശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-fwprop1
-fdump-rtl-fwprop2
-fdump-rtl-fwprop1 ഒപ്പം -fdump-rtl-fwprop2 രണ്ട് ഫോർവേഡ് കഴിഞ്ഞ് ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
പ്രചരണം കടന്നുപോകുന്നു.

-fdump-rtl-gcse1
-fdump-rtl-gcse2
-fdump-rtl-gcse1 ഒപ്പം -fdump-rtl-gcse2 ആഗോള പൊതുവായതിന് ശേഷം ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
subexpression ഉന്മൂലനം.

-fdump-rtl-init-regs
രജിസ്റ്ററുകൾ ആരംഭിച്ചതിന് ശേഷം ഉപേക്ഷിക്കുക.

-fdump-rtl-initvals
പ്രാരംഭ മൂല്യ സെറ്റുകളുടെ കണക്കുകൂട്ടലിന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-into_cfglayout
cfglayout മോഡിലേക്ക് പരിവർത്തനം ചെയ്ത ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-ira
ആവർത്തിച്ചുള്ള രജിസ്റ്റർ അലോക്കേഷന് ശേഷം ഉപേക്ഷിക്കുക.

-fdump-rtl-jump
രണ്ടാമത്തെ ജമ്പ് ഒപ്റ്റിമൈസേഷന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-loop2
-fdump-rtl-loop2 rtl ലൂപ്പ് ഒപ്റ്റിമൈസേഷൻ കഴിഞ്ഞാൽ ഡംപിംഗ് സാധ്യമാക്കുന്നു.

-fdump-rtl-mach
മെഷീൻ ഡിപൻഡന്റ് റീ ഓർഗനൈസേഷൻ പാസ് നടത്തിയ ശേഷം ഡംപ് ചെയ്യുക, ആ പാസ് ആണെങ്കിൽ
നിലവിലുണ്ട്.

-fdump-rtl-mode_sw
അനാവശ്യ മോഡ് സ്വിച്ചുകൾ നീക്കം ചെയ്ത ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-rnreg
റജിസ്റ്റർ റീനമ്പറിങ്ങിനു ശേഷം ഉപേക്ഷിക്കുക.

-fdump-rtl-outof_cfglayout
cfglayout മോഡിൽ നിന്ന് പരിവർത്തനം ചെയ്ത ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-peephole2
പീഫോൾ പാസ്സിന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-postreload
പോസ്റ്റ്-റീലോഡ് ഒപ്റ്റിമൈസേഷനുകൾക്ക് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-pro_and_epilogue
ഫംഗ്‌ഷൻ പ്രോലോഗുകളും എപ്പിലോഗുകളും സൃഷ്ടിച്ച ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-sched1
-fdump-rtl-sched2
-fdump-rtl-sched1 ഒപ്പം -fdump-rtl-sched2 അടിസ്ഥാന ബ്ലോക്കിന് ശേഷം ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
ഷെഡ്യൂളിംഗ് പാസുകൾ.

-fdump-rtl-ree
അടയാളം/പൂജ്യം വിപുലീകരണം ഇല്ലാതാക്കിയ ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-seqabstr
കോമൺ സീക്വൻസ് കണ്ടെത്തലിനു ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-Shorten
ശാഖകൾ ചെറുതാക്കിയ ശേഷം ഉപേക്ഷിക്കുക.

-fdump-rtl-സഹോദരങ്ങൾ
സഹോദരങ്ങളുടെ കോൾ ഒപ്റ്റിമൈസേഷനുകൾക്ക് ശേഷം ഉപേക്ഷിക്കുക.

-fdump-rtl-split1
-fdump-rtl-split2
-fdump-rtl-split3
-fdump-rtl-split4
-fdump-rtl-split5
ഈ ഓപ്‌ഷനുകൾ അഞ്ച് റൗണ്ട് നിർദ്ദേശ വിഭജനത്തിന് ശേഷം ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുന്നു.

-fdump-rtl-sms
മോഡുലോ ഷെഡ്യൂളിംഗിന് ശേഷം ഡംപ് ചെയ്യുക. ഈ പാസ് ചില വാസ്തുവിദ്യകളിൽ മാത്രം പ്രവർത്തിക്കുന്നു.

-fdump-rtl-stack
ജിസിസിയുടെ "ഫ്ലാറ്റ് രജിസ്റ്റർ ഫയൽ" രജിസ്റ്ററിൽ നിന്ന് x87-ലേക്ക് പരിവർത്തനം ചെയ്തതിന് ശേഷം ഡംപ് ചെയ്യുക
സ്റ്റാക്ക് പോലുള്ള രജിസ്റ്ററുകൾ. ഈ പാസ് x86 വേരിയന്റുകളിൽ മാത്രമേ പ്രവർത്തിക്കൂ.

-fdump-rtl-subreg1
-fdump-rtl-subreg2
-fdump-rtl-subreg1 ഒപ്പം -fdump-rtl-subreg2 രണ്ട് subreg കഴിഞ്ഞ് ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
വിപുലീകരണം കടന്നുപോകുന്നു.

-fdump-rtl-unshare
എല്ലാ rtl അൺഷെയർ ചെയ്‌തതിനുശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-vartrack
വേരിയബിൾ ട്രാക്കിംഗിന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-vregs
വെർച്വൽ രജിസ്റ്ററുകൾ ഹാർഡ് രജിസ്റ്ററുകളിലേക്ക് പരിവർത്തനം ചെയ്ത ശേഷം ഡംപ് ചെയ്യുക.

-fdump-rtl-web
തത്സമയ ശ്രേണി വിഭജിച്ചതിന് ശേഷം ഉപേക്ഷിക്കുക.

-fdump-rtl-regclass
-fdump-rtl-subegs_of_mode_init
-fdump-rtl-subegs_of_mode_finish
-fdump-rtl-dfinit
-fdump-rtl-dfinish
ഈ ഡംപുകൾ നിർവചിക്കപ്പെട്ടവയാണ്, എന്നാൽ എല്ലായ്പ്പോഴും ശൂന്യമായ ഫയലുകൾ നിർമ്മിക്കുന്നു.

ഇന്
-fdump-rtl-all
മുകളിൽ ലിസ്റ്റുചെയ്തിരിക്കുന്ന എല്ലാ ഡമ്പുകളും നിർമ്മിക്കുക.

-dA വിവിധ ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ ഉപയോഗിച്ച് അസംബ്ലർ ഔട്ട്പുട്ട് വ്യാഖ്യാനിക്കുക.

-തീയതി എല്ലാ മാക്രോ നിർവചനങ്ങളും, പ്രീപ്രോസസിംഗിന്റെ അവസാനം, സാധാരണ കൂടാതെ
.ട്ട്‌പുട്ട്.

-dH ഒരു പിശക് സംഭവിക്കുമ്പോഴെല്ലാം ഒരു കോർ ഡംപ് നിർമ്മിക്കുക.

-dp അസംബ്ലർ ഔട്ട്‌പുട്ട് ഏത് പാറ്റേൺ എന്നും സൂചിപ്പിക്കുന്ന ഒരു കമന്റ് സഹിതം വ്യാഖ്യാനിക്കുക
ബദൽ ഉപയോഗിക്കുന്നു. ഓരോ നിർദ്ദേശത്തിന്റെയും ദൈർഘ്യവും അച്ചടിച്ചിട്ടുണ്ട്.

-ഡി.പി ഓരോ നിർദ്ദേശത്തിനും മുമ്പായി ഒരു കമന്റായി അസംബ്ലർ ഔട്ട്‌പുട്ടിൽ RTL ഇടുക. കൂടാതെ
ഓണാക്കുന്നു -dp വ്യാഖ്യാനം.

-dx ഒരു ഫംഗ്‌ഷൻ കംപൈൽ ചെയ്യുന്നതിന് പകരം RTL സൃഷ്‌ടിക്കുക. കൂടെ സാധാരണയായി ഉപയോഗിക്കുന്നു
-fdump-rtl-expand.

-fdump-noaddr
ഡീബഗ്ഗിംഗ് ഡംപുകൾ ചെയ്യുമ്പോൾ, വിലാസ ഔട്ട്പുട്ട് അടിച്ചമർത്തുക. ഇത് കൂടുതൽ പ്രായോഗികമാക്കുന്നു
വ്യത്യസ്ത കംപൈലർ ബൈനറികളുള്ള കംപൈലർ ഇൻവോക്കേഷനുകൾക്കായി ഡീബഗ്ഗിംഗ് ഡംപുകളിൽ വ്യത്യാസം ഉപയോഗിക്കുക
കൂടാതെ/അല്ലെങ്കിൽ വ്യത്യസ്‌ത ടെക്‌സ്‌റ്റ് / ബിഎസ്‌എസ് / ഡാറ്റ / കൂമ്പാരം / സ്റ്റാക്ക് / ഡിഎസ്ഒ ആരംഭ സ്ഥാനങ്ങൾ.

-freport-ബഗ്
C/C++ കംപൈലറിൽ ICE ആണെങ്കിൽ ഡീബഗ് വിവരങ്ങൾ ശേഖരിച്ച് താൽക്കാലിക ഫയലിലേക്ക് ഡംപ് ചെയ്യുക
സംഭവിച്ചു.

-fdump-unnumbered
ഡീബഗ്ഗിംഗ് ഡംപുകൾ ചെയ്യുമ്പോൾ, നിർദ്ദേശ നമ്പറുകളും വിലാസ ഔട്ട്പുട്ടും അടിച്ചമർത്തുക. ഈ
കംപൈലർ ഇൻവോക്കേഷനുകൾക്കായി ഡീബഗ്ഗിംഗ് ഡമ്പുകളിൽ ഡിഫ് ഉപയോഗിക്കുന്നത് കൂടുതൽ പ്രായോഗികമാക്കുന്നു
വ്യത്യസ്ത ഓപ്ഷനുകൾ, പ്രത്യേകിച്ച് കൂടെയും അല്ലാതെയും -g.

-fdump-unnumbered-links
ഡീബഗ്ഗിംഗ് ഡംപുകൾ ചെയ്യുമ്പോൾ (കാണുക -d മുകളിലുള്ള ഓപ്ഷൻ), ഇതിനായുള്ള നിർദ്ദേശ നമ്പറുകൾ അടിച്ചമർത്തുക
ഒരു ക്രമത്തിൽ മുമ്പത്തേതും അടുത്തതുമായ നിർദ്ദേശങ്ങളിലേക്കുള്ള ലിങ്കുകൾ.

-fdump-translation-unit (C++ മാത്രം)
-fdump-translation-unit-ഓപ്ഷനുകൾ (C++ മാത്രം)
ഒരു ഫയലിലേക്ക് മുഴുവൻ വിവർത്തന യൂണിറ്റിനും ട്രീ ഘടനയുടെ ഒരു പ്രാതിനിധ്യം നൽകൂ.
ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത് .tu ഉറവിട ഫയലിന്റെ പേരിലേക്ക്, ഫയൽ ആണ്
ഔട്ട്പുട്ട് ഫയലിന്റെ അതേ ഡയറക്ടറിയിൽ സൃഷ്ടിച്ചു. എങ്കിൽ -ഓപ്ഷനുകൾ ഫോം ഉപയോഗിക്കുന്നു,
ഓപ്ഷനുകൾ ഇതിനായി വിവരിച്ചിരിക്കുന്നതുപോലെ ഡമ്പിന്റെ വിശദാംശങ്ങൾ നിയന്ത്രിക്കുന്നു -fdump-മരം ഓപ്ഷനുകൾ.

-fdump-class-hierarchy (C++ മാത്രം)
-fdump-class-hierarchy-ഓപ്ഷനുകൾ (C++ മാത്രം)
ഓരോ ക്ലാസിന്റെയും ശ്രേണിയുടെയും വെർച്വൽ ഫംഗ്‌ഷൻ ടേബിൾ ലേഔട്ടിന്റെയും ഒരു പ്രാതിനിധ്യം a-ലേക്ക് ഡംപ് ചെയ്യുക
ഫയൽ. ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത് .ക്ലാസ് ഉറവിട ഫയലിന്റെ പേരിലേക്കും ഫയലിലേക്കും
ഔട്ട്പുട്ട് ഫയലിന്റെ അതേ ഡയറക്ടറിയിൽ സൃഷ്ടിക്കപ്പെട്ടതാണ്. എങ്കിൽ -ഓപ്ഷനുകൾ ഫോം ഉപയോഗിക്കുന്നു,
ഓപ്ഷനുകൾ ഇതിനായി വിവരിച്ചിരിക്കുന്നതുപോലെ ഡമ്പിന്റെ വിശദാംശങ്ങൾ നിയന്ത്രിക്കുന്നു -fdump-മരം ഓപ്ഷനുകൾ.

-fdump-ipa-മാറുക
ഇന്റർ പ്രൊസീജറൽ അനാലിസിസ് ലാംഗ്വേജ് ട്രീയുടെ വിവിധ ഘട്ടങ്ങളിൽ മാലിന്യം തള്ളുന്നത് നിയന്ത്രിക്കുക a
ഫയൽ. സ്രോതസ്സിലേക്ക് ഒരു സ്വിച്ച് നിർദ്ദിഷ്ട പ്രത്യയം ചേർത്താണ് ഫയലിന്റെ പേര് സൃഷ്ടിക്കുന്നത്
ഫയലിന്റെ പേര്, കൂടാതെ ഫയൽ ഔട്ട്പുട്ട് ഫയലിന്റെ അതേ ഡയറക്ടറിയിൽ സൃഷ്ടിച്ചിരിക്കുന്നു. ദി
ഇനിപ്പറയുന്ന ഡംപുകൾ സാധ്യമാണ്:

എല്ലാം എല്ലാ ഇന്റർ പ്രൊസീജറൽ അനാലിസിസ് ഡമ്പുകളും പ്രവർത്തനക്ഷമമാക്കുന്നു.

cgraph
കോൾ-ഗ്രാഫ് ഒപ്റ്റിമൈസേഷൻ, ഉപയോഗിക്കാത്ത ഫംഗ്‌ഷൻ നീക്കംചെയ്യൽ എന്നിവയെക്കുറിച്ചുള്ള വിവരങ്ങൾ ഡംപ് ചെയ്യുന്നു
ഇൻലൈനിംഗ് തീരുമാനങ്ങൾ.

ഇൻലൈൻ
ഫംഗ്‌ഷൻ ഇൻലൈനിംഗിന് ശേഷം ഡംപ് ചെയ്യുക.

-fdump-പാസുകൾ
കറന്റ് വഴി ഓൺ ചെയ്യുകയും ഓഫ് ചെയ്യുകയും ചെയ്ത ഒപ്റ്റിമൈസേഷൻ പാസുകളുടെ ലിസ്റ്റ് ഡംപ് ചെയ്യുക
കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ.

-fdump-statistics-ഓപ്ഷൻ
ഒരു പ്രത്യേക ഫയലിൽ പാസ് സ്ഥിതിവിവരക്കണക്കുകളുടെ ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുകയും നിയന്ത്രിക്കുകയും ചെയ്യുക. ഫയലിന്റെ പേര്
അവസാനിക്കുന്ന ഒരു പ്രത്യയം ചേർത്തുകൊണ്ട് സൃഷ്ടിച്ചത് .സ്ഥിതിവിവരക്കണക്കുകൾ ഉറവിട ഫയലിന്റെ പേരിലേക്ക്, കൂടാതെ
ഔട്ട്പുട്ട് ഫയലിന്റെ അതേ ഡയറക്ടറിയിൽ ഫയൽ സൃഷ്ടിക്കപ്പെടുന്നു. എങ്കിൽ -ഓപ്ഷൻ ഫോം ആണ്
ഉപയോഗിച്ചു, - സ്ഥിതിവിവരക്കണക്കുകൾ കൗണ്ടറുകൾ മുഴുവൻ കമ്പൈലേഷൻ യൂണിറ്റിൽ സംഗ്രഹിക്കുന്നതിന് കാരണമാകുന്നു
-വിശദാംശങ്ങൾ പാസുകൾ സൃഷ്ടിക്കുന്നതിനനുസരിച്ച് എല്ലാ ഇവന്റുകളും ഉപേക്ഷിക്കുന്നു. ഓപ്‌ഷനില്ലാത്ത ഡിഫോൾട്ടാണ്
സമാഹരിച്ച ഓരോ ഫംഗ്‌ഷനുമുള്ള കൗണ്ടറുകളുടെ ആകെത്തുക.

-fdump-tree-മാറുക
-fdump-tree-മാറുക-ഓപ്ഷനുകൾ
-fdump-tree-മാറുക-ഓപ്ഷനുകൾ=ഫയലിന്റെ പേര്
ഇന്റർമീഡിയറ്റ് ലാംഗ്വേജ് ട്രീ പ്രോസസ്സ് ചെയ്യുന്നതിന്റെ വിവിധ ഘട്ടങ്ങളിൽ ഡംപിംഗ് നിയന്ത്രിക്കുക
ഒരു ഫയല്. എന്നതിലേക്ക് ഒരു സ്വിച്ച്-നിർദ്ദിഷ്ട സഫിക്സ് ചേർത്താണ് ഫയലിന്റെ പേര് സൃഷ്ടിക്കുന്നത്
ഉറവിട ഫയലിന്റെ പേര്, കൂടാതെ ഫയൽ ഔട്ട്പുട്ട് ഫയലിന്റെ അതേ ഡയറക്‌ടറിയിൽ സൃഷ്‌ടിക്കപ്പെട്ടിരിക്കുന്നു. ഇൻ
കേസ് =ഫയലിന്റെ പേര് ഓപ്ഷൻ, തന്നിരിക്കുന്ന ഫയലിൽ ഓട്ടോയ്ക്ക് പകരം ഡംപ് ഔട്ട്പുട്ട് ആണ്
ഡംപ് ഫയലുകൾ എന്ന് പേരിട്ടു. എങ്കിൽ -ഓപ്ഷനുകൾ ഫോം ഉപയോഗിക്കുന്നു, ഓപ്ഷനുകൾ യുടെ ഒരു ലിസ്റ്റ് ആണ് - വേർതിരിച്ച
ഡമ്പിന്റെ വിശദാംശങ്ങൾ നിയന്ത്രിക്കുന്ന ഓപ്ഷനുകൾ. എല്ലാ ഓപ്ഷനുകളും എല്ലാവർക്കും ബാധകമല്ല
ഡംപുകൾ; അർത്ഥമില്ലാത്തവ അവഗണിക്കപ്പെടുന്നു. ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ ലഭ്യമാണ്

വിലാസം
ഓരോ നോഡിന്റെയും വിലാസം പ്രിന്റ് ചെയ്യുക. സാധാരണയായി ഇത് മാറുന്നതിനാൽ അർത്ഥമില്ല
പരിസ്ഥിതിയും ഉറവിട ഫയലും അനുസരിച്ച്. അതിന്റെ പ്രാഥമിക ഉപയോഗം a കെട്ടാനാണ്
ഒരു ഡീബഗ് എൻവയോൺമെന്റ് ഉള്ള ഫയൽ ഡംപ് ചെയ്യുക.

അസ്മ്നാമം
"DECL_ASSEMBLER_NAME" എന്നത് തന്നിരിക്കുന്ന decl-നായി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, അത് ഡമ്പിൽ ഉപയോഗിക്കുക
"DECL_NAME" എന്നതിന് പകരം. ഇതിന്റെ പ്രാഥമിക ഉപയോഗം പിന്നോട്ട് പ്രവർത്തിക്കാനുള്ള എളുപ്പത്തിലുള്ള ഉപയോഗമാണ്
അസംബ്ലി ഫയലിൽ പേരുകൾ കുഴഞ്ഞു.

മെലിഞ്ഞ
ഫ്രണ്ട്-എൻഡ് ഇന്റർമീഡിയറ്റ് പ്രാതിനിധ്യങ്ങൾ ഡംപ് ചെയ്യുമ്പോൾ, അംഗങ്ങളുടെ ഡംപിംഗ് തടയുക
ഒരു ഫംഗ്‌ഷന്റെ വ്യാപ്തി അല്ലെങ്കിൽ ബോഡി, ആ വ്യാപ്തിയിൽ എത്തിയതിനാൽ മാത്രം. മാത്രം
അത്തരം വസ്തുക്കൾ മറ്റെന്തെങ്കിലും വഴി നേരിട്ട് എത്തിച്ചേരാൻ കഴിയുമ്പോൾ വലിച്ചെറിയുക.

മനോഹരമായി അച്ചടിച്ച മരങ്ങൾ വലിച്ചെറിയുമ്പോൾ, ഈ ഓപ്ഷൻ ശരീരങ്ങൾ വലിച്ചെറിയുന്നത് തടയുന്നു
നിയന്ത്രണ ഘടനകൾ.

RTL ഡംപ് ചെയ്യുമ്പോൾ, ഡിഫോൾട്ടിനു പകരം സ്ലിം (ഘനീഭവിച്ച) രൂപത്തിൽ RTL പ്രിന്റ് ചെയ്യുക
LISP-പോലുള്ള പ്രാതിനിധ്യം.

അസംസ്കൃതമായ വൃക്ഷത്തിന്റെ അസംസ്കൃത പ്രതിനിധാനം അച്ചടിക്കുക. സ്ഥിരസ്ഥിതിയായി, മരങ്ങൾ മനോഹരമായി അച്ചടിച്ചിരിക്കുന്നു
ഒരു സി പോലെയുള്ള പ്രാതിനിധ്യം.

വിശദാംശങ്ങൾ
കൂടുതൽ വിശദമായ ഡംപുകൾ പ്രവർത്തനക്ഷമമാക്കുക (ഓരോ ഡംപ് ഓപ്‌ഷനും മാനിക്കുന്നില്ല). എന്നിവയും ഉൾപ്പെടുന്നു
ഒപ്റ്റിമൈസേഷൻ പാസുകളിൽ നിന്നുള്ള വിവരങ്ങൾ.

സ്ഥിതിവിവരക്കണക്കുകൾ
പാസിനെക്കുറിച്ചുള്ള വിവിധ സ്ഥിതിവിവരക്കണക്കുകൾ ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുക (ഓരോ ഡംപും ബഹുമാനിക്കുന്നില്ല
ഓപ്ഷൻ).

ബ്ലോക്കുകൾ
അടിസ്ഥാന ബ്ലോക്ക് അതിരുകൾ കാണിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക (റോ ഡമ്പുകളിൽ അപ്രാപ്തമാക്കി).

ഗ്രാഫ്
മറ്റ് ഓരോ ഡംപ് ഫയലുകൾക്കും (-fdump-rtl-കടന്നുപോകുക), ഡംപ് എ
ഗ്രാഫ്വിസ് ഉപയോഗിച്ച് കാണുന്നതിന് അനുയോജ്യമായ കൺട്രോൾ ഫ്ലോ ഗ്രാഫിന്റെ പ്രാതിനിധ്യം
file.passid.pass.dot. ഫയലിലെ ഓരോ ഫംഗ്‌ഷനും ഒരു സബ്‌ഗ്രാഫ് ആയി പ്രിന്റ് ചെയ്‌തിരിക്കുന്നു,
ഗ്രാഫ്‌വിസിന് അവയെല്ലാം ഒറ്റ പ്ലോട്ടിൽ റെൻഡർ ചെയ്യാൻ കഴിയും.

ഈ ഓപ്‌ഷൻ നിലവിൽ RTL ഡംപുകൾക്ക് മാത്രമേ പ്രവർത്തിക്കൂ, RTL എല്ലായ്‌പ്പോഴും ഡംപ് ഇൻ ചെയ്‌തിരിക്കുന്നു
മെലിഞ്ഞ രൂപം.

vops
എല്ലാ പ്രസ്താവനകൾക്കും വെർച്വൽ ഓപ്പറണ്ടുകൾ കാണിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.

ലിനനോ
പ്രസ്താവനകൾക്കായി ലൈൻ നമ്പറുകൾ കാണിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.

uid ഓരോ വേരിയബിളിനും തനതായ ഐഡി ("DECL_UID") കാണിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.

വെർബോസ്
ഓരോ പ്രസ്താവനയ്ക്കും ട്രീ ഡംപ് കാണിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.

eh ഓരോ പ്രസ്താവനയും കൈവശമുള്ള EH റീജിയൻ നമ്പർ കാണിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.

scev
സ്കെയിലർ പരിണാമ വിശകലന വിശദാംശങ്ങൾ കാണിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.

ഒപ്റ്റിമൈസ് ചെയ്തു
ഒപ്റ്റിമൈസേഷൻ വിവരങ്ങൾ കാണിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക (ചില പാസുകളിൽ മാത്രം ലഭ്യമാണ്).

നഷ്ടമായി
നഷ്‌ടമായ ഒപ്റ്റിമൈസേഷൻ വിവരങ്ങൾ കാണിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക (ചില പാസുകളിൽ മാത്രം ലഭ്യമാണ്).

കുറിപ്പ്
മറ്റ് വിശദമായ ഒപ്റ്റിമൈസേഷൻ വിവരങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക (ചില പാസുകളിൽ മാത്രം ലഭ്യമാണ്).

=ഫയലിന്റെ പേര്
സ്വയമേവ പേരുള്ള ഡംപ് ഫയലിനുപകരം, നൽകിയിരിക്കുന്ന ഫയലിന്റെ പേരിലേക്ക് ഔട്ട്പുട്ട് ചെയ്യുക. ഫയല്
പേരുകൾ stdout ഒപ്പം stderr പ്രത്യേകമായി പരിഗണിക്കുകയും ഇതിനകം തുറന്നതായി കണക്കാക്കുകയും ചെയ്യുന്നു
സാധാരണ സ്ട്രീമുകൾ. ഉദാഹരണത്തിന്,

gcc -O2 -ftree-vectorize -fdump-tree-vect-blocks=foo.dump
-fdump-tree-pre=stderr file.c

ഔട്ട്‌പുട്ട് വെക്‌ടറൈസർ ഡംപിലേക്ക് foo.dump, PRE ഡംപ് ഔട്ട്പുട്ട് ചെയ്യുമ്പോൾ stderr.
ഒരേ പാസിനായി പരസ്പരവിരുദ്ധമായ രണ്ട് ഡംപ് ഫയൽനാമങ്ങൾ നൽകിയിട്ടുണ്ടെങ്കിൽ, രണ്ടാമത്തേത്
ഓപ്ഷൻ മുമ്പത്തേതിനെ മറികടക്കുന്നു.

എല്ലാം ഒഴികെയുള്ള എല്ലാ ഓപ്ഷനുകളും ഓണാക്കുക അസംസ്കൃതമായ, മെലിഞ്ഞ, വെർബോസ് ഒപ്പം ലിനനോ.

ഒപ്റ്റൽ
എല്ലാ ഒപ്റ്റിമൈസേഷൻ ഓപ്ഷനുകളും ഓണാക്കുക, അതായത്, ഒപ്റ്റിമൈസ് ചെയ്തു, നഷ്ടമായി, ഒപ്പം കുറിപ്പ്.

താഴെപ്പറയുന്ന ട്രീ ഡമ്പുകൾ സാധ്യമാണ്:

യഥാർത്ഥ
ഏതെങ്കിലും വൃക്ഷത്തെ അടിസ്ഥാനമാക്കിയുള്ള ഒപ്റ്റിമൈസേഷന് മുമ്പ് ഡംപ് ചെയ്യുക ഫയൽ.ഒറിജിനൽ.

ഒപ്റ്റിമൈസ് ചെയ്തു
എല്ലാ ട്രീ അധിഷ്‌ഠിത ഒപ്റ്റിമൈസേഷനുശേഷം ഡംപ് ചെയ്യുക file.optimized.

ഗിംപിൾ
ഒരു ഫയലിലേക്ക് ജിംപ്ലിഫിക്കേഷൻ പാസ്സിന് മുമ്പും ശേഷവും ഓരോ ഫംഗ്‌ഷനും ഡംപ് ചെയ്യുക. ഫയല്
പേര് ചേർത്താണ് ഉണ്ടാക്കിയിരിക്കുന്നത് .ഗിംപിൾ ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

cfg ഓരോ ഫംഗ്‌ഷന്റെയും കൺട്രോൾ ഫ്ലോ ഗ്രാഫ് ഒരു ഫയലിലേക്ക് ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര് നിർമ്മിച്ചത്
കൂട്ടിച്ചേർക്കുന്നു .cfg ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

ch ലൂപ്പ് ഹെഡറുകൾ പകർത്തിയ ശേഷം ഓരോ ഫംഗ്‌ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത്
.ch ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

ssa SSA-യുമായി ബന്ധപ്പെട്ട വിവരങ്ങൾ ഒരു ഫയലിലേക്ക് ഇടുക. ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത് .ssa
ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

അപരാഭിധാനം
ഓരോ ഫംഗ്‌ഷനുമുള്ള അപരനാമ വിവരങ്ങൾ ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത്
.അപരനാമം ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

വര്ഷകാല ഓരോ ഫംഗ്‌ഷനും CCP കഴിഞ്ഞ് ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത് .ccp ലേക്ക്
ഉറവിട ഫയലിന്റെ പേര്.

storeccp
STORE-CCP-ന് ശേഷം ഓരോ ഫംഗ്‌ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത് .storeccp
ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

പ്രീ ഭാഗികമായ ആവർത്തനം ഇല്ലാതാക്കിയ ശേഷം മരങ്ങൾ വലിച്ചെറിയുക. ഫയലിന്റെ പേര് നിർമ്മിച്ചത്
കൂട്ടിച്ചേർക്കുന്നു .പ്രീ ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

fre പൂർണ്ണമായ റിഡൻഡൻസി ഇല്ലാതാക്കിയ ശേഷം മരങ്ങൾ വലിച്ചെറിയുക. ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത്
.ഫ്രീ ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

കോപ്പിപ്രോപ്പ്
പകർപ്പ് പ്രചരിപ്പിച്ച ശേഷം മരങ്ങൾ ഇടുക. ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത് .കോപ്പിപ്രോപ്പ്
ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

store_copyprop
സ്റ്റോർ കോപ്പി-പ്രചരണത്തിന് ശേഷം മരങ്ങൾ വലിച്ചെറിയുക. ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത്
.സ്റ്റോർ_കോപ്പിപ്രോപ്പ് ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

ഡിസിഇ ഡെഡ് കോഡ് ഒഴിവാക്കിയതിന് ശേഷം ഓരോ ഫംഗ്‌ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര് നിർമ്മിച്ചത്
കൂട്ടിച്ചേർക്കുന്നു .dce ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

മിസ് അഗ്രഗേറ്റുകളുടെ സ്കെലാർ മാറ്റിസ്ഥാപിക്കൽ നടത്തിയതിന് ശേഷം ഓരോ ഫംഗ്ഷനും ഡംപ് ചെയ്യുക. ഫയല്
പേര് ചേർത്താണ് ഉണ്ടാക്കിയിരിക്കുന്നത് .sra ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

മുങ്ങുക
കോഡ് സിങ്കിംഗ് നടത്തിയതിന് ശേഷം ഓരോ ഫംഗ്ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര് നിർമ്മിച്ചത്
കൂട്ടിച്ചേർക്കുന്നു .മുങ്ങുക ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

Dom ഡോമിനേറ്റർ ട്രീ ഒപ്റ്റിമൈസേഷനുകൾ പ്രയോഗിച്ചതിന് ശേഷം ഓരോ ഫംഗ്ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര്
ചേർത്തുകൊണ്ട് ഉണ്ടാക്കിയത് .ഡം ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

പറയുക ഡെഡ് സ്റ്റോർ എലിമിനേഷൻ പ്രയോഗിച്ചതിന് ശേഷം ഓരോ ഫംഗ്ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര് ഉണ്ടാക്കി
ചേർത്തുകൊണ്ട് .dse ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

ഫിയോപ്റ്റ്
PHI നോഡുകൾ നേർരേഖ കോഡിലേക്ക് ഒപ്റ്റിമൈസ് ചെയ്ത ശേഷം ഓരോ ഫംഗ്ഷനും ഡംപ് ചെയ്യുക. ഫയല്
പേര് ചേർത്താണ് ഉണ്ടാക്കിയിരിക്കുന്നത് .ഫിയോപ്റ്റ് ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

forwprop
സിംഗിൾ യൂസ് വേരിയബിളുകൾ ഫോർവേഡ് പ്രചരിപ്പിച്ചതിന് ശേഷം ഓരോ ഫംഗ്ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര്
ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത് .ഫോർപ്രോപ്പ് ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

പകർപ്പിന്റെ പേര്
പകർപ്പ് പുനർനാമകരണം ഒപ്റ്റിമൈസേഷൻ പ്രയോഗിച്ചതിന് ശേഷം ഓരോ ഫംഗ്ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര്
ചേർത്തുകൊണ്ട് ഉണ്ടാക്കിയത് .പകർപ്പിന്റെ പേര് ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

nrv ജനറിക്കിൽ റിട്ടേൺ മൂല്യം ഒപ്റ്റിമൈസേഷൻ പ്രയോഗിച്ചതിന് ശേഷം ഓരോ ഫംഗ്ഷനും ഡംപ് ചെയ്യുക
മരങ്ങൾ. ഫയലിന്റെ പേര് ചേർത്താണ് നിർമ്മിച്ചിരിക്കുന്നത് .nrv ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

വെക്റ്റ്
ലൂപ്പുകളുടെ വെക്‌ടറൈസേഷൻ പ്രയോഗിച്ചതിന് ശേഷം ഓരോ ഫംഗ്‌ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര് ഉണ്ടാക്കി
ചേർത്തുകൊണ്ട് .വെക്റ്റ് ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

slp അടിസ്ഥാന ബ്ലോക്കുകളുടെ വെക്‌ടറൈസേഷൻ പ്രയോഗിച്ചതിന് ശേഷം ഓരോ ഫംഗ്‌ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര്
ചേർത്തുകൊണ്ട് ഉണ്ടാക്കിയത് .slp ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

vp വാല്യൂ റേഞ്ച് പ്രൊപ്പഗേഷൻ (വിആർപി) കഴിഞ്ഞ് ഓരോ ഫംഗ്‌ഷനും ഡംപ് ചെയ്യുക. ഫയലിന്റെ പേര് നിർമ്മിച്ചത്
കൂട്ടിച്ചേർക്കുന്നു .vrp ഉറവിട ഫയലിന്റെ പേരിലേക്ക്.

എല്ലാം ഈ ഓപ്‌ഷനിൽ നൽകിയിരിക്കുന്ന ഫ്ലാഗുകൾ ഉപയോഗിച്ച് ലഭ്യമായ എല്ലാ ട്രീ ഡമ്പുകളും പ്രവർത്തനക്ഷമമാക്കുക.

-fopt-info
-fopt-info-ഓപ്ഷനുകൾ
-fopt-info-ഓപ്ഷനുകൾ=ഫയലിന്റെ പേര്
വിവിധ ഒപ്റ്റിമൈസേഷൻ പാസുകളിൽ നിന്നുള്ള ഒപ്റ്റിമൈസേഷൻ ഡംപുകൾ നിയന്ത്രിക്കുന്നു. എങ്കിൽ -ഓപ്ഷനുകൾ ഫോം ആണ്
ഉപയോഗിച്ചു, ഓപ്ഷനുകൾ യുടെ ഒരു ലിസ്റ്റ് ആണ് - ഡംപ് വിശദാംശങ്ങൾ തിരഞ്ഞെടുക്കുന്നതിനുള്ള വേർതിരിക്കുന്ന ഓപ്‌ഷൻ കീവേഡുകൾ കൂടാതെ
ഒപ്റ്റിമൈസേഷനുകൾ.

ദി ഓപ്ഷനുകൾ രണ്ട് ഗ്രൂപ്പുകളായി തിരിക്കാം: എന്നതിന്റെ വാചാടോപത്തെ വിവരിക്കുന്ന ഓപ്ഷനുകൾ
ഡംപ്, കൂടാതെ ഏതൊക്കെ ഒപ്റ്റിമൈസേഷനുകളാണ് ഉൾപ്പെടുത്തേണ്ടതെന്ന് വിവരിക്കുന്ന ഓപ്ഷനുകൾ. നിന്നുള്ള ഓപ്ഷനുകൾ
രണ്ട് ഗ്രൂപ്പുകളും ഓവർലാപ്പുചെയ്യാത്തതിനാൽ സ്വതന്ത്രമായി മിശ്രണം ചെയ്യാൻ കഴിയും. എന്നിരുന്നാലും, കാര്യത്തിൽ
ഏതെങ്കിലും വൈരുദ്ധ്യങ്ങൾ, കമാൻഡ് ലൈനിലെ മുമ്പത്തെ ഓപ്ഷനുകളെ പിന്നീടുള്ള ഓപ്ഷനുകൾ അസാധുവാക്കുന്നു.

ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ ഡംപ് വെർബോസിറ്റി നിയന്ത്രിക്കുന്നു:

ഒപ്റ്റിമൈസ് ചെയ്തു
ഒരു ഒപ്റ്റിമൈസേഷൻ വിജയകരമായി പ്രയോഗിക്കുമ്പോൾ വിവരങ്ങൾ പ്രിന്റ് ചെയ്യുക. ഇത് ഒരു പാസ് വരെ ആണ്
ഏത് വിവരമാണ് പ്രസക്തമെന്ന് തീരുമാനിക്കാൻ. ഉദാഹരണത്തിന്, വെക്‌ടറൈസർ പ്രിന്റ് പാസ് ചെയ്യുന്നു
വിജയകരമായി വെക്‌ടറൈസ് ചെയ്‌ത ലൂപ്പുകളുടെ ഉറവിട സ്ഥാനം.

നഷ്ടമായി
നഷ്‌ടമായ ഒപ്റ്റിമൈസേഷനുകളെക്കുറിച്ചുള്ള വിവരങ്ങൾ അച്ചടിക്കുക. വ്യക്തിഗത പാസുകൾ നിയന്ത്രിക്കുന്നത്
ഔട്ട്പുട്ടിൽ ഉൾപ്പെടുത്തേണ്ട വിവരങ്ങൾ.

കുറിപ്പ്
ചില പരിവർത്തനങ്ങൾ പോലുള്ള ഒപ്റ്റിമൈസേഷനുകളെക്കുറിച്ചുള്ള വാചാലമായ വിവരങ്ങൾ അച്ചടിക്കുക,
തീരുമാനങ്ങൾ മുതലായവയെക്കുറിച്ചുള്ള കൂടുതൽ വിശദമായ സന്ദേശങ്ങൾ.

എല്ലാം വിശദമായ ഒപ്റ്റിമൈസേഷൻ വിവരങ്ങൾ പ്രിന്റ് ചെയ്യുക. ഇതിൽ ഉൾപ്പെടുന്നു ഒപ്റ്റിമൈസ് ചെയ്തു, നഷ്ടമായി, ഒപ്പം
കുറിപ്പ്.

ഇനിപ്പറയുന്ന ഒന്നോ അതിലധികമോ ഓപ്‌ഷൻ കീവേഡുകൾ ഒരു ഗ്രൂപ്പിനെ വിവരിക്കാൻ ഉപയോഗിക്കാം
ഒപ്റ്റിമൈസേഷനുകൾ:

, ipa എല്ലാ ഇന്റർപ്രൊസീജറൽ ഒപ്റ്റിമൈസേഷനുകളിൽ നിന്നും ഡംപുകൾ പ്രവർത്തനക്ഷമമാക്കുക.

ലൂപ്പ്
എല്ലാ ലൂപ്പ് ഒപ്റ്റിമൈസേഷനുകളിൽ നിന്നും ഡംപുകൾ പ്രവർത്തനക്ഷമമാക്കുക.

ഇൻലൈൻ
എല്ലാ ഇൻലൈനിംഗ് ഒപ്റ്റിമൈസേഷനുകളിൽ നിന്നും ഡംപുകൾ പ്രവർത്തനക്ഷമമാക്കുക.

ഒരു കാര്യം എല്ലാ വെക്‌ടറൈസേഷൻ ഒപ്റ്റിമൈസേഷനുകളിൽ നിന്നും ഡംപുകൾ പ്രവർത്തനക്ഷമമാക്കുക.

ഒപ്റ്റൽ
എല്ലാ ഒപ്റ്റിമൈസേഷനുകളിൽ നിന്നും ഡംപുകൾ പ്രവർത്തനക്ഷമമാക്കുക. ഇത് ഒപ്റ്റിമൈസേഷൻ ഗ്രൂപ്പുകളുടെ സൂപ്പർസെറ്റാണ്
മുകളിൽ ലിസ്റ്റുചെയ്തു.

If ഓപ്ഷനുകൾ ഒഴിവാക്കിയിരിക്കുന്നു, അത് ഡിഫോൾട്ടാണ് ഒപ്റ്റിമൈസ്-ഒപ്ടാൽ, എല്ലാ വിവരങ്ങളും ഉപേക്ഷിക്കുക എന്നാണ്
എല്ലാ പാസുകളിൽ നിന്നുമുള്ള വിജയകരമായ ഒപ്റ്റിമൈസേഷനുകളെക്കുറിച്ച്.

എങ്കില് ഫയലിന്റെ പേര് നൽകിയിരിക്കുന്നു, തുടർന്ന് ബാധകമായ എല്ലാ ഒപ്റ്റിമൈസേഷനുകളിൽ നിന്നുമുള്ള ഡംപുകൾ
എന്നതിലേക്ക് സംയോജിപ്പിച്ചിരിക്കുന്നു ഫയലിന്റെ പേര്. അല്ലെങ്കിൽ, ഡംപ് ഔട്ട്പുട്ട് ഓൺ ആണ് stderr. എങ്കിലും
ഒന്നിലധികം -fopt-info ഓപ്‌ഷനുകൾ സ്വീകരിക്കുന്നു, അവയിലൊന്ന് മാത്രമേ ഉൾപ്പെടുത്താൻ കഴിയൂ ഫയലിന്റെ പേര്. എങ്കിൽ
മറ്റ് ഫയൽനാമങ്ങൾ നൽകിയ ശേഷം അത്തരം ആദ്യ ഓപ്‌ഷനുകൾ ഒഴികെ മറ്റെല്ലാം അവഗണിക്കപ്പെടും.

ഔട്ട്പുട്ട് എന്നത് ശ്രദ്ധിക്കുക ഫയലിന്റെ പേര് ഒന്നിലധികം വിവർത്തന യൂണിറ്റുകളുടെ കാര്യത്തിൽ തിരുത്തിയെഴുതുന്നു. എങ്കിൽ
ഒന്നിലധികം വിവർത്തന യൂണിറ്റുകളിൽ നിന്നുള്ള സംയോജിത ഔട്ട്പുട്ട് ആവശ്യമാണ്, stderr ഉപയോഗിക്കണം
പകരം.

ഇനിപ്പറയുന്ന ഉദാഹരണത്തിൽ, ഒപ്റ്റിമൈസേഷൻ വിവരം ഔട്ട്പുട്ട് ചെയ്യുന്നു stderr:

gcc -O3 -fopt-info

ഈ ഉദാഹരണം:

gcc -O3 -fopt-info-missed= missed.all

എല്ലാ പാസുകളിൽ നിന്നുമുള്ള ഒപ്റ്റിമൈസേഷൻ റിപ്പോർട്ട് ഔട്ട്പുട്ടുകൾക്ക് നഷ്ടമായി മിസ്ഡ്.എല്ലാം, ഇതും:

gcc -O2 -ftree-vectorize -fopt-info-vec- missed

വെക്‌ടറൈസേഷൻ പാസുകളിൽ നിന്ന് നഷ്‌ടമായ ഒപ്റ്റിമൈസേഷൻ അവസരങ്ങളെക്കുറിച്ചുള്ള വിവരങ്ങൾ പ്രിന്റ് ചെയ്യുന്നു
on stderr. അതല്ല -fopt-info-vec-നഷ്‌ടപ്പെട്ടു എന്നതിന് തുല്യമാണ് -fopt-info-missed-vec.

മറ്റൊരു ഉദാഹരണമായി,

gcc -O3 -fopt-info-inline-optimized-missed=inline.txt

നഷ്‌ടമായ ഒപ്റ്റിമൈസേഷനുകളെയും അതുപോലെ എല്ലാവരിൽ നിന്നും ഒപ്റ്റിമൈസ് ചെയ്ത സ്ഥലങ്ങളെയും കുറിച്ചുള്ള വിവരങ്ങൾ ഔട്ട്‌പുട്ട് ചെയ്യുന്നു
ഇൻലൈനിംഗ് കടന്നുപോകുന്നു inline.txt.

അവസാനമായി, പരിഗണിക്കുക:

gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt

ഇവിടെ രണ്ട് ഔട്ട്പുട്ട് ഫയൽനാമങ്ങൾ vec.miss ഒപ്പം loop.opt ഒന്നിൽ നിന്ന് മാത്രം സംഘർഷത്തിലാണ്
ഔട്ട്പുട്ട് ഫയൽ അനുവദനീയമാണ്. ഈ സാഹചര്യത്തിൽ, ആദ്യ ഓപ്ഷൻ മാത്രമേ പ്രാബല്യത്തിൽ വരികയുള്ളൂ
തുടർന്നുള്ള ഓപ്ഷനുകൾ അവഗണിക്കപ്പെടുന്നു. അങ്ങനെ മാത്രം vec.miss ഡംപുകൾ അടങ്ങുന്ന ഉൽപ്പാദിപ്പിക്കപ്പെടുന്നു
നഷ്‌ടമായ അവസരങ്ങളെക്കുറിച്ച് വെക്‌ടറൈസറിൽ നിന്ന്.

-frandom-seed=അക്കം
ജനറേറ്റിംഗിൽ ക്രമരഹിതമായ സംഖ്യകളുടെ സ്ഥാനത്ത് GCC ഉപയോഗിക്കുന്ന ഒരു വിത്ത് ഈ ഓപ്ഷൻ നൽകുന്നു
കംപൈൽ ചെയ്ത എല്ലാ ഫയലുകളിലും വ്യത്യസ്തമായിരിക്കണം ചില ചിഹ്ന നാമങ്ങൾ. അതുകൂടിയാണ്
കവറേജ് ഡാറ്റ ഫയലുകളിലും ഉൽപ്പാദിപ്പിക്കുന്ന ഒബ്ജക്റ്റ് ഫയലുകളിലും അദ്വിതീയ സ്റ്റാമ്പുകൾ സ്ഥാപിക്കാൻ ഉപയോഗിക്കുന്നു
അവരെ. നിങ്ങൾക്ക് ഉപയോഗിക്കാം -ഫ്രാൻഡം-വിത്ത് പുനരുൽപ്പാദിപ്പിക്കാവുന്ന സമാന വസ്തു നിർമ്മിക്കാനുള്ള ഓപ്ഷൻ
ഫയലുകൾ.

ദി അക്കം നിങ്ങൾ കംപൈൽ ചെയ്യുന്ന ഓരോ ഫയലിനും വ്യത്യസ്തമായിരിക്കണം.

-fsched-verbose=n
നിർദ്ദേശ ഷെഡ്യൂളിംഗ് ഉപയോഗിക്കുന്ന ടാർഗെറ്റുകളിൽ, ഈ ഓപ്ഷൻ തുക നിയന്ത്രിക്കുന്നു
ഡീബഗ്ഗിംഗ് ഔട്ട്പുട്ട് ഷെഡ്യൂളർ പ്രിന്റുകൾ. ഈ വിവരങ്ങൾ സാധാരണ പിശകിന് എഴുതിയതാണ്,
അല്ലാതെ -fdump-rtl-sched1 or -fdump-rtl-sched2 വ്യക്തമാക്കിയിരിക്കുന്നു, ഈ സാഹചര്യത്തിൽ അത് ഔട്ട്പുട്ട് ആണ്
സാധാരണ ഡംപ് ലിസ്റ്റിംഗ് ഫയലിലേക്ക്, .ഷെഡ്1 or .ഷെഡ്2 യഥാക്രമം. എന്നിരുന്നാലും വേണ്ടി n
ഒമ്പതിൽ കൂടുതൽ, ഔട്ട്പുട്ട് എപ്പോഴും സ്റ്റാൻഡേർഡ് പിശക് പ്രിന്റ് ചെയ്യുന്നു.

വേണ്ടി n പൂജ്യത്തേക്കാൾ വലുത്, -fsched-verbose എന്നതിന് സമാനമായ വിവരങ്ങൾ ഔട്ട്പുട്ട് ചെയ്യുന്നു
-fdump-rtl-sched1 ഒപ്പം -fdump-rtl-sched2. വേണ്ടി n ഒന്നിൽ കൂടുതൽ, അത് അടിസ്ഥാനപരമായ ഔട്ട്പുട്ട് കൂടിയാണ്
ബ്ലോക്ക് പ്രോബബിലിറ്റികൾ, വിശദമായ റെഡി ലിസ്റ്റ് വിവരങ്ങൾ, യൂണിറ്റ്/ഇൻസ്എൻ വിവരങ്ങൾ. വേണ്ടി n
രണ്ടിൽ കൂടുതൽ, ഇതിൽ അബോർട്ട് പോയിന്റിലെ RTL, നിയന്ത്രണ-പ്രവാഹം, പ്രദേശങ്ങളുടെ വിവരങ്ങൾ എന്നിവ ഉൾപ്പെടുന്നു. ഒപ്പം
വേണ്ടി n നാലിൽ കൂടുതൽ, -fsched-verbose ആശ്രിതത്വ വിവരങ്ങളും ഉൾപ്പെടുന്നു.

-സേവ്-ടെമ്പുകൾ
-save-temps=cwd
സാധാരണ "താൽക്കാലിക" ഇന്റർമീഡിയറ്റ് ഫയലുകൾ ശാശ്വതമായി സംഭരിക്കുക; അവയെ കറണ്ടിൽ വയ്ക്കുക
ഡയറക്‌ടറി, സോഴ്‌സ് ഫയലിനെ അടിസ്ഥാനമാക്കി അവയ്ക്ക് പേര് നൽകുക. അങ്ങനെ, കംപൈൽ ചെയ്യുന്നു foo.c കൂടെ -c
-സേവ്-ടെമ്പുകൾ ഫയലുകൾ നിർമ്മിക്കുന്നു foo.i ഒപ്പം foo.s, കൂടാതെ foo.o. ഇത് എ സൃഷ്ടിക്കുന്നു
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്തു foo.i കംപൈലർ ഇപ്പോൾ സാധാരണയായി ഉപയോഗിക്കുന്നുണ്ടെങ്കിലും ഔട്ട്പുട്ട് ഫയൽ
സംയോജിത പ്രീപ്രോസസർ.

എന്നിവയുമായി സംയോജിച്ച് ഉപയോഗിക്കുമ്പോൾ -x കമാൻഡ്-ലൈൻ ഓപ്ഷൻ, -സേവ്-ടെമ്പുകൾ വിവേകമാണ്
ഒരു ഇൻപുട്ട് സോഴ്‌സ് ഫയലിന്റെ അതേ വിപുലീകരണത്തോടെ എഴുതുന്നത് ഒഴിവാക്കാൻ മതിയാകും
ഇന്റർമീഡിയറ്റ് ഫയൽ. പേരുമാറ്റുന്നതിലൂടെ അനുബന്ധ ഇന്റർമീഡിയറ്റ് ഫയൽ ലഭിച്ചേക്കാം
ഉപയോഗിക്കുന്നതിന് മുമ്പ് ഉറവിട ഫയൽ -സേവ്-ടെമ്പുകൾ.

നിങ്ങൾ GCC സമാന്തരമായി അഭ്യർത്ഥിക്കുകയാണെങ്കിൽ, പങ്കിടുന്ന നിരവധി വ്യത്യസ്ത ഉറവിട ഫയലുകൾ കംപൈൽ ചെയ്യുന്നു a
വ്യത്യസ്‌ത സബ്‌ഡയറക്‌ടറികളിലെ പൊതുവായ അടിസ്ഥാന നാമം അല്ലെങ്കിൽ കംപൈൽ ചെയ്‌ത ഒരേ ഉറവിട ഫയൽ
ഒന്നിലധികം ഔട്ട്‌പുട്ട് ഡെസ്റ്റിനേഷനുകൾ, വ്യത്യസ്ത സമാന്തര കംപൈലറുകൾ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്
പരസ്പരം ഇടപെടുക, താൽക്കാലിക ഫയലുകൾ തിരുത്തിയെഴുതുക. ഉദാഹരണത്തിന്:

gcc -save-temps -o outdir1/foo.o indir1/foo.c&
gcc -save-temps -o outdir2/foo.o indir2/foo.c&

കാരണമായേക്കാം foo.i ഒപ്പം foo.o രണ്ട് കംപൈലറുകളും ഒരേസമയം എഴുതുന്നു.

-save-temps=obj
സാധാരണ "താൽക്കാലിക" ഇന്റർമീഡിയറ്റ് ഫയലുകൾ ശാശ്വതമായി സംഭരിക്കുക. എങ്കിൽ -o ഓപ്ഷൻ ഉപയോഗിക്കുന്നു,
താൽക്കാലിക ഫയലുകൾ ഒബ്ജക്റ്റ് ഫയലിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. എങ്കിൽ -o ഓപ്ഷൻ ഉപയോഗിച്ചിട്ടില്ല
-save-temps=obj സ്വിച്ച് പോലെ പെരുമാറുന്നു -സേവ്-ടെമ്പുകൾ.

ഉദാഹരണത്തിന്:

gcc -save-temps=obj -c foo.c
gcc -save-temps=obj -c bar.c -o dir/xbar.o
gcc -save-temps=obj foobar.c -o dir2/yfoobar

സൃഷ്ടിക്കുന്നു foo.i, foo.s, dir/xbar.i, dir/xbar.s, dir2/yfoobar.i, dir2/yfoobar.s, ഒപ്പം
dir2/yfoobar.o.

- സമയം[=ഫയല്]
കംപൈലേഷൻ ക്രമത്തിൽ ഓരോ ഉപപ്രോസസ്സും എടുക്കുന്ന സിപിയു സമയം റിപ്പോർട്ടുചെയ്യുക. സിക്ക് വേണ്ടി
സോഴ്സ് ഫയലുകൾ, ഇതാണ് കംപൈലറും അസംബ്ലറും (ലിങ്കിംഗ് ആണെങ്കിൽ ലിങ്കറും കൂടി
ചെയ്തു).

ഒരു ഔട്ട്പുട്ട് ഫയലിന്റെ സ്പെസിഫിക്കേഷൻ ഇല്ലാതെ, ഔട്ട്പുട്ട് ഇതുപോലെ കാണപ്പെടുന്നു:

# cc1 0.12 0.01
# 0.00 0.01 ആയി

ഓരോ വരിയിലെയും ആദ്യത്തെ നമ്പർ "ഉപയോക്തൃ സമയം" ആണ്, അതായത് എക്സിക്യൂട്ട് ചെയ്യാൻ ചെലവഴിച്ച സമയം
പ്രോഗ്രാം തന്നെ. രണ്ടാമത്തെ നമ്പർ "സിസ്റ്റം സമയം" ആണ്, പ്രവർത്തനത്തിനായി ചെലവഴിച്ച സമയം
പ്രോഗ്രാമിനെ പ്രതിനിധീകരിച്ച് സിസ്റ്റം ദിനചര്യകൾ. രണ്ട് അക്കങ്ങളും സെക്കന്റിലാണ്.

ഒരു ഔട്ട്‌പുട്ട് ഫയലിന്റെ സ്പെസിഫിക്കേഷൻ ഉപയോഗിച്ച്, പേരിട്ടിരിക്കുന്ന ഫയലിലേക്ക് ഔട്ട്പുട്ട് ചേർക്കുന്നു,
അത് ഇതുപോലെ കാണപ്പെടുന്നു:

0.12 0.01 cc1
0.00 0.01 ആയി

പ്രോഗ്രാമിന്റെ പേരിന് മുമ്പായി "ഉപയോക്തൃ സമയം", "സിസ്റ്റം സമയം" എന്നിവ നീക്കി
പ്രോഗ്രാമിലേക്ക് കൈമാറിയ ഓപ്ഷനുകൾ പ്രദർശിപ്പിക്കും, അതുവഴി ഒരാൾക്ക് ഏത് ഫയൽ ആയിരുന്നുവെന്ന് പിന്നീട് പറയാൻ കഴിയും
കംപൈൽ ചെയ്യുന്നു, കൂടാതെ ഏത് ഓപ്ഷനുകളുമായാണ്.

-fvar-ട്രാക്കിംഗ്
വേരിയബിൾ ട്രാക്കിംഗ് പാസ് പ്രവർത്തിപ്പിക്കുക. ഓരോ സ്ഥാനത്തും വേരിയബിളുകൾ എവിടെയാണ് സംഭരിച്ചിരിക്കുന്നതെന്ന് ഇത് കണക്കാക്കുന്നു
കോഡിൽ. മികച്ച ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ ജനറേറ്റ് ചെയ്യപ്പെടും (ഡീബഗ്ഗിംഗ് വിവരമാണെങ്കിൽ
ഫോർമാറ്റ് ഈ വിവരങ്ങൾ പിന്തുണയ്ക്കുന്നു).

ഒപ്റ്റിമൈസേഷൻ ഉപയോഗിച്ച് കംപൈൽ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുന്നു (-ഓസ്, -O, -O2,...),
ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ (-g) കൂടാതെ ഡീബഗ് ഇൻഫോ ഫോർമാറ്റ് അതിനെ പിന്തുണയ്ക്കുന്നു.

-fvar-ട്രാക്കിംഗ്-അസൈൻമെന്റുകൾ
സമാഹരണത്തിന്റെ തുടക്കത്തിൽ ഉപയോക്തൃ വേരിയബിളുകളിലേക്കുള്ള അസൈൻമെന്റുകൾ വ്യാഖ്യാനിക്കുകയും കൊണ്ടുപോകാൻ ശ്രമിക്കുകയും ചെയ്യുക
സമാഹാരത്തിലുടനീളം വ്യാഖ്യാനങ്ങൾ അവസാനം വരെ ഒരു ശ്രമത്തിൽ
ഒപ്റ്റിമൈസ് ചെയ്യുമ്പോൾ ഡീബഗ് വിവരങ്ങൾ മെച്ചപ്പെടുത്താൻ. ഉപയോഗം -gdwarf-4 കൂടെ ശുപാർശ ചെയ്യുന്നു
അതു കൊണ്ട്.

var-ട്രാക്കിംഗ് പ്രവർത്തനരഹിതമാക്കിയാലും ഇത് പ്രവർത്തനക്ഷമമാക്കാൻ കഴിയും, ഈ സാഹചര്യത്തിൽ വ്യാഖ്യാനങ്ങളാണ്
സൃഷ്ടിക്കുകയും പരിപാലിക്കുകയും ചെയ്തു, പക്ഷേ അവസാനം ഉപേക്ഷിച്ചു. സ്ഥിരസ്ഥിതിയായി, ഈ ഫ്ലാഗ് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
ഒപ്പം കൂടെ -fvar-ട്രാക്കിംഗ്, തിരഞ്ഞെടുത്ത ഷെഡ്യൂളിംഗ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ ഒഴികെ.

-fvar-tracking-assignments-toggle
ടോഗിൾ ചെയ്യുക -fvar-ട്രാക്കിംഗ്-അസൈൻമെന്റുകൾ, അതേ രീതിയിൽ -gtoggle ടോഗിൾ ചെയ്യുന്നു -g.

-print-file-name=ലൈബ്രറി
ലൈബ്രറി ഫയലിന്റെ പൂർണ്ണമായ പേര് അച്ചടിക്കുക ലൈബ്രറി അത് എപ്പോൾ ഉപയോഗിക്കും
ലിങ്കിംഗ് --- കൂടാതെ മറ്റൊന്നും ചെയ്യരുത്. ഈ ഓപ്ഷൻ ഉപയോഗിച്ച്, GCC കംപൈൽ ചെയ്യുകയോ ലിങ്ക് ചെയ്യുകയോ ചെയ്യുന്നില്ല
എന്തും; അത് ഫയലിന്റെ പേര് പ്രിന്റ് ചെയ്യുന്നു.

-പ്രിന്റ്-മൾട്ടി-ഡയറക്‌ടറി
മറ്റേതെങ്കിലും സ്വിച്ചുകൾ തിരഞ്ഞെടുത്ത മൾട്ടിലിബിന് അനുയോജ്യമായ ഡയറക്ടറിയുടെ പേര് പ്രിന്റ് ചെയ്യുക
കമാൻഡ് ലൈനിൽ ഉണ്ട്. ഈ ഡയറക്ടറി നിലവിലുണ്ടാകണം GCC_EXEC_PREFIX.

-പ്രിന്റ്-മൾട്ടി-ലിബ്
മൾട്ടിലിബ് ഡയറക്‌ടറി നാമങ്ങളിൽ നിന്ന് അവയെ പ്രവർത്തനക്ഷമമാക്കുന്ന കംപൈലർ സ്വിച്ചുകളിലേക്ക് മാപ്പിംഗ് പ്രിന്റ് ചെയ്യുക.
ഡയറക്ടറിയുടെ പേര് സ്വിച്ചുകളിൽ നിന്ന് വേർതിരിച്ചിരിക്കുന്നു ;, കൂടാതെ ഓരോ സ്വിച്ചും ഒരു ഉപയോഗിച്ച് ആരംഭിക്കുന്നു
@ പകരം -, ഒന്നിലധികം സ്വിച്ചുകൾക്കിടയിലുള്ള ഇടങ്ങൾ ഇല്ലാതെ. ഇത് വേണം
ഷെൽ പ്രോസസ്സിംഗ് എളുപ്പമാക്കുന്നു.

-print-multi-os-directory
തിരഞ്ഞെടുത്ത മൾട്ടിലിബിനായി OS ലൈബ്രറികളിലേക്കുള്ള പാത പ്രിന്റ് ചെയ്യുക, ചിലതുമായി ബന്ധപ്പെട്ട് ലിബ്
ഉപഡയറക്‌ടറി. OS ലൈബ്രറികൾ ഉണ്ടെങ്കിൽ ലിബ് ഉപഡയറക്‌ടറി കൂടാതെ മൾട്ടിലിബുകളൊന്നുമില്ല
ഉപയോഗിക്കുന്നു, ഇത് സാധാരണയായി വെറുതെയാണ് ., OS ലൈബ്രറികൾ ഉണ്ടെങ്കിൽ ലിബ്സഫിക്സ് സഹോദരൻ
ഇത് അച്ചടിക്കുന്ന ഡയറക്ടറികൾ ഉദാ ../lib64, ../ ലിബ് or ../lib32, അല്ലെങ്കിൽ OS ലൈബ്രറികൾ ആണെങ്കിൽ
നിലവിലുണ്ട് lib/subdir അത് പ്രിന്റ് ചെയ്യുന്ന ഉപഡയറക്‌ടറികൾ ഉദാ amd64, സ്പാർക്വി9 or വീട്6.

-പ്രിന്റ്-മൾട്ടിയാർക്ക്
തിരഞ്ഞെടുത്ത മൾട്ടിഅർക്കിനായി OS ലൈബ്രറികളിലേക്കുള്ള പാത പ്രിന്റ് ചെയ്യുക, ചിലതുമായി ബന്ധപ്പെട്ട് ലിബ്
ഉപഡയറക്ടറി.

-print-prog-name=പ്രോഗ്രാം
പോലെ -പ്രിന്റ്-ഫയൽ-നാമം, എന്നാൽ പോലുള്ള ഒരു പ്രോഗ്രാമിനായി തിരയുന്നു സിപിപി.

-print-libgcc-file-name
അതുപോലെ തന്നെ -print-file-name=libgcc.a.

നിങ്ങൾ ഉപയോഗിക്കുമ്പോൾ ഇത് ഉപയോഗപ്രദമാണ് -nostdlib or -nodefaultlibs എന്നാൽ നിങ്ങൾ ലിങ്ക് ചെയ്യാൻ ആഗ്രഹിക്കുന്നു
libgcc.a. നിനക്ക് ചെയ്യാൻ പറ്റും:

gcc -nostdlib ... `gcc -print-libgcc-file-name`

-പ്രിന്റ്-സെർച്ച്-ഡൈർസ്
ക്രമീകരിച്ച ഇൻസ്റ്റലേഷൻ ഡയറക്ടറിയുടെ പേരും പ്രോഗ്രാമിന്റെ ഒരു ലിസ്റ്റും പ്രിന്റ് ചെയ്യുക
ലൈബ്രറി ഡയറക്ടറികൾ ജിസി തിരയലുകൾ --- കൂടാതെ മറ്റൊന്നും ചെയ്യരുത്.

എപ്പോൾ ഇത് ഉപയോഗപ്രദമാണ് ജിസി പിശക് സന്ദേശം പ്രിന്റ് ചെയ്യുന്നു ഇൻസ്റ്റാളേഷൻ പ്രശ്നം, ഒന്നും കഴിയില്ല exec
cpp0: ഇല്ല അത്തരം ഫയല് or ഡയറക്ടറി. ഇത് പരിഹരിക്കാൻ നിങ്ങൾ ഒന്നുകിൽ ഇടേണ്ടതുണ്ട് cpp0 ഒപ്പം
മറ്റ് കംപൈലർ ഘടകങ്ങൾ എവിടെയാണ് ജിസി അവരെ കണ്ടെത്തുമെന്ന് പ്രതീക്ഷിക്കുന്നു, അല്ലെങ്കിൽ നിങ്ങൾക്ക് സജ്ജമാക്കാൻ കഴിയും
പരിസ്ഥിതി വേരിയബിൾ GCC_EXEC_PREFIX നിങ്ങൾ അവ ഇൻസ്റ്റാൾ ചെയ്ത ഡയറക്ടറിയിലേക്ക്. ചെയ്യരുത്
പിന്നോക്കം മറക്കുക /.

-പ്രിന്റ്-സിസ്‌റൂട്ട്
സമാഹരിക്കുന്ന സമയത്ത് ഉപയോഗിക്കുന്ന ടാർഗെറ്റ് sysroot ഡയറക്ടറി പ്രിന്റ് ചെയ്യുക. ഇതാണ്
കോൺഫിഗർ ചെയ്യുന്ന സമയത്തോ ഉപയോഗിക്കുമ്പോഴോ ടാർഗെറ്റ് sysroot വ്യക്തമാക്കിയിട്ടുണ്ട് --സിസ് റൂട്ട് ഓപ്ഷൻ,
കംപൈലേഷൻ ഓപ്ഷനുകളെ ആശ്രയിക്കുന്ന ഒരു അധിക സഫിക്‌സ് ഉപയോഗിച്ചായിരിക്കാം. ലക്ഷ്യമില്ലെങ്കിൽ
sysroot വ്യക്തമാക്കിയിരിക്കുന്നു, ഓപ്ഷൻ ഒന്നും പ്രിന്റ് ചെയ്യുന്നില്ല.

-print-sysroot-headers-suffix
തലക്കെട്ടുകൾക്കായി തിരയുമ്പോൾ ടാർഗെറ്റ് sysroot-ലേക്ക് ചേർത്ത സഫിക്സ് പ്രിന്റ് ചെയ്യുക, അല്ലെങ്കിൽ ഒരു നൽകുക
കംപൈലർ അത്തരമൊരു സഫിക്സ് ഉപയോഗിച്ച് ക്രമീകരിച്ചിട്ടില്ലെങ്കിൽ പിശക് --- ഒന്നും ചെയ്യരുത്
വേറെ.

-ഡമ്പ്മെഷീൻ
കമ്പൈലറിന്റെ ടാർഗെറ്റ് മെഷീൻ പ്രിന്റ് ചെയ്യുക (ഉദാഹരണത്തിന്, i686-pc-linux-gnu)---അതും ചെയ്യരുത്
വേറെ വല്ലതും വേണോ.

-ഡംപ്വേർഷൻ
കംപൈലർ പതിപ്പ് പ്രിന്റ് ചെയ്യുക (ഉദാഹരണത്തിന്, 3.0) --- മറ്റൊന്നും ചെയ്യരുത്.

-ഡംപ്‌സ്പെക്‌സ്
കംപൈലറിന്റെ ബിൽറ്റ്-ഇൻ സ്പെസിഫിക്കേഷൻ പ്രിന്റ് ചെയ്യുക --- മറ്റൊന്നും ചെയ്യരുത്. (ഇത് എപ്പോൾ ഉപയോഗിക്കുന്നു
GCC തന്നെ നിർമ്മിക്കുന്നു.)

-fno-eliminate-unused-debug-types
സാധാരണയായി, DWARF 2 ഔട്ട്‌പുട്ട് ഉൽപ്പാദിപ്പിക്കുമ്പോൾ, ഡീബഗ് സിംബൽ ഔട്ട്‌പുട്ട് നിർമ്മിക്കുന്നത് GCC ഒഴിവാക്കുന്നു.
കംപൈൽ ചെയ്യുന്ന സോഴ്സ് ഫയലിൽ എവിടെയും ഉപയോഗിക്കാത്ത തരങ്ങൾ. ചിലപ്പോൾ അത് ഉപയോഗപ്രദമാണ്
ഒരു കംപൈലേഷൻ യൂണിറ്റിൽ പ്രഖ്യാപിച്ച എല്ലാ തരത്തിലുമുള്ള ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ GCC എമിറ്റ് ചെയ്യാൻ,
ആ കംപൈലേഷൻ യൂണിറ്റിൽ അവ യഥാർത്ഥത്തിൽ ഉപയോഗിച്ചിട്ടുണ്ടോ ഇല്ലയോ എന്നത് പരിഗണിക്കാതെ തന്നെ
ഉദാഹരണത്തിന്, ഡീബഗ്ഗറിൽ, യഥാർത്ഥത്തിൽ അല്ലാത്ത ഒരു തരത്തിലേക്ക് ഒരു മൂല്യം കാസ്‌റ്റ് ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ
നിങ്ങളുടെ പ്രോഗ്രാമിൽ ഉപയോഗിച്ചു (എന്നാൽ പ്രഖ്യാപിച്ചു). എന്നിരുന്നാലും, മിക്കപ്പോഴും, ഇത് എ
പാഴായ സ്ഥലത്തിന്റെ ഗണ്യമായ അളവ്.

ഓപ്ഷനുകൾ നിയന്ത്രണ ഒപ്റ്റിമൈസേഷൻ
ഈ ഓപ്ഷനുകൾ വിവിധ തരത്തിലുള്ള ഒപ്റ്റിമൈസേഷനുകളെ നിയന്ത്രിക്കുന്നു.

ഒപ്റ്റിമൈസേഷൻ ഓപ്ഷനുകളൊന്നുമില്ലാതെ, കംപൈലറിന്റെ ലക്ഷ്യം കംപൈലേഷന്റെ ചെലവ് കുറയ്ക്കുക എന്നതാണ്
ഡീബഗ്ഗിംഗ് പ്രതീക്ഷിക്കുന്ന ഫലങ്ങൾ ഉണ്ടാക്കുന്നതിനും. പ്രസ്താവനകൾ സ്വതന്ത്രമാണ്: നിങ്ങളാണെങ്കിൽ
പ്രസ്താവനകൾക്കിടയിൽ ഒരു ബ്രേക്ക്‌പോയിന്റ് ഉപയോഗിച്ച് പ്രോഗ്രാം നിർത്തുക, തുടർന്ന് നിങ്ങൾക്ക് ഒരു പുതിയ മൂല്യം നൽകാം
ഏതെങ്കിലും വേരിയബിൾ അല്ലെങ്കിൽ പ്രോഗ്രാം കൌണ്ടർ ഫംഗ്ഷനിലെ മറ്റേതെങ്കിലും പ്രസ്താവനയിലേക്ക് മാറ്റുകയും നേടുകയും ചെയ്യുക
സോഴ്സ് കോഡിൽ നിന്ന് നിങ്ങൾ പ്രതീക്ഷിക്കുന്ന ഫലങ്ങൾ കൃത്യമായി.

ഒപ്റ്റിമൈസേഷൻ ഫ്ലാഗുകൾ ഓണാക്കുന്നത് കംപൈലറിനെ പ്രകടനവും കൂടാതെ/അല്ലെങ്കിൽ മെച്ചപ്പെടുത്താൻ ശ്രമിക്കുന്നു
കംപൈലേഷൻ സമയത്തിന്റെ ചെലവിൽ കോഡ് വലുപ്പവും ഒരുപക്ഷേ ഡീബഗ് ചെയ്യാനുള്ള കഴിവും
പ്രോഗ്രാം.

പ്രോഗ്രാമിനെക്കുറിച്ചുള്ള അറിവിനെ അടിസ്ഥാനമാക്കി കംപൈലർ ഒപ്റ്റിമൈസേഷൻ നടത്തുന്നു.
ഒരു ഔട്ട്‌പുട്ട് ഫയൽ മോഡിലേക്ക് ഒരേസമയം ഒന്നിലധികം ഫയലുകൾ കംപൈൽ ചെയ്യുന്നത് കംപൈലറിനെ ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു
ഓരോ ഫയലുകളും കംപൈൽ ചെയ്യുമ്പോൾ അവയിൽ നിന്നും ലഭിച്ച വിവരങ്ങൾ.

എല്ലാ ഒപ്റ്റിമൈസേഷനുകളും ഒരു ഫ്ലാഗ് നേരിട്ട് നിയന്ത്രിക്കപ്പെടുന്നില്ല. എ ഉള്ള ഒപ്റ്റിമൈസേഷനുകൾ മാത്രം
ഈ വിഭാഗത്തിൽ പതാക പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്.

ഒരു എങ്കിൽ മാത്രമേ മിക്ക ഒപ്റ്റിമൈസേഷനുകളും പ്രവർത്തനക്ഷമമാകൂ -O കമാൻഡ് ലൈനിൽ ലെവൽ സജ്ജീകരിച്ചിരിക്കുന്നു. അല്ലെങ്കിൽ
വ്യക്തിഗത ഒപ്റ്റിമൈസേഷൻ ഫ്ലാഗുകൾ വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിലും അവ പ്രവർത്തനരഹിതമാണ്.

ടാർഗെറ്റിനെയും ജിസിസി എങ്ങനെ കോൺഫിഗർ ചെയ്‌തിരിക്കുന്നു എന്നതിനെ ആശ്രയിച്ച്, അൽപ്പം വ്യത്യസ്തമായ ഒരു സെറ്റ്
ഓരോന്നിലും ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനക്ഷമമാക്കിയേക്കാം -O ഇവിടെ ലിസ്റ്റുചെയ്തിരിക്കുന്നതിനേക്കാൾ ലെവൽ. നിങ്ങൾക്ക് GCC അഭ്യർത്ഥിക്കാം
കൂടെ -Q --help=optimizers എന്നതിൽ പ്രവർത്തനക്ഷമമാക്കിയ ഒപ്റ്റിമൈസേഷനുകളുടെ കൃത്യമായ സെറ്റ് കണ്ടെത്താൻ
ഓരോ ലെവലും.

-O
-O1 ഒപ്റ്റിമൈസ് ചെയ്യുക. സമാഹാരം ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിന് കുറച്ച് കൂടുതൽ സമയമെടുക്കും, കൂടാതെ കൂടുതൽ മെമ്മറിയും
ഒരു വലിയ ചടങ്ങ്.

കൂടെ -O, കോഡ് വലുപ്പവും നിർവ്വഹണ സമയവും കുറയ്ക്കാൻ കംപൈലർ ശ്രമിക്കുന്നു
വളരെയധികം സമയമെടുക്കുന്ന ഏതെങ്കിലും ഒപ്റ്റിമൈസേഷനുകൾ.

-O ഇനിപ്പറയുന്ന ഒപ്റ്റിമൈസേഷൻ ഫ്ലാഗുകൾ ഓണാക്കുന്നു:

-fauto-inc-ഡിസം -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim
-fcprop-രജിസ്റ്ററുകൾ -fdce -fdefer-pop -fdelayed-branch -fdse -ഫോർവേഡ്-പ്രചരിപ്പിക്കുക
-fguess-branch-probability -ഫിഫ്-പരിവർത്തനം2 -ഫിഫ്-പരിവർത്തനം
-finline-functions-called-ഒരിക്കൽ -fipa-pure-const -fipa-profile -ഫിപ-റഫറൻസ്
-fmerge-സ്ഥിരങ്ങൾ -fmove-loop-invariants -fshrink-wrap -fsplit-wid-types
-ftree-bit-ccp -ftree-ccp -fssa-phiopt -ftree-ch -ftree-പകർപ്പ്-പ്രോപ്പ് -ftree-പകർപ്പിന്റെ പേര്
-ftree-dce -ftree-dominator-opts -ftree-dse -ftree-forwprop -ഫ്രീ-ഫ്രീ -ftree-phiprop
-ftree-സിങ്ക് -ftree-slsr -ftree-sra -ftree-pta -ftree-ter ഒരു സമയത്ത് രസകരമായി

-O കൂടാതെ ഓണാക്കുന്നു -ഫോമിറ്റ്-ഫ്രെയിം-പോയിന്റർ അങ്ങനെ ചെയ്യുന്നത് ഇടപെടാത്ത മെഷീനുകളിൽ
ഡീബഗ്ഗിംഗ് ഉപയോഗിച്ച്.

-O2 കൂടുതൽ ഒപ്റ്റിമൈസ് ചെയ്യുക. GCC പിന്തുണയ്ക്കാത്ത മിക്കവാറും എല്ലാ ഒപ്റ്റിമൈസേഷനുകളും ചെയ്യുന്നു
ഒരു സ്പേസ്-സ്പീഡ് ട്രേഡ്ഓഫ് ഉൾപ്പെടുന്നു. അപേക്ഷിച്ച് -O, ഈ ഓപ്ഷൻ രണ്ടും വർദ്ധിപ്പിക്കുന്നു
സമാഹരിക്കുന്ന സമയവും ജനറേറ്റ് ചെയ്ത കോഡിന്റെ പ്രകടനവും.

-O2 വ്യക്തമാക്കിയ എല്ലാ ഒപ്റ്റിമൈസേഷൻ ഫ്ലാഗുകളും ഓണാക്കുന്നു -O. ഇത് ഇനിപ്പറയുന്നവയും ഓണാക്കുന്നു
ഒപ്റ്റിമൈസേഷൻ ഫ്ലാഗുകൾ: -ഫ്ത്രെഡ്-ജമ്പ്സ് -ഫാലിൻ-ഫംഗ്ഷനുകൾ -ഫാലിൻ-ജമ്പ്സ് -ഫാലിൻ-ലൂപ്പുകൾ
-ഫാലിൻ-ലേബലുകൾ -fcaller-സംരക്ഷിക്കുന്നു -ഫ്ക്രോസ്ജമ്പിംഗ് -fcse-follow-jumps -fcse-skip-blocks
-fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively
-fexpensive-optimizations -fgcse -fgcse-lm -ഫോയിസ്റ്റ്-അടുത്തുള്ള-ലോഡുകൾ
-ഫിൻലൈൻ-സ്മോൾ-ഫംഗ്ഷനുകൾ -findirect-inlining -fipa-cp -fipa-cp-അലൈൻമെന്റ് -ഫിപ-സ്ര
-fipa-icf -ഫിസൊലേറ്റ്-തെറ്റായ-പാതകൾ-ഡെറഫറൻസ് -ഫ്ലറ-റെമാറ്റ് -ഫോപ്റ്റിമൈസ്-സഹോദര-വിളികൾ
-ഫോപ്റ്റിമൈസ്-സ്ട്രെൻ -fpartial-inlining -fpeephole2 -ഫ്രെഒദെര്-ബ്ലോക്കുകൾ
-freorder-blocks-and-partition -ഫ്രീഓർഡർ-ഫംഗ്ഷനുകൾ -frerun-cse-after-loop
-fsched-ഇന്റർബ്ലോക്ക് -fsched-സ്പെക് -fschedule-insns -fschedule-insns2 - fstrict-aliasing
- fstrict-overflow -ftree-builtin-call-dce -ftree-സ്വിച്ച്-പരിവർത്തനം -ftree-tail-merge
-ftree-pre -ftree-vrp -ഫിപ-റ

താഴെയുള്ള മുന്നറിയിപ്പ് ശ്രദ്ധിക്കുക -fgcse അഭ്യർത്ഥനയെക്കുറിച്ച് -O2 കമ്പ്യൂട്ട്ഡ് ഉപയോഗിക്കുന്ന പ്രോഗ്രാമുകളിൽ
ഗട്ടോസ്.

ശ്രദ്ധിക്കുക: ഉബുണ്ടു 8.10 ലും പിന്നീടുള്ള പതിപ്പുകളിലും, -D_forfify_source = 2 സ്ഥിരസ്ഥിതിയായി സജ്ജീകരിച്ചിരിക്കുന്നു
എപ്പോൾ സജീവമാക്കി -O രണ്ടോ അതിലധികമോ ആയി സജ്ജീകരിച്ചിരിക്കുന്നു. ഇത് അധിക കംപൈൽ-ടൈം പ്രവർത്തനക്ഷമമാക്കുന്നു
നിരവധി libc ഫംഗ്‌ഷനുകൾക്കായുള്ള റൺ-ടൈം പരിശോധനകൾ. പ്രവർത്തനരഹിതമാക്കാൻ, ഒന്നുകിൽ വ്യക്തമാക്കുക
-U_FORTIFY_SOURCE or -D_forfify_source = 0.

-O3 ഇനിയും ഒപ്റ്റിമൈസ് ചെയ്യുക. -O3 വ്യക്തമാക്കിയ എല്ലാ ഒപ്റ്റിമൈസേഷനുകളും ഓണാക്കുന്നു -O2 കൂടാതെ ഓണാക്കുന്നു
The -ഫിൻലൈൻ-ഫംഗ്ഷനുകൾ, -ഫൺസ്വിച്ച്-ലൂപ്പുകൾ, -fpredictive-പൊതുവായ, -fgcse-ആഫ്റ്റർ-റീലോഡ്,
-ftree-loop-vectorize, -ftree-loop-distribute-patterns, -ftree-slp-vectorize,
-fvect-cost-model, -ftree-partial-pre ഒപ്പം -fipa-cp-clone ഓപ്ഷനുകൾ.

-O0 കംപൈലേഷൻ സമയം കുറയ്ക്കുകയും ഡീബഗ്ഗിംഗ് പ്രതീക്ഷിക്കുന്ന ഫലങ്ങൾ ഉണ്ടാക്കുകയും ചെയ്യുക. ഇതാണ്
സ്ഥിരസ്ഥിതിയായി.

-ഓസ് വലുപ്പത്തിനായി ഒപ്റ്റിമൈസ് ചെയ്യുക. -ഓസ് എല്ലാം പ്രാപ്തമാക്കുന്നു -O2 സാധാരണയായി വർദ്ധിക്കാത്ത ഒപ്റ്റിമൈസേഷനുകൾ
കോഡ് വലിപ്പം. കോഡ് വലുപ്പം കുറയ്ക്കുന്നതിന് രൂപകൽപ്പന ചെയ്ത കൂടുതൽ ഒപ്റ്റിമൈസേഷനുകളും ഇത് ചെയ്യുന്നു.

-ഓസ് ഇനിപ്പറയുന്ന ഒപ്റ്റിമൈസേഷൻ ഫ്ലാഗുകൾ പ്രവർത്തനരഹിതമാക്കുന്നു: -ഫാലിൻ-ഫംഗ്ഷനുകൾ -ഫാലിൻ-ജമ്പ്സ്
-ഫാലിൻ-ലൂപ്പുകൾ -ഫാലിൻ-ലേബലുകൾ -ഫ്രെഒദെര്-ബ്ലോക്കുകൾ -freorder-blocks-and-partition
-fprefetch-loop-arrays

-ഓഫാസ്റ്റ്
കർശനമായ മാനദണ്ഡങ്ങൾ പാലിക്കുന്നത് അവഗണിക്കുക. -ഓഫാസ്റ്റ് എല്ലാം പ്രാപ്തമാക്കുന്നു -O3 ഒപ്റ്റിമൈസേഷനുകൾ. അതും
എല്ലാ സ്റ്റാൻഡേർഡ്-കംപ്ലയന്റ് പ്രോഗ്രാമുകൾക്കും സാധുതയില്ലാത്ത ഒപ്റ്റിമൈസേഷനുകൾ പ്രാപ്തമാക്കുന്നു. അത്
ഓണാക്കുന്നു ഫാസ്റ്റ്-ഗണിതം ഫോർട്രാൻ-നിർദ്ദിഷ്ടവും -fno-protect-parens ഒപ്പം -fstack-arrays.

-ഓ ഡീബഗ്ഗിംഗ് അനുഭവം ഒപ്റ്റിമൈസ് ചെയ്യുക. -ഓ ഇടപെടാത്ത ഒപ്റ്റിമൈസേഷനുകൾ പ്രാപ്തമാക്കുന്നു
ഡീബഗ്ഗിംഗ്. ഇത് സ്റ്റാൻഡേർഡ് എഡിറ്റിനായി തിരഞ്ഞെടുക്കാനുള്ള ഒപ്റ്റിമൈസേഷൻ ലെവലായിരിക്കണം-
കംപൈൽ-ഡീബഗ് സൈക്കിൾ, നിലനിർത്തുമ്പോൾ ന്യായമായ ഒപ്റ്റിമൈസേഷൻ വാഗ്ദാനം ചെയ്യുന്നു
വേഗത്തിലുള്ള സമാഹാരവും നല്ല ഡീബഗ്ഗിംഗ് അനുഭവവും.

നിങ്ങൾ ഒന്നിലധികം ഉപയോഗിക്കുകയാണെങ്കിൽ -O ഓപ്‌ഷനുകൾ, ലെവൽ നമ്പറുകൾ ഉള്ളതോ അല്ലാതെയോ, അത്തരം അവസാന ഓപ്ഷൻ ഇതാണ്
ഫലപ്രദമായ ഒന്ന്.

ഫോമിന്റെ ഓപ്ഷനുകൾ -fപതാക മെഷീൻ-സ്വതന്ത്ര പതാകകൾ വ്യക്തമാക്കുക. മിക്ക പതാകകളിലും രണ്ടും ഉണ്ട്
പോസിറ്റീവ്, നെഗറ്റീവ് രൂപങ്ങൾ; നെഗറ്റീവ് ഫോം -foo is -fno-foo. താഴെയുള്ള പട്ടികയിൽ,
ഫോമുകളിൽ ഒന്ന് മാത്രമേ ലിസ്റ്റ് ചെയ്തിട്ടുള്ളൂ--- നിങ്ങൾ സാധാരണയായി ഉപയോഗിക്കുന്ന ഒന്ന്. നിങ്ങൾക്ക് മറ്റൊന്ന് കണ്ടുപിടിക്കാൻ കഴിയും
ഒന്നുകിൽ നീക്കം ചെയ്തുകൊണ്ട് രൂപം ഇല്ല- അല്ലെങ്കിൽ അത് ചേർക്കുന്നു.

ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ നിർദ്ദിഷ്ട ഒപ്റ്റിമൈസേഷനുകളെ നിയന്ത്രിക്കുന്നു. അവ ഒന്നുകിൽ സജീവമാക്കിയിരിക്കുന്നു -O
ഓപ്ഷനുകൾ അല്ലെങ്കിൽ അവയുമായി ബന്ധപ്പെട്ടതാണ്. അപൂർവങ്ങളിൽ നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന പതാകകൾ ഉപയോഗിക്കാം
നടപ്പിലാക്കേണ്ട ഒപ്റ്റിമൈസേഷനുകളുടെ "ഫൈൻ-ട്യൂണിംഗ്" ആവശ്യമുള്ള സന്ദർഭങ്ങളിൽ.

-fno-defer-pop
ഓരോ ഫംഗ്‌ഷൻ കോളിലേക്കും ആ ഫംഗ്‌ഷൻ മടങ്ങിയെത്തുമ്പോൾ തന്നെ എല്ലായ്‌പ്പോഴും ആർഗ്യുമെന്റുകൾ പോപ്പ് ചെയ്യുക. വേണ്ടി
ഒരു ഫംഗ്‌ഷൻ കോളിന് ശേഷം ആർഗ്യുമെന്റുകൾ പോപ്പ് ചെയ്യേണ്ട മെഷീനുകൾ, കംപൈലർ സാധാരണയായി അനുവദിക്കുന്നു
നിരവധി ഫംഗ്‌ഷൻ കോളുകൾക്കായി സ്റ്റാക്കിൽ ആർഗ്യുമെന്റുകൾ ശേഖരിക്കപ്പെടുകയും അവയെല്ലാം പോപ്പ് ചെയ്യുകയും ചെയ്യുന്നു
ഒരിക്കല്.

തലങ്ങളിൽ അപ്രാപ്തമാക്കി -O, -O2, -O3, -ഓസ്.

-ഫോർവേഡ്-പ്രചരിപ്പിക്കുക
RTL-ൽ ഒരു ഫോർവേഡ് പ്രൊപ്പഗേഷൻ പാസ് നടത്തുക. പാസ് രണ്ട് നിർദ്ദേശങ്ങൾ കൂട്ടിച്ചേർക്കാൻ ശ്രമിക്കുന്നു
ഫലം ലളിതമാക്കാൻ കഴിയുമോ എന്ന് പരിശോധിക്കുന്നു. ലൂപ്പ് അൺറോളിംഗ് സജീവമാണെങ്കിൽ, രണ്ട് പാസുകൾ
നടത്തപ്പെടുന്നു, രണ്ടാമത്തേത് ലൂപ്പ് അൺറോളിങ്ങിന് ശേഷം ഷെഡ്യൂൾ ചെയ്യുന്നു.

ഒപ്റ്റിമൈസേഷൻ തലങ്ങളിൽ ഡിഫോൾട്ടായി ഈ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O, -O2, -O3, -ഓസ്.

-ffp-contract=ശൈലി
-ffp-contract=ഓഫ് ഫ്ലോട്ടിംഗ് പോയിന്റ് എക്സ്പ്രഷൻ സങ്കോചം പ്രവർത്തനരഹിതമാക്കുന്നു. -ffp-contract=വേഗത
ഫ്യൂസ്ഡ് മൾട്ടിപ്ലൈ-ആഡ് രൂപീകരണം പോലുള്ള ഫ്ലോട്ടിംഗ് പോയിന്റ് എക്സ്പ്രഷൻ സങ്കോചം പ്രാപ്തമാക്കുന്നു
ലക്ഷ്യത്തിന് അവർക്ക് നേറ്റീവ് പിന്തുണയുണ്ടെങ്കിൽ പ്രവർത്തനങ്ങൾ. -ffp-contract=on സജ്ജമാക്കുന്നു
ഭാഷാ നിലവാരം അനുവദിച്ചാൽ ഫ്ലോട്ടിംഗ് പോയിന്റ് എക്സ്പ്രഷൻ സങ്കോചം. ഇതാണ്
നിലവിൽ നടപ്പിലാക്കിയിട്ടില്ല, തുല്യമായി പരിഗണിക്കുന്നു -ffp-contract=ഓഫ്.

സ്ഥിരസ്ഥിതി -ffp-contract=വേഗത.

-ഫോമിറ്റ്-ഫ്രെയിം-പോയിന്റർ
ഫ്രെയിം പോയിന്റർ ആവശ്യമില്ലാത്ത ഫംഗ്‌ഷനുകൾക്കായി രജിസ്റ്ററിൽ സൂക്ഷിക്കരുത്. ഈ
ഫ്രെയിം പോയിന്ററുകൾ സംരക്ഷിക്കുന്നതിനും സജ്ജീകരിക്കുന്നതിനും പുനഃസ്ഥാപിക്കുന്നതിനുമുള്ള നിർദ്ദേശങ്ങൾ ഒഴിവാക്കുന്നു; അതും ഉണ്ടാക്കുന്നു
നിരവധി ഫംഗ്ഷനുകളിൽ അധിക രജിസ്റ്റർ ലഭ്യമാണ്. It ഇതും നിർമ്മാതാക്കൾ ഡീബഗ്ഗിംഗ് അസാധ്യമാണ് on
കുറെ യന്ത്രങ്ങൾ.

VAX പോലുള്ള ചില മെഷീനുകളിൽ, ഈ ഫ്ലാഗിന് യാതൊരു ഫലവുമില്ല, കാരണം സ്റ്റാൻഡേർഡ്
കോളിംഗ് സീക്വൻസ് ഫ്രെയിം പോയിന്റർ സ്വയമേവ കൈകാര്യം ചെയ്യുന്നു, ഒന്നും സംരക്ഷിക്കപ്പെടുന്നില്ല
അത് നിലവിലില്ലെന്ന് നടിക്കുന്നു. മെഷീൻ-വിവരണ മാക്രോ "FRAME_POINTER_REQUIRED"
ഒരു ടാർഗെറ്റ് മെഷീൻ ഈ ഫ്ലാഗിനെ പിന്തുണയ്ക്കുന്നുണ്ടോ എന്ന് നിയന്ത്രിക്കുന്നു.

32-ബിറ്റ് GNU/Linux x86, 32-ബിറ്റ് എന്നിവയ്‌ക്കായുള്ള സ്ഥിരസ്ഥിതി ക്രമീകരണം (വലുപ്പത്തിനായി ഒപ്റ്റിമൈസ് ചെയ്യാത്തപ്പോൾ)
ഡാർവിൻ x86 ടാർഗെറ്റുകൾ ആണ് -ഫോമിറ്റ്-ഫ്രെയിം-പോയിന്റർ. നിങ്ങൾക്ക് GCC കോൺഫിഗർ ചെയ്യാം
--enable-frame-pointer സ്ഥിരസ്ഥിതി മാറ്റാൻ കോൺഫിഗർ ഓപ്ഷൻ.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O, -O2, -O3, -ഓസ്.

-ഫോപ്റ്റിമൈസ്-സഹോദര-വിളികൾ
സഹോദരങ്ങളുടെയും ടെയിൽ ആവർത്തന കോളുകളും ഒപ്റ്റിമൈസ് ചെയ്യുക.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-ഫോപ്റ്റിമൈസ്-സ്ട്രെൻ
വിവിധ സ്റ്റാൻഡേർഡ് സി സ്ട്രിംഗ് ഫംഗ്‌ഷനുകൾ ഒപ്റ്റിമൈസ് ചെയ്യുക (ഉദാ: "strlen", "strchr" അല്ലെങ്കിൽ "strcpy") കൂടാതെ
അവരുടെ "_FORTIFY_SOURCE" എതിരാളികൾ വേഗതയേറിയ ബദലുകളിലേക്ക്.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3.

-fno-ഇൻലൈൻ
"always_inline" എന്ന് അടയാളപ്പെടുത്തിയിരിക്കുന്ന ഫംഗ്‌ഷനുകളൊന്നും ഇൻലൈനിൽ വികസിപ്പിക്കരുത്
ആട്രിബ്യൂട്ട്. ഒപ്റ്റിമൈസ് ചെയ്യാത്തപ്പോൾ ഇതാണ് സ്ഥിരസ്ഥിതി.

"നോയിൻലൈൻ" എന്ന് അടയാളപ്പെടുത്തി ഒറ്റ ഫംഗ്‌ഷനുകളെ ഇൻലൈനിംഗിൽ നിന്ന് ഒഴിവാക്കാവുന്നതാണ്.
ആട്രിബ്യൂട്ട്.

-ഫിൻലൈൻ-സ്മോൾ-ഫംഗ്ഷനുകൾ
അവരുടെ ശരീരം പ്രതീക്ഷിച്ചതിലും ചെറുതായിരിക്കുമ്പോൾ അവരുടെ കോളറുകളിലേക്ക് ഫംഗ്‌ഷനുകൾ സംയോജിപ്പിക്കുക
ഫംഗ്‌ഷൻ കോൾ കോഡ് (അതിനാൽ പ്രോഗ്രാമിന്റെ മൊത്തത്തിലുള്ള വലുപ്പം കുറയുന്നു). കമ്പൈലർ
ഏതൊക്കെ ഫംഗ്‌ഷനുകൾ സമന്വയിപ്പിക്കാൻ യോഗ്യമാണെന്ന് ഹ്യൂറിസ്റ്റിക് ആയി തീരുമാനിക്കുന്നു
ഈ വഴിയേ. ഈ ഇൻലൈനിംഗ് എല്ലാ ഫംഗ്‌ഷനുകൾക്കും ബാധകമാണ്, ഇൻലൈനായി പ്രഖ്യാപിച്ചിട്ടില്ലാത്തവ പോലും.

തലത്തിൽ പ്രവർത്തനക്ഷമമാക്കി -O2.

-findirect-inlining
കംപൈൽ സമയത്ത് അറിയാവുന്ന പരോക്ഷ കോളുകളും ഇൻലൈൻ നന്ദി
മുമ്പത്തെ ഇൻലൈനിംഗ്. ഇൻലൈനിംഗ് ഓണായിരിക്കുമ്പോൾ മാത്രമേ ഈ ഓപ്ഷന് എന്തെങ്കിലും ഫലമുണ്ടാകൂ
കൊണ്ട് -ഫിൻലൈൻ-ഫംഗ്ഷനുകൾ or -ഫിൻലൈൻ-സ്മോൾ-ഫംഗ്ഷനുകൾ ഓപ്ഷനുകൾ.

തലത്തിൽ പ്രവർത്തനക്ഷമമാക്കി -O2.

-ഫിൻലൈൻ-ഫംഗ്ഷനുകൾ
ഇൻലൈനിംഗിനുള്ള എല്ലാ ഫംഗ്ഷനുകളും പരിഗണിക്കുക, അവ ഇൻലൈൻ ആയി പ്രഖ്യാപിച്ചിട്ടില്ലെങ്കിലും. ദി
ഈ രീതിയിൽ സംയോജിപ്പിക്കേണ്ട ഫംഗ്‌ഷനുകൾ ഏതൊക്കെയാണെന്ന് കംപൈലർ ഹ്യൂറിസ്റ്റിക് ആയി തീരുമാനിക്കുന്നു.

തന്നിരിക്കുന്ന ഫംഗ്‌ഷനിലേക്കുള്ള എല്ലാ കോളുകളും സംയോജിപ്പിച്ച് ഫംഗ്‌ഷൻ പ്രഖ്യാപിക്കുകയാണെങ്കിൽ
"സ്റ്റാറ്റിക്", അപ്പോൾ ഫംഗ്ഷൻ സാധാരണയായി അസംബ്ലർ കോഡായി ഔട്ട്പുട്ട് ചെയ്യുന്നില്ല.

തലത്തിൽ പ്രവർത്തനക്ഷമമാക്കി -O3.

-finline-functions-called-ഒരിക്കൽ
ഒരു തവണ വിളിക്കപ്പെടുന്ന എല്ലാ "സ്റ്റാറ്റിക്" ഫംഗ്‌ഷനുകളും അവരുടെ കോളറിലേക്ക് ഇൻലൈൻ ചെയ്യുന്നതിനായി പരിഗണിക്കുക
അവ "ഇൻലൈൻ" എന്ന് അടയാളപ്പെടുത്തിയിട്ടില്ല. തന്നിരിക്കുന്ന ഫംഗ്‌ഷനിലേക്കുള്ള ഒരു കോൾ സംയോജിപ്പിച്ചാൽ, പിന്നെ
ഫംഗ്ഷൻ അതിന്റെ തന്നെ അസംബ്ലർ കോഡായി ഔട്ട്പുട്ട് അല്ല.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O1, -O2, -O3 ഒപ്പം -ഓസ്.

-ഭയത്തോടെ-ഇൻലൈനിംഗ്
"always_inline" എന്ന് അടയാളപ്പെടുത്തിയിരിക്കുന്ന ഇൻലൈൻ ഫംഗ്‌ഷനുകളും ശരീരത്തേക്കാൾ ചെറുതായി തോന്നുന്ന ഫംഗ്‌ഷനുകളും
ഫംഗ്ഷൻ കോൾ ഓവർഹെഡ് ചെയ്യുന്നതിന് മുമ്പ് -fprofile-ജനറേറ്റ് ഇൻസ്ട്രുമെന്റേഷൻ കൂടാതെ
യഥാർത്ഥ ഇൻലൈനിംഗ് പാസ്. അങ്ങനെ ചെയ്യുന്നത് പ്രൊഫൈലിംഗ് ഗണ്യമായി വിലകുറഞ്ഞതും സാധാരണവുമാക്കുന്നു
നെസ്റ്റഡ് റാപ്പർ ഫംഗ്‌ഷനുകളുടെ വലിയ ശൃംഖലകളുള്ള പ്രോഗ്രാമുകളിൽ വേഗത്തിൽ ഇൻലൈൻ ചെയ്യുന്നു.

സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-ഫിപ-സ്ര
അഗ്രഗേറ്റുകളുടെ ഇന്റർപ്രൊസീജറൽ സ്കെയിലർ മാറ്റിസ്ഥാപിക്കൽ, ഉപയോഗിക്കാത്ത പാരാമീറ്ററുകൾ നീക്കം ചെയ്യുക
റഫറൻസ് വഴി പാസാക്കിയ പാരാമീറ്ററുകൾ മാറ്റി മൂല്യം വഴി പാസാക്കിയ പാരാമീറ്ററുകൾ.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3 ഒപ്പം -ഓസ്.

-finline-limit=n
ഡിഫോൾട്ടായി, ഇൻലൈൻ ചെയ്യാവുന്ന ഫംഗ്‌ഷനുകളുടെ വലുപ്പം GCC പരിമിതപ്പെടുത്തുന്നു. ഈ പതാക അനുവദിക്കുന്നു
ഈ പരിധിയുടെ പരുക്കൻ നിയന്ത്രണം. n ഇൻലൈൻ ചെയ്യാൻ കഴിയുന്ന ഫംഗ്‌ഷനുകളുടെ വലുപ്പമാണ്
കപട നിർദ്ദേശങ്ങളുടെ എണ്ണം.

ഇൻലൈനിംഗ് യഥാർത്ഥത്തിൽ നിയന്ത്രിക്കുന്നത് നിരവധി പാരാമീറ്ററുകളാണ്, അത് വ്യക്തമാക്കിയേക്കാം
വ്യക്തിഗതമായി ഉപയോഗിച്ച് --പരം പേര്=മൂല്യം. ദി -finline-limit=n ഓപ്ഷൻ ചിലത് സജ്ജമാക്കുന്നു
ഈ പരാമീറ്ററുകൾ ഇപ്രകാരമാണ്:

max-inline-insns-single
എന്നതിലേക്ക് സജ്ജമാക്കി n/ 2.

max-inline-insns-auto
എന്നതിലേക്ക് സജ്ജമാക്കി n/ 2.

ഇൻലൈനിംഗ് നിയന്ത്രിക്കുന്ന വ്യക്തിഗത പാരാമീറ്ററുകളുടെ ഡോക്യുമെന്റേഷനായി താഴെ കാണുക
ഈ പരാമീറ്ററുകളുടെ ഡിഫോൾട്ടുകൾക്കായി.

കുറിപ്പ്: വിലയില്ലായിരിക്കാം -ഫിൻലൈൻ-പരിധി അത് സ്ഥിര സ്വഭാവത്തിന് കാരണമാകുന്നു.

കുറിപ്പ്: കപട നിർദ്ദേശം ഈ പ്രത്യേക സന്ദർഭത്തിൽ, ഒരു അമൂർത്തത്തെ പ്രതിനിധീകരിക്കുന്നു
ഫംഗ്ഷന്റെ വലിപ്പത്തിന്റെ അളവ്. ഒരു തരത്തിലും ഇത് അസംബ്ലിയുടെ എണ്ണത്തെ പ്രതിനിധീകരിക്കുന്നില്ല
നിർദ്ദേശങ്ങളും അതുപോലെ അതിന്റെ കൃത്യമായ അർത്ഥവും ഒരു റിലീസിൽ നിന്ന് ഒരു റിലീസിലേക്ക് മാറിയേക്കാം
മറ്റൊരു.

-fno-keep-inline-dllexport
ഇത് കൂടുതൽ സൂക്ഷ്മമായ പതിപ്പാണ് -fkeep-inline-functions, എന്നിവയ്ക്ക് മാത്രം ബാധകമാണ്
"dllexport" ആട്രിബ്യൂട്ട് അല്ലെങ്കിൽ declspec ഉപയോഗിച്ച് പ്രഖ്യാപിച്ച ഫംഗ്ഷനുകൾ

-fkeep-inline-functions
സിയിൽ, ഒബ്ജക്റ്റ് ഫയലിലേക്ക് "ഇൻലൈൻ" എന്ന് പ്രഖ്യാപിച്ച "സ്റ്റാറ്റിക്" ഫംഗ്ഷനുകൾ എമിറ്റ് ചെയ്യുക
ഫംഗ്‌ഷൻ അതിന്റെ എല്ലാ കോളർമാരിലേക്കും ഇൻലൈൻ ചെയ്‌തിരിക്കുന്നു. ഈ സ്വിച്ച് ബാധിക്കില്ല
GNU C90 ലെ "എക്സ്‌റ്റേൺ ഇൻലൈൻ" എക്സ്റ്റൻഷൻ ഉപയോഗിച്ചുള്ള പ്രവർത്തനങ്ങൾ. C++-ൽ, എല്ലാം എമിറ്റ് ചെയ്യുക
ഒബ്ജക്റ്റ് ഫയലിലേക്ക് ഇൻലൈൻ പ്രവർത്തനങ്ങൾ.

-fkeep-static-consts
ഒപ്റ്റിമൈസേഷൻ ഓണാക്കാത്തപ്പോൾ, "സ്റ്റാറ്റിക് കോൺസ്റ്റ്" എന്ന് പ്രഖ്യാപിച്ച വേരിയബിളുകൾ എമിറ്റ് ചെയ്യുക
വേരിയബിളുകൾ പരാമർശിച്ചിട്ടില്ല.

ഡിഫോൾട്ടായി ജിസിസി ഈ ഓപ്ഷൻ പ്രാപ്തമാക്കുന്നു. നിങ്ങൾക്ക് കംപൈലറിനെ നിർബന്ധിക്കണമെങ്കിൽ പരിശോധിക്കാൻ a
ഒപ്റ്റിമൈസേഷൻ ഓണാക്കിയിട്ടുണ്ടോ ഇല്ലയോ എന്നത് പരിഗണിക്കാതെ തന്നെ വേരിയബിൾ പരാമർശിക്കപ്പെടുന്നു, ഉപയോഗിക്കുക
The -fno-keep-static-consts ഓപ്ഷൻ.

-fmerge-സ്ഥിരങ്ങൾ
സമാന സ്ഥിരാങ്കങ്ങൾ ലയിപ്പിക്കാനുള്ള ശ്രമം (സ്ട്രിംഗ് കോൺസ്റ്റന്റുകളും ഫ്ലോട്ടിംഗ് പോയിന്റ് കോൺസ്റ്റന്റുകളും)
കംപൈലേഷൻ യൂണിറ്റുകളിലുടനീളം.

അസംബ്ലറും ലിങ്കറും ആണെങ്കിൽ ഒപ്റ്റിമൈസ് ചെയ്ത കംപൈലേഷന്റെ ഡിഫോൾട്ടാണ് ഈ ഓപ്ഷൻ
അതിനെ പിന്തുണയ്ക്കുക. ഉപയോഗിക്കുക -fno-merge-constants ഈ സ്വഭാവം തടയാൻ.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O, -O2, -O3, -ഓസ്.

-fmerge-എല്ലാ-സ്ഥിരതകളും
ഒരേ സ്ഥിരാങ്കങ്ങളും സമാന വേരിയബിളുകളും ലയിപ്പിക്കാനുള്ള ശ്രമം.

ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നു -fmerge-സ്ഥിരങ്ങൾ. ഇതിനുപുറമെ -fmerge-സ്ഥിരങ്ങൾ
ഉദാ സ്ഥിരമായ ഇനീഷ്യലൈസ്ഡ് അറേകൾ അല്ലെങ്കിൽ ഇനീഷ്യലൈസ് ചെയ്ത കോൺസ്റ്റന്റ് വേരിയബിളുകൾ പോലും പരിഗണിക്കുന്നു
ഇന്റഗ്രൽ അല്ലെങ്കിൽ ഫ്ലോട്ടിംഗ്-പോയിന്റ് തരങ്ങൾ. C അല്ലെങ്കിൽ C++ പോലുള്ള ഭാഷകൾക്ക് ഓരോ വേരിയബിളും ആവശ്യമാണ്,
ആവർത്തന കോളുകളിൽ ഒരേ വേരിയബിളിന്റെ ഒന്നിലധികം സംഭവങ്ങൾ ഉൾപ്പെടെ, വ്യത്യസ്‌തമായി
ലൊക്കേഷനുകൾ, അതിനാൽ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നത് അനുരൂപമല്ലാത്ത പെരുമാറ്റത്തിന് കാരണമാകുന്നു.

-fmodulo-sched
ആദ്യ ഷെഡ്യൂളിംഗ് പാസിന് തൊട്ടുമുമ്പ് സ്വിംഗ് മോഡുലോ ഷെഡ്യൂളിംഗ് നടത്തുക. ഈ
പാസ് അകത്തെ ലൂപ്പുകളിലേക്ക് നോക്കുകയും വ്യത്യസ്ത ഓവർലാപ്പ് ചെയ്തുകൊണ്ട് അവയുടെ നിർദ്ദേശങ്ങൾ പുനഃക്രമീകരിക്കുകയും ചെയ്യുന്നു
ആവർത്തനങ്ങൾ.

-fmodulo-sched-allow-regmoves
അനുവദനീയമായ രജിസ്റ്റർ നീക്കങ്ങൾ ഉപയോഗിച്ച് കൂടുതൽ ആക്രമണാത്മക SMS-അടിസ്ഥാന മോഡുലോ ഷെഡ്യൂളിംഗ് നടത്തുക. എഴുതിയത്
ഈ ഫ്ലാഗ് ക്രമീകരണം ചില ആൻറി ഡിപെൻഡൻസ് എഡ്ജുകൾ ഇല്ലാതാക്കി, ഇത് പ്രവർത്തനക്ഷമമാക്കുന്നു
ലൈഫ്-റേഞ്ച് വിശകലനത്തെ അടിസ്ഥാനമാക്കിയുള്ള റെഗ്-മൂവുകളുടെ ജനറേഷൻ. ഈ ഓപ്ഷൻ ഫലപ്രദമാണ്
കൂടെ മാത്രം -fmodulo-sched പ്രവർത്തനക്ഷമമാക്കി.

-fno-branch-count-reg
ഒരു കൗണ്ട് രജിസ്റ്ററിൽ "കുറവ്, ശാഖ" നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കരുത്, പകരം
ഒരു രജിസ്റ്ററിനെ കുറയ്ക്കുന്ന നിർദ്ദേശങ്ങളുടെ ഒരു ശ്രേണി സൃഷ്ടിക്കുക, അതിനെ താരതമ്യം ചെയ്യുക
പൂജ്യം, തുടർന്ന് ഫലത്തെ അടിസ്ഥാനമാക്കി ശാഖ. ഈ ഓപ്ഷൻ അർത്ഥപൂർണ്ണമാണ്
x86, PowerPC, IA-64 എന്നിവ ഉൾപ്പെടുന്ന അത്തരം നിർദ്ദേശങ്ങളെ പിന്തുണയ്ക്കുന്ന ആർക്കിടെക്ചറുകൾ
എസ്/390.

എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -O1 ഉയർന്നത്.

സ്ഥിരസ്ഥിതി -fbranch-count-reg.

-fno-function-cse
ഫംഗ്‌ഷൻ വിലാസങ്ങൾ രജിസ്റ്ററുകളിൽ ഇടരുത്; എ എന്ന് വിളിക്കുന്ന ഓരോ നിർദ്ദേശവും ഉണ്ടാക്കുക
കോൺസ്റ്റന്റ് ഫംഗ്‌ഷനിൽ ഫംഗ്‌ഷന്റെ വിലാസം വ്യക്തമായി അടങ്ങിയിരിക്കുന്നു.

ഈ ഓപ്‌ഷൻ കാര്യക്ഷമത കുറഞ്ഞ കോഡിന് കാരണമാകുന്നു, പക്ഷേ ചില വിചിത്രമായ ഹാക്കുകൾ മാറ്റുന്നു
ഈ ഓപ്ഷൻ ആയിരിക്കുമ്പോൾ നടത്തുന്ന ഒപ്റ്റിമൈസേഷനുകൾ അസംബ്ലർ ഔട്ട്പുട്ട് ആശയക്കുഴപ്പത്തിലാക്കാം
ഉപയോഗിച്ചിട്ടില്ല.

സ്ഥിരസ്ഥിതി -ഫംഗ്ഷൻ-cse

-fno-zero-initialized-in-bss
ടാർഗെറ്റ് ഒരു BSS വിഭാഗത്തെ പിന്തുണയ്ക്കുന്നുവെങ്കിൽ, GCC ഡിഫോൾട്ടായി വേരിയബിളുകൾ ഇടുന്നു
ബിഎസ്എസിലേക്ക് പൂജ്യമായി ആരംഭിച്ചു. തത്ഫലമായുണ്ടാകുന്ന കോഡിൽ ഇത് ഇടം ലാഭിക്കാൻ കഴിയും.

ചില പ്രോഗ്രാമുകൾ വേരിയബിളുകളെ സ്പഷ്ടമായി ആശ്രയിക്കുന്നതിനാൽ ഈ ഓപ്ഷൻ ഈ സ്വഭാവം ഓഫാക്കുന്നു
ഡാറ്റ സെക്ഷനിലേക്ക് പോകുന്നു--- ഉദാ, തത്ഫലമായുണ്ടാകുന്ന എക്സിക്യൂട്ടബിളിന് കണ്ടെത്താനാകും
ആ വിഭാഗത്തിന്റെ ആരംഭം കൂടാതെ/അല്ലെങ്കിൽ അതിനെ അടിസ്ഥാനമാക്കി അനുമാനങ്ങൾ ഉണ്ടാക്കുക.

സ്ഥിരസ്ഥിതി -fzero-initialized-in-bss.

-ഫ്ത്രെഡ്-ജമ്പ്സ്
ഒരു കുതിച്ചുചാട്ടം മറ്റൊരിടത്തേക്ക് കടക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കുന്ന ഒപ്റ്റിമൈസേഷനുകൾ നടത്തുക
ആദ്യത്തേത് ഉപസംഹരിച്ച താരതമ്യം കണ്ടെത്തി. അങ്ങനെയാണെങ്കിൽ, ആദ്യത്തെ ബ്രാഞ്ച് റീഡയറക്‌ട് ചെയ്യുന്നു
ഒന്നുകിൽ രണ്ടാമത്തെ ശാഖയുടെ ലക്ഷ്യസ്ഥാനം അല്ലെങ്കിൽ അതിനെ തുടർന്നുള്ള ഒരു പോയിന്റ്,
വ്യവസ്ഥ ശരിയാണോ തെറ്റാണോ എന്ന് അറിയാമോ എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fsplit-wid-types
32-ബിറ്റിലെ "നീണ്ട നീളം" പോലെയുള്ള ഒന്നിലധികം രജിസ്റ്ററുകൾ ഉൾക്കൊള്ളുന്ന ഒരു തരം ഉപയോഗിക്കുമ്പോൾ
സിസ്റ്റം, രജിസ്റ്ററുകൾ വിഭജിച്ച് സ്വതന്ത്രമായി അനുവദിക്കുക. ഇത് സാധാരണ
അത്തരം തരങ്ങൾക്കായി മികച്ച കോഡ് സൃഷ്ടിക്കുന്നു, പക്ഷേ ഡീബഗ്ഗിംഗ് കൂടുതൽ ബുദ്ധിമുട്ടാക്കിയേക്കാം.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O, -O2, -O3, -ഓസ്.

-fcse-follow-jumps
കോമൺ സബ്‌എക്‌സ്‌പ്രഷൻ എലിമിനേഷനിൽ (സി‌എസ്‌ഇ), ജമ്പ് നിർദ്ദേശങ്ങളിലൂടെ സ്കാൻ ചെയ്യുമ്പോൾ
മറ്റൊരു വഴിയിലൂടെയും കുതിച്ചുചാട്ടത്തിന്റെ ലക്ഷ്യത്തിലെത്തുന്നില്ല. ഉദാഹരണത്തിന്, CSE ഏറ്റുമുട്ടുമ്പോൾ
ഒരു "else" ക്ലോസ് ഉള്ള ഒരു "if" പ്രസ്താവന, CSE ഈ അവസ്ഥയിൽ ജമ്പ് പിന്തുടരുന്നു
പരീക്ഷിച്ചത് തെറ്റാണ്.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fcse-skip-blocks
ഇത് സമാനമാണ് -fcse-follow-jumps, എന്നാൽ CSE അതിന്റെ കുതിപ്പിന് കാരണമാകുന്നു
സോപാധികമായി ബ്ലോക്കുകൾ ഒഴിവാക്കുക. സി‌എസ്‌ഇ ഒരു ലളിതമായ "if" പ്രസ്‌താവനയെ നേരിടുമ്പോൾ
മറ്റൊരു വ്യവസ്ഥ, -fcse-skip-blocks ശരീരത്തിന് ചുറ്റും കുതിച്ചുചാട്ടം പിന്തുടരാൻ CSE കാരണമാകുന്നു
"എങ്കിൽ".

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-frerun-cse-after-loop
ലൂപ്പ് ഒപ്റ്റിമൈസേഷനുകൾ നടത്തിയതിന് ശേഷം കോമൺ സബ് എക്സ്പ്രഷൻ എലിമിനേഷൻ വീണ്ടും പ്രവർത്തിപ്പിക്കുക.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fgcse
ഒരു ഗ്ലോബൽ കോമൺ സബ്‌എക്‌സ്‌പ്രഷൻ എലിമിനേഷൻ പാസ് നടത്തുക. ഈ പാസും നിർവ്വഹിക്കുന്നു
ആഗോള സ്ഥിരവും പകർപ്പും പ്രചരിപ്പിക്കൽ.

കുറിപ്പ്: കമ്പ്യൂട്ട് ചെയ്ത ഗോട്ടോകൾ ഉപയോഗിച്ച് ഒരു പ്രോഗ്രാം കംപൈൽ ചെയ്യുമ്പോൾ, ഒരു GCC എക്സ്റ്റൻഷൻ, നിങ്ങൾക്ക് ലഭിച്ചേക്കാം
നിങ്ങൾ ഗ്ലോബൽ കോമൺ സബ്‌എക്‌സ്‌പ്രഷൻ എലിമിനേഷൻ പ്രവർത്തനരഹിതമാക്കിയാൽ മികച്ച റൺ-ടൈം പ്രകടനം
ചേർത്തുകൊണ്ട് കടന്നുപോകുക -fno-gcse കമാൻഡ് ലൈനിലേക്ക്.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fgcse-lm
എപ്പോൾ -fgcse-lm പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു, ആഗോള പൊതു ഉപഭോക്തൃ ഉന്മൂലനം നീക്കാൻ ശ്രമിക്കുന്നു
സ്റ്റോറുകൾ സ്വയം കൊല്ലുന്ന ലോഡുകൾ. ഇത് ഒരു ലൂപ്പിനെ അനുവദിക്കുന്നു
ലോഡ്/സ്റ്റോർ സീക്വൻസ് ലൂപ്പിന് പുറത്തുള്ള ഒരു ലോഡാക്കി മാറ്റണം, അതിനുള്ളിൽ ഒരു പകർപ്പ്/സ്റ്റോർ
ലൂപ്പ്.

എപ്പോൾ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -fgcse പ്രാപ്തമാക്കി.

-fgcse-sm
എപ്പോൾ -fgcse-sm പ്രവർത്തനക്ഷമമാക്കി, ഗ്ലോബൽ കോമിന് ശേഷം ഒരു സ്റ്റോർ മോഷൻ പാസ് റൺ ചെയ്യുന്നു
subexpression ഉന്മൂലനം. ഈ പാസ് ലൂപ്പുകളിൽ നിന്ന് സ്റ്റോറുകൾ നീക്കാൻ ശ്രമിക്കുന്നു. ഉപയോഗിക്കുമ്പോൾ
അതുമായി ബന്ധപെട്ടു -fgcse-lm, ലോഡ്/സ്റ്റോർ സീക്വൻസ് അടങ്ങുന്ന ലൂപ്പുകൾ മാറ്റാവുന്നതാണ്
ലൂപ്പിന് മുമ്പുള്ള ഒരു ലോഡിലേക്കും ലൂപ്പിന് ശേഷം ഒരു സ്റ്റോറിലേക്കും.

ഒരു ഒപ്റ്റിമൈസേഷൻ തലത്തിലും പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല.

-fgcse-las
എപ്പോൾ -fgcse-las പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു, ആഗോള പൊതു ഉപവിക്ഷേപണം ഒഴിവാക്കൽ പാസ്
സ്റ്റോറുകൾക്ക് ശേഷം ഒരേ മെമ്മറി ലൊക്കേഷനിലേക്ക് വരുന്ന അനാവശ്യ ലോഡുകളെ ഇല്ലാതാക്കുന്നു (രണ്ടും
ഭാഗികവും പൂർണ്ണവുമായ ആവർത്തനങ്ങൾ).

ഒരു ഒപ്റ്റിമൈസേഷൻ തലത്തിലും പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല.

-fgcse-ആഫ്റ്റർ-റീലോഡ്
എപ്പോൾ -fgcse-ആഫ്റ്റർ-റീലോഡ് പ്രവർത്തനക്ഷമമാക്കി, ഒരു അനാവശ്യ ലോഡ് എലിമിനേഷൻ പാസ് നടപ്പിലാക്കുന്നു
വീണ്ടും ലോഡ് ചെയ്ത ശേഷം. അനാവശ്യമായ ചോർച്ച വൃത്തിയാക്കുക എന്നതാണ് ഈ പാസിന്റെ ലക്ഷ്യം.

- faggressive-loop-optimizations
ഈ ഓപ്‌ഷൻ ലൂപ്പ് ഒപ്‌റ്റിമൈസറിനോട് അതിരുകൾ കണ്ടെത്തുന്നതിന് ഭാഷാ നിയന്ത്രണങ്ങൾ ഉപയോഗിക്കാൻ പറയുന്നു
ഒരു ലൂപ്പിന്റെ ആവർത്തനങ്ങളുടെ എണ്ണം. ലൂപ്പ് കോഡ് ആവശ്യപ്പെടുന്നില്ലെന്ന് ഇത് അനുമാനിക്കുന്നു
നിർവചിക്കാത്ത പെരുമാറ്റം ഉദാഹരണമായി അടയാളപ്പെടുത്തിയ പൂർണ്ണസംഖ്യ ഓവർഫ്ലോകൾ അല്ലെങ്കിൽ ഔട്ട്-ഓഫ്-ബൗണ്ട് കാരണമാകുന്നു
അറേ ആക്‌സസ്സ്. ഒരു ലൂപ്പിന്റെ ആവർത്തനങ്ങളുടെ എണ്ണത്തിന്റെ പരിധികൾ ഗൈഡ് ചെയ്യാൻ ഉപയോഗിക്കുന്നു
ലൂപ്പ് അൺറോളിംഗ്, പീലിംഗ്, ലൂപ്പ് എക്സിറ്റ് ടെസ്റ്റ് ഒപ്റ്റിമൈസേഷനുകൾ. ഈ ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കി
സ്ഥിരസ്ഥിതിയായി.

-funsafe-loop-optimizations
ലൂപ്പ് സൂചികകൾ കവിഞ്ഞൊഴുകുന്നില്ലെന്ന് അനുമാനിക്കാൻ ഈ ഓപ്ഷൻ ലൂപ്പ് ഒപ്റ്റിമൈസറോട് പറയുന്നു, കൂടാതെ
നോൺട്രിവിയൽ എക്സിറ്റ് അവസ്ഥയുള്ള ലൂപ്പുകൾ അനന്തമല്ല. ഇത് വിശാലത പ്രാപ്തമാക്കുന്നു
ലൂപ്പ് ഒപ്റ്റിമൈസറിന് തന്നെ ഇവ തെളിയിക്കാൻ കഴിയില്ലെങ്കിലും ലൂപ്പ് ഒപ്റ്റിമൈസേഷനുകളുടെ ശ്രേണി
അനുമാനങ്ങൾ സാധുവാണ്. നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ -Wunsafe-loop-optimizations, കമ്പൈലർ നിങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകുന്നു
ഇത് ഇത്തരത്തിലുള്ള ലൂപ്പ് കണ്ടെത്തിയാൽ.

-ഫ്ക്രോസ്ജമ്പിംഗ്
ക്രോസ്-ജമ്പിംഗ് പരിവർത്തനം നടത്തുക. ഈ പരിവർത്തനം തുല്യമായ കോഡിനെയും ഏകീകരിക്കുന്നു
കോഡ് വലുപ്പം സംരക്ഷിക്കുന്നു. തത്ഫലമായുണ്ടാകുന്ന കോഡ് ക്രോസ്- ഇല്ലാത്തതിനേക്കാൾ മികച്ച രീതിയിൽ പ്രവർത്തിക്കുകയോ ചെയ്യാതിരിക്കുകയോ ചെയ്യാം.
ചാടുന്നു.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fauto-inc-ഡിസം
മെമ്മറി ആക്‌സസുകളുമായി വിലാസങ്ങളുടെ ഇൻക്രിമെന്റുകളോ കുറവുകളോ സംയോജിപ്പിക്കുക. ഈ പാസ് ആണ്
ഇതിനെ പിന്തുണയ്ക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ ഇല്ലാത്ത ആർക്കിടെക്ചറുകൾ എല്ലായ്പ്പോഴും ഒഴിവാക്കുന്നു.
എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -O ഇതിനെ പിന്തുണയ്ക്കുന്ന ആർക്കിടെക്ചറുകളിൽ ഉയർന്നതും.

-fdce
RTL-ൽ ഡെഡ് കോഡ് എലിമിനേഷൻ (DCE) നടത്തുക. എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -O ഉയർന്നത്.

-fdse
RTL-ൽ ഡെഡ് സ്റ്റോർ എലിമിനേഷൻ (DSE) നടത്തുക. എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -O ഉയർന്നത്.

-ഫിഫ്-പരിവർത്തനം
സോപാധികമായ ജമ്പുകളെ ശാഖകളില്ലാത്ത തുല്യതകളാക്കി മാറ്റാനുള്ള ശ്രമം. ഇതിൽ ഉൾപ്പെടുന്നു
സോപാധിക നീക്കങ്ങളുടെ ഉപയോഗം, മിനിറ്റ്, പരമാവധി, സെറ്റ് ഫ്ലാഗുകളും എബിഎസ് നിർദ്ദേശങ്ങളും ചില തന്ത്രങ്ങളും
സാധാരണ ഗണിതശാസ്ത്രം വഴി ചെയ്യാൻ കഴിയും. ചിപ്പുകളിൽ സോപാധികമായ നിർവ്വഹണത്തിന്റെ ഉപയോഗം അത് എവിടെയാണ്
ലഭ്യമാണ് നിയന്ത്രിക്കുന്നത് -ഫിഫ്-പരിവർത്തനം2.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O, -O2, -O3, -ഓസ്.

-ഫിഫ്-പരിവർത്തനം2
സോപാധിക ജമ്പുകൾ രൂപാന്തരപ്പെടുത്തുന്നതിന് സോപാധിക നിർവ്വഹണം (ലഭ്യമാണെങ്കിൽ) ഉപയോഗിക്കുക
ശാഖകളില്ലാത്ത തത്തുല്യങ്ങൾ.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O, -O2, -O3, -ഓസ്.

-fdeclone-ctor-dtor
C++ ABI-ക്ക് കൺസ്ട്രക്‌ടർമാർക്കും ഡിസ്ട്രക്‌റ്ററുകൾക്കും ഒന്നിലധികം എൻട്രി പോയിന്റുകൾ ആവശ്യമാണ്: ഒന്ന് a
അടിസ്ഥാന സബ്ജക്റ്റ്, ഒന്ന് പൂർണ്ണമായ ഒബ്ജക്റ്റിന്, ഒന്ന് വിളിക്കുന്ന വെർച്വൽ ഡിസ്ട്രക്റ്ററിന്
ഓപ്പറേറ്റർ പിന്നീട് ഇല്ലാതാക്കുക. വെർച്വൽ ബേസുകളുള്ള ഒരു ശ്രേണിക്ക്, അടിസ്ഥാനവും പൂർണ്ണവും
വകഭേദങ്ങൾ ക്ലോണുകളാണ്, അതായത് ഫംഗ്ഷന്റെ രണ്ട് പകർപ്പുകൾ. ഈ ഓപ്ഷൻ ഉപയോഗിച്ച്, ദി
ബേസ്, കംപ്ലീറ്റ് വേരിയന്റുകൾ ഒരു സാധാരണ നടപ്പിലാക്കൽ എന്ന് വിളിക്കുന്ന Thunks ആയി മാറ്റുന്നു.

പ്രവർത്തനക്ഷമമാക്കിയത് -ഓസ്.

-fdelete-null-pointer-checks
പ്രോഗ്രാമുകൾക്ക് നൾ പോയിന്ററുകൾ സുരക്ഷിതമായി ഒഴിവാക്കാനാകില്ലെന്നും കോഡോ ഡാറ്റയോ ഇല്ലെന്നും കരുതുക
മൂലകം അവിടെ വസിക്കുന്നു. ഇത് ലളിതമായ സ്ഥിരമായ ഫോൾഡിംഗ് ഒപ്റ്റിമൈസേഷനുകൾ സാധ്യമാക്കുന്നു
ഒപ്റ്റിമൈസേഷൻ ലെവലുകൾ. കൂടാതെ, ജിസിസിയിലെ മറ്റ് ഒപ്റ്റിമൈസേഷൻ പാസുകൾ ഈ ഫ്ലാഗ് ഉപയോഗിക്കുന്നു
നൾ പോയിന്ററുകൾക്കുള്ള ഉപയോഗശൂന്യമായ പരിശോധനകൾ ഇല്ലാതാക്കുന്ന ആഗോള ഡാറ്റാഫ്ലോ വിശകലനങ്ങൾ നിയന്ത്രിക്കുക;
ഒരു പോയിന്റർ ഇതിനകം ഒഴിവാക്കിയതിന് ശേഷം പരിശോധിച്ചാൽ, അത് അനുമാനിക്കുന്നു
അസാധുവാകാൻ കഴിയില്ല.

എന്നിരുന്നാലും ചില പരിതസ്ഥിതികളിൽ ഈ അനുമാനം ശരിയല്ല എന്നത് ശ്രദ്ധിക്കുക. ഉപയോഗിക്കുക
-fno-delete-null-pointer-checks ആശ്രയിക്കുന്ന പ്രോഗ്രാമുകൾക്കായി ഈ ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനരഹിതമാക്കാൻ
ആ പെരുമാറ്റത്തെക്കുറിച്ച്.

ചില ലക്ഷ്യങ്ങൾ, പ്രത്യേകിച്ച് ഉൾച്ചേർത്തവ, എല്ലാ തലങ്ങളിലും ഈ ഓപ്ഷൻ പ്രവർത്തനരഹിതമാക്കുന്നു. അല്ലെങ്കിൽ
ഇത് എല്ലാ തലങ്ങളിലും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു: -O0, -O1, -O2, -O3, -ഓസ്. വിവരങ്ങൾ ഉപയോഗിക്കുന്ന പാസുകൾ
വ്യത്യസ്ത ഒപ്റ്റിമൈസേഷൻ തലങ്ങളിൽ സ്വതന്ത്രമായി പ്രവർത്തനക്ഷമമാക്കുന്നു.

-fdevirtualize
വെർച്വൽ ഫംഗ്‌ഷനുകളിലേക്കുള്ള കോളുകളെ ഡയറക്‌ട് കോളുകളാക്കി മാറ്റാനുള്ള ശ്രമം. ഇത് രണ്ടും ചെയ്യുന്നു
ഒരു നടപടിക്രമത്തിനുള്ളിലും പരോക്ഷമായ ഇൻലൈനിംഗിന്റെ ഭാഗമായി ഇന്റർപ്രൊസീജറലിലും
(-findirect-inlining) കൂടാതെ ഇന്റർപ്രൊസീജറൽ സ്ഥിരമായ പ്രചരണം (-fipa-cp). എന്നതിൽ പ്രവർത്തനക്ഷമമാക്കി
ലെവലുകൾ -O2, -O3, -ഓസ്.

-fdevirtualize-speculatively
വെർച്വൽ ഫംഗ്‌ഷനുകളിലേക്കുള്ള കോളുകളെ ഊഹക്കച്ചവട ഡയറക്‌ട് കോളുകളാക്കി മാറ്റാനുള്ള ശ്രമം. ഇതിനെ അടിസ്ഥാനമാക്കി
ടൈപ്പ് ഹെറിറ്റൻസ് ഗ്രാഫിന്റെ വിശകലനം, തന്നിരിക്കുന്ന കോളിനായി സെറ്റ് നിർണ്ണയിക്കുക
സാധ്യതയുള്ള ലക്ഷ്യങ്ങൾ. സെറ്റ് ചെറുതാണെങ്കിൽ, വെയിലത്ത് വലുപ്പം 1 ആണെങ്കിൽ, കോൾ a ആയി മാറ്റുക
നേരിട്ടുള്ളതും പരോക്ഷവുമായ കോളുകൾക്കിടയിൽ സോപാധികമായ തീരുമാനം. ഊഹക്കച്ചവട കോളുകൾ പ്രവർത്തനക്ഷമമാക്കുന്നു
ഇൻലൈനിംഗ് പോലുള്ള കൂടുതൽ ഒപ്റ്റിമൈസേഷനുകൾ. പിന്നീട് അവ ഉപയോഗശൂന്യമായി തോന്നുമ്പോൾ
ഒപ്റ്റിമൈസേഷൻ, അവ യഥാർത്ഥ രൂപത്തിലേക്ക് പരിവർത്തനം ചെയ്യപ്പെടുന്നു.

-fdevirtualize-at-ltrans
ലിങ്ക് പ്രവർത്തിപ്പിക്കുമ്പോൾ ആക്രമണാത്മക ഡിവിച്വലൈസേഷനായി ആവശ്യമായ അധിക വിവരങ്ങൾ സ്ട്രീം ചെയ്യുക-
ലോക്കൽ ട്രാൻസ്ഫോർമേഷൻ മോഡിൽ ടൈം ഒപ്റ്റിമൈസർ. ഈ ഓപ്ഷൻ കൂടുതൽ പ്രവർത്തനക്ഷമമാക്കുന്നു
ഡിവിച്വലൈസേഷൻ എന്നാൽ സ്ട്രീം ചെയ്ത ഡാറ്റയുടെ വലുപ്പം ഗണ്യമായി വർദ്ധിപ്പിക്കുന്നു. ഇതിനായി
കാരണം അത് ഡിഫോൾട്ടായി പ്രവർത്തനരഹിതമാണ്.

-fexpensive-optimizations
താരതമ്യേന ചെലവേറിയ നിരവധി ചെറിയ ഒപ്റ്റിമൈസേഷനുകൾ നടത്തുക.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-സ്വഭാവം
അനാവശ്യമായ വിപുലീകരണ നിർദ്ദേശങ്ങൾ നീക്കം ചെയ്യാനുള്ള ശ്രമം. ഇത് പ്രത്യേകിച്ചും സഹായകരമാണ്
x86-64 ആർക്കിടെക്ചർ, ഇത് 64-ബിറ്റ് രജിസ്റ്ററുകളിൽ പരോക്ഷമായി പൂജ്യം-വിപുലീകരിക്കുന്നു
അവരുടെ താഴ്ന്ന 32-ബിറ്റ് പകുതിയിലേക്ക് എഴുതുന്നു.

തലങ്ങളിൽ Alpha, AArch64, x86 എന്നിവയ്ക്കായി പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fno-lifetime-dse
C++-ൽ, ഒരു വസ്തുവിന്റെ മൂല്യം അതിന്റെ ആയുഷ്കാലത്തിനുള്ളിലെ മാറ്റങ്ങൾ മാത്രമേ ബാധിക്കുകയുള്ളൂ: എപ്പോൾ
കൺസ്‌ട്രക്‌റ്റർ ആരംഭിക്കുന്നു, ഒബ്‌ജക്‌റ്റിന് ഒരു അനിശ്ചിത മൂല്യമുണ്ട്, കൂടാതെ എന്തെങ്കിലും മാറ്റങ്ങളും
വസ്തു നശിപ്പിക്കപ്പെടുമ്പോൾ വസ്തുവിന്റെ ആയുസ്സ് നിർജീവമാകുന്നു. സാധാരണ ഡെഡ് സ്റ്റോർ
ഉന്മൂലനം ഇത് മുതലെടുക്കും; നിങ്ങളുടെ കോഡ് മൂല്യത്തെ ആശ്രയിച്ചിരിക്കുന്നുവെങ്കിൽ
ഒബ്‌ജക്‌റ്റിന്റെ ആയുസ്സിനപ്പുറം നിലനിൽക്കുന്ന ഒബ്‌ജക്റ്റ് സ്‌റ്റോറേജ്, നിങ്ങൾക്ക് ഈ ഫ്ലാഗ് ഉപയോഗിക്കാം
ഈ ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനരഹിതമാക്കുക.

-ഫ്ലൈവ്-റേഞ്ച്-ഷ്രിങ്കേജ്
രജിസ്റ്റർ ലൈവ് റേഞ്ച് ഷ്രിങ്കേജ് വഴി രജിസ്റ്റർ സമ്മർദ്ദം കുറയ്ക്കാനുള്ള ശ്രമം. ഇതാണ്
ചെറുതോ മിതമായതോ ആയ വലിപ്പത്തിലുള്ള രജിസ്‌റ്റർ സെറ്റുകളുള്ള ഫാസ്റ്റ് പ്രോസസ്സറുകൾക്ക് സഹായകമാണ്.

-fira-algorithm=അൽഗോരിതം
സംയോജിത രജിസ്റ്റർ അലോക്കേറ്ററിനായി നിർദ്ദിഷ്ട കളറിംഗ് അൽഗോരിതം ഉപയോഗിക്കുക. ദി
അൽഗോരിതം വാദം ആകാം മുൻഗണന, ഇത് ചൗവിന്റെ മുൻഗണനാ കളറിംഗ് വ്യക്തമാക്കുന്നു, അല്ലെങ്കിൽ CB,
ഇത് Chaitin-Briggs കളറിംഗ് വ്യക്തമാക്കുന്നു. ചൈറ്റിൻ-ബ്രിഗ്സ് കളറിംഗ് നടപ്പിലാക്കിയിട്ടില്ല
എല്ലാ ആർക്കിടെക്ചറുകൾക്കും, എന്നാൽ അതിനെ പിന്തുണയ്ക്കുന്ന ടാർഗെറ്റുകൾക്ക്, ഇത് സ്ഥിരസ്ഥിതിയാണ്
കാരണം അത് മികച്ച കോഡ് സൃഷ്ടിക്കുന്നു.

-fira-region=പ്രദേശം
സംയോജിത രജിസ്റ്റർ അലോക്കേറ്ററിനായി നിർദ്ദിഷ്ട പ്രദേശങ്ങൾ ഉപയോഗിക്കുക. ദി പ്രദേശം വാദം
ഇനിപ്പറയുന്നവയിൽ ഒന്നായിരിക്കണം:

എല്ലാം എല്ലാ ലൂപ്പുകളും രജിസ്റ്റർ അലോക്കേഷൻ മേഖലകളായി ഉപയോഗിക്കുക. ഇതിന് മികച്ച ഫലങ്ങൾ നൽകാൻ കഴിയും
ചെറുതും കൂടാതെ/അല്ലെങ്കിൽ ക്രമരഹിതമായ രജിസ്റ്ററും ഉള്ള മെഷീനുകൾ.

മിക്സഡ്
റീജിയണുകളായി ചെറിയ രജിസ്റ്റർ മർദ്ദമുള്ള ലൂപ്പുകൾ ഒഴികെയുള്ള എല്ലാ ലൂപ്പുകളും ഉപയോഗിക്കുക. ഈ
മൂല്യം സാധാരണയായി മിക്ക കേസുകളിലും മിക്ക ആർക്കിടെക്ചറുകൾക്കും മികച്ച ഫലങ്ങൾ നൽകുന്നു, കൂടാതെ
വേഗതയ്ക്കായി ഒപ്റ്റിമൈസേഷൻ ഉപയോഗിച്ച് കംപൈൽ ചെയ്യുമ്പോൾ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുന്നു (-O, -O2, ...).

ഒന്ന് എല്ലാ പ്രവർത്തനങ്ങളും ഒരൊറ്റ മേഖലയായി ഉപയോഗിക്കുക. ഇത് സാധാരണയായി ഏറ്റവും ചെറിയ കോഡിന് കാരണമാകുന്നു
വലിപ്പം, കൂടാതെ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -ഓസ് or -O0.

-fira-hoist-മർദ്ദം
ഉയർത്താനുള്ള തീരുമാനങ്ങൾക്കായി കോഡ് ഹോസ്റ്റിംഗ് പാസിലെ രജിസ്റ്റർ സമ്മർദ്ദം വിലയിരുത്താൻ IRA ഉപയോഗിക്കുക
ഭാവങ്ങൾ. ഈ ഓപ്‌ഷൻ സാധാരണയായി ചെറിയ കോഡിന് കാരണമാകുന്നു, പക്ഷേ ഇതിന് വേഗത കുറയും
കംപൈലർ താഴേക്ക്.

ഈ ഓപ്‌ഷൻ ലെവലിൽ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -ഓസ് എല്ലാ ലക്ഷ്യങ്ങൾക്കും.

-ഫിറ-ലൂപ്പ്-മർദ്ദം
ലൂപ്പ് മാറ്റങ്ങളെ നീക്കുന്നതിനുള്ള തീരുമാനങ്ങൾക്കായി ലൂപ്പുകളിലെ രജിസ്റ്റർ സമ്മർദ്ദം വിലയിരുത്തുന്നതിന് IRA ഉപയോഗിക്കുക.
ഈ ഓപ്‌ഷൻ സാധാരണയായി മെഷീനുകളിൽ വേഗതയേറിയതും ചെറുതുമായ കോഡ് ജനറേറ്റുചെയ്യുന്നതിന് കാരണമാകുന്നു
വലിയ രജിസ്റ്റർ ഫയലുകൾ (>= 32 രജിസ്റ്ററുകൾ), എന്നാൽ ഇതിന് കംപൈലറിന്റെ വേഗത കുറയ്ക്കാൻ കഴിയും.

ഈ ഓപ്‌ഷൻ ലെവലിൽ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O3 ചില ലക്ഷ്യങ്ങൾക്കായി.

-fno-ira-share-save-slots
കോൾ ഉപയോഗിച്ച ഹാർഡ് രജിസ്റ്ററുകൾ സംരക്ഷിക്കാൻ ഉപയോഗിക്കുന്ന സ്റ്റാക്ക് സ്ലോട്ടുകളുടെ പങ്കിടൽ പ്രവർത്തനരഹിതമാക്കുക
ഒരു വിളി. ഓരോ ഹാർഡ് രജിസ്റ്ററിനും ഒരു പ്രത്യേക സ്റ്റാക്ക് സ്ലോട്ട് ലഭിക്കുന്നു, അതിന്റെ ഫലമായി ഫംഗ്ഷൻ സ്റ്റാക്ക്
ഫ്രെയിമുകൾ വലുതാണ്.

-fno-ira-share-spill-slots
വ്യാജ രജിസ്റ്ററുകൾക്കായി അനുവദിച്ച സ്റ്റാക്ക് സ്ലോട്ടുകളുടെ പങ്കിടൽ പ്രവർത്തനരഹിതമാക്കുക. ഓരോ വ്യാജ രജിസ്റ്ററും
ഹാർഡ് രജിസ്റ്ററിന് ഒരു പ്രത്യേക സ്റ്റാക്ക് സ്ലോട്ട് ലഭിക്കുന്നു, അതിന്റെ ഫലമായി ഫംഗ്ഷൻ
സ്റ്റാക്ക് ഫ്രെയിമുകൾ വലുതാണ്.

-fira-verbose=n
സംയോജിത രജിസ്റ്റർ അലോക്കേറ്ററിനായുള്ള ഡംപ് ഫയലിന്റെ വാചാടോപം നിയന്ത്രിക്കുക. ദി
സ്ഥിര മൂല്യം 5 ആണ്. മൂല്യമാണെങ്കിൽ n 10-ന് കൂടുതലോ തുല്യമോ ആണ്, ഡംപ് ഔട്ട്പുട്ട് അയച്ചു
അതേ ഫോർമാറ്റ് ഉപയോഗിച്ച് stderr-ലേക്ക് n മൈനസ് 10.

-ഫ്ലറ-റെമാറ്റ്
LRA-യിൽ CFG-സെൻസിറ്റീവ് റീമെറ്റീരിയലൈസേഷൻ പ്രവർത്തനക്ഷമമാക്കുക. ചോർന്നതിന്റെ മൂല്യങ്ങൾ ലോഡുചെയ്യുന്നതിന് പകരം
pseudos, LRA അത് ലാഭകരമാണെങ്കിൽ മൂല്യങ്ങൾ വീണ്ടും മാറ്റാൻ (വീണ്ടും കണക്കാക്കാൻ) ശ്രമിക്കുന്നു.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fdelayed-branch
ടാർഗെറ്റ് മെഷീന് പിന്തുണയുണ്ടെങ്കിൽ, ചൂഷണം ചെയ്യുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ പുനഃക്രമീകരിക്കാൻ ശ്രമിക്കുക
വൈകിയ ബ്രാഞ്ച് നിർദ്ദേശങ്ങൾക്ക് ശേഷം ഇൻസ്ട്രക്ഷൻ സ്ലോട്ടുകൾ ലഭ്യമാണ്.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O, -O2, -O3, -ഓസ്.

-fschedule-insns
ടാർഗെറ്റ് മെഷീന് പിന്തുണയുണ്ടെങ്കിൽ, ഇല്ലാതാക്കാൻ നിർദ്ദേശങ്ങൾ പുനഃക്രമീകരിക്കാൻ ശ്രമിക്കുക
ആവശ്യമായ ഡാറ്റ ലഭ്യമല്ലാത്തതിനാൽ എക്സിക്യൂഷൻ സ്റ്റാളുകൾ. ഇത് യന്ത്രങ്ങളെ സഹായിക്കുന്നു
മറ്റ് നിർദ്ദേശങ്ങൾ അനുവദിച്ചുകൊണ്ട് സ്ലോ ഫ്ലോട്ടിംഗ് പോയിന്റ് അല്ലെങ്കിൽ മെമ്മറി ലോഡ് നിർദ്ദേശങ്ങൾ ഉണ്ടായിരിക്കുക
ലോഡിന്റെ ഫലം അല്ലെങ്കിൽ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശം ആവശ്യമായി വരുന്നത് വരെ ഇഷ്യൂ ചെയ്യപ്പെടും.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3.

-fschedule-insns2
സമാനമായ -fschedule-insns, എന്നാൽ ഇൻസ്ട്രക്ഷൻ ഷെഡ്യൂളിങ്ങിന്റെ ഒരു അധിക പാസ് അഭ്യർത്ഥിക്കുന്നു
രജിസ്റ്റർ അലോക്കേഷൻ പൂർത്തിയാക്കിയ ശേഷം. എ ഉള്ള മെഷീനുകളിൽ ഇത് പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്
താരതമ്യേന ചെറിയ രജിസ്റ്ററുകൾ, കൂടാതെ മെമ്മറി ലോഡ് നിർദ്ദേശങ്ങൾ കൂടുതൽ എടുക്കുകയും ചെയ്യുന്നു
ഒരു ചക്രം.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fno-sched-interblock
അടിസ്ഥാന ബ്ലോക്കുകളിലുടനീളം നിർദ്ദേശങ്ങൾ ഷെഡ്യൂൾ ചെയ്യരുത്. ഇത് സാധാരണയായി സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കും
രജിസ്റ്റർ അലോക്കേഷന് മുമ്പ് ഷെഡ്യൂൾ ചെയ്യുമ്പോൾ, അതായത് -fschedule-insns അല്ലെങ്കിൽ അത് -O2 or
ഉയർന്നത്.

-fno-sched-spec
ലോഡ് ചെയ്യാത്ത നിർദ്ദേശങ്ങളുടെ ഊഹക്കച്ചവടം അനുവദിക്കരുത്. ഇത് സാധാരണയായി പ്രവർത്തനക്ഷമമാക്കുന്നു
രജിസ്റ്റർ അലോക്കേഷന് മുമ്പ് ഷെഡ്യൂൾ ചെയ്യുമ്പോൾ സ്ഥിരസ്ഥിതി, അതായത് -fschedule-insns അല്ലെങ്കിൽ അത്
-O2 അല്ലെങ്കിൽ ഉയർന്നത്.

-fsched-മർദ്ദം
രജിസ്റ്റർ അലോക്കേഷന് മുമ്പ് രജിസ്റ്റർ പ്രഷർ സെൻസിറ്റീവ് ഇൻസ്‌എൻ ഷെഡ്യൂളിംഗ് പ്രവർത്തനക്ഷമമാക്കുക. ഈ
രജിസ്റ്റർ അലോക്കേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നതിന് മുമ്പ് ഷെഡ്യൂൾ ചെയ്യുമ്പോൾ മാത്രമേ അർത്ഥമുള്ളൂ, അതായത്
-fschedule-insns അല്ലെങ്കിൽ അത് -O2 അല്ലെങ്കിൽ ഉയർന്നത്. ഈ ഓപ്ഷന്റെ ഉപയോഗം ജനറേറ്റഡ് മെച്ചപ്പെടുത്താൻ കഴിയും
സംഖ്യയ്ക്ക് മുകളിൽ രജിസ്റ്റർ സമ്മർദ്ദം വർദ്ധിക്കുന്നത് തടയുന്നതിലൂടെ കോഡ് ചെയ്ത് അതിന്റെ വലിപ്പം കുറയ്ക്കുക
ലഭ്യമായ ഹാർഡ് രജിസ്റ്ററുകളും രജിസ്റ്റർ അലോക്കേഷനിലെ തുടർന്നുള്ള ചോർച്ചകളും.

-fsched-സ്പെക്-ലോഡ്
ചില ലോഡ് നിർദ്ദേശങ്ങളുടെ ഊഹക്കച്ചവടം അനുവദിക്കുക. എപ്പോഴാണ് ഇത് അർത്ഥമാക്കുന്നത്
രജിസ്റ്റർ അലോക്കേഷന് മുമ്പ് ഷെഡ്യൂളിംഗ്, അതായത് -fschedule-insns അല്ലെങ്കിൽ അത് -O2 അല്ലെങ്കിൽ ഉയർന്നത്.

-fsched-spec-load-dangerous
കൂടുതൽ ലോഡ് നിർദ്ദേശങ്ങളുടെ ഊഹക്കച്ചവടം അനുവദിക്കുക. എപ്പോഴാണ് ഇത് അർത്ഥമാക്കുന്നത്
രജിസ്റ്റർ അലോക്കേഷന് മുമ്പ് ഷെഡ്യൂളിംഗ്, അതായത് -fschedule-insns അല്ലെങ്കിൽ അത് -O2 അല്ലെങ്കിൽ ഉയർന്നത്.

-fsched-stalled-insns
-fsched-stalled-insns=n
സ്‌റ്റാൾഡ് ക്യൂവിൽ നിന്ന് എത്ര ഇൻസ്‌നുകൾ (എന്തെങ്കിലും ഉണ്ടെങ്കിൽ) അകാലത്തിൽ നീക്കാൻ കഴിയുമെന്ന് നിർവ്വചിക്കുക
രണ്ടാമത്തെ ഷെഡ്യൂളിംഗ് പാസ് സമയത്ത് റെഡി ലിസ്റ്റിലേക്ക് insns. -fno-sched-stalled-insns
ഇൻസ്‌നുകളൊന്നും അകാലത്തിൽ നീക്കപ്പെടുന്നില്ല എന്നാണ് അർത്ഥമാക്കുന്നത്, -fsched-stalled-insns=0 ഇല്ല എന്നർത്ഥം
എത്ര ക്യൂവിലുള്ള ഇൻസ്‌നുകൾ അകാലത്തിൽ നീക്കാം എന്നതിന്റെ പരിധി. -fsched-stalled-insns
ഒരു മൂല്യം ഇല്ലാതെ തുല്യമാണ് -fsched-stalled-insns=1.

-fsched-stalled-insns-dep
-fsched-stalled-insns-dep=n
സ്‌റ്റാൾഡ് ഇൻസ്‌നിനെ ആശ്രയിക്കുന്നതിന് എത്ര ഇൻസ്‌എൻ ഗ്രൂപ്പുകൾ (സൈക്കിളുകൾ) പരിശോധിക്കണമെന്ന് നിർവ്വചിക്കുക
സ്‌റ്റാൾഡ് ഇൻസ്‌നുകളുടെ ക്യൂവിൽ നിന്ന് അകാല നീക്കം ചെയ്യാനുള്ള കാൻഡിഡേറ്റാണിത്. ഇതിനുണ്ട്
രണ്ടാമത്തെ ഷെഡ്യൂളിംഗ് പാസ് സമയത്ത് മാത്രം ഒരു പ്രഭാവം, എങ്കിൽ മാത്രം -fsched-stalled-insns is
ഉപയോഗിച്ചു. -fno-sched-stalled-insns-dep എന്നതിന് തുല്യമാണ് -fsched-stalled-insns-dep=0.
-fsched-stalled-insns-dep ഒരു മൂല്യം ഇല്ലാതെ തുല്യമാണ്
-fsched-stalled-insns-dep=1.

-fsched2-ഉപയോഗം-സൂപ്പർ ബ്ലോക്കുകൾ
രജിസ്റ്റർ അലോക്കേഷന് ശേഷം ഷെഡ്യൂൾ ചെയ്യുമ്പോൾ, സൂപ്പർബ്ലോക്ക് ഷെഡ്യൂളിംഗ് ഉപയോഗിക്കുക. ഇത് അനുവദിക്കുന്നു
അടിസ്ഥാന ബ്ലോക്ക് അതിരുകളിലുടനീളം ചലനം, വേഗത്തിലുള്ള ഷെഡ്യൂളുകൾക്ക് കാരണമാകുന്നു. ഈ ഓപ്ഷൻ ആണ്
പരീക്ഷണാത്മകമാണ്, GCC മോഡൽ CPU ഉപയോഗിക്കുന്ന എല്ലാ മെഷീൻ വിവരണങ്ങളും വേണ്ടത്ര അടുത്തല്ല
അൽഗോരിതത്തിൽ നിന്നുള്ള വിശ്വസനീയമല്ലാത്ത ഫലങ്ങൾ ഒഴിവാക്കാൻ.

രജിസ്റ്റർ അലോക്കേഷന് ശേഷം ഷെഡ്യൂൾ ചെയ്യുമ്പോൾ മാത്രമേ ഇത് അർത്ഥമാക്കൂ, അതായത്
-fschedule-insns2 അല്ലെങ്കിൽ അത് -O2 അല്ലെങ്കിൽ ഉയർന്നത്.

-fsched-group-heuristic
ഷെഡ്യൂളറിൽ ഗ്രൂപ്പ് ഹ്യൂറിസ്റ്റിക് പ്രവർത്തനക്ഷമമാക്കുക. ഈ ഹ്യൂറിസ്റ്റിക് നിർദ്ദേശത്തെ അനുകൂലിക്കുന്നു
അത് ഒരു ഷെഡ്യൂൾ ഗ്രൂപ്പിൽ പെട്ടതാണ്. ഷെഡ്യൂൾ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കും
പ്രവർത്തനക്ഷമമാക്കി, അതായത് -fschedule-insns or -fschedule-insns2 അല്ലെങ്കിൽ അത് -O2 അല്ലെങ്കിൽ ഉയർന്നത്.

-fsched-ക്രിട്ടിക്കൽ-പാത്ത്-ഹ്യൂറിസ്റ്റിക്
ഷെഡ്യൂളറിൽ ക്രിട്ടിക്കൽ-പാത്ത് ഹ്യൂറിസ്റ്റിക് പ്രവർത്തനക്ഷമമാക്കുക. ഈ ഹ്യൂറിസ്റ്റിക് അനുകൂലമാണ്
നിർണായക പാതയിലെ നിർദ്ദേശങ്ങൾ. ഷെഡ്യൂൾ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കും
പ്രവർത്തനക്ഷമമാക്കി, അതായത് -fschedule-insns or -fschedule-insns2 അല്ലെങ്കിൽ അത് -O2 അല്ലെങ്കിൽ ഉയർന്നത്.

-fsched-spec-insn-heuristic
ഷെഡ്യൂളറിൽ ഊഹക്കച്ചവട നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക. ഈ ഹ്യൂറിസ്റ്റിക് അനുകൂലമാണ്
കൂടുതൽ ആശ്രിതത്വ ബലഹീനതയുള്ള ഊഹക്കച്ചവട നിർദ്ദേശങ്ങൾ. ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
ഷെഡ്യൂളിംഗ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, അതായത് -fschedule-insns or -fschedule-insns2 അല്ലെങ്കിൽ അത് -O2
അല്ലെങ്കിൽ ഉയർന്നത്.

-fsched-rank-heuristic
ഷെഡ്യൂളറിൽ റാങ്ക് ഹ്യൂറിസ്റ്റിക് പ്രവർത്തനക്ഷമമാക്കുക. ഈ ഹ്യൂറിസ്റ്റിക് നിർദ്ദേശത്തെ അനുകൂലിക്കുന്നു
കൂടുതൽ വലുപ്പമോ ആവൃത്തിയോ ഉള്ള ഒരു അടിസ്ഥാന ബ്ലോക്കിൽ പെടുന്നു. ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
ഷെഡ്യൂളിംഗ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, അതായത് -fschedule-insns or -fschedule-insns2 അല്ലെങ്കിൽ അത് -O2
അല്ലെങ്കിൽ ഉയർന്നത്.

-fsched-last-insn-heuristic
ഷെഡ്യൂളറിൽ അവസാനത്തെ ഇൻസ്ട്രക്ഷൻ ഹ്യൂറിസ്റ്റിക് പ്രവർത്തനക്ഷമമാക്കുക. ഈ ഹ്യൂറിസ്റ്റിക് അനുകൂലമാണ്
അവസാനമായി ഷെഡ്യൂൾ ചെയ്ത നിർദ്ദേശത്തെ ആശ്രയിക്കാത്ത നിർദ്ദേശം. ഇത് പ്രവർത്തനക്ഷമമാക്കി
ഷെഡ്യൂളിംഗ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ സ്ഥിരസ്ഥിതിയായി, അതായത് -fschedule-insns or -fschedule-insns2
അല്ലെങ്കിൽ അത് -O2 അല്ലെങ്കിൽ ഉയർന്നത്.

-fsched-dep-count-heuristic
ഷെഡ്യൂളറിൽ ഡിപൻഡന്റ്-കൗണ്ട് ഹ്യൂറിസ്റ്റിക് പ്രവർത്തനക്ഷമമാക്കുക. ഈ ഹ്യൂറിസ്റ്റിക് അനുകൂലമാണ്
അതിനെ ആശ്രയിച്ച് കൂടുതൽ നിർദ്ദേശങ്ങളുള്ള നിർദ്ദേശം. ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
ഷെഡ്യൂളിംഗ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, അതായത് -fschedule-insns or -fschedule-insns2 അല്ലെങ്കിൽ അത് -O2
അല്ലെങ്കിൽ ഉയർന്നത്.

-freschedule-modulo-scheduled-loops
പരമ്പരാഗത ഷെഡ്യൂളിങ്ങിന് മുമ്പ് മോഡുലോ ഷെഡ്യൂളിംഗ് നടത്തുന്നു. ഒരു ലൂപ്പ് മോഡുലോ ആണെങ്കിൽ
ഷെഡ്യൂൾ ചെയ്‌തത്, പിന്നീടുള്ള ഷെഡ്യൂളിംഗ് പാസുകൾ അതിന്റെ ഷെഡ്യൂൾ മാറ്റിയേക്കാം. ഇതിനായി ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക
ആ പെരുമാറ്റം നിയന്ത്രിക്കുക.

-ഫ്സെലക്ടീവ്-ഷെഡ്യൂളിംഗ്
തിരഞ്ഞെടുത്ത ഷെഡ്യൂളിംഗ് അൽഗോരിതം ഉപയോഗിച്ച് നിർദ്ദേശങ്ങൾ ഷെഡ്യൂൾ ചെയ്യുക. തിരഞ്ഞെടുത്ത ഷെഡ്യൂളിംഗ് റണ്ണുകൾ
ആദ്യ ഷെഡ്യൂളർ പാസിന് പകരം.

-fselective-scheduling2
തിരഞ്ഞെടുത്ത ഷെഡ്യൂളിംഗ് അൽഗോരിതം ഉപയോഗിച്ച് നിർദ്ദേശങ്ങൾ ഷെഡ്യൂൾ ചെയ്യുക. തിരഞ്ഞെടുത്ത ഷെഡ്യൂളിംഗ് റണ്ണുകൾ
രണ്ടാം ഷെഡ്യൂളർ പാസിന് പകരം.

-fsel-ഷെഡ്-പൈപ്പ്ലൈനിംഗ്
തിരഞ്ഞെടുത്ത ഷെഡ്യൂളിംഗ് സമയത്ത് ഏറ്റവും ഉള്ളിലെ ലൂപ്പുകളുടെ സോഫ്റ്റ്‌വെയർ പൈപ്പ്ലൈനിംഗ് പ്രവർത്തനക്ഷമമാക്കുക. ഈ
ഒന്നിലല്ലാതെ ഓപ്ഷന് ഫലമില്ല -ഫ്സെലക്ടീവ്-ഷെഡ്യൂളിംഗ് or -fselective-scheduling2
ഓണാണ്.

-fsel-sched-pipelining-outer-loops
തിരഞ്ഞെടുത്ത ഷെഡ്യൂളിംഗ് സമയത്ത് പൈപ്പ്ലൈനിംഗ് ലൂപ്പുകൾ ചെയ്യുമ്പോൾ, പുറമേ പൈപ്പ്ലൈൻ പുറം ലൂപ്പുകളും. ഈ
അല്ലാതെ ഓപ്ഷന് ഫലമില്ല -fsel-ഷെഡ്-പൈപ്പ്ലൈനിംഗ് ഓണാണ്.

-ഫ്സെമാന്റിക്-ഇന്റർപോസിഷൻ
ELF പോലെയുള്ള ചില ഒബ്‌ജക്റ്റ് ഫോർമാറ്റുകൾ, ഡൈനാമിക് ലിങ്കർ മുഖേന ചിഹ്നങ്ങളെ ഇന്റർപോസ് ചെയ്യാൻ അനുവദിക്കുന്നു.
ഇതിനർത്ഥം ഡിഎസ്ഒയിൽ നിന്ന് കയറ്റുമതി ചെയ്യുന്ന ചിഹ്നങ്ങൾക്ക്, കംപൈലറിന് പ്രവർത്തിക്കാൻ കഴിയില്ല എന്നാണ്
ഇന്റർപ്രോസീഡറൽ പ്രൊപ്പഗേഷൻ, ഇൻലൈനിംഗ്, മറ്റ് ഒപ്റ്റിമൈസേഷനുകൾ എന്നിവ പ്രതീക്ഷിക്കുന്നു
ചോദ്യം അല്ലെങ്കിൽ വേരിയബിൾ മാറിയേക്കാം. ഈ സവിശേഷത ഉപയോഗപ്രദമാണെങ്കിലും, ഇതിനായി
ഉദാഹരണത്തിന്, ഒരു ഡീബഗ്ഗിംഗ് ഇംപ്ലിമെന്റേഷൻ വഴി മെമ്മറി അലോക്കേഷൻ ഫംഗ്ഷനുകൾ മാറ്റിയെഴുതാൻ, അത്
കോഡ് ഗുണനിലവാരത്തിന്റെ കാര്യത്തിൽ ചെലവേറിയത്. കൂടെ -fno-സെമാന്റിക്-ഇന്റർപോസിഷൻ കമ്പൈലർ
ഫംഗ്‌ഷനുകൾക്ക് ഇന്റർപോസിഷൻ സംഭവിക്കുകയാണെങ്കിൽ, ഓവർറൈറ്റിംഗ് ഫംഗ്‌ഷന് ഉണ്ടായിരിക്കുമെന്ന് അനുമാനിക്കുന്നു
കൃത്യമായി ഒരേ അർത്ഥശാസ്ത്രം (പാർശ്വഫലങ്ങളും). അതുപോലെ ഇന്റർപോസിഷൻ സംഭവിക്കുകയാണെങ്കിൽ
വേരിയബിളുകൾക്ക്, വേരിയബിളിന്റെ കൺസ്ട്രക്റ്റർ ഒന്നുതന്നെയായിരിക്കും. പതാകയ്ക്ക് ഇല്ല
ഇൻലൈനിൽ വ്യക്തമായി പ്രഖ്യാപിച്ച ഫംഗ്‌ഷനുകളുടെ പ്രഭാവം (അത് ഒരിക്കലും അനുവദനീയമല്ല
സെമാന്റിക്‌സ് മാറ്റുന്നതിനുള്ള ഇന്റർപോസിഷൻ) കൂടാതെ ദുർബലമായി പ്രകടമായി പ്രഖ്യാപിച്ച ചിഹ്നങ്ങൾക്കും.

-fshrink-wrap
എമിറ്റ് ഫംഗ്‌ഷൻ പ്രോലോഗുകൾ ആവശ്യമുള്ള ഫംഗ്‌ഷന്റെ ഭാഗങ്ങൾക്ക് മുമ്പായി മാത്രം
ഫംഗ്ഷന്റെ മുകളിൽ. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഉയർന്നത്.

-fcaller-സംരക്ഷിക്കുന്നു
ഫംഗ്‌ഷൻ കോളുകൾ വഴി സംയോജിപ്പിച്ച രജിസ്റ്ററുകളിലേക്ക് മൂല്യങ്ങളുടെ അലോക്കേഷൻ പ്രവർത്തനക്ഷമമാക്കുക
അത്തരം കോളുകൾക്ക് ചുറ്റുമുള്ള രജിസ്റ്ററുകൾ സംരക്ഷിക്കുന്നതിനും പുനഃസ്ഥാപിക്കുന്നതിനുമുള്ള അധിക നിർദ്ദേശങ്ങൾ പുറപ്പെടുവിക്കുന്നു. അത്തരം
മികച്ച കോഡ് ലഭിക്കുമെന്ന് തോന്നുമ്പോൾ മാത്രമാണ് അലോക്കേഷൻ നടത്തുന്നത്.

ചില മെഷീനുകളിൽ, സാധാരണയായി ഉള്ളവയിൽ ഈ ഓപ്‌ഷൻ എപ്പോഴും ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കും
പകരം ഉപയോഗിക്കാൻ കോൾ സംരക്ഷിച്ച രജിസ്റ്ററുകൾ ഒന്നുമില്ല.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fcombine-stack-adjustments
സ്റ്റാക്ക് അഡ്ജസ്റ്റ്‌മെന്റുകൾ (പുഷുകളും പോപ്പുകളും) ട്രാക്ക് ചെയ്യുകയും മെമ്മറി റഫറൻസുകൾ സ്റ്റാക്ക് ചെയ്യുകയും തുടർന്ന് ശ്രമിക്കുകയും ചെയ്യുന്നു
അവയെ സംയോജിപ്പിക്കാനുള്ള വഴികൾ കണ്ടെത്താൻ.

എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -O1 ഉയർന്നത്.

-ഫിപ-റ
കോളർ സേവ് രജിസ്റ്ററുകൾ അലോക്കേഷനായി ഉപയോഗിക്കുക, ആ രജിസ്റ്ററുകൾ വിളിക്കപ്പെടുന്ന ആരും ഉപയോഗിക്കുന്നില്ലെങ്കിൽ
പ്രവർത്തനം. അങ്ങനെയെങ്കിൽ കോളുകൾക്ക് ചുറ്റും അവ സംരക്ഷിക്കുകയും പുനഃസ്ഥാപിക്കുകയും ചെയ്യേണ്ട ആവശ്യമില്ല.
വിളിക്കപ്പെടുന്ന ഫംഗ്‌ഷനുകൾ നിലവിലെ അതേ കംപൈലേഷൻ യൂണിറ്റിന്റെ ഭാഗമാണെങ്കിൽ മാത്രമേ ഇത് സാധ്യമാകൂ
ഫംഗ്ഷൻ, അവ അതിനുമുമ്പ് സമാഹരിച്ചിരിക്കുന്നു.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fconserve-stack
സ്റ്റാക്ക് ഉപയോഗം കുറയ്ക്കാൻ ശ്രമിക്കുക. കംപൈലർ കുറച്ച് സ്റ്റാക്ക് സ്പേസ് ഉപയോഗിക്കാൻ ശ്രമിക്കുന്നു
അത് പ്രോഗ്രാമിനെ മന്ദഗതിയിലാക്കുന്നുവെങ്കിൽ. ഈ ഓപ്ഷൻ ക്രമീകരണം സൂചിപ്പിക്കുന്നു വലിയ സ്റ്റാക്ക് ഫ്രെയിം
100-ലേക്കുള്ള പരാമീറ്റർ ഒപ്പം വലിയ-സ്റ്റാക്ക്-ഫ്രെയിം-വളർച്ച 400-ലേക്കുള്ള പരാമീറ്റർ.

-ftree-reassoc
മരങ്ങളിൽ പുനഃസംയോജനം നടത്തുക. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഉയർന്നത്.

-ftree-pre
മരങ്ങളിൽ ഭാഗിക റിഡൻഡൻസി എലിമിനേഷൻ (PRE) നടത്തുക. ഈ ഫ്ലാഗ് പ്രവർത്തനക്ഷമമാക്കിയത്
സ്ഥിരസ്ഥിതിയായി -O2 ഒപ്പം -O3.

-ftree-partial-pre
ഭാഗിക റിഡൻഡൻസി എലിമിനേഷൻ (PRE) കൂടുതൽ ആക്രമണാത്മകമാക്കുക. ഈ ഫ്ലാഗ് പ്രവർത്തനക്ഷമമാക്കിയത്
സ്ഥിരസ്ഥിതിയായി -O3.

-ftree-forwprop
മരങ്ങളിൽ ഫോർവേഡ് പ്രചരണം നടത്തുക. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഒപ്പം
ഉയർന്നത്.

-ഫ്രീ-ഫ്രീ
മരങ്ങളിൽ ഫുൾ റിഡൻഡൻസി എലിമിനേഷൻ (FRE) നടത്തുക. FRE ഉം തമ്മിലുള്ള വ്യത്യാസം
PRE, FRE എന്നത് എല്ലാ വഴികളിലൂടെയും കണക്കുകൂട്ടുന്ന എക്സ്പ്രഷനുകൾ മാത്രമേ പരിഗണിക്കൂ
അനാവശ്യമായ കണക്കുകൂട്ടൽ. ഈ വിശകലനം PRE-യെക്കാൾ വേഗമേറിയതാണ്, എന്നിരുന്നാലും ഇത് കുറച്ച് വെളിപ്പെടുത്തുന്നു
ആവർത്തനങ്ങൾ. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഉയർന്നത്.

-ftree-phiprop
മരങ്ങളിൽ സോപാധിക പോയിന്ററുകളിൽ നിന്ന് ലോഡ് ഉയർത്തുക. ഈ പാസ് പ്രാപ്തമാക്കിയത്
സ്ഥിരസ്ഥിതിയായി -O ഉയർന്നത്.

-ഫോയിസ്റ്റ്-അടുത്തുള്ള-ലോഡുകൾ
ലോഡുകൾ ലോഡുകളാണെങ്കിൽ, രണ്ട് ശാഖകളിൽ നിന്നും ഊഹക്കച്ചവടത്തിൽ ലോഡ് ഉയർത്തുക.
ഒരേ ഘടനയിൽ തൊട്ടടുത്തുള്ള ലൊക്കേഷനുകൾക്കും ടാർഗെറ്റ് ആർക്കിടെക്ചറിനും ഒരു സോപാധികമുണ്ട്
നിർദ്ദേശം നീക്കുക. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O2 ഉയർന്നത്.

-ftree-പകർപ്പ്-പ്രോപ്പ്
മരങ്ങളിൽ കോപ്പി പ്രൊപ്പഗേഷൻ നടത്തുക. ഈ പാസ് അനാവശ്യമായ പകർപ്പ് പ്രവർത്തനങ്ങൾ ഒഴിവാക്കുന്നു.
ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഉയർന്നത്.

-fipa-pure-const
ഏതൊക്കെ പ്രവർത്തനങ്ങളാണ് ശുദ്ധമോ സ്ഥിരമോ എന്ന് കണ്ടെത്തുക. എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -O ഉയർന്നത്.

-ഫിപ-റഫറൻസ്
കംപൈലേഷൻ യൂണിറ്റിൽ നിന്ന് രക്ഷപ്പെടാത്ത സ്റ്റാറ്റിക് വേരിയബിളുകൾ കണ്ടെത്തുക. പ്രവർത്തനക്ഷമമാക്കിയത്
സ്ഥിരസ്ഥിതിയായി -O ഉയർന്നത്.

-fipa-pta
ഇന്റർപ്രൊസീജറൽ പോയിന്റർ വിശകലനവും ഇന്റർപ്രൊസീജറൽ പരിഷ്ക്കരണവും നടത്തുക
റഫറൻസ് വിശകലനം. ഈ ഓപ്‌ഷൻ അമിതമായ മെമ്മറിയും കംപൈൽ-ടൈം ഉപയോഗവും ഉണ്ടാക്കും
വലിയ കംപൈലേഷൻ യൂണിറ്റുകൾ. ഏതെങ്കിലും ഒപ്റ്റിമൈസേഷൻ തലത്തിൽ ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല.

-fipa-profile
ഇന്റർപ്രൊസീജറൽ പ്രൊഫൈൽ പ്രചരണം നടത്തുക. തണുപ്പിൽ നിന്ന് മാത്രം വിളിക്കപ്പെടുന്ന പ്രവർത്തനങ്ങൾ
പ്രവർത്തനങ്ങൾ തണുത്തതായി അടയാളപ്പെടുത്തിയിരിക്കുന്നു. ഒരു പ്രാവശ്യം നടപ്പിലാക്കിയ പ്രവർത്തനങ്ങളും ("തണുപ്പ്" പോലെ,
"noreturn", സ്റ്റാറ്റിക് കൺസ്ട്രക്റ്ററുകൾ അല്ലെങ്കിൽ ഡിസ്ട്രക്റ്ററുകൾ) തിരിച്ചറിഞ്ഞു. തണുത്ത പ്രവർത്തനങ്ങൾ ഒപ്പം
ഒരിക്കൽ എക്സിക്യൂട്ട് ചെയ്ത ഫംഗ്‌ഷനുകളുടെ കുറച്ച് ഭാഗങ്ങൾ ലൂപ്പ് ചെയ്‌ത് വലുപ്പത്തിനനുസരിച്ച് ഒപ്റ്റിമൈസ് ചെയ്യുന്നു. പ്രവർത്തനക്ഷമമാക്കിയത്
സ്ഥിരസ്ഥിതിയായി -O ഉയർന്നത്.

-fipa-cp
ഇന്റർപ്രൊസീജറൽ സ്ഥിരമായ പ്രചരണം നടത്തുക. ഈ ഒപ്റ്റിമൈസേഷൻ പ്രോഗ്രാമിനെ വിശകലനം ചെയ്യുന്നു
ഫംഗ്‌ഷനുകളിലേക്ക് കൈമാറിയ മൂല്യങ്ങൾ സ്ഥിരാങ്കങ്ങളാണെന്നും പിന്നീട് ഒപ്റ്റിമൈസ് ചെയ്യുമ്പോഴും നിർണ്ണയിക്കാൻ
അതനുസരിച്ച്. എങ്കിൽ ഈ ഒപ്റ്റിമൈസേഷൻ പ്രകടനം ഗണ്യമായി വർദ്ധിപ്പിക്കും
പ്രയോഗത്തിൽ ഫംഗ്‌ഷനുകളിലേക്ക് സ്ഥിരാങ്കങ്ങൾ കടന്നുപോയി. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
-O2, -ഓസ് ഒപ്പം -O3.

-fipa-cp-clone
ഇന്റർപ്രൊസീജറൽ കോൺസ്റ്റന്റ് പ്രൊപഗേഷൻ ശക്തമാക്കുന്നതിന് ഫംഗ്ഷൻ ക്ലോണിംഗ് നടത്തുക. എപ്പോൾ
പ്രവർത്തനക്ഷമമാക്കി, ഇന്റർപ്രൊസീഡറൽ കോൺസ്റ്റന്റ് പ്രൊപ്പഗേഷൻ ഫംഗ്ഷൻ ക്ലോണിംഗ് നടത്തുമ്പോൾ
ബാഹ്യമായി ദൃശ്യമാകുന്ന പ്രവർത്തനത്തെ സ്ഥിരമായ ആർഗ്യുമെന്റുകൾ ഉപയോഗിച്ച് വിളിക്കാം. കാരണം ഇത്
ഒപ്റ്റിമൈസേഷന് ഫംഗ്ഷനുകളുടെ ഒന്നിലധികം പകർപ്പുകൾ സൃഷ്ടിക്കാൻ കഴിയും, ഇത് ഗണ്യമായി വർദ്ധിച്ചേക്കാം
കോഡ് വലുപ്പം (കാണുക --പരം ipcp-unit-growth=മൂല്യം). ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
-O3.

-fipa-cp-അലൈൻമെന്റ്
പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ഈ ഒപ്റ്റിമൈസേഷൻ പിന്തുണയ്ക്കുന്നതിനായി ഫംഗ്ഷൻ പാരാമീറ്ററുകളുടെ വിന്യാസം പ്രചരിപ്പിക്കുന്നു
മികച്ച വെക്‌ടറൈസേഷനും സ്ട്രിംഗ് പ്രവർത്തനങ്ങളും.

ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O2 ഒപ്പം -ഓസ്. അതിന് അത് ആവശ്യമാണ് -fipa-cp പ്രാപ്തമാക്കി.

-fipa-icf
ഫംഗ്‌ഷനുകൾക്കും റീഡ്-ഒൺലി വേരിയബിളുകൾക്കുമായി സമാനമായ കോഡ് ഫോൾഡിംഗ് നടത്തുക. ദി
ഒപ്റ്റിമൈസേഷൻ കോഡ് വലുപ്പം കുറയ്ക്കുകയും ഒരു ഫംഗ്‌ഷൻ മാറ്റിസ്ഥാപിക്കുന്നതിലൂടെ സ്റ്റാക്കുകൾ അൺവൈൻഡ് ചെയ്യുന്നത് ശല്യപ്പെടുത്തുകയും ചെയ്യും
മറ്റൊരു പേരുള്ള തത്തുല്യമായ ഒന്ന് വഴി. ഒപ്റ്റിമൈസേഷൻ കൂടുതൽ ഫലപ്രദമായി പ്രവർത്തിക്കുന്നു
ലിങ്ക് ടൈം ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനക്ഷമമാക്കി.

എന്നിരുന്നാലും, പെരുമാറ്റം ഗോൾഡ് ലിങ്കർ ഐസിഎഫ് ഒപ്റ്റിമൈസേഷന് സമാനമാണ്, ജിസിസി ഐസിഎഫ് പ്രവർത്തിക്കുന്നു
വ്യത്യസ്ത തലങ്ങൾ, അതിനാൽ ഒപ്റ്റിമൈസേഷനുകൾ ഒരുപോലെയല്ല - അതിന് തുല്യതകളുണ്ട്
GCC വഴി മാത്രമേ കണ്ടെത്തൂ, തുല്യതകൾ സ്വർണ്ണം മാത്രം കണ്ടെത്തുന്നു.

ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O2 ഒപ്പം -ഓസ്.

-ഫിസൊലേറ്റ്-തെറ്റായ-പാതകൾ-ഡെറഫറൻസ്
ഒരു അസാധുവാക്കൽ ഒഴിവാക്കുന്നത് കാരണം തെറ്റായ അല്ലെങ്കിൽ നിർവചിക്കപ്പെടാത്ത സ്വഭാവത്തിന് കാരണമാകുന്ന പാതകൾ കണ്ടെത്തുക
സൂചിക. പ്രധാന നിയന്ത്രണ പ്രവാഹത്തിൽ നിന്ന് ആ പാതകളെ വേർതിരിച്ച് പ്രസ്താവന ഉപയോഗിച്ച് മാറ്റുക
ഒരു കെണിയിൽ തെറ്റായ അല്ലെങ്കിൽ നിർവചിക്കാത്ത പെരുമാറ്റം. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O2
ഉയർന്നത്.

-ഫിസൊലേറ്റ്-തെറ്റായ-പാതകൾ-ആട്രിബ്യൂട്ട്
ഉപയോഗശൂന്യമായ മൂല്യം കാരണം തെറ്റായ അല്ലെങ്കിൽ നിർവചിക്കപ്പെടാത്ത സ്വഭാവത്തിന് കാരണമാകുന്ന പാതകൾ കണ്ടെത്തുക
"returns_nonnull" അല്ലെങ്കിൽ "nonnull" ആട്രിബ്യൂട്ട് നിരോധിച്ചിരിക്കുന്ന രീതിയിൽ. ആ വഴികൾ ഒറ്റപ്പെടുത്തുക
പ്രധാന നിയന്ത്രണ പ്രവാഹത്തിൽ നിന്ന് തെറ്റായ അല്ലെങ്കിൽ നിർവചിക്കാത്ത സ്വഭാവം ഉപയോഗിച്ച് പ്രസ്താവന മാറ്റുക
ഒരു കെണിയിലേക്ക്. ഇത് നിലവിൽ പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല, എന്നാൽ ഇത് പ്രാപ്തമാക്കിയേക്കാം -O2 ഭാവിയിൽ.

-ftree-സിങ്ക്
മരങ്ങളിൽ ഫോർവേഡ് സ്റ്റോർ ചലനം നടത്തുക. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഒപ്പം
ഉയർന്നത്.

-ftree-bit-ccp
മരങ്ങളിൽ വിരളമായ സോപാധിക ബിറ്റ് സ്ഥിരമായ പ്രചരണം നടത്തുകയും പോയിന്റർ പ്രചരിപ്പിക്കുകയും ചെയ്യുക
വിന്യാസ വിവരം. ഈ പാസ് ലോക്കൽ സ്കെലാർ വേരിയബിളുകളിൽ മാത്രമേ പ്രവർത്തിക്കൂ
എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -O ഉയർന്നതും. അതിന് അത് ആവശ്യമാണ് -ftree-ccp പ്രാപ്തമാക്കി.

-ftree-ccp
മരങ്ങളിൽ വിരളമായ സോപാധിക സ്ഥിരമായ പ്രചരണം (CCP) നടത്തുക. ഈ പാസ് മാത്രം
ലോക്കൽ സ്കെയിലർ വേരിയബിളുകളിൽ പ്രവർത്തിക്കുന്നു കൂടാതെ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുന്നു -O ഉയർന്നത്.

-fssa-phiopt
സോപാധിക കോഡ് ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിന് SSA PHI നോഡുകളിൽ പാറ്റേൺ പൊരുത്തപ്പെടുത്തൽ നടത്തുക. ഈ പാസ് ആണ്
എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -O ഉയർന്നത്.

-ftree-സ്വിച്ച്-പരിവർത്തനം
എയിൽ നിന്നുള്ള ഇനീഷ്യലൈസേഷനുകളിലേക്കുള്ള സ്വിച്ചിൽ ലളിതമായ ഇനീഷ്യലൈസേഷനുകളുടെ പരിവർത്തനം നടത്തുക
സ്കെയിലർ അറേ. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O2 ഉയർന്നത്.

-ftree-tail-merge
സമാനമായ കോഡ് സീക്വൻസുകൾക്കായി തിരയുക. കണ്ടെത്തുമ്പോൾ, മറ്റൊന്നിലേക്ക് ഒരു ജമ്പ് ഉപയോഗിച്ച് ഒന്ന് മാറ്റിസ്ഥാപിക്കുക.
ഈ ഒപ്റ്റിമൈസേഷൻ ടെയിൽ മെർജിംഗ് അല്ലെങ്കിൽ ക്രോസ് ജമ്പിംഗ് എന്നാണ് അറിയപ്പെടുന്നത്. ഈ ഫ്ലാഗ് പ്രവർത്തനക്ഷമമാക്കിയത്
സ്ഥിരസ്ഥിതിയായി -O2 ഉയർന്നതും. ഈ പാസിലെ കംപൈലേഷൻ സമയം ഉപയോഗിച്ച് പരിമിതപ്പെടുത്താം
max-tail-merge-comparisons പരാമീറ്റർ ഒപ്പം max-tail-merge-iterations പാരാമീറ്റർ.

-ftree-dce
മരങ്ങളിൽ ഡെഡ് കോഡ് എലിമിനേഷൻ (DCE) നടത്തുക. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O
ഉയർന്നത്.

-ftree-builtin-call-dce
ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകളിലേക്കുള്ള കോളുകൾക്കായി സോപാധിക ഡെഡ് കോഡ് എലിമിനേഷൻ (DCE) നടത്തുക
"പിഴവ്" സജ്ജീകരിച്ചേക്കാം, എന്നാൽ പാർശ്വഫലങ്ങളില്ലാത്തവയാണ്. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
at -O2 എങ്കിൽ ഉയർന്നതും -ഓസ് എന്നും വ്യക്തമാക്കിയിട്ടില്ല.

-ftree-dominator-opts
വൈവിധ്യമാർന്ന സ്കെയിലർ വൃത്തിയാക്കലുകൾ നടത്തുക (സ്ഥിരമായ/പകർപ്പ് പ്രചരിപ്പിക്കൽ, ആവർത്തനം
എലിമിനേഷൻ, റേഞ്ച് പ്രൊപ്പഗേഷൻ, എക്സ്പ്രഷൻ ലഘൂകരണം) ഒരു ഡോമിനറിനെ അടിസ്ഥാനമാക്കി
വൃക്ഷം കടന്നുപോകുന്നു. ഇത് ജമ്പ് ത്രെഡിംഗും നടത്തുന്നു (ജമ്പുകൾ ജമ്പുകളിലേക്ക് കുറയ്ക്കുന്നതിന്). ഈ
എന്നതിൽ സ്ഥിരസ്ഥിതിയായി ഫ്ലാഗ് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഉയർന്നത്.

-ftree-dse
മരങ്ങളിൽ ഡെഡ് സ്റ്റോർ എലിമിനേഷൻ (DSE) നടത്തുക. ഒരു ഡെഡ് സ്റ്റോർ ഒരു മെമ്മറിയിലേക്ക് ഒരു സ്റ്റോറാണ്
ഇടപെട്ട ലോഡുകളൊന്നും കൂടാതെ മറ്റൊരു സ്റ്റോർ പിന്നീട് തിരുത്തിയെഴുതിയ സ്ഥലം. ഇൻ
ഈ സാഹചര്യത്തിൽ മുമ്പത്തെ സ്റ്റോർ ഇല്ലാതാക്കാൻ കഴിയും. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഒപ്പം
ഉയർന്നത്.

-ftree-ch
മരങ്ങളിൽ ലൂപ്പ് ഹെഡർ പകർത്തൽ നടത്തുക. ഇത് വർദ്ധിക്കുന്നതിനാൽ ഇത് പ്രയോജനകരമാണ്
കോഡ് മോഷൻ ഒപ്റ്റിമൈസേഷനുകളുടെ ഫലപ്രാപ്തി. ഇത് ഒരു ജമ്പ് സംരക്ഷിക്കുന്നു. ഈ പതാക
എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -O ഉയർന്നതും. ഇത് പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല -ഓസ്, അത് സാധാരണയായി മുതൽ
കോഡ് വലുപ്പം വർദ്ധിപ്പിക്കുന്നു.

-ftree-loop-optimize
മരങ്ങളിൽ ലൂപ്പ് ഒപ്റ്റിമൈസേഷൻ നടത്തുക. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഒപ്പം
ഉയർന്നത്.

-ftree-ലൂപ്പ്-ലീനിയർ
മരത്തിൽ ലൂപ്പ് ഇന്റർചേഞ്ച് പരിവർത്തനങ്ങൾ നടത്തുക. അതേ പോലെ -ഫ്ലോപ്പ്-ഇന്റർചേഞ്ച്. ഉപയോഗിക്കാൻ
ഈ കോഡ് പരിവർത്തനം, GCC കോൺഫിഗർ ചെയ്യേണ്ടതാണ് --with-isl പ്രാപ്തമാക്കുന്നതിന്
ഗ്രാഫൈറ്റ് ലൂപ്പ് ട്രാൻസ്ഫോർമേഷൻ ഇൻഫ്രാസ്ട്രക്ചർ.

-ഫ്ലോപ്പ്-ഇന്റർചേഞ്ച്
ലൂപ്പുകളിൽ ലൂപ്പ് ഇന്റർചേഞ്ച് പരിവർത്തനങ്ങൾ നടത്തുക. രണ്ട് നെസ്റ്റഡ് ലൂപ്പുകൾ പരസ്പരം മാറ്റുന്നു
ആന്തരികവും ബാഹ്യവുമായ ലൂപ്പുകൾ മാറ്റുന്നു. ഉദാഹരണത്തിന്, ഇതുപോലുള്ള ഒരു ലൂപ്പ് നൽകിയിരിക്കുന്നു:

DO J = 1, M
DO I = 1, N
എ(ജെ, ഐ) = എ(ജെ, ഐ) * സി
ENDDO
ENDDO

ലൂപ്പ് ഇന്റർചേഞ്ച് ലൂപ്പിനെ പരിവർത്തനം ചെയ്യുന്നു:

DO I = 1, N
DO J = 1, M
എ(ജെ, ഐ) = എ(ജെ, ഐ) * സി
ENDDO
ENDDO

"N" കാഷെകളേക്കാൾ വലുതായിരിക്കുമ്പോൾ ഇത് പ്രയോജനകരമാണ്, കാരണം ഫോർട്രാനിൽ, the
ഒരു ശ്രേണിയിലെ ഘടകങ്ങൾ നിരയും ഒറിജിനലും ഉപയോഗിച്ച് മെമ്മറിയിൽ സംഭരിക്കുന്നു
ലൂപ്പ് വരികളിലൂടെ ആവർത്തിക്കുന്നു, ഓരോ ആക്‌സസിലും ഒരു കാഷെ മിസ്സ് സൃഷ്‌ടിക്കാൻ സാധ്യതയുണ്ട്. ഈ
ഒപ്റ്റിമൈസേഷൻ GCC പിന്തുണയ്ക്കുന്ന എല്ലാ ഭാഷകൾക്കും ബാധകമാണ്, മാത്രമല്ല ഇത് പരിമിതപ്പെടുത്തിയിട്ടില്ല
ഫോർട്രാൻ. ഈ കോഡ് പരിവർത്തനം ഉപയോഗിക്കുന്നതിന്, GCC കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട് --with-isl ലേക്ക്
ഗ്രാഫൈറ്റ് ലൂപ്പ് ട്രാൻസ്ഫോർമേഷൻ ഇൻഫ്രാസ്ട്രക്ചർ പ്രവർത്തനക്ഷമമാക്കുക.

-ഫ്ലോപ്പ്-സ്ട്രിപ്പ്-മൈൻ
ലൂപ്പുകളിൽ ലൂപ്പ് സ്ട്രിപ്പ് മൈനിംഗ് പരിവർത്തനങ്ങൾ നടത്തുക. സ്ട്രിപ്പ് ഖനനം ഒരു ലൂപ്പിനെ വിഭജിക്കുന്നു
രണ്ട് നെസ്റ്റഡ് ലൂപ്പുകൾ. പുറം ലൂപ്പിന് സ്ട്രിപ്പ് വലുപ്പത്തിനും ആന്തരികത്തിനും തുല്യമായ സ്‌ട്രൈഡുകൾ ഉണ്ട്
ലൂപ്പിന് ഒരു സ്ട്രിപ്പിനുള്ളിൽ യഥാർത്ഥ ലൂപ്പിന്റെ സ്‌ട്രൈഡുകൾ ഉണ്ട്. സ്ട്രിപ്പ് നീളം മാറ്റാം
ഉപയോഗിച്ച് ലൂപ്പ്-ബ്ലോക്ക്-ടൈൽ-വലിപ്പം പരാമീറ്റർ. ഉദാഹരണത്തിന്, ഇതുപോലുള്ള ഒരു ലൂപ്പ് നൽകിയിരിക്കുന്നു:

DO I = 1, N
A(I) = A(I) + C
ENDDO

ലൂപ്പ് സ്ട്രിപ്പ് മൈനിംഗ് ലൂപ്പിനെ പരിവർത്തനം ചെയ്യുന്നത് എഴുതിയതുപോലെ:

DO II = 1, N, 51
DO I = II, മിനിറ്റ് (II + 50, N)
A(I) = A(I) + C
ENDDO
ENDDO

ഈ ഒപ്റ്റിമൈസേഷൻ GCC പിന്തുണയ്‌ക്കുന്ന എല്ലാ ഭാഷകൾക്കും ബാധകമാണ്, മാത്രമല്ല ഇത് പരിമിതപ്പെടുത്തിയിട്ടില്ല
ഫോർട്രാൻ. ഈ കോഡ് പരിവർത്തനം ഉപയോഗിക്കുന്നതിന്, GCC കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട് --with-isl ലേക്ക്
ഗ്രാഫൈറ്റ് ലൂപ്പ് ട്രാൻസ്ഫോർമേഷൻ ഇൻഫ്രാസ്ട്രക്ചർ പ്രവർത്തനക്ഷമമാക്കുക.

-ഫ്ലോപ്പ്-ബ്ലോക്ക്
ലൂപ്പുകളിൽ ലൂപ്പ് ബ്ലോക്കിംഗ് പരിവർത്തനങ്ങൾ നടത്തുക. ഓരോ ലൂപ്പിലും സ്ട്രിപ്പ് മൈനുകൾ തടയുന്നു
എലമെന്റ് ലൂപ്പുകളുടെ മെമ്മറി ആക്‌സസ് കാഷെകൾക്കുള്ളിൽ ഒതുങ്ങുന്ന തരത്തിൽ ലൂപ്പ് നെസ്റ്റ്. ദി
ഉപയോഗിച്ച് സ്ട്രിപ്പ് നീളം മാറ്റാം ലൂപ്പ്-ബ്ലോക്ക്-ടൈൽ-വലിപ്പം പരാമീറ്റർ. ഉദാഹരണത്തിന്,
ഇതുപോലുള്ള ഒരു ലൂപ്പ് നൽകിയിരിക്കുന്നു:

DO I = 1, N
DO J = 1, M
A(J, I) = B(I) + C(J)
ENDDO
ENDDO

ലൂപ്പ് ബ്ലോക്കിംഗ് ലൂപ്പിനെ പരിവർത്തനം ചെയ്യുന്നത് എഴുതിയതുപോലെ:

DO II = 1, N, 51
JJ = 1, M, 51 ചെയ്യുക
DO I = II, മിനിറ്റ് (II + 50, N)
DO J = JJ, മിനിറ്റ് (JJ + 50, M)
A(J, I) = B(I) + C(J)
ENDDO
ENDDO
ENDDO
ENDDO

"M" കാഷെകളേക്കാൾ വലുതായിരിക്കുമ്പോൾ ഇത് പ്രയോജനകരമാണ്, കാരണം ഏറ്റവും ഉള്ളിലെ ലൂപ്പ്
കാഷെകളിൽ സൂക്ഷിക്കാൻ കഴിയുന്ന ചെറിയ അളവിലുള്ള ഡാറ്റയിൽ ആവർത്തിക്കുന്നു. ഈ
ഒപ്റ്റിമൈസേഷൻ GCC പിന്തുണയ്ക്കുന്ന എല്ലാ ഭാഷകൾക്കും ബാധകമാണ്, മാത്രമല്ല ഇത് പരിമിതപ്പെടുത്തിയിട്ടില്ല
ഫോർട്രാൻ. ഈ കോഡ് പരിവർത്തനം ഉപയോഗിക്കുന്നതിന്, GCC കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട് --with-isl ലേക്ക്
ഗ്രാഫൈറ്റ് ലൂപ്പ് ട്രാൻസ്ഫോർമേഷൻ ഇൻഫ്രാസ്ട്രക്ചർ പ്രവർത്തനക്ഷമമാക്കുക.

-ഫ്ഗ്രാഫൈറ്റ്-ഐഡന്റിറ്റി
ഗ്രാഫൈറ്റിനായി ഐഡന്റിറ്റി പരിവർത്തനം പ്രവർത്തനക്ഷമമാക്കുക. ഓരോ എസ്‌സിഒപിക്കും ഞങ്ങൾ സൃഷ്ടിക്കുന്നു
പോളിഹെഡ്രൽ പ്രാതിനിധ്യം, അതിനെ വീണ്ടും ജിംപിളാക്കി മാറ്റുക. ഉപയോഗിക്കുന്നത് -ഫ്ഗ്രാഫൈറ്റ്-ഐഡന്റിറ്റി
GIMPLE -> GRAPHITE -> GIMPLE പരിവർത്തനത്തിന്റെ ചിലവുകളും നേട്ടങ്ങളും നമുക്ക് പരിശോധിക്കാം.
സൂചിക പോലെയുള്ള ചില ചെറിയ ഒപ്റ്റിമൈസേഷനുകളും കോഡ് ജനറേറ്റർ ISL നിർവ്വഹിക്കുന്നു
ലൂപ്പുകളിലെ വിഭജനവും നിർജ്ജീവമായ കോഡ് ഇല്ലാതാക്കലും.

-ഫ്ലോപ്പ്-നെസ്റ്റ്-ഒപ്റ്റിമൈസ്
ISL അടിസ്ഥാനമാക്കിയുള്ള ലൂപ്പ് നെസ്റ്റ് ഒപ്റ്റിമൈസർ പ്രവർത്തനക്ഷമമാക്കുക. ഇതൊരു ജനറിക് ലൂപ്പ് നെസ്റ്റ് ഒപ്റ്റിമൈസർ അടിസ്ഥാനമാക്കിയുള്ളതാണ്
പ്ലൂട്ടോ ഒപ്റ്റിമൈസേഷൻ അൽഗോരിതങ്ങളിൽ. ഒപ്റ്റിമൈസ് ചെയ്ത ഒരു ലൂപ്പ് ഘടന ഇത് കണക്കാക്കുന്നു
ഡാറ്റ-പ്രാദേശികതയും സമാന്തരതയും. ഈ ഓപ്ഷൻ പരീക്ഷണാത്മകമാണ്.

-ഫ്ലോപ്പ്-അൺറോൾ-ആൻഡ്-ജാം
ISL അടിസ്ഥാനമാക്കിയുള്ള ലൂപ്പ് നെസ്റ്റ് ഒപ്റ്റിമൈസറിനായി അൺറോളും ജാമും പ്രവർത്തനക്ഷമമാക്കുക. അൺറോൾ ഘടകം ആകാം
ഉപയോഗിച്ച് മാറ്റി ലൂപ്പ്-അൺറോൾ-ജാം-സൈസ് പരാമീറ്റർ. ചുരുട്ടാത്ത അളവ് (എണ്ണൽ
ഏറ്റവും ഉള്ളിൽ നിന്ന്) ഉപയോഗിച്ച് മാറ്റാം ലൂപ്പ്-അൺറോൾ-ജാം-ഡെപ്ത് പാരാമീറ്റർ.
.

-ഫ്ലോപ്പ്-പാരലലൈസ്-എല്ലാം
സമാന്തരമാക്കാൻ കഴിയുന്ന ലൂപ്പുകൾ തിരിച്ചറിയാൻ ഗ്രാഫൈറ്റ് ഡാറ്റ ആശ്രിത വിശകലനം ഉപയോഗിക്കുക.
വിശകലനം ചെയ്യാൻ കഴിയുന്ന എല്ലാ ലൂപ്പുകളും സമാന്തരമാക്കുക
ലൂപ്പുകൾ സമാന്തരമാക്കുന്നത് ലാഭകരമാണോ എന്ന് പരിശോധിക്കാതെ.

-fcheck-data-deps
നിരവധി ഡാറ്റ ആശ്രിത അനലൈസറുകളുടെ ഫലങ്ങൾ താരതമ്യം ചെയ്യുക. ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു
ഡാറ്റ ഡിപൻഡൻസ് അനലൈസറുകൾ ഡീബഗ്ഗിംഗ് ചെയ്യുന്നു.

-ftree-loop-if-convert
അകത്തെ ലൂപ്പുകളിലെ സോപാധിക ജമ്പുകളെ ബ്രാഞ്ച്-ലെസ് ആയി മാറ്റാനുള്ള ശ്രമം
തുല്യമായവ. ക്രമത്തിൽ അകത്തെ ലൂപ്പുകളിൽ നിന്ന് നിയന്ത്രണ-പ്രവാഹം നീക്കം ചെയ്യുക എന്നതാണ് ഉദ്ദേശ്യം
ഈ ലൂപ്പുകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള വെക്‌ടറൈസേഷൻ പാസിന്റെ കഴിവ് മെച്ചപ്പെടുത്തുന്നതിന്. ഇതാണ്
വെക്‌ടറൈസേഷൻ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കും.

-ftree-loop-if-convert-Stores
മെമ്മറി റൈറ്റുകൾ അടങ്ങുന്ന സോപാധിക ജമ്പുകൾ if-convert ചെയ്യാനും ശ്രമിക്കുക. ഈ
സോപാധികമായി പരിവർത്തനം ചെയ്യുന്നതിനാൽ മൾട്ടി-ത്രെഡഡ് പ്രോഗ്രാമുകൾക്ക് പരിവർത്തനം സുരക്ഷിതമല്ല
മെമ്മറി നിരുപാധിക മെമ്മറി റൈറ്റുകളായി എഴുതുന്നു. ഉദാഹരണത്തിന്,

ഇതിനായി (i = 0; i < N; i++)
എങ്കിൽ (കോണ്ട്)
A[i] = expr;

ആയി രൂപാന്തരപ്പെടുന്നു

ഇതിനായി (i = 0; i < N; i++)
A[i] = cond ? expr : A[i];

ഡാറ്റാ റേസുകൾ നിർമ്മിക്കാൻ സാധ്യതയുണ്ട്.

-ftree-loop-distribution
ലൂപ്പ് വിതരണം നടത്തുക. വലിയ ലൂപ്പ് ബോഡികളിലെ കാഷെ പ്രകടനം മെച്ചപ്പെടുത്താൻ ഈ ഫ്ലാഗിന് കഴിയും
സമാന്തരവൽക്കരണം അല്ലെങ്കിൽ വെക്‌ടറൈസേഷൻ പോലുള്ള കൂടുതൽ ലൂപ്പ് ഒപ്റ്റിമൈസേഷനുകൾ എടുക്കാൻ അനുവദിക്കുക
സ്ഥലം. ഉദാഹരണത്തിന്, ലൂപ്പ്

DO I = 1, N
A(I) = B(I) + C
D(I) = E(I) * F
ENDDO

ആയി രൂപാന്തരപ്പെടുന്നു

DO I = 1, N
A(I) = B(I) + C
ENDDO
DO I = 1, N
D(I) = E(I) * F
ENDDO

-ftree-loop-distribute-patterns
എയിലേക്കുള്ള കോളുകൾ ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കാൻ കഴിയുന്ന പാറ്റേണുകളുടെ ലൂപ്പ് വിതരണം നടത്തുക
പുസ്തകശാല. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O3.

ഈ പാസ് ഇനീഷ്യലൈസേഷൻ ലൂപ്പുകൾ വിതരണം ചെയ്യുകയും പൂജ്യം മെംസെറ്റ് ചെയ്യുന്നതിനുള്ള ഒരു കോൾ സൃഷ്ടിക്കുകയും ചെയ്യുന്നു.
ഉദാഹരണത്തിന്, ലൂപ്പ്

DO I = 1, N
A(I) = 0
B(I) = A(I) + I
ENDDO

ആയി രൂപാന്തരപ്പെടുന്നു

DO I = 1, N
A(I) = 0
ENDDO
DO I = 1, N
B(I) = A(I) + I
ENDDO

കൂടാതെ ഇനീഷ്യലൈസേഷൻ ലൂപ്പ് മെംസെറ്റ് പൂജ്യത്തിലേക്കുള്ള കോളായി രൂപാന്തരപ്പെടുന്നു.

-ftree-loop-im
മരങ്ങളിൽ ലൂപ്പ് മാറ്റമില്ലാത്ത ചലനം നടത്തുക. ഈ പാസ് കഠിനമായ മാറ്റങ്ങളെ മാത്രം നീക്കുന്നു
RTL തലത്തിൽ കൈകാര്യം ചെയ്യാൻ (ഫംഗ്ഷൻ കോളുകൾ, നോൺട്രിവിയൽ സീക്വൻസുകളിലേക്ക് വികസിപ്പിക്കുന്ന പ്രവർത്തനങ്ങൾ
insns). കൂടെ -ഫൺസ്വിച്ച്-ലൂപ്പുകൾ അത് വ്യവസ്ഥകളുടെ പ്രവർത്തനങ്ങളും നീക്കുന്നു
ലൂപ്പിൽ നിന്ന് മാറ്റമില്ലാത്തത്, അതിനാൽ നമുക്ക് നിസ്സാരമായ മാറ്റമില്ലാത്ത വിശകലനം ഉപയോഗിക്കാനാകും
ലൂപ്പ് മാറ്റുന്നു. പാസിൽ സ്റ്റോർ മോഷനും ഉൾപ്പെടുന്നു.

-ftree-loop-ivcanon
ലൂപ്പുകളിലെ ആവർത്തനങ്ങളുടെ എണ്ണം നിർണ്ണയിക്കാൻ ഒരു കാനോനിക്കൽ കൗണ്ടർ സൃഷ്ടിക്കുക
ആവർത്തനങ്ങളുടെ എണ്ണം സങ്കീർണ്ണമായ വിശകലനം ആവശ്യമാണ്. പിന്നീട് ഒപ്റ്റിമൈസേഷനുകൾ ചെയ്യാം
നമ്പർ എളുപ്പത്തിൽ നിർണ്ണയിക്കുക. പ്രത്യേകിച്ചും അൺറോളിംഗുമായി ബന്ധപ്പെട്ട് ഉപയോഗപ്രദമാണ്.

-fivopts
ഇൻഡക്ഷൻ വേരിയബിൾ ഒപ്റ്റിമൈസേഷനുകൾ നടത്തുക (ശക്തി കുറയ്ക്കൽ, ഇൻഡക്ഷൻ വേരിയബിൾ
ലയനവും ഇൻഡക്ഷൻ വേരിയബിൾ ഉന്മൂലനം) മരങ്ങളിൽ.

-ftree-parallelize-loops=n
ലൂപ്പുകൾ സമാന്തരമാക്കുക, അതായത്, n ത്രെഡുകളിൽ പ്രവർത്തിക്കുന്നതിന് അവയുടെ ആവർത്തന ഇടം വിഭജിക്കുക. ഇതാണ്
ആവർത്തനങ്ങൾ സ്വതന്ത്രവും ഏകപക്ഷീയവുമായ ലൂപ്പുകൾക്ക് മാത്രമേ സാധ്യമാകൂ
പുനഃക്രമീകരിച്ചു. ലൂപ്പുകൾക്കായി മൾട്ടിപ്രൊസസർ മെഷീനുകളിൽ മാത്രമേ ഒപ്റ്റിമൈസേഷൻ ലാഭകരമാകൂ
മെമ്മറി ബാൻഡ്‌വിഡ്ത്ത് പരിമിതപ്പെടുത്തുന്നതിനുപകരം സിപിയു-തീവ്രതയുള്ളവയാണ്. ഈ ഓപ്ഷൻ
ധ്വനിപ്പിക്കുന്നു -pthread, അതിനാൽ പിന്തുണയുള്ള ടാർഗെറ്റുകളിൽ മാത്രമേ പിന്തുണയ്ക്കൂ
-pthread.

-ftree-pta
മരങ്ങളിൽ പ്രവർത്തനം-പ്രാദേശിക പോയിന്റുകൾ-ടു വിശകലനം നടത്തുക. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
at -O ഉയർന്നത്.

-ftree-sra
അഗ്രഗേറ്റുകളുടെ സ്കെയിലർ മാറ്റിസ്ഥാപിക്കൽ നടത്തുക. ഈ പാസ് ഘടന റഫറൻസുകളെ മാറ്റിസ്ഥാപിക്കുന്നു
സ്‌കെയിലറുകൾ ഉപയോഗിച്ച് ഘടനകൾ വളരെ നേരത്തെ തന്നെ മെമ്മറിയിലേക്ക് വരുന്നത് തടയാൻ. ഈ പതാക
എന്നതിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -O ഉയർന്നത്.

-ftree-പകർപ്പിന്റെ പേര്
മരങ്ങളിൽ കോപ്പി പുനർനാമകരണം നടത്തുക. ഈ പാസ് കംപൈലർ ടെമ്പററികളുടെ പേരുമാറ്റാൻ ശ്രമിക്കുന്നു
കോപ്പി ലൊക്കേഷനുകളിലെ മറ്റ് വേരിയബിളുകൾ, സാധാരണയായി വേരിയബിൾ പേരുകൾക്ക് കാരണമാകുന്നു
യഥാർത്ഥ വേരിയബിളുകളുമായി സാമ്യമുണ്ട്. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഒപ്പം
ഉയർന്നത്.

-ftree-coalesce-inlined-vars
കോപ്പിറെയിം പാസ് പറയുക (കാണുക -ftree-പകർപ്പിന്റെ പേര്) ചെറിയ ഉപയോക്താവിനെ സംയോജിപ്പിക്കാൻ ശ്രമിക്കുക-
വേരിയബിളുകളും നിർവചിച്ചിരിക്കുന്നു, പക്ഷേ അവ മറ്റ് ഫംഗ്ഷനുകളിൽ നിന്ന് ഇൻലൈൻ ചെയ്തിട്ടുണ്ടെങ്കിൽ മാത്രം. ഇത് എ
കൂടുതൽ പരിമിതമായ രൂപം -ftree-coalesce-vars. ഇത് അത്തരം ഡീബഗ് വിവരങ്ങൾക്ക് ദോഷം ചെയ്തേക്കാം
ഇൻലൈൻഡ് വേരിയബിളുകൾ, എന്നാൽ ഇത് ഇൻലൈൻ-ഇൻടു ഫംഗ്ഷന്റെ വേരിയബിളുകളെ ഓരോന്നിനും വേറിട്ട് നിർത്തുന്നു
മറ്റുള്ളവ, ഒരു ഡീബഗ്ഗിംഗിൽ പ്രതീക്ഷിക്കുന്ന മൂല്യങ്ങൾ ഉൾക്കൊള്ളാൻ സാധ്യത കൂടുതലാണ്
സെഷൻ.

-ftree-coalesce-vars
കോപ്പിറെയിം പാസ് പറയുക (കാണുക -ftree-പകർപ്പിന്റെ പേര്) ചെറിയ ഉപയോക്താവിനെ സംയോജിപ്പിക്കാൻ ശ്രമിക്കുക-
കംപൈലർ ടെമ്പററികൾക്ക് പകരം വേരിയബിളുകളും നിർവചിച്ചു. ഇത് ഗുരുതരമായി പരിമിതപ്പെടുത്തിയേക്കാം
കംപൈൽ ചെയ്ത ഒപ്റ്റിമൈസ് ചെയ്ത പ്രോഗ്രാം ഡീബഗ് ചെയ്യാനുള്ള കഴിവ് -fno-var-tracking-assignments.
നിഷേധാത്മക രൂപത്തിൽ, ഈ ഫ്ലാഗ് ഉൾപ്പെടെയുള്ള ഉപയോക്തൃ വേരിയബിളുകളുടെ SSA സംയോജനത്തെ തടയുന്നു
ഇൻലൈൻ ചെയ്തവ. ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

-ftree-ter
SSA->സാധാരണ ഘട്ടത്തിൽ താൽക്കാലിക എക്സ്പ്രഷൻ മാറ്റിസ്ഥാപിക്കൽ നടത്തുക. സിംഗിൾ
use/single def temporaries എന്നത് അവയുടെ ഉപയോഗ സ്ഥലത്ത് അവയുടെ നിർവ്വചനം ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നു
ആവിഷ്കാരം. ഇത് GIMPLE അല്ലാത്ത കോഡിന് കാരണമാകുന്നു, എന്നാൽ എക്സ്പാൻഡർമാർക്ക് കൂടുതൽ നൽകുന്നു
സങ്കീർണ്ണമായ മരങ്ങൾ മികച്ച RTL ഉൽപ്പാദനത്തിന് കാരണമാകുന്നു. ഇത് പ്രവർത്തനക്ഷമമാക്കിയത്
സ്ഥിരസ്ഥിതിയായി -O ഉയർന്നത്.

-ftree-slsr
മരങ്ങളിൽ നേർരേഖ ശക്തി കുറയ്ക്കൽ നടത്തുക. ഇത് ബന്ധപ്പെട്ടതായി തിരിച്ചറിയുന്നു
ഗുണനങ്ങൾ ഉൾപ്പെടുന്ന പദപ്രയോഗങ്ങൾ, വിലകുറഞ്ഞ കണക്കുകൂട്ടലുകൾ ഉപയോഗിച്ച് അവയെ മാറ്റിസ്ഥാപിക്കുന്നു
സാധ്യമാകുമ്പോൾ. ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O ഉയർന്നത്.

-ftree-vectorize
മരങ്ങളിൽ വെക്‌ടറൈസേഷൻ നടത്തുക. ഈ ഫ്ലാഗ് പ്രവർത്തനക്ഷമമാക്കുന്നു -ftree-loop-vectorize ഒപ്പം
-ftree-slp-vectorize വ്യക്തമായി വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ.

-ftree-loop-vectorize
മരങ്ങളിൽ ലൂപ്പ് വെക്‌ടറൈസേഷൻ നടത്തുക. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O3 എപ്പോൾ
-ftree-vectorize പ്രാപ്തമാക്കി.

-ftree-slp-vectorize
മരങ്ങളിൽ അടിസ്ഥാന ബ്ലോക്ക് വെക്‌ടറൈസേഷൻ നടത്തുക. ഈ ഫ്ലാഗ് സ്ഥിരസ്ഥിതിയായി ഇവിടെ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O3 ഒപ്പം
എപ്പോൾ -ftree-vectorize പ്രാപ്തമാക്കി.

-fvect-cost-model=മാതൃക
വെക്‌ടറൈസേഷനുപയോഗിക്കുന്ന കോസ്റ്റ് മോഡൽ മാറ്റുക. ദി മാതൃക വാദം അതിലൊന്നായിരിക്കണം
പരിമിതികളില്ലാത്ത, ചലനാത്മകം or കുറഞ്ഞത്. കൂടെ പരിമിതികളില്ലാത്ത വെക്റ്ററൈസ്ഡ് കോഡ്-പാത്ത് മോഡൽ ആണ്
കൂടെയുള്ളപ്പോൾ ലാഭകരമാണെന്ന് കരുതപ്പെടുന്നു ചലനാത്മകം മോഡൽ ഒരു റൺടൈം ചെക്ക് ഗാർഡുകൾ
വെക്‌ടറൈസ് ചെയ്‌ത കോഡ്-പാത്ത് എക്‌സിക്യൂട്ട് ചെയ്യാൻ സാധ്യതയുള്ള ആവർത്തന കൗണ്ടുകൾക്ക് മാത്രം ഇത് പ്രവർത്തനക്ഷമമാക്കുന്നു
യഥാർത്ഥ സ്കെയിലർ ലൂപ്പ് എക്സിക്യൂട്ട് ചെയ്യുന്നതിനേക്കാൾ വേഗത്തിൽ. ദി കുറഞ്ഞത് മോഡൽ പ്രവർത്തനരഹിതമാക്കുന്നു
ലൂപ്പുകളുടെ വെക്‌ടറൈസേഷൻ, അങ്ങനെ ചെയ്യുന്നത് വിലകുറഞ്ഞതായിരിക്കും, ഉദാഹരണത്തിന് കാരണം
ഡാറ്റ ആശ്രിതത്വത്തിനോ വിന്യാസത്തിനോ വേണ്ടിയുള്ള റൺടൈം പരിശോധനകൾ ആവശ്യമാണ്, എന്നാൽ അല്ലാത്തപക്ഷം ഇതിന് തുല്യമാണ്
ചലനാത്മകം മാതൃക. ഡിഫോൾട്ട് കോസ്റ്റ് മോഡൽ മറ്റ് ഒപ്റ്റിമൈസേഷൻ ഫ്ലാഗുകളെ ആശ്രയിച്ചിരിക്കുന്നു
ഒന്നുകിൽ ചലനാത്മകം or കുറഞ്ഞത്.

-fsimd-cost-model=മാതൃക
ഓപ്പൺഎംപി അല്ലെങ്കിൽ സിൽക്ക് ഉപയോഗിച്ച് അടയാളപ്പെടുത്തിയ ലൂപ്പുകളുടെ വെക്‌ടറൈസേഷനായി ഉപയോഗിക്കുന്ന കോസ്റ്റ് മോഡൽ മാറ്റുക
പ്ലസ് simd നിർദ്ദേശം. ദി മാതൃക വാദം അതിലൊന്നായിരിക്കണം പരിമിതികളില്ലാത്ത, ചലനാത്മകം, കുറഞ്ഞത്.
എല്ലാ മൂല്യങ്ങളും മാതൃക എന്നതിൽ വിവരിച്ചിരിക്കുന്ന അതേ അർത്ഥമുണ്ട് -fvect-cost-model ഒപ്പം
ഡിഫോൾട്ട് ഒരു കോസ്റ്റ് മോഡൽ നിർവചിച്ചിരിക്കുന്നു -fvect-cost-model ഉപയോഗിക്കുന്നു.

-ftree-vrp
മരങ്ങളിൽ മൂല്യ ശ്രേണി പ്രചരണം നടത്തുക. ഇത് നിരന്തരമായ പ്രചരണത്തിന് സമാനമാണ്
കടന്നുപോകുക, എന്നാൽ മൂല്യങ്ങൾക്ക് പകരം, മൂല്യങ്ങളുടെ ശ്രേണികൾ പ്രചരിപ്പിക്കപ്പെടുന്നു. ഇത് അനുവദിക്കുന്നു
അറേ ബൗണ്ട് ചെക്കുകൾ, നൾ പോയിന്റർ തുടങ്ങിയ അനാവശ്യ റേഞ്ച് ചെക്കുകൾ നീക്കം ചെയ്യുന്നതിനുള്ള ഒപ്റ്റിമൈസറുകൾ
പരിശോധിക്കുന്നു. ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O2 ഉയർന്നതും. നൾ പോയിന്റർ ചെക്ക് എലിമിനേഷൻ
എങ്കിൽ മാത്രമേ ചെയ്യുകയുള്ളൂ -fdelete-null-pointer-checks പ്രാപ്തമാക്കി.

-fsplit-ivs-in-unroller
എന്നതിന്റെ പിന്നീടുള്ള ആവർത്തനങ്ങളിൽ ഇൻഡക്ഷൻ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ പ്രകടിപ്പിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുന്നു
ആദ്യ ആവർത്തനത്തിലെ മൂല്യം ഉപയോഗിച്ച് അൺറോൾഡ് ലൂപ്പ്. ഇത് ദീർഘകാല ആശ്രയത്വത്തെ തകർക്കുന്നു
ചെയിനുകൾ, അങ്ങനെ ഷെഡ്യൂളിംഗ് പാസുകളുടെ കാര്യക്ഷമത മെച്ചപ്പെടുത്തുന്നു.

ഒരു സംയോജനം -fweb കൂടാതെ സിഎസ്ഇയും ഇതേ ഫലം ലഭിക്കാൻ പര്യാപ്തമാണ്.
എന്നിരുന്നാലും, ലൂപ്പ് ബോഡി എയേക്കാൾ സങ്കീർണ്ണമായ സന്ദർഭങ്ങളിൽ അത് വിശ്വസനീയമല്ല
ഒരൊറ്റ അടിസ്ഥാന ബ്ലോക്ക്. കാരണം ചില ആർക്കിടെക്ചറുകളിൽ ഇത് പ്രവർത്തിക്കുന്നില്ല
CSE പാസിലെ നിയന്ത്രണങ്ങൾ.

ഈ ഒപ്റ്റിമൈസേഷൻ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

-fvariable-expansion-in-unroller
ഈ ഓപ്ഷൻ ഉപയോഗിച്ച്, കംപൈലർ ചില ലോക്കൽ വേരിയബിളുകളുടെ ഒന്നിലധികം പകർപ്പുകൾ സൃഷ്ടിക്കുന്നു
ഒരു ലൂപ്പ് അൺറോൾ ചെയ്യുന്നു, അത് മികച്ച കോഡിന് കാരണമാകും.

-fpartial-inlining
പ്രവർത്തനങ്ങളുടെ ഇൻലൈൻ ഭാഗങ്ങൾ. ഇൻലൈൻ ചെയ്യുമ്പോൾ മാത്രമേ ഈ ഓപ്ഷന് എന്തെങ്കിലും ഫലമുണ്ടാകൂ
വഴി ഓണാക്കി -ഫിൻലൈൻ-ഫംഗ്ഷനുകൾ or -ഫിൻലൈൻ-സ്മോൾ-ഫംഗ്ഷനുകൾ ഓപ്ഷനുകൾ.

തലത്തിൽ പ്രവർത്തനക്ഷമമാക്കി -O2.

-fpredictive-പൊതുവായ
പ്രെഡിക്റ്റീവ് കോമണിംഗ് ഒപ്റ്റിമൈസേഷൻ നടത്തുക, അതായത്, കണക്കുകൂട്ടലുകൾ വീണ്ടും ഉപയോഗിക്കുക (പ്രത്യേകിച്ച്
മെമ്മറി ലോഡുകളും സ്റ്റോറുകളും) ലൂപ്പുകളുടെ മുൻ ആവർത്തനങ്ങളിൽ നിർവഹിച്ചു.

ഈ ഓപ്‌ഷൻ ലെവലിൽ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O3.

-fprefetch-loop-arrays
ടാർഗെറ്റ് മെഷീൻ പിന്തുണയ്ക്കുന്നുവെങ്കിൽ, മെമ്മറി പ്രീഫെച്ച് ചെയ്യുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക
വലിയ അറേകൾ ആക്സസ് ചെയ്യുന്ന ലൂപ്പുകളുടെ പ്രകടനം മെച്ചപ്പെടുത്തുക.

ഈ ഓപ്ഷൻ മികച്ചതോ മോശമായതോ ആയ കോഡ് സൃഷ്ടിച്ചേക്കാം; ഫലങ്ങൾ വളരെയധികം ആശ്രയിച്ചിരിക്കുന്നു
സോഴ്സ് കോഡിനുള്ളിലെ ലൂപ്പുകളുടെ ഘടന.

തലത്തിൽ അപ്രാപ്തമാക്കി -ഓസ്.

-fno-peephole
-fno-peephole2
ഏതെങ്കിലും മെഷീൻ-നിർദ്ദിഷ്ട പീഫോൾ ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനരഹിതമാക്കുക. തമ്മിലുള്ള വ്യത്യാസം
-fno-peephole ഒപ്പം -fno-peephole2 കംപൈലറിൽ അവ എങ്ങനെ നടപ്പിലാക്കുന്നു എന്നതിലാണ്; ചിലത്
ലക്ഷ്യങ്ങൾ ഒന്ന് ഉപയോഗിക്കുന്നു, ചിലർ മറ്റൊന്ന് ഉപയോഗിക്കുന്നു, ചിലർ രണ്ടും ഉപയോഗിക്കുന്നു.

-fpeephole സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു. -fpeephole2 തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-fno-guess-branch-probability
ഹ്യൂറിസ്റ്റിക്സ് ഉപയോഗിച്ച് ബ്രാഞ്ച് സാധ്യതകൾ ഊഹിക്കരുത്.

ബ്രാഞ്ച് പ്രോബബിലിറ്റികൾ നൽകിയിട്ടില്ലെങ്കിൽ അവ ഊഹിക്കാൻ GCC ഹ്യൂറിസ്റ്റിക്സ് ഉപയോഗിക്കുന്നു
പ്രൊഫൈലിംഗ് ഫീഡ്ബാക്ക് (-fprofile-arcs). ഈ ഹ്യൂറിസ്റ്റിക്സ് നിയന്ത്രണ പ്രവാഹത്തെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്
ഗ്രാഫ്. ചില ബ്രാഞ്ച് പ്രോബബിലിറ്റികൾ "__builtin_expect" ആണ് വ്യക്തമാക്കിയതെങ്കിൽ, പിന്നെ
കൺട്രോൾ ഫ്ലോയുടെ ബാക്കി ഭാഗങ്ങളുടെ ബ്രാഞ്ച് സാധ്യതകൾ ഊഹിക്കാൻ ഹ്യൂറിസ്റ്റിക്സ് ഉപയോഗിക്കുന്നു
ഗ്രാഫ്, "__builtin_expect" വിവരങ്ങൾ കണക്കിലെടുക്കുന്നു. തമ്മിലുള്ള ഇടപെടലുകൾ
ഹ്യൂറിസ്റ്റിക്സ്, "__builtin_expect" എന്നിവ സങ്കീർണ്ണമായേക്കാം, ചില സന്ദർഭങ്ങളിൽ ഇത് ഉപയോഗപ്രദമാകും
"__builtin_expect" എന്നതിന്റെ ഇഫക്റ്റുകൾ എളുപ്പമാക്കുന്നതിന് ഹ്യൂറിസ്റ്റിക്സ് പ്രവർത്തനരഹിതമാക്കാൻ
മനസ്സിലാക്കുക.

സ്ഥിരസ്ഥിതി -fguess-branch-probability തലങ്ങളിൽ -O, -O2, -O3, -ഓസ്.

-ഫ്രെഒദെര്-ബ്ലോക്കുകൾ
എടുത്തവയുടെ എണ്ണം കുറയ്ക്കുന്നതിന് കംപൈൽ ചെയ്ത ഫംഗ്‌ഷനിലെ അടിസ്ഥാന ബ്ലോക്കുകൾ പുനഃക്രമീകരിക്കുക
ശാഖകൾ, കോഡ് പ്രദേശം മെച്ചപ്പെടുത്തുക.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3.

-freorder-blocks-and-partition
കംപൈൽ ചെയ്ത ഫംഗ്ഷനിലെ അടിസ്ഥാന ബ്ലോക്കുകൾ പുനഃക്രമീകരിക്കുന്നതിനു പുറമേ, കുറയ്ക്കുന്നതിന്
എടുത്ത ശാഖകളുടെ എണ്ണം, ചൂടുള്ളതും തണുത്തതുമായ അടിസ്ഥാന ബ്ലോക്കുകളെ പ്രത്യേക വിഭാഗങ്ങളായി പാർട്ടീഷനുകൾ
അസംബ്ലിയുടെയും .o ഫയലുകളുടെയും, പേജിംഗും കാഷെ പ്രാദേശിക പ്രകടനവും മെച്ചപ്പെടുത്താൻ.

ഒഴിവാക്കൽ കൈകാര്യം ചെയ്യലിന്റെ സാന്നിധ്യത്തിൽ ഈ ഒപ്റ്റിമൈസേഷൻ സ്വയമേവ ഓഫാകും,
ലിങ്കൺസ് വിഭാഗങ്ങൾക്കായി, ഉപയോക്തൃ നിർവചിച്ച സെക്ഷൻ ആട്രിബ്യൂട്ട് ഉള്ള ഫംഗ്‌ഷനുകൾക്കും ഏതെങ്കിലും ഒന്ന്
പേരുള്ള വിഭാഗങ്ങളെ പിന്തുണയ്ക്കാത്ത ആർക്കിടെക്ചർ.

ലെവലിൽ x86-ന് പ്രവർത്തനക്ഷമമാക്കി -O2, -O3.

-ഫ്രീഓർഡർ-ഫംഗ്ഷനുകൾ
കോഡ് ലോക്കാലിറ്റി മെച്ചപ്പെടുത്തുന്നതിനായി ഒബ്‌ജക്റ്റ് ഫയലിലെ പ്രവർത്തനങ്ങൾ പുനഃക്രമീകരിക്കുക. ഇതാണ്
ഏറ്റവും കൂടുതൽ തവണ എക്സിക്യൂട്ട് ചെയ്യുന്നതിനായി പ്രത്യേക ഉപവിഭാഗങ്ങൾ ".text.hot" ഉപയോഗിച്ച് നടപ്പിലാക്കുന്നു
ഫംഗ്‌ഷനുകളും ".text.unlikely" എന്നതും സാധ്യമായ എക്‌സിക്യൂട്ട് ചെയ്യാത്ത ഫംഗ്‌ഷനുകൾക്കായി. പുനഃക്രമീകരിക്കൽ നടത്തുന്നത്
ലിങ്കർ അതിനാൽ ഒബ്ജക്റ്റ് ഫയൽ ഫോർമാറ്റ് പേരുള്ള വിഭാഗങ്ങളെ പിന്തുണയ്ക്കുകയും ലിങ്കർ സ്ഥാപിക്കുകയും വേണം
അവരെ ന്യായമായ രീതിയിൽ.

ഈ ഓപ്ഷൻ ഫലപ്രദമാക്കാൻ പ്രൊഫൈൽ ഫീഡ്‌ബാക്കും ലഭ്യമായിരിക്കണം. കാണുക
-fprofile-arcs വിവരങ്ങൾക്ക്.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

- fstrict-aliasing
ഭാഷയ്ക്ക് ബാധകമായ ഏറ്റവും കർശനമായ അപരനാമ നിയമങ്ങൾ അനുമാനിക്കാൻ കംപൈലറെ അനുവദിക്കുക
സമാഹരിക്കുന്നു. C (ഒപ്പം C++), ഇത് തരം അടിസ്ഥാനമാക്കി ഒപ്റ്റിമൈസേഷനുകൾ സജീവമാക്കുന്നു
ഭാവങ്ങൾ. പ്രത്യേകിച്ചും, ഒരു തരത്തിലുള്ള ഒബ്ജക്റ്റ് ഒരിക്കലും വസിക്കുന്നില്ലെന്ന് അനുമാനിക്കപ്പെടുന്നു
തരങ്ങൾ ഏതാണ്ട് സമാനമല്ലെങ്കിൽ, മറ്റൊരു തരത്തിലുള്ള ഒബ്ജക്റ്റിന്റെ അതേ വിലാസം.
ഉദാഹരണത്തിന്, ഒരു "അൺ സൈൻ ചെയ്യാത്ത int" ഒരു "int" എന്ന അപരനാമത്തിൽ വിളിക്കാം, എന്നാൽ "void*" അല്ലെങ്കിൽ "ഇരട്ട" അല്ല. എ
പ്രതീക തരം മറ്റേതെങ്കിലും തരത്തിലുള്ള അപരനാമമാകാം.

ഇതുപോലുള്ള കോഡിന് പ്രത്യേക ശ്രദ്ധ നൽകുക:

യൂണിയൻ a_union {
int i;
ഇരട്ട ഡി;
};

int f() {
യൂണിയൻ എ_യൂണിയൻ ടി;
td = 3.0;
തിരികെ ti;
}

ഏറ്റവും പുതിയ യൂണിയൻ അംഗത്തിൽ നിന്ന് വായിക്കുന്ന രീതി
എന്നതിലേക്ക് എഴുതിയത് ("ടൈപ്പ്-പണിംഗ്" എന്ന് വിളിക്കപ്പെടുന്നു) സാധാരണമാണ്. കൂടെ പോലും - fstrict-aliasing, തരം-
യൂണിയൻ തരത്തിലൂടെ മെമ്മറി ആക്‌സസ് ചെയ്‌തിട്ടുണ്ടെങ്കിൽ, പണ്ണിംഗ് അനുവദനീയമാണ്. അതിനാൽ, ദി
മുകളിലുള്ള കോഡ് പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നു. എന്നിരുന്നാലും, ഈ കോഡ് പാടില്ല:

int f() {
യൂണിയൻ എ_യൂണിയൻ ടി;
int * ip;
td = 3.0;
ip = &t.i;
തിരികെ * ip;
}

അതുപോലെ, വിലാസം എടുത്ത്, തത്ഫലമായുണ്ടാകുന്ന പോയിന്റർ കാസ്റ്റുചെയ്യുന്നതിലൂടെയും ആക്സസ് ചെയ്യുക
കാസ്റ്റ് ഒരു യൂണിയൻ തരം ഉപയോഗിച്ചാലും, ഫലത്തെ നിരാകരിക്കുന്നത് നിർവചിക്കാത്ത സ്വഭാവമാണ്.
ഉദാ:

int f() {
ഇരട്ട d = 3.0;
മടങ്ങുക ((യൂണിയൻ a_union *) &d)->i;
}

ദി - fstrict-aliasing തലങ്ങളിൽ ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O2, -O3, -ഓസ്.

- fstrict-overflow
ഭാഷയെ ആശ്രയിച്ച്, കർശനമായ ഒപ്പിട്ട ഓവർഫ്ലോ നിയമങ്ങൾ അനുമാനിക്കാൻ കംപൈലറിനെ അനുവദിക്കുക
സമാഹരിക്കുന്നു. C (ഒപ്പം C++) എന്നതിന്, ഗണിതശാസ്ത്രം ചെയ്യുമ്പോൾ ഓവർഫ്ലോ എന്നാണ് ഇതിനർത്ഥം
ഒപ്പിട്ട സംഖ്യകൾ നിർവചിക്കപ്പെട്ടിട്ടില്ല, അതിനർത്ഥം കംപൈലർ അത് ഇല്ലെന്ന് അനുമാനിക്കാം എന്നാണ്
സംഭവിക്കുക. ഇത് വിവിധ ഒപ്റ്റിമൈസേഷനുകൾ അനുവദിക്കുന്നു. ഉദാഹരണത്തിന്, കംപൈലർ അത് അനുമാനിക്കുന്നു
"i + 10 > i" പോലെയുള്ള ഒരു പദപ്രയോഗം ഒപ്പിട്ട "i" എന്നതിന് എല്ലായ്പ്പോഴും ശരിയാണ്. ഈ അനുമാനം
"i + 10" ആണെങ്കിൽ എക്സ്പ്രഷൻ തെറ്റായതിനാൽ, ഒപ്പിട്ട ഓവർഫ്ലോ നിർവചിച്ചില്ലെങ്കിൽ മാത്രമേ സാധുതയുള്ളൂ
ടൂസ് കോംപ്ലിമെന്റ് അരിത്മെറ്റിക് ഉപയോഗിക്കുമ്പോൾ ഓവർഫ്ലോകൾ. ഈ ഓപ്ഷൻ പ്രാബല്യത്തിൽ വരുമ്പോൾ ഏതെങ്കിലും
ഒപ്പിട്ട നമ്പറുകളുടെ ഓവർഫ്ലോകളിൽ ഒരു ഓപ്പറേഷൻ എഴുതേണ്ടതുണ്ടോ എന്ന് നിർണ്ണയിക്കാൻ ശ്രമിക്കുക
യഥാർത്ഥത്തിൽ ഓവർഫ്ലോ ഉൾപ്പെടാതിരിക്കാൻ ശ്രദ്ധിക്കുക.

ഈ ഓപ്‌ഷൻ കംപൈലറിനെ കർശനമായ പോയിന്റർ സെമാന്റിക്‌സ് അനുമാനിക്കാൻ അനുവദിക്കുന്നു: നൽകിയിരിക്കുന്നു a
ഒരു ഒബ്‌ജക്‌റ്റിലേക്ക് പോയിന്റർ, ആ പോയിന്ററിലേക്ക് ഒരു ഓഫ്‌സെറ്റ് ചേർക്കുന്നത് ഒരു പോയിന്റർ ഉണ്ടാക്കുന്നില്ലെങ്കിൽ
ഒരേ വസ്തുവിലേക്ക്, കൂട്ടിച്ചേർക്കൽ നിർവചിക്കപ്പെട്ടിട്ടില്ല. ഇത് കംപൈലറിനെ അവസാനിപ്പിക്കാൻ അനുവദിക്കുന്നു
"p" എന്ന പോയിന്ററിനും ഒപ്പിടാത്ത "u" എന്ന പൂർണ്ണസംഖ്യയ്ക്കും "p + u > p" എല്ലായ്പ്പോഴും ശരിയാണ്. ഈ
പദപ്രയോഗം പോലെ പോയിന്റർ റാപ്പറൗണ്ട് നിർവചിക്കാത്തതിനാൽ അനുമാനം സാധുവാണ്
"p + u" രണ്ട് ഗണിത പൂരകങ്ങൾ ഉപയോഗിച്ച് കവിഞ്ഞൊഴുകുകയാണെങ്കിൽ തെറ്റ്.

ഇത് കാണുക -fwrapv ഓപ്ഷൻ. ഉപയോഗിക്കുന്നത് -fwrapv പൂർണ്ണസംഖ്യ ഒപ്പിട്ട ഓവർഫ്ലോ എന്നാണ് അർത്ഥമാക്കുന്നത്
പൂർണ്ണമായി നിർവ്വചിച്ചിരിക്കുന്നു: അത് പൊതിയുന്നു. എപ്പോൾ -fwrapv ഉപയോഗിക്കുന്നു, തമ്മിൽ വ്യത്യാസമില്ല
- fstrict-overflow ഒപ്പം -fno-strict-overflow പൂർണ്ണസംഖ്യകൾക്ക്. കൂടെ -fwrapv ചില തരം
ഓവർഫ്ലോ അനുവദനീയമാണ്. ഉദാഹരണത്തിന്, കംപൈലർ ചെയ്യുമ്പോൾ ഓവർഫ്ലോ ലഭിക്കുന്നുണ്ടെങ്കിൽ
സ്ഥിരാങ്കങ്ങളുടെ ഗണിതത്തിൽ, ഓവർഫ്ലോഡ് മൂല്യം ഇപ്പോഴും ഉപയോഗിക്കാനാകും -fwrapvപക്ഷേ, അല്ല
അല്ലെങ്കിൽ.

ദി - fstrict-overflow തലങ്ങളിൽ ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -O2, -O3, -ഓസ്.

-ഫാലിൻ-ഫംഗ്ഷനുകൾ
-falign-functions=n
ഫംഗ്‌ഷനുകളുടെ ആരംഭം അടുത്ത പവർ-ഓഫ്-ടു-ഇനേക്കാൾ വലുതായി വിന്യസിക്കുക n, വരെ ഒഴിവാക്കുന്നു n
ബൈറ്റുകൾ. ഉദാഹരണത്തിന്, -falign-functions=32 അടുത്ത 32-ബൈറ്റിലേക്ക് ഫംഗ്‌ഷനുകൾ വിന്യസിക്കുന്നു
അതിർത്തി, പക്ഷേ -falign-functions=24 ഇങ്ങനെയാണെങ്കിൽ മാത്രമേ അടുത്ത 32-ബൈറ്റ് അതിർത്തിയിലേക്ക് വിന്യസിക്കുക
23 ബൈറ്റുകളോ അതിൽ കുറവോ ഒഴിവാക്കിക്കൊണ്ട് ചെയ്യാൻ കഴിയും.

-fno-align-functions ഒപ്പം -falign-functions=1 തുല്യമായവയാണ്, പ്രവർത്തനങ്ങളെ അർത്ഥമാക്കുന്നു
വിന്യസിച്ചിട്ടില്ല.

ചില അസംബ്ലർമാർ ഈ പതാകയെ പിന്തുണയ്ക്കുമ്പോൾ മാത്രം n രണ്ടിന്റെ ശക്തിയാണ്; ആ സാഹചര്യത്തിൽ, അത്
വട്ടമിട്ടു.

If n വ്യക്തമാക്കിയിട്ടില്ല അല്ലെങ്കിൽ പൂജ്യമാണ്, ഒരു മെഷീൻ-ആശ്രിത ഡിഫോൾട്ട് ഉപയോഗിക്കുക.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3.

-ഫാലിൻ-ലേബലുകൾ
-falign-labels=n
എല്ലാ ബ്രാഞ്ച് ടാർഗെറ്റുകളും ഒരു പവർ ഓഫ് ടു ബൗണ്ടറിയിലേക്ക് വിന്യസിക്കുക n പോലുള്ള ബൈറ്റുകൾ
-ഫാലിൻ-ഫംഗ്ഷനുകൾ. ഈ ഓപ്‌ഷൻ എളുപ്പത്തിൽ കോഡ് മന്ദഗതിയിലാക്കാം, കാരണം അത് ഇൻസേർട്ട് ചെയ്യണം
കോഡിന്റെ സാധാരണ ഒഴുക്കിൽ ബ്രാഞ്ച് ലക്ഷ്യത്തിലെത്തുമ്പോൾ ഡമ്മി പ്രവർത്തനങ്ങൾ.

-fno-align-ലേബലുകൾ ഒപ്പം -falign-labels=1 തുല്യമാണ്, ലേബലുകൾ അല്ല എന്നാണ് അർത്ഥമാക്കുന്നത്
വിന്യസിച്ചു.

If -ഫാലിൻ-ലൂപ്പുകൾ or -ഫാലിൻ-ജമ്പ്സ് ബാധകവും ഈ മൂല്യത്തേക്കാൾ വലുതുമാണ്
പകരം അവയുടെ മൂല്യങ്ങൾ ഉപയോഗിക്കുന്നു.

If n വ്യക്തമാക്കിയിട്ടില്ല അല്ലെങ്കിൽ പൂജ്യമാണ്, വളരെ സാധ്യതയുള്ള ഒരു മെഷീൻ-ആശ്രിത ഡിഫോൾട്ട് ഉപയോഗിക്കുക
ആയിരിക്കാൻ 1, വിന്യാസമില്ല എന്നർത്ഥം.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3.

-ഫാലിൻ-ലൂപ്പുകൾ
-falign-loops=n
പവർ-ഓഫ്-ടു ബൗണ്ടറിയിലേക്ക് ലൂപ്പുകൾ വിന്യസിക്കുക n പോലുള്ള ബൈറ്റുകൾ -ഫാലിൻ-ഫംഗ്ഷനുകൾ.
ലൂപ്പുകൾ പലതവണ എക്സിക്യൂട്ട് ചെയ്യുകയാണെങ്കിൽ, ഇത് ഡമ്മിയുടെ ഏത് എക്സിക്യൂഷനും നികത്തുന്നു
പ്രവർത്തനങ്ങൾ.

-fno-align-loops ഒപ്പം -falign-loops=1 തുല്യമാണ് കൂടാതെ ലൂപ്പുകൾ അല്ല എന്നാണ് അർത്ഥമാക്കുന്നത്
വിന്യസിച്ചു.

If n വ്യക്തമാക്കിയിട്ടില്ല അല്ലെങ്കിൽ പൂജ്യമാണ്, ഒരു മെഷീൻ-ആശ്രിത ഡിഫോൾട്ട് ഉപയോഗിക്കുക.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3.

-ഫാലിൻ-ജമ്പ്സ്
-falign-jumps=n
ബ്രാഞ്ച് ടാർഗെറ്റുകൾ ടാർഗെറ്റുചെയ്യുന്ന ബ്രാഞ്ച് ടാർഗെറ്റുകൾക്കായി, രണ്ട് ബൗണ്ടറിയുടെ ശക്തിയിലേക്ക് വിന്യസിക്കുക
വരെ ചാടിയും കടന്ന് മാത്രമേ എത്തിച്ചേരാനാകൂ n പോലുള്ള ബൈറ്റുകൾ -ഫാലിൻ-ഫംഗ്ഷനുകൾ, ലെ
ഈ സാഹചര്യത്തിൽ, ഡമ്മി പ്രവർത്തനങ്ങളൊന്നും നടത്തേണ്ടതില്ല.

-fno-align-jumps ഒപ്പം -falign-jumps=1 തുല്യമാണ് കൂടാതെ ലൂപ്പുകൾ അല്ല എന്നാണ് അർത്ഥമാക്കുന്നത്
വിന്യസിച്ചു.

If n വ്യക്തമാക്കിയിട്ടില്ല അല്ലെങ്കിൽ പൂജ്യമാണ്, ഒരു മെഷീൻ-ആശ്രിത ഡിഫോൾട്ട് ഉപയോഗിക്കുക.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3.

ഒരു സമയത്ത് രസകരമായി
അനുയോജ്യത കാരണങ്ങളാൽ ഈ ഓപ്ഷൻ അവശേഷിക്കുന്നു. ഒരു സമയത്ത് രസകരമായി ഒരു ഫലവുമില്ല, അതേസമയം
-fno-unit-at-a-time ധ്വനിപ്പിക്കുന്നു -fno-toplevel-reorder ഒപ്പം -fno-section-anchors.

സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-fno-toplevel-reorder
ടോപ്പ്-ലെവൽ ഫംഗ്‌ഷനുകൾ, വേരിയബിളുകൾ, "asm" സ്റ്റേറ്റ്‌മെന്റുകൾ എന്നിവ പുനഃക്രമീകരിക്കരുത്. അവരെ ഔട്ട്പുട്ട് ചെയ്യുക
ഇൻപുട്ട് ഫയലിൽ അവ ദൃശ്യമാകുന്ന അതേ ക്രമം. ഈ ഓപ്ഷൻ ഉപയോഗിക്കുമ്പോൾ,
പരാമർശിക്കാത്ത സ്റ്റാറ്റിക് വേരിയബിളുകൾ നീക്കം ചെയ്യപ്പെടുന്നില്ല. ഈ ഓപ്ഷൻ പിന്തുണയ്ക്കാൻ ഉദ്ദേശിച്ചുള്ളതാണ്
ഒരു പ്രത്യേക ഓർഡറിംഗിനെ ആശ്രയിക്കുന്ന നിലവിലുള്ള കോഡ്. പുതിയ കോഡിനായി, ഉപയോഗിക്കുന്നതാണ് നല്ലത്
സാധ്യമാകുമ്പോൾ ആട്രിബ്യൂട്ടുകൾ.

തലത്തിൽ പ്രവർത്തനക്ഷമമാക്കി -O0. വ്യക്തമായി അപ്രാപ്തമാക്കുമ്പോൾ, അത് സൂചിപ്പിക്കുന്നു -fno-section-anchors,
അല്ലാത്തപക്ഷം പ്രവർത്തനക്ഷമമാക്കിയത് -O0 ചില ലക്ഷ്യങ്ങളിൽ.

-fweb
രജിസ്റ്റർ അലോക്കേഷൻ ആവശ്യങ്ങൾക്കായി സാധാരണയായി ഉപയോഗിക്കുന്ന വെബുകൾ നിർമ്മിക്കുകയും ഓരോ വെബിനും അസൈൻ ചെയ്യുകയും ചെയ്യുന്നു
വ്യക്തിഗത വ്യാജ രജിസ്റ്റർ. ഇത് രജിസ്റ്റർ അലോക്കേഷൻ പാസ് പ്രവർത്തിപ്പിക്കാൻ അനുവദിക്കുന്നു
കപടങ്ങൾ നേരിട്ട്, മാത്രമല്ല CSE പോലുള്ള മറ്റ് നിരവധി ഒപ്റ്റിമൈസേഷൻ പാസുകളെ ശക്തിപ്പെടുത്തുകയും ചെയ്യുന്നു,
ലൂപ്പ് ഒപ്റ്റിമൈസറും നിസ്സാരമായ ഡെഡ് കോഡ് റിമൂവറും. എന്നിരുന്നാലും, ഇതിന് ഡീബഗ്ഗിംഗ് നടത്താൻ കഴിയും
അസാധ്യമാണ്, കാരണം വേരിയബിളുകൾ ഒരു "ഹോം രജിസ്റ്ററിൽ" നിലനിൽക്കില്ല.

ഉപയോഗിച്ച് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -ഫൺറോൾ-ലൂപ്പുകൾ.

മുഴുവൻ-പ്രോഗ്രാം
നിലവിലെ കംപൈലേഷൻ യൂണിറ്റ് കംപൈൽ ചെയ്യുന്ന മുഴുവൻ പ്രോഗ്രാമിനെയും പ്രതിനിധീകരിക്കുന്നുവെന്ന് കരുതുക.
"പ്രധാന" ഒഴികെയുള്ള എല്ലാ പൊതു പ്രവർത്തനങ്ങളും വേരിയബിളുകളും ലയിപ്പിച്ചവയും
"externally_visible" എന്ന ആട്രിബ്യൂട്ട് സ്റ്റാറ്റിക് ഫംഗ്ഷനുകളായി മാറുകയും ഫലത്തിൽ ഒപ്റ്റിമൈസ് ചെയ്യുകയും ചെയ്യുന്നു
ഇന്റർപ്രൊസീജറൽ ഒപ്റ്റിമൈസറുകൾ വഴി കൂടുതൽ ആക്രമണാത്മകമായി.

ഈ ഓപ്ഷൻ സംയുക്തമായി ഉപയോഗിക്കരുത് -ഫ്ൾട്ടോ. പകരം ഒരു ലിങ്കറെ ആശ്രയിക്കുക
പ്ലഗിൻ സുരക്ഷിതവും കൂടുതൽ കൃത്യവുമായ വിവരങ്ങൾ നൽകണം.

-flto[=n]
ഈ ഓപ്ഷൻ സാധാരണ ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസർ പ്രവർത്തിപ്പിക്കുന്നു. സോഴ്സ് കോഡ് ഉപയോഗിച്ച് വിളിക്കുമ്പോൾ, അത്
GIMPLE (ജിസിസിയുടെ ആന്തരിക പ്രാതിനിധ്യങ്ങളിൽ ഒന്ന്) സൃഷ്ടിക്കുകയും അത് പ്രത്യേക ELF-ലേക്ക് എഴുതുകയും ചെയ്യുന്നു
ഒബ്ജക്റ്റ് ഫയലിലെ വിഭാഗങ്ങൾ. ഒബ്ജക്റ്റ് ഫയലുകൾ ഒരുമിച്ച് ലിങ്ക് ചെയ്യുമ്പോൾ, എല്ലാം
ഫംഗ്‌ഷൻ ബോഡികൾ ഈ ELF വിഭാഗങ്ങളിൽ നിന്ന് വായിക്കുകയും അവ ഉണ്ടായിരുന്നതുപോലെ തൽക്ഷണം നൽകുകയും ചെയ്യുന്നു
ഒരേ വിവർത്തന യൂണിറ്റിന്റെ ഭാഗം.

ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസർ ഉപയോഗിക്കുന്നതിന്, -ഫ്ൾട്ടോ കൂടാതെ ഒപ്റ്റിമൈസേഷൻ ഓപ്ഷനുകൾ വ്യക്തമാക്കണം
കംപൈൽ സമയവും അവസാന ലിങ്ക് സമയവും. ഉദാഹരണത്തിന്:

gcc -c -O2 -flto foo.c
gcc -c -O2 -flto bar.c
gcc -o myprog -flto -O2 foo.o bar.o

GCC-യിലേക്കുള്ള ആദ്യ രണ്ട് അഭ്യർത്ഥനകൾ GIMPLE-ന്റെ ഒരു ബൈറ്റ്കോഡ് പ്രാതിനിധ്യം പ്രത്യേകമായി സംരക്ഷിക്കുന്നു
ഉള്ളിൽ ELF വിഭാഗങ്ങൾ foo.o ഒപ്പം bar.o. അവസാന അഭ്യർത്ഥന GIMPLE ബൈറ്റ്കോഡ് വായിക്കുന്നു
നിന്ന് foo.o ഒപ്പം bar.o, രണ്ട് ഫയലുകളും ഒരു ഇന്റേണൽ ഇമേജിലേക്ക് ലയിപ്പിക്കുകയും കംപൈൽ ചെയ്യുകയും ചെയ്യുന്നു
ഫലം പതിവുപോലെ. രണ്ടും മുതൽ foo.o ഒപ്പം bar.o ഒരൊറ്റ ചിത്രത്തിലേക്ക് ലയിപ്പിച്ചിരിക്കുന്നു, ഇത്
ജിസിസിയിലെ എല്ലാ ഇന്റർപ്രൊസീജറൽ വിശകലനങ്ങളും ഒപ്റ്റിമൈസേഷനുകളും പ്രവർത്തിക്കുന്നതിന് കാരണമാകുന്നു
രണ്ട് ഫയലുകൾ ഒറ്റത്തവണ പോലെ. ഇതിനർത്ഥം, ഉദാഹരണത്തിന്, ഇൻലൈനർ എന്നാണ്
ഫംഗ്‌ഷനുകൾ ഇൻലൈൻ ചെയ്യാൻ കഴിയും bar.o പ്രവർത്തനങ്ങളിലേക്ക് foo.o തിരിച്ചും.

ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നതിനുള്ള മറ്റൊരു (ലളിതമായ) മാർഗ്ഗം ഇതാണ്:

gcc -o myprog -flto -O2 foo.c bar.c

മേൽപ്പറഞ്ഞവ ഇതിനായി ബൈറ്റ്കോഡ് സൃഷ്ടിക്കുന്നു foo.c ഒപ്പം bar.c, അവയെ ഒന്നായി ലയിപ്പിക്കുന്നു
GIMPLE പ്രാതിനിധ്യം, ഉൽപ്പാദിപ്പിക്കുന്നതിന് സാധാരണ പോലെ അവയെ ഒപ്റ്റിമൈസ് ചെയ്യുന്നു myprog.

നിങ്ങൾ ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനക്ഷമമാക്കുക എന്നതാണ് മനസ്സിൽ സൂക്ഷിക്കേണ്ട പ്രധാന കാര്യം
ലിങ്ക്-ഘട്ടം നടപ്പിലാക്കാൻ GCC ഡ്രൈവർ ഉപയോഗിക്കേണ്ടതുണ്ട്. ജിസിസി പിന്നീട് യാന്ത്രികമായി പ്രവർത്തിക്കുന്നു
ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷൻ -ഫ്ൾട്ടോ
കമാൻഡ്-ലൈൻ ഓപ്ഷൻ. ഉപയോഗിക്കേണ്ട ഒപ്റ്റിമൈസേഷൻ ഓപ്ഷനുകൾ നിങ്ങൾ സാധാരണയായി വ്യക്തമാക്കണം
ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷനായി ജിസിസി ഒരു ഒപ്റ്റിമൈസേഷൻ ഊഹിക്കാൻ ശ്രമിക്കുന്നു
ലിങ്കിൽ ഒരെണ്ണം വ്യക്തമാക്കുന്നതിൽ പരാജയപ്പെട്ടാൽ കംപൈൽ-ടൈമിൽ ഉപയോഗിക്കുന്ന ഓപ്ഷനുകളിൽ നിന്ന് ഉപയോഗിക്കാനുള്ള ലെവൽ-
സമയം. ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷൻ ചെയ്യാനുള്ള സ്വയമേവയുള്ള തീരുമാനം നിങ്ങൾക്ക് എപ്പോൾ വേണമെങ്കിലും അസാധുവാക്കാനാകും
കടന്നുപോകുന്നതിലൂടെ ലിങ്ക്-സമയം -fno-lto ലിങ്ക് കമാൻഡിലേക്ക്.

മുഴുവൻ പ്രോഗ്രാം ഒപ്റ്റിമൈസേഷൻ ഫലപ്രദമാക്കുന്നതിന്, ചിലത് മൊത്തത്തിൽ ആക്കേണ്ടത് ആവശ്യമാണ്
പ്രോഗ്രാം അനുമാനങ്ങൾ. ഫംഗ്ഷനുകളും വേരിയബിളുകളും എന്തായിരിക്കുമെന്ന് കംപൈലറിന് അറിയേണ്ടതുണ്ട്
ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസ് ചെയ്ത യൂണിറ്റിന് പുറത്തുള്ള ലൈബ്രറികളും റൺടൈമും വഴി ആക്‌സസ് ചെയ്‌തു. എപ്പോൾ
ലിങ്കർ, ലിങ്കർ പ്ലഗിൻ പിന്തുണയ്ക്കുന്നു (കാണുക -ഫ്യൂസ്-ലിങ്കർ-പ്ലഗിൻ) കടന്നുപോകുന്നു
ഉപയോഗിച്ചതും ബാഹ്യമായി കാണാവുന്നതുമായ ചിഹ്നങ്ങളെക്കുറിച്ചുള്ള വിവരങ്ങൾ കംപൈലറിന്. എപ്പോൾ
ലിങ്കർ പ്ലഗിൻ ലഭ്യമല്ല, മുഴുവൻ-പ്രോഗ്രാം കമ്പൈലർ അനുവദിക്കുന്നതിന് ഉപയോഗിക്കണം
ഈ അനുമാനങ്ങൾ ഉണ്ടാക്കാൻ, ഇത് കൂടുതൽ ആക്രമണാത്മക ഒപ്റ്റിമൈസേഷൻ തീരുമാനങ്ങളിലേക്ക് നയിക്കുന്നു.

എപ്പോൾ -ഫ്യൂസ്-ലിങ്കർ-പ്ലഗിൻ ഒരു ഫയൽ കംപൈൽ ചെയ്യുമ്പോൾ അത് പ്രവർത്തനക്ഷമമല്ല -ഫ്ൾട്ടോ,
ജനറേറ്റഡ് ഒബ്‌ജക്റ്റ് ഫയൽ ഒരു സാധാരണ ഒബ്‌ജക്റ്റ് ഫയലിനേക്കാൾ വലുതാണ്, കാരണം അതിൽ GIMPLE അടങ്ങിയിരിക്കുന്നു
ബൈറ്റ്കോഡുകളും സാധാരണ അന്തിമ കോഡും (കാണുക -ffat-lto-objects. ഇതിനർത്ഥം ആ വസ്തു എന്നാണ്
LTO വിവരങ്ങളുള്ള ഫയലുകൾ സാധാരണ ഒബ്ജക്റ്റ് ഫയലുകളായി ലിങ്ക് ചെയ്യാവുന്നതാണ്; എങ്കിൽ -fno-lto പാസ്സായി
ലിങ്കറിന്, ഇന്റർപ്രൊസീജറൽ ഒപ്റ്റിമൈസേഷനുകളൊന്നും ബാധകമല്ല. എപ്പോൾ എന്നത് ശ്രദ്ധിക്കുക
-fno-fat-lto-objects പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു കംപൈൽ-ഘട്ടം വേഗമേറിയതാണ്, പക്ഷേ നിങ്ങൾക്ക് ഒരു ചെയ്യാൻ കഴിയില്ല
അവയിൽ സാധാരണ, LTO ഇതര ലിങ്ക്.

കൂടാതെ, വ്യക്തിഗത ഫയലുകൾ കംപൈൽ ചെയ്യാൻ ഉപയോഗിക്കുന്ന ഒപ്റ്റിമൈസേഷൻ ഫ്ലാഗുകൾ അല്ല
ലിങ്ക് സമയത്ത് ഉപയോഗിച്ചവയുമായി അവശ്യമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. ഉദാഹരണത്തിന്,

gcc -c -O0 -ffat-lto-objects -flto foo.c
gcc -c -O0 -ffat-lto-objects -flto bar.c
gcc -o myprog -O3 foo.o bar.o

ഇത് ഒപ്റ്റിമൈസ് ചെയ്യാത്ത അസംബ്ലർ കോഡുള്ള വ്യക്തിഗത ഒബ്‌ജക്റ്റ് ഫയലുകൾ നിർമ്മിക്കുന്നു, പക്ഷേ
തത്ഫലമായുണ്ടാകുന്ന ബൈനറി myprog എന്നതിൽ ഒപ്റ്റിമൈസ് ചെയ്തിരിക്കുന്നു -O3. എങ്കിൽ, പകരം, അന്തിമ ബൈനറി ആണ്
ഉപയോഗിച്ച് സൃഷ്ടിച്ചത് -fno-ltoഎന്നിട്ട് myprog ഒപ്റ്റിമൈസ് ചെയ്തിട്ടില്ല.

അന്തിമ ബൈനറി നിർമ്മിക്കുമ്പോൾ, ജിസിസി ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷനുകൾ മാത്രമേ ബാധകമാക്കൂ
ബൈറ്റ്കോഡ് അടങ്ങുന്ന ഫയലുകൾ. അതിനാൽ, നിങ്ങൾക്ക് ഒബ്‌ജക്റ്റ് ഫയലുകൾ മിക്സ് ചെയ്യാനും പൊരുത്തപ്പെടുത്താനും കഴിയും
GIMPLE ബൈറ്റ്കോഡുകളും അവസാന ഒബ്ജക്റ്റ് കോഡുമുള്ള ലൈബ്രറികൾ. GCC സ്വയമേവ തിരഞ്ഞെടുക്കുന്നു
LTO മോഡിൽ ഏതൊക്കെ ഫയലുകളാണ് ഒപ്റ്റിമൈസ് ചെയ്യേണ്ടത്, കൂടാതെ ഏത് ഫയലുകളാണ് ലിങ്ക് ചെയ്യേണ്ടത്
പ്രോസസ്സ് ചെയ്യുന്നു.

ബൈറ്റ്കോഡുകൾ സൃഷ്ടിക്കുമ്പോൾ GCC സംരക്ഷിച്ചിരിക്കുന്ന ചില കോഡ് ജനറേഷൻ ഫ്ലാഗുകൾ ഉണ്ട്
അവസാന ലിങ്ക് ഘട്ടത്തിൽ അവ ഉപയോഗിക്കേണ്ടതുണ്ട്. സാധാരണയായി ഓപ്ഷനുകൾ വ്യക്തമാക്കിയിരിക്കുന്നു
കംപൈൽ-ടൈമിൽ വ്യക്തമാക്കിയിട്ടുള്ളവയെ ലിങ്ക്-ടൈം അസാധുവാക്കുക.

നിങ്ങൾ ഒരു ഒപ്റ്റിമൈസേഷൻ ലെവൽ ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ -O ലിങ്ക്-ടൈമിൽ ജിസിസി കണക്കുകൂട്ടുന്നു
ഒബ്‌ജക്റ്റ് ഫയലുകൾ കംപൈൽ ചെയ്യുമ്പോൾ ഉപയോഗിക്കുന്ന ഒപ്റ്റിമൈസേഷൻ ലെവലുകളെ അടിസ്ഥാനമാക്കിയുള്ള ഒന്ന്. ദി
ഉയർന്ന ഒപ്റ്റിമൈസേഷൻ ലെവൽ ഇവിടെ വിജയിക്കുന്നു.

നിലവിൽ, ഇനിപ്പറയുന്ന ഓപ്ഷനുകളും അവയുടെ ക്രമീകരണവും ആദ്യത്തെ ഒബ്‌ജക്റ്റ് ഫയലിൽ നിന്ന് എടുത്തതാണ്
അത് വ്യക്തമായി വ്യക്തമാക്കിയത്: -fPIC, -fpic, -fpie, -fcommon, - ഒഴിവാക്കലുകൾ,
-fnon-call-exceptions, -fgnu-tm എല്ലാം -m ലക്ഷ്യ പതാകകൾ.

ചില എബിഐ മാറ്റുന്ന ഫ്ലാഗുകൾ എല്ലാ കംപൈലേഷൻ-യൂണിറ്റുകളിലും പൊരുത്തപ്പെടുത്താനും ശ്രമിക്കേണ്ടതുണ്ട്
വൈരുദ്ധ്യമുള്ള മൂല്യമുള്ള ലിങ്ക്-ടൈമിൽ ഇത് അസാധുവാക്കുന്നത് അവഗണിക്കപ്പെടും. ഇതിൽ ഉൾപ്പെടുന്നു
പോലുള്ള ഓപ്ഷനുകൾ -ഫ്രെഗ്-സ്ട്രക്റ്റ്-റിട്ടേൺ ഒപ്പം -fpcc-struct-return.

പോലുള്ള മറ്റ് ഓപ്ഷനുകൾ -ffp-കരാർ, -fno-strict-overflow, -fwrapv, -fno-trapv or
-fno-strict-aliasing ലിങ്ക് ഘട്ടത്തിലേക്ക് കടന്നുപോകുകയും യാഥാസ്ഥിതികമായി ലയിപ്പിക്കുകയും ചെയ്യുന്നു
വൈരുദ്ധ്യമുള്ള വിവർത്തന യൂണിറ്റുകൾക്കായി. പ്രത്യേകം -fno-strict-overflow, -fwrapv ഒപ്പം
-fno-trapv മുൻതൂക്കം എടുക്കുക, ഉദാഹരണത്തിന് -ffp-contract=ഓഫ് മുൻഗണന നൽകുന്നു
-ffp-contract=വേഗത. ലിങ്ക്-ടൈമിൽ നിങ്ങൾക്ക് അവ അസാധുവാക്കാനാകും.

ഒരേ ലിങ്കിൽ പങ്കെടുക്കുന്ന എല്ലാ ഫയലുകളും കംപൈൽ ചെയ്യാൻ ശുപാർശ ചെയ്യുന്നു
സമാന ഓപ്ഷനുകൾ കൂടാതെ ലിങ്ക് സമയത്ത് ആ ഓപ്ഷനുകൾ വ്യക്തമാക്കുക.

സി ലിങ്കേജ് ഉള്ള ഒബ്‌ജക്റ്റുകൾ LTO നേരിടുകയാണെങ്കിൽ, പൊരുത്തമില്ലാത്ത തരങ്ങളുമായി പ്രത്യേകം പ്രഖ്യാപിച്ചു
വിവർത്തന യൂണിറ്റുകൾ ഒരുമിച്ച് ബന്ധിപ്പിക്കണം (ISO C99 അനുസരിച്ച് നിർവചിക്കപ്പെടാത്ത സ്വഭാവം
6.2.7), മാരകമല്ലാത്ത ഒരു ഡയഗ്നോസ്റ്റിക് നൽകാം. പ്രവർത്തന സമയത്ത് പെരുമാറ്റം ഇപ്പോഴും നിർവചിക്കപ്പെട്ടിട്ടില്ല
സമയം. മറ്റ് ഭാഷകൾക്കും സമാനമായ ഡയഗ്നോസ്റ്റിക്സ് ഉയർത്തിയേക്കാം.

LTO യുടെ മറ്റൊരു സവിശേഷത, ഇന്റർപ്രൊസീജറൽ ഒപ്റ്റിമൈസേഷനുകൾ പ്രയോഗിക്കാൻ സാധിക്കും എന്നതാണ്
വിവിധ ഭാഷകളിൽ എഴുതിയ ഫയലുകളിൽ:

gcc -c -flto foo.c
g++ -c -flto bar.cc
gfortran -c -flto baz.f90
g++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran

അവസാന ലിങ്ക് പൂർത്തിയാക്കിയത് ശ്രദ്ധിക്കുക g ++ C++ റൺടൈം ലൈബ്രറികൾ ലഭിക്കുന്നതിനും
-lgfortran ഫോർട്രാൻ റൺടൈം ലൈബ്രറികൾ ലഭിക്കാൻ ചേർത്തു. പൊതുവേ, മിശ്രണം ചെയ്യുമ്പോൾ
LTO മോഡിലുള്ള ഭാഷകൾ, നിങ്ങൾ മിക്സ് ചെയ്യുമ്പോൾ അതേ ലിങ്ക് കമാൻഡ് ഓപ്ഷനുകൾ ഉപയോഗിക്കണം
ഒരു സാധാരണ (LTO ഇതര) സമാഹാരത്തിലെ ഭാഷകൾ.

GIMPLE ബൈറ്റ്‌കോഡ് അടങ്ങിയ ഒബ്‌ജക്റ്റ് ഫയലുകൾ ഒരു ലൈബ്രറി ആർക്കൈവിൽ സംഭരിച്ചിട്ടുണ്ടെങ്കിൽ, പറയുക
libfoo.a, നിങ്ങൾ എ ഉപയോഗിക്കുകയാണെങ്കിൽ അവ ഒരു LTO ലിങ്കിൽ എക്‌സ്‌ട്രാക്‌റ്റ് ചെയ്‌ത് ഉപയോഗിക്കാനാകും
പ്ലഗിൻ പിന്തുണയുള്ള ലിങ്കർ. LTO-യ്ക്ക് അനുയോജ്യമായ സ്റ്റാറ്റിക് ലൈബ്രറികൾ സൃഷ്ടിക്കാൻ, ഉപയോഗിക്കുക gcc-ar
ഒപ്പം gcc-ranlib ഇതിനുപകരമായി ar ഒപ്പം ranlib; ഒബ്ജക്റ്റ് ഫയലുകളുടെ ചിഹ്നങ്ങൾ കാണിക്കാൻ
GIMPLE ബൈറ്റ്കോഡ്, ഉപയോഗിക്കുക gcc-nm. ആ കമാൻഡുകൾ അത് ആവശ്യപ്പെടുന്നു ar, ranlib ഒപ്പം nm ആയിരുന്നു
പ്ലഗിൻ പിന്തുണയോടെ സമാഹരിച്ചത്. ലിങ്ക് സമയത്ത്, ഫ്ലാഗ് ഉപയോഗിക്കുക -ഫ്യൂസ്-ലിങ്കർ-പ്ലഗിൻ ലേക്ക്
LTO ഒപ്റ്റിമൈസേഷൻ പ്രക്രിയയിൽ ലൈബ്രറി പങ്കെടുക്കുന്നുവെന്ന് ഉറപ്പാക്കുക:

gcc -o myprog -O2 -flto -fuse-linker-plugin ao bo -lfoo

ലിങ്കർ പ്ലഗിൻ പ്രവർത്തനക്ഷമമാക്കിയാൽ, ലിങ്കർ ആവശ്യമായ GIMPLE ഫയലുകൾ എക്‌സ്‌ട്രാക്‌റ്റുചെയ്യുന്നു
libfoo.a ഒപ്പം അവയെ സമാഹരിച്ചതിന്റെ ഭാഗമാക്കാൻ പ്രവർത്തിക്കുന്ന ജിസിസിക്ക് കൈമാറുകയും ചെയ്യുന്നു
ഒപ്റ്റിമൈസ് ചെയ്യേണ്ട GIMPLE ചിത്രം.

നിങ്ങൾ പ്ലഗിൻ പിന്തുണയുള്ള ഒരു ലിങ്കർ ഉപയോഗിക്കുന്നില്ലെങ്കിൽ കൂടാതെ/അല്ലെങ്കിൽ ലിങ്കർ പ്രവർത്തനക്ഷമമാക്കരുത്
പ്ലഗിൻ, പിന്നെ ഉള്ളിലുള്ള വസ്തുക്കൾ libfoo.a എക്‌സ്‌ട്രാക്‌റ്റുചെയ്‌ത് സാധാരണപോലെ ലിങ്കുചെയ്‌തവയാണ്, പക്ഷേ അവ
LTO ഒപ്റ്റിമൈസേഷൻ പ്രക്രിയയിൽ പങ്കെടുക്കരുത്. ഒരു സ്റ്റാറ്റിക് ലൈബ്രറി ഉണ്ടാക്കാൻ വേണ്ടി
LTO ഒപ്റ്റിമൈസേഷനും സാധാരണ ലിങ്കേജിനും അനുയോജ്യമാണ്, അതിന്റെ ഒബ്ജക്റ്റ് ഫയലുകൾ കംപൈൽ ചെയ്യുക
-ഫ്ൾട്ടോ -ffat-lto-objects.

ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തിക്കുന്നതിന് മുഴുവൻ പ്രോഗ്രാമിന്റെയും സാന്നിധ്യം ആവശ്യമില്ല.
കയറ്റുമതി ചെയ്യാൻ പ്രോഗ്രാമിന് ചിഹ്നങ്ങളൊന്നും ആവശ്യമില്ലെങ്കിൽ, സംയോജിപ്പിക്കാൻ സാധിക്കും
-ഫ്ൾട്ടോ ഒപ്പം മുഴുവൻ-പ്രോഗ്രാം ഇന്റർപ്രൊസീജറൽ ഒപ്റ്റിമൈസറുകൾ കൂടുതൽ ഉപയോഗിക്കാൻ അനുവദിക്കുന്നതിന്
മെച്ചപ്പെട്ട ഒപ്റ്റിമൈസേഷൻ അവസരങ്ങളിലേക്ക് നയിച്ചേക്കാവുന്ന ആക്രമണാത്മക അനുമാനങ്ങൾ. ഉപയോഗം
മുഴുവൻ-പ്രോഗ്രാം ലിങ്കർ പ്ലഗിൻ സജീവമാകുമ്പോൾ ആവശ്യമില്ല (കാണുക -ഫ്യൂസ്-ലിങ്കർ-പ്ലഗിൻ).

എൽടിഒയുടെ നിലവിലെ നടപ്പാക്കൽ ബൈറ്റ്കോഡ് സൃഷ്ടിക്കാൻ ശ്രമിക്കുന്നില്ല
വിവിധ തരം ഹോസ്റ്റുകൾക്കിടയിൽ പോർട്ടബിൾ. ബൈറ്റ്കോഡ് ഫയലുകൾ പതിപ്പും അവിടെയും ഉണ്ട്
ഒരു കർശനമായ പതിപ്പ് പരിശോധനയാണ്, അതിനാൽ GCC-യുടെ ഒരു പതിപ്പിൽ ജനറേറ്റ് ചെയ്യുന്ന ബൈറ്റ്കോഡ് ഫയലുകൾ അങ്ങനെ ചെയ്യില്ല
GCC-യുടെ പഴയതോ പുതിയതോ ആയ പതിപ്പിൽ പ്രവർത്തിക്കുക.

ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷൻ ഡീബഗ്ഗിംഗ് വിവരങ്ങളുടെ ജനറേഷൻ നന്നായി പ്രവർത്തിക്കുന്നില്ല.
സംയോജിപ്പിക്കുന്നു -ഫ്ൾട്ടോ കൂടെ -g നിലവിൽ പരീക്ഷണാടിസ്ഥാനത്തിലാണ്, അപ്രതീക്ഷിതമായി ഉൽപ്പാദിപ്പിക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു
ഫലങ്ങൾ.

നിങ്ങൾ ഓപ്ഷണൽ വ്യക്തമാക്കുകയാണെങ്കിൽ n, ഒപ്റ്റിമൈസേഷനും കോഡ് ജനറേഷനും ലിങ്ക് സമയത്ത് ചെയ്തു
ഉപയോഗിച്ച് സമാന്തരമായി നടപ്പിലാക്കുന്നു n ഇൻസ്റ്റാൾ ചെയ്തവ ഉപയോഗിച്ച് സമാന്തര ജോലികൾ ഉണ്ടാക്കുക പ്രോഗ്രാം.
പരിസ്ഥിതി വേരിയബിൾ വരുത്തിയേക്കാവുന്ന ഉപയോഗിച്ച പ്രോഗ്രാമിനെ അസാധുവാക്കാൻ ഉപയോഗിച്ചേക്കാം. സ്ഥിരസ്ഥിതി
എന്നതിനായുള്ള മൂല്യം n ആണ്.

നിങ്ങൾക്ക് വ്യക്തമാക്കാനും കഴിയും -flto=ജോബ്സർവർ നിർണ്ണയിക്കാൻ ഗ്നു മേക്കിന്റെ ജോബ് സെർവർ മോഡ് ഉപയോഗിക്കുന്നതിന്
സമാന്തര ജോലികളുടെ എണ്ണം. Makefile കോളിംഗ് GCC നിലവിൽ ഉള്ളപ്പോൾ ഇത് ഉപയോഗപ്രദമാണ്
സമാന്തരമായി നടപ്പിലാക്കുന്നു. നിങ്ങൾ a മുൻകൂർ ചെയ്യണം + മാതാപിതാക്കളിൽ കമാൻഡ് പാചകക്കുറിപ്പിലേക്ക്
ഇത് പ്രവർത്തിക്കുന്നതിന് Makefile ചെയ്യുക. എങ്കിൽ മാത്രമേ ഈ ഓപ്ഷൻ പ്രവർത്തിക്കൂ വരുത്തിയേക്കാവുന്ന GNU നിർമ്മിതമാണ്.

-flto-partition=alga ഇംഗ്ലീഷ്
ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസർ ഉപയോഗിക്കുന്ന പാർട്ടീഷനിംഗ് അൽഗോരിതം വ്യക്തമാക്കുക. മൂല്യം ആണ്
ഒന്നുകിൽ ക്സനുമ്ക്സതൊക്സനുമ്ക്സ യഥാർത്ഥ സോഴ്സ് ഫയലുകളെ മിറർ ചെയ്യുന്ന ഒരു പാർട്ടീഷനിംഗ് വ്യക്തമാക്കുന്നതിന് അല്ലെങ്കിൽ സമീകൃത
തുല്യ വലിപ്പത്തിലുള്ള കഷ്ണങ്ങളാക്കി വിഭജനം വ്യക്തമാക്കുന്നതിന് (സാധ്യമായപ്പോഴെല്ലാം) അല്ലെങ്കിൽ പരമാവധി സൃഷ്ടിക്കാൻ
സാധ്യമായ എല്ലാ ചിഹ്നങ്ങൾക്കും പുതിയ പാർട്ടീഷൻ. വ്യക്തമാക്കുന്നത് ആരും ഒരു അൽഗോരിതം ആയി
പാർട്ടീഷനിംഗും സ്ട്രീമിംഗും പൂർണ്ണമായും പ്രവർത്തനരഹിതമാക്കുന്നു. സ്ഥിര മൂല്യം ആണ് സമീകൃത. സമയത്ത്
ക്സനുമ്ക്സതൊക്സനുമ്ക്സ വിവിധ കോഡ് ക്രമപ്പെടുത്തൽ പ്രശ്നങ്ങൾക്കുള്ള പരിഹാരമായി ഉപയോഗിക്കാം പരമാവധി
പാർട്ടീഷനിംഗ് ആന്തരിക പരിശോധനയ്ക്ക് വേണ്ടിയുള്ളതാണ്. മൂല്യം ഒന്ന് എന്ന് വ്യക്തമാക്കുന്നു
മൂല്യമുള്ളപ്പോൾ കൃത്യമായി ഒരു പാർട്ടീഷൻ ഉപയോഗിക്കണം ആരും പാർട്ടീഷനിംഗ് കൂടാതെ
WPA ഘട്ടത്തിൽ നിന്ന് നേരിട്ട് ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷൻ ഘട്ടം നടപ്പിലാക്കുന്നു.

-flto-odr-type-merging
C++ തരങ്ങളുടെ മംഗൾഡ് തരം പേരുകളുടെ സ്ട്രീമിംഗും അവയുടെ ഏകീകരണവും പ്രവർത്തനക്ഷമമാക്കുക
ലിങ്ക്ടൈം. ഇത് LTO ഒബ്‌ജക്റ്റ് ഫയലുകളുടെ വലുപ്പം വർദ്ധിപ്പിക്കുന്നു, എന്നാൽ ഒന്നിനെക്കുറിച്ചുള്ള ഡയഗ്നോസ്റ്റിക്സ് പ്രവർത്തനക്ഷമമാക്കുന്നു
നിർവ്വചനം നിയമ ലംഘനങ്ങൾ.

-flto-compression-level=n
ഈ ഓപ്‌ഷൻ ഇന്റർമീഡിയറ്റ് ഭാഷയിൽ ഉപയോഗിക്കുന്ന കംപ്രഷൻ ലെവൽ വ്യക്തമാക്കുന്നു
LTO ഒബ്‌ജക്റ്റ് ഫയലുകളിലേക്ക്, കൂടാതെ LTO മോഡുമായി സംയോജിച്ച് മാത്രമേ അർത്ഥമുള്ളൂ (-ഫ്ൾട്ടോ).
സാധുവായ മൂല്യങ്ങൾ 0 (കംപ്രഷൻ ഇല്ല) മുതൽ 9 വരെ (പരമാവധി കംപ്രഷൻ) ആണ്. ഇതിന് പുറത്തുള്ള മൂല്യങ്ങൾ
ശ്രേണി 0 അല്ലെങ്കിൽ 9 ആയി ഘടിപ്പിച്ചിരിക്കുന്നു. ഓപ്ഷൻ നൽകിയിട്ടില്ലെങ്കിൽ, ഒരു ഡിഫോൾട്ട് ബാലൻസ്ഡ്
കംപ്രഷൻ ക്രമീകരണം ഉപയോഗിക്കുന്നു.

-flto-റിപ്പോർട്ട്
ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസറിന്റെ പ്രവർത്തനത്തെക്കുറിച്ചുള്ള ആന്തരിക വിശദാംശങ്ങളുള്ള ഒരു റിപ്പോർട്ട് പ്രിന്റ് ചെയ്യുന്നു. ദി
ഈ റിപ്പോർട്ടിന്റെ ഉള്ളടക്കങ്ങൾ ഓരോ പതിപ്പിനും വ്യത്യസ്തമാണ്. ഇത് ജിസിസിക്ക് ഉപകാരപ്രദമാണ്
LTO മോഡിൽ ഒബ്‌ജക്റ്റ് ഫയലുകൾ പ്രോസസ്സ് ചെയ്യുമ്പോൾ ഡവലപ്പർമാർ (വഴി -ഫ്ൾട്ടോ).

സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കി.

-flto-report-wpa
പോലെ -flto-റിപ്പോർട്ട്, എന്നാൽ ലിങ്ക് ടൈം ഒപ്റ്റിമൈസേഷന്റെ WPA ഘട്ടത്തിനായി മാത്രം പ്രിന്റ് ചെയ്യുക.

-ഫ്യൂസ്-ലിങ്കർ-പ്ലഗിൻ
ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷൻ സമയത്ത് ഒരു ലിങ്കർ പ്ലഗിൻ ഉപയോഗിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുന്നു. ഈ ഓപ്ഷൻ ആശ്രയിക്കുന്നു
ലിങ്കറിലെ പ്ലഗിൻ പിന്തുണയിൽ, അത് സ്വർണ്ണത്തിലോ GNU ld 2.21-ലോ ലഭ്യമാണ് അല്ലെങ്കിൽ
പുതിയത്.

ലൈബ്രറിയിൽ നിന്ന് GIMPLE ബൈറ്റ്കോഡ് ഉപയോഗിച്ച് ഒബ്‌ജക്റ്റ് ഫയലുകൾ എക്‌സ്‌ട്രാക്‌റ്റുചെയ്യുന്നത് ഈ ഓപ്‌ഷൻ പ്രാപ്‌തമാക്കുന്നു
ആർക്കൈവുകൾ. ലിങ്കിലേക്ക് കൂടുതൽ കോഡ് തുറന്നുകാട്ടുന്നതിലൂടെ ഇത് ഒപ്റ്റിമൈസേഷന്റെ ഗുണനിലവാരം മെച്ചപ്പെടുത്തുന്നു-
സമയം ഒപ്റ്റിമൈസർ. ഏതൊക്കെ ചിഹ്നങ്ങൾ ബാഹ്യമായി ആക്‌സസ് ചെയ്യാൻ കഴിയുമെന്ന് ഈ വിവരങ്ങൾ വ്യക്തമാക്കുന്നു
(നോൺ-എൽടിഒ ഒബ്ജക്റ്റ് വഴി അല്ലെങ്കിൽ ഡൈനാമിക് ലിങ്കിംഗ് സമയത്ത്). തൽഫലമായി, കോഡ് ഗുണനിലവാരം മെച്ചപ്പെടുത്തുന്നു
ബൈനറികളും (ഒപ്പം മറഞ്ഞിരിക്കുന്ന ദൃശ്യപരത ഉപയോഗിക്കുന്ന പങ്കിട്ട ലൈബ്രറികളും) സമാനമാണ്
മുഴുവൻ-പ്രോഗ്രാം. കാണുക -ഫ്ൾട്ടോ ഈ പതാകയുടെ ഫലത്തെക്കുറിച്ചുള്ള വിവരണത്തിനും എങ്ങനെ ചെയ്യണം
ഉപയോഗികുക.

GCC-യിൽ LTO പിന്തുണ പ്രവർത്തനക്ഷമമാക്കുകയും GCC ആയിരിക്കുകയും ചെയ്യുമ്പോൾ ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാകും
ഒരു ലിങ്കർ പിന്തുണയ്ക്കുന്ന പ്ലഗിനുകൾ (GNU ld 2.21 അല്ലെങ്കിൽ പുതിയതോ സ്വർണ്ണമോ) ഉപയോഗിക്കുന്നതിനായി ക്രമീകരിച്ചിരിക്കുന്നു.

-ffat-lto-objects
Fat LTO ഒബ്‌ജക്‌റ്റുകൾ ഇന്റർമീഡിയറ്റ് ലാംഗ്വേജും ദിയും അടങ്ങുന്ന ഒബ്‌ജക്റ്റ് ഫയലുകളാണ്
ഒബ്ജക്റ്റ് കോഡ്. ഇത് LTO ലിങ്കിംഗിനും സാധാരണ ലിങ്കിംഗിനും ഉപയോഗപ്രദമാക്കുന്നു. ഈ
ഉപയോഗിച്ച് കംപൈൽ ചെയ്യുമ്പോൾ മാത്രമേ ഓപ്ഷൻ ഫലപ്രദമാകൂ -ഫ്ൾട്ടോ ലിങ്ക് സമയത്ത് അവഗണിക്കപ്പെടുകയും ചെയ്യുന്നു.

-fno-fat-lto-objects പ്ലെയിൻ LTO-യെക്കാൾ സമാഹാര സമയം മെച്ചപ്പെടുത്തുന്നു, എന്നാൽ ഇത് ആവശ്യമാണ്
എൽടിഒയെ കുറിച്ച് അറിഞ്ഞിരിക്കാനുള്ള പൂർണ്ണ ടൂൾചെയിൻ. ഇതിന് ലിങ്കർ പ്ലഗിൻ പിന്തുണയുള്ള ഒരു ലിങ്കർ ആവശ്യമാണ്
അടിസ്ഥാന പ്രവർത്തനത്തിന്. കൂടാതെ, nm, ar ഒപ്പം ranlib ലിങ്കറിനെ പിന്തുണയ്ക്കേണ്ടതുണ്ട്
ഒരു പൂർണ്ണ ഫീച്ചർ ബിൽഡ് എൻവയോൺമെന്റ് അനുവദിക്കുന്നതിനുള്ള പ്ലഗിനുകൾ (സ്റ്റാറ്റിക് നിർമ്മിക്കാൻ പ്രാപ്തമാണ്
ലൈബ്രറികൾ മുതലായവ). ജിസിസി നൽകുന്നു gcc-ar, gcc-nm, gcc-ranlib കടന്നുപോകാനുള്ള റാപ്പറുകൾ
ഈ ഉപകരണങ്ങൾക്കുള്ള ശരിയായ ഓപ്ഷനുകൾ. കൊഴുപ്പില്ലാത്ത LTO മേക്ക് ഫയലുകൾ ഉപയോഗിക്കുന്നതിന് പരിഷ്‌ക്കരിക്കേണ്ടതുണ്ട്
അവരെ.

സ്ഥിരസ്ഥിതി -fno-fat-lto-objects ലിങ്കർ പ്ലഗിൻ പിന്തുണയുള്ള ടാർഗെറ്റുകളിൽ.

-fcompare-elim
രജിസ്റ്റർ അലോക്കേഷനും പോസ്റ്റ്-രജിസ്റ്റർ അലോക്കേഷൻ നിർദ്ദേശങ്ങളും വിഭജിക്കുന്നതിന് ശേഷം, തിരിച്ചറിയുക
ഒരു താരതമ്യ പ്രവർത്തനത്തിന് സമാനമായ പ്രോസസർ ഫ്ലാഗുകൾ കണക്കാക്കുന്ന ഗണിത നിർദ്ദേശങ്ങൾ
ആ ഗണിതത്തെ അടിസ്ഥാനമാക്കി. സാധ്യമെങ്കിൽ, വ്യക്തമായ താരതമ്യ പ്രവർത്തനം ഒഴിവാക്കുക.

വ്യക്തമായി പ്രതിനിധീകരിക്കാൻ കഴിയാത്ത ചില ലക്ഷ്യങ്ങൾക്ക് മാത്രമേ ഈ പാസ് ബാധകമാകൂ
രജിസ്റ്റർ അലോക്കേഷൻ പൂർത്തിയാകുന്നതിന് മുമ്പുള്ള താരതമ്യ പ്രവർത്തനം.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O, -O2, -O3, -ഓസ്.

-fcprop-രജിസ്റ്ററുകൾ
രജിസ്റ്റർ അലോക്കേഷനും പോസ്റ്റ്-രജിസ്റ്റർ അലോക്കേഷൻ നിർദ്ദേശങ്ങൾ വിഭജിച്ചും ശേഷം, പ്രകടനം
ഷെഡ്യൂളിംഗ് ഡിപൻഡൻസികൾ കുറയ്ക്കാനും ഇടയ്ക്കിടെ ശ്രമിക്കാനും ഒരു പകർപ്പ്-പ്രചരണ പാസ്
പകർപ്പ് ഇല്ലാതാക്കുക.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O, -O2, -O3, -ഓസ്.

-fprofile-തിരുത്തൽ
മൾട്ടി-ത്രെഡഡ് പ്രോഗ്രാമുകൾക്കായി ഇൻസ്ട്രുമെന്റഡ് ബൈനറി ഉപയോഗിച്ച് ശേഖരിച്ച പ്രൊഫൈലുകൾ ആയിരിക്കാം
കൗണ്ടർ അപ്‌ഡേറ്റുകൾ നഷ്‌ടമായതിനാൽ പൊരുത്തമില്ല. ഈ ഓപ്ഷൻ വ്യക്തമാക്കുമ്പോൾ, GCC ഉപയോഗിക്കുന്നു
അത്തരം പൊരുത്തക്കേടുകൾ ശരിയാക്കാനോ സുഗമമാക്കാനോ ഹ്യൂറിസ്റ്റിക്സ്. സ്ഥിരസ്ഥിതിയായി, GCC ഒരു പുറപ്പെടുവിക്കുന്നു
സ്ഥിരതയില്ലാത്ത പ്രൊഫൈൽ കണ്ടെത്തുമ്പോൾ പിശക് സന്ദേശം.

-fprofile-dir=പാത
പ്രൊഫൈൽ ഡാറ്റ ഫയലുകൾക്കായി തിരയാൻ ഡയറക്ടറി സജ്ജമാക്കുക പാത. ഈ ഓപ്ഷൻ
സൃഷ്ടിച്ച പ്രൊഫൈൽ ഡാറ്റയെ മാത്രമേ ബാധിക്കുകയുള്ളൂ -fprofile-ജനറേറ്റ്, -ftest-കവറേജ്,
-fprofile-arcs ഉപയോഗിച്ചതും -fprofile-ഉപയോഗം ഒപ്പം -fbranch-സാധ്യതകൾ അതുമായി ബന്ധപ്പെട്ടതും
ഓപ്ഷനുകൾ. കേവലവും ആപേക്ഷികവുമായ പാതകൾ ഉപയോഗിക്കാം. സ്ഥിരസ്ഥിതിയായി, GCC ഉപയോഗിക്കുന്നു
നിലവിലെ ഡയറക്‌ടറി പാത, അങ്ങനെ പ്രൊഫൈൽ ഡാറ്റ ഫയൽ അതേ ഡയറക്ടറിയിൽ ദൃശ്യമാകുന്നു
ഒബ്ജക്റ്റ് ഫയൽ.

-fprofile-ജനറേറ്റ്
-fprofile-genrate=പാത
പ്രൊഫൈൽ ഉപയോഗപ്രദമാക്കുന്നതിന് ഇൻസ്ട്രുമെന്റിംഗ് ആപ്ലിക്കേഷനായി സാധാരണയായി ഉപയോഗിക്കുന്ന ഓപ്ഷനുകൾ പ്രവർത്തനക്ഷമമാക്കുക
പ്രൊഫൈൽ ഫീഡ്‌ബാക്ക് അടിസ്ഥാനമാക്കിയുള്ള ഒപ്റ്റിമൈസേഷൻ ഉപയോഗിച്ച് പിന്നീടുള്ള പുനഃസംയോജനത്തിനായി. നിങ്ങൾ ഉപയോഗിക്കണം
-fprofile-ജനറേറ്റ് കംപൈൽ ചെയ്യുമ്പോഴും നിങ്ങളുടെ പ്രോഗ്രാം ലിങ്ക് ചെയ്യുമ്പോഴും.

ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ പ്രവർത്തനക്ഷമമാക്കി: -fprofile-arcs, -fprofile-മൂല്യങ്ങൾ, -fvpt.

If പാത വ്യക്തമാക്കിയിരിക്കുന്നു, GCC നോക്കുന്നു പാത പ്രൊഫൈൽ ഫീഡ്ബാക്ക് ഡാറ്റ ഫയലുകൾ കണ്ടെത്താൻ.
കാണുക -fprofile-dir.

-fprofile-ഉപയോഗം
-fprofile-use=പാത
പ്രൊഫൈൽ ഫീഡ്ബാക്ക്-ഡയറക്ടഡ് ഒപ്റ്റിമൈസേഷനുകളും ഇനിപ്പറയുന്ന ഒപ്റ്റിമൈസേഷനുകളും പ്രവർത്തനക്ഷമമാക്കുക
ലഭ്യമായ പ്രൊഫൈൽ ഫീഡ്‌ബാക്ക് ഉപയോഗിച്ച് മാത്രമേ പൊതുവെ ലാഭകരമാകൂ: -fbranch-സാധ്യതകൾ,
-fvpt, -ഫൺറോൾ-ലൂപ്പുകൾ, -fpeel-ലൂപ്പുകൾ, -ഫ്ട്രാസർ, -ftree-vectorize, ഒപ്പം ftree-ലൂപ്പ്-
വിതരണം-പാറ്റേണുകൾ.

ഡിഫോൾട്ടായി, ഫീഡ്‌ബാക്ക് പ്രൊഫൈലുകൾ പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ GCC ഒരു പിശക് സന്ദേശം പുറപ്പെടുവിക്കുന്നു
സോഴ്സ് കോഡ്. ഉപയോഗിച്ച് ഈ പിശക് ഒരു മുന്നറിയിപ്പായി മാറ്റാം -കവറേജ്-പൊരുത്തക്കേട്.
ഇത് മോശമായി ഒപ്റ്റിമൈസ് ചെയ്ത കോഡിന് കാരണമായേക്കാമെന്ന് ശ്രദ്ധിക്കുക.

If പാത വ്യക്തമാക്കിയിരിക്കുന്നു, GCC നോക്കുന്നു പാത പ്രൊഫൈൽ ഫീഡ്ബാക്ക് ഡാറ്റ ഫയലുകൾ കണ്ടെത്താൻ.
കാണുക -fprofile-dir.

-fauto-profile
-fauto-profile=പാത
സാമ്പിൾ അടിസ്ഥാനമാക്കിയുള്ള ഫീഡ്ബാക്ക്-ഡയറക്ട്ഡ് ഒപ്റ്റിമൈസേഷനുകളും ഇനിപ്പറയുന്ന ഒപ്റ്റിമൈസേഷനുകളും പ്രവർത്തനക്ഷമമാക്കുക
ലഭ്യമായ പ്രൊഫൈൽ ഫീഡ്‌ബാക്ക് ഉപയോഗിച്ച് മാത്രം ലാഭകരമായവ:
-fbranch-സാധ്യതകൾ, -fvpt, -ഫൺറോൾ-ലൂപ്പുകൾ, -fpeel-ലൂപ്പുകൾ, -ഫ്ട്രാസർ,
-ftree-vectorize, -ഫിൻലൈൻ-ഫംഗ്ഷനുകൾ, -fipa-cp, -fipa-cp-clone,
-fpredictive-പൊതുവായ, -ഫൺസ്വിച്ച്-ലൂപ്പുകൾ, -fgcse-ആഫ്റ്റർ-റീലോഡ്, ഒപ്പം
-ftree-loop-distribute-patterns.

പാത AutoFDO പ്രൊഫൈൽ വിവരങ്ങൾ അടങ്ങിയ ഒരു ഫയലിന്റെ പേരാണ്. ഒഴിവാക്കിയാൽ, അത്
സ്ഥിരസ്ഥിതിയായി fbdata.afdo നിലവിലെ ഡയറക്ടറിയിൽ.

ഒരു AutoFDO പ്രൊഫൈൽ ഡാറ്റ ഫയൽ നിർമ്മിക്കുന്നതിന് നിങ്ങളുടെ പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കേണ്ടതുണ്ട് perf
പിന്തുണയ്ക്കുന്ന ഗ്നു/ലിനക്സ് ടാർഗെറ്റ് സിസ്റ്റത്തിലെ യൂട്ടിലിറ്റി. കൂടുതൽ വിവരങ്ങൾക്ക്, കാണുക
<https://perf.wiki.kernel.org/>.

ഉദാ

perf റെക്കോർഡ് -e br_inst_retired:near_taken -b -o perf.data \
-- your_program

തുടർന്ന് ഉപയോഗിക്കുക create_gcov റോ പ്രൊഫൈൽ ഡാറ്റയെ ഒരു ഫോർമാറ്റിലേക്ക് പരിവർത്തനം ചെയ്യുന്നതിനുള്ള ഉപകരണം
GCC ഉപയോഗിക്കുന്നു. ഇതിലേക്ക് നിങ്ങളുടെ പ്രോഗ്രാമിനുള്ള അൺസ്ട്രിപ്പ്ഡ് ബൈനറിയും നിങ്ങൾ നൽകണം
ഉപകരണം. കാണുകhttps://github.com/google/autofdo>.

ഉദാ

create_gcov --binary=your_program.unstripped --profile=perf.data \
--gcov=profile.afdo

ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ ഫ്ലോട്ടിംഗ് പോയിന്റ് ഗണിതവുമായി ബന്ധപ്പെട്ട കംപൈലർ സ്വഭാവത്തെ നിയന്ത്രിക്കുന്നു.
ഈ ഓപ്ഷനുകൾ വേഗതയ്ക്കും കൃത്യതയ്ക്കും ഇടയിൽ ട്രേഡ് ഓഫ് ചെയ്യുന്നു. എല്ലാം പ്രത്യേകം പ്രവർത്തനക്ഷമമാക്കിയിരിക്കണം.

-ഫ്ലോട്ട്-സ്റ്റോർ
ഫ്ലോട്ടിംഗ് പോയിന്റ് വേരിയബിളുകൾ രജിസ്റ്ററിൽ സൂക്ഷിക്കരുത്, മറ്റ് ഓപ്ഷനുകൾ തടയുക
ഒരു രജിസ്റ്ററിൽ നിന്നോ മെമ്മറിയിൽ നിന്നോ ഒരു ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യം എടുത്തിട്ടുണ്ടോ എന്നത് മാറിയേക്കാം.

ഈ ഓപ്ഷൻ 68000 എവിടെ പോലുള്ള മെഷീനുകളിൽ അനാവശ്യമായ അധിക കൃത്യത തടയുന്നു
ഫ്ലോട്ടിംഗ് രജിസ്റ്ററുകൾ (68881 ന്റെ) "ഇരട്ട" എന്ന് കരുതുന്നതിനേക്കാൾ കൂടുതൽ കൃത്യത നിലനിർത്തുന്നു
ഉണ്ടായിരിക്കണം. അതുപോലെ x86 ആർക്കിടെക്ചറിനും. മിക്ക പ്രോഗ്രാമുകൾക്കും, അധിക കൃത്യത
നല്ലത് മാത്രമേ ചെയ്യുന്നുള്ളൂ, എന്നാൽ ചില പ്രോഗ്രാമുകൾ IEEE ഫ്ലോട്ടിംഗിന്റെ കൃത്യമായ നിർവചനത്തെ ആശ്രയിച്ചിരിക്കുന്നു
പോയിന്റ്. ഉപയോഗിക്കുക -ഫ്ലോട്ട്-സ്റ്റോർ അത്തരം പ്രോഗ്രാമുകൾക്കായി, എല്ലാം സംഭരിക്കാൻ അവ പരിഷ്കരിച്ചതിന് ശേഷം
വേരിയബിളുകളിലേക്കുള്ള പ്രസക്തമായ ഇന്റർമീഡിയറ്റ് കണക്കുകൂട്ടലുകൾ.

-fexcess-precision=ശൈലി
ഫ്ലോട്ടിംഗ് മെഷീനുകളിൽ അധിക കൃത്യതയിൽ കൂടുതൽ നിയന്ത്രണം ഈ ഓപ്ഷൻ അനുവദിക്കുന്നു-
പോയിന്റ് രജിസ്റ്ററുകൾക്ക് ഐഇഇഇ "ഫ്ലോട്ട്", "ഡബിൾ" തരങ്ങളേക്കാൾ കൂടുതൽ കൃത്യതയുണ്ട്
അത്തരം തരങ്ങളിലേക്കുള്ള റൗണ്ടിംഗ് പ്രവർത്തനങ്ങളെ പ്രോസസർ പിന്തുണയ്ക്കുന്നില്ല. സ്വതവേ,
-fexcess-precision=വേഗത പ്രാബല്യത്തിൽ ഉണ്ട്; ഇതിനർത്ഥം പ്രവർത്തനങ്ങൾ നടക്കുന്നു എന്നാണ്
രജിസ്റ്ററുകളുടെ കൃത്യതയും തരങ്ങളിലേക്ക് റൗണ്ട് ചെയ്യുമ്പോൾ അത് പ്രവചനാതീതവുമാണ്
സോഴ്സ് കോഡിൽ വ്യക്തമാക്കിയിരിക്കുന്നത് നടക്കുന്നു. സി കംപൈൽ ചെയ്യുമ്പോൾ, എങ്കിൽ
-fexcess-precision=standard വ്യക്തമാക്കിയ ശേഷം അധിക കൃത്യത നിയമങ്ങൾ പാലിക്കുന്നു
ISO C99-ൽ വ്യക്തമാക്കിയിരിക്കുന്നു; പ്രത്യേകിച്ചും, കാസ്റ്റുകളും അസൈൻമെന്റുകളും മൂല്യങ്ങൾ ഉണ്ടാകാൻ കാരണമാകുന്നു
അവയുടെ സെമാന്റിക് തരങ്ങളിലേക്ക് വൃത്താകൃതിയിലുള്ളത് (അതേസമയം -ഫ്ലോട്ട്-സ്റ്റോർ അസൈൻമെന്റുകളെ മാത്രം ബാധിക്കുന്നു).
കർശനമായ അനുരൂപമായ ഓപ്‌ഷനാണെങ്കിൽ, C-യ്‌ക്കായി ഈ ഓപ്‌ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കും
-std=c99 ഉപയോഗിക്കുന്നു.

-fexcess-precision=standard സി ഒഴികെയുള്ള ഭാഷകൾക്കായി നടപ്പിലാക്കിയിട്ടില്ല, കൂടാതെ ഇല്ല
എങ്കിൽ പ്രഭാവം -funsafe-math-optimizations or ഫാസ്റ്റ്-ഗണിതം വ്യക്തമാക്കിയിട്ടുണ്ട്. x86-ൽ, അത്
എങ്കിൽ ഒരു ഫലവുമില്ല -mfpmath=sse or -mfpmath=sse+387 വ്യക്തമാക്കിയിരിക്കുന്നു; ആദ്യത്തേതിൽ
കേസിൽ, IEEE സെമാന്റിക്സ് അധിക കൃത്യത കൂടാതെ പ്രയോഗിക്കുന്നു, രണ്ടാമത്തേതിൽ, റൗണ്ടിംഗ് ആണ്
പ്രവചനാതീതമായ.

ഫാസ്റ്റ്-ഗണിതം
ഓപ്ഷനുകൾ സജ്ജമാക്കുന്നു -fno-math-errno, -funsafe-math-optimizations, -ഫിനിറ്റ്-ഗണിതം-മാത്രം,
-fno-rounding-math, -fno-signaling-nans ഒപ്പം -fcx-limited-range.

ഈ ഓപ്ഷൻ പ്രീപ്രൊസസ്സർ മാക്രോ "__FAST_MATH__" നിർവചിക്കുന്നതിന് കാരണമാകുന്നു.

ഈ ഓപ്ഷൻ ആരും ഓണാക്കിയിട്ടില്ല -O കൂടാതെ ഓപ്ഷൻ -ഓഫാസ്റ്റ് കാരണം അത് കാരണമാകാം
IEEE അല്ലെങ്കിൽ ISO യുടെ കൃത്യമായ നിർവ്വഹണത്തെ ആശ്രയിക്കുന്ന പ്രോഗ്രാമുകളുടെ തെറ്റായ ഔട്ട്പുട്ട്
ഗണിത പ്രവർത്തനങ്ങൾക്കുള്ള നിയമങ്ങൾ/സ്പെസിഫിക്കേഷനുകൾ. എന്നിരുന്നാലും, ഇത് വേഗത്തിൽ കോഡ് നൽകിയേക്കാം
ഈ സ്പെസിഫിക്കേഷനുകളുടെ ഗ്യാരന്റി ആവശ്യമില്ലാത്ത പ്രോഗ്രാമുകൾ.

-fno-math-errno
ഒരു സിംഗിൾ ഉപയോഗിച്ച് എക്സിക്യൂട്ട് ചെയ്യുന്ന ഗണിത ഫംഗ്ഷനുകൾ വിളിച്ചതിന് ശേഷം "errno" സജ്ജീകരിക്കരുത്
നിർദ്ദേശം, ഉദാ, "sqrt". ഗണിത പിശകിന് IEEE ഒഴിവാക്കലുകളെ ആശ്രയിക്കുന്ന ഒരു പ്രോഗ്രാം
IEEE ഗണിതശാസ്ത്രം നിലനിറുത്തുമ്പോൾ, ഈ ഫ്ലാഗ് വേഗതയ്ക്കായി ഉപയോഗിക്കാൻ ഹാൻഡ്ലിംഗ് ആഗ്രഹിച്ചേക്കാം
അനുയോജ്യത.

ഈ ഓപ്ഷൻ ആരും ഓണാക്കിയിട്ടില്ല -O ഇത് തെറ്റായ ഔട്ട്പുട്ടിൽ കലാശിക്കുമെന്നതിനാൽ ഓപ്ഷൻ
IEEE അല്ലെങ്കിൽ ISO യുടെ കൃത്യമായ നിർവ്വഹണത്തെ ആശ്രയിക്കുന്ന പ്രോഗ്രാമുകൾക്കായി
ഗണിത പ്രവർത്തനങ്ങൾക്കുള്ള നിയമങ്ങൾ/സ്പെസിഫിക്കേഷനുകൾ. എന്നിരുന്നാലും, ഇത് വേഗത്തിൽ കോഡ് നൽകിയേക്കാം
ഈ സ്പെസിഫിക്കേഷനുകളുടെ ഗ്യാരന്റി ആവശ്യമില്ലാത്ത പ്രോഗ്രാമുകൾ.

സ്ഥിരസ്ഥിതി -fmath-errno.

ഡാർവിൻ സിസ്റ്റങ്ങളിൽ, ഗണിത ലൈബ്രറി ഒരിക്കലും "errno" സജ്ജീകരിക്കുന്നില്ല. അതിനാൽ ഒരു കാരണവുമില്ല
കംപൈലർ അത് ഉണ്ടാകാനുള്ള സാധ്യത പരിഗണിക്കുന്നതിനായി, ഒപ്പം -fno-math-errno ആകുന്നു
സ്ഥിരസ്ഥിതിയായി.

-funsafe-math-optimizations
(എ) ആർഗ്യുമെന്റുകളും ഒപ്പം
ഫലങ്ങൾ സാധുവാണ് കൂടാതെ (b) IEEE അല്ലെങ്കിൽ ANSI മാനദണ്ഡങ്ങൾ ലംഘിച്ചേക്കാം. ലിങ്ക്-ടൈമിൽ ഉപയോഗിക്കുമ്പോൾ,
ഡിഫോൾട്ട് FPU കൺട്രോൾ വേഡ് മാറ്റുന്ന ലൈബ്രറികളോ സ്റ്റാർട്ടപ്പ് ഫയലുകളോ അതിൽ ഉൾപ്പെട്ടേക്കാം
സമാനമായ മറ്റ് ഒപ്റ്റിമൈസേഷനുകൾ.

ഈ ഓപ്ഷൻ ആരും ഓണാക്കിയിട്ടില്ല -O ഇത് തെറ്റായ ഔട്ട്പുട്ടിൽ കലാശിക്കുമെന്നതിനാൽ ഓപ്ഷൻ
IEEE അല്ലെങ്കിൽ ISO യുടെ കൃത്യമായ നിർവ്വഹണത്തെ ആശ്രയിക്കുന്ന പ്രോഗ്രാമുകൾക്കായി
ഗണിത പ്രവർത്തനങ്ങൾക്കുള്ള നിയമങ്ങൾ/സ്പെസിഫിക്കേഷനുകൾ. എന്നിരുന്നാലും, ഇത് വേഗത്തിൽ കോഡ് നൽകിയേക്കാം
ഈ സ്പെസിഫിക്കേഷനുകളുടെ ഗ്യാരന്റി ആവശ്യമില്ലാത്ത പ്രോഗ്രാമുകൾ. സജ്ജമാക്കുന്നു
-fno-signed-പൂജ്യം, -fno-trapping-math, ഫാസോസിയേറ്റീവ്-ഗണിതം ഒപ്പം -ഫ്രെസിപ്രോക്കൽ-ഗണിതം.

സ്ഥിരസ്ഥിതി -fno-unsafe-math-optimizations.

ഫാസോസിയേറ്റീവ്-ഗണിതം
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങളുടെ പരമ്പരയിൽ ഓപ്പറണ്ടുകളുടെ പുനഃസംയോജനം അനുവദിക്കുക. ഈ
ISO C, C++ ഭാഷാ മാനദണ്ഡങ്ങൾ ലംഘിക്കുന്നു, ഒരുപക്ഷേ കമ്പ്യൂട്ടേഷൻ ഫലം മാറ്റുന്നു.
ശ്രദ്ധിക്കുക: പുനഃക്രമീകരിക്കുന്നത് പൂജ്യത്തിന്റെ അടയാളം മാറ്റുകയും NaN-കൾ അവഗണിക്കുകയും തടയുകയും ചെയ്യാം.
അണ്ടർഫ്ലോ അല്ലെങ്കിൽ ഓവർഫ്ലോ സൃഷ്‌ടിക്കുക (അതിനാൽ റൗണ്ടിംഗിനെ ആശ്രയിക്കുന്ന കോഡിൽ ഉപയോഗിക്കാൻ കഴിയില്ല
"(x + 2**52) - 2**52" പോലെയുള്ള പെരുമാറ്റം. ഫ്ലോട്ടിംഗ് പോയിന്റ് താരതമ്യങ്ങൾ പുനഃക്രമീകരിക്കുകയും ചെയ്യാം
അതിനാൽ ഓർഡർ ചെയ്ത താരതമ്യങ്ങൾ ആവശ്യമായി വരുമ്പോൾ ഉപയോഗിക്കാൻ പാടില്ല. ഈ ഓപ്ഷന് അത് ആവശ്യമാണ്
രണ്ടും -fno-signed-പൂജ്യം ഒപ്പം -fno-trapping-math പ്രാബല്യത്തിൽ വരും. മാത്രമല്ല, അത് ഉണ്ടാക്കുന്നില്ല
വളരെ അർത്ഥമുണ്ട് -ഫ്രൗണ്ടിംഗ്-ഗണിതം. ഫോർട്രാൻ ഓപ്‌ഷൻ സ്വയമേവ പ്രവർത്തനക്ഷമമാകും
രണ്ടും -fno-signed-പൂജ്യം ഒപ്പം -fno-trapping-math പ്രാബല്യത്തിൽ ഉണ്ട്.

സ്ഥിരസ്ഥിതി -fno-അസോസിയേറ്റീവ്-ഗണിതം.

-ഫ്രെസിപ്രോക്കൽ-ഗണിതം
ഇങ്ങനെയാണെങ്കിൽ മൂല്യം കൊണ്ട് ഹരിക്കുന്നതിന് പകരം ഒരു മൂല്യത്തിന്റെ പരസ്പരബന്ധം ഉപയോഗിക്കാൻ അനുവദിക്കുക
ഒപ്റ്റിമൈസേഷനുകൾ പ്രാപ്തമാക്കുന്നു. ഉദാഹരണത്തിന് "x / y" എന്നത് "x * (1/y)" ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കാം, അതായത്
"(1/y)" എന്നത് പൊതുവായ ഉപവിക്ഷേപണ ഉന്മൂലനത്തിന് വിധേയമാണെങ്കിൽ ഉപയോഗപ്രദമാണ്. ഇത് ശ്രദ്ധിക്കുക
കൃത്യത നഷ്ടപ്പെടുകയും മൂല്യത്തിൽ പ്രവർത്തിക്കുന്ന ഫ്ലോപ്പുകളുടെ എണ്ണം വർദ്ധിപ്പിക്കുകയും ചെയ്യുന്നു.

സ്ഥിരസ്ഥിതി -fno-reciprocal-math.

-ഫിനിറ്റ്-ഗണിതം-മാത്രം
ആർഗ്യുമെന്റുകളും എന്ന് അനുമാനിക്കുന്ന ഫ്ലോട്ടിംഗ് പോയിന്റ് ഗണിതത്തിന് ഒപ്റ്റിമൈസേഷനുകൾ അനുവദിക്കുക
ഫലങ്ങൾ NaN അല്ലെങ്കിൽ +-Infs അല്ല.

ഈ ഓപ്ഷൻ ആരും ഓണാക്കിയിട്ടില്ല -O ഇത് തെറ്റായ ഔട്ട്പുട്ടിൽ കലാശിക്കുമെന്നതിനാൽ ഓപ്ഷൻ
IEEE അല്ലെങ്കിൽ ISO യുടെ കൃത്യമായ നിർവ്വഹണത്തെ ആശ്രയിക്കുന്ന പ്രോഗ്രാമുകൾക്കായി
ഗണിത പ്രവർത്തനങ്ങൾക്കുള്ള നിയമങ്ങൾ/സ്പെസിഫിക്കേഷനുകൾ. എന്നിരുന്നാലും, ഇത് വേഗത്തിൽ കോഡ് നൽകിയേക്കാം
ഈ സ്പെസിഫിക്കേഷനുകളുടെ ഗ്യാരന്റി ആവശ്യമില്ലാത്ത പ്രോഗ്രാമുകൾ.

സ്ഥിരസ്ഥിതി -fno-ഫിനിറ്റ്-ഗണിതം-മാത്രം.

-fno-signed-പൂജ്യം
പൂജ്യത്തിന്റെ അടയാളം അവഗണിക്കുന്ന ഫ്ലോട്ടിംഗ് പോയിന്റ് ഗണിതത്തിന് ഒപ്റ്റിമൈസേഷനുകൾ അനുവദിക്കുക.
IEEE ഗണിതശാസ്ത്രം വ്യതിരിക്തമായ +0.0, -0.0 മൂല്യങ്ങളുടെ സ്വഭാവം വ്യക്തമാക്കുന്നു, അത് പിന്നീട്
x+0.0 അല്ലെങ്കിൽ 0.0*x പോലുള്ള പദപ്രയോഗങ്ങളുടെ ലളിതവൽക്കരണം നിരോധിക്കുന്നു (കൂടാതെയും
-ഫിനിറ്റ്-ഗണിതം-മാത്രം). ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നത് പൂജ്യം ഫലത്തിന്റെ അടയാളം അല്ല എന്നാണ്
കാര്യമായ.

സ്ഥിരസ്ഥിതി -fsigned-പൂജ്യം.

-fno-trapping-math
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾക്ക് ഉപയോക്തൃ-ദൃശ്യം സൃഷ്ടിക്കാൻ കഴിയില്ലെന്ന് കരുതി കോഡ് കംപൈൽ ചെയ്യുക
കെണികൾ. ഈ കെണികളിൽ പൂജ്യം കൊണ്ട് ഹരിക്കൽ, ഓവർഫ്ലോ, അണ്ടർഫ്ലോ, കൃത്യമായ ഫലം എന്നിവ ഉൾപ്പെടുന്നു
അസാധുവായ പ്രവർത്തനം. ഈ ഓപ്ഷന് അത് ആവശ്യമാണ് -fno-signaling-nans പ്രാബല്യത്തിൽ വരും.
ഒരാൾ "നോൺ-സ്റ്റോപ്പ്" IEEE ഗണിതത്തെ ആശ്രയിക്കുകയാണെങ്കിൽ, ഈ ഓപ്‌ഷൻ സജ്ജീകരിക്കുന്നത് വേഗതയേറിയ കോഡ് അനുവദിച്ചേക്കാം.
ഉദാഹരണത്തിന്.

ഈ ഓപ്ഷൻ ആരും ഒരിക്കലും ഓണാക്കരുത് -O ഓപ്ഷൻ
IEEE അല്ലെങ്കിൽ ISO യുടെ കൃത്യമായ നിർവ്വഹണത്തെ ആശ്രയിക്കുന്ന പ്രോഗ്രാമുകളുടെ തെറ്റായ ഔട്ട്പുട്ട്
ഗണിത പ്രവർത്തനങ്ങൾക്കുള്ള നിയമങ്ങൾ/സ്പെസിഫിക്കേഷനുകൾ.

സ്ഥിരസ്ഥിതി -ഫ്ട്രാപ്പിംഗ്-ഗണിതം.

-ഫ്രൗണ്ടിംഗ്-ഗണിതം
ഡിഫോൾട്ട് ഫ്ലോട്ടിംഗ് പോയിന്റ് റൗണ്ടിംഗ് അനുമാനിക്കുന്ന പരിവർത്തനങ്ങളും ഒപ്റ്റിമൈസേഷനുകളും പ്രവർത്തനരഹിതമാക്കുക
പെരുമാറ്റം. എല്ലാ ഫ്ലോട്ടിംഗ് പോയിന്റുകൾക്കും പൂർണ്ണസംഖ്യ പരിവർത്തനങ്ങൾക്കും ഇത് റൗണ്ട്-ടു-പൂജ്യം ആണ്
മറ്റെല്ലാ ഗണിത വെട്ടിച്ചുരുക്കലുകൾക്കും ചുറ്റും-അടുത്തത്. ഈ ഓപ്ഷൻ ആയിരിക്കണം
FP റൗണ്ടിംഗ് മോഡ് ചലനാത്മകമായി മാറ്റുന്ന പ്രോഗ്രാമുകൾക്കായി വ്യക്തമാക്കിയിരിക്കുന്നു, അല്ലെങ്കിൽ അങ്ങനെയായിരിക്കാം
സ്ഥിരമല്ലാത്ത റൗണ്ടിംഗ് മോഡ് ഉപയോഗിച്ച് നടപ്പിലാക്കി. ഈ ഐച്ഛികം സ്ഥിരമായ ഫോൾഡിംഗ് പ്രവർത്തനരഹിതമാക്കുന്നു
കംപൈൽ സമയത്ത് ഫ്ലോട്ടിംഗ് പോയിന്റ് എക്സ്പ്രഷനുകൾ (ഇത് റൗണ്ടിംഗ് മോഡ് ബാധിച്ചേക്കാം)
ചിഹ്നത്തെ ആശ്രയിക്കുന്നവരുടെ സാന്നിധ്യത്തിൽ സുരക്ഷിതമല്ലാത്ത ഗണിത പരിവർത്തനങ്ങളും
റൗണ്ടിംഗ് മോഡുകൾ.

സ്ഥിരസ്ഥിതി -fno-rounding-math.

ഈ ഓപ്‌ഷൻ പരീക്ഷണാത്മകമാണ് കൂടാതെ എല്ലാ GCC-യും പ്രവർത്തനരഹിതമാക്കുമെന്ന് നിലവിൽ ഉറപ്പുനൽകുന്നില്ല
റൗണ്ടിംഗ് മോഡ് ബാധിക്കുന്ന ഒപ്റ്റിമൈസേഷനുകൾ. ജിസിസിയുടെ ഭാവി പതിപ്പുകൾ നൽകിയേക്കാം
C99 ന്റെ "FENV_ACCESS" പ്രാഗ്മ ഉപയോഗിച്ച് ഈ ക്രമീകരണത്തിന്റെ മികച്ച നിയന്ത്രണം. ഈ കമാൻഡ്-ലൈൻ
"FENV_ACCESS" എന്നതിനുള്ള സ്ഥിരസ്ഥിതി വ്യക്തമാക്കാൻ ഓപ്ഷൻ ഉപയോഗിക്കും.

-fsignaling-nans
IEEE സിഗ്നലിംഗ് NaN-കൾ ഉപയോക്താക്കൾക്ക് കാണാവുന്ന ട്രാപ്പുകൾ സൃഷ്ടിച്ചേക്കാമെന്ന് അനുമാനിച്ച് കോഡ് കംപൈൽ ചെയ്യുക
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾ. ഈ ഓപ്‌ഷൻ സജ്ജീകരിക്കുന്നത് മാറിയേക്കാവുന്ന ഒപ്റ്റിമൈസേഷനുകളെ പ്രവർത്തനരഹിതമാക്കുന്നു
സിഗ്നലിംഗ് NaN-കൾക്കൊപ്പം കാണാവുന്ന ഒഴിവാക്കലുകളുടെ എണ്ണം. ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നു
-ഫ്ട്രാപ്പിംഗ്-ഗണിതം.

ഈ ഓപ്ഷൻ പ്രീപ്രൊസസ്സർ മാക്രോ "__SUPPORT_SNAN__" നിർവചിക്കുന്നതിന് കാരണമാകുന്നു.

സ്ഥിരസ്ഥിതി -fno-signaling-nans.

ഈ ഓപ്‌ഷൻ പരീക്ഷണാത്മകമാണ് കൂടാതെ എല്ലാ GCC-യും പ്രവർത്തനരഹിതമാക്കുമെന്ന് നിലവിൽ ഉറപ്പുനൽകുന്നില്ല
സിഗ്നലിംഗ് NaN സ്വഭാവത്തെ ബാധിക്കുന്ന ഒപ്റ്റിമൈസേഷനുകൾ.

-fsingle-പ്രിസിഷൻ-സ്ഥിരം
ഫ്ലോട്ടിംഗ്-പോയിന്റ് സ്ഥിരാങ്കങ്ങളെ പരോക്ഷമായി പരിവർത്തനം ചെയ്യുന്നതിനുപകരം ഒരൊറ്റ കൃത്യതയായി പരിഗണിക്കുക
അവയെ ഇരട്ട കൃത്യതയുള്ള സ്ഥിരാങ്കങ്ങളിലേക്ക്.

-fcx-limited-range
പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ഈ ഓപ്‌ഷൻ പ്രസ്‌താവിക്കുന്നു, എപ്പോൾ ഒരു ശ്രേണി കുറയ്ക്കൽ ഘട്ടം ആവശ്യമില്ല
സങ്കീർണ്ണമായ വിഭജനം നടത്തുന്നു. കൂടാതെ, a യുടെ ഫലമാണോ എന്ന് പരിശോധിക്കുന്നില്ല
സങ്കീർണ്ണമായ ഗുണനം അല്ലെങ്കിൽ വിഭജനം "NaN + I*NaN" ആണ്
ആ സാഹചര്യത്തിൽ സാഹചര്യം. സ്ഥിരസ്ഥിതിയാണ് -fno-cx-limited-range, എന്നാൽ പ്രവർത്തനക്ഷമമാക്കിയത്
ഫാസ്റ്റ്-ഗണിതം.

ഈ ഓപ്ഷൻ ISO C99 "CX_LIMITED_RANGE" പ്രാഗ്മയുടെ സ്ഥിരസ്ഥിതി ക്രമീകരണം നിയന്ത്രിക്കുന്നു.
എന്നിരുന്നാലും, ഈ ഓപ്ഷൻ എല്ലാ ഭാഷകൾക്കും ബാധകമാണ്.

-fcx-fortran-rules
സങ്കീർണ്ണമായ ഗുണനവും വിഭജനവും ഫോർട്രാൻ നിയമങ്ങൾ പാലിക്കുന്നു. റേഞ്ച് റിഡക്ഷൻ ഇപ്രകാരമാണ് ചെയ്യുന്നത്
സങ്കീർണ്ണമായ വിഭജനത്തിന്റെ ഭാഗം, പക്ഷേ ഒരു സമുച്ചയത്തിന്റെ ഫലമാണോ എന്ന് പരിശോധിക്കുന്നില്ല
ഗുണനം അല്ലെങ്കിൽ വിഭജനം "NaN + I*NaN" ആണ്, സാഹചര്യം രക്ഷപ്പെടുത്താനുള്ള ശ്രമത്തിലാണ്
അങ്ങനെയാണെങ്കിൽ.

സ്ഥിരസ്ഥിതി -fno-cx-fortran-rules.

പ്രകടനം മെച്ചപ്പെടുത്തിയേക്കാവുന്ന ഒപ്റ്റിമൈസേഷനുകളെ ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ നിയന്ത്രിക്കുന്നു, പക്ഷേ അല്ല
ഏതെങ്കിലും വഴി പ്രാപ്തമാക്കിയത് -O ഓപ്ഷനുകൾ. ഈ വിഭാഗത്തിൽ നിർമ്മിച്ചേക്കാവുന്ന പരീക്ഷണാത്മക ഓപ്ഷനുകൾ ഉൾപ്പെടുന്നു
തകർന്ന കോഡ്.

-fbranch-സാധ്യതകൾ
ഉപയോഗിച്ച് കംപൈൽ ചെയ്ത ഒരു പ്രോഗ്രാം പ്രവർത്തിപ്പിച്ചതിന് ശേഷം -fprofile-arcs, നിങ്ങൾക്ക് ഇത് രണ്ടാമതും സമാഹരിക്കാം
ഉപയോഗിച്ച് -fbranch-സാധ്യതകൾ, തവണകളുടെ എണ്ണത്തെ അടിസ്ഥാനമാക്കി ഒപ്റ്റിമൈസേഷനുകൾ മെച്ചപ്പെടുത്തുന്നതിന്
ഓരോ ശാഖയും എടുത്തു. ഉപയോഗിച്ച് ഒരു പ്രോഗ്രാം സമാഹരിച്ചപ്പോൾ -fprofile-arcs പുറത്തുകടക്കുന്നു, അത് സംരക്ഷിക്കുന്നു
ആർക്ക് എക്സിക്യൂഷൻ എന്ന ഫയലിലേക്ക് കണക്കാക്കുന്നു sourcename.gcda ഓരോ സോഴ്സ് ഫയലിനും. ദി
ഈ ഡാറ്റ ഫയലിലെ വിവരങ്ങൾ ജനറേറ്റ് ചെയ്തതിന്റെ ഘടനയെ ആശ്രയിച്ചിരിക്കുന്നു
കോഡ്, അതിനാൽ നിങ്ങൾ രണ്ടിനും ഒരേ സോഴ്സ് കോഡും ഒരേ ഒപ്റ്റിമൈസേഷൻ ഓപ്ഷനുകളും ഉപയോഗിക്കണം
സമാഹാരങ്ങൾ.

കൂടെ -fbranch-സാധ്യതകൾ, ജിസിസി ഇടുന്നു എ REG_BR_PROB ഓരോന്നിനും കുറിപ്പ് JUMP_INSN ഒപ്പം
CALL_INSN. ഒപ്റ്റിമൈസേഷൻ മെച്ചപ്പെടുത്താൻ ഇവ ഉപയോഗിക്കാം. നിലവിൽ, അവ മാത്രമാണ് ഉപയോഗിക്കുന്നത്
ഒരിടത്ത്: ഇൻ reorg.c, ഒരു ശാഖ ഏത് പാതയിലേക്കാണ് കൂടുതൽ സാധ്യതയുള്ളതെന്ന് ഊഹിക്കുന്നതിനുപകരം
എടുക്കുക, ദി REG_BR_PROB ഏത് പാതയാണ് കൂടുതൽ എടുക്കുന്നതെന്ന് കൃത്യമായി നിർണ്ണയിക്കാൻ മൂല്യങ്ങൾ ഉപയോഗിക്കുന്നു
പലപ്പോഴും.

-fprofile-മൂല്യങ്ങൾ
കൂടിച്ചേർന്നാൽ -fprofile-arcs, ഇത് കോഡ് ചേർക്കുന്നതിനാൽ മൂല്യങ്ങളെക്കുറിച്ചുള്ള ചില ഡാറ്റ
പ്രോഗ്രാമിലെ പദപ്രയോഗങ്ങൾ ശേഖരിക്കുന്നു.

കൂടെ -fbranch-സാധ്യതകൾ, പ്രൊഫൈലിംഗ് മൂല്യങ്ങളിൽ നിന്ന് ശേഖരിച്ച ഡാറ്റ ഇത് തിരികെ വായിക്കുന്നു
ഒപ്റ്റിമൈസേഷനിലെ ഉപയോഗത്തിനുള്ള എക്സ്പ്രഷനുകൾ.

ഉപയോഗിച്ച് പ്രവർത്തനക്ഷമമാക്കി -fprofile-ജനറേറ്റ് ഒപ്പം -fprofile-ഉപയോഗം.

-fprofile-reorder-functions
പ്രൊഫൈൽ ഇൻസ്ട്രുമെന്റേഷൻ അടിസ്ഥാനമാക്കിയുള്ള ഫംഗ്‌ഷൻ റീഓർഡറിംഗ് ആദ്യമായി എക്‌സിക്യൂഷൻ ശേഖരിക്കുന്നു
ഒരു ഫംഗ്‌ഷന്റെയും ഈ ഫംഗ്‌ഷനുകളെ ആരോഹണ ക്രമത്തിൽ ക്രമീകരിക്കുകയും ചെയ്യുന്നു.

ഉപയോഗിച്ച് പ്രവർത്തനക്ഷമമാക്കി -fprofile-ഉപയോഗം.

-fvpt
കൂടിച്ചേർന്നാൽ -fprofile-arcs, ഈ ഓപ്ഷൻ കോഡ് ചേർക്കാൻ കംപൈലറോട് നിർദ്ദേശിക്കുന്നു
പദപ്രയോഗങ്ങളുടെ മൂല്യങ്ങളെക്കുറിച്ചുള്ള വിവരങ്ങൾ ശേഖരിക്കുക.

കൂടെ -fbranch-സാധ്യതകൾ, ഇത് ശേഖരിച്ച ഡാറ്റ തിരികെ വായിക്കുകയും യഥാർത്ഥത്തിൽ നിർവ്വഹിക്കുകയും ചെയ്യുന്നു
അവയെ അടിസ്ഥാനമാക്കിയുള്ള ഒപ്റ്റിമൈസേഷനുകൾ. നിലവിൽ ഒപ്റ്റിമൈസേഷനുകളിൽ സ്പെഷ്യലൈസേഷൻ ഉൾപ്പെടുന്നു
ഡിനോമിനേറ്ററിന്റെ മൂല്യത്തെക്കുറിച്ചുള്ള അറിവ് ഉപയോഗിച്ച് വിഭജന പ്രവർത്തനങ്ങൾ.

-ഫ്രെയിം-രജിസ്റ്ററുകൾ
അവശേഷിക്കുന്ന രജിസ്റ്ററുകൾ ഉപയോഗിച്ച് ഷെഡ്യൂൾ ചെയ്ത കോഡിലെ തെറ്റായ ഡിപൻഡൻസികൾ ഒഴിവാക്കാനുള്ള ശ്രമം
രജിസ്റ്റർ അലോക്കേഷന് ശേഷം. ഈ ഒപ്റ്റിമൈസേഷൻ ഒട്ടനവധി പ്രോസസറുകൾക്ക് ഗുണം ചെയ്യും
രജിസ്റ്ററുകളുടെ. ടാർഗെറ്റ് സ്വീകരിച്ച ഡീബഗ് വിവര ഫോർമാറ്റിനെ ആശ്രയിച്ച്,
എന്നിരുന്നാലും, ഇത് ഡീബഗ്ഗിംഗ് അസാധ്യമാക്കും, കാരണം വേരിയബിളുകൾ "വീട്ടിൽ" നിലനിൽക്കില്ല
രജിസ്റ്റർ".

ഉപയോഗിച്ച് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -ഫൺറോൾ-ലൂപ്പുകൾ ഒപ്പം -fpeel-ലൂപ്പുകൾ.

-ഫ്ഷെഡ്യൂൾ-ഫ്യൂഷൻ
നിർദ്ദേശങ്ങൾ ഷെഡ്യൂൾ ചെയ്യുന്നതിനായി നിർദ്ദേശ സ്ട്രീമിൽ ടാർഗെറ്റ് ആശ്രിത പാസ് നടപ്പിലാക്കുന്നു
ടാർഗെറ്റ് മെഷീന് അവ ഉണ്ടെങ്കിൽ അവ കൂടുതൽ കാര്യക്ഷമമായി നടപ്പിലാക്കാൻ കഴിയുമെന്നതിനാൽ ഒരേ തരത്തിലുള്ളതാണ്
പ്രബോധന പ്രവാഹത്തിൽ പരസ്പരം അടുത്താണ്.

തലങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കി -O2, -O3, -ഓസ്.

-ഫ്ട്രാസർ
സൂപ്പർബ്ലോക്ക് വലുപ്പം വലുതാക്കാൻ ടെയിൽ ഡ്യൂപ്ലിക്കേഷൻ നടത്തുക. ഈ പരിവർത്തനം ലളിതമാക്കുന്നു
മറ്റ് ഒപ്റ്റിമൈസേഷനുകളെ മികച്ച ജോലി ചെയ്യാൻ അനുവദിക്കുന്ന ഫംഗ്‌ഷന്റെ നിയന്ത്രണ പ്രവാഹം.

ഉപയോഗിച്ച് പ്രവർത്തനക്ഷമമാക്കി -fprofile-ഉപയോഗം.

-ഫൺറോൾ-ലൂപ്പുകൾ
കംപൈൽ സമയത്തോ അതിന് ശേഷമോ ആവർത്തനങ്ങളുടെ എണ്ണം നിർണ്ണയിക്കാൻ കഴിയുന്ന ലൂപ്പുകൾ അൺറോൾ ചെയ്യുക
ലൂപ്പിലേക്കുള്ള പ്രവേശനം. -ഫൺറോൾ-ലൂപ്പുകൾ ധ്വനിപ്പിക്കുന്നു -frerun-cse-after-loop, -fweb ഒപ്പം
-ഫ്രെയിം-രജിസ്റ്ററുകൾ. ഇത് പൂർണ്ണമായ ലൂപ്പ് പീലിംഗ് ഓണാക്കുന്നു (അതായത് പൂർണ്ണമായി നീക്കംചെയ്യൽ
ചെറിയ സ്ഥിരമായ ആവർത്തനങ്ങളുള്ള ലൂപ്പുകൾ). ഈ ഓപ്ഷൻ കോഡ് വലുതാക്കുന്നു, ഒപ്പം
ഇത് വേഗത്തിൽ പ്രവർത്തിപ്പിക്കുകയോ ചെയ്യാതിരിക്കുകയോ ചെയ്യാം.

ഉപയോഗിച്ച് പ്രവർത്തനക്ഷമമാക്കി -fprofile-ഉപയോഗം.

-funroll-all-loops
എല്ലാ ലൂപ്പുകളും അൺറോൾ ചെയ്യുക, അവയുടെ ആവർത്തനങ്ങളുടെ എണ്ണം ലൂപ്പ് എപ്പോഴാണെന്ന് ഉറപ്പില്ലെങ്കിലും
പ്രവേശിച്ചു. ഇത് സാധാരണയായി പ്രോഗ്രാമുകൾ കൂടുതൽ സാവധാനത്തിൽ പ്രവർത്തിക്കുന്നു. -funroll-all-loops സൂചിപ്പിക്കുന്നു
സമാനമായ ഓപ്ഷനുകൾ -ഫൺറോൾ-ലൂപ്പുകൾ.

-fpeel-ലൂപ്പുകൾ
പീൽസ് ലൂപ്പുകൾ, അവയ്ക്ക് വേണ്ടത്ര വിവരങ്ങൾ ഉണ്ട്, അവ അധികം ഉരുട്ടില്ല (ഇതിൽ നിന്ന്
പ്രൊഫൈൽ ഫീഡ്ബാക്ക്). ഇത് പൂർണ്ണമായ ലൂപ്പ് പീലിംഗ് ഓണാക്കുന്നു (അതായത് പൂർണ്ണമായി നീക്കംചെയ്യൽ
ചെറിയ സ്ഥിരമായ ആവർത്തനങ്ങളുള്ള ലൂപ്പുകൾ).

ഉപയോഗിച്ച് പ്രവർത്തനക്ഷമമാക്കി -fprofile-ഉപയോഗം.

-fmove-loop-invariants
RTL ലൂപ്പ് ഒപ്റ്റിമൈസറിൽ ലൂപ്പ് മാറ്റമില്ലാത്ത മോഷൻ പാസ് പ്രവർത്തനക്ഷമമാക്കുന്നു. തലത്തിൽ പ്രവർത്തനക്ഷമമാക്കി
-O1

-ഫൺസ്വിച്ച്-ലൂപ്പുകൾ
ലൂപ്പിന്റെ തനിപ്പകർപ്പുകൾ ഉപയോഗിച്ച് ലൂപ്പിന് പുറത്തേക്ക് ലൂപ്പ് മാറ്റമില്ലാത്ത അവസ്ഥകളുള്ള ശാഖകൾ നീക്കുക
രണ്ട് ശാഖകളിലും ലൂപ്പ് (അവസ്ഥയുടെ ഫലം അനുസരിച്ച് പരിഷ്ക്കരിച്ചു).

-ഫംഗ്ഷൻ-വിഭാഗങ്ങൾ
-fdata-വിഭാഗങ്ങൾ
ടാർഗെറ്റ് ആണെങ്കിൽ ഔട്ട്‌പുട്ട് ഫയലിൽ ഓരോ ഫംഗ്‌ഷനും ഡാറ്റാ ഇനവും അതിന്റേതായ വിഭാഗത്തിൽ സ്ഥാപിക്കുക
അനിയന്ത്രിതമായ വിഭാഗങ്ങളെ പിന്തുണയ്ക്കുന്നു. പ്രവർത്തനത്തിന്റെ പേര് അല്ലെങ്കിൽ ഡാറ്റ ഇനത്തിന്റെ പേര്
ഔട്ട്പുട്ട് ഫയലിലെ വിഭാഗത്തിന്റെ പേര് നിർണ്ണയിക്കുന്നു.

മെച്ചപ്പെടുത്തുന്നതിനായി ലിങ്കർക്ക് ഒപ്റ്റിമൈസേഷനുകൾ നടത്താൻ കഴിയുന്ന സിസ്റ്റങ്ങളിൽ ഈ ഓപ്ഷനുകൾ ഉപയോഗിക്കുക
ഇൻസ്ട്രക്ഷൻ സ്പേസിലെ റഫറൻസ് പ്രദേശം. മിക്ക സിസ്റ്റങ്ങളും ELF ഒബ്ജക്റ്റ് ഉപയോഗിക്കുന്നു
സോളാരിസ് 2-ൽ പ്രവർത്തിക്കുന്ന ഫോർമാറ്റ്, സ്പാർക് പ്രോസസറുകൾക്ക് അത്തരം ഒപ്റ്റിമൈസേഷനുള്ള ലിങ്കറുകൾ ഉണ്ട്.
AIX-ന് ഭാവിയിൽ ഈ ഒപ്റ്റിമൈസേഷനുകൾ ഉണ്ടായേക്കാം.

അങ്ങനെ ചെയ്യുന്നതിൽ നിന്ന് കാര്യമായ നേട്ടങ്ങൾ ഉണ്ടാകുമ്പോൾ മാത്രം ഈ ഓപ്ഷനുകൾ ഉപയോഗിക്കുക. നിങ്ങൾ എപ്പോൾ
ഈ ഓപ്‌ഷനുകൾ വ്യക്തമാക്കുക, അസംബ്ലറും ലിങ്കറും വലിയ ഒബ്‌ജക്‌റ്റും എക്‌സിക്യൂട്ടബിളും സൃഷ്‌ടിക്കുന്നു
ഫയലുകൾ മന്ദഗതിയിലുമാണ്. നിങ്ങൾക്ക് ഉപയോഗിക്കാൻ കഴിയില്ല gprof നിങ്ങൾ ഇത് വ്യക്തമാക്കിയാൽ എല്ലാ സിസ്റ്റങ്ങളിലും
ഓപ്ഷൻ, കൂടാതെ ഈ ഓപ്‌ഷനും കൂടാതെ രണ്ടും നിങ്ങൾ വ്യക്തമാക്കിയാൽ ഡീബഗ്ഗിംഗിൽ നിങ്ങൾക്ക് പ്രശ്‌നങ്ങളുണ്ടായേക്കാം
-g.

-fbranch-target-load-optimize
പ്രോലോഗ് / എപ്പിലോഗ് ത്രെഡിംഗിന് മുമ്പ് ബ്രാഞ്ച് ടാർഗെറ്റ് രജിസ്റ്റർ ലോഡ് ഒപ്റ്റിമൈസേഷൻ നടത്തുക.
ടാർഗെറ്റ് രജിസ്റ്ററുകളുടെ ഉപയോഗം സാധാരണയായി റീലോഡ് ചെയ്യുമ്പോൾ മാത്രമേ വെളിപ്പെടുത്താനാകൂ, അങ്ങനെ ഉയർത്തുന്നു
ലൂപ്പുകളിൽ നിന്ന് ലോഡ് ചെയ്യുന്നതിനും ഇന്റർ-ബ്ലോക്ക് ഷെഡ്യൂളിംഗ് നടത്തുന്നതിനും പ്രത്യേക ഒപ്റ്റിമൈസേഷൻ ആവശ്യമാണ്
കടന്നുപോകുക.

-fbranch-target-load-optimize2
പ്രോലോഗ് / എപ്പിലോഗ് ത്രെഡിംഗിന് ശേഷം ബ്രാഞ്ച് ടാർഗെറ്റ് രജിസ്റ്റർ ലോഡ് ഒപ്റ്റിമൈസേഷൻ നടത്തുക.

-fbtr-bb-എക്‌സ്‌ക്ലൂസീവ്
ബ്രാഞ്ച് ടാർഗെറ്റ് രജിസ്റ്റർ ലോഡ് ഒപ്റ്റിമൈസേഷൻ നടത്തുമ്പോൾ, ബ്രാഞ്ച് ടാർഗെറ്റ് വീണ്ടും ഉപയോഗിക്കരുത്
ഏതെങ്കിലും അടിസ്ഥാന ബ്ലോക്കിനുള്ളിൽ രജിസ്റ്റർ ചെയ്യുന്നു.

-fstack-protectctor
സ്റ്റാക്ക് സ്മാഷിംഗ് ആക്രമണങ്ങൾ പോലുള്ള ബഫർ ഓവർഫ്ലോകൾ പരിശോധിക്കാൻ അധിക കോഡ് എമിറ്റ് ചെയ്യുക. ഈ
ദുർബലമായ ഒബ്‌ജക്‌റ്റുകളുള്ള ഫംഗ്‌ഷനുകളിലേക്ക് ഒരു ഗാർഡ് വേരിയബിൾ ചേർത്താണ് ഇത് ചെയ്യുന്നത്. ഈ
"alloca" എന്ന് വിളിക്കുന്ന ഫംഗ്‌ഷനുകളും 8 ബൈറ്റുകളേക്കാൾ വലിയ ബഫറുകളുള്ള ഫംഗ്‌ഷനുകളും ഉൾപ്പെടുന്നു.
ഒരു ഫംഗ്‌ഷൻ നൽകുമ്പോൾ ഗാർഡുകൾ ആരംഭിക്കുകയും തുടർന്ന് പരിശോധിക്കുമ്പോൾ പരിശോധിക്കുകയും ചെയ്യുന്നു
ഫംഗ്ഷൻ പുറത്തുകടക്കുന്നു. ഒരു ഗാർഡ് ചെക്ക് പരാജയപ്പെടുകയാണെങ്കിൽ, ഒരു പിശക് സന്ദേശം അച്ചടിക്കുകയും പ്രോഗ്രാം ചെയ്യുകയും ചെയ്യുന്നു
പുറത്തുകടക്കുന്നു.

-fstack-protector-എല്ലാം
പോലെ -fstack-protectctor എല്ലാ പ്രവർത്തനങ്ങളും പരിരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു എന്നതൊഴിച്ചാൽ.

-fstack-protector-strong
പോലെ -fstack-protectctor എന്നാൽ പരിരക്ഷിക്കേണ്ട അധിക പ്രവർത്തനങ്ങൾ ഉൾപ്പെടുന്നു --- അവ
അവയ്ക്ക് പ്രാദേശിക അറേ നിർവചനങ്ങൾ ഉണ്ട്, അല്ലെങ്കിൽ പ്രാദേശിക ഫ്രെയിം വിലാസങ്ങളിലേക്ക് റഫറൻസുകൾ ഉണ്ട്.

-fstack-protector-വ്യക്തം
പോലെ -fstack-protectctor എന്നാൽ ഉള്ള പ്രവർത്തനങ്ങളെ മാത്രം സംരക്ഷിക്കുന്നു
"stack_protect" ആട്രിബ്യൂട്ട്

-fstdarg-opt
അവയുടെ ഉപയോഗവുമായി ബന്ധപ്പെട്ട് വേരിയാഡിക് ആർഗ്യുമെന്റ് ഫംഗ്‌ഷനുകളുടെ പ്രോലോഗ് ഒപ്റ്റിമൈസ് ചെയ്യുക
വാദങ്ങൾ.

ശ്രദ്ധിക്കുക: ഉബുണ്ടു 14.10 ലും പിന്നീടുള്ള പതിപ്പുകളിലും, -fstack-protector-strong വഴി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
C, C++, ObjC, ObjC++ എന്നിവയ്‌ക്കായുള്ള സ്ഥിരസ്ഥിതി -fno-stack-protector, -nostdlib, ഇല്ല
-ഫ്രീസ്റ്റാൻഡിംഗ് കണ്ടെത്തി.

-fsection-ആങ്കറുകൾ
പങ്കിട്ട "ആങ്കർ" ഉപയോഗിച്ച് പ്രതീകാത്മക വിലാസ കണക്കുകൂട്ടലുകളുടെ എണ്ണം കുറയ്ക്കാൻ ശ്രമിക്കുക
സമീപത്തുള്ള വസ്തുക്കളെ അഭിസംബോധന ചെയ്യുന്നതിനുള്ള ചിഹ്നങ്ങൾ. ഈ പരിവർത്തനം എണ്ണം കുറയ്ക്കാൻ സഹായിക്കും
ചില ലക്ഷ്യങ്ങളിലേക്കുള്ള GOT എൻട്രികളും GOT ആക്‌സസുകളും.

ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന ഫംഗ്ഷൻ "foo" നടപ്പിലാക്കൽ:

സ്റ്റാറ്റിക് ഇൻറ്റ് എ, ബി, സി;
int foo (അസാധുവാണ്) { തിരികെ a + b + c; }

സാധാരണയായി മൂന്ന് വേരിയബിളുകളുടെയും വിലാസങ്ങൾ കണക്കാക്കുന്നു, എന്നാൽ നിങ്ങൾ അത് സമാഹരിച്ചാൽ
-fsection-ആങ്കറുകൾ, പകരം ഒരു സാധാരണ ആങ്കർ പോയിന്റിൽ നിന്ന് വേരിയബിളുകൾ ആക്സസ് ചെയ്യുന്നു. ദി
പ്രഭാവം ഇനിപ്പറയുന്ന സ്യൂഡോകോഡിന് സമാനമാണ് (ഇത് സാധുവായ C അല്ല):

int foo (അസാധു)
{
രജിസ്റ്റർ int *xr = &x;
തിരികെ xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
}

എല്ലാ ലക്ഷ്യങ്ങളും ഈ ഓപ്ഷനെ പിന്തുണയ്ക്കുന്നില്ല.

--പരം പേര്=മൂല്യം
ചില സ്ഥലങ്ങളിൽ, ഒപ്റ്റിമൈസേഷന്റെ അളവ് നിയന്ത്രിക്കാൻ ജിസിസി വിവിധ സ്ഥിരാങ്കങ്ങൾ ഉപയോഗിക്കുന്നു
ചെയ്തു. ഉദാഹരണത്തിന്, GCC ഒരു നിശ്ചിതതിലധികം ഉൾക്കൊള്ളുന്ന ഫംഗ്‌ഷനുകൾ ഇൻലൈൻ ചെയ്യുന്നില്ല
നിർദ്ദേശങ്ങളുടെ എണ്ണം. കമാൻഡ് ലൈനിൽ നിങ്ങൾക്ക് ഈ സ്ഥിരാങ്കങ്ങളിൽ ചിലത് നിയന്ത്രിക്കാനാകും
ഉപയോഗിച്ച് --പരം ഓപ്ഷൻ.

നിർദ്ദിഷ്ട പാരാമീറ്ററുകളുടെ പേരുകൾ, മൂല്യങ്ങളുടെ അർത്ഥം എന്നിവയുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു
കംപൈലറിന്റെ ഇന്റേണലുകൾ, ഭാവിയിൽ അറിയിപ്പ് കൂടാതെ മാറ്റത്തിന് വിധേയമാണ്
റിലീസുകൾ.

ഓരോ സാഹചര്യത്തിലും, ദി മൂല്യം ഒരു പൂർണ്ണസംഖ്യയാണ്. എന്നതിനായുള്ള അനുവദനീയമായ തിരഞ്ഞെടുപ്പുകൾ പേര് ആകുന്നു:

പ്രവചിക്കാവുന്ന-ശാഖ-ഫലം
ഈ പരിധിയേക്കാൾ കുറഞ്ഞ പ്രോബബിലിറ്റിയിൽ ബ്രാഞ്ച് എടുക്കുമെന്ന് പ്രവചിക്കുമ്പോൾ
(ശതമാനത്തിൽ), അപ്പോൾ അത് നന്നായി പ്രവചിക്കാവുന്നതായി കണക്കാക്കുന്നു. സ്ഥിരസ്ഥിതി 10 ആണ്.

max-crossjump-edges
ക്രോസ്-ജമ്പിംഗിനായി പരിഗണിക്കേണ്ട ഇൻകമിംഗ് എഡ്ജുകളുടെ പരമാവധി എണ്ണം. അൽഗോരിതം
ഉപയോഗിച്ചത് -ഫ്ക്രോസ്ജമ്പിംഗ് ഓരോ ബ്ലോക്കിലേക്കും ഇൻകമിംഗ് ചെയ്യുന്ന അരികുകളുടെ എണ്ണത്തിൽ O(N^2) ആണ്.
വർദ്ധിച്ചുവരുന്ന മൂല്യങ്ങൾ അർത്ഥമാക്കുന്നത് കൂടുതൽ ആക്രമണാത്മക ഒപ്റ്റിമൈസേഷൻ, സമാഹരണ സമയം ഉണ്ടാക്കുന്നു
എക്സിക്യൂട്ടബിൾ വലുപ്പത്തിൽ ഒരുപക്ഷേ ചെറിയ മെച്ചപ്പെടുത്തലിനൊപ്പം വർദ്ധിപ്പിക്കുക.

മിനി-ക്രോസ്ജമ്പ്-ഇൻസ്
രണ്ട് ബ്ലോക്കുകളുടെ അവസാനം പൊരുത്തപ്പെടുത്തേണ്ട നിർദ്ദേശങ്ങളുടെ ഏറ്റവും കുറഞ്ഞ എണ്ണം
അവയിൽ ക്രോസ്-ജമ്പിംഗ് നടത്തുന്നതിന് മുമ്പ്. കേസിൽ ഈ മൂല്യം അവഗണിക്കപ്പെടുന്നു
എവിടെ നിന്ന് ക്രോസ്-ജമ്പ് ചെയ്യുന്ന ബ്ലോക്കിലെ എല്ലാ നിർദ്ദേശങ്ങളും പൊരുത്തപ്പെടുന്നു. ദി
സ്ഥിര മൂല്യം 5 ആണ്.

max-grow-copy-bb-insns
പകരം അടിസ്ഥാന ബ്ലോക്കുകൾ പകർത്തുമ്പോൾ പരമാവധി കോഡ് വലിപ്പം വിപുലീകരണ ഘടകം
ചാടുന്നു. വിപുലീകരണം ഒരു ജമ്പ് നിർദ്ദേശവുമായി ബന്ധപ്പെട്ടതാണ്. സ്ഥിര മൂല്യം ആണ്
8.

max-goto-duplication-insns
ഒരു ബ്ലോക്കിലേക്ക് ഡ്യൂപ്ലിക്കേറ്റ് ചെയ്യാനുള്ള നിർദ്ദേശങ്ങളുടെ പരമാവധി എണ്ണം a
കണക്കാക്കിയ ഗോട്ടോ. നിരവധി പാസുകളിൽ O(N^2) സ്വഭാവം ഒഴിവാക്കാൻ, GCC ഘടകങ്ങൾ
കംപൈലേഷൻ പ്രക്രിയയുടെ തുടക്കത്തിൽ ഗോട്ടോകൾ കമ്പ്യൂട്ട് ചെയ്‌തു, വൈകാതെ അവയെ അൺഫാക്ടർ ചെയ്യുന്നു
സാധ്യമാണ്. അടിസ്ഥാന ബ്ലോക്കുകളുടെ അറ്റത്ത് മാത്രം കണക്കുകൂട്ടിയ ജമ്പുകൾ മാത്രം
goto-duplication-insns unfacted ആണ്. സ്ഥിര മൂല്യം 8 ആണ്.

max-delay-slot-insn-search
ഒരു നിർദ്ദേശത്തിനായി നോക്കുമ്പോൾ പരിഗണിക്കേണ്ട പരമാവധി നിർദ്ദേശങ്ങളുടെ എണ്ണം
ഒരു ഡിലേ സ്ലോട്ട് പൂരിപ്പിക്കുക. നിർദ്ദേശങ്ങളുടെ അനിയന്ത്രിതമായ എണ്ണം ഇതിൽ കൂടുതലാണെങ്കിൽ
തിരഞ്ഞു, കാലതാമസം സ്ലോട്ട് പൂരിപ്പിക്കുന്നതിൽ നിന്നുള്ള സമയ ലാഭം വളരെ കുറവാണ്, അതിനാൽ നിർത്തുക
തിരയുന്നു. വർദ്ധിച്ചുവരുന്ന മൂല്യങ്ങൾ അർത്ഥമാക്കുന്നത് കൂടുതൽ ആക്രമണാത്മക ഒപ്റ്റിമൈസേഷനാണ്
നിർവ്വഹണ സമയത്തിലെ ചെറിയ മെച്ചപ്പെടുത്തലിനൊപ്പം സമാഹാര സമയം വർദ്ധിക്കുന്നു.

max-delay-slot-live-search
കാലതാമസം സ്ലോട്ടുകൾ പൂരിപ്പിക്കാൻ ശ്രമിക്കുമ്പോൾ, പരിഗണിക്കേണ്ട നിർദ്ദേശങ്ങളുടെ പരമാവധി എണ്ണം
സാധുവായ തത്സമയ രജിസ്റ്റർ വിവരങ്ങളുള്ള ഒരു ബ്ലോക്കിനായി തിരയുമ്പോൾ. ഇത് വർദ്ധിപ്പിക്കുന്നു
ഏകപക്ഷീയമായി തിരഞ്ഞെടുത്ത മൂല്യം അർത്ഥമാക്കുന്നത് കൂടുതൽ ആക്രമണാത്മക ഒപ്റ്റിമൈസേഷൻ, വർദ്ധിപ്പിക്കൽ എന്നാണ്
സമാഹാര സമയം. കാലതാമസം സ്ലോട്ട് കോഡ് ആയിരിക്കുമ്പോൾ ഈ പരാമീറ്റർ നീക്കം ചെയ്യണം
കൺട്രോൾ-ഫ്ലോ ഗ്രാഫ് നിലനിർത്താൻ മാറ്റിയെഴുതി.

max-gcse-മെമ്മറി
നിർവ്വഹിക്കുന്നതിനായി അനുവദിക്കാവുന്ന ഏകദേശ പരമാവധി മെമ്മറി
ഗ്ലോബൽ കോമൺ സബ് എക്സ്പ്രഷൻ എലിമിനേഷൻ ഒപ്റ്റിമൈസേഷൻ. കൂടുതൽ മെമ്മറി എങ്കിൽ
വ്യക്തമാക്കിയത് ആവശ്യമാണ്, ഒപ്റ്റിമൈസേഷൻ ചെയ്തിട്ടില്ല.

max-gcse-incertion-ratio
എക്‌സ്‌പ്രഷൻ ഉൾപ്പെടുത്തലുകളുടെയും ഇല്ലാതാക്കലുകളുടെയും അനുപാതം ഈ മൂല്യത്തേക്കാൾ വലുതാണെങ്കിൽ
ഏതെങ്കിലും പദപ്രയോഗം, തുടർന്ന് RTL PRE എക്‌സ്‌പ്രഷൻ ചേർക്കുകയോ നീക്കം ചെയ്യുകയോ ചെയ്യുന്നു, അങ്ങനെ അത് ഉപേക്ഷിക്കുന്നു
പ്രബോധന സ്ട്രീമിൽ ഭാഗികമായി അനാവശ്യമായ കണക്കുകൂട്ടലുകൾ. സ്ഥിര മൂല്യം ആണ്
20.

max-pending-list-length
ഫ്ലഷ് ചെയ്യുന്നതിന് മുമ്പ്, തീർച്ചപ്പെടുത്താത്ത ഡിപൻഡൻസികളുടെ പരമാവധി എണ്ണം ഷെഡ്യൂളിംഗ് അനുവദിക്കുന്നു
നിലവിലെ അവസ്ഥയും ആരംഭിക്കുന്നതും. കുറച്ച് ശാഖകളോ കോളുകളോ ഉള്ള വലിയ ഫംഗ്‌ഷനുകൾക്ക് കഴിയും
മെമ്മറിയും വിഭവങ്ങളും അനാവശ്യമായി ഉപഭോഗം ചെയ്യുന്ന അമിതമായ വലിയ ലിസ്റ്റുകൾ സൃഷ്ടിക്കുക.

max-modulo-backtrack-attempts
മോഡുലോ ചെയ്യുമ്പോൾ ഷെഡ്യൂളർ ചെയ്യേണ്ട പരമാവധി ബാക്ക്ട്രാക്ക് ശ്രമങ്ങൾ
ഒരു ലൂപ്പ് ഷെഡ്യൂൾ ചെയ്യുന്നു. വലിയ മൂല്യങ്ങൾ കംപൈലേഷൻ സമയം ക്രമാതീതമായി വർദ്ധിപ്പിക്കും.

max-inline-insns-single
ജിസിസിയിൽ ഉപയോഗിക്കുന്ന ട്രീ ഇൻലൈനറിനെ നിരവധി പരാമീറ്ററുകൾ നിയന്ത്രിക്കുന്നു. ഈ നമ്പർ സജ്ജമാക്കുന്നു
നിർദ്ദേശങ്ങളുടെ പരമാവധി എണ്ണം (ജിസിസിയുടെ ആന്തരിക പ്രാതിനിധ്യത്തിൽ കണക്കാക്കുന്നത്) a
ഇൻലൈനിംഗിനായി ട്രീ ഇൻലൈനർ പരിഗണിക്കുന്ന ഒരൊറ്റ പ്രവർത്തനം. ഇത് മാത്രമേ ബാധിക്കുകയുള്ളൂ
ഇൻലൈൻ പ്രഖ്യാപിച്ച ഫംഗ്‌ഷനുകളും ക്ലാസ് ഡിക്ലറേഷനിൽ (C++) നടപ്പിലാക്കിയ രീതികളും.
സ്ഥിര മൂല്യം 400 ആണ്.

max-inline-insns-auto
നിങ്ങൾ ഉപയോഗിക്കുമ്പോൾ -ഫിൻലൈൻ-ഫംഗ്ഷനുകൾ (ഉൾപ്പെടുന്നു -O3), ഒരുപാട് പ്രവർത്തനങ്ങൾ
അല്ലാത്തപക്ഷം കംപൈലർ ഇൻലൈനിംഗിനായി പരിഗണിക്കില്ല, അന്വേഷിക്കുന്നു. ലേക്ക്
ആ ഫംഗ്‌ഷനുകൾ, ഫംഗ്‌ഷനുകളെ അപേക്ഷിച്ച് വ്യത്യസ്തമായ (കൂടുതൽ നിയന്ത്രിത) പരിധി
പ്രഖ്യാപിച്ച ഇൻലൈൻ അപേക്ഷിക്കാം. സ്ഥിര മൂല്യം 40 ആണ്.

ഇൻലൈൻ-മിനിറ്റ്-വേഗത
കോളർ + കോളി റൺടൈം ഇത് കവിയുമ്പോൾ, കണക്കാക്കിയ പ്രകടന മെച്ചപ്പെടുത്തൽ
ത്രെഷോൾഡ് (മുൻകൂട്ടി), ഫംഗ്ഷൻ പരിധി പരിഗണിക്കാതെ ഇൻലൈൻ ചെയ്യാൻ കഴിയും
--പരം max-inline-insns-single ഒപ്പം --പരം max-inline-insns-auto.

വലിയ-ഫംഗ്ഷൻ-ഇൻസ്ൻസ്
വലിയ ഫംഗ്‌ഷനുകൾ വ്യക്തമാക്കുന്ന പരിധി. ഈ പരിധിയിൽ കൂടുതലുള്ള പ്രവർത്തനങ്ങൾക്ക്
ഇൻലൈനിംഗിന് ശേഷം, ഇൻലൈനിംഗ് പരിമിതപ്പെടുത്തിയിരിക്കുന്നു --പരം വലിയ-പ്രവർത്തന-വളർച്ച. ഈ
പരാമീറ്റർ പ്രധാനമായും ഉപയോഗപ്രദമാണ്, അല്ലാത്തത് മൂലമുണ്ടാകുന്ന തീവ്രമായ കംപൈലേഷൻ സമയം ഒഴിവാക്കാൻ
പിൻഭാഗം ഉപയോഗിക്കുന്ന ലീനിയർ അൽഗോരിതങ്ങൾ. സ്ഥിര മൂല്യം 2700 ആണ്.

വലിയ-പ്രവർത്തന-വളർച്ച
ശതമാനത്തിൽ ഇൻലൈനിംഗ് മൂലമുണ്ടാകുന്ന വലിയ പ്രവർത്തനത്തിന്റെ പരമാവധി വളർച്ച വ്യക്തമാക്കുന്നു. ദി
ഡിഫോൾട്ട് മൂല്യം 100 ആണ്, ഇത് വലിയ ഫംഗ്ഷൻ വളർച്ചയെ ഒറിജിനലിന്റെ 2.0 മടങ്ങായി പരിമിതപ്പെടുത്തുന്നു
വലുപ്പം.

വലിയ-യൂണിറ്റ്-ഇൻസ്
വലിയ വിവർത്തന യൂണിറ്റ് വ്യക്തമാക്കുന്ന പരിധി. യൂണിറ്റുകളുടെ ഇൻലൈനിംഗ് മൂലമുണ്ടാകുന്ന വളർച്ച
ഈ പരിധിയേക്കാൾ വലുത് പരിമിതപ്പെടുത്തിയിരിക്കുന്നു --പരം ഇൻലൈൻ-യൂണിറ്റ്-വളർച്ച. ചെറിയ യൂണിറ്റുകൾക്ക്
ഇത് വളരെ ഇറുകിയതായിരിക്കാം. ഉദാഹരണത്തിന്, ഫംഗ്ഷൻ എ അടങ്ങുന്ന ഒരു യൂണിറ്റ് പരിഗണിക്കുക
അത് ഇൻലൈൻ ആണ്, B എന്നത് A-യെ മൂന്ന് തവണ വിളിക്കുന്നു. Aയുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ B ചെറുതാണെങ്കിൽ,
യൂണിറ്റിന്റെ വളർച്ച 300% ആണ്, എന്നിട്ടും അത്തരം ഇൻലൈനിംഗ് വളരെ വിവേകപൂർണ്ണമാണ്. വളരെ വലുതായി
ചെറിയ ഇൻലൈനബിൾ ഫംഗ്‌ഷനുകൾ അടങ്ങുന്ന യൂണിറ്റുകൾ, എന്നിരുന്നാലും, മൊത്തത്തിലുള്ള യൂണിറ്റ് വളർച്ച
കോഡ് വലുപ്പത്തിന്റെ എക്‌സ്‌പോണൻഷ്യൽ സ്‌ഫോടനം ഒഴിവാക്കാൻ പരിധി ആവശ്യമാണ്. അങ്ങനെ ചെറിയവയ്ക്ക്
യൂണിറ്റുകൾ, വലിപ്പം വർദ്ധിച്ചു --പരം വലിയ-യൂണിറ്റ്-ഇൻസ് അപേക്ഷിക്കുന്നതിന് മുമ്പ് --പരം
ഇൻലൈൻ-യൂണിറ്റ്-വളർച്ച. സ്ഥിരസ്ഥിതി 10000 ആണ്.

ഇൻലൈൻ-യൂണിറ്റ്-വളർച്ച
ഇൻലൈനിംഗ് മൂലമുണ്ടാകുന്ന കംപൈലേഷൻ യൂണിറ്റിന്റെ പരമാവധി മൊത്തത്തിലുള്ള വളർച്ച വ്യക്തമാക്കുന്നു. ദി
ഡിഫോൾട്ട് മൂല്യം 20 ആണ്, ഇത് യൂണിറ്റ് വളർച്ചയെ യഥാർത്ഥ വലുപ്പത്തിന്റെ 1.2 മടങ്ങായി പരിമിതപ്പെടുത്തുന്നു. തണുപ്പ്
ഫംഗ്‌ഷനുകൾ (ഒരു ആട്രിബ്യൂട്ട് വഴിയോ പ്രൊഫൈൽ ഫീഡ്‌ബാക്ക് വഴിയോ തണുപ്പ് എന്ന് അടയാളപ്പെടുത്തിയിരിക്കുന്നു) അല്ല
യൂണിറ്റ് വലുപ്പത്തിൽ കണക്കാക്കുന്നു.

ipcp-യൂണിറ്റ്-വളർച്ച
ഇന്റർപ്രൊസീജറൽ മൂലമുണ്ടാകുന്ന കംപൈലേഷൻ യൂണിറ്റിന്റെ പരമാവധി മൊത്തത്തിലുള്ള വളർച്ച വ്യക്തമാക്കുന്നു
നിരന്തരമായ പ്രചരണം. ഡിഫോൾട്ട് മൂല്യം 10 ​​ആണ്, ഇത് യൂണിറ്റ് വളർച്ച 1.1 ആയി പരിമിതപ്പെടുത്തുന്നു
യഥാർത്ഥ വലിപ്പത്തിന്റെ ഇരട്ടി.

വലിയ സ്റ്റാക്ക് ഫ്രെയിം
വലിയ സ്റ്റാക്ക് ഫ്രെയിമുകൾ വ്യക്തമാക്കുന്ന പരിധി. ഇൻലൈൻ ചെയ്യുമ്പോൾ അൽഗോരിതം ശ്രമിക്കുന്നു
ഈ പരിധിക്കപ്പുറം വളരാതിരിക്കാൻ. സ്ഥിര മൂല്യം 256 ബൈറ്റുകൾ ആണ്.

വലിയ-സ്റ്റാക്ക്-ഫ്രെയിം-വളർച്ച
ശതമാനത്തിൽ ഇൻലൈനിംഗ് മൂലമുണ്ടാകുന്ന വലിയ സ്റ്റാക്ക് ഫ്രെയിമുകളുടെ പരമാവധി വളർച്ച വ്യക്തമാക്കുന്നു.
ഡിഫോൾട്ട് മൂല്യം 1000 ആണ്, ഇത് വലിയ സ്റ്റാക്ക് ഫ്രെയിം വളർച്ചയെ 11 മടങ്ങായി പരിമിതപ്പെടുത്തുന്നു
യഥാർത്ഥ വലിപ്പം.

max-inline-insns-recursive
max-inline-insns-recursive-auto
ഒരു സെൽഫ്-ലൈൻ-ന് പുറത്തുള്ള ഒരു പകർപ്പ് നിർദ്ദേശങ്ങളുടെ പരമാവധി എണ്ണം വ്യക്തമാക്കുന്നു
ആവർത്തന ഇൻലൈനിംഗ് നടത്തുന്നതിലൂടെ ആവർത്തന ഇൻലൈൻ ഫംഗ്‌ഷനിലേക്ക് വളരാൻ കഴിയും.

--പരം max-inline-insns-recursive ഇൻലൈൻ പ്രഖ്യാപിച്ച ഫംഗ്‌ഷനുകൾക്ക് ബാധകമാണ്. വേണ്ടി
ഫംഗ്‌ഷനുകൾ ഇൻലൈനായി പ്രഖ്യാപിച്ചിട്ടില്ല, ആവർത്തന ഇൻലൈനിംഗ് സംഭവിക്കുമ്പോൾ മാത്രമേ സംഭവിക്കൂ
-ഫിൻലൈൻ-ഫംഗ്ഷനുകൾ (ഉൾപ്പെടുന്നു -O3) പ്രവർത്തനക്ഷമമാക്കി; --പരം max-inline-insns-
ആവർത്തന-യാന്ത്രിക പകരം ബാധകമാണ്. സ്ഥിര മൂല്യം 450 ആണ്.

max-inline-recursive-depth
max-inline-recursive-depth-auto
ആവർത്തന ഇൻലൈനിംഗിനായി ഉപയോഗിക്കുന്ന പരമാവധി റിക്കർഷൻ ഡെപ്ത് വ്യക്തമാക്കുന്നു.

--പരം max-inline-recursive-depth ഇൻലൈൻ പ്രഖ്യാപിച്ച ഫംഗ്‌ഷനുകൾക്ക് ബാധകമാണ്. വേണ്ടി
ഫംഗ്‌ഷനുകൾ ഇൻലൈനായി പ്രഖ്യാപിച്ചിട്ടില്ല, ആവർത്തന ഇൻലൈനിംഗ് സംഭവിക്കുമ്പോൾ മാത്രമേ സംഭവിക്കൂ
-ഫിൻലൈൻ-ഫംഗ്ഷനുകൾ (ഉൾപ്പെടുന്നു -O3) പ്രവർത്തനക്ഷമമാക്കി; --പരം max-inline-recursive-
ആഴം-ഓട്ടോ പകരം ബാധകമാണ്. സ്ഥിര മൂല്യം 8 ആണ്.

മിനി-ഇൻലൈൻ-ആവർത്തന-സംഭാവ്യത
ആഴത്തിലുള്ള ആവർത്തനമുള്ള പ്രവർത്തനത്തിന് മാത്രമേ റിക്കർസീവ് ഇൻലൈനിംഗ് ലാഭകരമാകൂ
ശരാശരി, വർദ്ധിപ്പിച്ച് ചെറിയ റികർഷൻ ഡെപ്ത് ഉള്ള പ്രവർത്തനത്തിന് ദോഷം ചെയ്യും
മറ്റ് ഒപ്റ്റിമൈസറുകൾക്കുള്ള ഫംഗ്ഷൻ ബോഡിയുടെ പ്രോലോഗ് വലുപ്പം അല്ലെങ്കിൽ സങ്കീർണ്ണത.

പ്രൊഫൈൽ ഫീഡ്‌ബാക്ക് ലഭ്യമാകുമ്പോൾ (കാണുക -fprofile-ജനറേറ്റ്) യഥാർത്ഥ ആവർത്തനം
തന്നിരിക്കുന്ന കോളിലൂടെ പ്രവർത്തനം ആവർത്തിക്കാനുള്ള സാധ്യതയിൽ നിന്ന് ആഴം ഊഹിക്കാം
ആവിഷ്കാരം. ഈ പരാമീറ്റർ ഇൻലൈനിംഗിനെ കോൾ എക്സ്പ്രഷനുകൾക്ക് മാത്രമായി പരിമിതപ്പെടുത്തുന്നു
പ്രോബബിലിറ്റി നൽകിയിരിക്കുന്ന പരിധി കവിയുന്നു (ശതമാനത്തിൽ). സ്ഥിര മൂല്യം 10 ​​ആണ്.

ആദ്യകാല-ഇൻലൈനിംഗ്-ഇൻസ്ൻസ്
ആദ്യകാല ഇൻലൈനറിന് ഉണ്ടാക്കാൻ കഴിയുന്ന വളർച്ച വ്യക്തമാക്കുക. ഫലത്തിൽ അത് തുക വർദ്ധിപ്പിക്കുന്നു
വലിയ അമൂർത്തീകരണ പിഴയുള്ള കോഡിന് ഇൻലൈനിംഗ്. സ്ഥിര മൂല്യം 14 ​​ആണ്.

പരമാവധി-ആദ്യകാല-ഇൻലൈനർ-ആവർത്തനങ്ങൾ
ആദ്യകാല ഇൻലൈനറിന്റെ ആവർത്തനങ്ങളുടെ പരിധി. ഇത് അടിസ്ഥാനപരമായി എണ്ണം പരിമിതപ്പെടുത്തുന്നു
നെസ്റ്റഡ് പരോക്ഷ കോളുകൾ ആദ്യകാല ഇൻലൈനറിന് പരിഹരിക്കാനാകും. ആഴത്തിലുള്ള ചങ്ങലകൾ ഇപ്പോഴും ഉണ്ട്
വൈകി ഇൻലൈനിംഗ് കൈകാര്യം ചെയ്യുന്നു.

comdat-sharing-probability
കോംഡാറ്റ് ദൃശ്യപരതയ്‌ക്കൊപ്പം C++ ഇൻലൈൻ ഫംഗ്‌ഷനുള്ള പ്രോബബിലിറ്റി (ശതമാനത്തിൽ).
ഒന്നിലധികം കംപൈലേഷൻ യൂണിറ്റുകളിലുടനീളം പങ്കിട്ടു. സ്ഥിര മൂല്യം 20 ആണ്.

profile-func-internal-id
പ്രൊഫൈൽ ഡാറ്റാബേസിൽ ഫംഗ്‌ഷൻ ഇന്റേണൽ ഐഡി ഉപയോഗിക്കണമോ എന്ന് നിയന്ത്രിക്കുന്നതിനുള്ള ഒരു പാരാമീറ്റർ
തിരയൽ. മൂല്യം 0 ആണെങ്കിൽ, കംപൈലർ പ്രവർത്തനത്തെ അടിസ്ഥാനമാക്കിയുള്ള ഒരു ഐഡി ഉപയോഗിക്കുന്നു
അസംബ്ലറുടെ പേരും ഫയലിന്റെ പേരും, ഇത് പഴയ പ്രൊഫൈൽ ഡാറ്റയെ ഉറവിടത്തോട് കൂടുതൽ സഹിഷ്ണുതയുള്ളതാക്കുന്നു
ഫംഗ്‌ഷൻ പുനഃക്രമീകരിക്കൽ തുടങ്ങിയ മാറ്റങ്ങൾ. ഡിഫോൾട്ട് മൂല്യം 0 ആണ്.

മിനി-വെക്റ്റ്-ലൂപ്പ്-ബൗണ്ട്
ലൂപ്പുകൾ വെക്‌ടറൈസ് ചെയ്യാത്ത ഏറ്റവും കുറഞ്ഞ ആവർത്തനങ്ങളുടെ എണ്ണം
-ftree-vectorize ഉപയോഗിക്കുന്നു. വെക്‌ടറൈസേഷനു ശേഷമുള്ള ആവർത്തനങ്ങളുടെ എണ്ണം ആവശ്യമാണ്
വെക്‌ടറൈസേഷൻ അനുവദിക്കുന്നതിന് ഈ ഓപ്‌ഷൻ വ്യക്തമാക്കിയ മൂല്യത്തേക്കാൾ വലുതായിരിക്കണം. ദി
സ്ഥിര മൂല്യം 0 ആണ്.

gcse-cost-distance-ratio
ഒരു എക്സ്പ്രഷൻ നീക്കാൻ കഴിയുന്ന പരമാവധി ദൂരം കണക്കാക്കുന്നതിനുള്ള സ്കെയിലിംഗ് ഘടകം
GCSE ഒപ്റ്റിമൈസേഷനുകൾ. കോഡ് ഹോയിസ്റ്റിംഗ് പാസിൽ മാത്രമാണ് ഇത് നിലവിൽ പിന്തുണയ്ക്കുന്നത്.
വലിയ അനുപാതം, കൂടുതൽ ആക്രമണാത്മക കോഡ് ഹോസ്‌റ്റിംഗ് ലളിതമാണ്
എക്സ്പ്രഷനുകൾ, അതായത്, വില കുറവുള്ള എക്സ്പ്രഷനുകൾ gcse-അനിയന്ത്രിതമായ-
ചെലവ്. 0 വ്യക്തമാക്കുന്നത് ലളിതമായ എക്സ്പ്രഷനുകളുടെ ഹോയിസ്റ്റിംഗ് പ്രവർത്തനരഹിതമാക്കുന്നു. സ്ഥിര മൂല്യം ആണ്
10.

gcse-അനിയന്ത്രിതമായ ചെലവ്
ചെലവ്, ഒരു സാധാരണ മെഷീൻ നിർദ്ദേശത്തിന്റെ വിലയായി ഏകദേശം കണക്കാക്കുന്നു
ഏത് GCSE ഒപ്റ്റിമൈസേഷനുകൾ ഒരു എക്‌സ്‌പ്രഷനു സഞ്ചരിക്കാനാകുന്ന ദൂരത്തെ നിയന്ത്രിക്കുന്നില്ല.
ഇത് നിലവിൽ കോഡ് ഹോസ്റ്റിംഗ് പാസിൽ മാത്രമാണ് പിന്തുണയ്ക്കുന്നത്. ചെലവ് കുറയും,
കൂടുതൽ ആക്രമണാത്മക കോഡ് ഹോസ്‌റ്റിംഗ് ആണ്. 0 വ്യക്തമാക്കുന്നത് എല്ലാ എക്സ്പ്രഷനുകളും അനുവദിക്കുന്നു
അനിയന്ത്രിതമായ ദൂരങ്ങൾ യാത്ര ചെയ്യുക. സ്ഥിര മൂല്യം 3 ആണ്.

പരമാവധി-ഹോയിസ്റ്റ്-ആഴം
ഭാവങ്ങൾ ഉയർത്താൻ ഡോമിനേറ്റർ ട്രീയിലെ തിരയലിന്റെ ആഴം. ഇത് ഉപയോഗിക്കുന്നു
ഹോയിസ്റ്റിംഗ് അൽഗോരിതത്തിൽ ക്വാഡ്രാറ്റിക് സ്വഭാവം ഒഴിവാക്കാൻ. 0 ന്റെ മൂല്യം പരിമിതപ്പെടുത്തുന്നില്ല
തിരയലിൽ, പക്ഷേ വലിയ ഫംഗ്‌ഷനുകളുടെ സമാഹാരം മന്ദഗതിയിലാക്കിയേക്കാം. സ്ഥിര മൂല്യം
ആണ്.

max-tail-merge-comparisons
ഒരു ബിബിയുമായി താരതമ്യപ്പെടുത്തുന്നതിന് സമാനമായ ബിബികളുടെ പരമാവധി തുക. ഒഴിവാക്കാൻ ഇത് ഉപയോഗിക്കുന്നു
ട്രീ ടെയിൽ ലയനത്തിലെ ചതുരാകൃതിയിലുള്ള സ്വഭാവം. സ്ഥിര മൂല്യം 10 ​​ആണ്.

max-tail-merge-iterations
ഫംഗ്ഷനിലൂടെയുള്ള പാസിന്റെ പരമാവധി ആവർത്തനങ്ങളുടെ അളവ്. ഇത് പതിവാണ്
ട്രീ ടെയിൽ ലയനത്തിൽ സമാഹരിക്കുന്ന സമയം പരിമിതപ്പെടുത്തുക. സ്ഥിര മൂല്യം 2 ആണ്.

max-unrolled-insns
ഒരു ലൂപ്പ് അൺറോൾ ചെയ്യേണ്ട പരമാവധി നിർദ്ദേശങ്ങളുടെ എണ്ണം. ഒരു ലൂപ്പ് എങ്കിൽ
അൺറോൾ ചെയ്തു, ഈ പരാമീറ്റർ ലൂപ്പ് കോഡ് എത്ര തവണയാണെന്ന് നിർണ്ണയിക്കുന്നു
ചുരുട്ടിയത്.

max-average-unrolled-insns
അവയുടെ നിർവ്വഹണത്തിന്റെ സാധ്യതകളാൽ പക്ഷപാതമുള്ള നിർദ്ദേശങ്ങളുടെ പരമാവധി എണ്ണം
ഒരു ലൂപ്പ് അൺറോൾ ചെയ്യേണ്ടി വന്നേക്കാം. ഒരു ലൂപ്പ് അൺറോൾ ചെയ്താൽ, ഈ പരാമീറ്ററും
ലൂപ്പ് കോഡ് എത്ര തവണ അൺറോൾ ചെയ്യണമെന്ന് നിർണ്ണയിക്കുന്നു.

പരമാവധി-അൺറോൾ-ടൈംസ്
ഒരു ലൂപ്പിന്റെ പരമാവധി അൺറോളിംഗുകളുടെ എണ്ണം.

max-peeled-insns
ഒരു ലൂപ്പ് തൊലി കളയേണ്ട പരമാവധി നിർദ്ദേശങ്ങളുടെ എണ്ണം. ഒരു ലൂപ്പ് എങ്കിൽ
തൊലികളഞ്ഞത്, ഈ പരാമീറ്റർ ലൂപ്പ് കോഡ് എത്ര തവണ തൊലിയുരിച്ചുവെന്ന് നിർണ്ണയിക്കുന്നു.

പരമാവധി-പീൽ-ടൈംസ്
ഒരൊറ്റ ലൂപ്പിന്റെ പരമാവധി എണ്ണം പീലിങ്ങുകൾ.

പരമാവധി-തൊലി-ശാഖകൾ
തൊലികളഞ്ഞ അനുക്രമത്തിലൂടെ ചൂടുള്ള പാതയിൽ പരമാവധി എണ്ണം ശാഖകൾ.

max-completely-peeled-insns
പൂർണ്ണമായും തൊലികളഞ്ഞ ലൂപ്പിന്റെ പരമാവധി എണ്ണം.

പരമാവധി-കംപ്ലീറ്റ്ലി-പീൽ-ടൈംസ്
പൂർണ്ണമായ പുറംതൊലിക്ക് അനുയോജ്യമായ ഒരു ലൂപ്പിന്റെ ആവർത്തനങ്ങളുടെ പരമാവധി എണ്ണം.

max-completely-peel-loop-nest-depth
പൂർണ്ണമായ പുറംതൊലിക്ക് അനുയോജ്യമായ ഒരു ലൂപ്പ് നെസ്റ്റ് പരമാവധി ആഴം.

max-unswitch-insns
സ്വിച്ച് ചെയ്യാത്ത ലൂപ്പിന്റെ പരമാവധി എണ്ണം.

max-unswitch-level
ഒരൊറ്റ ലൂപ്പിൽ മാറാത്ത ശാഖകളുടെ പരമാവധി എണ്ണം.

ചെറിയ ചെലവേറിയ
ലൂപ്പ് മാറ്റമില്ലാത്ത ചലനത്തിലെ വിലയേറിയ പദപ്രയോഗത്തിന്റെ ഏറ്റവും കുറഞ്ഞ വില.

എല്ലാ സ്ഥാനാർത്ഥികളെയും പരിഗണിക്കുക
ഇൻഡക്ഷൻ വേരിയബിളുകൾക്കായുള്ള കാൻഡിഡേറ്റുകളുടെ എണ്ണത്തിൽ ബന്ധിപ്പിച്ചിരിക്കുന്നു, അതിന് താഴെ എല്ലാ കാൻഡിഡേറ്റുകളും
ഇൻഡക്ഷൻ വേരിയബിൾ ഒപ്റ്റിമൈസേഷനിലെ ഓരോ ഉപയോഗത്തിനും പരിഗണിക്കപ്പെടുന്നു. ഉണ്ടെങ്കിൽ
ഇതിനേക്കാൾ കൂടുതൽ സ്ഥാനാർത്ഥികൾ, ഏറ്റവും പ്രസക്തമായവരെ മാത്രമേ ഒഴിവാക്കാൻ പരിഗണിക്കൂ
ക്വാഡ്രാറ്റിക് സമയ സങ്കീർണ്ണത.

iv-max-considered-ഉപയോഗങ്ങൾ
ഇൻഡക്ഷൻ വേരിയബിൾ ഒപ്റ്റിമൈസേഷനുകൾ കൂടുതൽ ഇൻഡക്ഷൻ അടങ്ങിയിരിക്കുന്ന ലൂപ്പുകളെ ഉപേക്ഷിക്കുന്നു
വേരിയബിൾ ഉപയോഗങ്ങൾ.

iv-എല്ലായ്‌പ്പോഴും-പ്രൂൺ-കാൻഡ്-സെറ്റ്-ബൗണ്ട്
സെറ്റിലെ സ്ഥാനാർത്ഥികളുടെ എണ്ണം ഈ മൂല്യത്തേക്കാൾ ചെറുതാണെങ്കിൽ, എല്ലായ്പ്പോഴും ശ്രമിക്കുക
പുതിയൊരെണ്ണം ചേർക്കുമ്പോൾ സെറ്റിൽ നിന്ന് അനാവശ്യ ivs നീക്കം ചെയ്യുക.

scev-max-expr-size
സ്കെയിലർ എവല്യൂഷൻസ് അനലൈസറിൽ ഉപയോഗിക്കുന്ന എക്‌സ്‌പ്രഷനുകളുടെ വലുപ്പത്തെ ആശ്രയിച്ചിരിക്കുന്നു. വലിയ
എക്സ്പ്രഷനുകൾ അനലൈസറിനെ മന്ദഗതിയിലാക്കുന്നു.

scev-max-expr-complexity
സ്കെയിലർ എവല്യൂഷൻസ് അനലൈസറിലെ എക്സ്പ്രഷനുകളുടെ സങ്കീർണ്ണതയെ ബന്ധിപ്പിച്ചിരിക്കുന്നു.
സങ്കീർണ്ണമായ പദപ്രയോഗങ്ങൾ അനലൈസറിനെ മന്ദഗതിയിലാക്കുന്നു.

omega-max-vars
ഒമേഗ കൺസ്ട്രൈന്റ് സിസ്റ്റത്തിലെ പരമാവധി എണ്ണം വേരിയബിളുകൾ. സ്ഥിര മൂല്യം
ആണ്.

omega-max-geqs
ഒമേഗ നിയന്ത്രണ സംവിധാനത്തിലെ അസമത്വങ്ങളുടെ പരമാവധി എണ്ണം. സ്ഥിരസ്ഥിതി
മൂല്യം 256 ആണ്.

omega-max-eqs
ഒമേഗ നിയന്ത്രണ സംവിധാനത്തിലെ പരമാവധി എണ്ണം തുല്യത. സ്ഥിര മൂല്യം
ആണ്.

ഒമേഗ-മാക്സ്-വൈൽഡ് കാർഡുകൾ
ഒമേഗ സോൾവറിന് തിരുകാൻ കഴിയുന്ന വൈൽഡ്കാർഡ് വേരിയബിളുകളുടെ പരമാവധി എണ്ണം.
സ്ഥിര മൂല്യം 18 ആണ്.

ഒമേഗ-ഹാഷ്-ടേബിൾ വലിപ്പം
ഒമേഗ സോൾവറിലെ ഹാഷ് ടേബിളിന്റെ വലുപ്പം. സ്ഥിര മൂല്യം 550 ആണ്.

ഒമേഗ-മാക്സ്-കീകൾ
ഒമേഗ സോൾവർ ഉപയോഗിക്കുന്ന കീകളുടെ പരമാവധി എണ്ണം. സ്ഥിര മൂല്യം 500 ആണ്.

ഒമേഗ-എലിമിനേറ്റ്-അനവധി-നിയന്ത്രണങ്ങൾ
1 ആയി സജ്ജീകരിക്കുമ്പോൾ, എല്ലാ അനാവശ്യ നിയന്ത്രണങ്ങളും ഇല്ലാതാക്കാൻ ചെലവേറിയ രീതികൾ ഉപയോഗിക്കുക. ദി
സ്ഥിര മൂല്യം 0 ആണ്.

vect-max-version-for-alignment-checks
ലൂപ്പ് ചെയ്യുമ്പോൾ നടത്താവുന്ന പരമാവധി എണ്ണം റൺ-ടൈം പരിശോധനകൾ
വെക്‌ടറൈസറിലെ വിന്യാസത്തിനുള്ള പതിപ്പ്.

vect-max-version-for-alias-checks
ലൂപ്പ് ചെയ്യുമ്പോൾ നടത്താവുന്ന പരമാവധി എണ്ണം റൺ-ടൈം പരിശോധനകൾ
വെക്‌ടറൈസറിൽ അപരനാമത്തിനുള്ള പതിപ്പ്.

vect-max-peeling-for-alignment
വെക്‌ടറൈസറിനായുള്ള ആക്‌സസ് അലൈൻമെന്റ് മെച്ചപ്പെടുത്തുന്നതിനുള്ള പരമാവധി എണ്ണം ലൂപ്പ് പീലുകൾ. മൂല്യം
-1 എന്നാൽ 'പരിധിയില്ല' എന്നാണ്.

ട്രാക്ക് ചെയ്യാൻ പരമാവധി ആവർത്തനങ്ങൾ
വിശകലനത്തിനായി ബ്രൂട്ട്-ഫോഴ്‌സ് അൽഗോരിതം ലൂപ്പിന്റെ പരമാവധി ആവർത്തനങ്ങളുടെ എണ്ണം
ലൂപ്പിന്റെ ആവർത്തനങ്ങളുടെ എണ്ണം വിലയിരുത്താൻ ശ്രമിക്കുന്നു.

hot-bb-count-ws-permille
ഒരു അടിസ്ഥാന ബ്ലോക്ക് പ്രൊഫൈൽ എണ്ണം നൽകിയിരിക്കുന്നതിലേക്ക് സംഭാവന ചെയ്താൽ അത് ചൂടായി കണക്കാക്കപ്പെടുന്നു
മുഴുവൻ പ്രൊഫൈൽ ചെയ്ത എക്സിക്യൂഷന്റെയും പെർമില്ലേജ് (അതായത് 0...1000).

hot-bb-frequency-fraction
അടിസ്ഥാന ബ്ലോക്ക് ഇൻ എക്‌സിക്യൂഷനുകളുടെ എൻട്രി ബ്ലോക്ക് ഫ്രീക്വൻസിയുടെ അംശം തിരഞ്ഞെടുക്കുക
അടിസ്ഥാന ബ്ലോക്ക് നൽകിയ ഫംഗ്‌ഷൻ ചൂടായി കണക്കാക്കേണ്ടതുണ്ട്.

പരമാവധി പ്രവചിച്ച ആവർത്തനങ്ങൾ
ഞങ്ങൾ സ്ഥിരമായി പ്രവചിക്കുന്ന ലൂപ്പ് ആവർത്തനങ്ങളുടെ പരമാവധി എണ്ണം. ഇതിൽ ഉപയോഗപ്രദമാണ്
ഒരു ഫംഗ്‌ഷനിൽ അറിയപ്പെടുന്ന ബൗണ്ടുള്ള ഒരൊറ്റ ലൂപ്പും മറ്റൊരു ലൂപ്പും അടങ്ങിയിരിക്കുന്ന സന്ദർഭങ്ങൾ
അജ്ഞാത ബന്ധനത്തോടെ. അറിയപ്പെടുന്ന ആവർത്തനങ്ങളുടെ എണ്ണം കൃത്യമായി പ്രവചിക്കപ്പെടുന്നു, അതേസമയം
ആവർത്തനങ്ങളുടെ അജ്ഞാത എണ്ണം ശരാശരി ഏകദേശം 10 ആണ്. ഇതിനർത്ഥം ലൂപ്പ് എന്നാണ്
അതിരുകളില്ലാതെ മറ്റൊന്നുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ കൃത്രിമമായി തണുപ്പ് കാണപ്പെടുന്നു.

അന്തർനിർമ്മിത-പ്രതീക്ഷ-സംഭാവ്യത
നിർദ്ദിഷ്‌ട മൂല്യമുള്ള പദപ്രയോഗത്തിന്റെ സംഭാവ്യത നിയന്ത്രിക്കുക. ഈ
പരാമീറ്റർ ഇൻപുട്ടായി ഒരു ശതമാനം (അതായത് 0 ... 100) എടുക്കുന്നു. ഡിഫോൾട്ട് പ്രോബബിലിറ്റി
90-ൽ അനുഭവപരമായി ലഭിച്ചതാണ്.

അലൈൻ-ത്രെഷോൾഡ്
a ലെ അടിസ്ഥാന ബ്ലോക്കിന്റെ എക്സിക്യൂഷനുകളുടെ പരമാവധി ആവൃത്തിയുടെ അംശം തിരഞ്ഞെടുക്കുക
അടിസ്ഥാന ബ്ലോക്ക് വിന്യസിക്കുന്നതിനുള്ള പ്രവർത്തനം.

അലൈൻ-ലൂപ്പ്-ആവർത്തനങ്ങൾ
തിരഞ്ഞെടുത്ത ആവർത്തനങ്ങളുടെ എണ്ണമെങ്കിലും ആവർത്തിക്കുമെന്ന് പ്രതീക്ഷിക്കുന്ന ഒരു ലൂപ്പ് വിന്യസിച്ചിരിക്കുന്നു.

ട്രേസർ-ഡൈനാമിക്-കവറേജ്
ട്രേസർ-ഡൈനാമിക്-കവറേജ്-ഫീഡ്ബാക്ക്
നൽകിയിരിക്കുന്ന ശതമാനത്തിൽ ഒരിക്കൽ സൂപ്പർബ്ലോക്ക് രൂപീകരണം പരിമിതപ്പെടുത്താൻ ഈ മൂല്യം ഉപയോഗിക്കുന്നു
നടപ്പിലാക്കിയ നിർദ്ദേശങ്ങൾ ഉൾക്കൊള്ളുന്നു. ഇത് അനാവശ്യ കോഡ് വലുപ്പം വിപുലീകരിക്കുന്നത് പരിമിതപ്പെടുത്തുന്നു.

ദി ട്രേസർ-ഡൈനാമിക്-കവറേജ്-ഫീഡ്ബാക്ക് പ്രൊഫൈൽ ഫീഡ്ബാക്ക് ചെയ്യുമ്പോൾ മാത്രമേ പരാമീറ്റർ ഉപയോഗിക്കൂ
ലഭ്യമാണ്. യഥാർത്ഥ പ്രൊഫൈലുകൾ (സ്ഥിരമായി കണക്കാക്കിയവയ്ക്ക് വിരുദ്ധമായി).
വളരെ കുറച്ച് സമതുലിതമായതിനാൽ പരിധി വലിയ മൂല്യമാകാൻ അനുവദിക്കുന്നു.

ട്രേസർ-മാക്സ്-കോഡ്-വളർച്ച
കോഡ് വളർച്ച നിശ്ചിത ശതമാനത്തിലെത്തിക്കഴിഞ്ഞാൽ ടെയിൽ ഡ്യൂപ്ലിക്കേഷൻ നിർത്തുക. ഇതൊരു
പകരം കൃത്രിമമായ പരിധി, മിക്ക തനിപ്പകർപ്പുകളും പിന്നീട് ക്രോസിൽ ഒഴിവാക്കപ്പെടും
ജമ്പിംഗ്, അതിനാൽ അത് ആവശ്യമുള്ള കോഡ് വളർച്ചയേക്കാൾ വളരെ ഉയർന്ന മൂല്യങ്ങളിലേക്ക് സജ്ജമാക്കിയേക്കാം.

ട്രേസർ-മിനി-ബ്രാഞ്ച്-അനുപാതം
ബെസ്റ്റ് എഡ്ജിന്റെ റിവേഴ്സ് പ്രോബബിലിറ്റി ഇതിനേക്കാൾ കുറവായിരിക്കുമ്പോൾ റിവേഴ്സ് ഗ്രോത്ത് നിർത്തുക
പരിധി (ശതമാനത്തിൽ).

ട്രേസർ-മിനി-ബ്രാഞ്ച്-അനുപാതം
ട്രേസർ-മിനി-ബ്രാഞ്ച്-റേഷ്യോ-ഫീഡ്ബാക്ക്
മികച്ച അരികിൽ ഈ ത്രെഷോൾഡിനേക്കാൾ കുറഞ്ഞ പ്രോബബിലിറ്റിയുണ്ടെങ്കിൽ ഫോർവേഡ് വളർച്ച നിർത്തുക.

അതുപോലെ ട്രേസർ-ഡൈനാമിക്-കവറേജ് രണ്ട് മൂല്യങ്ങൾ നിലവിലുണ്ട്, ഒന്ന് സമാഹരിക്കാൻ
പ്രൊഫൈൽ ഫീഡ്‌ബാക്കിനും ഒന്നുമില്ലാതെ സമാഹരിക്കാനും. സമാഹരിക്കാനുള്ള മൂല്യം
പ്രൊഫൈൽ ഫീഡ്‌ബാക്ക് ഉണ്ടാക്കുന്നതിന് കൂടുതൽ യാഥാസ്ഥിതികമായിരിക്കണം (ഉയർന്നത്)
ട്രേസർ ഫലപ്രദമാണ്.

max-cse-path-length
CSE പരിഗണിക്കുന്ന പാതയിലെ അടിസ്ഥാന ബ്ലോക്കുകളുടെ പരമാവധി എണ്ണം. സ്ഥിരസ്ഥിതി 10 ആണ്.

max-cse-insns
ഫ്ലഷ് ചെയ്യുന്നതിന് മുമ്പ് സിഎസ്ഇ പ്രോസസ്സ് ചെയ്യുന്ന പരമാവധി എണ്ണം നിർദ്ദേശങ്ങൾ. സ്ഥിരസ്ഥിതിയാണ്
1000.

ggc-min-വികസിക്കുക
ജിസിസി സ്വന്തം മെമ്മറി അലോക്കേഷൻ കൈകാര്യം ചെയ്യാൻ ഒരു മാലിന്യ ശേഖരണത്തെ ഉപയോഗിക്കുന്നു. ഈ പരാമീറ്റർ
മാലിന്യം ശേഖരിക്കുന്നയാളുടെ കൂമ്പാരം ആയിരിക്കേണ്ട ഏറ്റവും കുറഞ്ഞ ശതമാനം വ്യക്തമാക്കുന്നു
ശേഖരങ്ങൾക്കിടയിൽ വികസിപ്പിക്കാൻ അനുവദിച്ചു. ഇത് ട്യൂൺ ചെയ്യുന്നത് സമാഹാര വേഗത മെച്ചപ്പെടുത്തിയേക്കാം;
ഇത് കോഡ് ജനറേഷനെ ബാധിക്കില്ല.

ഡിഫോൾട്ട് 30% + 70% * (RAM/1GB) ആണ്, റാം >= 100GB ആയിരിക്കുമ്പോൾ ഉയർന്ന പരിധി 1% ആണ്.
"Getrlimit" ലഭ്യമാണെങ്കിൽ, "RAM" എന്ന ആശയം യഥാർത്ഥ റാമിലും ഏറ്റവും ചെറുതാണ്.
"RLIMIT_DATA" അല്ലെങ്കിൽ "RLIMIT_AS". GCC-ക്ക് ഒരു പ്രത്യേക റാം കണക്കാക്കാൻ കഴിയുന്നില്ലെങ്കിൽ
പ്ലാറ്റ്ഫോം, 30% ന്റെ താഴ്ന്ന പരിധി ഉപയോഗിക്കുന്നു. ഈ പരാമീറ്റർ സജ്ജീകരിക്കുന്നു ഒപ്പം ggc-min-
കൂമ്പാരം പൂജ്യത്തിലേക്ക് എന്നത് എല്ലാ അവസരങ്ങളിലും ഒരു പൂർണ്ണ ശേഖരം ഉണ്ടാകുന്നതിന് കാരണമാകുന്നു. ഇതാണ്
വളരെ സാവധാനം, പക്ഷേ ഡീബഗ്ഗിംഗിന് ഉപയോഗപ്രദമാകും.

ggc-min-heapsize
മാലിന്യം ശേഖരിക്കാൻ ശല്യപ്പെടുത്താൻ തുടങ്ങുന്നതിനുമുമ്പ്, മാലിന്യം ശേഖരിക്കുന്നയാളുടെ കൂമ്പാരത്തിന്റെ ഏറ്റവും കുറഞ്ഞ വലുപ്പം
മാലിന്യം. കൂമ്പാരം വികസിച്ചതിനുശേഷം ആദ്യ ശേഖരണം സംഭവിക്കുന്നു ggc-min-വികസിക്കുക%
അതിനുമപ്പുറം ggc-min-heapsize. വീണ്ടും, ഇത് ട്യൂൺ ചെയ്യുന്നത് സമാഹാര വേഗത മെച്ചപ്പെടുത്തും, കൂടാതെ
കോഡ് ജനറേഷനിൽ യാതൊരു സ്വാധീനവുമില്ല.

സ്ഥിരസ്ഥിതി RAM/8, RLIMIT_RSS അല്ലെങ്കിൽ ഉറപ്പാക്കാൻ ശ്രമിക്കുന്ന പരിധിയുടെ ചെറുതാണ്
RLIMIT_DATA അല്ലെങ്കിൽ RLIMIT_AS എന്നിവ കവിഞ്ഞിട്ടില്ല, എന്നാൽ 4096 ന്റെ താഴ്ന്ന പരിധിയിൽ
(നാല് മെഗാബൈറ്റ്) കൂടാതെ 131072 (128 മെഗാബൈറ്റ്) ഉയർന്ന പരിധി. ജിസിസിക്ക് കഴിയുന്നില്ലെങ്കിൽ
ഒരു പ്രത്യേക പ്ലാറ്റ്‌ഫോമിൽ റാം കണക്കാക്കാൻ, ലോവർ ബൗണ്ട് ഉപയോഗിക്കുന്നു. ഇത് ക്രമീകരിക്കുന്നു
പാരാമീറ്റർ വളരെ വലുതാണ് മാലിന്യ ശേഖരണം ഫലപ്രദമായി പ്രവർത്തനരഹിതമാക്കുന്നു. ഇത് ക്രമീകരിക്കുന്നു
പരാമീറ്റർ ഒപ്പം ggc-min-വികസിക്കുക പൂജ്യത്തിലേക്ക് ഓരോന്നിലും ഒരു പൂർണ്ണ ശേഖരണം ഉണ്ടാകുന്നു
അവസരം.

max-reload-search-insns
ഇൻസ്ട്രക്ഷൻ റീലോഡിന്റെ പരമാവധി എണ്ണം തുല്യമായതിന് പിന്നിലേക്ക് നോക്കണം
രജിസ്റ്റർ ചെയ്യുക. വർദ്ധിച്ചുവരുന്ന മൂല്യങ്ങൾ അർത്ഥമാക്കുന്നത് കൂടുതൽ ആക്രമണാത്മക ഒപ്റ്റിമൈസേഷനാണ്
ഒരുപക്ഷേ കുറച്ച് മെച്ചപ്പെട്ട പ്രകടനത്തോടെ സമാഹാര സമയം വർദ്ധിക്കും. സ്ഥിരസ്ഥിതി
മൂല്യം 100 ആണ്.

max-cselib-memory-locations
മെമ്മറി ലൊക്കേഷനുകളുടെ പരമാവധി എണ്ണം cselib കണക്കിലെടുക്കണം.
വർദ്ധിച്ചുവരുന്ന മൂല്യങ്ങൾ അർത്ഥമാക്കുന്നത് കൂടുതൽ ആക്രമണാത്മക ഒപ്റ്റിമൈസേഷൻ, സമാഹരണ സമയം ഉണ്ടാക്കുന്നു
ഒരുപക്ഷേ അല്പം മെച്ചപ്പെട്ട പ്രകടനത്തോടെ വർദ്ധിപ്പിക്കുക. സ്ഥിര മൂല്യം 500 ആണ്.

reorder-blocks-duplicate
reorder-blocks-duplicate-feedback
നിരുപാധികം ഉപയോഗിക്കണമോ എന്ന് തീരുമാനിക്കാൻ അടിസ്ഥാന ബ്ലോക്ക് റീഓർഡറിംഗ് പാസ് ഉപയോഗിക്കുന്നു
കോഡ് അതിന്റെ ലക്ഷ്യസ്ഥാനത്ത് ബ്രാഞ്ച് ചെയ്യുക അല്ലെങ്കിൽ ഡ്യൂപ്ലിക്കേറ്റ് ചെയ്യുക. കോഡ് ഡ്യൂപ്ലിക്കേറ്റ് ചെയ്യുമ്പോൾ
കണക്കാക്കിയ വലുപ്പം ഈ മൂല്യത്തേക്കാൾ ചെറുതാണ്, കണക്കാക്കിയ വലുപ്പം കൊണ്ട് ഗുണിച്ചാൽ
പ്രോഗ്രാമിന്റെ ഹോട്ട് സ്പോട്ടുകളിൽ നിരുപാധികമായ കുതിപ്പ്.

ദി പുന orderd ക്രമീകരിക്കുക-ബ്ലോക്ക്-തനിപ്പകർപ്പ്-ഫീഡ്ബാക്ക് പ്രൊഫൈൽ ഫീഡ്ബാക്ക് ചെയ്യുമ്പോൾ മാത്രമേ പരാമീറ്റർ ഉപയോഗിക്കൂ
ലഭ്യമാണ്. അതിനെക്കാൾ ഉയർന്ന മൂല്യങ്ങളിലേക്ക് ഇത് സജ്ജമാക്കിയേക്കാം പുനഃക്രമീകരിക്കുക-ബ്ലോക്ക്-ഡ്യൂപ്ലിക്കേറ്റ് മുതലുള്ള
ഹോട്ട് സ്പോട്ടുകളെക്കുറിച്ചുള്ള വിവരങ്ങൾ കൂടുതൽ കൃത്യമാണ്.

max-sched-ready-insns
ഷെഡ്യൂളർ നൽകേണ്ട പരമാവധി നിർദ്ദേശങ്ങളുടെ എണ്ണം
ആദ്യ ഷെഡ്യൂളിംഗ് പാസ് സമയത്ത് ഏത് സമയത്തും പരിഗണിക്കുക. മൂല്യങ്ങൾ വർദ്ധിപ്പിക്കുന്നു
കൂടുതൽ സമഗ്രമായ തിരയലുകൾ അർത്ഥമാക്കുന്നത്, സമാഹാര സമയം ഒരുപക്ഷേ വർദ്ധിപ്പിക്കും
ചെറിയ പ്രയോജനം. സ്ഥിര മൂല്യം 100 ആണ്.

max-sched-region-blocks
ഇന്റർബ്ലോക്കിനായി പരിഗണിക്കേണ്ട ഒരു മേഖലയിലെ പരമാവധി എണ്ണം ബ്ലോക്കുകൾ
ഷെഡ്യൂളിംഗ്. സ്ഥിര മൂല്യം 10 ​​ആണ്.

max-pipeline-region-blocks
പൈപ്പ്ലൈനിംഗിനായി പരിഗണിക്കേണ്ട ഒരു മേഖലയിലെ പരമാവധി ബ്ലോക്കുകളുടെ എണ്ണം
തിരഞ്ഞെടുത്ത ഷെഡ്യൂളർ. സ്ഥിര മൂല്യം 15 ആണ്.

max-sched-region-insns
ഇന്റർബ്ലോക്കിനായി പരിഗണിക്കേണ്ട ഒരു മേഖലയിലെ പരമാവധി എണ്ണം ഇൻസ്‌നുകൾ
ഷെഡ്യൂളിംഗ്. സ്ഥിര മൂല്യം 100 ​​ആണ്.

max-pipeline-region-insns
ഒരു മേഖലയിലെ പൈപ്പ്ലൈനിംഗിനായി പരിഗണിക്കേണ്ട പരമാവധി എണ്ണം ഇൻസ്നുകൾ
തിരഞ്ഞെടുത്ത ഷെഡ്യൂളർ. സ്ഥിര മൂല്യം 200 ആണ്.

മിനി-സ്പെക്-പ്രോബ്
ഇന്റർബ്ലോക്കിനായി ഒരു സോഴ്സ് ബ്ലോക്കിൽ എത്തുന്നതിനുള്ള ഏറ്റവും കുറഞ്ഞ പ്രോബബിലിറ്റി (ശതമാനത്തിൽ).
ഊഹക്കച്ചവടം. സ്ഥിര മൂല്യം 40 ആണ്.

max-sched-extend-regions-iters
പ്രദേശങ്ങൾ വിപുലീകരിക്കാൻ CFG വഴിയുള്ള ആവർത്തനങ്ങളുടെ പരമാവധി എണ്ണം. ഒരു മൂല്യം 0 (the
സ്ഥിരസ്ഥിതി) മേഖല വിപുലീകരണങ്ങൾ പ്രവർത്തനരഹിതമാക്കുന്നു.

max-sched-insn-conflict-delay
ഊഹക്കച്ചവടത്തിനായി പരിഗണിക്കേണ്ട ഒരു ഇൻസ്‌നിനുള്ള പരമാവധി വൈരുദ്ധ്യ കാലതാമസം.
സ്ഥിര മൂല്യം 3 ആണ്.

sched-spec-prob-cutoff
ഊഹക്കച്ചവട വിജയത്തിന്റെ ഏറ്റവും കുറഞ്ഞ സംഭാവ്യത (ശതമാനത്തിൽ), അതിനാൽ ഊഹക്കച്ചവടം
insns ഷെഡ്യൂൾ ചെയ്തിട്ടുണ്ട്. സ്ഥിര മൂല്യം 40 ആണ്.

sched-spec-state-edge-prob-cutoff
ഷെഡ്യൂളറിന് അതിന്റെ അവസ്ഥ സംരക്ഷിക്കാൻ ഒരു എഡ്ജ് ഉണ്ടായിരിക്കേണ്ട ഏറ്റവും കുറഞ്ഞ സംഭാവ്യത
അതിനു കുറുകെ. സ്ഥിര മൂല്യം 10 ​​ആണ്.

ഷെഡ്-മെം-ട്രൂ-ഡെപ്-കോസ്റ്റ്
സ്‌റ്റോറും ലോഡും തമ്മിലുള്ള ഏറ്റവും കുറഞ്ഞ ദൂരം (സിപിയു സൈക്കിളുകളിൽ) ഒരേ മെമ്മറി ലക്ഷ്യമിടുന്നു
സ്ഥാനങ്ങൾ. സ്ഥിര മൂല്യം 1 ആണ്.

selsched-max-lookhead
തിരഞ്ഞെടുത്ത ഷെഡ്യൂളിംഗിന്റെ ലുക്ക്ഹെഡ് വിൻഡോയുടെ പരമാവധി വലുപ്പം. അതൊരു ആഴമാണ്
ലഭ്യമായ നിർദ്ദേശങ്ങൾക്കായുള്ള തിരയൽ. സ്ഥിര മൂല്യം 50 ആണ്.

selsched-max-sched-times
തിരഞ്ഞെടുത്ത സമയത്ത് ഒരു നിർദ്ദേശം ഷെഡ്യൂൾ ചെയ്യുന്ന പരമാവധി തവണ
ഷെഡ്യൂളിംഗ്. ഇതാണ് ആവർത്തനങ്ങളുടെ എണ്ണത്തിന്റെ പരിധി
നിർദ്ദേശങ്ങൾ പൈപ്പ് ലൈൻ ചെയ്തേക്കാം. സ്ഥിര മൂല്യം 2 ആണ്.

selsched-max-insns-to-rename
തയ്യാറായ ലിസ്റ്റിലെ ഏറ്റവും മികച്ച നിർദ്ദേശങ്ങളുടെ പരമാവധി എണ്ണം പരിഗണിക്കപ്പെടുന്നു
സെലക്ടീവ് ഷെഡ്യൂളറിൽ പേരുമാറ്റുന്നു. സ്ഥിര മൂല്യം 2 ആണ്.

sms-min-sc
സ്വിംഗ് മോഡുലോ ഷെഡ്യൂളർ സൃഷ്ടിക്കുന്ന സ്റ്റേജ് കൗണ്ടിന്റെ ഏറ്റവും കുറഞ്ഞ മൂല്യം. ദി
സ്ഥിര മൂല്യം 2 ആണ്.

max-last-value-rtl
ഒരു എക്‌സ്‌പ്രഷനിൽ റെക്കോർഡ് ചെയ്യാൻ കഴിയുന്ന RTL-കളുടെ എണ്ണമായി കണക്കാക്കിയ പരമാവധി വലുപ്പം
ഒരു വ്യാജ രജിസ്റ്ററിനുള്ള കോമ്പിനറിൽ, ആ രജിസ്റ്ററിന്റെ അവസാനത്തെ അറിയപ്പെടുന്ന മൂല്യമായി. ദി
സ്ഥിരസ്ഥിതി 10000 ആണ്.

max-combine-insns
RTL കോമ്പിനർ സംയോജിപ്പിക്കാൻ ശ്രമിക്കുന്ന നിർദ്ദേശങ്ങളുടെ പരമാവധി എണ്ണം. സ്ഥിരസ്ഥിതി
മൂല്യം 2 at ആണ് -ഓ കൂടാതെ 4 വേറെയും.

പൂർണ്ണ-വിഹിത-പരിധി
ചെറിയ പൂർണ്ണസംഖ്യകളുടെ സ്ഥിരാങ്കങ്ങൾക്ക് ഒരു പങ്കിട്ട ഡാറ്റാ ഘടന ഉപയോഗിക്കാനാകും, ഇത് കംപൈലർ കുറയ്ക്കുന്നു
മെമ്മറി ഉപയോഗവും അതിന്റെ വേഗതയും വർദ്ധിപ്പിക്കുന്നു. ഇത് പങ്കിട്ടതിന്റെ പരമാവധി മൂല്യം സജ്ജമാക്കുന്നു
പൂർണ്ണസംഖ്യ സ്ഥിരാങ്കം. സ്ഥിര മൂല്യം 256 ആണ്.

ssp-ബഫർ വലിപ്പം
സ്റ്റാക്ക് സ്മാഷിംഗ് പരിരക്ഷ ലഭിക്കുന്ന ബഫറുകളുടെ ഏറ്റവും കുറഞ്ഞ വലുപ്പം (അതായത് അറേകൾ).
എപ്പോൾ -fstack-സംരക്ഷണം ഉപയോഗിക്കുന്നു.

ഉബുണ്ടു 10.10-ന് മുമ്പുള്ള ഈ സ്ഥിരസ്ഥിതി "8" ആയിരുന്നു. നിലവിൽ ഇത് "4" ആണ്, വർദ്ധിപ്പിക്കാൻ
സ്റ്റാക്ക് പ്രൊട്ടക്ടർ സംരക്ഷിച്ചിരിക്കുന്ന പ്രവർത്തനങ്ങളുടെ എണ്ണം.

സ്റ്റാക്ക്-പങ്കിടലിനുള്ള മിനി-സൈസ്
അല്ലാത്തപ്പോൾ സ്റ്റാക്ക് സ്ലോട്ട് പങ്കിടലിൽ പങ്കെടുക്കുന്ന വേരിയബിളുകളുടെ ഏറ്റവും കുറഞ്ഞ വലുപ്പം
ഒപ്റ്റിമൈസ് ചെയ്യുന്നു. സ്ഥിര മൂല്യം 32 ആണ്.

max-jump-thread-duplication-stmts
ഒരു ബ്ലോക്കിൽ അനുവദനീയമായ പരമാവധി എണ്ണം പ്രസ്താവനകൾ എപ്പോൾ ഡ്യൂപ്ലിക്കേറ്റ് ചെയ്യണം
ത്രെഡിംഗ് ജമ്പുകൾ.

max-fields-for-field-sensitive
ഫീൽഡ് സെൻസിറ്റീവ് രീതിയിൽ കൈകാര്യം ചെയ്യുന്ന ഘടനയിലെ പരമാവധി എണ്ണം ഫീൽഡുകൾ
പോയിന്റർ വിശകലനം. സ്ഥിരസ്ഥിതി പൂജ്യമാണ് -O0 ഒപ്പം -O1, കൂടാതെ 100 -ഓസ്, -O2, ഒപ്പം
-O3.

പ്രീഫെച്ച്-ലേറ്റൻസി
പ്രീഫെച്ചിന് മുമ്പ് നടപ്പിലാക്കിയ നിർദ്ദേശങ്ങളുടെ ശരാശരി എണ്ണം കണക്കാക്കുക
പൂർത്തിയാക്കുന്നു. മുന്നോട്ടുള്ള ദൂരം ഈ സ്ഥിരാങ്കത്തിന് ആനുപാതികമാണ്.
ഈ സംഖ്യ വർധിപ്പിക്കുന്നത് സ്ട്രീമുകൾ കുറയുന്നതിലേക്ക് നയിച്ചേക്കാം (കാണുക
ഒരേസമയം-പ്രീഫെച്ചുകൾ).

ഒരേസമയം-പ്രീഫെച്ചുകൾ
ഒരേ സമയം പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന പരമാവധി പ്രീഫെച്ചുകളുടെ എണ്ണം.

l1-കാഷെ-ലൈൻ-സൈസ്
L1 കാഷെയിലെ കാഷെ ലൈനിന്റെ വലുപ്പം, ബൈറ്റുകളിൽ.

l1-കാഷെ വലിപ്പം
L1 കാഷെയുടെ വലുപ്പം, കിലോബൈറ്റിൽ.

l2-കാഷെ വലിപ്പം
L2 കാഷെയുടെ വലുപ്പം, കിലോബൈറ്റിൽ.

min-insn-to-prefetch-ratio
നിർദ്ദേശങ്ങളുടെ എണ്ണവും പ്രീഫെച്ചുകളുടെ എണ്ണവും തമ്മിലുള്ള ഏറ്റവും കുറഞ്ഞ അനുപാതം
ഒരു ലൂപ്പിൽ പ്രീഫെച്ചിംഗ് പ്രവർത്തനക്ഷമമാക്കാൻ.

prefetch-min-insn-to-mem-ratio
നിർദ്ദേശങ്ങളുടെ എണ്ണവും മെമ്മറിയുടെ എണ്ണവും തമ്മിലുള്ള ഏറ്റവും കുറഞ്ഞ അനുപാതം
ഒരു ലൂപ്പിൽ പ്രീഫെച്ചിംഗ് പ്രവർത്തനക്ഷമമാക്കുന്നതിനുള്ള അവലംബങ്ങൾ.

ഉപയോഗം-കാനോനിക്കൽ-തരം
കമ്പൈലർ "കാനോനിക്കൽ" ടൈപ്പ് സിസ്റ്റം ഉപയോഗിക്കണമോ എന്ന്. സ്ഥിരസ്ഥിതിയായി, ഇത്
എപ്പോഴും 1 ആയിരിക്കണം, ഇത് താരതമ്യം ചെയ്യുന്നതിനായി കൂടുതൽ കാര്യക്ഷമമായ ആന്തരിക സംവിധാനം ഉപയോഗിക്കുന്നു
C++, Objective-C++ എന്നിവയിലെ തരങ്ങൾ. എന്നിരുന്നാലും, കാനോനിക്കൽ തരം സിസ്റ്റത്തിലെ ബഗുകൾ ആണെങ്കിൽ
കംപൈലേഷൻ പരാജയങ്ങൾക്ക് കാരണമാകുന്നു, കാനോനിക്കൽ തരങ്ങൾ പ്രവർത്തനരഹിതമാക്കുന്നതിന് ഈ മൂല്യം 0 ആയി സജ്ജമാക്കുക.

സ്വിച്ച്-കൺവേർഷൻ-മാക്സ്-ബ്രാഞ്ച്-റേഷ്യോ
സ്വിച്ച് ഇനീഷ്യലൈസേഷൻ കൺവേർഷൻ വലിയ അറേകൾ സൃഷ്ടിക്കാൻ വിസമ്മതിക്കുന്നു
സ്വിച്ച്-കൺവേർഷൻ-മാക്സ്-ബ്രാഞ്ച്-റേഷ്യോ സ്വിച്ചിലെ ശാഖകളുടെ എണ്ണത്തിന്റെ ഇരട്ടി.

max-partial-antic-length
ട്രീ ഭാഗിക സമയത്ത് കണക്കാക്കിയ ഭാഗിക ആന്റിക് സെറ്റിന്റെ പരമാവധി നീളം
റിഡൻഡൻസി എലിമിനേഷൻ ഒപ്റ്റിമൈസേഷൻ (-ftree-pre) ഒപ്റ്റിമൈസ് ചെയ്യുമ്പോൾ -O3 മുകളിൽ.
ചില തരത്തിലുള്ള സോഴ്സ് കോഡിന് മെച്ചപ്പെടുത്തിയ ഭാഗികമായ ആവർത്തന ഒഴിവാക്കൽ
ഒപ്റ്റിമൈസേഷൻ ഓടിപ്പോകും, ​​ഹോസ്റ്റിൽ ലഭ്യമായ എല്ലാ മെമ്മറിയും ദഹിപ്പിക്കും
യന്ത്രം. ഈ പരാമീറ്റർ കണക്കുകൂട്ടിയ സെറ്റുകളുടെ ദൈർഘ്യത്തിൽ ഒരു പരിധി നിശ്ചയിക്കുന്നു,
ഇത് റൺവേ സ്വഭാവത്തെ തടയുന്നു. ഈ പരാമീറ്ററിന് 0 എന്ന മൂല്യം സജ്ജമാക്കുന്നു
പരിധിയില്ലാത്ത സെറ്റ് ദൈർഘ്യം അനുവദിക്കുന്നു.

sccvn-max-scc-size
SCCVN പ്രോസസ്സിംഗ് സമയത്ത് ശക്തമായി ബന്ധിപ്പിച്ച ഘടകത്തിന്റെ (SCC) പരമാവധി വലുപ്പം. എങ്കിൽ
ഈ പരിധി അടിച്ചു, മുഴുവൻ ഫംഗ്‌ഷനുമുള്ള SCCVN പ്രോസസ്സിംഗ് പൂർത്തിയായിട്ടില്ല
അതിനെ ആശ്രയിച്ചുള്ള ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു. സ്ഥിരസ്ഥിതി പരമാവധി SCC വലുപ്പം
10000.

sccvn-max-alias-queries-per-access
ആവർത്തനങ്ങൾക്കായി തിരയുമ്പോൾ ഞങ്ങൾ നടത്തുന്ന അപരനാമം-ഒറാക്കിൾ അന്വേഷണങ്ങളുടെ പരമാവധി എണ്ണം
ലോഡുകൾക്കും സ്റ്റോറുകൾക്കും. ഈ പരിധി എത്തിയാൽ തിരയൽ നിർത്തലാക്കുകയും ലോഡ് അല്ലെങ്കിൽ
സ്റ്റോർ അനാവശ്യമായി കണക്കാക്കില്ല. അന്വേഷണങ്ങളുടെ എണ്ണം അൽഗോരിതമനുസരിച്ചാണ്
ലോഡ് മുതൽ ഫംഗ്ഷൻ എൻട്രി വരെയുള്ള എല്ലാ പാതകളിലെയും സ്റ്റോറുകളുടെ എണ്ണത്തിൽ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.
ഡിഫോൾട്ട് പരമാവധി ചോദ്യങ്ങളുടെ എണ്ണം 1000 ആണ്.

ira-max-loops-num
IRA ഡിഫോൾട്ടായി റീജിയണൽ രജിസ്റ്റർ അലോക്കേഷൻ ഉപയോഗിക്കുന്നു. ഒരു ഫംഗ്‌ഷനിൽ കൂടുതൽ അടങ്ങിയിട്ടുണ്ടെങ്കിൽ
ഈ പരാമീറ്റർ നൽകിയ സംഖ്യയേക്കാൾ ലൂപ്പുകൾ, പരമാവധി നൽകിയിരിക്കുന്ന സംഖ്യകൾ മാത്രം
റീജിയണൽ രജിസ്റ്റർ അലോക്കേഷനായി ഏറ്റവും കൂടുതൽ തവണ നടപ്പിലാക്കുന്ന ലൂപ്പുകൾ റീജിയണുകൾ ഉണ്ടാക്കുന്നു.
പരാമീറ്ററിന്റെ ഡിഫോൾട്ട് മൂല്യം 100 ആണ്.

ira-max-conflict-table-size
വൈരുദ്ധ്യ പട്ടിക കംപ്രസ്സുചെയ്യാൻ IRA ഒരു സങ്കീർണ്ണമായ അൽഗോരിതം ഉപയോഗിക്കുന്നുവെങ്കിലും
വലിയ ഫംഗ്‌ഷനുകൾക്കായി പട്ടികയ്‌ക്ക് ഇപ്പോഴും അമിതമായ മെമ്മറി ആവശ്യമായി വന്നേക്കാം. എങ്കിൽ
ഒരു ഫംഗ്‌ഷന്റെ വൈരുദ്ധ്യ പട്ടിക ഇത് നൽകുന്ന MB-ൽ ഉള്ളതിനേക്കാൾ കൂടുതലായിരിക്കാം
പാരാമീറ്റർ, രജിസ്റ്റർ അലോക്കേറ്റർ പകരം വേഗതയേറിയതും ലളിതവും താഴ്ന്നതും ഉപയോഗിക്കുന്നു-
ഒരു വ്യാജ-രജിസ്റ്റർ വൈരുദ്ധ്യ പട്ടിക നിർമ്മിക്കേണ്ട ആവശ്യമില്ലാത്ത ഗുണനിലവാര അൽഗോരിതം.
പരാമീറ്ററിന്റെ ഡിഫോൾട്ട് മൂല്യം 2000 ആണ്.

ira-loop-reserved-regs
തീരുമാനങ്ങൾക്കായുള്ള ലൂപ്പുകളിൽ കൂടുതൽ കൃത്യമായ രജിസ്റ്റർ മർദ്ദം വിലയിരുത്തുന്നതിന് IRA ഉപയോഗിക്കാം
ലൂപ്പ് മാറ്റങ്ങളെ നീക്കാൻ (കാണുക -O3). റിസർവ് ചെയ്ത ലഭ്യമായ രജിസ്റ്ററുകളുടെ എണ്ണം
മറ്റ് ചില ഉദ്ദേശ്യങ്ങൾ ഈ പരാമീറ്റർ നൽകിയിട്ടുണ്ട്. യുടെ ഡിഫോൾട്ട് മൂല്യം
പാരാമീറ്റർ 2 ആണ്, ഇത് സാധാരണ ആവശ്യമുള്ള രജിസ്റ്ററുകളുടെ ഏറ്റവും കുറഞ്ഞ സംഖ്യയാണ്
നിർദ്ദേശങ്ങൾ. ഈ മൂല്യം നിരവധി പരീക്ഷണങ്ങളിൽ നിന്ന് ഏറ്റവും മികച്ചതാണ്.

lra-inheritance-ebb-probability-cutoff
രജിസ്റ്ററുകളിൽ റീലോഡ് ചെയ്ത മൂല്യങ്ങൾ തുടർന്നുള്ള ഇൻസ്‌നുകളിൽ വീണ്ടും ഉപയോഗിക്കാൻ LRA ശ്രമിക്കുന്നു. ഈ
ഒപ്റ്റിമൈസേഷനെ അനന്തരാവകാശം എന്ന് വിളിക്കുന്നു. ഇത് ചെയ്യുന്നതിന് EBB ഒരു മേഖലയായി ഉപയോഗിക്കുന്നു
ഒപ്റ്റിമൈസേഷൻ. പാരാമീറ്റർ ഏറ്റവും കുറഞ്ഞ വീഴ്ച-ത്രൂ എഡ്ജ് പ്രോബബിലിറ്റി നിർവചിക്കുന്നു
LRA-യിലെ പാരമ്പര്യ EBB-ലേക്ക് BB ചേർക്കാൻ ഉപയോഗിക്കുന്ന ശതമാനം. യുടെ ഡിഫോൾട്ട് മൂല്യം
പാരാമീറ്റർ 40 ആണ്. x2000-86-ലെ SPEC64-ന്റെ നിരവധി റണ്ണുകളിൽ നിന്നാണ് മൂല്യം തിരഞ്ഞെടുത്തത്.

loop-invariant-max-bbs-in-loop
ലൂപ്പ് മാറ്റമില്ലാത്ത ചലനം സമാഹരിക്കുന്ന സമയത്തും സമയത്തും വളരെ ചെലവേറിയതായിരിക്കും
ആവശ്യമായ കംപൈൽ-ടൈം മെമ്മറിയുടെ അളവ്, വളരെ വലിയ ലൂപ്പുകൾ. കൂടുതൽ ഉള്ള ലൂപ്പുകൾ
ഈ പരാമീറ്ററിനേക്കാൾ അടിസ്ഥാന ബ്ലോക്കുകൾക്ക് ലൂപ്പ് മാറ്റമില്ലാത്ത മോഷൻ ഒപ്റ്റിമൈസേഷൻ ഉണ്ടാകില്ല
അവയിൽ നിർവഹിച്ചു. പരാമീറ്ററിന്റെ സ്ഥിര മൂല്യം 1000 ആണ് -O1 ഒപ്പം 10000
വേണ്ടി -O2 മുകളിൽ.

loop-max-datarefs-for-datadeps
വളരെ വലിയ ലൂപ്പുകൾക്ക് ഡാറ്റാ ഡാപെൻഡൻസികൾ നിർമ്മിക്കുന്നത് ചെലവേറിയതാണ്. ഈ പരാമീറ്റർ
ഡാറ്റയ്ക്കായി പരിഗണിക്കുന്ന ലൂപ്പുകളിലെ ഡാറ്റ റഫറൻസുകളുടെ എണ്ണം പരിമിതപ്പെടുത്തുന്നു
ആശ്രിതത്വം വിശകലനം. ഈ വലിയ ലൂപ്പുകൾ ഉപയോഗിക്കുന്ന ഒപ്റ്റിമൈസേഷനുകൾ കൈകാര്യം ചെയ്യുന്നില്ല
ലൂപ്പ് ഡാറ്റ ഡിപൻഡൻസികൾ. സ്ഥിര മൂല്യം 1000 ആണ്.

max-vartrack-size
വേരിയബിൾ ട്രാക്കിംഗ് ഡാറ്റാഫ്ലോ സമയത്ത് ഉപയോഗിക്കുന്നതിന് പരമാവധി എണ്ണം ഹാഷ് ടേബിൾ സ്ലോട്ടുകൾ സജ്ജമാക്കുന്നു
ഏതെങ്കിലും പ്രവർത്തനത്തിന്റെ വിശകലനം. വേരിയബിൾ ട്രാക്കിംഗ് ഉപയോഗിച്ച് ഈ പരിധി കവിഞ്ഞാൽ
അസൈൻമെന്റുകൾ പ്രവർത്തനക്ഷമമാക്കി, ആ ഫംഗ്‌ഷന്റെ വിശകലനം അത് കൂടാതെ വീണ്ടും ശ്രമിച്ചു
ഫംഗ്‌ഷനിൽ നിന്ന് എല്ലാ ഡീബഗ് ഇൻസുകളെയും നീക്കം ചെയ്യുന്നു. ഇല്ലാതെ പോലും പരിധി കവിഞ്ഞാൽ
debug insns, var ട്രാക്കിംഗ് വിശകലനം ഫംഗ്‌ഷനായി പൂർണ്ണമായും പ്രവർത്തനരഹിതമാക്കി.
പാരാമീറ്റർ പൂജ്യമായി സജ്ജീകരിക്കുന്നത് അതിനെ പരിധിയില്ലാത്തതാക്കുന്നു.

max-vartrack-expr-ഡെപ്ത്
വേരിയബിൾ പേരുകൾ അല്ലെങ്കിൽ മാപ്പ് ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ പരമാവധി ആവർത്തന ലെവലുകൾ സജ്ജമാക്കുന്നു
മൂല്യനിർണ്ണയ എക്സ്പ്രഷനുകളിലേക്ക് താൽക്കാലികമായി ഡീബഗ് ചെയ്യുക. ഇത് കംപൈലേഷൻ സമയം കൂടുതലായി ട്രേഡ് ചെയ്യുന്നു
സമ്പൂർണ്ണ ഡീബഗ് വിവരങ്ങൾ. ഇത് വളരെ കുറവായി സജ്ജമാക്കിയാൽ, മൂല്യ പദപ്രയോഗങ്ങൾ
ലഭ്യവും ഡീബഗ് വിവരങ്ങളിൽ പ്രതിനിധാനം ചെയ്യാവുന്നതും ഉപയോഗിക്കപ്പെടാതെ വന്നേക്കാം;
ഇത് കൂടുതൽ സജ്ജീകരിക്കുന്നത് കൂടുതൽ സങ്കീർണ്ണമായ ഡീബഗ് കണ്ടെത്താൻ കംപൈലറിനെ പ്രാപ്തമാക്കിയേക്കാം
എക്സ്പ്രഷനുകൾ, എന്നാൽ കംപൈൽ സമയവും മെമ്മറി ഉപയോഗവും വർദ്ധിച്ചേക്കാം. സ്ഥിരസ്ഥിതി 12 ആണ്.

min-nondebug-insn-uid
nondebug insns-ന് ഈ പരാമീറ്ററിൽ തുടങ്ങുന്ന uids ഉപയോഗിക്കുക. താഴെയുള്ള ശ്രേണി
പാരാമീറ്റർ സൃഷ്‌ടിച്ച ഡീബഗ് ഇൻസ്‌നുകൾക്കായി മാത്രം സംവരണം ചെയ്‌തിരിക്കുന്നു
-fvar-ട്രാക്കിംഗ്-അസൈൻമെന്റുകൾ, എന്നാൽ ഡീബഗ് ഇൻസ്‌നുകൾക്ക് മുകളിൽ (ഓവർലാപ്പുചെയ്യാത്ത) യുഐഡികൾ ലഭിച്ചേക്കാം
റിസർവ് ചെയ്ത ശ്രേണി തീർന്നുപോയാൽ അത്.

ipa-sra-ptr-growth-factor
IPA-SRA, ഒന്നോ അതിലധികമോ പുതിയ പാരാമീറ്ററുകൾ ഉപയോഗിച്ച് മാത്രം ഒരു പോയിന്റർ ഒരു അഗ്രഗേറ്റിലേക്ക് മാറ്റുന്നു
അവയുടെ ക്യുമുലേറ്റീവ് വലുപ്പം കുറവോ തുല്യമോ ആയിരിക്കുമ്പോൾ ipa-sra-ptr-growth-factor ചിലപ്പോഴൊക്കെ
യഥാർത്ഥ പോയിന്റർ പാരാമീറ്ററിന്റെ വലുപ്പം.

sra-max-scalarization-size-Ospeed
sra-max-scalarization-size-Osize
അഗ്രഗേറ്റുകളുടെ രണ്ട് സ്കെയിലർ റിഡക്ഷൻ പാസുകൾ (SRA, IPA-SRA) മാറ്റിസ്ഥാപിക്കാൻ ലക്ഷ്യമിടുന്നു
സ്വതന്ത്ര സ്കെയിലർ വേരിയബിളുകൾ ഉപയോഗിച്ചുള്ള അഗ്രഗേറ്റുകളുടെ സ്കെലാർ ഭാഗങ്ങൾ. ഇവ
പാരാമീറ്ററുകൾ, സ്റ്റോറേജ് യൂണിറ്റുകളിൽ, മൊത്തത്തിലുള്ള പരമാവധി വലുപ്പം നിയന്ത്രിക്കുന്നു
വേഗതയ്ക്കായി കംപൈൽ ചെയ്യുമ്പോൾ മാറ്റിസ്ഥാപിക്കാൻ പരിഗണിക്കുന്നു (sra-max-scalarization-size-
ഓസ്പീഡ്) അല്ലെങ്കിൽ വലിപ്പം (sra-max-scalarization-size-Osize) യഥാക്രമം.

tm-max-അഗ്രഗേറ്റ്-സൈസ്
ഒരു ഇടപാടിൽ ത്രെഡ്-ലോക്കൽ വേരിയബിളുകളുടെ പകർപ്പുകൾ നിർമ്മിക്കുമ്പോൾ, ഈ പരാമീറ്റർ
ലോഗിംഗിനൊപ്പം വേരിയബിളുകൾ സംരക്ഷിക്കപ്പെടുന്ന ബൈറ്റുകളിൽ വലുപ്പം വ്യക്തമാക്കുന്നു
കോഡ് സീക്വൻസ് ജോഡികൾ സേവ്/പുനഃസ്ഥാപിക്കുന്നതിന് വിരുദ്ധമായി പ്രവർത്തിക്കുന്നു. ഈ ഓപ്ഷൻ മാത്രം
ഉപയോഗിക്കുമ്പോൾ ബാധകമാണ് -fgnu-tm.

ഗ്രാഫൈറ്റ്-max-nb-scop-params
ഗ്രാഫൈറ്റ് ലൂപ്പ് രൂപാന്തരങ്ങളിലെ എക്‌സ്‌പോണൻഷ്യൽ ഇഫക്റ്റുകൾ ഒഴിവാക്കാൻ, ഇവയുടെ എണ്ണം
ഒരു സ്റ്റാറ്റിക് കൺട്രോൾ ഭാഗത്തിലെ (SCoP) പരാമീറ്ററുകൾ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു. സ്ഥിര മൂല്യം 10 ​​ആണ്
പരാമീറ്ററുകൾ. സമാഹരിക്കുന്ന സമയത്ത് മൂല്യം അറിയാത്തതും നിർവചിക്കപ്പെട്ടതുമായ ഒരു വേരിയബിൾ
ഒരു എസ്‌സിഒപിക്ക് പുറത്ത് എന്നത് എസ്‌സിഒപിയുടെ ഒരു പാരാമീറ്ററാണ്.

graphite-max-bbs-per-function
എസ്‌സി‌ഒ‌പികൾ കണ്ടെത്തുന്നതിൽ എക്‌സ്‌പോണൻഷ്യൽ ഇഫക്റ്റുകൾ ഒഴിവാക്കാൻ, ഫംഗ്‌ഷനുകളുടെ വലുപ്പം
ഗ്രാഫൈറ്റ് വിശകലനം ചെയ്യുന്നത് പരിധിയിലാണ്. സ്ഥിരസ്ഥിതി മൂല്യം 100 അടിസ്ഥാന ബ്ലോക്കുകളാണ്.

ലൂപ്പ്-ബ്ലോക്ക്-ടൈൽ-വലിപ്പം
ലൂപ്പ് ബ്ലോക്കിംഗ് അല്ലെങ്കിൽ സ്ട്രിപ്പ് മൈനിംഗ് ട്രാൻസ്ഫോർമുകൾ, ഉപയോഗിച്ച് പ്രവർത്തനക്ഷമമാക്കി -ഫ്ലോപ്പ്-ബ്ലോക്ക് or
-ഫ്ലോപ്പ്-സ്ട്രിപ്പ്-മൈൻ, ലൂപ്പ് നെസ്റ്റിലെ ഓരോ ലൂപ്പും ഒരു നിശ്ചിത എണ്ണം കൊണ്ട് സ്ട്രിപ്പ് മൈൻ ചെയ്യുക
ആവർത്തനങ്ങൾ. ഉപയോഗിച്ച് സ്ട്രിപ്പ് നീളം മാറ്റാം ലൂപ്പ്-ബ്ലോക്ക്-ടൈൽ-വലിപ്പം
പരാമീറ്റർ. സ്ഥിര മൂല്യം 51 ആവർത്തനങ്ങളാണ്.

ലൂപ്പ്-അൺറോൾ-ജാം-സൈസ്
ഇതിനായുള്ള അൺറോൾ ഘടകം വ്യക്തമാക്കുക -ഫ്ലോപ്പ്-അൺറോൾ-ആൻഡ്-ജാം ഓപ്ഷൻ. സ്ഥിര മൂല്യം
ആണ്.

ലൂപ്പ്-അൺറോൾ-ജാം-ഡെപ്ത്
അൺറോൾ ചെയ്യേണ്ട അളവ് വ്യക്തമാക്കുക (ഏറ്റവും ആന്തരിക ലൂപ്പിൽ നിന്ന് കണക്കാക്കുന്നത്).
-ഫ്ലോപ്പ്-അൺറോൾ-ആൻഡ്-ജാം. സ്ഥിര മൂല്യം 2 ​​ആണ്.

ipa-cp-value-list-size
IPA-CP ഒരു ഫംഗ്‌ഷന്റെ എല്ലാ സാധ്യമായ മൂല്യങ്ങളും തരങ്ങളും ട്രാക്ക് ചെയ്യാൻ ശ്രമിക്കുന്നു
പാരാമീറ്റർ അവ പ്രചരിപ്പിക്കുന്നതിനും ഡിവിർച്ച്വലൈസേഷൻ നടത്തുന്നതിനുമായി. ipa-cp-value-
ലിസ്റ്റ്-വലിപ്പം ഒരു ഔപചാരികമായി അത് സംഭരിക്കുന്ന മൂല്യങ്ങളുടെയും തരങ്ങളുടെയും പരമാവധി എണ്ണം
ഒരു ഫംഗ്ഷന്റെ പരാമീറ്റർ.

ipa-cp-eval-threshold
IPA-CP ക്ലോണിംഗ് ലാഭക്ഷമത ഹ്യൂറിസ്റ്റിക്സിന്റെ സ്വന്തം സ്കോർ കണക്കാക്കുകയും പ്രകടനം നടത്തുകയും ചെയ്യുന്നു
കവിഞ്ഞ സ്കോറുകളുള്ള ക്ലോണിംഗ് അവസരങ്ങൾ ipa-cp-eval-threshold.

ipa-cp-recursion-പെനാൽറ്റി
റിക്കേഴ്‌സീവ് ഫംഗ്‌ഷനുകൾ മൂല്യനിർണ്ണയം ചെയ്യുമ്പോൾ ലഭിക്കുന്ന പെനാൽറ്റി ശതമാനം
ക്ലോണിംഗിനായി.

ipa-cp-ഒറ്റ-കോൾ-പെനാൽറ്റി
പെനാൽറ്റി ഫംഗ്‌ഷനുകളിൽ മറ്റൊരു ഫംഗ്‌ഷനിലേക്കുള്ള ഒരൊറ്റ കോൾ അടങ്ങിയിരിക്കുന്നു
ക്ലോണിംഗിനായി അവ വിലയിരുത്തപ്പെടുമ്പോൾ സ്വീകരിക്കുക.

ipa-max-agg-ഇനങ്ങൾ
ഐപിഎ-സിപിക്ക് ഒരു സ്കെയിലർ മൂല്യങ്ങൾ പ്രചരിപ്പിക്കാനും കഴിയും
ആകെത്തുകയായുള്ള. ipa-max-agg-ഇനങ്ങൾ ഓരോന്നിനും അത്തരം മൂല്യങ്ങളുടെ പരമാവധി എണ്ണം നിയന്ത്രിക്കുന്നു
പാരാമീറ്റർ.

ipa-cp-loop-hint-bonus
ഒരു ക്ലോണിംഗ് കാൻഡിഡേറ്റ് സംഖ്യ ഉണ്ടാക്കുമെന്ന് IPA-CP നിർണ്ണയിക്കുമ്പോൾ
അറിയപ്പെടുന്ന ഒരു ലൂപ്പിന്റെ ആവർത്തനങ്ങൾ, ഇത് ഒരു ബോണസ് ചേർക്കുന്നു ipa-cp-loop-hint-bonus ലേക്ക്
സ്ഥാനാർത്ഥിയുടെ ലാഭക്ഷമത സ്കോർ.

ipa-cp-array-index-hint-bonus
ഒരു ക്ലോണിംഗ് കാൻഡിഡേറ്റ് ഒരു അറേയുടെ സൂചിക ഉണ്ടാക്കുമെന്ന് IPA-CP നിർണ്ണയിക്കുമ്പോൾ
ആക്സസ് അറിയാം, ഇത് ഒരു ബോണസ് ചേർക്കുന്നു ipa-cp-array-index-hint-bonus ലേക്ക്
സ്ഥാനാർത്ഥിയുടെ ലാഭക്ഷമത സ്കോർ.

ipa-max-aa-steps
ഫംഗ്‌ഷൻ ബോഡികളുടെ വിശകലന സമയത്ത്, ഐപിഎ-സിപി അപരനാമ വിശകലനം ഉപയോഗിക്കുന്നു
ഫംഗ്‌ഷൻ പാരാമീറ്ററുകൾ ചൂണ്ടിക്കാണിച്ച ട്രാക്ക് മൂല്യങ്ങൾ. കൂടുതൽ സമയം ചെലവഴിക്കാതിരിക്കാൻ
വലിയ ഫംഗ്‌ഷനുകൾ വിശകലനം ചെയ്യുന്നതിലൂടെ, അത് ഉപേക്ഷിക്കുകയും എല്ലാ മെമ്മറിയും ക്ലോബർ ചെയ്തതായി കണക്കാക്കുകയും ചെയ്യുന്നു
പരിശോധിക്കുക ipa-max-aa-steps മെമ്മറി പരിഷ്ക്കരിക്കുന്ന പ്രസ്താവനകൾ.

lto-partitions
WHOPR കംപൈലേഷൻ സമയത്ത് നിർമ്മിച്ച പാർട്ടീഷനുകളുടെ ആവശ്യമുള്ള എണ്ണം വ്യക്തമാക്കുക. ദി
പാർട്ടീഷനുകളുടെ എണ്ണം സമാഹരിക്കാൻ ഉപയോഗിക്കുന്ന CPU-കളുടെ എണ്ണത്തേക്കാൾ കൂടുതലായിരിക്കണം. ദി
സ്ഥിര മൂല്യം 32 ആണ്.

lto-minpartition
WHOPR-നുള്ള ഏറ്റവും കുറഞ്ഞ പാർട്ടീഷന്റെ വലുപ്പം (കണക്കാക്കിയ നിർദ്ദേശങ്ങളിൽ). ഇത് തടയുന്നു
വളരെ ചെറിയ പ്രോഗ്രാമുകളെ നിരവധി പാർട്ടീഷനുകളായി വിഭജിക്കാനുള്ള ചെലവ്.

cxx-max-namespaces-for-diagnostic-help
C++ നെയിം ലുക്ക്അപ്പ് ചെയ്യുമ്പോൾ നിർദ്ദേശങ്ങൾക്കായി പരിശോധിക്കേണ്ട പരമാവധി എണ്ണം നെയിംസ്പേസുകൾ
ഒരു ഐഡന്റിഫയറിന് പരാജയപ്പെടുന്നു. സ്ഥിരസ്ഥിതി 1000 ആണ്.

സിങ്ക്-ഫ്രീക്വൻസി-ത്രെഷോൾഡ്
ടാർഗെറ്റ് ബ്ലോക്കിന്റെ പരമാവധി ആപേക്ഷിക നിർവ്വഹണ ആവൃത്തി (ശതമാനത്തിൽ).
ഒരു സ്റ്റേറ്റ്‌മെന്റിന്റെ ഒറിജിനൽ ബ്ലോക്കുമായി ബന്ധപ്പെട്ട് a യുടെ പ്രസ്താവന മുങ്ങാൻ അനുവദിക്കും
പ്രസ്താവന. വലിയ സംഖ്യകൾ കൂടുതൽ ആക്രമണാത്മക പ്രസ്താവന മുങ്ങുന്നതിന് കാരണമാകുന്നു. ദി
ഡിഫോൾട്ട് മൂല്യം 75 ആണ്. കൂടെയുള്ള പ്രസ്താവനകൾക്ക് ഒരു ചെറിയ പോസിറ്റീവ് അഡ്ജസ്റ്റ്മെന്റ് പ്രയോഗിക്കുന്നു
മെമ്മറി ഓപ്പറണ്ടുകൾ കൂടുതൽ ലാഭകരമായതിനാൽ മുങ്ങിപ്പോകും.

max-stores-to-sink
മുങ്ങാൻ കഴിയുന്ന സോപാധിക സ്റ്റോറുകളുടെ ജോഡികളുടെ പരമാവധി എണ്ണം. എങ്കിൽ 0 ആയി സജ്ജീകരിക്കുക
ഒന്നുകിൽ വെക്‌ടറൈസേഷൻ (-ftree-vectorize) അല്ലെങ്കിൽ പരിവർത്തനം ചെയ്താൽ (-ftree-loop-if-convert)
വികലാംഗനാണ്. സ്ഥിരസ്ഥിതി 2 ആണ്.

അനുവദിക്കുക-സ്റ്റോർ-ഡാറ്റ-റേസ്
സ്റ്റോറുകളിൽ പുതിയ ഡാറ്റ റേസുകൾ അവതരിപ്പിക്കാൻ ഒപ്റ്റിമൈസർമാരെ അനുവദിക്കുക. അനുവദിക്കുന്നതിന് 1 ആയി സജ്ജമാക്കുക,
അല്ലെങ്കിൽ 0 ലേക്ക്. ഒപ്റ്റിമൈസേഷൻ തലത്തിൽ ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കുന്നു -ഓഫാസ്റ്റ്.

കേസ്-മൂല്യങ്ങൾ-പരിധി
ഒരു ജമ്പ്-ടേബിൾ ഉപയോഗിക്കുന്നതാണ് ഏറ്റവും മികച്ച വ്യത്യസ്ത മൂല്യങ്ങളുടെ ഏറ്റവും ചെറിയ എണ്ണം
സോപാധിക ശാഖകളുടെ ഒരു വൃക്ഷത്തിന് പകരം. മൂല്യം 0 ആണെങ്കിൽ, ഇതിനായി സ്ഥിരസ്ഥിതി ഉപയോഗിക്കുക
യന്ത്രം. സ്ഥിരസ്ഥിതി 0 ആണ്.

വൃക്ഷം-reassoc-വീതി
വീണ്ടും അസ്സോസിയേറ്റഡ് ട്രീയിൽ സമാന്തരമായി നടപ്പിലാക്കിയ നിർദ്ദേശങ്ങളുടെ പരമാവധി എണ്ണം സജ്ജമാക്കുക.
ഈ പരാമീറ്റർ ഡിഫോൾട്ടായി ഉപയോഗിക്കുന്ന ടാർഗെറ്റ് ആശ്രിത ഹ്യൂറിസ്റ്റിക്സിനെ അസാധുവാക്കുന്നു
പൂജ്യം മൂല്യം.

ഷെഡ്-പ്രഷർ-അൽഗോരിതം
ലഭ്യമായ രണ്ട് നടപ്പിലാക്കലുകളിൽ ഒന്ന് തിരഞ്ഞെടുക്കുക -fsched-മർദ്ദം. അൽഗോരിതം 1
യഥാർത്ഥ നിർവ്വഹണമാണ്, നിർദ്ദേശങ്ങൾ തടയാനുള്ള സാധ്യത കൂടുതലാണ്
പുനഃക്രമീകരിക്കുന്നു. തമ്മിലുള്ള ഒത്തുതീർപ്പാണ് അൽഗോരിതം 2 രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്
അൽഗോരിതം 1 എടുത്ത താരതമ്യേന യാഥാസ്ഥിതിക സമീപനവും പകരം ആക്രമണാത്മകവും
സ്ഥിരസ്ഥിതി ഷെഡ്യൂളർ സ്വീകരിച്ച സമീപനം. ഒരു ഉള്ളതിനെയാണ് ഇത് കൂടുതൽ ആശ്രയിക്കുന്നത്
സാധാരണ രജിസ്റ്റർ ഫയലും കൃത്യമായ രജിസ്റ്റർ പ്രഷർ ക്ലാസുകളും. കാണുക ഹൈഫ-ഷെഡ്.സി
കൂടുതൽ വിവരങ്ങൾക്ക് ജിസിസി ഉറവിടങ്ങളിൽ.

സ്ഥിരസ്ഥിതി തിരഞ്ഞെടുപ്പ് ലക്ഷ്യത്തെ ആശ്രയിച്ചിരിക്കുന്നു.

max-slsr-cand-സ്കാൻ
ഒരു അന്വേഷിക്കുമ്പോൾ പരിഗണിക്കുന്ന നിലവിലുള്ള സ്ഥാനാർത്ഥികളുടെ പരമാവധി എണ്ണം സജ്ജമാക്കുക
ഒരു പുതിയ നേർരേഖ ശക്തി കുറയ്ക്കൽ കാൻഡിഡേറ്റിന്റെ അടിസ്ഥാനം.

ആശാൻ-ഗ്ലോബൽസ്
ആഗോള വസ്തുക്കൾക്കായി ബഫർ ഓവർഫ്ലോ കണ്ടെത്തൽ പ്രവർത്തനക്ഷമമാക്കുക. ഇത്തരത്തിലുള്ള സംരക്ഷണമാണ്
നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -fsanitize=വിലാസം ഓപ്ഷൻ. ആഗോള പ്രവർത്തനരഹിതമാക്കാൻ
വസ്തുക്കളുടെ സംരക്ഷണ ഉപയോഗം --പരം asan-globals=0.

ആശാൻ-സ്റ്റാക്ക്
സ്റ്റാക്ക് ഒബ്‌ജക്‌റ്റുകൾക്കായി ബഫർ ഓവർഫ്ലോ കണ്ടെത്തൽ പ്രവർത്തനക്ഷമമാക്കുക. ഇത്തരത്തിലുള്ള സംരക്ഷണമാണ്
ഉപയോഗിക്കുമ്പോൾ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി-fsanitize=വിലാസം. സ്റ്റാക്ക് സംരക്ഷണ ഉപയോഗം പ്രവർത്തനരഹിതമാക്കാൻ
--പരം asan-stack=0 ഓപ്ഷൻ.

ആശാൻ-ഉപകരണം-വായിക്കുന്നു
മെമ്മറി റീഡുകൾക്കായി ബഫർ ഓവർഫ്ലോ കണ്ടെത്തൽ പ്രവർത്തനക്ഷമമാക്കുക. ഇത്തരത്തിലുള്ള സംരക്ഷണമാണ്
ഉപയോഗിക്കുമ്പോൾ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -fsanitize=വിലാസം. മെമ്മറി റീഡുകൾ പ്രവർത്തനരഹിതമാക്കാൻ
സംരക്ഷണ ഉപയോഗം --പരം asan-instrument-reads=0.

ആശാൻ-ഉപകരണം-എഴുതുന്നു
മെമ്മറി റൈറ്റുകൾക്കായി ബഫർ ഓവർഫ്ലോ കണ്ടെത്തൽ പ്രവർത്തനക്ഷമമാക്കുക. ഇത്തരത്തിലുള്ള സംരക്ഷണമാണ്
ഉപയോഗിക്കുമ്പോൾ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി -fsanitize=വിലാസം. മെമ്മറി എഴുതുന്നത് പ്രവർത്തനരഹിതമാക്കാൻ
സംരക്ഷണ ഉപയോഗം --പരം asan-instrument-writes=0 ഓപ്ഷൻ.

ആശാൻ-മെമിൻട്രിൻ
അന്തർനിർമ്മിത പ്രവർത്തനങ്ങൾക്കായി കണ്ടെത്തൽ പ്രവർത്തനക്ഷമമാക്കുക. ഇത്തരത്തിലുള്ള സംരക്ഷണം സാധ്യമാക്കുന്നത്
ഉപയോഗിക്കുമ്പോൾ സ്ഥിരസ്ഥിതി -fsanitize=വിലാസം. അന്തർനിർമ്മിത പ്രവർത്തനങ്ങളുടെ സംരക്ഷണം പ്രവർത്തനരഹിതമാക്കാൻ
ഉപയോഗം --പരം asan-memintrin=0.

ആശാൻ-ഉപയോഗത്തിനു ശേഷം-മടങ്ങുക
ഉപയോഗം-ആഫ്റ്റർ-റിട്ടേൺ കണ്ടെത്തൽ പ്രവർത്തനക്ഷമമാക്കുക. ഇത്തരത്തിലുള്ള സംരക്ഷണം സാധ്യമാക്കുന്നത്
ഉപയോഗിക്കുമ്പോൾ സ്ഥിരസ്ഥിതി -fsanitize=വിലാസം ഓപ്ഷൻ. ഉപയോഗം-ആഫ്റ്റർ-റിട്ടേൺ പ്രവർത്തനരഹിതമാക്കാൻ
കണ്ടെത്തൽ ഉപയോഗം --പരം asan-use-after-return=0.

ആശാൻ-ഇൻസ്ട്രുമെന്റേഷൻ-വിത്ത്-കോൾ-ത്രെഷോൾഡ്
ഫംഗ്‌ഷനിലുള്ള മെമ്മറി ആക്‌സസുകളുടെ എണ്ണം കൂടുതലോ തുല്യമോ ആണെങ്കിൽ
ഈ നമ്പർ, ഇൻലൈൻ പരിശോധനകൾക്ക് പകരം കോൾബാക്ക് ഉപയോഗിക്കുക. ഉദാ ഇൻലൈൻ കോഡ് പ്രവർത്തനരഹിതമാക്കാൻ
ഉപയോഗം --പരം asan-instrumentation-with-call-threshold=0.

chkp-max-ctor-size
പോയിന്റർ ബൗണ്ട്സ് ചെക്കർ സൃഷ്ടിച്ച സ്റ്റാറ്റിക് കൺസ്ട്രക്‌ടറുകൾ വളരെ വലുതായി മാറിയേക്കാം
ഒപ്റ്റിമൈസേഷൻ തലത്തിൽ കംപൈൽ സമയം ഗണ്യമായി വർദ്ധിപ്പിക്കുക -O1 ഉയർന്നതും. ഈ
ഒരൊറ്റ ജനറേറ്റഡ് കൺസ്‌ട്രക്‌റ്ററിലെ സ്‌റ്റേറ്റ്‌മെന്റുകളുടെ പരമാവധി സംഖ്യയാണ് പാരാമീറ്റർ.
സ്ഥിര മൂല്യം 5000 ആണ്.

max-fsm-thread-path-insns
പരിമിതമായ അവസ്ഥയിൽ ബ്ലോക്കുകൾ ഡ്യൂപ്ലിക്കേറ്റ് ചെയ്യുമ്പോൾ പകർത്താനുള്ള നിർദ്ദേശങ്ങളുടെ പരമാവധി എണ്ണം
ഓട്ടോമാറ്റൺ ജമ്പ് ത്രെഡ് പാത. സ്ഥിരസ്ഥിതി 100 ആണ്.

max-fsm-thread-length
ഒരു ഫിനിറ്റ് സ്റ്റേറ്റ് ഓട്ടോമാറ്റൺ ജമ്പ് ത്രെഡ് പാതയിലെ അടിസ്ഥാന ബ്ലോക്കുകളുടെ പരമാവധി എണ്ണം. ദി
സ്ഥിരസ്ഥിതി 10 ആണ്.

max-fsm-thread-paths
ഒരു ഫിനിറ്റ് സ്റ്റേറ്റ് ഓട്ടോമാറ്റണിനായി സൃഷ്ടിക്കാൻ പരമാവധി പുതിയ ജമ്പ് ത്രെഡ് പാതകൾ.
സ്ഥിരസ്ഥിതി 50 ആണ്.

ഓപ്ഷനുകൾ നിയന്ത്രിക്കുന്നു The പ്രീപ്രൊസസ്സർ
ഈ ഓപ്‌ഷനുകൾ C പ്രീപ്രൊസസ്സർ നിയന്ത്രിക്കുന്നു, അത് യഥാർത്ഥമായതിന് മുമ്പായി ഓരോ C ഉറവിട ഫയലിലും പ്രവർത്തിക്കുന്നു
സമാഹാരം.

നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ -E ഓപ്ഷൻ, പ്രീപ്രോസസിംഗ് ഒഴികെ ഒന്നും ചെയ്തിട്ടില്ല. ഈ ഓപ്ഷനുകളിൽ ചിലത്
ഒരുമിച്ച് മാത്രം അർത്ഥമാക്കുക -E കാരണം അവ പ്രീപ്രോസസർ ഔട്ട്പുട്ട് ആകാൻ കാരണമാകുന്നു
യഥാർത്ഥ സമാഹാരത്തിന് അനുയോജ്യമല്ല.

-Wp,ഓപ്ഷൻ
നിങ്ങൾക്ക് ഉപയോഗിക്കാം -Wp,ഓപ്ഷൻ കമ്പൈലർ ഡ്രൈവറെ മറികടന്ന് കടന്നുപോകാൻ ഓപ്ഷൻ നേരിട്ട് വഴി
പ്രീപ്രോസസറിലേക്ക്. എങ്കിൽ ഓപ്ഷൻ കോമകൾ അടങ്ങിയിരിക്കുന്നു, ഇത് ഒന്നിലധികം ഓപ്ഷനുകളായി വിഭജിച്ചിരിക്കുന്നു
കോമകൾ. എന്നിരുന്നാലും, നിരവധി ഓപ്ഷനുകൾ പരിഷ്കരിക്കുകയോ വിവർത്തനം ചെയ്യുകയോ വ്യാഖ്യാനിക്കുകയോ ചെയ്യുന്നു
കംപൈലർ ഡ്രൈവർ പ്രീപ്രൊസസറിലേക്ക് കൈമാറുന്നതിന് മുമ്പ്, കൂടാതെ -ഡബ്ല്യുപി ബലപ്രയോഗത്തിലൂടെ കടന്നുപോകുന്നു
ഈ ഘട്ടം. പ്രീപ്രോസസറിന്റെ നേരിട്ടുള്ള ഇന്റർഫേസ് രേഖകളില്ലാത്തതും അതിന് വിധേയവുമാണ്
മാറ്റുക, അതിനാൽ സാധ്യമാകുമ്പോഴെല്ലാം നിങ്ങൾ ഉപയോഗിക്കുന്നത് ഒഴിവാക്കണം -ഡബ്ല്യുപി ഡ്രൈവർ കൈകാര്യം ചെയ്യട്ടെ
പകരം ഓപ്ഷനുകൾ.

-എക്സ്പ്രെപ്രൊസസ്സർ ഓപ്ഷൻ
ചുരം ഓപ്ഷൻ പ്രീപ്രോസസറിലേക്കുള്ള ഒരു ഓപ്ഷനായി. സിസ്റ്റം വിതരണം ചെയ്യാൻ നിങ്ങൾക്ക് ഇത് ഉപയോഗിക്കാം-
GCC തിരിച്ചറിയാത്ത പ്രത്യേക പ്രീപ്രൊസസ്സർ ഓപ്ഷനുകൾ.

ഒരു ആർഗ്യുമെന്റ് എടുക്കുന്ന ഒരു ഓപ്ഷൻ നിങ്ങൾക്ക് പാസാക്കണമെങ്കിൽ, നിങ്ങൾ ഉപയോഗിക്കണം -എക്സ്പ്രെപ്രൊസസ്സർ
രണ്ടുതവണ, ഒരിക്കൽ ഓപ്‌ഷനും ഒരിക്കൽ വാദത്തിനും.

-no-integrated-cpp
സമാഹരിക്കുന്നതിന് മുമ്പ് ഒരു പ്രത്യേക പാസായി പ്രീപ്രോസസ്സിംഗ് നടത്തുക. സ്ഥിരസ്ഥിതിയായി, GCC പ്രവർത്തിക്കുന്നു
ഇൻപുട്ട് ടോക്കണൈസേഷന്റെയും പാഴ്സിംഗിന്റെയും സംയോജിത ഭാഗമായി പ്രീപ്രോസസ്സിംഗ്. ഈ ഓപ്ഷൻ ആണെങ്കിൽ
നൽകിയിരിക്കുന്നത്, ഉചിതമായ ഭാഷയുടെ മുൻഭാഗം (ച്ച്ക്സനുമ്ക്സ, cc1 പ്ലസ്, അഥവാ cc1obj സി, സി++,
യഥാക്രമം ഒബ്ജക്റ്റീവ്-സി) പകരം രണ്ടുതവണ പ്രിപ്രോസസിംഗിന് വേണ്ടി മാത്രം
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്ത ഇൻപുട്ടിന്റെ യഥാർത്ഥ സമാഹാരത്തിനായി ഒരിക്കൽ. ഈ ഓപ്ഷൻ ഉപയോഗപ്രദമാകും
സംയോജിച്ച് -B or - റാപ്പർ ഒരു ഇതര പ്രീപ്രൊസസ്സർ വ്യക്തമാക്കുന്നതിനുള്ള ഓപ്ഷനുകൾ അല്ലെങ്കിൽ
സാധാരണ പ്രീപ്രോസസിംഗിനും ഇടയിലും പ്രോഗ്രാം ഉറവിടത്തിന്റെ അധിക പ്രോസസ്സിംഗ് നടത്തുക
സമാഹാരം.

-D പേര്
മുൻകൂട്ടി നിശ്ചയിക്കുക പേര് ഒരു മാക്രോ ആയി, നിർവചനം 1.

-D പേര്=നിര്വചനം
ന്റെ ഉള്ളടക്കം നിര്വചനം അവ സമയത്ത് പ്രത്യക്ഷപ്പെട്ടതുപോലെ ടോക്കണൈസ് ചെയ്യുകയും പ്രോസസ്സ് ചെയ്യുകയും ചെയ്യുന്നു
എയിലെ വിവർത്തന ഘട്ടം മൂന്ന് # നിർവചിക്കുക നിർദ്ദേശം. പ്രത്യേകിച്ച്, നിർവചനം ആയിരിക്കും
എംബഡഡ് ന്യൂലൈൻ പ്രതീകങ്ങളാൽ വെട്ടിച്ചുരുക്കി.

നിങ്ങൾ ഒരു ഷെല്ലിൽ നിന്നോ ഷെൽ പോലെയുള്ള പ്രോഗ്രാമിൽ നിന്നോ പ്രീപ്രൊസസ്സർ അഭ്യർത്ഥിക്കുകയാണെങ്കിൽ നിങ്ങൾക്ക് ആവശ്യമായി വന്നേക്കാം
a ഉള്ള സ്‌പെയ്‌സുകൾ പോലുള്ള പ്രതീകങ്ങൾ പരിരക്ഷിക്കുന്നതിന് ഷെല്ലിന്റെ ഉദ്ധരണി വാക്യഘടന ഉപയോഗിക്കുന്നതിന്
ഷെൽ വാക്യഘടനയിൽ അർത്ഥം.

കമാൻഡ് ലൈനിൽ ഒരു ഫംഗ്ഷൻ പോലുള്ള മാക്രോ നിർവചിക്കണമെങ്കിൽ, അതിന്റെ ആർഗ്യുമെന്റ് എഴുതുക
തുല്യ ചിഹ്നത്തിന് മുമ്പായി ചുറ്റുമുള്ള പരാൻതീസിസുകളുള്ള ലിസ്റ്റ് (എന്തെങ്കിലും ഉണ്ടെങ്കിൽ). പരാൻതീസിസ് ആകുന്നു
ഒട്ടുമിക്ക ഷെല്ലുകൾക്കും അർത്ഥവത്തായതിനാൽ നിങ്ങൾ ഓപ്ഷൻ ഉദ്ധരിക്കേണ്ടതുണ്ട്. കൂടെ sh ഒപ്പം csh,
-ഡി'പേര്(ആർഗ്സ്...)=നിര്വചനം' പ്രവൃത്തികൾ.

-D ഒപ്പം -U കമാൻഡ് ലൈനിൽ നൽകിയിരിക്കുന്ന ക്രമത്തിലാണ് ഓപ്ഷനുകൾ പ്രോസസ്സ് ചെയ്യുന്നത്. എല്ലാം
-ഇമാക്രോസ് ഫയല് ഒപ്പം -ഉൾപ്പെടുന്നു ഫയല് എല്ലാത്തിനുമുപരി, ഓപ്ഷനുകൾ പ്രോസസ്സ് ചെയ്യുന്നു -D ഒപ്പം -U ഓപ്ഷനുകൾ.

-U പേര്
ഏതെങ്കിലും മുൻ നിർവചനം റദ്ദാക്കുക പേര്, ഒന്നുകിൽ ബിൽറ്റ്-ഇൻ അല്ലെങ്കിൽ നൽകിയിരിക്കുന്നു -D ഓപ്ഷൻ.

-undef
സിസ്റ്റം-നിർദ്ദിഷ്‌ട അല്ലെങ്കിൽ ജിസിസി-നിർദ്ദിഷ്‌ട മാക്രോകളൊന്നും മുൻകൂട്ടി നിർവചിക്കരുത്. മാനദണ്ഡം മുൻകൂട്ടി നിശ്ചയിച്ചിരിക്കുന്നു
മാക്രോകൾ നിർവചിക്കപ്പെട്ടിരിക്കുന്നു.

-I മുതലാളി
ഡയറക്ടറി ചേർക്കുക മുതലാളി ഹെഡർ ഫയലുകൾക്കായി തിരയേണ്ട ഡയറക്ടറികളുടെ പട്ടികയിലേക്ക്.
നാമകരണം ചെയ്ത ഡയറക്ടറികൾ -I സ്റ്റാൻഡേർഡ് സിസ്റ്റത്തിൽ ഡയറക്ടറികൾ ഉൾപ്പെടുന്നതിന് മുമ്പ് തിരയുന്നു.
ഡയറക്ടറി ആണെങ്കിൽ മുതലാളി ഡയറക്‌ടറി ഉൾപ്പെടുന്ന ഒരു സ്റ്റാൻഡേർഡ് സിസ്റ്റമാണ്, ഓപ്‌ഷൻ അവഗണിക്കപ്പെടുന്നു
സിസ്റ്റം ഡയറക്‌ടറികൾക്കായുള്ള ഡിഫോൾട്ട് സെർച്ച് ഓർഡറും പ്രത്യേക ചികിത്സയും ഉറപ്പാക്കുക
സിസ്റ്റം ഹെഡറുകൾ പരാജയപ്പെടില്ല. എങ്കിൽ മുതലാളി "=" എന്നതിൽ ആരംഭിക്കുന്നു, തുടർന്ന് "=" ആകും
sysroot പ്രിഫിക്സ് ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിച്ചു; കാണുക --സിസ് റൂട്ട് ഒപ്പം -isysroot.

-o ഫയല്
ഔട്ട്പുട്ട് എഴുതുക ഫയല്. ഇത് വ്യക്തമാക്കുന്നതിന് സമാനമാണ് ഫയല് രണ്ടാമത്തെ നോൺ-ഓപ്‌ഷനായി
എന്നതിലേക്കുള്ള വാദം സിപിപി. ജിസി രണ്ടാമത്തെ നോൺ-ഓപ്ഷൻ ആർഗ്യുമെന്റിന് മറ്റൊരു വ്യാഖ്യാനമുണ്ട്,
അതിനാൽ നിങ്ങൾ ഉപയോഗിക്കണം -o ഔട്ട്പുട്ട് ഫയൽ വ്യക്തമാക്കുന്നതിന്.

- മതിൽ
സാധാരണ കോഡിന് അഭികാമ്യമായ എല്ലാ ഓപ്ഷണൽ മുന്നറിയിപ്പുകളും ഓണാക്കുന്നു. നിലവിൽ ഇത്
is - കമന്റ്, -Wtrigraphs, -Wmultichar കൂടാതെ ഒരു പൂർണ്ണസംഖ്യ പ്രമോഷൻ ഉണ്ടാക്കുന്നതിനെ കുറിച്ചുള്ള ഒരു മുന്നറിയിപ്പ്
"#if" എക്സ്പ്രഷനുകളിലെ അടയാളം മാറ്റം. പ്രീപ്രോസസറിന്റെ പല മുന്നറിയിപ്പുകളും ശ്രദ്ധിക്കുക
സ്ഥിരസ്ഥിതിയായി ഓണാണ്, അവ നിയന്ത്രിക്കാൻ ഓപ്‌ഷനുകളൊന്നുമില്ല.

- കമന്റ്
- അഭിപ്രായങ്ങൾ
ഒരു കമന്റ്-സ്റ്റാർട്ട് സീക്വൻസ് എപ്പോഴെങ്കിലും മുന്നറിയിപ്പ് നൽകുക /* a-ൽ ദൃശ്യമാകുന്നു /* അഭിപ്രായം, അല്ലെങ്കിൽ എപ്പോഴെങ്കിലും a
backslash-newline a-ൽ ദൃശ്യമാകുന്നു // അഭിപ്രായം. (രണ്ട് രൂപങ്ങൾക്കും ഒരേ ഫലമുണ്ട്.)

-Wtrigraphs
കമന്റുകളിലെ മിക്ക ട്രൈഗ്രാഫുകളും പ്രോഗ്രാമിന്റെ അർത്ഥത്തെ ബാധിക്കില്ല. എന്നിരുന്നാലും, എ
ഒരു രക്ഷപ്പെട്ട ന്യൂലൈൻ രൂപപ്പെടുത്തുന്ന ട്രൈഗ്രാഫ് (??/ ഒരു വരിയുടെ അവസാനം) can, by
അഭിപ്രായം എവിടെ തുടങ്ങുന്നു അല്ലെങ്കിൽ അവസാനിക്കുന്നു എന്ന് മാറ്റുന്നു. അതിനാൽ, ട്രൈഗ്രാഫുകൾ മാത്രമേ രൂപപ്പെടുകയുള്ളൂ
രക്ഷപ്പെട്ട ന്യൂലൈനുകൾ ഒരു കമന്റിനുള്ളിൽ മുന്നറിയിപ്പ് നൽകുന്നു.

ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നത് - മതിൽ. എങ്കിൽ - മതിൽ നൽകിയിട്ടില്ല, ഈ ഓപ്ഷൻ ഇപ്പോഴും പ്രവർത്തനക്ഷമമാണ്
ട്രൈഗ്രാഫുകൾ പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ലെങ്കിൽ. മുന്നറിയിപ്പുകളില്ലാതെ ട്രൈഗ്രാഫ് പരിവർത്തനം ലഭിക്കാൻ, എന്നാൽ നേടുക
മറ്റേയാൾ - മതിൽ മുന്നറിയിപ്പുകൾ, ഉപയോഗം -ട്രിഗ്രാഫ്സ് - മതിൽ -Wno-trigraphs.

- പരമ്പരാഗത
പരമ്പരാഗത, ഐഎസ്ഒ സി എന്നിവയിൽ വ്യത്യസ്തമായി പെരുമാറുന്ന ചില നിർമ്മിതികളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
പരമ്പരാഗത സി തത്തുല്യവും പ്രശ്‌നകരവുമായ ISO C നിർമ്മിതികളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
ഒഴിവാക്കേണ്ട നിർമ്മാണങ്ങൾ.

-വുണ്ടെഫ്
മാക്രോ അല്ലാത്ത ഒരു ഐഡന്റിഫയർ ഒരു ഐഡന്റിഫയർ നേരിടുമ്പോഴെല്ലാം മുന്നറിയിപ്പ് നൽകുക #എങ്കിൽ നിർദ്ദേശം,
അതിനു പുറത്ത് നിർവചിച്ചിരിക്കുന്നത്. അത്തരം ഐഡന്റിഫയറുകൾ പൂജ്യം ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നു.

-വുനുസ്ഡ്-മാക്രോസ്
ഉപയോഗിക്കാത്ത പ്രധാന ഫയലിൽ നിർവചിച്ചിരിക്കുന്ന മാക്രോകളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക. ഒരു മാക്രോ ആണ് ഉപയോഗിച്ച അങ്ങനെ എങ്കിൽ
ഒരിക്കലെങ്കിലും വിപുലീകരിച്ചു അല്ലെങ്കിൽ നിലനിൽപ്പിനായി പരീക്ഷിച്ചു. എങ്കിൽ പ്രീപ്രൊസസ്സർ മുന്നറിയിപ്പ് നൽകും
മാക്രോ പുനർ നിർവചിക്കപ്പെട്ടതോ നിർവചിക്കാത്തതോ ആയ സമയത്ത് ഉപയോഗിച്ചിട്ടില്ല.

ബിൽറ്റ്-ഇൻ മാക്രോകൾ, കമാൻഡ് ലൈനിൽ നിർവചിച്ചിരിക്കുന്ന മാക്രോകൾ, ഇതിൽ നിർവചിച്ചിരിക്കുന്ന മാക്രോകൾ എന്നിവ ഉൾപ്പെടുന്നു
ഫയലുകളെ കുറിച്ച് മുന്നറിയിപ്പ് നൽകിയിട്ടില്ല.

കുറിപ്പ്: ഒരു മാക്രോ യഥാർത്ഥത്തിൽ ഉപയോഗിക്കുകയാണെങ്കിൽ, ഒഴിവാക്കിയ സോപാധിക ബ്ലോക്കുകളിൽ മാത്രമാണ് ഉപയോഗിക്കുന്നത്, അപ്പോൾ
ഇത് ഉപയോഗിക്കാത്തതായി CPP റിപ്പോർട്ട് ചെയ്യും. അത്തരമൊരു സാഹചര്യത്തിൽ മുന്നറിയിപ്പ് ഒഴിവാക്കാൻ, നിങ്ങൾ മെച്ചപ്പെടുത്തിയേക്കാം
മാക്രോയുടെ നിർവചനത്തിന്റെ വ്യാപ്തി, ഉദാഹരണത്തിന്, അത് ആദ്യം ഒഴിവാക്കിയതിലേക്ക് നീക്കുക
തടയുക. പകരമായി, ഇതുപോലുള്ള എന്തെങ്കിലും ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒരു ഡമ്മി ഉപയോഗം നൽകാം:

#നിർവ്വചിച്ചാൽ_മാക്രോ_മുന്നറിയിപ്പ്
#അവസാനം

-Wendif-ലേബലുകൾ
എപ്പോഴെങ്കിലും മുന്നറിയിപ്പ് നൽകുക # കൂടാതെ അല്ലെങ്കിൽ ഒരു #അവസാനം വാചകം പിന്തുടരുന്നു. ഇത് സാധാരണയായി സംഭവിക്കുന്നത്
ഫോമിന്റെ കോഡ്

#FOO ആണെങ്കിൽ
...
#മറ്റുള്ള FOO
...
#endif FOO

രണ്ടാമത്തെയും മൂന്നാമത്തെയും "FOO" അഭിപ്രായങ്ങളിൽ ഉണ്ടായിരിക്കണം, പക്ഷേ പലപ്പോഴും പഴയ പ്രോഗ്രാമുകളിൽ ഇല്ല.
ഈ മുന്നറിയിപ്പ് ഡിഫോൾട്ടായി ഓണാണ്.

-വെറർ
എല്ലാ മുന്നറിയിപ്പുകളും കഠിനമായ പിശകുകളാക്കി മാറ്റുക. മുന്നറിയിപ്പുകൾ ട്രിഗർ ചെയ്യുന്ന ഉറവിട കോഡ് ആയിരിക്കും
നിരസിച്ചു.

-ഡബ്ല്യുസിസ്റ്റം-ഹെഡറുകൾ
സിസ്റ്റം ഹെഡറുകളിൽ കോഡിന് മുന്നറിയിപ്പുകൾ നൽകുക. ഇവ സാധാരണയായി കണ്ടെത്തുന്നതിന് സഹായകരമല്ല
നിങ്ങളുടെ സ്വന്തം കോഡിലെ ബഗുകൾ, അതിനാൽ അടിച്ചമർത്തപ്പെട്ടു. നിങ്ങൾ സിസ്റ്റത്തിന് ഉത്തരവാദിയാണെങ്കിൽ
ലൈബ്രറി, നിങ്ങൾക്ക് അവ കാണാൻ താൽപ്പര്യമുണ്ടാകാം.

-w GNU CPP സ്ഥിരസ്ഥിതിയായി പുറപ്പെടുവിക്കുന്നവ ഉൾപ്പെടെ എല്ലാ മുന്നറിയിപ്പുകളും അടിച്ചമർത്തുക.

-പെഡാന്റിക്
സി സ്റ്റാൻഡേർഡിൽ ലിസ്റ്റ് ചെയ്തിട്ടുള്ള എല്ലാ നിർബന്ധിത ഡയഗ്നോസ്റ്റിക്സും നൽകുക. അവയിൽ ചിലത് അവശേഷിക്കുന്നു
സ്ഥിരസ്ഥിതിയായി, അവ നിരുപദ്രവകരമായ കോഡിൽ ഇടയ്ക്കിടെ പ്രവർത്തനക്ഷമമാക്കുന്നു.

-പെഡന്റിക്-പിശകുകൾ
എല്ലാ നിർബന്ധിത ഡയഗ്‌നോസ്റ്റിക്‌സും ഇഷ്യൂ ചെയ്യുക, കൂടാതെ എല്ലാ നിർബന്ധിത ഡയഗ്‌നോസ്റ്റിക്‌സും പിശകുകളാക്കുക.
ജിസിസി നൽകാത്ത നിർബന്ധിത ഡയഗ്നോസ്റ്റിക്‌സ് ഇതിൽ ഉൾപ്പെടുന്നു -പെഡാന്റിക് എന്നാൽ ആയി പരിഗണിക്കുന്നു
മുന്നറിയിപ്പുകൾ.

-M പ്രീപ്രോസസിംഗിന്റെ ഫലം ഔട്ട്പുട്ട് ചെയ്യുന്നതിന് പകരം, അനുയോജ്യമായ ഒരു നിയമം ഔട്ട്പുട്ട് ചെയ്യുക ഉണ്ടാക്കുക
പ്രധാന സോഴ്സ് ഫയലിന്റെ ഡിപൻഡൻസികൾ വിവരിക്കുന്നു. പ്രീപ്രൊസസ്സർ ഒന്ന് ഔട്ട്പുട്ട് ചെയ്യുന്നു
ഉണ്ടാക്കുക ആ സോഴ്‌സ് ഫയലിന്റെ ഒബ്‌ജക്റ്റ് ഫയലിന്റെ പേര്, കോളൻ, പേരുകൾ എന്നിവ അടങ്ങിയിരിക്കുന്ന റൂൾ
വരുന്നവ ഉൾപ്പെടെ ഉൾപ്പെടുത്തിയ എല്ലാ ഫയലുകളുടെയും -ഉൾപ്പെടുന്നു or -ഇമാക്രോസ് കമാൻഡ്-
ലൈൻ ഓപ്ഷനുകൾ.

വ്യക്തമായി വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ (കൂടെ -എം.ടി or -എം.ക്യു), ഒബ്‌ജക്‌റ്റ് ഫയലിന്റെ പേരിൽ അടങ്ങിയിരിക്കുന്നു
സോഴ്സ് ഫയലിന്റെ പേര് ഏതെങ്കിലും സഫിക്‌സ് ഉപയോഗിച്ച് മാറ്റി പകരം ഒബ്‌ജക്റ്റ് ഫയൽ സഫിക്‌സും ഏതെങ്കിലും
മുൻനിര ഡയറക്ടറി ഭാഗങ്ങൾ നീക്കം ചെയ്തു. ഉൾപ്പെടുത്തിയിട്ടുള്ള നിരവധി ഫയലുകൾ ഉണ്ടെങ്കിൽ, നിയമമാണ്
ഉപയോഗിച്ച് നിരവധി വരികളായി വിഭജിക്കുക \-പുതിയ വര. ഭരണത്തിന് കമാൻഡുകളൊന്നുമില്ല.

ഈ ഓപ്‌ഷൻ പ്രീപ്രോസസറിന്റെ ഡീബഗ് ഔട്ട്‌പുട്ടിനെ അടിച്ചമർത്തുന്നില്ല -ഡിഎം. ഒഴിവാക്കാൻ
അത്തരം ഡീബഗ് ഔട്ട്പുട്ടും ഡിപൻഡൻസി നിയമങ്ങളും നിങ്ങൾ വ്യക്തമായി വ്യക്തമാക്കണം
കൂടെ ഡിപൻഡൻസി ഔട്ട്പുട്ട് ഫയൽ -എം.എഫ്, അല്ലെങ്കിൽ ഒരു പരിസ്ഥിതി വേരിയബിൾ ഉപയോഗിക്കുക
DEPENDENCIES_OUTPUT. ഡീബഗ് ഔട്ട്പുട്ട് ഇപ്പോഴും സാധാരണ ഔട്ട്പുട്ട് സ്ട്രീമിലേക്ക് അയയ്ക്കും
സാധാരണ.

കടന്നുപോകുന്നു -M ഡ്രൈവർ സൂചിപ്പിക്കുന്നത് -E, കൂടാതെ മുന്നറിയിപ്പുകളെ പരോക്ഷമായി അടിച്ചമർത്തുന്നു -w.

-എം.എം പോലെ -M എന്നാൽ സിസ്റ്റം ഹെഡർ ഡയറക്‌ടറികളിൽ കാണുന്ന ഹെഡർ ഫയലുകൾ പരാമർശിക്കരുത്,
അല്ലെങ്കിൽ അത്തരം ഒരു തലക്കെട്ടിൽ നിന്ന് നേരിട്ടോ അല്ലാതെയോ ഉൾപ്പെടുത്തിയിട്ടുള്ള ഹെഡ്ഡർ ഫയലുകൾ.

ഒരു ആംഗിൾ ബ്രാക്കറ്റുകളുടെയോ ഇരട്ട ഉദ്ധരണികളുടെയോ തിരഞ്ഞെടുക്കൽ ഇത് സൂചിപ്പിക്കുന്നു # ഉൾപ്പെടുത്തുക
ആ തലക്കെട്ട് ദൃശ്യമാകുമോ എന്ന് നിർദ്ദേശം തന്നെ നിർണ്ണയിക്കുന്നില്ല -എം.എം
ഡിപൻഡൻസി ഔട്ട്പുട്ട്. ഇത് GCC പതിപ്പുകൾ 3.0, എന്നിവയിൽ നിന്ന് സെമാന്റിക്‌സിൽ നേരിയ മാറ്റമാണ്
നേരത്തെ.

-എം.എഫ് ഫയല്
കൂടെ ഉപയോഗിക്കുമ്പോൾ -M or -എം.എം, ഡിപൻഡൻസികൾ എഴുതാൻ ഒരു ഫയൽ വ്യക്തമാക്കുന്നു. അല്ലെങ്കിൽ -എം.എഫ്
സ്വിച്ച് നൽകിയിരിക്കുന്നു, പ്രീപ്രൊസസ്സർ അത് അയച്ച അതേ സ്ഥലത്തേക്ക് നിയമങ്ങൾ അയയ്ക്കുന്നു
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്ത ഔട്ട്പുട്ട്.

ഡ്രൈവർ ഓപ്ഷനുകൾക്കൊപ്പം ഉപയോഗിക്കുമ്പോൾ -എം.ഡി or -എംഎംഡി, -എം.എഫ് ഡിഫോൾട്ട് ഡിപൻഡൻസിയെ അസാധുവാക്കുന്നു
ഔട്ട്പുട്ട് ഫയൽ.

-എം.ജി പോലുള്ള ഒരു ഓപ്ഷനുമായി സംയോജിച്ച് -M ആശ്രിതത്വം സൃഷ്ടിക്കാൻ അഭ്യർത്ഥിക്കുന്നു, -എം.ജി അനുമാനിക്കുന്നു
നഷ്‌ടമായ ഹെഡർ ഫയലുകൾ ജനറേറ്റ് ചെയ്‌ത ഫയലുകളാണ് കൂടാതെ അവ ഇല്ലാതെ ഡിപൻഡൻസി ലിസ്റ്റിലേക്ക് ചേർക്കുന്നു
ഒരു പിശക് ഉയർത്തുന്നു. ഡിപൻഡൻസി ഫയലിന്റെ പേര് "#ഉൾപ്പെടുത്തുക" എന്നതിൽ നിന്ന് നേരിട്ട് എടുത്തതാണ്
ഒരു പാതയും മുൻകൈയെടുക്കാതെ നിർദ്ദേശം. -എം.ജി പ്രീപ്രോസസ്ഡ് ഔട്ട്‌പുട്ടിനെയും അടിച്ചമർത്തുന്നു, a
നഷ്‌ടമായ ഹെഡർ ഫയൽ ഇത് ഉപയോഗശൂന്യമാക്കുന്നു.

മേക്ക് ഫയലുകളുടെ യാന്ത്രിക അപ്‌ഡേറ്റിൽ ഈ സവിശേഷത ഉപയോഗിക്കുന്നു.

-എം.പി ഈ ഓപ്‌ഷൻ CPP-യെ കൂടാതെ ഓരോ ഡിപൻഡൻസിക്കും ഒരു വ്യാജ ടാർഗെറ്റ് ചേർക്കാൻ നിർദ്ദേശിക്കുന്നു
പ്രധാന ഫയൽ, ഓരോന്നും ഒന്നിനേയും ആശ്രയിക്കുന്നില്ല. ഈ ഡമ്മി നിയമങ്ങൾ പിശകുകൾക്ക് ചുറ്റും പ്രവർത്തിക്കുന്നു
ഉണ്ടാക്കുക അപ്‌ഡേറ്റ് ചെയ്യാതെ നിങ്ങൾ ഹെഡർ ഫയലുകൾ നീക്കം ചെയ്താൽ നൽകുന്നു Makefile പൊരുത്തപ്പെടാൻ.

ഇത് സാധാരണ ഔട്ട്പുട്ട് ആണ്:

test.o: test.c test.h

test.h:

-എം.ടി ലക്ഷ്യം
ഡിപൻഡൻസി ജനറേഷൻ പുറപ്പെടുവിക്കുന്ന നിയമത്തിന്റെ ലക്ഷ്യം മാറ്റുക. ഡിഫോൾട്ടായി CPP എടുക്കുന്നു
പ്രധാന ഇൻപുട്ട് ഫയലിന്റെ പേര്, ഏതെങ്കിലും ഡയറക്ടറി ഘടകങ്ങളും ഏതെങ്കിലും ഫയൽ പ്രത്യയവും ഇല്ലാതാക്കുന്നു
അതുപോലെ .c, കൂടാതെ പ്ലാറ്റ്‌ഫോമിന്റെ സാധാരണ ഒബ്‌ജക്റ്റ് സഫിക്‌സ് കൂട്ടിച്ചേർക്കുന്നു. ഫലം ലക്ഷ്യമാണ്.

An -എം.ടി നിങ്ങൾ വ്യക്തമാക്കുന്ന സ്ട്രിംഗ് ആയി ഓപ്‌ഷൻ ടാർഗെറ്റിനെ സജ്ജമാക്കും. നിങ്ങൾക്ക് വേണമെങ്കിൽ
ഒന്നിലധികം ടാർഗെറ്റുകൾ, നിങ്ങൾക്ക് അവയെ ഒരൊറ്റ ആർഗ്യുമെന്റായി വ്യക്തമാക്കാൻ കഴിയും -എം.ടി, അല്ലെങ്കിൽ ഒന്നിലധികം ഉപയോഗിക്കുക
-എം.ടി ഓപ്ഷനുകൾ.

ഉദാഹരണത്തിന്, -എം.ടി '$(objpfx)foo.o' കൊടുത്തേക്കാം

$(objpfx)foo.o: foo.c

-എം.ക്യു ലക്ഷ്യം
അതുപോലെ തന്നെ -എം.ടി, എന്നാൽ ഇത് നിർമ്മിക്കാൻ പ്രത്യേകമായ ഏതെങ്കിലും കഥാപാത്രങ്ങളെ ഉദ്ധരിക്കുന്നു.
-എം.ക്യു '$(objpfx)foo.o' നൽകുന്നു

$$(objpfx)foo.o: foo.c

ഡിഫോൾട്ട് ടാർഗെറ്റ് സ്വയമേ ഉദ്ധരിക്കപ്പെടുന്നു, അത് നൽകിയതുപോലെ -എം.ക്യു.

-എം.ഡി -എം.ഡി എന്നതിന് തുല്യമാണ് -M -എം.എഫ് ഫയല്, അതൊഴിച്ചുള്ളത് -E എന്നത് സൂചിപ്പിച്ചിട്ടില്ല. ഡ്രൈവർ
നിർണ്ണയിക്കുന്നത് ഫയല് എന്നതിനെ അടിസ്ഥാനമാക്കി -o ഓപ്ഷൻ നൽകിയിരിക്കുന്നു. അങ്ങനെയാണെങ്കിൽ, ഡ്രൈവർ അത് ഉപയോഗിക്കുന്നു
വാദം എന്നാൽ ഒരു പ്രത്യയം .d, അല്ലെങ്കിൽ അത് ഇൻപുട്ട് ഫയലിന്റെ പേര് എടുക്കുന്നു,
ഏതെങ്കിലും ഡയറക്‌ടറി ഘടകങ്ങളും സഫിക്സും നീക്കം ചെയ്യുന്നു, കൂടാതെ a പ്രയോഗിക്കുന്നു .d പ്രത്യയം.

If -എം.ഡി എന്നിവയുമായി ചേർന്ന് ഉപയോഗിക്കുന്നു -E, ഏതെങ്കിലും -o സ്വിച്ച് വ്യക്തമാക്കാൻ മനസ്സിലാക്കുന്നു
ഡിപൻഡൻസി ഔട്ട്പുട്ട് ഫയൽ, പക്ഷേ ഉപയോഗിക്കാതെയാണെങ്കിൽ -E, ഓരോന്നും -o a വ്യക്തമാക്കാൻ മനസ്സിലാക്കുന്നു
ടാർഗെറ്റ് ഒബ്ജക്റ്റ് ഫയൽ.

മുതലുള്ള -E സൂചിപ്പിച്ചിട്ടില്ല, -എം.ഡി a ആയി ഒരു ഡിപൻഡൻസി ഔട്ട്പുട്ട് ഫയൽ ജനറേറ്റ് ചെയ്യാൻ ഉപയോഗിക്കാം
സമാഹാര പ്രക്രിയയുടെ പാർശ്വഫലങ്ങൾ.

-എംഎംഡി
പോലെ -എം.ഡി ഉപയോക്തൃ ഹെഡർ ഫയലുകൾ മാത്രം പരാമർശിക്കുക, സിസ്റ്റം ഹെഡർ ഫയലുകൾ അല്ല.

-fpch-deps
മുൻകൂട്ടി തയ്യാറാക്കിയ തലക്കെട്ടുകൾ ഉപയോഗിക്കുമ്പോൾ, ഈ ഫ്ലാഗ് ഡിപൻഡൻസി-ഔട്ട്പുട്ട് ഫ്ലാഗുകൾക്ക് കാരണമാകും
പ്രീ കംപൈൽ ചെയ്ത ഹെഡറിന്റെ ഡിപൻഡൻസികളിൽ നിന്നുള്ള ഫയലുകളും ലിസ്റ്റ് ചെയ്യുക. വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ മാത്രം
മുൻകൂട്ടി കംപൈൽ ചെയ്‌ത തലക്കെട്ട് ലിസ്‌റ്റ് ചെയ്‌തിരിക്കും, അത് സൃഷ്‌ടിക്കാൻ ഉപയോഗിച്ച ഫയലുകളല്ല
കാരണം ഒരു പ്രീ കംപൈൽഡ് ഹെഡർ ഉപയോഗിക്കുമ്പോൾ ആ ഫയലുകൾ പരിശോധിക്കില്ല.

-fpch-പ്രോപ്രോസസ്
ഈ ഓപ്‌ഷൻ ഒരു പ്രീ കംപൈൽ ചെയ്‌ത തലക്കെട്ട് ഒരുമിച്ച് ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു -E. ഇത് ഒരു പ്രത്യേകം ചേർക്കുന്നു
"#പ്രാഗ്മ", "#പ്രാഗ്മ GCC pch_preprocess "ഫയലിന്റെ പേര്"" സ്ഥലം അടയാളപ്പെടുത്താൻ ഔട്ട്പുട്ടിൽ
എവിടെയാണ് മുൻകൂട്ടി തയ്യാറാക്കിയ തലക്കെട്ട് കണ്ടെത്തിയത്, അതിന്റെ ഫയലിന്റെ പേര്. എപ്പോൾ -fpreprocessed ഉണ്ട്
ഉപയോഗിക്കുക, GCC ഈ "#പ്രാഗ്മ" തിരിച്ചറിയുകയും PCH ലോഡ് ചെയ്യുകയും ചെയ്യുന്നു.

ഈ ഓപ്‌ഷൻ ഡിഫോൾട്ടായി ഓഫാണ്, കാരണം തത്ഫലമായുണ്ടാകുന്ന പ്രീപ്രോസസ്ഡ് ഔട്ട്പുട്ട് മാത്രമായിരിക്കും
ജിസിസിയിലേക്ക് ഇൻപുട്ടായി ശരിക്കും അനുയോജ്യമാണ്. ഇത് സ്വിച്ച് ഓൺ ചെയ്തിരിക്കുന്നു -സേവ്-ടെമ്പുകൾ.

നിങ്ങളുടെ സ്വന്തം കോഡിൽ ഈ "#പ്രാഗ്മ" എഴുതരുത്, എന്നാൽ ഇത് എഡിറ്റ് ചെയ്യുന്നത് സുരക്ഷിതമാണ്
PCH ഫയൽ മറ്റൊരു സ്ഥലത്ത് ലഭ്യമാണെങ്കിൽ ഫയലിന്റെ പേര്. ഫയലിന്റെ പേര് ആയിരിക്കാം
സമ്പൂർണ്ണ അല്ലെങ്കിൽ അത് GCC യുടെ നിലവിലെ ഡയറക്ടറിയുമായി ബന്ധപ്പെട്ടതാകാം.

-x c
-x c ++
-x ലക്ഷ്യം-സി
-x അസംബ്ലർ-വിത്ത്-സിപിപി
ഉറവിട ഭാഷ വ്യക്തമാക്കുക: C, C++, Objective-C അല്ലെങ്കിൽ അസംബ്ലി. ഇതിന് ഒന്നും ചെയ്യാനില്ല
സ്റ്റാൻഡേർഡ് അനുരൂപമോ വിപുലീകരണങ്ങളോ ഉപയോഗിച്ച്; ഏത് അടിസ്ഥാന വാക്യഘടനയാണ് അത് തിരഞ്ഞെടുക്കുന്നത്
പ്രതീക്ഷിക്കുക. നിങ്ങൾ ഈ ഓപ്‌ഷനുകളൊന്നും നൽകുന്നില്ലെങ്കിൽ, cpp എന്നതിൽ നിന്ന് ഭാഷ കുറയ്ക്കും
ഉറവിട ഫയലിന്റെ വിപുലീകരണം: .c, .cc, .m, അഥവാ .S. ഇതിനായുള്ള മറ്റ് ചില പൊതുവായ വിപുലീകരണങ്ങൾ
C++, അസംബ്ലി എന്നിവയും അംഗീകരിച്ചിട്ടുണ്ട്. cpp വിപുലീകരണം തിരിച്ചറിയുന്നില്ലെങ്കിൽ, അത്
ഫയലിനെ സി ആയി പരിഗണിക്കും; ഇതാണ് ഏറ്റവും സാധാരണമായ മോഡ്.

കുറിപ്പ്: cpp-യുടെ മുൻ പതിപ്പുകൾ അംഗീകരിച്ചു a -ലംഗ് രണ്ടും തിരഞ്ഞെടുത്ത ഓപ്ഷൻ
ഭാഷയും മാനദണ്ഡങ്ങൾ പാലിക്കുന്ന നിലയും. ഈ ഓപ്ഷൻ നീക്കം ചെയ്തു, കാരണം
അതുമായി വൈരുദ്ധ്യമുണ്ട് -l ഓപ്ഷൻ.

-std=സാധാരണ
-ആൻസി
കോഡ് ഏത് സ്റ്റാൻഡേർഡിലേക്ക് പൊരുത്തപ്പെടണം എന്ന് വ്യക്തമാക്കുക. നിലവിൽ സിപിപിക്ക് സിയെക്കുറിച്ച് അറിയാം
കൂടാതെ C++ മാനദണ്ഡങ്ങൾ; മറ്റുള്ളവ ഭാവിയിൽ ചേർത്തേക്കാം.

സാധാരണ ഇവയിലൊന്നായിരിക്കാം:

"c90"
"c89"
"iso9899:1990"
1990 മുതൽ ISO C നിലവാരം. C90 എന്നതാണ് ഈ പതിപ്പിന്റെ പതിവ് ചുരുക്കെഴുത്ത്
സ്റ്റാൻഡേർഡ്.

ദി -ആൻസി ഓപ്ഷൻ തുല്യമാണ് -std=c90.

"iso9899:199409"
1990-ൽ ഭേദഗതി വരുത്തിയ 1994 C നിലവാരം.

"iso9899:1999"
"c99"
"iso9899:199x"
"c9x"
1999 ഡിസംബറിൽ പ്രസിദ്ധീകരിച്ച പുതുക്കിയ ISO C നിലവാരം. പ്രസിദ്ധീകരിക്കുന്നതിന് മുമ്പ്, ഇത്
C9X എന്നാണ് അറിയപ്പെട്ടിരുന്നത്.

"iso9899:2011"
"c11"
"c1x"
2011 ഡിസംബറിൽ പ്രസിദ്ധീകരിച്ച പുതുക്കിയ ISO C നിലവാരം. പ്രസിദ്ധീകരിക്കുന്നതിന് മുമ്പ്, ഇത്
C1X എന്നാണ് അറിയപ്പെട്ടിരുന്നത്.

"gnu90"
"gnu89"
1990 സി സ്റ്റാൻഡേർഡ് പ്ലസ് ഗ്നു എക്സ്റ്റൻഷനുകൾ. ഇതാണ് സ്ഥിരസ്ഥിതി.

"gnu99"
"gnu9x"
1999 സി സ്റ്റാൻഡേർഡ് പ്ലസ് ഗ്നു എക്സ്റ്റൻഷനുകൾ.

"gnu11"
"gnu1x"
2011 സി സ്റ്റാൻഡേർഡ് പ്ലസ് ഗ്നു എക്സ്റ്റൻഷനുകൾ.

"c++98"
1998 ISO C++ സ്റ്റാൻഡേർഡ് പ്ലസ് ഭേദഗതികൾ.

"gnu++98"
അത് പോലെ തന്നെ -std=c++98 കൂടാതെ ഗ്നു വിപുലീകരണങ്ങളും. ഇത് C++ കോഡിന്റെ ഡിഫോൾട്ടാണ്.

-ഞാൻ- ഉൾപ്പെടുന്ന പാത വിഭജിക്കുക. വ്യക്തമാക്കിയിട്ടുള്ള ഏതെങ്കിലും ഡയറക്ടറികൾ -I മുമ്പ് ഓപ്ഷനുകൾ -ഞാൻ- ആകുന്നു
"#include" ഉപയോഗിച്ച് അഭ്യർത്ഥിച്ച തലക്കെട്ടുകൾക്കായി മാത്രം തിരഞ്ഞുഫയൽ""; അവർ അന്വേഷിക്കുന്നില്ല
"#ഉൾപ്പെടുന്നുഫയൽ>". കൂടെ അധിക ഡയറക്ടറികൾ വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിൽ -I ശേഷം ഓപ്ഷനുകൾ
-ഞാൻ-, ആ ഡയറക്‌ടറികൾ എല്ലാം തിരയുന്നു # ഉൾപ്പെടുത്തുക നിർദ്ദേശങ്ങൾ.

ഇതുകൂടാതെ, -ഞാൻ- നിലവിലെ ഫയൽ ഡയറക്ടറിയുടെ ഡയറക്ടറിയുടെ ഉപയോഗം തടയുന്നു
"#include" എന്നതിനായുള്ള ആദ്യ തിരയൽ ഡയറക്ടറിഫയൽ"". ഈ ഓപ്ഷൻ ഒഴിവാക്കി.

-nostdinc
ഹെഡ്ഡർ ഫയലുകൾക്കായി സ്റ്റാൻഡേർഡ് സിസ്റ്റം ഡയറക്ടറികൾ തിരയരുത്. ഡയറക്ടറികൾ മാത്രം
കൂടെ നിങ്ങൾ വ്യക്തമാക്കിയിട്ടുണ്ട് -I ഓപ്ഷനുകൾ (ഒപ്പം നിലവിലെ ഫയലിന്റെ ഡയറക്ടറിയും, എങ്കിൽ
ഉചിതം) തിരയുന്നു.

-nostdinc++
C++-നിർദ്ദിഷ്‌ട സ്റ്റാൻഡേർഡ് ഡയറക്‌ടറികളിൽ ഹെഡർ ഫയലുകൾക്കായി തിരയരുത്, പക്ഷേ ഇപ്പോഴും ചെയ്യുക
മറ്റ് സ്റ്റാൻഡേർഡ് ഡയറക്ടറികൾ തിരയുക. (സി++ നിർമ്മിക്കുമ്പോൾ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു
പുസ്തകശാല.)

-ഉൾപ്പെടുന്നു ഫയല്
പ്രോസസ്സ് ഫയല് "#include "file"" പ്രാഥമിക ഉറവിടത്തിന്റെ ആദ്യ വരിയായി പ്രത്യക്ഷപ്പെട്ടതുപോലെ
ഫയൽ. എന്നിരുന്നാലും, ആദ്യത്തെ ഡയറക്ടറി തിരഞ്ഞു ഫയല് പ്രീപ്രൊസസ്സറിന്റെ പ്രവർത്തനമാണ്
ഡയറക്ടറി പകരം of പ്രധാന സോഴ്സ് ഫയൽ അടങ്ങുന്ന ഡയറക്ടറി. കണ്ടെത്തിയില്ലെങ്കിൽ
അവിടെ, "#include "..."" എന്ന തിരയൽ ശൃംഖലയുടെ ശേഷിക്കുന്ന ഭാഗത്ത് ഇത് തിരയുന്നു
സാധാരണ.

ഒന്നിലധികം ആണെങ്കിൽ -ഉൾപ്പെടുന്നു ഓപ്ഷനുകൾ നൽകിയിരിക്കുന്നു, ഫയലുകൾ അവ ക്രമത്തിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്
കമാൻഡ് ലൈനിൽ ദൃശ്യമാകും.

-ഇമാക്രോസ് ഫയല്
കൃത്യമായി പോലെ -ഉൾപ്പെടുന്നു, സ്കാനിംഗ് വഴിയുള്ള ഏതെങ്കിലും ഔട്ട്പുട്ട് ഒഴികെ ഫയല് എറിയപ്പെടുന്നു
ദൂരെ. അത് നിർവചിക്കുന്ന മാക്രോകൾ നിർവചിക്കപ്പെട്ടിരിക്കുന്നു. എല്ലാ മാക്രോകളും സ്വന്തമാക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു
ഒരു ഹെഡറിൽ നിന്ന് അതിന്റെ പ്രഖ്യാപനങ്ങൾ പ്രോസസ്സ് ചെയ്യാതെ.

വ്യക്തമാക്കിയ എല്ലാ ഫയലുകളും -ഇമാക്രോസ് വ്യക്തമാക്കിയ എല്ലാ ഫയലുകൾക്കും മുമ്പായി പ്രോസസ്സ് ചെയ്യുന്നു -ഉൾപ്പെടുന്നു.

-ഇദിരാഫ്റ്റർ മുതലാളി
തിരയൽ മുതലാളി ഹെഡ്ഡർ ഫയലുകൾക്കായി, എന്നാൽ അത് ചെയ്യുക ശേഷം ഉപയോഗിച്ച് വ്യക്തമാക്കിയ എല്ലാ ഡയറക്ടറികളും -I ഒപ്പം
സ്റ്റാൻഡേർഡ് സിസ്റ്റം ഡയറക്ടറികൾ തീർന്നു. മുതലാളി ഉൾപ്പെടുന്ന ഒരു സംവിധാനമായി കണക്കാക്കുന്നു
ഡയറക്ടറി. എങ്കിൽ മുതലാളി "=" എന്നതിൽ ആരംഭിക്കുന്നു, തുടർന്ന് "=" എന്നതിന് പകരം sysroot വരും
പ്രിഫിക്സ്; കാണുക --സിസ് റൂട്ട് ഒപ്പം -isysroot.

-പ്രിഫിക്സ് പ്രിഫിക്‌സ്
വ്യക്തമാക്കുക പ്രിഫിക്‌സ് തുടർന്നുള്ളവയുടെ ഉപസർഗ്ഗമായി -iwithprefix ഓപ്ഷനുകൾ. പ്രിഫിക്സ് ആണെങ്കിൽ
ഒരു ഡയറക്ടറിയെ പ്രതിനിധീകരിക്കുന്നു, നിങ്ങൾ ഫൈനൽ ഉൾപ്പെടുത്തണം /.

-iwithprefix മുതലാളി
-iwithprefix മുമ്പ് മുതലാളി
കൂട്ടിച്ചേർക്കുക മുതലാളി ഉപയോഗിച്ച് മുമ്പ് വ്യക്തമാക്കിയ പ്രിഫിക്സിലേക്ക് -പ്രിഫിക്സ്, ഫലമായുണ്ടാകുന്നത് ചേർക്കുക
ഉൾപ്പെടുത്തിയ തിരയൽ പാതയിലേക്കുള്ള ഡയറക്ടറി. -iwithprefix മുമ്പ് അതേ സ്ഥലത്ത് വയ്ക്കുന്നു -I
ചെയ്യും; -iwithprefix എവിടെ വെക്കുന്നു -ഇദിരാഫ്റ്റർ ചെയ്യും.

-isysroot മുതലാളി
ഈ ഓപ്ഷൻ പോലെയാണ് --സിസ് റൂട്ട് ഓപ്ഷൻ, എന്നാൽ ഹെഡർ ഫയലുകൾക്ക് മാത്രം ബാധകമാണ് (ഒഴികെ
ഡാർവിൻ ടാർഗെറ്റുചെയ്യുന്നു, ഇവിടെ ഇത് ഹെഡർ ഫയലുകൾക്കും ലൈബ്രറികൾക്കും ബാധകമാണ്). കാണുക
--സിസ് റൂട്ട് കൂടുതൽ വിവരങ്ങൾക്ക് ഓപ്ഷൻ.

-ഇമൾട്ടിലിബ് മുതലാളി
ഉപയോഗം മുതലാളി ടാർഗെറ്റ്-നിർദ്ദിഷ്‌ട C++ ഹെഡറുകൾ അടങ്ങിയ ഡയറക്‌ടറിയുടെ ഉപഡയറക്‌ടറിയായി.

-വ്യവസ്ഥ മുതലാളി
തിരയൽ മുതലാളി ഹെഡർ ഫയലുകൾക്കായി, വ്യക്തമാക്കിയ എല്ലാ ഡയറക്ടറികൾക്കും ശേഷം -I എന്നാൽ മുമ്പ്
സാധാരണ സിസ്റ്റം ഡയറക്ടറികൾ. ഒരു സിസ്റ്റം ഡയറക്‌ടറി ആയി അടയാളപ്പെടുത്തുക, അതുവഴി അതുതന്നെ ലഭിക്കും
സ്റ്റാൻഡേർഡ് സിസ്റ്റം ഡയറക്ടറികളിൽ പ്രയോഗിക്കുന്നത് പോലെ പ്രത്യേക ചികിത്സ. എങ്കിൽ മുതലാളി ആരംഭിക്കുന്നു
"=" ഉപയോഗിച്ച്, തുടർന്ന് "=" സിസ്‌റൂട്ട് പ്രിഫിക്‌സ് ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കും; കാണുക --സിസ് റൂട്ട് ഒപ്പം
-isysroot.

- iquote മുതലാളി
തിരയൽ മുതലാളി "#include" ഉപയോഗിച്ച് അഭ്യർത്ഥിച്ച തലക്കെട്ട് ഫയലുകൾക്ക് മാത്രംഫയൽ""; അവരല്ല
"#ഉൾപ്പെടുത്തുക" എന്നതിനായി തിരഞ്ഞുഫയൽ>", വ്യക്തമാക്കിയ എല്ലാ ഡയറക്ടറികൾക്കും മുമ്പ് -I മുമ്പും
സാധാരണ സിസ്റ്റം ഡയറക്ടറികൾ. എങ്കിൽ മുതലാളി "=" എന്നതിൽ ആരംഭിക്കുന്നു, തുടർന്ന് "=" മാറ്റിസ്ഥാപിക്കും
sysroot പ്രിഫിക്സ്; കാണുക --സിസ് റൂട്ട് ഒപ്പം -isysroot.

-നിക്ഷേപങ്ങൾ-മാത്രം
പ്രീപ്രോസസ് ചെയ്യുമ്പോൾ, നിർദ്ദേശങ്ങൾ കൈകാര്യം ചെയ്യുക, എന്നാൽ മാക്രോകൾ വികസിപ്പിക്കരുത്.

ഓപ്ഷന്റെ പെരുമാറ്റം ഇതിനെ ആശ്രയിച്ചിരിക്കുന്നു -E ഒപ്പം -fpreprocessed ഓപ്ഷനുകൾ.

കൂടെ -E, "#define" പോലുള്ള നിർദ്ദേശങ്ങൾ കൈകാര്യം ചെയ്യുന്നതിന് പ്രീപ്രോസസിംഗ് പരിമിതപ്പെടുത്തിയിരിക്കുന്നു,
"#ifdef", "#പിശക്". മാക്രോ വിപുലീകരണം പോലെയുള്ള മറ്റ് പ്രീപ്രൊസസ്സർ പ്രവർത്തനങ്ങൾ
ട്രൈഗ്രാഫ് പരിവർത്തനം നടക്കുന്നില്ല. കൂടാതെ, ദി -തീയതി ഓപ്ഷൻ പരോക്ഷമാണ്
പ്രവർത്തനക്ഷമമാക്കി.

കൂടെ -fpreprocessed, കമാൻഡ് ലൈനിന്റെയും മിക്ക ബിൽട്ടിൻ മാക്രോകളുടെയും മുൻനിർവചനം ഇതാണ്
വികലാംഗൻ. സാന്ദർഭികമായി ആശ്രയിക്കുന്ന "__LINE__" പോലുള്ള മാക്രോകൾ കൈകാര്യം ചെയ്യുന്നു
സാധാരണയായി. "-E ഉപയോഗിച്ച് മുമ്പ് പ്രോസസ് ചെയ്ത ഫയലുകളുടെ സമാഹാരം ഇത് പ്രാപ്തമാക്കുന്നു
-നിക്ഷേപങ്ങൾ-മാത്രം".

രണ്ടും കൂടി -E ഒപ്പം -fpreprocessed, നിയമങ്ങൾ -fpreprocessed മുൻഗണന നൽകുക. ഈ
"-E ഉപയോഗിച്ച് മുമ്പ് പ്രീപ്രോസസ് ചെയ്ത ഫയലുകളുടെ പൂർണ്ണമായ പ്രീപ്രൊസസ്സിംഗ് പ്രാപ്തമാക്കുന്നു
-നിക്ഷേപങ്ങൾ-മാത്രം".

-fdollars-in-identifiers
അംഗീകരിക്കുക $ ഐഡന്റിഫയറുകളിൽ.

-ഫെക്‌സ്റ്റെൻഡഡ്-ഐഡന്റിഫയറുകൾ
ഐഡന്റിഫയറുകളിൽ സാർവത്രിക പ്രതീക നാമങ്ങൾ സ്വീകരിക്കുക. ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
C99 (പിന്നീട് C സ്റ്റാൻഡേർഡ് പതിപ്പുകൾ) കൂടാതെ C++ എന്നിവയ്ക്കും.

-fno-കാനോനിക്കൽ-സിസ്റ്റം-ഹെഡറുകൾ
പ്രീപ്രോസസ് ചെയ്യുമ്പോൾ, കാനോനികലൈസേഷൻ ഉപയോഗിച്ച് സിസ്റ്റം ഹെഡർ പാതകൾ ചെറുതാക്കരുത്.

-fpreprocessed
ഇൻപുട്ട് ഫയൽ ഇതിനകം പ്രീപ്രോസസ്സ് ചെയ്തിട്ടുണ്ടെന്ന് പ്രീപ്രൊസസറോട് സൂചിപ്പിക്കുക. ഈ
മാക്രോ എക്സ്പാൻഷൻ, ട്രൈഗ്രാഫ് കൺവേർഷൻ, എസ്കേഡ് ന്യൂലൈൻ സ്പ്ലിസിംഗ് തുടങ്ങിയ കാര്യങ്ങൾ അടിച്ചമർത്തുന്നു,
കൂടാതെ മിക്ക നിർദ്ദേശങ്ങളുടെയും പ്രോസസ്സിംഗ്. പ്രീപ്രൊസസ്സർ ഇപ്പോഴും തിരിച്ചറിയുകയും നീക്കം ചെയ്യുകയും ചെയ്യുന്നു
അഭിപ്രായങ്ങൾ, അതുവഴി നിങ്ങൾക്ക് മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്ത ഒരു ഫയൽ കൈമാറാൻ കഴിയും -C ഇല്ലാതെ കമ്പൈലറിലേക്ക്
പ്രശ്നങ്ങൾ. ഈ മോഡിൽ ഇന്റഗ്രേറ്റഡ് പ്രീപ്രൊസസ്സർ ഒരു ടോക്കണൈസറിനേക്കാൾ അല്പം കൂടുതലാണ്
മുൻഭാഗങ്ങൾക്കായി.

-fpreprocessed ഇൻപുട്ട് ഫയലിന് എക്സ്റ്റൻഷനുകളിലൊന്ന് ഉണ്ടെങ്കിൽ അത് വ്യക്തമാണ് .i, .ii or .മൈ.
മുൻകൂട്ടി പ്രോസസ്സ് ചെയ്ത ഫയലുകൾക്കായി ജിസിസി ഉപയോഗിക്കുന്ന എക്സ്റ്റൻഷനുകളാണിത് -സേവ്-ടെമ്പുകൾ.

-ftabstop=വീതി
ടാബ് സ്റ്റോപ്പുകൾ തമ്മിലുള്ള ദൂരം സജ്ജമാക്കുക. ഇത് പ്രീപ്രോസസർ ശരിയായ കോളം റിപ്പോർട്ട് ചെയ്യാൻ സഹായിക്കുന്നു
ലൈനിൽ ടാബുകൾ ദൃശ്യമായാലും മുന്നറിയിപ്പുകളിലോ പിശകുകളിലോ ഉള്ള നമ്പറുകൾ. മൂല്യം കുറവാണെങ്കിൽ
1-നേക്കാൾ അല്ലെങ്കിൽ 100-ൽ കൂടുതൽ, ഓപ്ഷൻ അവഗണിക്കപ്പെടും. സ്ഥിരസ്ഥിതി 8 ആണ്.

-fdebug-cpp
ഈ ഓപ്‌ഷൻ GCC ഡീബഗ്ഗിംഗിന് മാത്രമേ ഉപയോഗപ്രദമാകൂ. കൂടെ ഉപയോഗിക്കുമ്പോൾ -E, ഡംപ്സ് ഡീബഗ്ഗിംഗ്
ലൊക്കേഷൻ മാപ്പുകളെക്കുറിച്ചുള്ള വിവരങ്ങൾ. ഔട്ട്‌പുട്ടിലെ ഓരോ ടോക്കണിനും മുമ്പായി ഡംപ് ആണ്
ഭൂപടം അതിന്റെ സ്ഥാനം ഉൾക്കൊള്ളുന്നു. ഒരു ടോക്കണിന്റെ സ്ഥാനം പിടിച്ചിരിക്കുന്ന മാപ്പിന്റെ ഡംപ്
ആയിരിക്കും:

{"P":F ;"എഫ്":എഫ് ;"എൽ": ;"സി": ;"എസ്": ;"എം": ;"ഇ": ,"ലോകം": }

ഇല്ലാതെ ഉപയോഗിക്കുമ്പോൾ -E, ഈ ഓപ്ഷന് ഫലമില്ല.

-ഫ്ട്രാക്ക്-മാക്രോ-വിപുലീകരണം[=ലെവൽ]
മാക്രോ വിപുലീകരണങ്ങളിലുടനീളം ടോക്കണുകളുടെ ലൊക്കേഷനുകൾ ട്രാക്ക് ചെയ്യുക. ഇത് കംപൈലറിനെ പുറത്തുവിടാൻ അനുവദിക്കുന്നു
ഒരു കംപൈലേഷൻ പിശക് സംഭവിക്കുമ്പോൾ നിലവിലെ മാക്രോ എക്സ്പാൻഷൻ സ്റ്റാക്കിനെക്കുറിച്ചുള്ള ഡയഗ്നോസ്റ്റിക്
ഒരു മാക്രോ വികാസം. ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കുന്നത് പ്രീപ്രൊസസ്സറും കമ്പൈലറും ഉപയോഗിക്കും
കൂടുതൽ മെമ്മറി. ദി ലെവൽ ടോക്കണിന്റെ കൃത്യതയുടെ ലെവൽ തിരഞ്ഞെടുക്കാൻ പരാമീറ്റർ ഉപയോഗിക്കാം
ലൊക്കേഷൻ ട്രാക്കിംഗ് അങ്ങനെ ആവശ്യമെങ്കിൽ മെമ്മറി ഉപഭോഗം കുറയ്ക്കുന്നു. മൂല്യം 0 of
ലെവൽ ഇല്ലെങ്കിൽ ഈ ഓപ്‌ഷൻ ഡി-ആക്‌റ്റിവേറ്റ് ചെയ്യുന്നു -ഫ്ട്രാക്ക്-മാക്രോ-വിപുലീകരണം ന് ഹാജരായിരുന്നു
കമാൻഡ് ലൈൻ. മൂല്യം 1 ഡീഗ്രേഡഡ് മോഡിൽ ടോക്കൺ ലൊക്കേഷനുകൾ ട്രാക്ക് ചെയ്യുന്നു
കുറഞ്ഞ മെമ്മറി ഓവർഹെഡ്. ഈ മോഡിൽ ഒരു വിപുലീകരണത്തിന്റെ ഫലമായുണ്ടാകുന്ന എല്ലാ ടോക്കണുകളും
ഒരു ഫംഗ്‌ഷൻ പോലെയുള്ള മാക്രോയുടെ ആർഗ്യുമെന്റ് ഒരേ ലൊക്കേഷനാണ്. മൂല്യം 2 ട്രാക്കുകൾ ടോക്കണുകൾ
ലൊക്കേഷനുകൾ പൂർണ്ണമായും. ഈ മൂല്യം ഏറ്റവും മെമ്മറി ഹംഗറി ആണ്. ഈ ഓപ്ഷൻ നൽകുമ്പോൾ
വാദമില്ല, സ്ഥിരസ്ഥിതി പാരാമീറ്റർ മൂല്യമാണ് 2.

"-ftrack-macro-expansion=2" സ്ഥിരസ്ഥിതിയായി സജീവമാക്കിയത് ശ്രദ്ധിക്കുക.

-fexec-charset=പ്രതീകം
സ്ട്രിംഗ്, ക്യാരക്ടർ കോൺസ്റ്റന്റുകൾക്ക് ഉപയോഗിക്കുന്ന എക്സിക്യൂഷൻ ക്യാരക്ടർ സെറ്റ് സെറ്റ് ചെയ്യുക. സ്ഥിരസ്ഥിതി
UTF-8 ആണ്. പ്രതീകം സിസ്റ്റത്തിന്റെ "iconv" ലൈബ്രറി പിന്തുണയ്ക്കുന്ന ഏത് എൻകോഡിംഗും ആകാം
ദിനചര്യ.

-fwide-exec-charset=പ്രതീകം
വൈഡ് എക്‌സിക്യൂഷൻ ക്യാരക്ടർ സെറ്റ് സെറ്റ് ചെയ്യുക, വൈഡ് സ്‌ട്രിംഗിനും ക്യാരക്ടർ കോൺസ്റ്റന്റുകൾക്കും ഉപയോഗിക്കുന്നു.
സ്ഥിരസ്ഥിതി UTF-32 അല്ലെങ്കിൽ UTF-16 ആണ്, ഏത് "wchar_t" ന്റെ വീതിയുമായി യോജിക്കുന്നുവോ അത്. പോലെ
കൂടെ -fexec-charset, പ്രതീകം സിസ്റ്റത്തിന്റെ "iconv" പിന്തുണയ്ക്കുന്ന ഏതെങ്കിലും എൻകോഡിംഗായിരിക്കാം
ലൈബ്രറി പതിവ്; എന്നിരുന്നാലും, അനുയോജ്യമല്ലാത്ത എൻകോഡിംഗുകളിൽ നിങ്ങൾക്ക് പ്രശ്നങ്ങൾ ഉണ്ടാകും
കൃത്യമായി "wchar_t" ൽ.

-finput-charset=പ്രതീകം
ഇൻപുട്ടിന്റെ പ്രതീക സെറ്റിൽ നിന്ന് വിവർത്തനത്തിനായി ഉപയോഗിക്കുന്ന ഇൻപുട്ട് പ്രതീക സെറ്റ് സജ്ജമാക്കുക
GCC ഉപയോഗിക്കുന്ന ഉറവിട പ്രതീക സെറ്റിലേക്ക് ഫയൽ ചെയ്യുക. ലൊക്കേൽ വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, അല്ലെങ്കിൽ ജി.സി.സി
ലൊക്കേലിൽ നിന്ന് ഈ വിവരം ലഭിക്കില്ല, സ്ഥിരസ്ഥിതി UTF-8 ആണ്. ഇത് ആകാം
ലൊക്കേൽ അല്ലെങ്കിൽ ഈ കമാൻഡ്-ലൈൻ ഓപ്ഷൻ ഉപയോഗിച്ച് അസാധുവാക്കുന്നു. നിലവിൽ കമാൻഡ്-
ഒരു വൈരുദ്ധ്യമുണ്ടെങ്കിൽ ലൈൻ ഓപ്‌ഷൻ മുൻഗണന നൽകുന്നു. പ്രതീകം ഏതെങ്കിലും എൻകോഡിംഗ് ആകാം
സിസ്റ്റത്തിന്റെ "iconv" ലൈബ്രറി ദിനചര്യ പിന്തുണയ്ക്കുന്നു.

-fworking-directory
കംപൈലറിനെ അനുവദിക്കുന്ന പ്രീപ്രൊസസ്സർ ഔട്ട്പുട്ടിൽ ലൈൻമാർക്കറുകളുടെ ജനറേഷൻ പ്രവർത്തനക്ഷമമാക്കുക
പ്രീപ്രോസസിംഗ് സമയത്ത് നിലവിലുള്ള ഡയറക്ടറി അറിയുക. ഈ ഓപ്ഷൻ എപ്പോൾ
പ്രവർത്തനക്ഷമമാക്കിയാൽ, പ്രിപ്രൊസസ്സർ പ്രാരംഭ ലൈൻമാർക്കറിന് ശേഷം രണ്ടാമത്തെ ലൈൻമാർക്കർ പുറപ്പെടുവിക്കും
നിലവിലുള്ള വർക്കിംഗ് ഡയറക്‌ടറിക്ക് ശേഷം രണ്ട് സ്ലാഷുകൾ. ജിസിസി ഇത് ഉപയോഗിക്കും
ഡയറക്‌ടറി, അത് പ്രിപ്രോസസ് ചെയ്‌ത ഇൻപുട്ടിൽ ഉള്ളപ്പോൾ, ഡയറക്‌ടറി ഇങ്ങനെ പുറപ്പെടുവിക്കുന്നു
ചില ഡീബഗ്ഗിംഗ് വിവര ഫോർമാറ്റുകളിൽ നിലവിലുള്ള ഡയറക്ടറി. ഈ ഓപ്ഷൻ ആണ്
ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ പരോക്ഷമായി പ്രാപ്തമാക്കും, എന്നാൽ ഇത് ഉപയോഗിച്ച് തടയാൻ കഴിയും
നിരാകരിച്ച രൂപം -fno-working-directory. ആണെങ്കിൽ -P കമാൻഡിൽ ഫ്ലാഗ് ഉണ്ട്
ലൈൻ, "#ലൈൻ" നിർദ്ദേശങ്ങളൊന്നും പുറപ്പെടുവിക്കാത്തതിനാൽ, ഈ ഓപ്ഷന് ഫലമില്ല.

-fno-show-column
ഡയഗ്നോസ്റ്റിക്സിൽ കോളം നമ്പറുകൾ പ്രിന്റ് ചെയ്യരുത്. ഡയഗ്നോസ്റ്റിക്സ് ആണെങ്കിൽ ഇത് ആവശ്യമായി വന്നേക്കാം
കോളം നമ്പറുകൾ മനസ്സിലാക്കാത്ത ഒരു പ്രോഗ്രാം സ്‌കാൻ ചെയ്യുന്നു
ദേജഗ്നു.

-A പ്രവചിക്കുക=ഉത്തരം
പ്രവചനം ഉപയോഗിച്ച് ഒരു ഉറപ്പ് ഉണ്ടാക്കുക പ്രവചിക്കുക മറുപടിയും ഉത്തരം. ഈ ഫോം
പഴയ രൂപത്തേക്കാൾ മുൻഗണന -A പ്രവചിക്കുക(ഉത്തരം), അത് ഇപ്പോഴും പിന്തുണയ്ക്കുന്നു, കാരണം അത്
ഷെൽ പ്രത്യേക പ്രതീകങ്ങൾ ഉപയോഗിക്കുന്നില്ല.

-A -പ്രവചിക്കുക=ഉത്തരം
പ്രവചനം ഉപയോഗിച്ച് ഒരു അവകാശവാദം റദ്ദാക്കുക പ്രവചിക്കുക മറുപടിയും ഉത്തരം.

-dCHARS
ചാറുകൾ ഇനിപ്പറയുന്ന ഒന്നോ അതിലധികമോ പ്രതീകങ്ങളുടെ ഒരു ശ്രേണിയാണ്, അത് പാടില്ല
ഒരു സ്പേസിന് മുൻപായി. മറ്റ് പ്രതീകങ്ങൾ കമ്പൈലർ ശരിയായി വ്യാഖ്യാനിക്കുന്നു, അല്ലെങ്കിൽ
ജിസിസിയുടെ ഭാവി പതിപ്പുകൾക്കായി നീക്കിവച്ചിരിക്കുന്നു, അതിനാൽ നിശബ്ദമായി അവഗണിക്കപ്പെടുന്നു. നിങ്ങൾ വ്യക്തമാക്കിയാൽ
സ്വഭാവ വൈരുദ്ധ്യമുള്ള കഥാപാത്രങ്ങൾ, ഫലം നിർവചിച്ചിട്ടില്ല.

M സാധാരണ ഔട്ട്പുട്ടിന് പകരം, ഒരു ലിസ്റ്റ് സൃഷ്ടിക്കുക # നിർവചിക്കുക എല്ലാവർക്കും നിർദ്ദേശങ്ങൾ
പ്രീപ്രൊസസ്സറിന്റെ നിർവ്വഹണ വേളയിൽ നിർവചിക്കപ്പെട്ട മാക്രോകൾ, മുൻകൂട്ടി നിശ്ചയിച്ചത് ഉൾപ്പെടെ
മാക്രോകൾ. നിങ്ങളുടെ പതിപ്പിൽ മുൻകൂട്ടി നിർവചിച്ചിരിക്കുന്നത് എന്താണെന്ന് കണ്ടെത്താനുള്ള ഒരു മാർഗം ഇത് നൽകുന്നു
പ്രീപ്രോസസർ. നിങ്ങൾക്ക് ഒരു ഫയലും ഇല്ലെന്ന് കരുതുക foo.h, കമാൻഡ്

foo.h സ്പർശിക്കുക; cpp -dM foo.h

മുൻകൂട്ടി നിശ്ചയിച്ചിട്ടുള്ള എല്ലാ മാക്രോകളും കാണിക്കും.

നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ -ഡിഎം ഇല്ലാതെ -E ഓപ്ഷൻ, -ഡിഎം എന്നതിന്റെ പര്യായമായി വ്യാഖ്യാനിക്കപ്പെടുന്നു
-fdump-rtl-mach.

D പോലെ M രണ്ട് കാര്യങ്ങളിലൊഴികെ: അത് ചെയ്യുന്നു അല്ല മുൻകൂട്ടി നിശ്ചയിച്ചിട്ടുള്ള മാക്രോകളും, അതും ഉൾപ്പെടുന്നു
ഔട്ട്പുട്ട് രണ്ടും The # നിർവചിക്കുക നിർദ്ദേശങ്ങളും പ്രീപ്രോസസിംഗിന്റെ ഫലവും. രണ്ട് തരം
ഔട്ട്പുട്ടിന്റെ സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ട് ഫയലിലേക്ക് പോകുക.

N പോലെ D, എന്നാൽ മാക്രോ പേരുകൾ മാത്രമേ പുറത്തുവിടൂ, അവയുടെ വിപുലീകരണങ്ങളല്ല.

I ഔട്ട്പുട്ട് # ഉൾപ്പെടുത്തുക പ്രീപ്രോസസിംഗിന്റെ ഫലത്തിന് പുറമേ നിർദ്ദേശങ്ങൾ.

U പോലെ D വികസിപ്പിച്ചതോ അല്ലെങ്കിൽ നിർവചിക്കപ്പെട്ടതോ ആയ മാക്രോകൾ മാത്രം
പ്രീപ്രൊസസ്സർ നിർദ്ദേശങ്ങളിൽ, ഔട്ട്പുട്ട് ആകുന്നു; ഉപയോഗം വരെ ഔട്ട്പുട്ട് വൈകും അല്ലെങ്കിൽ
മാക്രോയുടെ പരിശോധന; ഒപ്പം # undef ഡയറക്‌ടീവുകൾ പരീക്ഷിച്ച മാക്രോകൾക്കുള്ള ഔട്ട്‌പുട്ട് ആണ്
ആ സമയത്ത് നിർവചിക്കപ്പെട്ടിട്ടില്ല.

-P പ്രീപ്രോസസറിൽ നിന്നുള്ള ഔട്ട്പുട്ടിൽ ലൈൻമാർക്കറുകൾ സൃഷ്ടിക്കുന്നത് തടയുക. ഇതായിരിക്കാം
സി കോഡല്ലാത്ത എന്തെങ്കിലും പ്രിപ്രൊസസ്സർ പ്രവർത്തിപ്പിക്കുമ്പോൾ ഉപയോഗപ്രദമാണ്, അയയ്‌ക്കും
ലൈൻമാർക്കറുകൾ ആശയക്കുഴപ്പത്തിലാക്കിയേക്കാവുന്ന ഒരു പ്രോഗ്രാമിലേക്ക്.

-C അഭിപ്രായങ്ങൾ തള്ളിക്കളയരുത്. എല്ലാ അഭിപ്രായങ്ങളും ഔട്ട്പുട്ട് ഫയലിലേക്ക് കൈമാറുന്നു, ഒഴികെ
പ്രൊസസ്സ് ചെയ്‌ത ഡയറക്‌ടീവുകളിലെ കമന്റുകൾക്കായി, അവ ഡയറക്‌ടീവിനോടൊപ്പം ഇല്ലാതാക്കും.

ഉപയോഗിക്കുമ്പോൾ പാർശ്വഫലങ്ങൾക്കായി നിങ്ങൾ തയ്യാറാകണം -C; അത് പ്രീപ്രൊസസറിന് കാരണമാകുന്നു
അഭിപ്രായങ്ങളെ അവരുടേതായ ടോക്കണുകളായി പരിഗണിക്കുക. ഉദാഹരണത്തിന്, എന്നതിൽ ദൃശ്യമാകുന്ന അഭിപ്രായങ്ങൾ
ഒരു ഡയറക്‌റ്റീവ് ലൈനിന്റെ ആരംഭം ആ വരിയെ ഒരു ആക്കി മാറ്റുന്നതിന്റെ ഫലമുണ്ടാക്കും
സാധാരണ സോഴ്സ് ലൈൻ, ലൈനിലെ ആദ്യ ടോക്കൺ ഇനി മുതൽ എ #.

-സിസി മാക്രോ വിപുലീകരണ സമയത്ത് ഉൾപ്പെടെയുള്ള അഭിപ്രായങ്ങൾ നിരസിക്കരുത്. ഇത് പോലെയാണ് -C, ഒഴികെ
മാക്രോകളിൽ അടങ്ങിയിരിക്കുന്ന അഭിപ്രായങ്ങളും ഔട്ട്പുട്ട് ഫയലിലേക്ക് കൈമാറുന്നു
മാക്രോ വികസിപ്പിച്ചിരിക്കുന്നു.

യുടെ പാർശ്വഫലങ്ങൾ കൂടാതെ -C ഓപ്ഷൻ ,. -സിസി ഓപ്ഷൻ എല്ലാ C++-ശൈലിക്കും കാരണമാകുന്നു
മാക്രോയ്ക്കുള്ളിലെ കമന്റുകൾ സി-സ്റ്റൈൽ കമന്റുകളാക്കി മാറ്റണം. ഇത് പിന്നീട് തടയാനാണ്
ഉറവിട വരിയുടെ ശേഷിക്കുന്ന ഭാഗം അശ്രദ്ധമായി കമന്റ് ചെയ്യുന്നതിൽ നിന്ന് ആ മാക്രോയുടെ ഉപയോഗം.

ദി -സിസി ലിന്റ് അഭിപ്രായങ്ങളെ പിന്തുണയ്ക്കാൻ സാധാരണയായി ഓപ്ഷൻ ഉപയോഗിക്കുന്നു.

-പരമ്പരാഗത-സിപിപി
ഐഎസ്ഒ സിയിൽ നിന്ന് വ്യത്യസ്തമായി പഴയ രീതിയിലുള്ള സി പ്രീപ്രോസസറുകളുടെ സ്വഭാവം അനുകരിക്കാൻ ശ്രമിക്കുക.
പ്രീപ്രോസസറുകൾ.

-ട്രിഗ്രാഫ്സ്
ട്രൈഗ്രാഫ് സീക്വൻസുകൾ പ്രോസസ്സ് ചെയ്യുക. ഇവ മൂന്ന് പ്രതീകങ്ങളുള്ള സീക്വൻസുകളാണ്, എല്ലാം ആരംഭിക്കുന്നു
??, ഐഎസ്ഒ സി നിർവചിച്ചിരിക്കുന്നത് ഒറ്റ പ്രതീകങ്ങൾക്കായി നിലകൊള്ളുന്നു. ഉദാഹരണത്തിന്, ??/ നിൽക്കുന്നു
വേണ്ടി \, അങ്ങനെ '??/n' ഒരു പുതിയ വരിയുടെ സ്ഥിരമായ ഒരു പ്രതീകമാണ്. സ്ഥിരസ്ഥിതിയായി, GCC അവഗണിക്കുന്നു
ട്രൈഗ്രാഫുകൾ, എന്നാൽ സ്റ്റാൻഡേർഡ്-കൺഫോർമിംഗ് മോഡുകളിൽ അത് അവയെ പരിവർത്തനം ചെയ്യുന്നു. കാണുക -std ഒപ്പം -ആൻസി
ഓപ്ഷനുകൾ.

ഒമ്പത് ട്രൈഗ്രാഫുകളും അവയുടെ പകരക്കാരുമാണ്

ട്രൈഗ്രാഫ്: ??( ??) ??< ??> ??= ??/ ??' ?? ??-
മാറ്റിസ്ഥാപിക്കൽ: [ ] { } # \ ^ | ~

- റീമാപ്പ്
വളരെ ചെറിയ ഫയൽ മാത്രം അനുവദിക്കുന്ന ഫയൽ സിസ്റ്റങ്ങളിൽ പ്രവർത്തിക്കാൻ പ്രത്യേക കോഡ് പ്രവർത്തനക്ഷമമാക്കുക
MS-DOS പോലുള്ള പേരുകൾ.

--സഹായിക്കൂ
--ലക്ഷ്യം-സഹായം
എന്തെങ്കിലും പ്രീപ്രോസസ് ചെയ്യുന്നതിനുപകരം എല്ലാ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകളും വിവരിക്കുന്ന വാചകം അച്ചടിക്കുക.

-v വെർബോസ് മോഡ്. നിർവ്വഹണത്തിന്റെ തുടക്കത്തിൽ GNU CPP-യുടെ പതിപ്പ് നമ്പർ പ്രിന്റ് ചെയ്യുക, കൂടാതെ
ഉൾപ്പെടുന്ന പാതയുടെ അന്തിമ രൂപം റിപ്പോർട്ടുചെയ്യുക.

-H മറ്റ് സാധാരണ പ്രവർത്തനങ്ങൾക്ക് പുറമേ ഉപയോഗിക്കുന്ന ഓരോ ഹെഡർ ഫയലിന്റെയും പേര് പ്രിന്റ് ചെയ്യുക. ഓരോന്നും
എത്ര ആഴത്തിലാണ് പേര് ഇൻഡന്റ് ചെയ്തിരിക്കുന്നത് # ഉൾപ്പെടുത്തുക അത് സ്റ്റാക്ക് ചെയ്യുക. മുൻകൂട്ടി തയ്യാറാക്കിയ തലക്കെട്ട്
ഫയലുകൾ അസാധുവാണെന്ന് കണ്ടെത്തിയാലും പ്രിന്റ് ചെയ്യപ്പെടുന്നു; ഒരു അസാധുവായ മുൻകൂട്ടി തയ്യാറാക്കിയത്
ഹെഡ്ഡർ ഫയൽ പ്രിന്റ് ചെയ്തിരിക്കുന്നു ...x ഒപ്പം സാധുവായ ഒന്ന് ...! .

-പതിപ്പ്
--പതിപ്പ്
GNU CPP-യുടെ പതിപ്പ് നമ്പർ പ്രിന്റ് ഔട്ട് ചെയ്യുക. ഒരു ഡാഷ് ഉപയോഗിച്ച്, സാധാരണ പോലെ പ്രീപ്രോസസിലേക്ക് പോകുക.
രണ്ട് ഡാഷുകൾ ഉപയോഗിച്ച്, ഉടൻ പുറത്തുകടക്കുക.

കടന്നുപോകുന്നു ഓപ്ഷനുകൾ ലേക്ക് The അസംബ്ലർ
നിങ്ങൾക്ക് അസംബ്ലർക്ക് ഓപ്ഷനുകൾ കൈമാറാം.

-വാ,ഓപ്ഷൻ
ചുരം ഓപ്ഷൻ അസംബ്ലർക്കുള്ള ഒരു ഓപ്ഷനായി. എങ്കിൽ ഓപ്ഷൻ കോമകൾ അടങ്ങിയിരിക്കുന്നു, അത് പിളർന്നിരിക്കുന്നു
കോമയിൽ ഒന്നിലധികം ഓപ്ഷനുകളിലേക്ക്.

-ക്സഅസെംബ്ലർ ഓപ്ഷൻ
ചുരം ഓപ്ഷൻ അസംബ്ലർക്കുള്ള ഒരു ഓപ്ഷനായി. സിസ്റ്റം-നിർദ്ദിഷ്ട വിതരണത്തിനായി നിങ്ങൾക്ക് ഇത് ഉപയോഗിക്കാം
GCC തിരിച്ചറിയാത്ത അസംബ്ലർ ഓപ്ഷനുകൾ.

ഒരു ആർഗ്യുമെന്റ് എടുക്കുന്ന ഒരു ഓപ്ഷൻ നിങ്ങൾക്ക് പാസാക്കണമെങ്കിൽ, നിങ്ങൾ ഉപയോഗിക്കണം -ക്സഅസെംബ്ലർ രണ്ടുതവണ,
ഒരിക്കൽ ഓപ്‌ഷനും ഒരിക്കൽ വാദത്തിനും.

ഓപ്ഷനുകൾ വേണ്ടി ലിങ്കിംഗ്
കംപൈലർ ഒബ്‌ജക്റ്റ് ഫയലുകളെ ഒരു എക്‌സിക്യൂട്ടബിളിലേക്ക് ലിങ്ക് ചെയ്യുമ്പോൾ ഈ ഓപ്ഷനുകൾ പ്രവർത്തിക്കുന്നു
ഔട്ട്പുട്ട് ഫയൽ. കംപൈലർ ഒരു ലിങ്ക് ഘട്ടം ചെയ്യുന്നില്ലെങ്കിൽ അവ അർത്ഥശൂന്യമാണ്.

ഒബ്ജക്റ്റ്-ഫയൽ-നാമം
ഒരു പ്രത്യേക അംഗീകൃത സഫിക്സിൽ അവസാനിക്കാത്ത ഒരു ഫയൽ നാമം ഒരു പേരായി കണക്കാക്കുന്നു
ഒബ്ജക്റ്റ് ഫയൽ അല്ലെങ്കിൽ ലൈബ്രറി. (ലൈബ്രറികളിൽ നിന്ന് ഒബ്ജക്റ്റ് ഫയലുകളെ ലിങ്കർ വേർതിരിച്ചിരിക്കുന്നു
ഫയൽ ഉള്ളടക്കങ്ങൾ അനുസരിച്ച്.) ലിങ്ക് ചെയ്യുകയാണെങ്കിൽ, ഈ ഒബ്‌ജക്റ്റ് ഫയലുകൾ ഇങ്ങനെയാണ് ഉപയോഗിക്കുന്നത്
ലിങ്കറിലേക്കുള്ള ഇൻപുട്ട്.

-c
-S
-E ഈ ഓപ്‌ഷനുകളിൽ ഏതെങ്കിലും ഉപയോഗിക്കുകയാണെങ്കിൽ, ലിങ്കർ റൺ ചെയ്യപ്പെടുന്നില്ല, കൂടാതെ ഒബ്‌ജക്റ്റ് ഫയൽ നാമങ്ങളും
വാദങ്ങളായി ഉപയോഗിക്കാൻ പാടില്ല.

-fuse-ld=bfd
ഉപയോഗിക്കുക bfd ഡിഫോൾട്ട് ലിങ്കറിന് പകരം ലിങ്കർ.

-ഫ്യൂസ്-എൽഡി=സ്വർണ്ണം
ഉപയോഗിക്കുക സ്വർണം ഡിഫോൾട്ട് ലിങ്കറിന് പകരം ലിങ്കർ.

-lലൈബ്രറി
-l ലൈബ്രറി
എന്ന പേരിലുള്ള ലൈബ്രറി തിരയുക ലൈബ്രറി ലിങ്ക് ചെയ്യുമ്പോൾ. (ഇതുമായുള്ള രണ്ടാമത്തെ ബദൽ
ലൈബ്രറി ഒരു പ്രത്യേക വാദമായി POSIX പാലിക്കുന്നതിന് മാത്രമുള്ളതാണ്, അത് ശുപാർശ ചെയ്യുന്നില്ല.)

കമാൻഡിൽ നിങ്ങൾ ഈ ഓപ്ഷൻ എഴുതുന്നിടത്ത് ഇത് വ്യത്യാസം വരുത്തുന്നു; ലിങ്കർ തിരയുന്നു
കൂടാതെ ലൈബ്രറികളും ഒബ്ജക്റ്റ് ഫയലുകളും അവ വ്യക്തമാക്കിയ ക്രമത്തിൽ പ്രോസസ്സ് ചെയ്യുന്നു. അങ്ങനെ, foo.o
-lz bar.o ലൈബ്രറി തിരയുന്നു z ഫയലിന് ശേഷം foo.o എന്നാൽ മുമ്പ് bar.o. എങ്കിൽ bar.o പരാമർശിക്കുന്നു
ൽ പ്രവർത്തിക്കുന്നു z, ആ ഫംഗ്‌ഷനുകൾ ലോഡ് ചെയ്‌തേക്കില്ല.

ലിങ്കർ ലൈബ്രറിക്കായി ഡയറക്‌ടറികളുടെ ഒരു സ്റ്റാൻഡേർഡ് ലിസ്റ്റ് തിരയുന്നു, അത് യഥാർത്ഥമാണ്
പേരുള്ള ഒരു ഫയൽ liblibrary.a. ലിങ്കർ ഈ ഫയൽ വ്യക്തമാക്കിയതുപോലെ ഉപയോഗിക്കുന്നു
കൃത്യമായി പേര് പ്രകാരം.

തിരഞ്ഞ ഡയറക്‌ടറികളിൽ നിരവധി സ്റ്റാൻഡേർഡ് സിസ്റ്റം ഡയറക്‌ടറികളും നിങ്ങളുടേതായവയും ഉൾപ്പെടുന്നു
ഉപയോഗിച്ച് വ്യക്തമാക്കുക -L.

സാധാരണയായി ഈ രീതിയിൽ കണ്ടെത്തുന്ന ഫയലുകൾ ലൈബ്രറി ഫയലുകളാണ് --- ആർക്കൈവ് ഫയലുകൾ അംഗങ്ങൾ
ഒബ്ജക്റ്റ് ഫയലുകൾ. അംഗങ്ങൾക്കായി സ്കാൻ ചെയ്തുകൊണ്ട് ലിങ്കർ ഒരു ആർക്കൈവ് ഫയൽ കൈകാര്യം ചെയ്യുന്നു
ഇതുവരെ പരാമർശിച്ചിട്ടുള്ളതും എന്നാൽ നിർവചിക്കാത്തതുമായ ചിഹ്നങ്ങളെ ഇത് നിർവചിക്കുന്നു. എന്നാൽ എങ്കിൽ
കണ്ടെത്തിയ ഫയൽ ഒരു സാധാരണ ഒബ്‌ജക്റ്റ് ഫയലാണ്, അത് സാധാരണ രീതിയിൽ ലിങ്ക് ചെയ്‌തിരിക്കുന്നു. ദി
ഒരു ഉപയോഗിക്കുന്നത് തമ്മിലുള്ള വ്യത്യാസം മാത്രം -l ഓപ്ഷനും ഒരു ഫയലിന്റെ പേര് വ്യക്തമാക്കുന്നതും അതാണ് -l
ചുറ്റും ലൈബ്രറി കൂടെ ലിബ് ഒപ്പം .a കൂടാതെ നിരവധി ഡയറക്ടറികൾ തിരയുന്നു.

-ലോബ്ജെസി
നിങ്ങൾക്ക് ഈ പ്രത്യേക കേസ് ആവശ്യമാണ് -l ഒരു ഒബ്ജക്റ്റീവ്-സി ലിങ്ക് ചെയ്യുന്നതിനുള്ള ഓപ്ഷൻ അല്ലെങ്കിൽ
ഒബ്ജക്റ്റീവ്-സി++ പ്രോഗ്രാം.

-നൊസ്റ്റാർട്ട് ഫയലുകൾ
ലിങ്ക് ചെയ്യുമ്പോൾ സ്റ്റാൻഡേർഡ് സിസ്റ്റം സ്റ്റാർട്ടപ്പ് ഫയലുകൾ ഉപയോഗിക്കരുത്. സ്റ്റാൻഡേർഡ് സിസ്റ്റം
അല്ലാതെ ലൈബ്രറികൾ സാധാരണ ഉപയോഗിക്കാറുണ്ട് -nostdlib or -nodefaultlibs ഉപയോഗിക്കുന്നു.

-nodefaultlibs
ലിങ്ക് ചെയ്യുമ്പോൾ സാധാരണ സിസ്റ്റം ലൈബ്രറികൾ ഉപയോഗിക്കരുത്. നിങ്ങൾ വ്യക്തമാക്കുന്ന ലൈബ്രറികൾ മാത്രം
ലിങ്കറിന് കൈമാറുന്നു, കൂടാതെ സിസ്റ്റം ലൈബ്രറികളുടെ ലിങ്കേജ് വ്യക്തമാക്കുന്ന ഓപ്ഷനുകൾ
as -static-libgcc or -shared-libgcc, അവഗണിക്കപ്പെടുന്നു. സ്റ്റാൻഡേർഡ് സ്റ്റാർട്ടപ്പ് ഫയലുകൾ ഉപയോഗിക്കുന്നു
സാധാരണയായി, ഒഴികെ -നൊസ്റ്റാർട്ട് ഫയലുകൾ ഉപയോഗിക്കുന്നു.

കംപൈലർ "memcmp", "memset", "memcpy", "memmove" എന്നിവയിലേക്ക് കോളുകൾ സൃഷ്ടിച്ചേക്കാം. ഇവ
എൻട്രികൾ സാധാരണയായി libc-യിലെ എൻട്രികൾ വഴി പരിഹരിക്കപ്പെടും. ഈ എൻട്രി പോയിന്റുകൾ ആയിരിക്കണം
ഈ ഓപ്‌ഷൻ വ്യക്തമാക്കുമ്പോൾ മറ്റേതെങ്കിലും സംവിധാനം വഴി വിതരണം ചെയ്യുന്നു.

-nostdlib
ലിങ്ക് ചെയ്യുമ്പോൾ സ്റ്റാൻഡേർഡ് സിസ്റ്റം സ്റ്റാർട്ടപ്പ് ഫയലുകളോ ലൈബ്രറികളോ ഉപയോഗിക്കരുത്. സ്റ്റാർട്ടപ്പ് ഇല്ല
ഫയലുകളും നിങ്ങൾ വ്യക്തമാക്കുന്ന ലൈബ്രറികളും മാത്രമേ ലിങ്കറിലേക്കും ഓപ്‌ഷനുകളിലേക്കും കൈമാറുകയുള്ളൂ
പോലുള്ള സിസ്റ്റം ലൈബ്രറികളുടെ ലിങ്കേജ് വ്യക്തമാക്കുന്നു -static-libgcc or -shared-libgcc,
അവഗണിച്ചു.

കംപൈലർ "memcmp", "memset", "memcpy", "memmove" എന്നിവയിലേക്ക് കോളുകൾ സൃഷ്ടിച്ചേക്കാം. ഇവ
എൻട്രികൾ സാധാരണയായി libc-യിലെ എൻട്രികൾ വഴി പരിഹരിക്കപ്പെടും. ഈ എൻട്രി പോയിന്റുകൾ ആയിരിക്കണം
ഈ ഓപ്‌ഷൻ വ്യക്തമാക്കുമ്പോൾ മറ്റേതെങ്കിലും സംവിധാനം വഴി വിതരണം ചെയ്യുന്നു.

ബൈപാസ് ചെയ്ത സാധാരണ ലൈബ്രറികളിലൊന്ന് -nostdlib ഒപ്പം -nodefaultlibs is libgcc.aഒരു
പ്രത്യേക പോരായ്മകൾ മറികടക്കാൻ ജിസിസി ഉപയോഗിക്കുന്ന ആന്തരിക സബ്റൂട്ടീനുകളുടെ ലൈബ്രറി
യന്ത്രങ്ങൾ, അല്ലെങ്കിൽ ചില ഭാഷകൾക്കുള്ള പ്രത്യേക ആവശ്യങ്ങൾ.

മിക്ക കേസുകളിലും, നിങ്ങൾക്ക് ആവശ്യമാണ് libgcc.a മറ്റ് സ്റ്റാൻഡേർഡ് ലൈബ്രറികൾ ഒഴിവാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുമ്പോൾ പോലും.
മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, നിങ്ങൾ വ്യക്തമാക്കുമ്പോൾ -nostdlib or -nodefaultlibs നിങ്ങൾ സാധാരണയായി ചെയ്യണം
വ്യക്തമാക്കുക -എൽജിസിസി അതുപോലെ. നിങ്ങൾക്ക് പരിഹരിക്കപ്പെടാത്ത റഫറൻസുകളൊന്നുമില്ലെന്ന് ഇത് ഉറപ്പാക്കുന്നു
ആന്തരിക ജിസിസി ലൈബ്രറി സബ്റൂട്ടീനുകൾ. (അത്തരം ഒരു ആന്തരിക സബ്റൂട്ടീന്റെ ഒരു ഉദാഹരണം
"__main", C++ കൺസ്‌ട്രക്‌ടറുകളെ വിളിക്കുന്നത് ഉറപ്പാക്കാൻ ഉപയോഗിക്കുന്നു.)

-പൈ
അതിനെ പിന്തുണയ്ക്കുന്ന ടാർഗെറ്റുകളിൽ സ്വതന്ത്രമായി നിർവ്വഹിക്കാവുന്ന ഒരു സ്ഥാനം സൃഷ്ടിക്കുക. പ്രവചിക്കാൻ
ഫലങ്ങൾ, സമാഹരിക്കാൻ ഉപയോഗിക്കുന്ന അതേ സെറ്റ് ഓപ്ഷനുകളും നിങ്ങൾ വ്യക്തമാക്കണം (-fpie,
-fPIE, അല്ലെങ്കിൽ മോഡൽ ഉപഓപ്‌ഷനുകൾ) നിങ്ങൾ ഈ ലിങ്കർ ഓപ്ഷൻ വ്യക്തമാക്കുമ്പോൾ.

-ഇല്ല-പൈ
സ്വതന്ത്രമായി എക്സിക്യൂട്ടബിൾ ചെയ്യാവുന്ന ഒരു സ്ഥാനം നിർമ്മിക്കരുത്.

- ചലനാത്മകം
പതാക കടത്തിവിടുക -കയറ്റുമതി-ചലനാത്മകം ELF ലിങ്കറിലേക്ക്, അതിനെ പിന്തുണയ്ക്കുന്ന ടാർഗെറ്റുകളിൽ. ഈ
ഡൈനാമിക് ചിഹ്നത്തിലേക്ക് ഉപയോഗിച്ചവ മാത്രമല്ല, എല്ലാ ചിഹ്നങ്ങളും ചേർക്കാൻ ലിങ്കറോട് നിർദ്ദേശിക്കുന്നു
മേശ. "dlopen" ന്റെ ചില ഉപയോഗങ്ങൾക്കോ ​​അല്ലെങ്കിൽ ലഭിക്കാൻ അനുവദിക്കുന്നതിനോ ഈ ഓപ്ഷൻ ആവശ്യമാണ്
ഒരു പ്രോഗ്രാമിനുള്ളിൽ നിന്ന് ബാക്ക്ട്രെയിസ്.

-s എക്സിക്യൂട്ടബിളിൽ നിന്ന് എല്ലാ ചിഹ്ന പട്ടികയും സ്ഥലം മാറ്റ വിവരങ്ങളും നീക്കം ചെയ്യുക.

- സ്റ്റാറ്റിക്
ഡൈനാമിക് ലിങ്കിംഗിനെ പിന്തുണയ്ക്കുന്ന സിസ്റ്റങ്ങളിൽ, ഇത് പങ്കിട്ടവയുമായി ലിങ്കുചെയ്യുന്നത് തടയുന്നു
ലൈബ്രറികൾ. മറ്റ് സിസ്റ്റങ്ങളിൽ, ഈ ഓപ്ഷന് യാതൊരു ഫലവുമില്ല.

- പങ്കിട്ടു
ഒരു പങ്കിട്ട ഒബ്‌ജക്റ്റ് നിർമ്മിക്കുക, അത് പിന്നീട് മറ്റ് ഒബ്‌ജക്‌റ്റുകളുമായി ബന്ധിപ്പിക്കാൻ കഴിയും
എക്സിക്യൂട്ടബിൾ. എല്ലാ സിസ്റ്റങ്ങളും ഈ ഓപ്ഷനെ പിന്തുണയ്ക്കുന്നില്ല. പ്രവചനാതീതമായ ഫലങ്ങൾക്കായി, നിങ്ങൾ ചെയ്യണം
സമാഹരിക്കാൻ ഉപയോഗിക്കുന്ന അതേ സെറ്റ് ഓപ്ഷനുകളും വ്യക്തമാക്കുക (-fpic, -fPIC, അല്ലെങ്കിൽ മോഡൽ
suboptions) നിങ്ങൾ ഈ ലിങ്കർ ഓപ്ഷൻ വ്യക്തമാക്കുമ്പോൾ.[1]

-shared-libgcc
-static-libgcc
നൽകുന്ന സിസ്റ്റങ്ങളിൽ libgcc ഒരു പങ്കിട്ട ലൈബ്രറി എന്ന നിലയിൽ, ഈ ഓപ്ഷനുകൾ ഉപയോഗിക്കാൻ നിർബന്ധിക്കുന്നു
ഒന്നുകിൽ പങ്കിട്ട അല്ലെങ്കിൽ സ്റ്റാറ്റിക് പതിപ്പ്, യഥാക്രമം. പങ്കിട്ട പതിപ്പ് ഇല്ലെങ്കിൽ libgcc ആയിരുന്നു
കംപൈലർ കോൺഫിഗർ ചെയ്യുമ്പോൾ നിർമ്മിച്ചത്, ഈ ഓപ്ഷനുകൾക്ക് യാതൊരു ഫലവുമില്ല.

ഒരു ആപ്ലിക്കേഷൻ പങ്കിട്ടത് ഉപയോഗിക്കേണ്ട നിരവധി സാഹചര്യങ്ങളുണ്ട് libgcc
സ്റ്റാറ്റിക് പതിപ്പിന് പകരം. ഇവയിൽ ഏറ്റവും സാധാരണമായത് ആപ്ലിക്കേഷൻ ചെയ്യുമ്പോൾ ആണ്
വ്യത്യസ്ത പങ്കിട്ട ലൈബ്രറികളിലുടനീളം ഒഴിവാക്കലുകൾ എറിയാനും പിടിക്കാനും ആഗ്രഹിക്കുന്നു. അങ്ങനെയെങ്കിൽ,
ഓരോ ലൈബ്രറിയും ആപ്ലിക്കേഷനും പങ്കിട്ടവ ഉപയോഗിക്കണം libgcc.

അതിനാൽ, G++, GCJ ഡ്രൈവറുകൾ സ്വയമേവ ചേർക്കുന്നു -shared-libgcc നിങ്ങൾ നിർമ്മിക്കുമ്പോഴെല്ലാം
ഒരു പങ്കിട്ട ലൈബ്രറി അല്ലെങ്കിൽ ഒരു പ്രധാന എക്സിക്യൂട്ടബിൾ, കാരണം C++, Java പ്രോഗ്രാമുകൾ സാധാരണയായി ഉപയോഗിക്കുന്നു
ഒഴിവാക്കലുകൾ, അതിനാൽ ഇതാണ് ശരിയായ കാര്യം.

പകരം, പങ്കിട്ട ലൈബ്രറികൾ സൃഷ്‌ടിക്കാൻ നിങ്ങൾ GCC ഡ്രൈവർ ഉപയോഗിക്കുകയാണെങ്കിൽ, അവ നിങ്ങൾ കണ്ടെത്തിയേക്കാം
എല്ലായ്‌പ്പോഴും പങ്കിട്ടവയുമായി ബന്ധിപ്പിച്ചിട്ടില്ല libgcc. GCC കണ്ടെത്തുകയാണെങ്കിൽ, അതിന്റെ കോൺഫിഗറേഷനിൽ
സമയം, നിങ്ങൾക്ക് ഒരു നോൺ-ഗ്നു ലിങ്കർ അല്ലെങ്കിൽ ഓപ്ഷൻ പിന്തുണയ്ക്കാത്ത ഒരു ഗ്നു ലിങ്കർ ഉണ്ട്
--eh-frame-hdr, ഇത് പങ്കിട്ട പതിപ്പിനെ ലിങ്ക് ചെയ്യുന്നു libgcc പങ്കിട്ട ലൈബ്രറികളിലേക്ക്
സ്ഥിരസ്ഥിതി. അല്ലെങ്കിൽ, അത് ലിങ്കറിന്റെ പ്രയോജനം നേടുകയും ലിങ്കിംഗ് ഒപ്റ്റിമൈസ് ചെയ്യുകയും ചെയ്യുന്നു
എന്ന പങ്കിട്ട പതിപ്പിനൊപ്പം libgcc, libgcc യുടെ സ്റ്റാറ്റിക് പതിപ്പുമായി ലിങ്കുചെയ്യുന്നു
സ്ഥിരസ്ഥിതി. ഇത് ഒഴിവാക്കലുകളെ അത്തരം പങ്കിട്ട ലൈബ്രറികളിലൂടെ പ്രചരിപ്പിക്കാൻ അനുവദിക്കുന്നു
ലൈബ്രറി ലോഡ് സമയത്ത് സ്ഥലം മാറ്റുന്നതിനുള്ള ചെലവ്.

എന്നിരുന്നാലും, ഒരു ലൈബ്രറിയോ മെയിൻ എക്സിക്യൂട്ടബിളോ ഒഴിവാക്കുകയോ ഒഴിവാക്കുകയോ ചെയ്യണമെങ്കിൽ, നിങ്ങൾ
എന്നതിൽ ഉപയോഗിക്കുന്ന ഭാഷകൾക്ക് അനുയോജ്യമായത് G++ അല്ലെങ്കിൽ GCJ ഡ്രൈവർ ഉപയോഗിച്ച് ലിങ്ക് ചെയ്യണം
പ്രോഗ്രാം, അല്ലെങ്കിൽ ഓപ്ഷൻ ഉപയോഗിച്ച് -shared-libgcc, അത് പങ്കിട്ടവയുമായി ലിങ്ക് ചെയ്തിരിക്കുന്നതുപോലെ
libgcc.

-സ്റ്റാറ്റിക്-ലിബാസൻ
എപ്പോഴാണ് -fsanitize=വിലാസം ഒരു പ്രോഗ്രാം ലിങ്ക് ചെയ്യാൻ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു, GCC ഡ്രൈവർ
നേരെ സ്വയമേ ലിങ്കുകൾ ലിബാസൻ. എങ്കിൽ ലിബാസൻ ഒരു പങ്കിട്ട ലൈബ്രറിയായി ലഭ്യമാണ്, കൂടാതെ
The - സ്റ്റാറ്റിക് ഓപ്ഷൻ ഉപയോഗിക്കുന്നില്ല, തുടർന്ന് ഇത് പങ്കിട്ട പതിപ്പിന് എതിരായി ലിങ്ക് ചെയ്യുന്നു ലിബാസൻ.
ദി -സ്റ്റാറ്റിക്-ലിബാസൻ ഓപ്ഷൻ GCC ഡ്രൈവറെ ലിങ്ക് ചെയ്യാൻ നിർദ്ദേശിക്കുന്നു ലിബാസൻ സ്ഥിരമായി, ഇല്ലാതെ
മറ്റ് ലൈബ്രറികളെ സ്ഥിരമായി ബന്ധിപ്പിക്കേണ്ടതുണ്ട്.

-സ്റ്റാറ്റിക്-ലിബ്റ്റ്സാൻ
എപ്പോഴാണ് -fsanitize=ത്രെഡ് ഒരു പ്രോഗ്രാം ലിങ്ക് ചെയ്യാൻ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു, GCC ഡ്രൈവർ
നേരെ സ്വയമേ ലിങ്കുകൾ ലിബ്റ്റ്സാൻ. എങ്കിൽ ലിബ്റ്റ്സാൻ ഒരു പങ്കിട്ട ലൈബ്രറിയായി ലഭ്യമാണ്, കൂടാതെ
The - സ്റ്റാറ്റിക് ഓപ്ഷൻ ഉപയോഗിക്കുന്നില്ല, തുടർന്ന് ഇത് പങ്കിട്ട പതിപ്പിന് എതിരായി ലിങ്ക് ചെയ്യുന്നു ലിബ്റ്റ്സാൻ.
ദി -സ്റ്റാറ്റിക്-ലിബ്റ്റ്സാൻ ഓപ്ഷൻ GCC ഡ്രൈവറെ ലിങ്ക് ചെയ്യാൻ നിർദ്ദേശിക്കുന്നു ലിബ്റ്റ്സാൻ സ്ഥിരമായി, ഇല്ലാതെ
മറ്റ് ലൈബ്രറികളെ സ്ഥിരമായി ബന്ധിപ്പിക്കേണ്ടതുണ്ട്.

-സ്റ്റാറ്റിക്-ലിബ്ലസൻ
എപ്പോഴാണ് -fsanitize=ചോർച്ച ഒരു പ്രോഗ്രാം ലിങ്ക് ചെയ്യാൻ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു, GCC ഡ്രൈവർ
നേരെ സ്വയമേ ലിങ്കുകൾ ലിബ്ലസൻ. എങ്കിൽ ലിബ്ലസൻ ഒരു പങ്കിട്ട ലൈബ്രറിയായി ലഭ്യമാണ്, കൂടാതെ
The - സ്റ്റാറ്റിക് ഓപ്ഷൻ ഉപയോഗിക്കുന്നില്ല, തുടർന്ന് ഇത് പങ്കിട്ട പതിപ്പിന് എതിരായി ലിങ്ക് ചെയ്യുന്നു ലിബ്ലസൻ.
ദി -സ്റ്റാറ്റിക്-ലിബ്ലസൻ ഓപ്ഷൻ GCC ഡ്രൈവറെ ലിങ്ക് ചെയ്യാൻ നിർദ്ദേശിക്കുന്നു ലിബ്ലസൻ സ്ഥിരമായി, ഇല്ലാതെ
മറ്റ് ലൈബ്രറികളെ സ്ഥിരമായി ബന്ധിപ്പിക്കേണ്ടതുണ്ട്.

-സ്റ്റാറ്റിക്-ലിബുബ്സൻ
എപ്പോഴാണ് -fsanitize=നിർവചിക്കപ്പെട്ടിട്ടില്ല ഒരു പ്രോഗ്രാം ലിങ്ക് ചെയ്യാൻ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു, GCC ഡ്രൈവർ
നേരെ സ്വയമേ ലിങ്കുകൾ ലിബുബ്സാൻ. എങ്കിൽ ലിബുബ്സാൻ ഒരു പങ്കിട്ട ലൈബ്രറിയായി ലഭ്യമാണ്,
ഒപ്പം - സ്റ്റാറ്റിക് ഓപ്ഷൻ ഉപയോഗിക്കുന്നില്ല, തുടർന്ന് ഇത് പങ്കിട്ട പതിപ്പിന് എതിരായി ലിങ്ക് ചെയ്യുന്നു
ലിബുബ്സാൻ. ദി -സ്റ്റാറ്റിക്-ലിബുബ്സൻ ഓപ്ഷൻ GCC ഡ്രൈവറെ ലിങ്ക് ചെയ്യാൻ നിർദ്ദേശിക്കുന്നു ലിബുബ്സാൻ
സ്ഥിരമായി, മറ്റ് ലൈബ്രറികളെ സ്ഥിരമായി ബന്ധിപ്പിക്കാതെ തന്നെ.

-static-libmpx
എപ്പോഴാണ് -fcheck-പോയിന്റർ അതിരുകൾ ഒപ്പം -എംഎംപിഎക്സ് ഒരു പ്രോഗ്രാം ലിങ്ക് ചെയ്യാൻ ഓപ്ഷനുകൾ ഉപയോഗിക്കുന്നു, GCC
നേരെ ഡ്രൈവർ സ്വയമേ ലിങ്ക് ചെയ്യുന്നു libmpx. എങ്കിൽ libmpx പങ്കിട്ടതായി ലഭ്യമാണ്
ലൈബ്രറി, ഒപ്പം - സ്റ്റാറ്റിക് ഓപ്ഷൻ ഉപയോഗിക്കുന്നില്ല, തുടർന്ന് ഇത് പങ്കിട്ടവയ്‌ക്കെതിരായ ലിങ്കുകൾ
പതിപ്പ് libmpx. ദി -static-libmpx ഓപ്ഷൻ GCC ഡ്രൈവറെ ലിങ്ക് ചെയ്യാൻ നിർദ്ദേശിക്കുന്നു libmpx
സ്ഥിരമായി, മറ്റ് ലൈബ്രറികളെ സ്ഥിരമായി ബന്ധിപ്പിക്കാതെ തന്നെ.

-static-libmpxwrappers
എപ്പോഴാണ് -fcheck-പോയിന്റർ അതിരുകൾ ഒപ്പം -എംഎംപിഎക്സ് ഇല്ലാതെ ഒരു പ്രോഗ്രാം ലിങ്ക് ചെയ്യാൻ ഓപ്ഷനുകൾ ഉപയോഗിക്കുന്നു
ഉപയോഗിക്കുന്നതും -fno-chkp-use-wrappers, GCC ഡ്രൈവർ ഇതിനെതിരെ സ്വയമേവ ലിങ്ക് ചെയ്യുന്നു
libmpxwrappers. എങ്കിൽ libmpxwrappers ഒരു പങ്കിട്ട ലൈബ്രറിയായി ലഭ്യമാണ്, കൂടാതെ - സ്റ്റാറ്റിക്
ഓപ്ഷൻ ഉപയോഗിക്കുന്നില്ല, തുടർന്ന് ഇത് പങ്കിട്ട പതിപ്പിന് എതിരായി ലിങ്ക് ചെയ്യുന്നു libmpxwrappers. ദി
-static-libmpxwrappers ഓപ്ഷൻ GCC ഡ്രൈവറെ ലിങ്ക് ചെയ്യാൻ നിർദ്ദേശിക്കുന്നു libmpxwrappers
സ്ഥിരമായി, മറ്റ് ലൈബ്രറികളെ സ്ഥിരമായി ബന്ധിപ്പിക്കാതെ തന്നെ.

-static-libstdc++
എപ്പോഴാണ് g ++ ഒരു C++ പ്രോഗ്രാം ലിങ്ക് ചെയ്യാൻ പ്രോഗ്രാം ഉപയോഗിക്കുന്നു, അത് സാധാരണയായി യാന്ത്രികമായി ലിങ്കുചെയ്യുന്നു
എതിരായിരുന്നു libstdc++. എങ്കിൽ libstdc++ ഒരു പങ്കിട്ട ലൈബ്രറിയായി ലഭ്യമാണ്, കൂടാതെ - സ്റ്റാറ്റിക്
ഓപ്ഷൻ ഉപയോഗിക്കുന്നില്ല, തുടർന്ന് ഇത് പങ്കിട്ട പതിപ്പിന് എതിരായി ലിങ്ക് ചെയ്യുന്നു libstdc++. അതാണ്
സാധാരണ നന്നായി. എന്നിരുന്നാലും, പതിപ്പ് മരവിപ്പിക്കുന്നത് ചിലപ്പോൾ ഉപയോഗപ്രദമാണ് libstdc++
ഒരു പൂർണ്ണ സ്റ്റാറ്റിക് ലിങ്കിലേക്ക് പോകാതെ പ്രോഗ്രാം ഉപയോഗിക്കുന്നു. ദി
-static-libstdc++ ഓപ്ഷൻ നയിക്കുന്നു g ++ ലിങ്ക് ചെയ്യാനുള്ള ഡ്രൈവർ libstdc++ സ്ഥിരമായി, ഇല്ലാതെ
മറ്റ് ലൈബ്രറികളെ സ്ഥിരമായി ബന്ധിപ്പിക്കേണ്ടതുണ്ട്.

- പ്രതീകാത്മകം
ഒരു പങ്കിട്ട ഒബ്‌ജക്റ്റ് നിർമ്മിക്കുമ്പോൾ ആഗോള ചിഹ്നങ്ങളിലേക്കുള്ള റഫറൻസുകൾ ബന്ധിപ്പിക്കുക. എന്തിനെക്കുറിച്ചും മുന്നറിയിപ്പ് നൽകുക
പരിഹരിക്കപ്പെടാത്ത റഫറൻസുകൾ (ലിങ്ക് എഡിറ്റർ ഓപ്‌ഷൻ ഉപയോഗിച്ച് അസാധുവാക്കാത്ത പക്ഷം -എക്സ്ലിങ്കർ -z
-എക്സ്ലിങ്കർ defs). കുറച്ച് സിസ്റ്റങ്ങൾ മാത്രമേ ഈ ഓപ്ഷനെ പിന്തുണയ്ക്കൂ.

-T സ്ക്രിപ്റ്റ്
ഉപയോഗം സ്ക്രിപ്റ്റ് ലിങ്കർ സ്ക്രിപ്റ്റ് ആയി. ഉപയോഗിക്കുന്ന മിക്ക സിസ്റ്റങ്ങളും ഈ ഓപ്ഷൻ പിന്തുണയ്ക്കുന്നു
ഗ്നു ലിങ്കർ. ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റമില്ലാത്ത ബെയർ-ബോർഡ് ടാർഗെറ്റുകൾ പോലെയുള്ള ചില ലക്ഷ്യങ്ങളിൽ,
The -T നിർവചിക്കാത്ത ചിഹ്നങ്ങളിലേക്കുള്ള റഫറൻസുകൾ ഒഴിവാക്കാൻ ലിങ്ക് ചെയ്യുമ്പോൾ ഓപ്ഷൻ ആവശ്യമായി വന്നേക്കാം.

-എക്സ്ലിങ്കർ ഓപ്ഷൻ
ചുരം ഓപ്ഷൻ ലിങ്കറിലേക്കുള്ള ഒരു ഓപ്ഷനായി. സിസ്റ്റം-നിർദ്ദിഷ്ട വിതരണത്തിനായി നിങ്ങൾക്ക് ഇത് ഉപയോഗിക്കാം
GCC തിരിച്ചറിയാത്ത ലിങ്കർ ഓപ്ഷനുകൾ.

നിങ്ങൾക്ക് ഒരു പ്രത്യേക ആർഗ്യുമെന്റ് എടുക്കുന്ന ഒരു ഓപ്ഷൻ പാസാക്കണമെങ്കിൽ, നിങ്ങൾ ഉപയോഗിക്കണം -എക്സ്ലിങ്കർ
രണ്ടുതവണ, ഒരിക്കൽ ഓപ്‌ഷനും ഒരിക്കൽ വാദത്തിനും. ഉദാഹരണത്തിന്, കടന്നുപോകാൻ -അുറപ്പിക്കുക
നിർവചനങ്ങൾ, നിങ്ങൾ എഴുതണം -എക്സ്ലിങ്കർ -അുറപ്പിക്കുക -എക്സ്ലിങ്കർ നിർവചനങ്ങൾ. അതു പ്രവർത്തിക്കുന്നില്ല
എഴുതാൻ -എക്സ്ലിങ്കർ "-അുറപ്പിക്കുക നിർവചനങ്ങൾ", കാരണം ഇത് മുഴുവൻ സ്ട്രിംഗും a ആയി കടന്നുപോകുന്നു
ഒരൊറ്റ വാദം, ഇത് ലിങ്കർ പ്രതീക്ഷിക്കുന്നില്ല.

ഗ്നു ലിങ്കർ ഉപയോഗിക്കുമ്പോൾ, ആർഗ്യുമെന്റുകൾ ലിങ്കറിന് കൈമാറുന്നത് സാധാരണയായി കൂടുതൽ സൗകര്യപ്രദമാണ്
ഉപയോഗിക്കുന്ന ഓപ്ഷനുകൾ ഓപ്ഷൻ=മൂല്യം പ്രത്യേക ആർഗ്യുമെന്റുകളേക്കാൾ വാക്യഘടന. ഉദാഹരണത്തിന്, നിങ്ങൾ
വ്യക്തമാക്കാൻ കഴിയും -എക്സ്ലിങ്കർ -മാപ്പ്= output.map അതിലും കൂടുതൽ -എക്സ്ലിങ്കർ -മാപ്പ് -എക്സ്ലിങ്കർ output.map.
കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾക്കായി മറ്റ് ലിങ്കറുകൾ ഈ വാക്യഘടനയെ പിന്തുണച്ചേക്കില്ല.

-Wl,ഓപ്ഷൻ
ചുരം ഓപ്ഷൻ ലിങ്കറിലേക്കുള്ള ഒരു ഓപ്ഷനായി. എങ്കിൽ ഓപ്ഷൻ കോമകൾ അടങ്ങിയിരിക്കുന്നു, അത് വിഭജിച്ചിരിക്കുന്നു
കോമയിൽ ഒന്നിലധികം ഓപ്ഷനുകൾ. എന്നതിലേക്ക് ഒരു ആർഗ്യുമെന്റ് കൈമാറാൻ നിങ്ങൾക്ക് ഈ വാക്യഘടന ഉപയോഗിക്കാം
ഓപ്ഷൻ. ഉദാഹരണത്തിന്, -Wl,-മാപ്പ്, output.map പാസുകൾ -മാപ്പ് output.map ലിങ്കറിലേക്ക്. എപ്പോൾ
GNU ലിങ്കർ ഉപയോഗിച്ച്, നിങ്ങൾക്കും ഇതേ പ്രഭാവം ലഭിക്കും -Wl,-Map=output.map.

ശ്രദ്ധിക്കുക: ഉബുണ്ടു 8.10-ലും പിന്നീടുള്ള പതിപ്പുകളിലും, LDFLAGS-നുള്ള ഓപ്ഷൻ -Wl,-z, relro ഉപയോഗിക്കുന്നു.
പ്രവർത്തനരഹിതമാക്കാൻ, ഉപയോഗിക്കുക -Wl,-z, norelro.

-u ചിഹ്നം
ചിഹ്നം നടിക്കുക ചിഹ്നം നിർവചിക്കാനായില്ല, ലൈബ്രറി മൊഡ്യൂളുകളുടെ ലിങ്കിംഗ് നിർബന്ധമാക്കുന്നതിന്
അത്. നിങ്ങൾക്ക് ഉപയോഗിക്കാം -u ലോഡുചെയ്യാൻ നിർബന്ധിതമായി വ്യത്യസ്ത ചിഹ്നങ്ങൾ ഉപയോഗിച്ച് ഒന്നിലധികം തവണ
അധിക ലൈബ്രറി മൊഡ്യൂളുകൾ.

-z കീവേഡ്
-z കീവേഡിനൊപ്പം ലിങ്കറിലേക്ക് നേരിട്ട് കൈമാറുന്നു കീവേഡ്. വിഭാഗം കാണുക
അനുവദനീയമായ മൂല്യങ്ങൾക്കും അവയുടെ അർത്ഥങ്ങൾക്കുമായി നിങ്ങളുടെ ലിങ്കറുടെ ഡോക്യുമെന്റേഷനിൽ.

ഓപ്ഷനുകൾ വേണ്ടി ഡയറക്ടറി തിരയൽ
ഈ ഓപ്‌ഷനുകൾ ഹെഡ്ഡർ ഫയലുകൾ, ലൈബ്രറികൾ, ഭാഗങ്ങൾ എന്നിവയ്ക്കായി തിരയുന്നതിനുള്ള ഡയറക്ടറികൾ വ്യക്തമാക്കുന്നു
കമ്പൈലറിന്റെ:

-Iമുതലാളി
ഡയറക്ടറി ചേർക്കുക മുതലാളി തലക്കെട്ടിനായി തിരയേണ്ട ഡയറക്ടറികളുടെ ലിസ്റ്റിന്റെ തലയിലേക്ക്
ഫയലുകൾ. നിങ്ങളുടേതായ ഒരു സിസ്റ്റം ഹെഡ്ഡർ ഫയൽ അസാധുവാക്കാൻ ഇത് ഉപയോഗിക്കാം
പതിപ്പ്, സിസ്റ്റം ഹെഡർ ഫയലിന് മുമ്പായി ഈ ഡയറക്ടറികൾ തിരഞ്ഞതിനാൽ
ഡയറക്ടറികൾ. എന്നിരുന്നാലും, അടങ്ങിയിരിക്കുന്ന ഡയറക്‌ടറികൾ ചേർക്കാൻ നിങ്ങൾ ഈ ഓപ്ഷൻ ഉപയോഗിക്കരുത്
വെണ്ടർ നൽകുന്ന സിസ്റ്റം ഹെഡർ ഫയലുകൾ (ഉപയോഗിക്കുക -വ്യവസ്ഥ അതിനു വേണ്ടി). നിങ്ങൾ ഒന്നിൽ കൂടുതൽ ഉപയോഗിക്കുകയാണെങ്കിൽ
-I ഓപ്ഷൻ, ഡയറക്ടറികൾ ഇടത്തുനിന്ന് വലത്തോട്ട് ക്രമത്തിൽ സ്കാൻ ചെയ്യുന്നു; സ്റ്റാൻഡേർഡ് സിസ്റ്റം
ഡയറക്ടറികൾ പിന്നാലെ വരുന്നു.

ഒരു സ്റ്റാൻഡേർഡ് സിസ്റ്റത്തിൽ ഡയറക്‌ടറി അല്ലെങ്കിൽ നിർദ്ദേശിച്ചിരിക്കുന്ന ഒരു ഡയറക്‌ടറി ഉൾപ്പെടുന്നുവെങ്കിൽ -വ്യവസ്ഥ, ആണ്
കൂടെ വ്യക്തമാക്കിയിട്ടുണ്ട് -I, -I ഓപ്ഷൻ അവഗണിക്കപ്പെട്ടു. ഡയറക്ടറി ഇപ്പോഴും തിരയുന്നു, പക്ഷേ
ഒരു സിസ്റ്റം ഡയറക്ടറി എന്ന നിലയിൽ, സിസ്റ്റത്തിൽ അതിന്റെ സാധാരണ സ്ഥാനത്ത് ചെയിൻ ഉൾപ്പെടുന്നു. ഇതാണ്
ബഗ്ഗി സിസ്റ്റം ഹെഡറുകൾ പരിഹരിക്കുന്നതിനുള്ള ജിസിസിയുടെ നടപടിക്രമവും അതിനുള്ള ഓർഡറിംഗും ഉറപ്പാക്കുക
"include_next" നിർദ്ദേശം അശ്രദ്ധമായി മാറ്റിയിട്ടില്ല. നിങ്ങൾ ശരിക്കും മാറണമെങ്കിൽ
സിസ്റ്റം ഡയറക്ടറികൾക്കായുള്ള തിരയൽ ക്രമം, ഉപയോഗിക്കുക -nostdinc ഒപ്പം / അല്ലെങ്കിൽ -വ്യവസ്ഥ ഓപ്ഷനുകൾ.

-iplugindir=മുതലാളി
കടന്നുപോകുന്ന പ്ലഗിനുകൾക്കായി തിരയാൻ ഡയറക്ടറി സജ്ജമാക്കുക -fplugin=പേര് ഇതിനുപകരമായി
-fplugin=പാത/പേര്.സോ. ഈ ഓപ്‌ഷൻ ഉപയോക്താവിന് ഉപയോഗിക്കാനുള്ളതല്ല, മറിച്ച് മാത്രം
ഡ്രൈവർ കടന്നുപോയി.

- iquoteമുതലാളി
ഡയറക്ടറി ചേർക്കുക മുതലാളി തലക്കെട്ടിനായി തിരയേണ്ട ഡയറക്ടറികളുടെ ലിസ്റ്റിന്റെ തലയിലേക്ക്
"#ഉൾപ്പെടുത്തുക" എന്നതിനുള്ള ഫയലുകൾ മാത്രംഫയൽ""; അവ "#ഉൾപ്പെടുത്തുക" എന്നതിനായി തിരഞ്ഞിട്ടില്ല
<ഫയൽ>", അല്ലെങ്കിൽ അങ്ങനെ തന്നെ -I.

-Lമുതലാളി
ഡയറക്ടറി ചേർക്കുക മുതലാളി തിരയേണ്ട ഡയറക്ടറികളുടെ പട്ടികയിലേക്ക് -l.

-Bപ്രിഫിക്‌സ്
എക്സിക്യൂട്ടബിളുകൾ, ലൈബ്രറികൾ, ഫയലുകൾ ഉൾപ്പെടുത്തൽ എന്നിവ എവിടെ കണ്ടെത്തണമെന്ന് ഈ ഓപ്ഷൻ വ്യക്തമാക്കുന്നു
കംപൈലറിന്റെ തന്നെ ഡാറ്റ ഫയലുകൾ.

കംപൈലർ ഡ്രൈവർ പ്രോഗ്രാം ഒന്നോ അതിലധികമോ ഉപപ്രോഗ്രാമുകൾ പ്രവർത്തിപ്പിക്കുന്നു സിപിപി, ച്ച്ക്സനുമ്ക്സ, as ഒപ്പം ld.
അത് ശ്രമിക്കുന്നു പ്രിഫിക്‌സ് ഓരോ പ്രോഗ്രാമിനും ഒരു പ്രിഫിക്‌സ് എന്ന നിലയിൽ, അത് ഉപയോഗിച്ചും അല്ലാതെയും പ്രവർത്തിക്കാൻ ശ്രമിക്കുന്നു
മെഷീൻ/പതിപ്പ്/.

ഓരോ ഉപപ്രോഗ്രാമും പ്രവർത്തിപ്പിക്കുന്നതിന്, കംപൈലർ ഡ്രൈവർ ആദ്യം ശ്രമിക്കുന്നത് -B എന്തെങ്കിലും ഉണ്ടെങ്കിൽ പ്രിഫിക്സ്.
ആ പേര് കണ്ടെത്തിയില്ലെങ്കിൽ, അല്ലെങ്കിൽ -B വ്യക്തമാക്കിയിട്ടില്ല, ഡ്രൈവർ രണ്ട് സ്റ്റാൻഡേർഡ് ശ്രമിക്കുന്നു
പ്രിഫിക്സുകൾ, /usr/lib/gcc/ ഒപ്പം /usr/local/lib/gcc/. അവയിലൊന്നും ഫലമില്ലെങ്കിൽ a
കണ്ടെത്തിയ ഫയലിന്റെ പേര്, പരിഷ്ക്കരിക്കാത്ത പ്രോഗ്രാമിന്റെ പേര് ഉപയോഗിച്ച് തിരയുന്നു
നിങ്ങളുടെ ഡയറക്ടറികളിൽ വ്യക്തമാക്കിയിട്ടുണ്ട് PATH എൻവയോൺമെന്റ് വേരിയബിൾ.

കംപൈലർ പാത്ത് നൽകിയിട്ടുണ്ടോ എന്ന് പരിശോധിക്കുന്നു -B ഒരു ഡയറക്ടറിയെ സൂചിപ്പിക്കുന്നു, എങ്കിൽ
പാതയുടെ അവസാനം ഒരു ഡയറക്ടറി സെപ്പറേറ്റർ പ്രതീകം ചേർക്കേണ്ടത് ആവശ്യമാണ്.

-B ഡയറക്‌ടറി നാമങ്ങൾ ഫലപ്രദമായി വ്യക്തമാക്കുന്ന പ്രിഫിക്‌സുകൾ ലൈബ്രറികൾക്കും ബാധകമാണ്
ലിങ്കർ, കാരണം കംപൈലർ ഈ ഓപ്ഷനുകളിലേക്ക് വിവർത്തനം ചെയ്യുന്നു -L ലിങ്കറിനുള്ള ഓപ്ഷനുകൾ.
കംപൈലർ വിവർത്തനം ചെയ്യുന്നതിനാൽ, പ്രീപ്രൊസസറിൽ ഫയലുകൾ ഉൾപ്പെടുത്താനും അവ ബാധകമാണ്
ഈ ഓപ്ഷനുകൾ -വ്യവസ്ഥ പ്രീപ്രോസസറിനുള്ള ഓപ്ഷനുകൾ. ഈ സാഹചര്യത്തിൽ, കമ്പൈലർ
കൂട്ടിച്ചേർക്കുന്നു ഉൾപ്പെടുന്നു പ്രിഫിക്സിലേക്ക്.

റൺടൈം പിന്തുണ ഫയൽ libgcc.a ഉപയോഗിക്കുന്നതിനും തിരയാവുന്നതാണ് -B ഉപസർഗ്ഗം, എങ്കിൽ
ആവശ്യമുണ്ട്. അത് അവിടെ കണ്ടെത്തിയില്ലെങ്കിൽ, മുകളിലുള്ള രണ്ട് സ്റ്റാൻഡേർഡ് പ്രിഫിക്സുകൾ പരീക്ഷിച്ചു, അത്
എല്ലാം ആണ്. ആ മാർഗ്ഗങ്ങളിലൂടെ കണ്ടെത്താനായില്ലെങ്കിൽ ഫയൽ ലിങ്കിൽ നിന്ന് പുറത്തുപോകും.

സമാനമായ ഒരു പ്രിഫിക്‌സ് വ്യക്തമാക്കുന്നതിനുള്ള മറ്റൊരു മാർഗ്ഗം -B പരിസ്ഥിതിയെ ഉപയോഗിക്കുക എന്നതാണ് ഉപസർഗ്ഗം
വേരിയബിൾ GCC_EXEC_PREFIX.

ഒരു പ്രത്യേക kludge ആയി, വഴി നൽകിയ പാത എങ്കിൽ -B is [dir/]stageN/എവിടെ N ഒരു സംഖ്യയാണ്
0 മുതൽ 9 വരെയുള്ള ശ്രേണിയിൽ, അത് മാറ്റിസ്ഥാപിക്കുന്നു [dir/]ഉൾപ്പെടുന്നു. ഇത് ബൂട്ട് ചെയ്യാൻ സഹായിക്കും-
കംപൈലർ സ്ട്രാപ്പ് ചെയ്യുന്നു.

-സ്‌പെസിഫിക്കേഷൻ=ഫയല്
പ്രോസസ്സ് ഫയല് കംപൈലർ സ്റ്റാൻഡേർഡിൽ വായിച്ചതിനുശേഷം നവ്യ ഫയൽ, അസാധുവാക്കാൻ വേണ്ടി
ഡിഫോൾട്ടുകൾ ജിസി എന്താണ് കടന്നുപോകേണ്ടതെന്ന് നിർണ്ണയിക്കുമ്പോൾ ഡ്രൈവർ പ്രോഗ്രാം ഉപയോഗിക്കുന്നു
ലേക്ക് ച്ച്ക്സനുമ്ക്സ, cc1 പ്ലസ്, as, ld, മുതലായവ ഒന്നിലധികം -സ്‌പെസിഫിക്കേഷൻ=ഫയല് എന്നതിൽ വ്യക്തമാക്കാം
കമാൻഡ് ലൈൻ, അവ ഇടത്തുനിന്ന് വലത്തോട്ട് ക്രമത്തിൽ പ്രോസസ്സ് ചെയ്യുന്നു.

--sysroot=മുതലാളി
ഉപയോഗം മുതലാളി തലക്കെട്ടുകൾക്കും ലൈബ്രറികൾക്കുമുള്ള ലോജിക്കൽ റൂട്ട് ഡയറക്ടറിയായി. ഉദാഹരണത്തിന്, എങ്കിൽ
കംപൈലർ സാധാരണയായി തലക്കെട്ടുകൾക്കായി തിരയുന്നു / usr / ഉൾപ്പെടുത്തുക ഒപ്പം ലൈബ്രറികളും / Usr / libഅത്
പകരം തിരയലുകൾ dir/usr/ഉൾപ്പെടുത്തുക ഒപ്പം dir/usr/lib.

നിങ്ങൾ ഈ ഓപ്ഷനും രണ്ടും ഉപയോഗിക്കുകയാണെങ്കിൽ -isysroot ഓപ്ഷൻ, പിന്നെ --സിസ് റൂട്ട് ഓപ്ഷൻ
ലൈബ്രറികൾക്ക് ബാധകമാണ്, പക്ഷേ -isysroot ഓപ്ഷൻ ഹെഡ്ഡർ ഫയലുകൾക്ക് ബാധകമാണ്.

ഗ്നു ലിങ്കറിന് (2.16 പതിപ്പ് മുതൽ) ഇതിന് ആവശ്യമായ പിന്തുണയുണ്ട്
ഓപ്ഷൻ. നിങ്ങളുടെ ലിങ്കർ ഈ ഓപ്ഷനെ പിന്തുണയ്ക്കുന്നില്ലെങ്കിൽ, ഹെഡ്ഡർ ഫയൽ വശം
--സിസ് റൂട്ട് ഇപ്പോഴും പ്രവർത്തിക്കുന്നു, പക്ഷേ ലൈബ്രറി വശം പ്രവർത്തിക്കുന്നില്ല.

--no-sysroot-suffix
ചില ടാർഗെറ്റുകൾക്ക്, നിർദ്ദിഷ്ട റൂട്ട് ഡയറക്‌ടറിയിലേക്ക് ഒരു സഫിക്‌സ് ചേർക്കുന്നു --സിസ് റൂട്ട്,
ഉപയോഗിച്ച മറ്റ് ഓപ്‌ഷനുകളെ ആശ്രയിച്ച്, തലക്കെട്ടുകൾ ഉദാഹരണമായി കണ്ടെത്താം
dir/suffix/usr/include ഇതിനുപകരമായി dir/usr/ഉൾപ്പെടുത്തുക. ഈ ഓപ്ഷൻ കൂട്ടിച്ചേർക്കൽ പ്രവർത്തനരഹിതമാക്കുന്നു
അത്തരമൊരു പ്രത്യയത്തിന്റെ.

-ഞാൻ- ഈ ഓപ്ഷൻ ഒഴിവാക്കി. ദയവായി ഉപയോഗിക്കുക - iquote പകരം -I മുമ്പത്തെ ഡയറക്ടറികൾ
The -ഞാൻ- നീക്കംചെയ്യുക -ഞാൻ- ഓപ്ഷൻ. നിങ്ങൾ വ്യക്തമാക്കുന്ന ഏതെങ്കിലും ഡയറക്ടറികൾ -I മുമ്പ് ഓപ്ഷനുകൾ
The -ഞാൻ- ഓപ്‌ഷൻ "#ഉൾപ്പെടുത്തുക" എന്നതിനായി മാത്രം തിരയുന്നുഫയൽ""; അവരല്ല
"#ഉൾപ്പെടുത്തുക" എന്നതിനായി തിരഞ്ഞുഫയൽ>".

കൂടെ അധിക ഡയറക്ടറികൾ വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിൽ -I ശേഷം ഓപ്ഷനുകൾ -ഞാൻ- ഓപ്ഷൻ, ഇവ
ഡയറക്‌ടറികൾ എല്ലാ "#ഉൾപ്പെടുത്തുക" നിർദ്ദേശങ്ങൾക്കും വേണ്ടി തിരയുന്നു. (സാധാരണമായ എല്ലാം -I
ഡയറക്ടറികൾ ഈ രീതിയിൽ ഉപയോഗിക്കുന്നു.)

കൂടാതെ, എസ് -ഞാൻ- നിലവിലെ ഡയറക്‌ടറിയുടെ ഉപയോഗത്തെ ഓപ്ഷൻ തടയുന്നു (ഇവിടെ
"#include" എന്നതിനായുള്ള ആദ്യ തിരയൽ ഡയറക്‌ടറിയിൽ നിന്നാണ് നിലവിലെ ഇൻപുട്ട് ഫയൽ വന്നത്)ഫയൽ"".
ഈ പ്രഭാവം മറികടക്കാൻ ഒരു മാർഗവുമില്ല -ഞാൻ-. കൂടെ -ഐ. നിങ്ങൾക്ക് തിരയുന്നത് വ്യക്തമാക്കാൻ കഴിയും
കംപൈലർ അഭ്യർത്ഥിക്കുമ്പോൾ നിലവിലുള്ള ഡയറക്‌ടറി. അത് കൃത്യമായി അല്ല
ഡിഫോൾട്ടായി പ്രീപ്രൊസസ്സർ ചെയ്യുന്നത് പോലെ തന്നെ, പക്ഷേ അത് പലപ്പോഴും തൃപ്തികരമാണ്.

-ഞാൻ- ഹെഡ്ഡർ ഫയലുകൾക്കായുള്ള സ്റ്റാൻഡേർഡ് സിസ്റ്റം ഡയറക്ടറികളുടെ ഉപയോഗം തടയുന്നില്ല.
അങ്ങനെ, -ഞാൻ- ഒപ്പം -nostdinc സ്വതന്ത്രരാണ്.

വ്യക്തമാക്കുന്നത് ടാർഗെറ്റ് മെഷീൻ ഒപ്പം കംപൈലർ പതിപ്പ്
ജിസിസി പ്രവർത്തിപ്പിക്കുന്നതിനുള്ള സാധാരണ മാർഗം എക്സിക്യൂട്ടബിൾ എന്ന് വിളിക്കുന്നതാണ് ജിസി, അഥവാ മെഷീൻ-ജിസിസി കടക്കുമ്പോൾ-
കംപൈലിംഗ്, അല്ലെങ്കിൽ മെഷീൻ-gcc-പതിപ്പ് ഇൻസ്റ്റാൾ ചെയ്ത പതിപ്പ് ഒഴികെയുള്ള ഒരു പതിപ്പ് പ്രവർത്തിപ്പിക്കാൻ
അവസാനത്തെ.

ഹാർഡ്വെയർ മോഡലുകൾ ഒപ്പം കോൺഫിഗറേഷൻ
ഓരോ ടാർഗെറ്റ് മെഷീൻ തരങ്ങൾക്കും അതിന്റേതായ പ്രത്യേക ഓപ്ഷനുകൾ ഉണ്ടായിരിക്കാം, തുടങ്ങി -m, തിരഞ്ഞെടുക്കാൻ
വിവിധ ഹാർഡ്‌വെയർ മോഡലുകൾ അല്ലെങ്കിൽ കോൺഫിഗറേഷനുകൾക്കിടയിൽ---ഉദാഹരണത്തിന്, 68010 vs 68020, ഫ്ലോട്ടിംഗ്
കോപ്രോസസർ അല്ലെങ്കിൽ ഒന്നുമില്ല. കംപൈലറിന്റെ ഒരൊറ്റ ഇൻസ്റ്റാൾ ചെയ്ത പതിപ്പിന് ഏത് മോഡലിനും കംപൈൽ ചെയ്യാൻ കഴിയും
അല്ലെങ്കിൽ കോൺഫിഗറേഷൻ, വ്യക്തമാക്കിയ ഓപ്ഷനുകൾ അനുസരിച്ച്.

കംപൈലറിന്റെ ചില കോൺഫിഗറേഷനുകൾ അധിക പ്രത്യേക ഓപ്ഷനുകളെ പിന്തുണയ്ക്കുന്നു, സാധാരണയായി
ഒരേ പ്ലാറ്റ്‌ഫോമിലെ മറ്റ് കമ്പൈലറുകളുമായുള്ള അനുയോജ്യത.

AAArch64 ഓപ്ഷനുകൾ

AArch64 നടപ്പിലാക്കലുകൾക്കായി ഈ ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mabi=പേര്
നിർദ്ദിഷ്ട ഡാറ്റ മോഡലിന് കോഡ് സൃഷ്ടിക്കുക. അനുവദനീയമായ മൂല്യങ്ങളാണ് ilp32 SysV-യ്‌ക്ക്-
int, long int, pointer എന്നിവ 32-ബിറ്റ് ആയ ഡാറ്റ മോഡൽ പോലെ lp64 SysV പോലെയുള്ളവയ്ക്ക്
int 32-ബിറ്റ് ആണെങ്കിലും ദൈർഘ്യമേറിയ int ഉം പോയിന്ററും 64-ബിറ്റ് ആയ ഡാറ്റ മോഡൽ.

സ്ഥിരസ്ഥിതി നിർദ്ദിഷ്ട ടാർഗെറ്റ് കോൺഫിഗറേഷനെ ആശ്രയിച്ചിരിക്കുന്നു. LP64 ഉം
ILP32 ABI-കൾ ലിങ്ക്-അനുയോജ്യമല്ല; നിങ്ങളുടെ മുഴുവൻ പ്രോഗ്രാമും ഇതുമായി കംപൈൽ ചെയ്യണം
ABI, ഒപ്പം അനുയോജ്യമായ ലൈബ്രറികളുമായുള്ള ലിങ്ക്.

-mbig-endian
ബിഗ്-എൻഡിയൻ കോഡ് സൃഷ്ടിക്കുക. ഒരു ജിസിസി കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇതാണ് ഡിഫോൾട്ട്
aarch64_be-*-* ലക്ഷ്യം.

-mgeneral-regs-മാത്രം
പൊതുവായ രജിസ്റ്ററുകൾ മാത്രം ഉപയോഗിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക.

-mlittle-endian
ലിറ്റിൽ-എൻഡിയൻ കോഡ് സൃഷ്ടിക്കുക. ഒരു ജിസിസി കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇതാണ് ഡിഫോൾട്ട്
aarch64-*-* അല്ലാതെ ഒരു അല്ല aarch64_be-*-* ലക്ഷ്യം.

-mcmodel=ചെറിയ
ചെറിയ കോഡ് മോഡലിനായി കോഡ് സൃഷ്ടിക്കുക. പ്രോഗ്രാമും അതിന്റെ സ്ഥിരമായി നിർവചിക്കപ്പെട്ട ചിഹ്നങ്ങളും
പരസ്പരം 1GB ഉള്ളിലായിരിക്കണം. പോയിന്ററുകൾ 64 ബിറ്റുകളാണ്. പ്രോഗ്രാമുകൾ നിശ്ചലമാകാം
അല്ലെങ്കിൽ ചലനാത്മകമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു. ഈ മോഡൽ പൂർണ്ണമായി നടപ്പിലാക്കിയിട്ടില്ല, കൂടുതലും പരിഗണിക്കപ്പെടുന്നു
ചെറിയ.

-mcmodel=ചെറിയത്
ചെറിയ കോഡ് മോഡലിന് കോഡ് സൃഷ്ടിക്കുക. പ്രോഗ്രാമും അതിന്റെ സ്ഥിരമായി നിർവചിച്ചതും
ചിഹ്നങ്ങൾ പരസ്പരം 4GB ഉള്ളിലായിരിക്കണം. പോയിന്ററുകൾ 64 ബിറ്റുകളാണ്. പ്രോഗ്രാമുകൾ ആകാം
സ്ഥിരമായി അല്ലെങ്കിൽ ചലനാത്മകമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു. ഇതാണ് ഡിഫോൾട്ട് കോഡ് മോഡൽ.

-mcmodel=വലുത്
വലിയ കോഡ് മോഡലിനായി കോഡ് സൃഷ്ടിക്കുക. ഇത് വിലാസങ്ങളെക്കുറിച്ചും മറ്റും അനുമാനങ്ങളൊന്നും ഉണ്ടാക്കുന്നില്ല
വിഭാഗങ്ങളുടെ വലുപ്പങ്ങൾ. പോയിന്ററുകൾ 64 ബിറ്റുകളാണ്. പ്രോഗ്രാമുകൾ സ്ഥിരമായി ലിങ്ക് ചെയ്യാൻ മാത്രമേ കഴിയൂ.

-mstrict-align
വിന്യസിക്കാത്ത മെമ്മറി റഫറൻസുകൾ സിസ്റ്റം കൈകാര്യം ചെയ്യുന്നുവെന്ന് കരുതരുത്.

-മോമിറ്റ്-ലീഫ്-ഫ്രെയിം-പോയിന്റർ
-mno-ഒമിറ്റ്-ലീഫ്-ഫ്രെയിം-പോയിന്റർ
ലീഫ് ഫംഗ്‌ഷനുകളിൽ ഫ്രെയിം പോയിന്റർ ഒഴിവാക്കുക അല്ലെങ്കിൽ സൂക്ഷിക്കുക. മുമ്പത്തെ പെരുമാറ്റം
സ്ഥിരസ്ഥിതിയായി.

-mtls-dialect=desc
TLS-ന്റെ ഡൈനാമിക് ആക്‌സസ്സുകൾക്കായുള്ള ത്രെഡ്-ലോക്കൽ സ്റ്റോറേജ് മെക്കാനിസമായി TLS ഡിസ്ക്രിപ്റ്ററുകൾ ഉപയോഗിക്കുക
വേരിയബിളുകൾ. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mtls-dialect=പരമ്പരാഗത
TLS-ന്റെ ഡൈനാമിക് ആക്‌സസ്സുകൾക്കായുള്ള ത്രെഡ്-ലോക്കൽ സ്റ്റോറേജ് മെക്കാനിസമായി പരമ്പരാഗത TLS ഉപയോഗിക്കുക
വേരിയബിളുകൾ.

-mfix-cortex-a53-835769
-mno-fix-cortex-a53-835769
ARM Cortex-A53 എറാറ്റം നമ്പർ 835769 എന്നതിനായുള്ള പരിഹാരം പ്രവർത്തനക്ഷമമാക്കുക അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുക.
മെമ്മറി നിർദ്ദേശങ്ങൾക്കും 64-ബിറ്റ് പൂർണ്ണസംഖ്യയ്ക്കും ഇടയിൽ ഒരു NOP നിർദ്ദേശം ചേർക്കുന്നത് ഉൾപ്പെടുന്നു
നിർദ്ദേശങ്ങൾ വർദ്ധിപ്പിക്കുക.

-mfix-cortex-a53-843419
-mno-fix-cortex-a53-843419
ARM Cortex-A53 എറാറ്റം നമ്പർ 843419 എന്നതിനായുള്ള പരിഹാരം പ്രവർത്തനക്ഷമമാക്കുക അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുക.
ലിങ്ക് സമയത്താണ് പിശക് പരിഹാരമുണ്ടാക്കുന്നത്, ഇത് അനുബന്ധ ഫ്ലാഗ് മാത്രമേ കൈമാറുകയുള്ളൂ
ലിങ്കറിലേക്ക്.

-മാർച്ച്=പേര്
ടാർഗെറ്റ് ആർക്കിടെക്ചറിന്റെ പേര് വ്യക്തമാക്കുക, ഓപ്ഷണലായി ഒന്നോ അതിലധികമോ പ്രത്യയങ്ങൾ നൽകുക
ഫീച്ചർ മോഡിഫയറുകൾ. ഈ ഓപ്ഷന് ഫോം ഉണ്ട് -മാർച്ച്=കമാനം{+[ഇല്ല]സവിശേഷത}*, എവിടെ
എന്നതിന് അനുവദനീയമായ മൂല്യം മാത്രം കമാനം is armv8-a. അനുവദനീയമായ മൂല്യങ്ങൾ സവിശേഷത ആകുന്നു
ചുവടെയുള്ള ഉപവിഭാഗത്തിൽ രേഖപ്പെടുത്തിയിട്ടുണ്ട്.

വൈരുദ്ധ്യമുള്ള ഫീച്ചർ മോഡിഫയറുകൾ വ്യക്തമാക്കുന്നിടത്ത്, ഏറ്റവും വലത് ഫീച്ചറാണ് ഉപയോഗിക്കുന്നത്.

സൃഷ്ടിക്കുമ്പോൾ ഏത് തരത്തിലുള്ള നിർദ്ദേശങ്ങൾ പുറപ്പെടുവിക്കാൻ കഴിയുമെന്ന് നിർണ്ണയിക്കാൻ GCC ഈ പേര് ഉപയോഗിക്കുന്നു
അസംബ്ലി കോഡ്.

എവിടെ - മാർച്ച് ഇവ രണ്ടും ഇല്ലാതെ വ്യക്തമാക്കിയിരിക്കുന്നു -mtune or -എംസിപിയു കൂടാതെ വ്യക്തമാക്കിയിരിക്കുന്നു, the
നടപ്പിലാക്കുന്ന ടാർഗെറ്റ് പ്രോസസറുകളിൽ ഉടനീളം മികച്ച പ്രകടനം നടത്താൻ കോഡ് ട്യൂൺ ചെയ്തിട്ടുണ്ട്
ലക്ഷ്യ വാസ്തുവിദ്യ.

-mtune=പേര്
GCC പ്രകടനം ട്യൂൺ ചെയ്യേണ്ട ടാർഗെറ്റ് പ്രൊസസറിന്റെ പേര് വ്യക്തമാക്കുക
കോഡ്. ഈ ഓപ്ഷന്റെ അനുവദനീയമായ മൂല്യങ്ങൾ ഇവയാണ്: ജനറിക്, കോർട്ടെക്സ്-എ 53, കോർട്ടെക്സ്-എ 57,
കോർട്ടെക്സ്-എ 72, എക്സിനോസ്-എം1, ഇടിമുഴക്കം, xgene1.

കൂടാതെ, ഈ ഓപ്‌ഷന് GCC കോഡിന്റെ പ്രകടനം ട്യൂൺ ചെയ്യണമെന്ന് വ്യക്തമാക്കാൻ കഴിയും
ഒരു വലിയ ചെറിയ സംവിധാനത്തിനായി. ഈ ഓപ്ഷന്റെ അനുവദനീയമായ മൂല്യങ്ങൾ ഇവയാണ്:
cortex-a57.cortex-a53, cortex-a72.cortex-a53.

ഒന്നുമില്ലാത്തിടത്ത് -mtune=, -mcpu= or -മാർച്ച്= വ്യക്തമാക്കിയിരിക്കുന്നു, കോഡ് നടപ്പിലാക്കുന്നതിനായി ട്യൂൺ ചെയ്‌തിരിക്കുന്നു
ടാർഗെറ്റ് പ്രോസസ്സറുകളുടെ ഒരു ശ്രേണിയിലുടനീളം.

ഫീച്ചർ മോഡിഫയറുകൾക്ക് ഈ ഓപ്‌ഷൻ സഫിക്‌സ് ചെയ്യാൻ കഴിയില്ല.

-mcpu=പേര്
ടാർഗെറ്റ് പ്രോസസറിന്റെ പേര് വ്യക്തമാക്കുക, ഓപ്ഷണലായി ഒന്നോ അതിലധികമോ ഫീച്ചറുകൾ ഉപയോഗിച്ച് സഫിക്സ് ചെയ്യുക
മോഡിഫയറുകൾ. ഈ ഓപ്ഷന് ഫോം ഉണ്ട് -mcpu=സിപിയു{+[ഇല്ല]സവിശേഷത}*, അനുവദനീയമായിടത്ത്
മൂല്യങ്ങൾ സിപിയു ലഭ്യമായവയ്ക്ക് സമാനമാണ് -mtune.

അനുവദനീയമായ മൂല്യങ്ങൾ സവിശേഷത ചുവടെയുള്ള ഉപവിഭാഗത്തിൽ രേഖപ്പെടുത്തിയിട്ടുണ്ട്.

വൈരുദ്ധ്യമുള്ള ഫീച്ചർ മോഡിഫയറുകൾ വ്യക്തമാക്കുന്നിടത്ത്, ഏറ്റവും വലത് ഫീച്ചറാണ് ഉപയോഗിക്കുന്നത്.

സൃഷ്ടിക്കുമ്പോൾ ഏത് തരത്തിലുള്ള നിർദ്ദേശങ്ങൾ പുറപ്പെടുവിക്കാൻ കഴിയുമെന്ന് നിർണ്ണയിക്കാൻ GCC ഈ പേര് ഉപയോഗിക്കുന്നു
അസംബ്ലി കോഡ് (അതുപോലെ - മാർച്ച്) കൂടാതെ ടാർഗെറ്റ് പ്രോസസർ നിർണ്ണയിക്കാൻ
പ്രകടനത്തിനായി ട്യൂൺ ചെയ്യുക (അതുപോലെ -mtune). ഈ ഓപ്‌ഷൻ എവിടെയാണ് ഉപയോഗിച്ചിരിക്കുന്നത്
- മാർച്ച് or -mtune, ആ ഓപ്ഷനുകൾ ഇതിന്റെ ഉചിതമായ ഭാഗത്തെക്കാൾ മുൻഗണന നൽകുന്നു
ഓപ്ഷൻ.

- മാർച്ച് ഒപ്പം -എംസിപിയു ഫീച്ചർ മോഡിഫയറുകൾ

കൂടെ ഉപയോഗിച്ച ഫീച്ചർ മോഡിഫയറുകൾ - മാർച്ച് ഒപ്പം -എംസിപിയു ഇനിപ്പറയുന്നവയിൽ ഒന്നാകാം:

crc CRC വിപുലീകരണം പ്രവർത്തനക്ഷമമാക്കുക.

ക്രിപ്റ്റോ
ക്രിപ്‌റ്റോ വിപുലീകരണം പ്രവർത്തനക്ഷമമാക്കുക. വിപുലമായ SIMD പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെന്ന് ഇത് സൂചിപ്പിക്കുന്നു.

fp ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക.

simd
വിപുലമായ SIMD നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക. ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങളെ ഇത് സൂചിപ്പിക്കുന്നു
പ്രവർത്തനക്ഷമമാക്കി. ഓപ്‌ഷനുകൾക്കായുള്ള നിലവിലെ സാധ്യമായ എല്ലാ മൂല്യങ്ങൾക്കും ഇത് ഡിഫോൾട്ടാണ് - മാർച്ച് ഒപ്പം
-mcpu=.

അഡാപ്റ്റേവ എപ്പിഫാനി ഓപ്ഷനുകൾ

ഇവ -m അഡാപ്റ്റേവ എപ്പിഫാനിക്കുള്ള ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mhalf-reg-file
"r32"..."r63" ശ്രേണിയിൽ ഒരു രജിസ്റ്ററും അനുവദിക്കരുത്. അത് കോഡ് പ്രവർത്തിപ്പിക്കാൻ അനുവദിക്കുന്നു
ഈ രജിസ്റ്ററുകൾ ഇല്ലാത്ത ഹാർഡ്‌വെയർ വേരിയന്റുകൾ.

-mprefer-short-insn-regs
ഹ്രസ്വ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കാൻ അനുവദിക്കുന്ന രജിസ്റ്ററുകൾ മുൻഗണനാക്രമത്തിൽ അനുവദിക്കുക. ഇതിന് കഴിയും
ഇത് നിർദ്ദേശങ്ങളുടെ എണ്ണം വർദ്ധിപ്പിക്കുന്നതിന് കാരണമാകുന്നു, അതിനാൽ ഇത് മൊത്തത്തിൽ കുറയ്ക്കുകയോ വർദ്ധിപ്പിക്കുകയോ ചെയ്യാം
കോഡ് വലിപ്പം.

-mbranch-cost=സംഖ്യ
ശാഖകളുടെ വില ഏകദേശം സജ്ജമാക്കുക സംഖ്യ "ലളിതമായ" നിർദ്ദേശങ്ങൾ. ഈ ചെലവ് ഒരു മാത്രം
ഹ്യൂറിസ്റ്റിക്, റിലീസുകളിലുടനീളം സ്ഥിരമായ ഫലങ്ങൾ നൽകുമെന്ന് ഉറപ്പില്ല.

-mcmove
സോപാധികമായ നീക്കങ്ങളുടെ ജനറേഷൻ പ്രവർത്തനക്ഷമമാക്കുക.

-mnops=സംഖ്യ
സ്രവിക്കുന്ന സംഖ്യ മറ്റെല്ലാ നിർദ്ദേശങ്ങൾക്കും മുമ്പുള്ള NOP-കൾ.

-mno-soft-cmpsf
സിംഗിൾ പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റ് താരതമ്യങ്ങൾക്കായി, ഒരു "fsub" നിർദ്ദേശവും പരിശോധനയും പുറപ്പെടുവിക്കുക
പതാകകൾ. ഇത് ഒരു സോഫ്‌റ്റ്‌വെയർ താരതമ്യത്തേക്കാൾ വേഗതയുള്ളതാണ്, പക്ഷേ തെറ്റായ ഫലങ്ങൾ ലഭിക്കും
NaN കളുടെ സാന്നിധ്യത്തിൽ, അല്ലെങ്കിൽ രണ്ട് വ്യത്യസ്ത ചെറിയ സംഖ്യകൾ താരതമ്യം ചെയ്യുമ്പോൾ
അവയുടെ വ്യത്യാസം പൂജ്യമായി കണക്കാക്കുന്നു. സ്ഥിരസ്ഥിതിയാണ് -msoft-cmpsfഉപയോഗിക്കുന്നത്
സാവധാനം, എന്നാൽ IEEE-അനുയോജ്യമായ, സോഫ്റ്റ്‌വെയർ താരതമ്യങ്ങൾ.

-mstack-offset=സംഖ്യ
സ്റ്റാക്കിന്റെ മുകൾ ഭാഗത്തിനും സ്റ്റാക്ക് പോയിന്ററിനും ഇടയിൽ ഓഫ്സെറ്റ് സജ്ജമാക്കുക. ഉദാ, 8 ന്റെ മൂല്യം
"sp+0...sp+7" ശ്രേണിയിലെ എട്ട് ബൈറ്റുകൾ ലീഫ് ഫംഗ്‌ഷനുകൾക്ക് ഉപയോഗിക്കാമെന്നാണ് അർത്ഥമാക്കുന്നത്
സ്റ്റാക്ക് അലോക്കേഷൻ ഇല്ലാതെ. അല്ലാതെയുള്ള മൂല്യങ്ങൾ 8 or 16 പരീക്ഷിക്കപ്പെടാത്തതും സാധ്യതയുള്ളതുമാണ്
ജോലി. ഈ ഓപ്ഷൻ എബിഐയെ മാറ്റുന്നുവെന്നതും ശ്രദ്ധിക്കുക; a ഉപയോഗിച്ച് ഒരു പ്രോഗ്രാം കംപൈൽ ചെയ്യുന്നു
ലൈബ്രറികൾ കംപൈൽ ചെയ്തതിൽ നിന്ന് വ്യത്യസ്തമായ സ്റ്റാക്ക് ഓഫ്‌സെറ്റ് സാധാരണയായി ചെയ്യാറില്ല
ജോലി. മറ്റൊരു സ്റ്റാക്ക് ഓഫ്‌സെറ്റ് ആണോ എന്ന് നിങ്ങൾക്ക് വിലയിരുത്തണമെങ്കിൽ ഈ ഓപ്ഷൻ ഉപയോഗപ്രദമാകും
നിങ്ങൾക്ക് മികച്ച കോഡ് നൽകും, എന്നാൽ യഥാർത്ഥത്തിൽ നിർമ്മിക്കുന്നതിന് മറ്റൊരു സ്റ്റാക്ക് ഓഫ്‌സെറ്റ് ഉപയോഗിക്കുന്നതിന്
വർക്കിംഗ് പ്രോഗ്രാമുകൾ, ടൂൾചെയിൻ ഉചിതമായ രീതിയിൽ ക്രമീകരിക്കാൻ ശുപാർശ ചെയ്യുന്നു
--with-stack-offset=സംഖ്യ ഓപ്ഷൻ.

-mno-round-nearest
റൌണ്ടിംഗ് മോഡ് വെട്ടിച്ചുരുക്കുന്നതിന് സജ്ജമാക്കിയതായി ഷെഡ്യൂളറെ അനുമാനിക്കുക. ദി
സ്ഥിരസ്ഥിതിയാണ് -mround-സമീപം.

-mlong-കോളുകൾ
ഒരു ആട്രിബ്യൂട്ട് മുഖേന മറ്റുവിധത്തിൽ വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, എല്ലാ കോളുകളും അതിനപ്പുറമാണെന്ന് കരുതുക
"b" / "bl" നിർദ്ദേശങ്ങളുടെ പരിധി ഓഫ്‌സെറ്റ് ചെയ്യുക, അതിനാൽ ഫംഗ്‌ഷൻ വിലാസം ലോഡ് ചെയ്യുക
ഒരു (അല്ലെങ്കിൽ നേരിട്ടുള്ള) കോൾ ചെയ്യുന്നതിന് മുമ്പ് ഒരു രജിസ്റ്ററിലേക്ക്. ഇതാണ് സ്ഥിരസ്ഥിതി.

- ഹ്രസ്വ കോളുകൾ
ഒരു ആട്രിബ്യൂട്ട് വഴി വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, എല്ലാ നേരിട്ടുള്ള കോളുകളും പരിധിയിലാണെന്ന് കരുതുക
"b" / "bl" നിർദ്ദേശങ്ങളുടെ, അതിനാൽ നേരിട്ടുള്ള കോളുകൾക്ക് ഈ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക. ദി
സ്ഥിരസ്ഥിതിയാണ് -mlong-കോളുകൾ.

-msmall16
വിലാസങ്ങൾ 16-ബിറ്റ് ഒപ്പിടാത്ത മൂല്യങ്ങളായി ലോഡ് ചെയ്യാൻ കഴിയുമെന്ന് കരുതുക. ഇത് ബാധകമല്ല
ഫംഗ്ഷൻ വിലാസങ്ങൾ -mlong-കോളുകൾ അർത്ഥശാസ്ത്രം പ്രാബല്യത്തിൽ ഉണ്ട്.

-mfp-mode=മോഡ്
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റിന്റെ നിലവിലുള്ള മോഡ് സജ്ജമാക്കുക. ഇത് ഫ്ലോട്ടിംഗ് നിർണ്ണയിക്കുന്നു-
ഫംഗ്‌ഷൻ കോളിലും റിട്ടേൺ സമയത്തും നൽകുകയും പ്രതീക്ഷിക്കുകയും ചെയ്യുന്ന പോയിന്റ് മോഡ്. നിർമ്മാണം
ഈ മോഡ് ഫംഗ്‌ഷൻ ആരംഭത്തിൽ നിങ്ങൾക്ക് പ്രധാനമായും ആവശ്യമുള്ള മോഡുമായി പൊരുത്തപ്പെടുന്നു
അനാവശ്യ മോഡ് സ്വിച്ചുകൾ ഒഴിവാക്കിക്കൊണ്ട് പ്രോഗ്രാമുകൾ ചെറുതും വേഗമേറിയതുമാണ്.

മോഡ് ഇനിപ്പറയുന്ന മൂല്യങ്ങളിൽ ഒന്നായി സജ്ജമാക്കാൻ കഴിയും:

വിളിക്കുന്നയാൾ
ഫംഗ്‌ഷൻ എൻട്രിയിലെ ഏത് മോഡും സാധുവാണ്, കൂടാതെ ഫംഗ്‌ഷൻ ആയിരിക്കുമ്പോൾ നിലനിർത്തുകയോ പുനഃസ്ഥാപിക്കുകയോ ചെയ്യും
റിട്ടേൺസ്, അത് മറ്റ് ഫംഗ്ഷനുകൾ വിളിക്കുമ്പോൾ. കംപൈൽ ചെയ്യുന്നതിന് ഈ മോഡ് ഉപയോഗപ്രദമാണ്
ലൈബ്രറികൾ അല്ലെങ്കിൽ മറ്റ് കംപൈലേഷൻ യൂണിറ്റുകൾ നിങ്ങൾ വ്യത്യസ്തമായി സംയോജിപ്പിക്കാൻ ആഗ്രഹിച്ചേക്കാം
നിലവിലുള്ള വ്യത്യസ്‌ത എഫ്‌പിയു മോഡുകളുള്ള പ്രോഗ്രാമുകളും, അതിനുള്ള സൗകര്യവും
ഒരു ഒബ്‌ജക്റ്റ് ഫയൽ ഉപയോഗിക്കുക, ഏത് അധിക മോഡിനും ഓവർഹെഡിന്റെ വലുപ്പത്തെയും വേഗതയെയും മറികടക്കുന്നു
കൂടുതൽ ആവശ്യമായി വരുന്നതുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ ആവശ്യമായി വന്നേക്കാവുന്ന സ്വിച്ചിംഗ്
നിലവിലുള്ള FPU മോഡിന്റെ പ്രത്യേക തിരഞ്ഞെടുപ്പ്.

വെട്ടിച്ചുരുക്കുക
വെട്ടിച്ചുരുക്കലോടുകൂടിയ ഫ്ലോട്ടിംഗ് പോയിന്റ് കണക്കുകൂട്ടലുകൾക്കായി ഉപയോഗിക്കുന്ന മോഡാണിത് (അതായത് റൗണ്ട്
പൂജ്യത്തിലേക്ക്) റൗണ്ടിംഗ് മോഡ്. അതിൽ ഫ്ലോട്ടിംഗ് പോയിന്റിൽ നിന്ന് പരിവർത്തനം ഉൾപ്പെടുന്നു
പൂർണ്ണസംഖ്യ.

ചുറ്റും-അടുത്തത്
റൗണ്ട്-ടു-അടുത്തത്-അല്ലെങ്കിൽ- വരെയുള്ള ഫ്ലോട്ടിംഗ് പോയിന്റ് കണക്കുകൂട്ടലുകൾക്ക് ഉപയോഗിക്കുന്ന മോഡാണിത്.
റൗണ്ടിംഗ് മോഡ് പോലും.

int എഫ്പിയുവിൽ പൂർണ്ണസംഖ്യ കണക്കുകൂട്ടലുകൾ നടത്താൻ ഉപയോഗിക്കുന്ന മോഡാണിത്, ഉദാ പൂർണ്ണസംഖ്യ
ഗുണിക്കുക, അല്ലെങ്കിൽ പൂർണ്ണസംഖ്യ ഗുണിക്കുകയും ശേഖരിക്കുകയും ചെയ്യുക.

സ്ഥിരസ്ഥിതി -mfp-mode=കോളർ

-mnosplit-lohi
-mno-postinc
-mno-postmodify
യഥാക്രമം 32-ബിറ്റ് ലോഡുകളുടെ വിഭജനം പ്രവർത്തനരഹിതമാക്കുന്ന കോഡ് ജനറേഷൻ ട്വീക്കുകൾ,
പോസ്റ്റ്-ഇൻക്രിമെന്റ് വിലാസങ്ങളുടെ ജനറേഷൻ, പോസ്റ്റ്-മോഡിഫൈഡ് വിലാസങ്ങളുടെ ജനറേഷൻ. ദി
സ്ഥിരസ്ഥിതിയാണ് msplit-lohi, -mpost-inc, ഒപ്പം -post-modify.

-mnovect-ഇരട്ട
തിരഞ്ഞെടുത്ത SIMD മോഡ് SImode-ലേക്ക് മാറ്റുക. സ്ഥിരസ്ഥിതിയാണ് -mvect-ഇരട്ടഉപയോഗിക്കുന്നത്
ഇഷ്ടപ്പെട്ട SIMD മോഡായി DImode.

-max-vect-align=സംഖ്യ
SIMD വെക്റ്റർ മോഡ് തരങ്ങൾക്കുള്ള പരമാവധി വിന്യാസം. സംഖ്യ 4 അല്ലെങ്കിൽ 8 ആയിരിക്കാം. സ്ഥിരസ്ഥിതി
8. നിരവധി ലൈബ്രറി ഫംഗ്‌ഷൻ ഇന്റർഫേസുകൾ ഉണ്ടെങ്കിലും ഇതൊരു എബിഐ മാറ്റമാണെന്ന കാര്യം ശ്രദ്ധിക്കുക
വലിപ്പം കൂടാതെ/അല്ലെങ്കിൽ അവരെ ബാധിക്കുന്ന സ്ഥലങ്ങളിൽ SIMD വെക്റ്റർ മോഡുകൾ ഉപയോഗിക്കുന്നില്ലെങ്കിൽ ബാധിക്കില്ല
പ്രസക്തമായ തരങ്ങളുടെ വിന്യാസം.

-msplit-vecmove-നേരത്തേ
വീണ്ടും ലോഡുചെയ്യുന്നതിന് മുമ്പ് സ്പ്ലിറ്റ് വെക്റ്റർ ഒറ്റവാക്കിലേക്ക് നീങ്ങുന്നു. സിദ്ധാന്തത്തിൽ ഇത് നൽകാൻ കഴിയും
മെച്ചപ്പെട്ട രജിസ്റ്റർ അലോക്കേഷൻ, എന്നാൽ ഇതുവരെ തിരിച്ചാണ് പൊതുവെ കേസ് തോന്നുന്നു.

-m1reg-reg
സ്ഥിരമായ -1 ഹോൾഡ് ചെയ്യാൻ ഒരു രജിസ്റ്റർ വ്യക്തമാക്കുക, ഇത് ലോഡ് ചെയ്യുന്നത് ചെറിയ നെഗറ്റീവ് ആക്കുന്നു
സ്ഥിരാങ്കങ്ങളും ചില ബിറ്റ്മാസ്കുകളും വേഗത്തിൽ. ഇതിനായി അനുവദനീയമായ മൂല്യങ്ങൾ reg ആകുന്നു r43 ഒപ്പം r63,
ഒരു നിശ്ചിത രജിസ്റ്ററായി ആ രജിസ്റ്ററിന്റെ ഉപയോഗം വ്യക്തമാക്കുന്നു, കൂടാതെ ആരും, ഇല്ല എന്നാണ്
ഇതിനായി രജിസ്റ്റർ ഉപയോഗിക്കുന്നു. സ്ഥിരസ്ഥിതിയാണ് -m1reg-ഒന്നുമില്ല.

ARC ഓപ്ഷനുകൾ

ഏത് കോഡാണ് കംപൈൽ ചെയ്യുന്ന ആർക്കിടെക്ചർ വേരിയന്റിനെ ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ നിയന്ത്രിക്കുന്നത്:

-mbarrel-shifter
ബാരൽ ഷിഫ്റ്റർ പിന്തുണയ്ക്കുന്ന നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക. അല്ലാതെ ഇതാണ് സ്ഥിരസ്ഥിതി
-mcpu=ARC601 പ്രാബല്യത്തിൽ ഉണ്ട്.

-mcpu=സിപിയു
ആർക്കിടെക്ചർ തരം, രജിസ്റ്റർ ഉപയോഗം, നിർദ്ദേശ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ എന്നിവ സജ്ജമാക്കുക സിപിയു.
ബാക്ക്‌വേർഡ് കോംപാറ്റിബിളിറ്റിക്ക് കുറുക്കുവഴി അപരനാമ ഓപ്ഷനുകളും ലഭ്യമാണ്
സൗകര്യം. പിന്തുണയ്ക്കുന്ന മൂല്യങ്ങൾ സിപിയു ആകുന്നു

ARC600
ARC600-നായി കംപൈൽ ചെയ്യുക. അപരനാമങ്ങൾ: -mA6, -mARC600.

ARC601
ARC601-നായി കംപൈൽ ചെയ്യുക. അപരനാമം: -mARC601.

ARC700
ARC700-നായി കംപൈൽ ചെയ്യുക. അപരനാമങ്ങൾ: -mA7, -mARC700. കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇതാണ് സ്ഥിരസ്ഥിതി
കൂടെ --with-cpu=arc700.

-mdpfp
-mdpfp-compact
FPX: കോം‌പാക്റ്റ് നടപ്പിലാക്കുന്നതിനായി ട്യൂൺ ചെയ്‌ത ഇരട്ട പ്രിസിഷൻ FPX നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

-mdpfp-വേഗത
FPX: വേഗത്തിലുള്ള നടപ്പാക്കലിനായി ട്യൂൺ ചെയ്‌ത ഇരട്ട പ്രിസിഷൻ FPX നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

-mno-dpfp-lrsr
FPX എക്സ്റ്റൻഷൻ ഓക്സ് രജിസ്റ്ററുകൾ ഉപയോഗിക്കുന്നതിൽ നിന്ന് LR, SR നിർദ്ദേശങ്ങൾ പ്രവർത്തനരഹിതമാക്കുക.

-mea
വിപുലീകൃത ഗണിത നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക. നിലവിൽ "divaw", "adds", "subs",
"sat16" എന്നിവ പിന്തുണയ്ക്കുന്നു. ഇത് എല്ലായ്പ്പോഴും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -mcpu=ARC700.

-mno-mpy
ARC700-ന് വേണ്ടി mpy നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കരുത്.

-mmul32x16
32x16 ബിറ്റ് ഗുണനവും മാക് നിർദ്ദേശങ്ങളും സൃഷ്ടിക്കുക.

-mmul64
mul64, mulu64 നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക. എന്നതിന് മാത്രം സാധുതയുള്ളതാണ് -mcpu=ARC600.

-mnorm
മാനദണ്ഡ നിർദ്ദേശം സൃഷ്ടിക്കുക. എങ്കിൽ ഇതാണ് സ്ഥിരസ്ഥിതി -mcpu=ARC700 പ്രാബല്യത്തിൽ ഉണ്ട്.

-mspfp
-mspfp-compact
FPX: കോം‌പാക്റ്റ് നടപ്പിലാക്കുന്നതിനായി ട്യൂൺ ചെയ്‌ത സിംഗിൾ പ്രിസിഷൻ FPX നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

-mspfp-വേഗത
FPX: വേഗത്തിലുള്ള നടപ്പാക്കലിനായി ട്യൂൺ ചെയ്‌ത സിംഗിൾ പ്രിസിഷൻ FPX നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

-msimd
ടാർഗെറ്റ്-നിർദ്ദിഷ്ട ബിൽഡിനുകൾ വഴി ARC SIMD നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക. സാധുത മാത്രം
വേണ്ടി -mcpu=ARC700.

-msoft-float
ഈ ഓപ്ഷൻ അവഗണിച്ചു; ഇത് അനുയോജ്യത ആവശ്യങ്ങൾക്കായി മാത്രമാണ് നൽകിയിരിക്കുന്നത്. സോഫ്റ്റ്വെയർ
ഫ്ലോട്ടിംഗ് പോയിന്റ് കോഡ് ഡിഫോൾട്ടായി പുറത്തുവിടുന്നു, ഈ ഡിഫോൾട്ട് FPX-ന് അസാധുവാക്കാം
ഓപ്ഷനുകൾ; mspfp, mspfp-compact, അഥവാ mspfp-വേഗത ഒറ്റ കൃത്യതയ്ക്കായി, ഒപ്പം mdpfp, mdpfp-
ഒതുക്കമുള്ള, അഥവാ mdpfp-വേഗത ഇരട്ട കൃത്യതയ്ക്കായി.

-mswap
സ്വാപ്പ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ അസംബ്ലറിലേക്ക് കൈമാറുന്നു, കൂടാതെ പ്രീപ്രൊസസ്സർ നിർവ്വചിക്കുകയും ചെയ്യുന്നു
മാക്രോ ചിഹ്നങ്ങൾ.

-mdsp-packa
ഡിഎസ്പി പാക്ക് എ എക്സ്റ്റൻഷനുകൾ പ്രവർത്തനക്ഷമമാക്കാൻ അസംബ്ലറിന് കൈമാറി. എന്നിവയും സജ്ജമാക്കുന്നു
പ്രീപ്രോസസർ ചിഹ്നം "__Xdsp_packa".

-mdvbf
ഡ്യുവൽ വിറ്റെർബി ബട്ടർഫ്ലൈ വിപുലീകരണം പ്രവർത്തനക്ഷമമാക്കാൻ അസംബ്ലറിലേക്ക് കൈമാറി. കൂടാതെ
"__Xdvbf" എന്ന പ്രീപ്രൊസസ്സർ ചിഹ്നം സജ്ജമാക്കുന്നു.

-mlock
ലോക്ക് ചെയ്‌ത ലോഡ്/സ്റ്റോർ സോപാധിക വിപുലീകരണം പ്രവർത്തനക്ഷമമാക്കാൻ അസംബ്ലറിന് കൈമാറി.
"__Xlock" എന്ന പ്രീപ്രൊസസ്സർ ചിഹ്നവും സജ്ജമാക്കുന്നു.

-mmac-d16
അസംബ്ലർക്ക് കൈമാറി. "__Xxmac_d16" എന്ന പ്രീപ്രൊസസ്സർ ചിഹ്നവും സജ്ജീകരിക്കുന്നു.

-mmac-24
അസംബ്ലർക്ക് കൈമാറി. "__Xxmac_24" എന്ന പ്രീപ്രൊസസ്സർ ചിഹ്നവും സജ്ജീകരിക്കുന്നു.

-mrtsc
64-ബിറ്റ് ടൈം-സ്റ്റാമ്പ് കൗണ്ടർ വിപുലീകരണം പ്രവർത്തനക്ഷമമാക്കാൻ അസംബ്ലറിന് കൈമാറി
നിർദ്ദേശം. "__Xrtsc" എന്ന പ്രീപ്രൊസസ്സർ ചിഹ്നവും സജ്ജമാക്കുന്നു.

-mswape
സ്വാപ്പ് ബൈറ്റ് ഓർഡറിംഗ് എക്സ്റ്റൻഷൻ നിർദ്ദേശം പ്രവർത്തനക്ഷമമാക്കാൻ അസംബ്ലറിന് കൈമാറി.
"__Xswape" എന്ന പ്രീപ്രൊസസ്സർ ചിഹ്നവും സജ്ജമാക്കുന്നു.

-മെലിഫോണി
ഡ്യുവൽ, സിംഗിൾ ഓപ്പറാൻറ് നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കാൻ അസംബ്ലർക്ക് കൈമാറി
ടെലിഫോണി. "__Xtelephony" എന്ന പ്രീപ്രൊസസർ ചിഹ്നവും സജ്ജമാക്കുന്നു.

-mxy
XY മെമ്മറി വിപുലീകരണം പ്രവർത്തനക്ഷമമാക്കാൻ അസംബ്ലറിലേക്ക് കൈമാറി. എന്നിവയും സജ്ജമാക്കുന്നു
പ്രീപ്രോസസർ ചിഹ്നം "__Xxy".

അസംബ്ലി കോഡ് എങ്ങനെ വ്യാഖ്യാനിക്കണമെന്ന് ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ നിയന്ത്രിക്കുന്നു:

- തെറ്റിദ്ധരിപ്പിക്കുക
കണക്കാക്കിയ വിലാസങ്ങൾക്കൊപ്പം അസംബ്ലർ നിർദ്ദേശങ്ങൾ വ്യാഖ്യാനിക്കുക.

-മന്നോട്ട്-അലൈൻ
ഒരു നിർദ്ദേശം നൽകാനുള്ള തീരുമാനത്തിലേക്ക് നയിക്കുന്ന വിന്യാസ പരിഗണനകൾ എന്താണെന്ന് വിശദീകരിക്കുക
ചെറുതോ നീളമോ.

ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ ലിങ്കറിലേക്ക് കൈമാറുന്നു:

-മാർക്ലിനക്സ്
"ആർക്ലിനക്സ്" എമുലേഷന്റെ ഉപയോഗം വ്യക്തമാക്കാൻ ലിങ്കറിലേക്ക് കൈമാറി. ഈ ഓപ്ഷൻ
"arc-linux-uclibc" എന്നതിനായി നിർമ്മിച്ച ടൂൾ ചെയിനുകളിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുന്നു
പ്രൊഫൈലിംഗ് അഭ്യർത്ഥിക്കാത്തപ്പോൾ "arceb-linux-uclibc" ലക്ഷ്യമിടുന്നു.

-marclinux_prof
"arclinux_prof" എമുലേഷന്റെ ഉപയോഗം വ്യക്തമാക്കുന്നതിന് ലിങ്കറിലേക്ക് കൈമാറി. ഈ
"arc-linux-uclibc" എന്നതിനായി നിർമ്മിച്ച ടൂൾ ശൃംഖലകളിൽ സ്ഥിരസ്ഥിതിയായി ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.
പ്രൊഫൈലിംഗ് അഭ്യർത്ഥിക്കുമ്പോൾ "arceb-linux-uclibc" ലക്ഷ്യമിടുന്നു.

ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ ജനറേറ്റഡ് കോഡിന്റെ സെമാന്റിക്സിനെ നിയന്ത്രിക്കുന്നു:

-മെപിലോഗ്-സിഎഫ്ഐ
എപ്പിലോഗുകൾക്കായി കോൾ ഫ്രെയിം വിവരങ്ങൾ സൃഷ്ടിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.

-mno-epilogue-cfi
എപ്പിലോഗുകൾക്കായി കോൾ ഫ്രെയിം വിവരങ്ങളുടെ ജനറേഷൻ പ്രവർത്തനരഹിതമാക്കുക.

-mlong-കോളുകൾ
റജിസ്റ്റർ പരോക്ഷ കോളുകളായി കോൾ ഇൻസ് ജനറേറ്റ് ചെയ്യുക, അങ്ങനെ മുഴുവനായും ആക്സസ് നൽകുന്നു
32-ബിറ്റ് വിലാസ ശ്രേണി.

- ഇടത്തരം കോളുകൾ
കോളുകൾക്കായി 25 ബിറ്റിൽ താഴെയുള്ള വിലാസ ശ്രേണി ഉപയോഗിക്കരുത്, അത് ഓഫ്‌സെറ്റ് ലഭ്യമാണ്
ഉപാധികളില്ലാത്ത ബ്രാഞ്ച്-ലിങ്ക് നിർദ്ദേശത്തിന്. പ്രവർത്തനത്തിന്റെ സോപാധിക നിർവ്വഹണം
25-ബിറ്റ് ശ്രേണിക്ക് പകരം 21-ബിറ്റ് ശ്രേണിയുടെ ഉപയോഗം അനുവദിക്കുന്നതിന് കോളുകൾ അടിച്ചമർത്തപ്പെട്ടിരിക്കുന്നു.
സോപാധിക ശാഖയും ലിങ്കും ഉപയോഗിച്ച്. ഇതിനായി നിർമ്മിച്ച ടൂൾ ചെയിനുകളുടെ ഡിഫോൾട്ടാണിത്
"arc-linux-uclibc", "arceb-linux-uclibc" എന്നീ ലക്ഷ്യങ്ങൾ.

-mno-sdata
sdata റഫറൻസുകൾ സൃഷ്ടിക്കരുത്. ഇതിനായി നിർമ്മിച്ച ടൂൾ ചെയിനുകളുടെ ഡിഫോൾട്ടാണിത്
"arc-linux-uclibc", "arceb-linux-uclibc" എന്നീ ലക്ഷ്യങ്ങൾ.

-mucb-mcount
UCB കോഡിൽ ഉപയോഗിച്ചിരിക്കുന്ന mcount കോളുകളുള്ള ഉപകരണം. അതായത് കോളിയിൽ എണ്ണുക,
വിളിച്ചയാളല്ല. ഡിഫോൾട്ടായി ARC ഇൻസ്ട്രുമെന്റേഷൻ കോളറിൽ കണക്കാക്കുന്നു.

-mvolatile-cache
അസ്ഥിരമായ റഫറൻസുകൾക്കായി സാധാരണ കാഷെ ചെയ്‌ത മെമ്മറി ആക്‌സസ് ഉപയോഗിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mno-volatile-cache
അസ്ഥിരമായ റഫറൻസുകൾക്കായി കാഷെ ബൈപാസ് പ്രവർത്തനക്ഷമമാക്കുക.

ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ ഫൈൻ ട്യൂൺ കോഡ് ജനറേഷൻ:

-മലിൻ-കോൾ
കോൾ നിർദ്ദേശങ്ങൾക്കായി അലൈൻമെന്റ് ഒപ്റ്റിമൈസേഷനുകൾ ചെയ്യുക.

-mauto-modify-reg
രജിസ്റ്റർ ഡിസ്പ്ലേസ്മെന്റ് ഉപയോഗിച്ച് പ്രീ/പോസ്റ്റ് മോഡിഫൈയുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക.

-mbbit-peephole
bbit peephole2 പ്രവർത്തനക്ഷമമാക്കുക.

-mno-brcc
ഈ ഓപ്‌ഷൻ ഒരു ടാർഗെറ്റ്-നിർദ്ദിഷ്‌ട പാസ് ഇൻ പ്രവർത്തനരഹിതമാക്കുന്നു arc_reorg "BRcc" സൃഷ്ടിക്കാൻ
നിർദ്ദേശങ്ങൾ. കോമ്പൈനർ പാസ് വഴി പ്രവർത്തിക്കുന്ന "BRcc" ജനറേഷനിൽ ഇതിന് യാതൊരു സ്വാധീനവുമില്ല.

-mcase-vector-pcrel
പിസി-ആപേക്ഷിക സ്വിച്ച് കേസ് ടേബിളുകൾ ഉപയോഗിക്കുക - ഇത് കേസ് ടേബിൾ ചുരുക്കൽ പ്രാപ്തമാക്കുന്നു. ഇതാണ്
സ്ഥിരസ്ഥിതി -ഓസ്.

-എംകോംപാക്ട്-കേസി
കോം‌പാക്റ്റ് കേസി പാറ്റേൺ പ്രവർത്തനക്ഷമമാക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി -ഓസ്.

-mno-cond-exec
സോപാധിക നിർവ്വഹണ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കാൻ ARCompact നിർദ്ദിഷ്ട പാസ് പ്രവർത്തനരഹിതമാക്കുക. കാരണം
സ്ലോട്ട് ഷെഡ്യൂളിംഗും ഓപ്പറാൻറ് നമ്പറുകൾ തമ്മിലുള്ള ഇടപെടലുകളും വൈകിപ്പിക്കാൻ, അക്ഷര വലുപ്പങ്ങൾ,
നിർദ്ദേശ ദൈർഘ്യം, കൂടാതെ സോപാധികമായ നിർവ്വഹണത്തിനുള്ള പിന്തുണ, ലക്ഷ്യം-സ്വതന്ത്ര
സോപാധിക നിർവ്വഹണം സൃഷ്ടിക്കുന്നതിനുള്ള പാസ് പലപ്പോഴും കുറവായിരിക്കും, അതിനാൽ ARC പോർട്ട് നിലനിർത്തി a
കൂടുതൽ സോപാധികമായ നിർവ്വഹണം സൃഷ്ടിക്കുന്നത് കണ്ടെത്താൻ ശ്രമിക്കുന്ന പ്രത്യേക പാസ്
രജിസ്റ്റർ അലോക്കേഷൻ, ബ്രാഞ്ച് ചുരുക്കൽ, സ്ലോട്ട് ഷെഡ്യൂളിംഗ് കാലതാമസം എന്നിവയ്ക്ക് ശേഷമുള്ള അവസരങ്ങൾ
ചെയ്തിട്ടുണ്ട്. ഈ പാസ് സാധാരണയായി, എന്നാൽ എല്ലായ്‌പ്പോഴും അല്ല, പ്രകടനവും കോഡും മെച്ചപ്പെടുത്തുന്നു
വലുപ്പം, അധിക സമാഹരണ സമയത്തിന്റെ ചിലവിൽ, അതിനാലാണ് മാറാനുള്ള ഓപ്ഷൻ ഉള്ളത്
അത് ഓഫ്. കോൾ നിർദ്ദേശങ്ങൾ അവയുടെ അനുവദനീയമായ ഓഫ്‌സെറ്റിനേക്കാൾ കൂടുതലാണെങ്കിൽ നിങ്ങൾക്ക് പ്രശ്നമുണ്ടെങ്കിൽ
പരിധി കാരണം അവ സോപാധികമാക്കിയിരിക്കുന്നു, നിങ്ങൾ ഉപയോഗിക്കുന്നത് പരിഗണിക്കണം - ഇടത്തരം കോളുകൾ
പകരം.

-മെർലി-സിബ്രാഞ്ച്സി
cbranchsi പാറ്റേണിന്റെ പ്രീ-റീലോഡ് ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക.

-mexpand-adddi
rtl ജനറേഷൻ സമയത്ത് "adddi3", "subdi3" എന്നിവ "add.f", "adc" മുതലായവയിലേക്ക് വികസിപ്പിക്കുക.

-mindexed-loads
ഇൻഡക്‌സ് ചെയ്‌ത ലോഡുകളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക. ചില ഒപ്റ്റിമൈസറുകൾ കാരണം ഇത് പ്രശ്നമുണ്ടാക്കാം
സൂചികയിലുള്ള സ്റ്റോറുകൾ നിലവിലുണ്ടെന്ന് കരുതുക, അത് അങ്ങനെയല്ല.

-mlra
ലോക്കൽ രജിസ്റ്റർ അലോക്കേഷൻ പ്രവർത്തനക്ഷമമാക്കുക. ARC-യ്‌ക്ക് ഇത് ഇപ്പോഴും പരീക്ഷണാത്മകമാണ്, അതിനാൽ സ്ഥിരസ്ഥിതിയായി
കമ്പൈലർ സാധാരണ റീലോഡ് ഉപയോഗിക്കുന്നു (അതായത് -mno-lra).

-mlra-മുൻഗണന-ഒന്നുമില്ല
ടാർഗെറ്റ് രജിസ്റ്ററുകൾക്ക് മുൻഗണന നൽകരുത്.

-mlra-priority-compact
r0..r3 / r12..r15 എന്നതിനായുള്ള ടാർഗെറ്റ് രജിസ്റ്റർ മുൻഗണന സൂചിപ്പിക്കുക.

-mlra-priority-noncompact
r0..r3 / r12..r15 എന്നതിനായുള്ള ടാർഗെറ്റ് രജിസ്‌റ്റർ മുൻഗണന കുറയ്ക്കുക.

-mno-millicode
വലുപ്പത്തിനായി ഒപ്റ്റിമൈസ് ചെയ്യുമ്പോൾ (ഉപയോഗിക്കുക -ഓസ്), സംരക്ഷിക്കേണ്ട ആമുഖങ്ങളും എപ്പിലോഗുകളും അല്ലെങ്കിൽ
ഒരു പ്രത്യേക കോൾ ഉപയോഗിച്ച് ഒരു വലിയ സംഖ്യ രജിസ്റ്ററുകൾ പുനഃസ്ഥാപിക്കുക
libgccയിലെ പ്രവർത്തനം; ഇതിനെ a എന്നറിയപ്പെടുന്നു മില്ലികോഡ് വിളി. ഈ കോളുകൾക്ക് പോസ് ചെയ്യാൻ കഴിയും
പ്രകടന പ്രശ്‌നങ്ങൾ, കൂടാതെ/അല്ലെങ്കിൽ നിലവാരമില്ലാത്ത രീതിയിൽ ലിങ്ക് ചെയ്യുമ്പോൾ ലിങ്കിംഗ് പ്രശ്‌നങ്ങൾക്ക് കാരണമാകുന്നു,
മില്ലികോഡ് കോൾ ജനറേഷൻ ഓഫാക്കാനാണ് ഈ ഓപ്ഷൻ നൽകിയിരിക്കുന്നത്.

-മിക്സഡ്-കോഡ്
16-ബിറ്റ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കാൻ സഹായിക്കുന്നതിന് രജിസ്റ്റർ അലോക്കേഷൻ മാറ്റുക. ഇത് പൊതുവെ ഉണ്ട്
നിർദ്ദേശം വർദ്ധിപ്പിക്കുമ്പോൾ ശരാശരി നിർദ്ദേശ വലുപ്പം കുറയുന്നതിന്റെ ഫലം
എണ്ണം.

-mq-ക്ലാസ്
'q' നിർദ്ദേശ ബദലുകൾ പ്രവർത്തനക്ഷമമാക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി -ഓസ്.

-mRcq
Rcq കൺസ്ട്രെയിന്റ് കൈകാര്യം ചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കുക - മിക്ക ഷോർട്ട് കോഡ് ജനറേഷൻ ഇതിനെ ആശ്രയിച്ചിരിക്കുന്നു. ഇതാണ്
സ്ഥിരസ്ഥിതി.

-mRcw
Rcw കൺസ്ട്രെയിന്റ് കൈകാര്യം ചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കുക - ccfsm condexec കൂടുതലും ഇതിനെ ആശ്രയിച്ചിരിക്കുന്നു. ഇതാണ്
സ്ഥിരസ്ഥിതിയായി.

-msize-level=ലെവൽ
നിർദ്ദേശ ദൈർഘ്യവും വിന്യാസവും സംബന്ധിച്ച് ഫൈൻ-ട്യൂൺ സൈസ് ഒപ്റ്റിമൈസേഷൻ. ദി
എന്നതിനായുള്ള അംഗീകൃത മൂല്യങ്ങൾ ലെവൽ ആകുന്നു:

0 വലിപ്പം ഒപ്റ്റിമൈസേഷൻ ഇല്ല. ഈ ലെവൽ ഒഴിവാക്കുകയും പരിഗണിക്കുകയും ചെയ്യുന്നു 1.

1 ചെറിയ നിർദ്ദേശങ്ങൾ അവസരോചിതമായി ഉപയോഗിക്കുന്നു.

2 കൂടാതെ, തടസ്സങ്ങൾ ഒഴിവാക്കിയതിന് ശേഷമുള്ള ലൂപ്പുകളുടെയും കോഡിന്റെയും വിന്യാസം.

3 കൂടാതെ, ഓപ്ഷണൽ ഡാറ്റ വിന്യാസം ഒഴിവാക്കി, ഓപ്ഷൻ Os പ്രാപ്തമാക്കി.

ഇത് സ്ഥിരസ്ഥിതിയാക്കുന്നു 3 എപ്പോൾ -ഓസ് പ്രാബല്യത്തിൽ ഉണ്ട്. അല്ലെങ്കിൽ, ഇത് അല്ലാത്തപ്പോൾ പെരുമാറ്റം
സെറ്റ് ലെവലിന് തുല്യമാണ് 1.

-mtune=സിപിയു
ഇതിനായി നിർദ്ദേശ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ സജ്ജമാക്കുക സിപിയു, സൂചിപ്പിക്കുന്നത് അസാധുവാക്കുന്നു -mcpu=.

പിന്തുണയ്ക്കുന്ന മൂല്യങ്ങൾ സിപിയു ആകുന്നു

ARC600
ARC600 cpu-യ്‌ക്കായി ട്യൂൺ ചെയ്യുക.

ARC601
ARC601 cpu-യ്‌ക്കായി ട്യൂൺ ചെയ്യുക.

ARC700
സ്റ്റാൻഡേർഡ് മൾട്ടിപ്ലയർ ബ്ലോക്ക് ഉപയോഗിച്ച് ARC700 cpu-യ്‌ക്കായി ട്യൂൺ ചെയ്യുക.

ARC700-xmac
XMAC ബ്ലോക്ക് ഉപയോഗിച്ച് ARC700 cpu ട്യൂൺ ചെയ്യുക.

ARC725D
ARC725D cpu-യ്‌ക്കായി ട്യൂൺ ചെയ്യുക.

ARC750D
ARC750D cpu-യ്‌ക്കായി ട്യൂൺ ചെയ്യുക.

-mmultcost=സംഖ്യ
ഒരു ഗുണിത നിർദ്ദേശത്തിനായി അനുമാനിക്കേണ്ട ചെലവ് 4 ഒരു സാധാരണ നിർദ്ദേശത്തിന് തുല്യമാണ്.

-munalign-prob-threshold=പ്രോബബിലിറ്റി
ശാഖകൾ അൺലൈൻ ചെയ്യുന്നതിനുള്ള പ്രോബബിലിറ്റി ത്രെഷോൾഡ് സജ്ജമാക്കുക. വേണ്ടി ട്യൂൺ ചെയ്യുമ്പോൾ ARC700 ഒപ്പം
വേഗത ഒപ്റ്റിമൈസുചെയ്യുന്നു, കാലതാമസം സ്ലോട്ട് നിറയ്ക്കാത്ത ശാഖകൾ പുറത്തുവിടുന്നതാണ് നല്ലത്
വിന്യസിച്ചിട്ടില്ലാത്തതും നീളമുള്ളതും, പ്രൊഫൈലിംഗ് സൂചിപ്പിക്കുന്നില്ലെങ്കിൽ ബ്രാഞ്ചിനുള്ള സാധ്യത
എടുക്കാം പ്രോബബിലിറ്റി. സ്ഥിരസ്ഥിതി (REG_BR_PROB_BASE/2), അതായത് 5000 ആണ്.

ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ ബാക്ക്‌വേർഡ് കോംപാറ്റിബിളിറ്റിക്കായി പരിപാലിക്കപ്പെടുന്നു, പക്ഷേ ഇപ്പോൾ അത് ഒഴിവാക്കിയിരിക്കുന്നു
ഭാവിയിലെ ഒരു റിലീസിൽ നീക്കം ചെയ്യും:

-മാർഗോനട്ട്
കാലഹരണപ്പെട്ട FPX.

-mbig-endian
-ഇ.ബി വലിയ എൻഡിയൻ ടാർഗെറ്റുകൾക്കായി കോഡ് കംപൈൽ ചെയ്യുക. ഈ ഓപ്ഷനുകളുടെ ഉപയോഗം ഇപ്പോൾ ഒഴിവാക്കിയിരിക്കുന്നു. ഉപയോക്താക്കൾ
ബിഗ്-എൻഡിയൻ കോഡ് വേണമെങ്കിൽ, "arceb-elf32", "arceb-linux-uclibc" എന്നീ ലക്ഷ്യങ്ങൾ ഉപയോഗിക്കണം.
ടൂൾ ചെയിൻ നിർമ്മിക്കുമ്പോൾ, ബിഗ്-എൻഡിയൻ ഡിഫോൾട്ടാണ്.

-mlittle-endian
-ഇഎൽ ചെറിയ എൻഡിയൻ ടാർഗെറ്റുകൾക്കായി കോഡ് കംപൈൽ ചെയ്യുക. ഈ ഓപ്ഷനുകളുടെ ഉപയോഗം ഇപ്പോൾ ഒഴിവാക്കിയിരിക്കുന്നു.
ലിറ്റിൽ എൻഡിയൻ കോഡ് ആവശ്യമുള്ള ഉപയോക്താക്കൾ "arc-elf32", "arc-linux-uclibc" എന്നിവ ഉപയോഗിക്കണം.
ടൂൾ ചെയിൻ നിർമ്മിക്കുമ്പോൾ ടാർഗെറ്റുചെയ്യുന്നു, ഇതിന് ലിറ്റിൽ-എൻഡിയൻ സ്ഥിരസ്ഥിതിയാണ്.

-mbarrel_shifter
മാറ്റി പകരം -mbarrel-shifter.

-mdpfp_compact
മാറ്റി പകരം -mdpfp-compact.

-mdpfp_fast
മാറ്റി പകരം -mdpfp-വേഗത.

-mdsp_packa
മാറ്റി പകരം -mdsp-packa.

-എംഇഎ
മാറ്റി പകരം -mea.

-mmac_24
മാറ്റി പകരം -mmac-24.

-mmac_d16
മാറ്റി പകരം -mmac-d16.

-mspfp_compact
മാറ്റി പകരം -mspfp-compact.

-mspfp_fast
മാറ്റി പകരം -mspfp-വേഗത.

-mtune=സിപിയു
മൂല്യങ്ങൾ ആർക്ക്600, ആർക്ക്601, ആർക്ക്700 ഒപ്പം arc700-xmac വേണ്ടി സിപിയു മാറ്റിസ്ഥാപിക്കുന്നു ARC600, ARC601,
ARC700 ഒപ്പം ARC700-xmac യഥാക്രമം

-multcost=സംഖ്യ
മാറ്റി പകരം -multcost.

കൈക്ക് ഓപ്ഷനുകൾ

ഇവ -m ARM പോർട്ടിനായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mabi=പേര്
നിർദ്ദിഷ്‌ട എബിഐയ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക. അനുവദനീയമായ മൂല്യങ്ങൾ ഇവയാണ്: apcs-gnu, എടിപിസികൾ, aapcs,
aapcs-linux ഒപ്പം iwmmxt.

-mapcs-frame
എല്ലാവർക്കുമായി ARM പ്രൊസീജ്യർ കോൾ സ്റ്റാൻഡേർഡിന് അനുസൃതമായ ഒരു സ്റ്റാക്ക് ഫ്രെയിം സൃഷ്ടിക്കുക
ഫംഗ്‌ഷനുകൾ, കോഡിന്റെ ശരിയായ നിർവ്വഹണത്തിന് ഇത് കർശനമായി ആവശ്യമില്ലെങ്കിലും.
വ്യക്തമാക്കുന്നത് -ഫോമിറ്റ്-ഫ്രെയിം-പോയിന്റർ ഈ ഓപ്ഷൻ ഉപയോഗിച്ച് സ്റ്റാക്ക് ഫ്രെയിമുകൾ ഉണ്ടാകാതിരിക്കാൻ കാരണമാകുന്നു
ഇലകളുടെ പ്രവർത്തനങ്ങൾക്കായി സൃഷ്ടിച്ചത്. സ്ഥിരസ്ഥിതിയാണ് -mno-apcs-frame. ഈ ഓപ്ഷൻ ആണ്
ഒഴിവാക്കി.

-മാപ്‌സുകൾ
എന്നതിന്റെ പര്യായപദമാണിത് -mapcs-frame കൂടാതെ ഒഴിവാക്കിയിരിക്കുന്നു.

-mthumb-ഇന്റർവർക്ക്
ARM, Thumb നിർദ്ദേശ സെറ്റുകൾക്കിടയിൽ കോളിംഗിനെ പിന്തുണയ്ക്കുന്ന കോഡ് സൃഷ്ടിക്കുക.
ഈ ഓപ്‌ഷൻ കൂടാതെ, പ്രീ-വി5 ആർക്കിടെക്ചറുകളിൽ, രണ്ട് ഇൻസ്ട്രക്ഷൻ സെറ്റുകൾ ഉണ്ടാകില്ല
ഒരു പ്രോഗ്രാമിനുള്ളിൽ വിശ്വസനീയമായി ഉപയോഗിക്കുന്നു. സ്ഥിരസ്ഥിതിയാണ് -mno-thumb-interwork, ചെറുതായി മുതൽ
എപ്പോൾ വലിയ കോഡ് ജനറേറ്റുചെയ്യുന്നു -mthumb-ഇന്റർവർക്ക് വ്യക്തമാക്കിയിട്ടുണ്ട്. AAPCS കോൺഫിഗറേഷനുകളിൽ
ഈ ഓപ്ഷൻ അർത്ഥശൂന്യമാണ്.

-mno-sched-prolog
ഫംഗ്‌ഷൻ പ്രോലോഗിലെ നിർദ്ദേശങ്ങൾ പുനഃക്രമീകരിക്കുന്നത് തടയുക, അല്ലെങ്കിൽ ലയിപ്പിക്കുക
ഫംഗ്‌ഷന്റെ ബോഡിയിലെ നിർദ്ദേശങ്ങൾക്കൊപ്പം ആ നിർദ്ദേശങ്ങൾ. ഇതിനർത്ഥം എല്ലാം എന്നാണ്
ഫംഗ്‌ഷനുകൾ ആരംഭിക്കുന്നത് തിരിച്ചറിയാൻ കഴിയുന്ന ഒരു കൂട്ടം നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ചാണ് (അല്ലെങ്കിൽ വാസ്തവത്തിൽ ഒരു ചോയ്‌സിൽ ഒന്ന്
വ്യത്യസ്‌ത ഫംഗ്‌ഷൻ പ്രോലോഗുകളുടെ ഒരു ചെറിയ സെറ്റിൽ നിന്ന്), ഈ വിവരങ്ങൾ ഇതിനായി ഉപയോഗിക്കാം
ഒരു എക്സിക്യൂട്ടബിൾ കോഡിനുള്ളിൽ ഫംഗ്‌ഷനുകളുടെ ആരംഭം കണ്ടെത്തുക. സ്ഥിരസ്ഥിതിയാണ്
-msched-prolog.

-mfloat-abi=പേര്
ഏത് ഫ്ലോട്ടിംഗ് പോയിന്റ് എബിഐ ഉപയോഗിക്കണമെന്ന് വ്യക്തമാക്കുന്നു. അനുവദനീയമായ മൂല്യങ്ങൾ ഇവയാണ്: മൃദു, softfp ഒപ്പം
ഹാർഡ്.

വ്യക്തമാക്കുന്നത് മൃദു ഫ്ലോട്ടിംഗിനായി ലൈബ്രറി കോളുകൾ അടങ്ങുന്ന ഔട്ട്പുട്ട് സൃഷ്ടിക്കുന്നതിന് GCC കാരണമാകുന്നു-
പോയിന്റ് പ്രവർത്തനങ്ങൾ. softfp ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കാൻ അനുവദിക്കുന്നു
നിർദ്ദേശങ്ങൾ, പക്ഷേ ഇപ്പോഴും സോഫ്റ്റ്-ഫ്ലോട്ട് കോളിംഗ് കൺവെൻഷനുകൾ ഉപയോഗിക്കുന്നു. ഹാർഡ് അനുവദിക്കുന്നു
ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുകയും FPU-നിർദ്ദിഷ്ട കോളിംഗ് കൺവെൻഷനുകൾ ഉപയോഗിക്കുകയും ചെയ്യുന്നു.

ഡിഫോൾട്ട് നിർദ്ദിഷ്ട ടാർഗെറ്റ് കോൺഫിഗറേഷനെ ആശ്രയിച്ചിരിക്കുന്നു. ഹാർഡ് ഫ്ലോട്ട് എന്നത് ശ്രദ്ധിക്കുക
കൂടാതെ സോഫ്റ്റ് ഫ്ലോട്ട് എബിഐകൾ ലിങ്ക്-അനുയോജ്യമല്ല; നിങ്ങളുടെ മുഴുവൻ പ്രോഗ്രാമും കംപൈൽ ചെയ്യണം
ഒരേ എബിഐ, ഒപ്പം അനുയോജ്യമായ ലൈബ്രറികളുമായുള്ള ലിങ്ക്.

-mlittle-endian
ലിറ്റിൽ-എൻഡിയൻ മോഡിൽ പ്രവർത്തിക്കുന്ന ഒരു പ്രോസസറിനായി കോഡ് സൃഷ്ടിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി
എല്ലാ സ്റ്റാൻഡേർഡ് കോൺഫിഗറേഷനുകളും.

-mbig-endian
ബിഗ്-എൻഡിയൻ മോഡിൽ പ്രവർത്തിക്കുന്ന ഒരു പ്രോസസറിനായി കോഡ് സൃഷ്ടിക്കുക; കംപൈൽ ചെയ്യുക എന്നതാണ് സ്ഥിരസ്ഥിതി
ഒരു ചെറിയ എൻഡിയൻ പ്രോസസറിനുള്ള കോഡ്.

-മാർച്ച്=പേര്
ഇത് ടാർഗെറ്റ് ARM ആർക്കിടെക്ചറിന്റെ പേര് വ്യക്തമാക്കുന്നു. ജിസിസി ഈ പേര് ഉപയോഗിക്കുന്നു
അസംബ്ലി കോഡ് സൃഷ്ടിക്കുമ്പോൾ അത് ഏത് തരത്തിലുള്ള നിർദ്ദേശങ്ങൾ പുറപ്പെടുവിക്കുമെന്ന് നിർണ്ണയിക്കുക. ഈ
എന്നതുമായി സംയോജിപ്പിച്ചോ പകരം ഉപയോഗിക്കാവുന്നതാണ് -mcpu= ഓപ്ഷൻ. അനുവദനീയമാണ്
പേരുകൾ ഇവയാണ്: armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5e,
armv5te, armv6, armv6j, armv6t2, armv6z, armv6zk, armv6-m, armv7, armv7-a, armv7-r,
armv7-m, armv7e-m, armv7ve, armv8-a, armv8-a+crc, iwmmxt, iwmmxt2, ep9312.

-മാർച്ച്=armv7ve വിർച്വലൈസേഷൻ എക്സ്റ്റൻഷനുകളുള്ള armv7-a ആർക്കിടെക്ചർ ആണ്.

-മാർച്ച്=armv8-a+crc ARMv8-A ആർക്കിടെക്ചറിനായി കോഡ് സൃഷ്ടിക്കുന്നത് സാധ്യമാക്കുന്നു
ഓപ്ഷണൽ CRC32 വിപുലീകരണങ്ങൾ.

-മാർച്ച് = സ്വദേശി ബിൽഡിന്റെ ആർക്കിടെക്ചർ സ്വയമേവ കണ്ടെത്തുന്നതിന് കംപൈലറിന് കാരണമാകുന്നു
കമ്പ്യൂട്ടർ. നിലവിൽ, ഈ സവിശേഷത GNU/Linux-ൽ മാത്രമേ പിന്തുണയ്ക്കുന്നുള്ളൂ, എല്ലാമല്ല
വാസ്തുവിദ്യകൾ അംഗീകരിക്കപ്പെട്ടിരിക്കുന്നു. സ്വയമേവ കണ്ടെത്തൽ വിജയിച്ചില്ലെങ്കിൽ ഓപ്ഷന് ഇല്ല
ഇഫക്ട്.

-mtune=പേര്
GCC ട്യൂൺ ചെയ്യേണ്ട ടാർഗെറ്റ് ARM പ്രൊസസറിന്റെ പേര് ഈ ഓപ്ഷൻ വ്യക്തമാക്കുന്നു
കോഡിന്റെ പ്രകടനം. ചില ARM നടപ്പിലാക്കലുകൾക്ക് മികച്ച പ്രകടനം സാധ്യമാണ്
ഈ ഓപ്ഷൻ ഉപയോഗിച്ച് നേടിയത്. അനുവദനീയമായ പേരുകൾ ഇവയാണ്: arm2, arm250, arm3, arm6,
arm60, arm600, arm610, arm620, arm7, കൈ 7 മീ, arm7d, arm7dm, arm7di, arm7dmi, arm70,
arm700, arm700i, arm710, arm710c, arm7100, arm720, arm7500, arm7500fe, arm7tdmi,
arm7tdmi-s, arm710t, arm720t, arm740t, ശക്തമായ കൈ, ശക്തമായ ആയുധം110, ശക്തമായ ആയുധം1100,
ശക്തമായ ആയുധം1110, 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, കോർട്ടെക്സ്-എ 5, കോർട്ടെക്സ്-എ 7, കോർട്ടെക്സ്-എ 8, കോർട്ടെക്സ്-എ 9,
കോർട്ടെക്സ്-എ 12, കോർട്ടെക്സ്-എ 15, കോർട്ടെക്സ്-എ 53, കോർട്ടെക്സ്-എ 57, കോർട്ടെക്സ്-എ 72, കോർട്ടക്സ്-r4, cortex-r4f,
കോർട്ടക്സ്-r5, കോർട്ടക്സ്-r7, കോർട്ടക്സ്-m7, കോർട്ടക്സ്-m4, കോർട്ടക്സ്-m3, കോർട്ടക്സ്-m1, കോർട്ടക്സ്-m0,
cortex-m0plus, cortex-m1.small-multiply, cortex-m0.small-multiply,
cortex-m0plus.small-multiply, എക്സിനോസ്-എം1, marvell-pj4, xscale, iwmmxt, iwmmxt2, ep9312,
ഫക്സനുമ്ക്സ, ഫക്സനുമ്ക്സ, fa606te, fa626te, fmp626, fa726te, xgene1.

കൂടാതെ, ഈ ഓപ്‌ഷന് GCC കോഡിന്റെ പ്രകടനം ട്യൂൺ ചെയ്യണമെന്ന് വ്യക്തമാക്കാൻ കഴിയും
ഒരു വലിയ ചെറിയ സംവിധാനത്തിനായി. അനുവദനീയമായ പേരുകൾ ഇവയാണ്: cortex-a15.cortex-a7,
cortex-a57.cortex-a53, cortex-a72.cortex-a53.

-mtune=generic-കമാനം GCC ഒരു മിശ്രിതത്തിനായി പ്രകടനം ട്യൂൺ ചെയ്യണമെന്ന് വ്യക്തമാക്കുന്നു
ആർക്കിടെക്ചറിനുള്ളിലെ പ്രോസസ്സറുകൾ കമാനം. ഇതിൽ നന്നായി പ്രവർത്തിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക എന്നതാണ് ലക്ഷ്യം
നിലവിലുള്ള ഏറ്റവും ജനപ്രിയമായ പ്രോസസ്സറുകൾ, ചിലർക്ക് പ്രയോജനപ്പെടുന്ന ഒപ്റ്റിമൈസേഷനുകൾക്കിടയിൽ ബാലൻസ് ചെയ്യുന്നു
ശ്രേണിയിലുള്ള CPU-കൾ, മറ്റ് CPU-കളുടെ പ്രകടനത്തിലെ പിഴവുകൾ ഒഴിവാക്കുന്നു. യുടെ ഫലങ്ങൾ
സിപിയു മോഡലുകൾ വരുകയും പോകുകയും ചെയ്യുന്നതിനാൽ ഭാവിയിലെ ജിസിസി പതിപ്പുകളിൽ ഈ ഓപ്ഷൻ മാറിയേക്കാം.

-mtune= സ്വദേശി ബിൽഡ് കമ്പ്യൂട്ടറിന്റെ സിപിയു സ്വയമേവ കണ്ടെത്തുന്നതിന് കമ്പൈലറിന് കാരണമാകുന്നു. ചെയ്തത്
നിലവിൽ, ഈ സവിശേഷത GNU/Linux-ൽ മാത്രമേ പിന്തുണയ്ക്കൂ, എല്ലാ ആർക്കിടെക്ചറുകളും അല്ല
തിരിച്ചറിഞ്ഞു. സ്വയമേവ കണ്ടെത്തൽ പരാജയപ്പെട്ടാൽ, ഓപ്‌ഷനിൽ യാതൊരു ഫലവുമില്ല.

-mcpu=പേര്
ഇത് ടാർഗെറ്റ് ARM പ്രൊസസറിന്റെ പേര് വ്യക്തമാക്കുന്നു. ജിസിസി ഈ പേര് ഉരുത്തിരിഞ്ഞുവരാൻ ഉപയോഗിക്കുന്നു
ടാർഗെറ്റ് ARM ആർക്കിടെക്ചറിന്റെ പേര് (ഇത് വ്യക്തമാക്കിയത് പോലെ - മാർച്ച്) കൂടാതെ ARM പ്രൊസസറും
പ്രകടനത്തിനായി ട്യൂൺ ചെയ്യേണ്ട തരം (നിർദിഷ്ട പ്രകാരം -mtune). ഈ ഓപ്ഷൻ എവിടെ
എന്നിവയുമായി ചേർന്ന് ഉപയോഗിക്കുന്നു - മാർച്ച് or -mtune, ആ ഓപ്ഷനുകൾക്ക് മുൻതൂക്കം ലഭിക്കുന്നു
ഈ ഓപ്ഷന്റെ ഉചിതമായ ഭാഗം.

ഈ ഓപ്‌ഷന്റെ അനുവദനീയമായ പേരുകൾ എന്നതിന് സമാനമാണ് -mtune.

-mcpu=generic-കമാനം അനുവദനീയവും, തുല്യവുമാണ് -മാർച്ച്=കമാനം
-mtune=generic-കമാനം. കാണുക -mtune കൂടുതൽ വിവരങ്ങൾക്ക്.

-mcpu= സ്വദേശി ബിൽഡ് കമ്പ്യൂട്ടറിന്റെ സിപിയു സ്വയമേവ കണ്ടെത്തുന്നതിന് കമ്പൈലറിന് കാരണമാകുന്നു. ചെയ്തത്
നിലവിൽ, ഈ സവിശേഷത GNU/Linux-ൽ മാത്രമേ പിന്തുണയ്ക്കൂ, എല്ലാ ആർക്കിടെക്ചറുകളും അല്ല
തിരിച്ചറിഞ്ഞു. സ്വയമേവ കണ്ടെത്തൽ പരാജയപ്പെട്ടാൽ, ഓപ്‌ഷനിൽ യാതൊരു ഫലവുമില്ല.

-mfpu=പേര്
ഏത് ഫ്ലോട്ടിംഗ് പോയിന്റ് ഹാർഡ്‌വെയർ (അല്ലെങ്കിൽ ഹാർഡ്‌വെയർ എമുലേഷൻ) ലഭ്യമാണെന്ന് ഇത് വ്യക്തമാക്കുന്നു
ലക്ഷ്യം. അനുവദനീയമായ പേരുകൾ ഇവയാണ്: vfp, vfpv3, vfpv3-fp16, vfpv3-d16, vfpv3-d16-fp16,
vfpv3xd, vfpv3xd-fp16, നിയോൺ, neon-fp16, vfpv4, vfpv4-d16, fpv4-sp-d16, neon-vfpv4,
fpv5-d16, fpv5-sp-d16, fp-armv8, neon-fp-armv8, ഒപ്പം crypto-neon-fp-armv8.

If -msoft-float ഇത് ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യങ്ങളുടെ ഫോർമാറ്റ് വ്യക്തമാക്കുന്നു.

തിരഞ്ഞെടുത്ത ഫ്ലോട്ടിംഗ് പോയിന്റ് ഹാർഡ്‌വെയറിൽ NEON എക്സ്റ്റൻഷൻ ഉൾപ്പെടുന്നുവെങ്കിൽ (ഉദാ -mfpu=നിയോൺ),
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾ GCC-യുടെ ഓട്ടോ-വെക്‌ടറൈസേഷൻ പാസ് വഴി സൃഷ്ടിക്കപ്പെടുന്നില്ല എന്നത് ശ്രദ്ധിക്കുക
അല്ലാതെ -funsafe-math-optimizations എന്നും വ്യക്തമാക്കിയിട്ടുണ്ട്. കാരണം NEON ഹാർഡ്‌വെയർ ആണ്
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഗണിതത്തിന് IEEE 754 നിലവാരം പൂർണ്ണമായും നടപ്പിലാക്കുന്നില്ല
പ്രത്യേക ഡീനോർമൽ മൂല്യങ്ങൾ പൂജ്യമായി കണക്കാക്കുന്നു), അതിനാൽ NEON നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കാം
കൃത്യത നഷ്ടപ്പെടുന്നതിലേക്ക് നയിക്കുന്നു.

-mfp16-format=പേര്
"__fp16" ഹാഫ് പ്രിസിഷൻ ഫ്ലോട്ടിംഗ്-പോയിന്റ് തരത്തിന്റെ ഫോർമാറ്റ് വ്യക്തമാക്കുക. അനുവദനീയമാണ്
പേരുകൾ ആകുന്നു ആരും, അതായത്, ഒപ്പം ബദൽ; സ്ഥിരസ്ഥിതിയാണ് ആരും, ഈ സാഹചര്യത്തിൽ "__fp16"
തരം നിർവചിച്ചിട്ടില്ല.

-structure-size-boundary=n
എല്ലാ ഘടനകളുടെയും യൂണിയനുകളുടെയും വലുപ്പങ്ങൾ സംഖ്യയുടെ ഗുണിതമായി വൃത്താകൃതിയിലാണ്
ഈ ഓപ്‌ഷൻ വഴി സജ്ജീകരിച്ച ബിറ്റുകൾ. അനുവദനീയമായ മൂല്യങ്ങൾ 8, 32, 64 എന്നിവയാണ്. ഡിഫോൾട്ട് മൂല്യം
വ്യത്യസ്ത ടൂൾചെയിനുകൾക്കായി വ്യത്യാസപ്പെടുന്നു. COFF ടാർഗെറ്റുചെയ്‌ത ടൂൾചെയിനിന്റെ ഡിഫോൾട്ട് മൂല്യമാണ്
8. അണ്ടർലയിങ്ങ് എബിഐ പിന്തുണച്ചാൽ മാത്രമേ 64 എന്ന മൂല്യം അനുവദിക്കൂ.

ഒരു വലിയ സംഖ്യ വ്യക്തമാക്കുന്നത് വേഗമേറിയതും കൂടുതൽ കാര്യക്ഷമവുമായ കോഡ് സൃഷ്ടിക്കാൻ കഴിയും, പക്ഷേ അതിനും കഴിയും
പ്രോഗ്രാമിന്റെ വലുപ്പം വർദ്ധിപ്പിക്കുക. വ്യത്യസ്ത മൂല്യങ്ങൾ പൊരുത്തപ്പെടാൻ സാധ്യതയില്ല.
ഒരു മൂല്യം ഉപയോഗിച്ച് കംപൈൽ ചെയ്‌ത കോഡ്, കോഡോ ലൈബ്രറികളുമായോ പ്രവർത്തിക്കുമെന്ന് പ്രതീക്ഷിക്കേണ്ടതില്ല
ഘടനകളോ യൂണിയനുകളോ ഉപയോഗിച്ച് അവർ വിവരങ്ങൾ കൈമാറുകയാണെങ്കിൽ മറ്റൊരു മൂല്യം ഉപയോഗിച്ച് സമാഹരിച്ചിരിക്കുന്നു.

-mabort-on-noreturn
"noreturn" ഫംഗ്‌ഷന്റെ അവസാനത്തിൽ "abort" എന്ന ഫംഗ്‌ഷനിലേക്ക് ഒരു കോൾ സൃഷ്‌ടിക്കുക. അത്
ഫംഗ്‌ഷൻ മടങ്ങാൻ ശ്രമിക്കുകയാണെങ്കിൽ എക്‌സിക്യൂട്ട് ചെയ്യപ്പെടും.

-mlong-കോളുകൾ
-mno-ലോംഗ്-കോളുകൾ
എന്ന വിലാസം ആദ്യം ലോഡ് ചെയ്തുകൊണ്ട് ഫംഗ്‌ഷൻ കോളുകൾ നടത്താൻ കംപൈലറോട് പറയുന്നു
ഒരു രജിസ്റ്ററിൽ പ്രവർത്തിക്കുകയും തുടർന്ന് ഈ രജിസ്റ്ററിൽ ഒരു സബ്റൂട്ടീൻ കോൾ നടത്തുകയും ചെയ്യുന്നു. ഈ
ടാർഗെറ്റ് ഫംഗ്‌ഷൻ 64-മെഗാബൈറ്റ് വിലാസത്തിന് പുറത്താണെങ്കിൽ സ്വിച്ച് ആവശ്യമാണ്
സബ്റൂട്ടീൻ കോൾ നിർദ്ദേശത്തിന്റെ ഓഫ്സെറ്റ് അധിഷ്ഠിത പതിപ്പിന്റെ ശ്രേണി.

ഈ സ്വിച്ച് പ്രവർത്തനക്ഷമമാക്കിയാലും, എല്ലാ ഫംഗ്‌ഷൻ കോളുകളും ദൈർഘ്യമേറിയ കോളുകളായി മാറില്ല.
"ഷോർട്ട്_കോൾ" ഉള്ള സ്റ്റാറ്റിക് ഫംഗ്‌ഷനുകളാണ് ഹ്യൂറിസ്റ്റിക്.
ആട്രിബ്യൂട്ട്, "#പ്രാഗ്മ നോ_ലോംഗ്_കോൾസ്" ഡയറക്‌ടീവിന്റെ പരിധിക്കുള്ളിലുള്ള പ്രവർത്തനങ്ങൾ,
നിലവിലുള്ള നിർവചനങ്ങൾ ഇതിനകം സമാഹരിച്ച ഫംഗ്‌ഷനുകളും
കംപൈലേഷൻ യൂണിറ്റ് നീണ്ട കോളുകളായി മാറില്ല. ഈ നിയമത്തിന്റെ ഒഴിവാക്കലുകൾ അതാണ്
ദുർബലമായ ഫംഗ്ഷൻ നിർവചനങ്ങൾ, "long_call" ആട്രിബ്യൂട്ട് അല്ലെങ്കിൽ "വിഭാഗം" ഉള്ള പ്രവർത്തനങ്ങൾ
ആട്രിബ്യൂട്ടും ഫംഗ്‌ഷനുകളും "#പ്രാഗ്മ ലോംഗ്_കോൾസ്" നിർദ്ദേശത്തിന്റെ പരിധിയിലുള്ളതാണ്
എല്ലായ്പ്പോഴും നീണ്ട കോളുകളായി മാറുന്നു.

ഈ സവിശേഷത സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല. വ്യക്തമാക്കുന്നത് -mno-ലോംഗ്-കോളുകൾ പുന rest സ്ഥാപിക്കുന്നു
ഒരു "#പ്രാഗ്മയുടെ പരിധിയിൽ ഫംഗ്‌ഷൻ കോളുകൾ സ്ഥാപിക്കുന്നത് പോലെ ഡിഫോൾട്ട് സ്വഭാവം
ലോംഗ്_കോൾസ്_ഓഫ്" ഡയറക്‌ടീവ്. ഈ സ്വിച്ചുകൾക്ക് കംപൈലർ എങ്ങനെ ബാധിക്കുമെന്നത് ശ്രദ്ധിക്കുക
ഫംഗ്‌ഷൻ പോയിന്ററുകൾ വഴി ഫംഗ്‌ഷൻ കോളുകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള കോഡ് സൃഷ്‌ടിക്കുന്നു.

-msingle-pic-base
PIC അഡ്രസ്സിംഗിനായി ഉപയോഗിക്കുന്ന രജിസ്റ്ററിനെ ലോഡുചെയ്യുന്നതിന് പകരം റീഡ്-ഒൺലി ആയി പരിഗണിക്കുക
ഓരോ ഫംഗ്‌ഷനുമുള്ള ആമുഖം. ഇത് ആരംഭിക്കുന്നതിന് റൺടൈം സംവിധാനമാണ് ഉത്തരവാദി
നിർവ്വഹണം ആരംഭിക്കുന്നതിന് മുമ്പ് ഉചിതമായ മൂല്യം ഉപയോഗിച്ച് രജിസ്റ്റർ ചെയ്യുക.

-mpic-register=reg
PIC വിലാസത്തിനായി ഉപയോഗിക്കേണ്ട രജിസ്റ്റർ വ്യക്തമാക്കുക. സ്റ്റാൻഡേർഡ് PIC ബേസ് കേസിനായി, ദി
കംപൈലർ നിർണ്ണയിക്കുന്ന ഏതെങ്കിലും അനുയോജ്യമായ രജിസ്റ്ററാണ് ഡിഫോൾട്ട്. സിംഗിൾ PIC ബേസ് കേസിന്,
സ്ഥിരസ്ഥിതിയാണ് R9 ടാർഗെറ്റ് EABI അധിഷ്ഠിതമാണെങ്കിൽ അല്ലെങ്കിൽ സ്റ്റാക്ക്-ചെക്കിംഗ് പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ, അല്ലാത്തപക്ഷം
സ്ഥിരസ്ഥിതിയാണ് R10.

-എംപിക്-ഡാറ്റ-ടെക്സ്റ്റ്-ആപേക്ഷികമാണ്
ഓരോ ഡാറ്റ സെഗ്‌മെന്റുകളും ലോഡ് സമയത്ത് ടെക്‌സ്‌റ്റ് സെഗ്‌മെന്റുമായി ബന്ധപ്പെട്ടതാണെന്ന് കരുതുക. അതുകൊണ്ടു,
പിസി-ആപേക്ഷിക പ്രവർത്തനങ്ങൾ ഉപയോഗിച്ച് ഡാറ്റയെ അഭിസംബോധന ചെയ്യാൻ ഇത് അനുവദിക്കുന്നു. ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി ഓണാണ്
VxWorks RTP ഒഴികെയുള്ള ലക്ഷ്യങ്ങൾക്കായി.

-mpoke-function-name
ഓരോ ഫംഗ്‌ഷന്റെയും പേര് ടെക്‌സ്‌റ്റ് വിഭാഗത്തിലേക്ക് എഴുതുക, ഫംഗ്‌ഷന് നേരിട്ട്
ആമുഖം. ജനറേറ്റ് ചെയ്ത കോഡ് ഇതിന് സമാനമാണ്:

t0
.ascii "arm_poke_function_name", 0
.അലൈൻ
t1
.വേഡ് 0xff000000 + (t1 - t0)
arm_poke_function_name
mov ip, sp
stmfd sp!, {fp, ip, lr, pc}
സബ് എഫ്പി, ഐപി, #4

ഒരു സ്റ്റാക്ക് ബാക്ക്ട്രെയിസ് നടത്തുമ്പോൾ, കോഡിന് "fp + ൽ സംഭരിച്ചിരിക്കുന്ന "pc" മൂല്യം പരിശോധിക്കാൻ കഴിയും
0". ട്രെയ്‌സ് ഫംഗ്‌ഷൻ "pc - 12" ലൊക്കേഷനിലേക്ക് നോക്കുകയാണെങ്കിൽ, ഏറ്റവും മികച്ച 8 ബിറ്റുകൾ
സജ്ജമാക്കുക, അതിനുശേഷം ഇതിന് തൊട്ടുമുമ്പ് ഒരു ഫംഗ്ഷൻ നാമം എംബഡ് ചെയ്തിട്ടുണ്ടെന്ന് നമുക്കറിയാം
ലൊക്കേഷനും നീളവും "((pc[-3]) & 0xff000000)".

-മുമ്പ്
-മാർം
ARM, Thumb സ്റ്റേറ്റുകളിൽ എക്സിക്യൂട്ട് ചെയ്യുന്ന ജനറേറ്റിംഗ് കോഡുകൾക്കിടയിൽ തിരഞ്ഞെടുക്കുക. എന്നതിനായുള്ള സ്ഥിരസ്ഥിതി
മിക്ക കോൺഫിഗറേഷനുകളും ARM സ്റ്റേറ്റിൽ എക്സിക്യൂട്ട് ചെയ്യുന്ന കോഡ് ജനറേറ്റ് ചെയ്യുന്നതാണ്, പക്ഷേ ഡിഫോൾട്ടാണ്
ഉപയോഗിച്ച് GCC കോൺഫിഗർ ചെയ്യുന്നതിലൂടെ മാറ്റാവുന്നതാണ് --with-mode=സംസ്ഥാനം കോൺഫിഗർ ഓപ്ഷൻ.

-mtpcs-frame
തമ്പ് പ്രൊസീജർ കോൾ സ്റ്റാൻഡേർഡിന് അനുസൃതമായ ഒരു സ്റ്റാക്ക് ഫ്രെയിം സൃഷ്ടിക്കുക
എല്ലാ നോൺ-ലീഫ് ഫംഗ്‌ഷനുകളും. (മറ്റൊന്നും വിളിക്കാത്ത ഒന്നാണ് ഇലയുടെ പ്രവർത്തനം
ഫംഗ്‌ഷനുകൾ.) ഡിഫോൾട്ട് ആണ് -mno-tpcs-frame.

-mtpcs-leaf-frame
തമ്പ് പ്രൊസീജർ കോൾ സ്റ്റാൻഡേർഡിന് അനുസൃതമായ ഒരു സ്റ്റാക്ക് ഫ്രെയിം സൃഷ്ടിക്കുക
എല്ലാ ഇല പ്രവർത്തനങ്ങളും. (ഒരു ഇല ഫംഗ്‌ഷൻ മറ്റ് ഫംഗ്‌ഷനുകളൊന്നും വിളിക്കാത്ത ഒന്നാണ്.)
സ്ഥിരസ്ഥിതി -mno-apcs-leaf-frame.

-mcallee-സൂപ്പർ-ഇന്റർവർക്കിംഗ്
കംപൈൽ ചെയ്യുന്ന ഫയലിൽ ബാഹ്യമായി ദൃശ്യമാകുന്ന എല്ലാ പ്രവർത്തനങ്ങളും ഒരു ARM നിർദ്ദേശം നൽകുന്നു
ബാക്കിയുള്ള ഫംഗ്‌ഷൻ എക്‌സിക്യൂട്ട് ചെയ്യുന്നതിന് മുമ്പ് തമ്പ് മോഡിലേക്ക് മാറുന്ന തലക്കെട്ട് സജ്ജമാക്കുക.
നോൺ-ഇന്റർവർക്കിംഗ് കോഡിൽ നിന്ന് ഈ ഫംഗ്ഷനുകളെ വിളിക്കാൻ ഇത് അനുവദിക്കുന്നു. ഈ ഓപ്ഷൻ ആണ്
ഡിഫോൾട്ടായി ഇന്റർവർക്കിംഗ് പ്രവർത്തനക്ഷമമാക്കിയതിനാൽ AAPCS കോൺഫിഗറേഷനുകളിൽ സാധുതയില്ല.

-എംകോളർ-സൂപ്പർ-ഇന്റർവർക്കിംഗ്
ഫംഗ്‌ഷൻ പോയിന്ററുകൾ (വെർച്വൽ ഫംഗ്‌ഷനുകൾ ഉൾപ്പെടെ) വഴിയുള്ള കോളുകൾ ശരിയായി നടപ്പിലാക്കാൻ അനുവദിക്കുന്നു
ഇന്റർവർക്കിംഗിനായി ടാർഗെറ്റ് കോഡ് സമാഹരിച്ചിട്ടുണ്ടോ ഇല്ലയോ എന്നത് പരിഗണിക്കാതെ തന്നെ.
ഈ ഓപ്‌ഷനാണെങ്കിൽ ഒരു ഫംഗ്‌ഷൻ പോയിന്റർ എക്‌സിക്യൂട്ട് ചെയ്യുന്നതിനുള്ള ചെലവിൽ ഒരു ചെറിയ ഓവർഹെഡ് ഉണ്ട്
പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു. ഈ ഓപ്‌ഷൻ AAPCS കോൺഫിഗറേഷനുകളിൽ സാധുതയുള്ളതല്ല, കാരണം പരസ്പര പ്രവർത്തനമാണ്
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി.

-എംടിപി=പേര്
ത്രെഡ് ലോക്കൽ സ്റ്റോറേജ് പോയിന്ററിനായുള്ള ആക്സസ് മോഡൽ വ്യക്തമാക്കുക. സാധുവായ മോഡലുകളാണ്
മൃദു, "__aeabi_read_tp" എന്നതിലേക്ക് കോളുകൾ സൃഷ്ടിക്കുന്നു, cp15, ഏത് ത്രെഡ് ലഭിക്കുന്നു
"cp15" ൽ നിന്നുള്ള പോയിന്റർ നേരിട്ട് (arm6k ആർക്കിടെക്ചറിൽ പിന്തുണയ്ക്കുന്നു), കൂടാതെ കാര്ഏത്
തിരഞ്ഞെടുത്ത പ്രോസസ്സറിന് ലഭ്യമായ ഏറ്റവും മികച്ച രീതി ഉപയോഗിക്കുന്നു. സ്ഥിരസ്ഥിതി ക്രമീകരണം ആണ്
കാര്.

-mtls-dialect=ഭാഷ
ത്രെഡ് ലോക്കൽ സ്റ്റോറേജ് ആക്സസ് ചെയ്യുന്നതിന് ഉപയോഗിക്കേണ്ട ഭാഷാഭേദം വ്യക്തമാക്കുക. രണ്ട് ഭാഷs ആണ്
പിന്തുണച്ചത്---gnu ഒപ്പം gnu2. ദി gnu ഡയലക്ട് യഥാർത്ഥ ഗ്നു സ്കീം തിരഞ്ഞെടുക്കുന്നു
പ്രാദേശികവും ആഗോളവുമായ ഡൈനാമിക് TLS മോഡലുകളെ പിന്തുണയ്ക്കുന്നു. ദി gnu2 ഡയലക്റ്റ് ഗ്നു തിരഞ്ഞെടുക്കുന്നു
പങ്കിട്ട ലൈബ്രറികൾക്ക് മികച്ച പ്രകടനം നൽകുന്ന ഡിസ്ക്രിപ്റ്റർ സ്കീം. GNU
ഡിസ്ക്രിപ്റ്റർ സ്കീം യഥാർത്ഥ സ്കീമുമായി പൊരുത്തപ്പെടുന്നു, പക്ഷേ പുതിയത് ആവശ്യമാണ്
അസംബ്ലർ, ലിങ്കർ, ലൈബ്രറി പിന്തുണ. പ്രാരംഭ, പ്രാദേശിക എക്സിക്യൂട്ടീവ് TLS മോഡലുകൾ
ഈ ഓപ്‌ഷൻ ബാധിക്കാത്തതിനാൽ എല്ലായ്പ്പോഴും യഥാർത്ഥ സ്കീം ഉപയോഗിക്കുക.

-mword-relocations
പദ വലുപ്പത്തിലുള്ള മൂല്യങ്ങളിൽ (അതായത് R_ARM_ABS32) കേവലമായ സ്ഥാനചലനങ്ങൾ മാത്രം സൃഷ്‌ടിക്കുക. ഇതാണ്
റൺടൈം ലോഡർ അടിച്ചേൽപ്പിക്കുന്ന ടാർഗെറ്റുകളിൽ (uClinux, SymbianOS) സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി
ഈ നിയന്ത്രണം, എപ്പോൾ -fpic or -fPIC വ്യക്തമാക്കിയിട്ടുണ്ട്.

-mfix-cortex-m3-ldrd
ചില Cortex-M3 കോറുകൾ "ldrd" നിർദ്ദേശങ്ങൾ നൽകുമ്പോൾ ഡാറ്റ അഴിമതിക്ക് കാരണമാകും
ഓവർലാപ്പുചെയ്യുന്ന ലക്ഷ്യസ്ഥാനവും അടിസ്ഥാന രജിസ്റ്ററുകളും ഉപയോഗിക്കുന്നു. ഈ ഓപ്ഷൻ സൃഷ്ടിക്കുന്നത് ഒഴിവാക്കുന്നു
ഈ നിർദ്ദേശങ്ങൾ. എപ്പോൾ ഈ ഓപ്‌ഷൻ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കും -mcpu=cortex-m3 is
വ്യക്തമാക്കിയ.

- munaligned-access
-mno-unaligned-access
വിലാസങ്ങളിൽ നിന്ന് 16-, 32- ബിറ്റ് മൂല്യങ്ങൾ വായിക്കുന്നതും എഴുതുന്നതും പ്രവർത്തനക്ഷമമാക്കുന്നു (അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുന്നു)
16- അല്ലെങ്കിൽ 32- ബിറ്റ് വിന്യസിച്ചിട്ടില്ല. ഡിഫോൾട്ടായി വിന്യസിക്കാത്ത ആക്‌സസ് എല്ലാവർക്കുമായി പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു
പ്രീ-ARMv6 ഉം എല്ലാ ARMv6-M ആർക്കിടെക്ചറുകളും, കൂടാതെ മറ്റെല്ലാ ആർക്കിടെക്ചറുകൾക്കും പ്രവർത്തനക്ഷമമാക്കി. എങ്കിൽ
അലൈൻ ചെയ്യാത്ത ആക്‌സസ് പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല, തുടർന്ന് പാക്ക് ചെയ്‌ത ഡാറ്റ ഘടനകളിലെ വാക്കുകൾ ആക്‌സസ് ചെയ്യപ്പെടും a
ഒരു സമയത്ത് ബൈറ്റ്.

"Tag_CPU_unaligned_access" എന്ന ARM ആട്രിബ്യൂട്ട് ജനറേറ്റ് ചെയ്ത ഒബ്‌ജക്റ്റ് ഫയലിൽ സജ്ജീകരിച്ചിരിക്കുന്നു
ഈ ഓപ്ഷന്റെ ക്രമീകരണത്തെ ആശ്രയിച്ച് ശരിയോ തെറ്റോ. അലൈൻ ചെയ്യാത്ത ആക്സസ് ആണെങ്കിൽ
പ്രവർത്തനക്ഷമമാക്കിയ ശേഷം "__ARM_FEATURE_UNALIGNED" എന്ന പ്രീപ്രൊസസ്സർ ചിഹ്നവും നിർവചിക്കപ്പെടുന്നു.

-mneon-for-64bits
സ്കെയിലർ 64-ബിറ്റ് പ്രവർത്തനങ്ങൾ കൈകാര്യം ചെയ്യാൻ നിയോൺ ഉപയോഗിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുന്നു. ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു
കാരണം കോർ രജിസ്റ്ററുകളിൽ നിന്ന് നിയണിലേക്ക് ഡാറ്റ മാറ്റുന്നതിനുള്ള ചെലവ് കൂടുതലാണ്.

-mslow-ഫ്ലാഷ്-ഡാറ്റ
ഫ്ലാഷിൽ നിന്ന് ഡാറ്റ ലോഡുചെയ്യുന്നത് നിർദ്ദേശങ്ങൾ ലഭ്യമാക്കുന്നതിനേക്കാൾ വേഗത കുറഞ്ഞതാണെന്ന് കരുതുക. അതിനാൽ അക്ഷരാർത്ഥത്തിൽ
മികച്ച പ്രകടനത്തിനായി ലോഡ് കുറയ്ക്കുന്നു. എപ്പോൾ മാത്രമേ ഈ ഓപ്ഷൻ പിന്തുണയ്ക്കൂ
ARMv7 M-പ്രൊഫൈലിനായി കംപൈൽ ചെയ്യുകയും സ്ഥിരസ്ഥിതിയായി ഓഫാക്കുകയും ചെയ്യുന്നു.

-മാസം-വാക്യഘടന-ഏകീകൃത
ഇൻലൈൻ അസംബ്ലർ ഏകീകൃത asm വാക്യഘടനയാണ് ഉപയോഗിക്കുന്നതെന്ന് കരുതുക. ഡിഫോൾട്ട് നിലവിൽ ഓഫാണ്
ഇത് വിഭജിച്ച വാക്യഘടനയെ സൂചിപ്പിക്കുന്നു. നിലവിൽ ഈ ഓപ്‌ഷൻ Thumb1, എന്നിവയ്‌ക്ക് മാത്രമേ ലഭ്യമാകൂ
ARM അവസ്ഥയിലും Thumb2-ലും യാതൊരു സ്വാധീനവുമില്ല. എന്നിരുന്നാലും, ഭാവിയിലെ റിലീസുകളിൽ ഇത് മാറിയേക്കാം
ജി.സി.സി. വിഭജിച്ച വാക്യഘടന ഒഴിവാക്കിയതായി കണക്കാക്കണം.

-അത്
ARMv8-ന്റെ നിയമങ്ങൾക്ക് അനുസൃതമായി ഐടി ബ്ലോക്കുകളുടെ ഉത്പാദനം നിയന്ത്രിക്കുന്നു. ഐടി ബ്ലോക്കുകൾക്ക് കഴിയും
തിരഞ്ഞെടുത്ത ഒരു കൂട്ടം നിർദ്ദേശങ്ങളിൽ നിന്ന് ഒരൊറ്റ 16-ബിറ്റ് നിർദ്ദേശം മാത്രമേ അടങ്ങിയിട്ടുള്ളൂ. ഈ
ARMv8 Thumb മോഡിൽ ഡിഫോൾട്ടായി ഓപ്ഷൻ ഓണാണ്.

-mprint-tune-info
സിപിയു ട്യൂണിംഗ് വിവരങ്ങൾ അസംബ്ലർ ഫയലിൽ കമന്റായി പ്രിന്റ് ചെയ്യുക. ഇത് ഉപയോഗിക്കുന്ന ഒരു ഓപ്ഷനാണ്
കംപൈലറിന്റെ റിഗ്രഷൻ ടെസ്റ്റിംഗിനായി മാത്രം, സാധാരണ ഉപയോഗത്തിന് ഉദ്ദേശിച്ചുള്ളതല്ല
കോഡ് കംപൈൽ ചെയ്യുന്നു. ഈ ഓപ്‌ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.

എ.വി.ആർ ഓപ്ഷനുകൾ

AVR നടപ്പിലാക്കലുകൾക്കായി ഈ ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mmcu=mcu
Atmel AVR നിർദ്ദേശ സെറ്റ് ആർക്കിടെക്ചറുകൾ (ISA) അല്ലെങ്കിൽ MCU തരം വ്യക്തമാക്കുക.

ഈ ഓപ്ഷന്റെ ഡിഫോൾട്ട് @tie{} ആണ്avr2.

ഇനിപ്പറയുന്ന AVR ഉപകരണങ്ങളും ISA-കളും GCC പിന്തുണയ്ക്കുന്നു:

"avr2"
8@tie{}KiB വരെ പ്രോഗ്രാം മെമ്മറിയുള്ള "ക്ലാസിക്" ഉപകരണങ്ങൾ. mcu@tie{}= "attiny22",
"attiny26", "at90c8534", "at90s2313", "at90s2323", "at90s2333", "at90s2343",
"at90s4414", "at90s4433", "at90s4434", "at90s8515", "at90s8535".

"avr25"
8@tie{}KiB വരെ പ്രോഗ്രാം മെമ്മറിയും "MOVW" ഉള്ള "ക്ലാസിക്" ഉപകരണങ്ങൾ
നിർദ്ദേശം. mcu@tie{}= "ata5272", "ata6616c", "attiny13", "attiny13a",
"attiny2313", "attiny2313a", "attiny24", "attiny24a", "attiny25", "attiny261",
"attiny261a", "attiny43u", "attiny4313", "attiny44", "attiny44a", "attiny441",
"attiny45", "attiny461", "attiny461a", "attiny48", "attiny828", "attiny84",
"attiny84a", "attiny841", "attiny85", "attiny861", "attiny861a", "attiny87",
"attiny88", "at86rf401".

"avr3"
പ്രോഗ്രാം മെമ്മറിയുടെ 16@tie{}KiB 64@tie{}KiB വരെയുള്ള "ക്ലാസിക്" ഉപകരണങ്ങൾ.
mcu@tie{}= "at43usb355", "at76c711".

"avr31"
128@tie{}KiB പ്രോഗ്രാം മെമ്മറിയുള്ള "ക്ലാസിക്" ഉപകരണങ്ങൾ. mcu@tie{}= "atmega103",
"at43usb320".

"avr35"
16@tie{}KiB വരെ 64@tie{}KiB വരെയുള്ള "ക്ലാസിക്" ഉപകരണങ്ങൾ
"MOVW" നിർദ്ദേശം. mcu@tie{}= "ata5505", "ata6617c", "ata664251",
"atmega16u2", "atmega32u2", "atmega8u2", "attiny1634", "attiny167", "at90usb162",
"at90usb82".

"avr4"
8@tie{}KiB വരെ പ്രോഗ്രാം മെമ്മറിയുള്ള "മെച്ചപ്പെടുത്തിയ" ഉപകരണങ്ങൾ. mcu@tie{}= "ata6285",
"ata6286", "ata6289", "ata6612c", "atmega48", "atmega48a", "atmega48p",
"atmega48pa", "atmega8", "atmega8a", "atmega8hva", "atmega8515", "atmega8535",
"atmega88", "atmega88a", "atmega88p", "atmega88pa", "at90pwm1", "at90pwm2",
"at90pwm2b", "at90pwm3", "at90pwm3b", "at90pwm81".

"avr5"
16@tie{}KiB 64@tie{}KiB വരെയുള്ള പ്രോഗ്രാം മെമ്മറിയുള്ള "മെച്ചപ്പെടുത്തിയ" ഉപകരണങ്ങൾ.
mcu@tie{}= "ata5702m322", "ata5782", "ata5790", "ata5790n", "ata5795", "ata5831",
"ata6613c", "ata6614q", "atmega16", "atmega16a", "atmega16hva", "atmega16hva2",
"atmega16hvb", "atmega16hvbrevb", "atmega16m1", "atmega16u4", "atmega161",
"atmega162", "atmega163", "atmega164a", "atmega164p", "atmega164pa", "atmega165",
"atmega165a", "atmega165p", "atmega165pa", "atmega168", "atmega168a",
"atmega168p", "atmega168pa", "atmega169", "atmega169a", "atmega169p",
"atmega169pa", "atmega32", "atmega32a", "atmega32c1", "atmega32hvb",
"atmega32hvbrevb", "atmega32m1", "atmega32u4", "atmega32u6", "atmega323",
"atmega324a", "atmega324p", "atmega324pa", "atmega325", "atmega325a",
"atmega325p", "atmega325pa", "atmega3250", "atmega3250a", "atmega3250p",
"atmega3250pa", "atmega328", "atmega328p", "atmega329", "atmega329a",
"atmega329p", "atmega329pa", "atmega3290", "atmega3290a", "atmega3290p",
"atmega3290pa", "atmega406", "atmega64", "atmega64a", "atmega64c1", "atmega64hve",
"atmega64hve2", "atmega64m1", "atmega64rfr2", "atmega640", "atmega644",
"atmega644a", "atmega644p", "atmega644pa", "atmega644rfr2", "atmega645",
"atmega645a", "atmega645p", "atmega6450", "atmega6450a", "atmega6450p",
"atmega649", "atmega649a", "atmega649p", "atmega6490", "atmega6490a",
"atmega6490p", "at90can32", "at90can64", "at90pwm161", "at90pwm216", "at90pwm316",
"at90scr100", "at90usb646", "at90usb647", "at94k", "m3000".

"avr51"
128@tie{}KiB പ്രോഗ്രാം മെമ്മറിയുള്ള "മെച്ചപ്പെടുത്തിയ" ഉപകരണങ്ങൾ. mcu@tie{}= "atmega128",
"atmega128a", "atmega128rfa1", "atmega128rfr2", "atmega1280", "atmega1281",
"atmega1284", "atmega1284p", "atmega1284rfr2", "at90can128", "at90usb1286",
"at90usb1287".

"avr6"
3-ബൈറ്റ് PC ഉള്ള "മെച്ചപ്പെടുത്തിയ" ഉപകരണങ്ങൾ, അതായത് 128@tie{}KiB പ്രോഗ്രാമിൽ കൂടുതൽ
മെമ്മറി. mcu@tie{}= "atmega256rfr2", "atmega2560", "atmega2561", "atmega2564rfr2".

"avrxmega2"
8@tie{}KiB-ൽ കൂടുതൽ, 64@tie{}KiB വരെ പ്രോഗ്രാം മെമ്മറിയുള്ള "XMEGA" ഉപകരണങ്ങൾ.
mcu@tie{}= "atxmega16a4", "atxmega16a4u", "atxmega16c4", "atxmega16d4",
"atxmega16e5", "atxmega32a4", "atxmega32a4u", "atxmega32c3", "atxmega32c4",
"atxmega32d3", "atxmega32d4", "atxmega32e5", "atxmega8e5".

"avrxmega4"
പ്രോഗ്രാമിന്റെ 64@tie{}KiB-ലും 128@tie{}KiB വരെയുമുള്ള "XMEGA" ഉപകരണങ്ങൾ
മെമ്മറി. mcu@tie{}= "atxmega64a3", "atxmega64a3u", "atxmega64a4u", "atxmega64b1",
"atxmega64b3", "atxmega64c3", "atxmega64d3", "atxmega64d4".

"avrxmega5"
പ്രോഗ്രാമിന്റെ 64@tie{}KiB-ലും 128@tie{}KiB വരെയുമുള്ള "XMEGA" ഉപകരണങ്ങൾ
മെമ്മറിയും 64@tie{}KiB-ൽ കൂടുതൽ റാം. mcu@tie{}= "atxmega64a1",
"atxmega64a1u".

"avrxmega6"
128@tie{}KiB-ൽ കൂടുതൽ പ്രോഗ്രാം മെമ്മറിയുള്ള "XMEGA" ഉപകരണങ്ങൾ. mcu@tie{}=
"atxmega128a3", "atxmega128a3u", "atxmega128b1", "atxmega128b3", "atxmega128c3",
"atxmega128d3", "atxmega128d4", "atxmega192a3", "atxmega192a3u", "atxmega192c3",
"atxmega192d3", "atxmega256a3", "atxmega256a3b", "atxmega256a3bu",
"atxmega256a3u", "atxmega256c3", "atxmega256d3", "atxmega384c3", "atxmega384d3".

"avrxmega7"
128@tie{}KiB-ൽ കൂടുതൽ പ്രോഗ്രാം മെമ്മറിയുള്ള "XMEGA" ഉപകരണങ്ങൾ
64@tie{}KiB of RAM. mcu@tie{}= "atxmega128a1", "atxmega128a1u", "atxmega128a4u".

"അവർട്ടിനി"
512@tie{}4@tie{}KiB വരെയുള്ള പ്രോഗ്രാം മെമ്മറിയുള്ള "TINY" ടിനി കോർ ഉപകരണങ്ങൾ.
mcu@tie{}= "attiny10", "attiny20", "attiny4", "attiny40", "attiny5", "attiny9".

"avr1"
ഈ ISA ഏറ്റവും കുറഞ്ഞ AVR കോർ മുഖേന നടപ്പിലാക്കുകയും അസംബ്ലർക്കായി മാത്രം പിന്തുണയ്ക്കുകയും ചെയ്യുന്നു.
mcu@tie{}= "attiny11", "attiny12", "attiny15", "attiny28", "at90s1200".

-maccumulate-args
ഔട്ട്‌ഗോയിംഗ് ഫംഗ്‌ഷൻ ആർഗ്യുമെന്റുകൾ ശേഖരിക്കുകയും ആവശ്യമായ സ്റ്റാക്ക് സ്‌പെയ്‌സ് നേടുകയും/റിലീസ് ചെയ്യുകയും ചെയ്യുക
ഫംഗ്‌ഷൻ പ്രോലോഗ്/എപ്പിലോഗിൽ ഒരിക്കൽ ഔട്ട്‌ഗോയിംഗ് ഫംഗ്‌ഷൻ ആർഗ്യുമെന്റുകൾ. ഈ ഓപ്ഷൻ ഇല്ലാതെ,
ഔട്ട്‌ഗോയിംഗ് ആർഗ്യുമെന്റുകൾ ഒരു ഫംഗ്‌ഷൻ വിളിക്കുന്നതിന് മുമ്പ് തള്ളുകയും പിന്നീട് പോപ്പ് ചെയ്യുകയും ചെയ്യുന്നു.

ഫംഗ്‌ഷൻ കോളിന് ശേഷം ആർഗ്യുമെന്റുകൾ പോപ്പ് ചെയ്യുന്നത് AVR-ൽ ചെലവേറിയതായിരിക്കും
ആർഗ്യുമെന്റുകൾ ആവശ്യമുള്ളതിനാൽ സ്റ്റാക്ക് സ്പേസ് ശേഖരിക്കുന്നത് ചെറിയ എക്സിക്യൂട്ടബിളുകളിലേക്ക് നയിച്ചേക്കാം
അത്തരമൊരു ഫംഗ്ഷൻ കോളിന് ശേഷം സ്റ്റാക്കിൽ നിന്ന് നീക്കം ചെയ്യരുത്.

ഈ ഓപ്‌ഷൻ നിരവധി കോളുകൾ ചെയ്യുന്ന ഫംഗ്‌ഷനുകളുടെ കോഡ് വലുപ്പം കുറയ്‌ക്കാൻ ഇടയാക്കും
പ്രിന്റ് എഫ് പോലുള്ള ഫംഗ്‌ഷനുകളിലേക്കുള്ള കോളുകൾ പോലെ സ്റ്റാക്കിൽ അവയുടെ ആർഗ്യുമെന്റുകൾ ലഭിക്കുന്ന ഫംഗ്‌ഷനുകൾ.

-mbranch-cost=ചെലവ്
സോപാധിക ബ്രാഞ്ച് നിർദ്ദേശങ്ങൾക്കായി ബ്രാഞ്ച് ചെലവുകൾ സജ്ജമാക്കുക ചെലവ്. ന്യായമായ മൂല്യങ്ങൾ
വേണ്ടി ചെലവ് ചെറിയ, നെഗറ്റീവ് അല്ലാത്ത പൂർണ്ണസംഖ്യകളാണ്. ഡിഫോൾട്ട് ബ്രാഞ്ച് വില 0 ആണ്.

-mcall-prologes
ഫംഗ്‌ഷൻ പ്രോലോഗുകൾ/എപ്പിലോഗുകൾ ഉചിതമായ സബ്റൂട്ടീനുകളിലേക്കുള്ള കോളുകളായി വിപുലീകരിക്കുന്നു. കോഡ്
വലിപ്പം ചെറുതാണ്.

-മിന്റ്8
"int" 8-ബിറ്റ് പൂർണ്ണസംഖ്യയാണെന്ന് കരുതുക. ഇത് എല്ലാ തരത്തിലുമുള്ള വലുപ്പങ്ങളെ ബാധിക്കുന്നു: ഒരു "char" 1 ആണ്
ബൈറ്റ്, ഒരു "int" എന്നത് 1 ബൈറ്റ് ആണ്, ഒരു "ലോംഗ്" എന്നത് 2 ബൈറ്റുകൾ ആണ്, "ലോംഗ് ലോംഗ്" എന്നത് 4 ബൈറ്റുകൾ ആണ്. ദയവായി
ഈ ഓപ്‌ഷൻ C മാനദണ്ഡങ്ങളുമായി പൊരുത്തപ്പെടുന്നില്ല, പക്ഷേ ഇത് ചെറുതാക്കി മാറ്റുന്നു
കോഡ് വലിപ്പം.

-mn-flash=സംഖ്യ
ഫ്ലാഷ് മെമ്മറിക്ക് വലുപ്പമുണ്ടെന്ന് കരുതുക സംഖ്യ തവണ 64@tie{}KiB.

-mno-തടസ്സങ്ങൾ
ജനറേറ്റഡ് കോഡ് ഹാർഡ്‌വെയർ തടസ്സങ്ങളുമായി പൊരുത്തപ്പെടുന്നില്ല. കോഡ് വലുപ്പം ചെറുതാണ്.

-mrelax
"കോൾ" റെസ്‌പ് മാറ്റിസ്ഥാപിക്കാൻ ശ്രമിക്കുക. "JMP" നിർദ്ദേശം "RCALL" എന്ന ചെറിയ റെസ്‌പ്. "RJMP"
ബാധകമെങ്കിൽ നിർദ്ദേശം. ക്രമീകരണം -mrelax വെറും ചേർക്കുന്നു --mlink-relax എന്ന ഓപ്ഷൻ
അസംബ്ലറുടെ കമാൻഡ് ലൈനും --ശാന്തമാകൂ ലിങ്കറുടെ കമാൻഡ് ലൈനിലേക്കുള്ള ഓപ്ഷൻ.

ജമ്പ് ഓഫ്‌സെറ്റുകൾ മുമ്പ് അറിയാത്തതിനാൽ ലിങ്കർ ജമ്പ് റിലാക്സിംഗ് നടത്തുന്നു
കോഡ് സ്ഥിതിചെയ്യുന്നു. അതിനാൽ, കംപൈലർ സൃഷ്ടിച്ച അസംബ്ലർ കോഡ് ഒന്നുതന്നെയാണ്,
എന്നാൽ എക്സിക്യൂട്ടബിളിലെ നിർദ്ദേശങ്ങൾ അസംബ്ലറിലെ നിർദ്ദേശങ്ങളിൽ നിന്ന് വ്യത്യസ്തമായിരിക്കും
കോഡ്.

ലിങ്കർ സ്റ്റബുകൾ ആവശ്യമെങ്കിൽ റിലാക്സിംഗ് ഓണാക്കിയിരിക്കണം, "EIND" എന്നതിലെ വിഭാഗം കാണുക കൂടാതെ
ലിങ്കർ അപൂർണ്ണങ്ങൾ ചുവടെ.

-mrmw
റീഡ്-മോഡിഫൈ-റൈറ്റ് നിർദ്ദേശങ്ങൾ "XCH", "LAC", "LAS" എന്നിവ ഉപകരണം പിന്തുണയ്ക്കുന്നുവെന്ന് കരുതുക.
കൂടാതെ "LAT".

-msp8
സ്റ്റാക്ക് പോയിന്റർ രജിസ്റ്ററിനെ 8-ബിറ്റ് രജിസ്റ്ററായി പരിഗണിക്കുക, അതായത് ഉയർന്ന ബൈറ്റ് കണക്കാക്കുക
സ്റ്റാക്ക് പോയിന്റർ പൂജ്യമാണ്. പൊതുവേ, നിങ്ങൾ ഈ ഓപ്ഷൻ കൈകൊണ്ട് സജ്ജീകരിക്കേണ്ടതില്ല.

മൾട്ടിലിബുകൾ തിരഞ്ഞെടുക്കുന്നതിനും നിർമ്മിക്കുന്നതിനും കംപൈലർ ആന്തരികമായി ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു
"avr2", "avr25" എന്നീ ആർക്കിടെക്ചറുകൾ. ഈ ആർക്കിടെക്ചറുകൾ ഉള്ളതും ഇല്ലാത്തതുമായ ഉപകരണങ്ങളെ മിക്സ് ചെയ്യുന്നു
"SPH". അല്ലാതെ മറ്റേതെങ്കിലും ക്രമീകരണത്തിന് -mmcu=avr2 or -mmcu=avr25 കമ്പൈലർ ഡ്രൈവർ കൂട്ടിച്ചേർക്കുന്നു
അല്ലെങ്കിൽ കമ്പൈലർ ശരിയായ കമാൻഡ് ലൈനിൽ നിന്ന് ഈ ഓപ്ഷൻ നീക്കം ചെയ്യുന്നു, കാരണം കമ്പൈലർ
ഉപകരണത്തിനോ ആർക്കിടെക്ചറിനോ 8-ബിറ്റ് സ്റ്റാക്ക് പോയിന്റർ ഉണ്ടോ എന്നും അതിനാൽ "SPH" ഇല്ലെന്നും അറിയാം.
രജിസ്റ്റർ ചെയ്യണോ വേണ്ടയോ.

-mstrict-X
ഹാർഡ്‌വെയർ നിർദ്ദേശിച്ച വിധത്തിൽ വിലാസ രജിസ്റ്റർ "X" ഉപയോഗിക്കുക. ഇതിനർത്ഥം "എക്സ്" എന്നാണ്
പരോക്ഷ, പോസ്റ്റ്-ഇൻക്രിമെന്റ് അല്ലെങ്കിൽ പ്രീ-ഡിക്രിമെന്റ് വിലാസത്തിൽ മാത്രം ഉപയോഗിക്കുന്നു.

ഈ ഓപ്‌ഷൻ കൂടാതെ, "X" രജിസ്റ്റർ "Y" അല്ലെങ്കിൽ "Z" പോലെ തന്നെ ഉപയോഗിക്കാം
തുടർന്ന് അധിക നിർദ്ദേശങ്ങളാൽ അനുകരിക്കപ്പെടുന്നു. ഉദാഹരണത്തിന്, ഒരു മൂല്യം ലോഡ് ചെയ്യുന്നു
ഒരു രജിസ്റ്ററിലേക്ക് ഒരു ചെറിയ നോൺ-നെഗറ്റീവ് "const <64" ഉപയോഗിച്ച് "X+const" വിലാസം Rn is
ആയി നിർവഹിച്ചു

adiw r26, const; X += const
ld , എക്സ് ; = *എക്സ്
sbiw r26, const; X -= const

-mtiny-stack
സ്റ്റാക്ക് പോയിന്ററിന്റെ താഴത്തെ 8@tie{}ബിറ്റുകൾ മാത്രം മാറ്റുക.

-നോഡിവിസെലിബ്
AVR-LibC-യുടെ ഉപകരണ നിർദ്ദിഷ്‌ട ലൈബ്രറി "libdev.a" എന്നതിനെതിരെ ലിങ്ക് ചെയ്യരുത്.

-Waddr-space-convert
തത്ഫലമായുണ്ടാകുന്ന വിലാസത്തിൽ വിലാസ ഇടങ്ങൾ തമ്മിലുള്ള പരിവർത്തനങ്ങളെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുക
ഇൻകമിംഗ് വിലാസ സ്ഥലത്ത് സ്പേസ് അടങ്ങിയിട്ടില്ല.

"EIND" ഉം ഫ്ലാഷിന്റെ 128 കി ബൈറ്റുകളിൽ കൂടുതൽ ഉള്ള ഉപകരണങ്ങളും

നടപ്പാക്കലിലെ പോയിന്ററുകൾക്ക് 16@tie{}ബിറ്റുകൾ വീതിയുണ്ട്. ഒരു ഫംഗ്‌ഷന്റെയോ ലേബലിന്റെയോ വിലാസം
പരോക്ഷമായ കുതിച്ചുചാട്ടങ്ങൾക്കും കോളുകൾക്കും ഏത് കോഡും ടാർഗെറ്റുചെയ്യാൻ കഴിയുന്ന തരത്തിൽ പദ വിലാസമായി പ്രതിനിധീകരിക്കുന്നു
64@tie{}കി വാക്കുകളുടെ പരിധിയിലുള്ള വിലാസം.

128@tie{}കി ബൈറ്റുകളിൽ കൂടുതൽ ഉള്ള ഉപകരണങ്ങളിൽ പരോക്ഷമായ കുതിപ്പ് സുഗമമാക്കുന്നതിന്
പ്രോഗ്രാം മെമ്മറി സ്‌പെയ്‌സ്, "EIND" എന്ന പേരിൽ ഒരു പ്രത്യേക ഫംഗ്‌ഷൻ രജിസ്റ്റർ ഉണ്ട്
"EICALL" അല്ലെങ്കിൽ "EIJMP" നിർദ്ദേശങ്ങൾ ആയിരിക്കുമ്പോൾ ടാർഗെറ്റ് വിലാസത്തിന്റെ ഏറ്റവും പ്രധാനപ്പെട്ട ഭാഗം
ഉപയോഗിച്ചു.

ഈ ഉപകരണങ്ങളിലെ പരോക്ഷ ജമ്പുകളും കോളുകളും കംപൈലർ ഇനിപ്പറയുന്ന രീതിയിൽ കൈകാര്യം ചെയ്യുന്നു
ചില പരിമിതികൾക്ക് വിധേയമായി:

* കംപൈലർ ഒരിക്കലും "EIND" സജ്ജീകരിക്കുന്നില്ല.

* കംപൈലർ "EICALL"/"EIJMP" നിർദ്ദേശങ്ങളിൽ "EIND" ഉപയോഗിക്കുന്നു അല്ലെങ്കിൽ വായിച്ചേക്കാം
"RET" മുഖേന ഒരു പരോക്ഷ കോൾ/ജമ്പ് അനുകരിക്കാൻ "EIND" നേരിട്ട്
നിർദ്ദേശം.

* കംപൈലർ അനുമാനിക്കുന്നത് "EIND" എന്നത് സ്റ്റാർട്ടപ്പ് കോഡ് സമയത്തോ സമയത്തോ ഒരിക്കലും മാറില്ല എന്നാണ്
അപേക്ഷ. പ്രത്യേകിച്ചും, "EIND" ഫംഗ്‌ഷനിലോ തടസ്സത്തിലോ സംരക്ഷിച്ചിട്ടില്ല/പുനഃസ്ഥാപിച്ചിട്ടില്ല
സേവന ദിനചര്യയുടെ ആമുഖം/എപ്പിലോഗ്.

* ഫംഗ്ഷനുകളിലേക്കുള്ള പരോക്ഷ കോളുകൾക്കും കമ്പ്യൂട്ട് ചെയ്ത ഗോട്ടോയ്ക്കും, ലിങ്കർ ജനറേറ്റുചെയ്യുന്നു കുറ്റിച്ചെടികൾ. കുറ്റിച്ചെടികൾ
ജമ്പ് പാഡുകൾ എന്നും വിളിക്കാറുണ്ട് ട്രാംപോളിനുകൾ. അങ്ങനെ, പരോക്ഷ കോൾ/ജമ്പ് ഇതിലേക്ക് കുതിക്കുന്നു
അത്തരമൊരു അപൂർണ്ണം. ആവശ്യമുള്ള വിലാസത്തിലേക്കുള്ള നേരിട്ടുള്ള കുതിപ്പ് അപൂർണ്ണത്തിൽ അടങ്ങിയിരിക്കുന്നു.

* ലിങ്കർ റിലാക്സേഷൻ ഓണാക്കിയിരിക്കണം, അതുവഴി ലിങ്കർ അപൂർണ്ണതകൾ ശരിയായി സൃഷ്ടിക്കുന്നു
എല്ലാ സാഹചര്യങ്ങളിലും. കമ്പൈലർ ഓപ്ഷൻ കാണുക -mrelax ഒപ്പം ലിങ്കർ ഓപ്ഷനും --ശാന്തമാകൂ.
ലിങ്കർ അപൂർണ്ണതകൾ സൃഷ്ടിക്കേണ്ടതും എന്നാൽ അബോർറ്റ് ചെയ്യുന്നതുമായ കോർണർ കേസുകളുണ്ട്
വിശ്രമം കൂടാതെ സഹായകരമായ ഒരു പിശക് സന്ദേശം ഇല്ലാതെ.

* "EIND = 0" ഉള്ള കോഡിനായി ഡിഫോൾട്ട് ലിങ്കർ സ്ക്രിപ്റ്റ് ക്രമീകരിച്ചിരിക്കുന്നു. കോഡ് അനുമാനിക്കുകയാണെങ്കിൽ
"EIND != 0" ഉപയോഗിച്ച് ഒരു സജ്ജീകരണത്തിനായി പ്രവർത്തിക്കാൻ, ക്രമത്തിൽ ഒരു ഇഷ്‌ടാനുസൃത ലിങ്കർ സ്‌ക്രിപ്റ്റ് ഉപയോഗിക്കേണ്ടതുണ്ട്
".trampolines" എന്ന് തുടങ്ങുന്ന വിഭാഗങ്ങളെ സെഗ്മെന്റിൽ സ്ഥാപിക്കാൻ
"EIND" ചൂണ്ടിക്കാണിക്കുന്നു.

* libgcc-ൽ നിന്നുള്ള സ്റ്റാർട്ടപ്പ് കോഡ് ഒരിക്കലും "EIND" സജ്ജീകരിക്കുന്നില്ല. സ്റ്റാർട്ടപ്പ് കോഡ് ഒരു മിശ്രിതമാണെന്ന് ശ്രദ്ധിക്കുക
libgcc, AVR-LibC എന്നിവയിൽ നിന്നുള്ള കോഡ്. "EIND"-ൽ AVR-LibC-യുടെ സ്വാധീനത്തിന്, AVR- കാണുക
LibC ഉപയോക്തൃ മാനുവൽ ("http://nongnu.org/avr-libc/user-manual/").

* ഉപയോക്തൃ-നിർദ്ദിഷ്ട സ്റ്റാർട്ടപ്പ് കോഡിന് "EIND" നേരത്തെ സജ്ജീകരിക്കുന്നത് നിയമാനുസൃതമാണ്, ഉദാഹരണത്തിന്
".init3" വിഭാഗത്തിൽ സ്ഥിതി ചെയ്യുന്ന ഇനീഷ്യലൈസേഷൻ കോഡിന്റെ മാർഗങ്ങൾ. അത്തരം കോഡ് മുമ്പ് പ്രവർത്തിക്കുന്നു
റാം സമാരംഭിക്കുകയും കൺസ്ട്രക്‌റ്ററുകളെ വിളിക്കുകയും ചെയ്യുന്ന പൊതുവായ സ്റ്റാർട്ടപ്പ് കോഡ്, എന്നാൽ ബിറ്റിനുശേഷം
AVR-LibC-ൽ നിന്നുള്ള സ്റ്റാർട്ടപ്പ് കോഡ്, വെക്റ്റർ ടേബിൾ ഉള്ള സെഗ്മെന്റിലേക്ക് "EIND" സജ്ജമാക്കുന്നു
സ്ഥിതി ചെയ്യുന്നത്.

#ഉൾപ്പെടുന്നു

സ്റ്റാറ്റിക് അസാധുവാണ്
__ആട്രിബ്യൂട്ട്__((വിഭാഗം(".init3"),നഗ്ന,ഉപയോഗിച്ച,ഇൻസ്ട്രുമെന്റ്_ഫംഗ്ഷൻ))
init3_set_eind (അസാധു)
{
__asm ​​അസ്ഥിരമായ ("ldi r24,pm_hh8(__trampolines_start)\n\t"
"out %i0,r24" :: "n" (&EIND) : "r24","മെമ്മറി");
}

ലിങ്കർ സ്ക്രിപ്റ്റിൽ "__trampolines_start" ചിഹ്നം നിർവചിച്ചിരിക്കുന്നു.

* താഴെപ്പറയുന്ന രണ്ട് വ്യവസ്ഥകളുണ്ടെങ്കിൽ ലിങ്കർ സ്വയമേവ അപൂർണ്ണത സൃഷ്ടിക്കുന്നു
കണ്ടുമുട്ടി:

-
(ഹ്രസ്വമാണ് ജനറേറ്റ് കുറ്റിച്ചെടികൾ) അങ്ങനെ:

LDI r24, lo8(gs( ))
LDI r25, hi8(gs( ))

-
പുറത്ത് അപൂർണ്ണതയുള്ള ഭാഗം.

* ഇനിപ്പറയുന്ന സാഹചര്യങ്ങളിൽ കോഡ് ലേബലുകൾക്കായി കംപൈലർ അത്തരം "ജിഎസ്" മോഡിഫയറുകൾ പുറപ്പെടുവിക്കുന്നു:

-
-
- -mcall-prologes>
കമാൻഡ്-ലൈൻ ഓപ്ഷൻ.

-
നിങ്ങൾക്ക് വ്യക്തമാക്കാൻ കഴിയുന്ന പട്ടികകൾ -fno-ജമ്പ്-ടേബിളുകൾ കമാൻഡ്-ലൈൻ ഓപ്ഷൻ.

-
-
* ഇതുപോലെയുള്ള പ്രതീകാത്മകമല്ലാത്ത വിലാസങ്ങളിലേക്ക് ചാടുന്നത് അല്ല പിന്തുണയ്‌ക്കുന്നു:

ഇൻറ്റ് മെയിൻ (അസാധു)
{
/* വേഡ് അഡ്രസ് 0x2 */ എന്നതിലെ കോൾ പ്രവർത്തനം
റിട്ടേൺ ((int(*)(അസാധു)) 0x2)();
}

പകരം, ഒരു അപൂർണ്ണം സജ്ജീകരിക്കേണ്ടതുണ്ട്, അതായത് ഫംഗ്‌ഷനെ ഒരു ചിഹ്നത്തിലൂടെ വിളിക്കണം
(ഉദാഹരണത്തിൽ "func_4"):

ഇൻറ്റ് മെയിൻ (അസാധു)
{
extern int func_4 (അസാധു);

/* ബൈറ്റ് വിലാസത്തിലെ കോൾ പ്രവർത്തനം 0x4 */
തിരികെ func_4();
}

എന്നിവയുമായി ആപ്ലിക്കേഷൻ ലിങ്ക് ചെയ്തിരിക്കണം -Wl,--defsym,func_4=0x4. പകരമായി, "func_4"
ലിങ്കർ സ്ക്രിപ്റ്റിൽ നിർവചിക്കാം.

"RAMPD", "RAMPX", "RAMPY", "RAMPZ" എന്നീ പ്രത്യേക ഫംഗ്ഷൻ രജിസ്റ്ററുകൾ കൈകാര്യം ചെയ്യുന്നു

ചില AVR ഉപകരണങ്ങൾ ആക്‌സസ് ചെയ്യാൻ കഴിയുന്ന 64@tie{}KiB ശ്രേണിയേക്കാൾ വലിയ മെമ്മറികളെ പിന്തുണയ്ക്കുന്നു
16-ബിറ്റ് പോയിന്ററുകൾക്കൊപ്പം. ഈ 64@tie{}KiB ശ്രേണിക്ക് പുറത്തുള്ള മെമ്മറി ലൊക്കേഷനുകൾ ആക്സസ് ചെയ്യാൻ, ദി
ഒരു "RAMP" രജിസ്റ്ററിന്റെ ഉള്ളടക്കം വിലാസത്തിന്റെ ഉയർന്ന ഭാഗമായി ഉപയോഗിക്കുന്നു: "X", "Y", "Z"
വിലാസ രജിസ്റ്റർ "RAMPX", "RAMPY", "RAMPZ" പ്രത്യേക ഫംഗ്ഷനുമായി സംയോജിപ്പിച്ചിരിക്കുന്നു
വിശാലമായ വിലാസം ലഭിക്കുന്നതിന് യഥാക്രമം രജിസ്റ്റർ ചെയ്യുക. അതുപോലെ, "RAMPD" എന്നതും ഒരുമിച്ച് ഉപയോഗിക്കുന്നു
നേരിട്ടുള്ള വിലാസം.

* സ്റ്റാർട്ടപ്പ് കോഡ് "റാംപ്" പ്രത്യേക ഫംഗ്ഷൻ രജിസ്റ്ററുകൾ പൂജ്യത്തോടെ ആരംഭിക്കുന്നു.

* അത് അങ്ങിനെയെങ്കിൽ എ.വി.ആർ എന്ന വിലാസം സ്ഥലങ്ങൾ, പേര് വിലാസം ഇടം ജനറിക് അല്ലെങ്കിൽ "__flash" അല്ലാത്തത്
ഉപയോഗിച്ചു, തുടർന്ന് "RAMPZ" ഓപ്പറേഷന് മുമ്പ് ആവശ്യാനുസരണം സജ്ജീകരിച്ചിരിക്കുന്നു.

* ഉപകരണം 64@tie{}KiB-നേക്കാൾ വലിയ റാം പിന്തുണയ്ക്കുന്നുവെങ്കിൽ, കംപൈലർ മാറ്റേണ്ടതുണ്ട്
ഒരു ഓപ്പറേഷൻ പൂർത്തിയാക്കാൻ "RAMPZ", ഓപ്പറേഷന് ശേഷം "RAMPZ" പൂജ്യത്തിലേക്ക് പുനഃസജ്ജമാക്കുന്നു.

* ഉപകരണം ഒരു നിർദ്ദിഷ്‌ട "റാംപ്" രജിസ്‌റ്ററിനൊപ്പമാണെങ്കിൽ, ISR പ്രോലോഗ്/എപ്പിലോഗ്
ആ SFR സംരക്ഷിക്കുന്നു/പുനഃസ്ഥാപിക്കുന്നു, കൂടാതെ ISR കോഡ് സാധ്യമെങ്കിൽ പൂജ്യത്തിൽ അത് ആരംഭിക്കുന്നു
(പരസ്യമായി) അത് ഉപയോഗിക്കുക.

* 64@tie-നേക്കാൾ വലിയ RAM{}KiB-നെ AVR ടാർഗെറ്റുകൾക്കായി GCC പിന്തുണയ്ക്കുന്നില്ല. നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ
16-ബിറ്റ് വിലാസ പരിധിക്ക് പുറത്തുള്ള സ്ഥലങ്ങളിൽ നിന്ന് വായിക്കാനും മാറ്റാനും ഇൻലൈൻ അസംബ്ലർ
"RAMP" രജിസ്റ്ററുകളിൽ ഒന്ന്, പ്രവേശനത്തിന് ശേഷം നിങ്ങൾ അത് പൂജ്യത്തിലേക്ക് പുനഃസജ്ജമാക്കണം.

AVR ബിൽറ്റ്-ഇൻ മാക്രോകൾ

GCC നിരവധി ബിൽറ്റ്-ഇൻ മാക്രോകൾ നിർവചിക്കുന്നു, അതുവഴി ഉപയോക്തൃ കോഡിന് സാന്നിധ്യം അല്ലെങ്കിൽ പരിശോധിക്കാൻ കഴിയും
സവിശേഷതകളുടെ അഭാവം. ഇനിപ്പറയുന്ന ഏതെങ്കിലും ബിൽറ്റ്-ഇൻ മാക്രോകൾ ഉപകരണത്തിൽ നിന്ന് കണക്കാക്കുന്നു
കഴിവുകൾ അങ്ങനെ ട്രിഗർ -mmcu= കമാൻഡ്-ലൈൻ ഓപ്ഷൻ.

കൂടുതൽ AVR-നിർദ്ദിഷ്ട ബിൽറ്റ്-ഇൻ മാക്രോകൾക്കായി കാണുക എ.വി.ആർ എന്ന വിലാസം സ്പെയ്സുകൾ ഒപ്പം എ.വി.ആർ അന്തർനിർമ്മിതമായത്
പ്രവർത്തനങ്ങൾ.

"__AVR_ARCH__"
വാസ്തുവിദ്യയെ തിരിച്ചറിയുന്ന ഒരു ദശാംശ സംഖ്യയിലേക്ക് പരിഹരിക്കുന്ന ബിൽഡ്-ഇൻ മാക്രോ
എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു -mmcu=mcu ഓപ്ഷൻ. സാധ്യമായ മൂല്യങ്ങൾ ഇവയാണ്:

2, 25, 3, 31, 35, 4, 5, 51, 6

വേണ്ടി mcu= "avr2", "avr25", "avr3", "avr31", "avr35", "avr4", "avr5", "avr51", "avr6",

യഥാക്രമം ഒപ്പം

100, 102, 104, 105, 106, 107

വേണ്ടി mcu= "avrtiny", "avrxmega2", "avrxmega4", "avrxmega5", "avrxmega6", "avrxmega7",
യഥാക്രമം. എങ്കിൽ mcu ഒരു ഉപകരണം വ്യക്തമാക്കുന്നു, ഈ ബിൽറ്റ്-ഇൻ മാക്രോ അതിനനുസരിച്ച് സജ്ജീകരിച്ചിരിക്കുന്നു. വേണ്ടി
ഉദാഹരണം, കൂടെ -mmcu=atmega8 മാക്രോ 4 ആയി നിർവചിച്ചിരിക്കുന്നു.

"__AVR_ഉപകരണ__"
ക്രമീകരണം -mmcu=ഉപകരണം ഉപകരണത്തിന്റെ പേര് പ്രതിഫലിപ്പിക്കുന്ന ഈ ബിൽറ്റ്-ഇൻ മാക്രോ നിർവചിക്കുന്നു. വേണ്ടി
ഉദാഹരണത്തിന്, -mmcu=atmega8 ബിൽറ്റ്-ഇൻ മാക്രോ "__AVR_ATmega8__" നിർവചിക്കുന്നു, -mmcu=attiny261a
"__AVR_ATtiny261A__" മുതലായവ നിർവ്വചിക്കുന്നു.

ബിൽറ്റ്-ഇൻ മാക്രോകളുടെ പേരുകൾ "__AVR_ സ്കീം പിന്തുടരുന്നുഉപകരണ__" എവിടെ ഉപകരണ ആകുന്നു
AVR ഉപയോക്തൃ മാനുവലിൽ നിന്നുള്ള ഉപകരണത്തിന്റെ പേര്. തമ്മിലുള്ള വ്യത്യാസം ഉപകരണ അന്തർനിർമ്മിതത്തിൽ
മാക്രോ ആൻഡ് ഉപകരണം in -mmcu=ഉപകരണം രണ്ടാമത്തേത് എപ്പോഴും ചെറിയക്ഷരമാണ്.

If ഉപകരണം ഒരു ഉപകരണമല്ല, മറിച്ച് ഒരു പ്രധാന വാസ്തുവിദ്യ മാത്രമാണ് avr51, ഈ മാക്രോ അങ്ങനെയല്ല
നിർവചിച്ചിരിക്കുന്നത്.

"__AVR_DEVICE_NAME__"
ക്രമീകരണം -mmcu=ഉപകരണം ഈ ബിൽറ്റ്-ഇൻ മാക്രോ ഉപകരണത്തിന്റെ പേരിലേക്ക് നിർവ്വചിക്കുന്നു. ഉദാഹരണത്തിന്,
കൂടെ -mmcu=atmega8 മാക്രോ നിർവചിച്ചിരിക്കുന്നത് "atmega8" എന്നാണ്.

If ഉപകരണം ഒരു ഉപകരണമല്ല, മറിച്ച് ഒരു പ്രധാന വാസ്തുവിദ്യ മാത്രമാണ് avr51, ഈ മാക്രോ അങ്ങനെയല്ല
നിർവചിച്ചിരിക്കുന്നത്.

"__AVR_XMEGA__"
ഉപകരണം / ആർക്കിടെക്ചർ ഉപകരണങ്ങളുടെ XMEGA കുടുംബത്തിൽ പെട്ടതാണ്.

"__AVR_HAVE_ELPM__"
ഉപകരണത്തിന് "ELPM" നിർദ്ദേശമുണ്ട്.

"__AVR_HAVE_ELPMX__"
ഉപകരണത്തിന് "ELPM R ഉണ്ട്n,Z" കൂടാതെ "ELPM Rn,Z+" നിർദ്ദേശങ്ങൾ.

"__AVR_HAVE_MOVW__"
16-ബിറ്റ് രജിസ്റ്റർ-രജിസ്റ്റർ നീക്കങ്ങൾ നടത്താൻ ഉപകരണത്തിന് "MOVW" നിർദ്ദേശമുണ്ട്.

"__AVR_HAVE_LPMX__"
ഉപകരണത്തിന് "LPM R ഉണ്ട്n,Z" കൂടാതെ "എൽപിഎം ആർn,Z+" നിർദ്ദേശങ്ങൾ.

"__AVR_HAVE_MUL__"
ഉപകരണത്തിന് ഒരു ഹാർഡ്‌വെയർ മൾട്ടിപ്ലയർ ഉണ്ട്.

"__AVR_HAVE_JMP_CALL__"
ഉപകരണത്തിന് "JMP", "കോൾ" നിർദ്ദേശങ്ങൾ ഉണ്ട്. ഉള്ള ഉപകരണങ്ങളുടെ കാര്യമാണിത്
കുറഞ്ഞത് 16@tie{}KiB പ്രോഗ്രാം മെമ്മറി.

"__AVR_HAVE_EIJMP_EICALL__"
"__AVR_3_BYTE_PC__"
ഉപകരണത്തിന് "EIJMP", "EICALL" നിർദ്ദേശങ്ങളുണ്ട്. ഉപകരണങ്ങളുടെ കാര്യമാണിത്
പ്രോഗ്രാം മെമ്മറിയുടെ 128@tie{}KiB-ൽ കൂടുതൽ. പ്രോഗ്രാം എന്നും ഇതിനർത്ഥം
കൗണ്ടർ (PC) 3@tie{}ബൈറ്റുകൾ വീതിയുള്ളതാണ്.

"__AVR_2_BYTE_PC__"
പ്രോഗ്രാം കൗണ്ടറിന് (PC) 2@tie{}ബൈറ്റുകൾ വീതിയുണ്ട്. വരെയുള്ള ഉപകരണങ്ങളുടെ കാര്യമാണിത്
പ്രോഗ്രാം മെമ്മറിയുടെ 128@tie{}KiB.

"__AVR_HAVE_8BIT_SP__"
"__AVR_HAVE_16BIT_SP__"
സ്റ്റാക്ക് പോയിന്റർ (SP) രജിസ്റ്ററിനെ യഥാക്രമം 8-ബിറ്റ് രജിസ്റ്ററായി 16-ബിറ്റ് ആയി കണക്കാക്കുന്നു
കമ്പൈലർ. ഈ മാക്രോകളുടെ നിർവചനം ബാധിക്കുന്നു -mtiny-stack.

"__AVR_HAVE_SPH__"
"__AVR_SP8__"
ഉപകരണത്തിന് SPH (സ്റ്റാക്ക് പോയിന്ററിന്റെ ഉയർന്ന ഭാഗം) പ്രത്യേക ഫംഗ്‌ഷൻ രജിസ്‌റ്റർ ഉണ്ട് അല്ലെങ്കിൽ ഉണ്ട്
യഥാക്രമം ഒരു 8-ബിറ്റ് സ്റ്റാക്ക് പോയിന്റർ. ഈ മാക്രോകളുടെ നിർവചനം ബാധിക്കുന്നു
-mmcu= കേസുകളിലും -mmcu=avr2 ഒപ്പം -mmcu=avr25 വഴിയും -msp8.

"__AVR_HAVE_RAMPD__"
"__AVR_HAVE_RAMPX__"
"__AVR_HAVE_RAMPY__"
"__AVR_HAVE_RAMPZ__"
ഉപകരണത്തിന് "RAMPD", "RAMPX", "RAMPY", "RAMPZ" പ്രത്യേക ഫംഗ്‌ഷൻ രജിസ്‌റ്റർ ഉണ്ട്,
യഥാക്രമം.

"__NO_INTERRUPTS__"
ഈ മാക്രോ പ്രതിഫലിപ്പിക്കുന്നു -mno-തടസ്സങ്ങൾ കമാൻഡ്-ലൈൻ ഓപ്ഷൻ.

"__AVR_ERRATA_SKIP__"
"__AVR_ERRATA_SKIP_JMP_CALL__"
ചില AVR ഉപകരണങ്ങൾ (AT90S8515, ATmega103) കാരണം 32-ബിറ്റ് നിർദ്ദേശങ്ങൾ ഒഴിവാക്കരുത്
ഹാർഡ്‌വെയർ പിശക്. "SBRS", "SBRC", "SBIS", "SBIC", "CPSE" എന്നിവയാണ് നിർദ്ദേശങ്ങൾ ഒഴിവാക്കുക.
"__AVR_HAVE_JMP_CALL__" സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ മാത്രമേ രണ്ടാമത്തെ മാക്രോ നിർവചിക്കുകയുള്ളൂ.

"__AVR_ISA_RMW__"
ഉപകരണത്തിന് റീഡ്-മോഡിഫൈ-റൈറ്റ് നിർദ്ദേശങ്ങളുണ്ട് (XCH, LAC, LAS, LAT).

"__AVR_SFR_OFFSET__=ഓഫ്സെറ്റ്"
"IN" പോലെയുള്ള I/O സ്പെഷ്യൽ ഫംഗ്‌ഷൻ രജിസ്റ്ററുകളെ നേരിട്ട് അഭിസംബോധന ചെയ്യാൻ കഴിയുന്ന നിർദ്ദേശങ്ങൾ,
"OUT", "SBI" മുതലായവയ്ക്ക് ഒരു നിർദ്ദേശം നൽകുന്നതുപോലെ മറ്റൊരു വിലാസം ഉപയോഗിക്കാം
"LD" അല്ലെങ്കിൽ "STS" പോലെയുള്ള റാം ആക്സസ് ചെയ്യുക. ഈ ഓഫ്‌സെറ്റ് ഉപകരണത്തിന്റെ ആർക്കിടെക്ചറിനെ ആശ്രയിച്ചിരിക്കുന്നു
ബന്ധപ്പെട്ട I/O@tie{}വിലാസം ലഭിക്കുന്നതിന് RAM വിലാസത്തിൽ നിന്ന് കുറയ്ക്കണം.

"__WITH_AVRLIBC__"
AVR-Libc-നൊപ്പം ഉപയോഗിക്കുന്നതിന് കംപൈലർ ക്രമീകരിച്ചിരിക്കുന്നു. കാണുക --with-avrlibc
കോൺഫിഗർ ഓപ്ഷൻ.

ബ്ലാക്ക്ഫിൻ ഓപ്ഷനുകൾ

-mcpu=സിപിയു[-sirevision]
ടാർഗെറ്റ് ബ്ലാക്ക്ഫിൻ പ്രോസസറിന്റെ പേര് വ്യക്തമാക്കുന്നു. നിലവിൽ, സിപിയു ഒന്നാകാം
ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ,
ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ, bf542m,
bf544m, bf547m, bf548m, bf549m, ബ്ഫ്ക്സനുമ്ക്സ, ബ്ഫ്ക്സനുമ്ക്സ.

ഓപ്ഷണൽ sirevision ടാർഗെറ്റ് ബ്ലാക്ക്ഫിനിന്റെ സിലിക്കൺ പുനരവലോകനം വ്യക്തമാക്കുന്നു
പ്രൊസസർ. ടാർഗെറ്റുചെയ്‌ത സിലിക്കൺ പുനരവലോകനത്തിനായി ലഭ്യമായ എല്ലാ പരിഹാരങ്ങളും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.
If sirevision is ആരും, പരിഹാരങ്ങളൊന്നും പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല. എങ്കിൽ sirevision is എന്തെങ്കിലും, എല്ലാം
ടാർഗെറ്റുചെയ്‌ത പ്രോസസ്സറിനായുള്ള പരിഹാരങ്ങൾ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു. "__SILICON_REVISION__" മാക്രോ
എന്നതിലെ വലുതും ചെറുതുമായ സംഖ്യകളെ പ്രതിനിധീകരിക്കുന്ന രണ്ട് ഹെക്സാഡെസിമൽ അക്കങ്ങളായി നിർവചിച്ചിരിക്കുന്നു
സിലിക്കൺ പുനരവലോകനം. എങ്കിൽ sirevision is ആരും, "__SILICON_REVISION__" നിർവചിച്ചിട്ടില്ല.
If sirevision is എന്തെങ്കിലും, "__SILICON_REVISION__" എന്നത് 0xffff എന്ന് നിർവ്വചിച്ചിരിക്കുന്നു. ഇത് എങ്കിൽ
ഓപ്ഷണൽ sirevision ഉപയോഗിച്ചിട്ടില്ല, ജിസിസിയുടെ ഏറ്റവും പുതിയ അറിയപ്പെടുന്ന സിലിക്കൺ പുനരവലോകനം അനുമാനിക്കുന്നു
ലക്ഷ്യമിട്ട ബ്ലാക്ക്ഫിൻ പ്രോസസർ.

GCC നിർവചിച്ചിരിക്കുന്നത് ഒരു പ്രീപ്രൊസസ്സർ മാക്രോയാണ് സിപിയു. വേണ്ടി bfin-elf ടൂൾചെയിൻ,
ഈ ഐച്ഛികം libgloss നൽകുന്ന ഹാർഡ്‌വെയർ BSP-നെ if-ൽ ലിങ്ക് ചെയ്യാൻ ഇടയാക്കുന്നു -എംസിം is
നൽകിയിട്ടില്ല.

ഈ ഓപ്ഷൻ ഇല്ലാതെ, ബ്ഫ്ക്സനുമ്ക്സ സ്ഥിരസ്ഥിതിയായി പ്രോസസ്സറായി ഉപയോഗിക്കുന്നു.

എന്നതിനുള്ള പിന്തുണ ശ്രദ്ധിക്കുക ബ്ഫ്ക്സനുമ്ക്സ അപൂർണ്ണമാണ്. വേണ്ടി ബ്ഫ്ക്സനുമ്ക്സ, പ്രീപ്രോസസർ മാക്രോ മാത്രമാണ്
നിർവചിച്ചിരിക്കുന്നത്.

-എംസിം
പ്രോഗ്രാം സിമുലേറ്ററിൽ പ്രവർത്തിക്കുമെന്ന് വ്യക്തമാക്കുന്നു. ഇത് സിമുലേറ്ററിന് കാരണമാകുന്നു
ലിങ്ക് ചെയ്യാൻ ലിബ്ഗ്ലോസ് നൽകിയ ബിഎസ്പി. ഈ ഓപ്‌ഷൻ ഇതിന് മാത്രമേ പ്രാബല്യമുള്ളൂ bfin-elf
ടൂൾചെയിൻ. പോലുള്ള മറ്റ് ചില ഓപ്ഷനുകൾ -മിഡ്-ഷെയർഡ്-ലൈബ്രറി ഒപ്പം -mfdpic, സൂചിപ്പിക്കുന്നത്
-എംസിം.

-മോമിറ്റ്-ലീഫ്-ഫ്രെയിം-പോയിന്റർ
ലീഫ് ഫംഗ്‌ഷനുകൾക്കായി ഫ്രെയിം പോയിന്റർ ഒരു രജിസ്റ്ററിൽ സൂക്ഷിക്കരുത്. ഇത് ഒഴിവാക്കുന്നു
ഫ്രെയിം പോയിന്ററുകൾ സംരക്ഷിക്കുന്നതിനും സജ്ജീകരിക്കുന്നതിനും പുനഃസ്ഥാപിക്കുന്നതിനുമുള്ള നിർദ്ദേശങ്ങൾ കൂടാതെ ഒരു അധിക രജിസ്റ്ററും ഉണ്ടാക്കുന്നു
ഇല പ്രവർത്തനങ്ങളിൽ ലഭ്യമാണ്. ഓപ്ഷൻ -ഫോമിറ്റ്-ഫ്രെയിം-പോയിന്റർ ഫ്രെയിം നീക്കം ചെയ്യുന്നു
എല്ലാ ഫംഗ്‌ഷനുകൾക്കുമുള്ള പോയിന്റർ, ഇത് ഡീബഗ്ഗിംഗ് ബുദ്ധിമുട്ടാക്കിയേക്കാം.

-mspecld-അനോമലി
പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ജനറേറ്റ് ചെയ്ത കോഡ് അടങ്ങിയിട്ടില്ലെന്ന് കംപൈലർ ഉറപ്പാക്കുന്നു
ജമ്പ് നിർദ്ദേശങ്ങൾക്ക് ശേഷമുള്ള ഊഹക്കച്ചവടങ്ങൾ. ഈ ഓപ്ഷൻ ഉപയോഗിക്കുകയാണെങ്കിൽ,
"__WORKAROUND_SPECULATIVE_LOADS" നിർവചിച്ചിരിക്കുന്നു.

-mno-specld-അനോമലി
ഊഹക്കച്ചവട ലോഡുകൾ സംഭവിക്കുന്നത് തടയാൻ അധിക കോഡ് സൃഷ്ടിക്കരുത്.

-mcsync-അനോമലി
പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ജനറേറ്റ് ചെയ്‌ത കോഡിൽ CSYNC അല്ലെങ്കിൽ അടങ്ങിയിട്ടില്ലെന്ന് കംപൈലർ ഉറപ്പാക്കുന്നു
സോപാധിക ശാഖകൾക്ക് ശേഷം SSYNC നിർദ്ദേശങ്ങൾ വളരെ വേഗം. ഈ ഓപ്ഷൻ ഉപയോഗിക്കുകയാണെങ്കിൽ,
"__WORKAROUND_SPECULATIVE_SYNCS" നിർവ്വചിച്ചിരിക്കുന്നു.

-mno-csync-അനോമലി
CSYNC അല്ലെങ്കിൽ SSYNC നിർദ്ദേശങ്ങൾ സംഭവിക്കുന്നത് തടയാൻ അധിക കോഡ് സൃഷ്ടിക്കരുത്
ഒരു സോപാധിക ശാഖ കഴിഞ്ഞ് ഉടൻ.

-mlow-64k
പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, കംപൈലറിന് മുഴുവൻ അറിവും പ്രയോജനപ്പെടുത്താൻ സ്വാതന്ത്ര്യമുണ്ട്
കുറഞ്ഞ 64k മെമ്മറിയിലേക്ക് പ്രോഗ്രാം യോജിക്കുന്നു.

-mno-low-64k
പ്രോഗ്രാം ഏകപക്ഷീയമായി വലുതാണെന്ന് കരുതുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mstack-check-l1
uClinux മുഖേന L1 സ്‌ക്രാച്ച്‌പാഡ് മെമ്മറിയിൽ സ്ഥാപിച്ചിരിക്കുന്ന വിവരങ്ങൾ ഉപയോഗിച്ച് സ്റ്റാക്ക് ചെക്കിംഗ് നടത്തുക
കേർണൽ.

-മിഡ്-ഷെയർഡ്-ലൈബ്രറി
ലൈബ്രറി ഐഡി രീതി വഴി പങ്കിട്ട ലൈബ്രറികളെ പിന്തുണയ്ക്കുന്ന കോഡ് സൃഷ്ടിക്കുക. ഇത് അനുവദിക്കുന്നു
വെർച്വൽ മെമ്മറി ഇല്ലാത്ത ഒരു പരിതസ്ഥിതിയിൽ ലൈബ്രറികളും പങ്കിട്ടു
മാനേജ്മെന്റ്. ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നു -fPIC. ഒരു bfin-elf ലക്ഷ്യം, ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നു
-എംസിം.

-mno-id-shared-library
ഐഡി അടിസ്ഥാനമാക്കിയുള്ള പങ്കിട്ട ലൈബ്രറികൾ ഉപയോഗിക്കുന്നുണ്ടെന്ന് കരുതാത്ത കോഡ് സൃഷ്ടിക്കുക. ഇതാണ്
സ്ഥിരസ്ഥിതി.

-mleaf-id-shared-library
ലൈബ്രറി ഐഡി രീതി വഴി പങ്കിട്ട ലൈബ്രറികളെ പിന്തുണയ്ക്കുന്ന കോഡ് സൃഷ്ടിക്കുക, എന്നാൽ അനുമാനിക്കുക
ഈ ലൈബ്രറി അല്ലെങ്കിൽ എക്സിക്യൂട്ടബിൾ മറ്റേതെങ്കിലും ഐഡി പങ്കിട്ട ലൈബ്രറികളുമായി ലിങ്ക് ചെയ്യില്ല.
ജമ്പുകൾക്കും കോളുകൾക്കുമായി വേഗത്തിലുള്ള കോഡ് ഉപയോഗിക്കാൻ ഇത് കംപൈലറിനെ അനുവദിക്കുന്നു.

-mno-leaf-id-shared-library
കംപൈൽ ചെയ്യുന്ന കോഡ് ഏതെങ്കിലും ഐഡി പങ്കിട്ട ലൈബ്രറികളുമായി ലിങ്ക് ചെയ്യില്ലെന്ന് കരുതരുത്.
ജമ്പ്, കോൾ ഇൻസ്‌നുകൾക്കായി സ്ലോ കോഡ് സൃഷ്‌ടിക്കുന്നു.

-mshared-library-id=n
കംപൈൽ ചെയ്യുന്ന ഐഡി അടിസ്ഥാനമാക്കിയുള്ള പങ്കിട്ട ലൈബ്രറിയുടെ തിരിച്ചറിയൽ നമ്പർ വ്യക്തമാക്കുന്നു.
0 ന്റെ മൂല്യം വ്യക്തമാക്കുന്നത് കൂടുതൽ കോംപാക്റ്റ് കോഡ് സൃഷ്ടിക്കുന്നു; മറ്റ് മൂല്യങ്ങളുടെ ശക്തികൾ വ്യക്തമാക്കുന്നു
നിലവിലെ ലൈബ്രറിയിലേക്ക് ആ സംഖ്യയുടെ അലോക്കേഷൻ എന്നാൽ കൂടുതൽ സ്ഥലമോ സമയമോ ഇല്ല-
ഈ ഓപ്ഷൻ ഒഴിവാക്കുന്നതിനേക്കാൾ കാര്യക്ഷമമാണ്.

-msep-data
മെമ്മറിയുടെ മറ്റൊരു മേഖലയിൽ ഡാറ്റാ സെഗ്മെന്റ് സ്ഥാപിക്കാൻ അനുവദിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക
ടെക്സ്റ്റ് സെഗ്മെന്റിൽ നിന്ന്. ഇത് ഇല്ലാത്ത ഒരു പരിതസ്ഥിതിയിൽ എക്സിക്യൂട്ട് ചെയ്യാൻ അനുവദിക്കുന്നു
ടെക്‌സ്‌റ്റ് സെക്ഷനിനെതിരായ റീലോക്കേഷനുകൾ ഒഴിവാക്കി വെർച്വൽ മെമ്മറി മാനേജ്‌മെന്റ്.

-mno-sep-data
ഡാറ്റ സെഗ്‌മെന്റ് ടെക്‌സ്‌റ്റ് സെഗ്‌മെന്റിനെ പിന്തുടരുന്നുവെന്ന് അനുമാനിക്കുന്ന കോഡ് സൃഷ്‌ടിക്കുക. ഇതാണ്
സ്ഥിരസ്ഥിതി.

-mlong-കോളുകൾ
-mno-ലോംഗ്-കോളുകൾ
എന്ന വിലാസം ആദ്യം ലോഡ് ചെയ്തുകൊണ്ട് ഫംഗ്‌ഷൻ കോളുകൾ നടത്താൻ കംപൈലറോട് പറയുന്നു
ഒരു രജിസ്റ്ററിൽ പ്രവർത്തിക്കുകയും തുടർന്ന് ഈ രജിസ്റ്ററിൽ ഒരു സബ്റൂട്ടീൻ കോൾ നടത്തുകയും ചെയ്യുന്നു. ഈ
ടാർഗെറ്റ് ഫംഗ്‌ഷൻ 24-ബിറ്റ് വിലാസ പരിധിക്ക് പുറത്താണെങ്കിൽ സ്വിച്ച് ആവശ്യമാണ്
സബ്റൂട്ടീൻ കോൾ നിർദ്ദേശത്തിന്റെ ഓഫ്സെറ്റ് അടിസ്ഥാനമാക്കിയുള്ള പതിപ്പ്.

ഈ സവിശേഷത സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല. വ്യക്തമാക്കുന്നത് -mno-ലോംഗ്-കോളുകൾ പുന rest സ്ഥാപിക്കുന്നു
സ്ഥിര സ്വഭാവം. കംപൈലർ എങ്ങനെ സൃഷ്ടിക്കുന്നു എന്നതിനെ ഈ സ്വിച്ചുകൾക്ക് യാതൊരു സ്വാധീനവുമില്ലെന്ന് ശ്രദ്ധിക്കുക
ഫംഗ്‌ഷൻ പോയിന്ററുകൾ വഴി ഫംഗ്‌ഷൻ കോളുകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള കോഡ്.

-mfast-fp
ഫാസ്റ്റ് ഫ്ലോട്ടിംഗ് പോയിന്റ് ലൈബ്രറിയുമായി ലിങ്ക് ചെയ്യുക. ഈ ലൈബ്രറി ഐഇഇഇയിൽ ചിലത് വിശ്രമിക്കുന്നു
നോട്ട്-എ-നമ്പറിനെതിരെ (NAN) ഇൻപുട്ടുകൾ പരിശോധിക്കുന്നതിനുള്ള ഫ്ലോട്ടിംഗ്-പോയിന്റ് സ്റ്റാൻഡേർഡിന്റെ നിയമങ്ങൾ
പ്രകടനത്തിന്റെ താൽപ്പര്യം.

-minline-plt
അറിയാത്ത ഫംഗ്‌ഷനുകളിലേക്കുള്ള ഫംഗ്‌ഷൻ കോളുകളിലെ PLT എൻട്രികളുടെ ഇൻലൈനിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
പ്രാദേശികമായി ബന്ധിപ്പിക്കുക. അതില്ലാതെ ഒരു ഫലവുമില്ല -mfdpic.

-മൾട്ടികോർ
മൾട്ടികോർ ബ്ലാക്ക്ഫിൻ പ്രോസസറുകൾക്കായി ഒരു സ്വതന്ത്ര ആപ്ലിക്കേഷൻ നിർമ്മിക്കുക. ഈ ഓപ്ഷൻ കാരണമാകുന്നു
ഉപയോഗിക്കേണ്ട മൾട്ടികോർ പിന്തുണയ്ക്കുന്ന ശരിയായ സ്റ്റാർട്ട് ഫയലുകളും ലിങ്ക് സ്ക്രിപ്റ്റുകളും നിർവചിക്കുന്നു
മാക്രോ "__BFIN_MULTICORE". കൂടെ മാത്രമേ ഉപയോഗിക്കാനാകൂ -mcpu=bf561[-sirevision].

ഈ ഓപ്ഷൻ ഉപയോഗിച്ച് ഉപയോഗിക്കാം -എംകോറിയ or -എംകോറെബ്, ഇത് ഒരു അപേക്ഷ തിരഞ്ഞെടുക്കുന്നു-
ഓരോ കോർ പ്രോഗ്രാമിംഗ് മോഡൽ. കൂടാതെ -എംകോറിയ or -എംകോറെബ്,
സിംഗിൾ ആപ്ലിക്കേഷൻ/ഡ്യുവൽ കോർ പ്രോഗ്രാമിംഗ് മോഡൽ ഉപയോഗിക്കുന്നു. ഈ മാതൃകയിൽ, പ്രധാനം
കോർ ബിയുടെ പ്രവർത്തനത്തിന് "coreb_main" എന്ന് പേരിടണം.

ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നില്ലെങ്കിൽ, സിംഗിൾ-കോർ ആപ്ലിക്കേഷൻ പ്രോഗ്രാമിംഗ് മോഡൽ ഉപയോഗിക്കുന്നു.

-എംകോറിയ
ഓരോ അപേക്ഷയും ഉപയോഗിക്കുമ്പോൾ BF561-ന്റെ Core A-യ്‌ക്കായി ഒരു ഒറ്റയ്‌ക്ക് ഒരു അപ്ലിക്കേഷൻ നിർമ്മിക്കുക.
കോർ പ്രോഗ്രാമിംഗ് മോഡൽ. കോറിനെ പിന്തുണയ്ക്കാൻ ശരിയായ ആരംഭ ഫയലുകളും ലിങ്ക് സ്ക്രിപ്റ്റുകളും ഉപയോഗിക്കുന്നു
എ, കൂടാതെ മാക്രോ "__BFIN_COREA" നിർവചിച്ചിരിക്കുന്നു. ഈ ഓപ്ഷൻ മാത്രമേ ഉപയോഗിക്കാനാകൂ
കൂടെ സംയോജിപ്പിക്കുക -മൾട്ടികോർ.

-എംകോറെബ്
ഓരോ-ആപ്ലിക്കേഷനും ഉപയോഗിക്കുമ്പോൾ BF561-ന്റെ Core B-യ്‌ക്കായി ഒരു ഒറ്റയ്‌ക്ക് ഒരു അപ്ലിക്കേഷൻ നിർമ്മിക്കുക.
കോർ പ്രോഗ്രാമിംഗ് മോഡൽ. കോറിനെ പിന്തുണയ്ക്കാൻ ശരിയായ ആരംഭ ഫയലുകളും ലിങ്ക് സ്ക്രിപ്റ്റുകളും ഉപയോഗിക്കുന്നു
ബി, കൂടാതെ മാക്രോ "__BFIN_COREB" നിർവ്വചിച്ചിരിക്കുന്നു. ഈ ഓപ്ഷൻ ഉപയോഗിക്കുമ്പോൾ, "coreb_main"
"പ്രധാന" എന്നതിന് പകരം ഉപയോഗിക്കണം. ഈ ഓപ്ഷൻ സംയോജിച്ച് മാത്രമേ ഉപയോഗിക്കാൻ കഴിയൂ
-മൾട്ടികോർ.

-msdram
SDRAM-നായി ഒരു ഒറ്റപ്പെട്ട ആപ്ലിക്കേഷൻ നിർമ്മിക്കുക. ശരിയായ ആരംഭ ഫയലുകളും ലിങ്ക് സ്ക്രിപ്റ്റുകളും ഉപയോഗിക്കുന്നു
ആപ്ലിക്കേഷൻ SDRAM-ൽ ഇടാൻ, മാക്രോ "__BFIN_SDRAM" നിർവചിച്ചിരിക്കുന്നു. ദി
ആപ്ലിക്കേഷൻ ലോഡുചെയ്യുന്നതിന് മുമ്പ് ലോഡർ SDRAM ആരംഭിക്കണം.

-micplb
റൺ ടൈമിൽ ICPLB-കൾ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെന്ന് കരുതുക. ഇത് ചില അപാകതകളിൽ സ്വാധീനം ചെലുത്തുന്നു
പരിഹാരങ്ങൾ. Linux ടാർഗെറ്റുകൾക്കായി, ICPLB-കൾ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെന്ന് അനുമാനിക്കുക എന്നതാണ് സ്ഥിരസ്ഥിതി; വേണ്ടി
ഒറ്റപ്പെട്ട ആപ്ലിക്കേഷനുകൾ ഡിഫോൾട്ട് ഓഫാണ്.

C6x ഓപ്ഷനുകൾ

-മാർച്ച്=പേര്
ഇത് ടാർഗെറ്റ് ആർക്കിടെക്ചറിന്റെ പേര് വ്യക്തമാക്കുന്നു. നിർണ്ണയിക്കാൻ GCC ഈ പേര് ഉപയോഗിക്കുന്നു
അസംബ്ലി കോഡ് സൃഷ്ടിക്കുമ്പോൾ അതിന് എന്ത് തരത്തിലുള്ള നിർദ്ദേശങ്ങൾ പുറപ്പെടുവിക്കാൻ കഴിയും. അനുവദനീയമാണ്
പേരുകൾ ഇവയാണ്: ച്ക്സനുമ്ക്സക്സ, ച്ക്സനുമ്ക്സക്സ, c64x+, ച്ക്സനുമ്ക്സക്സ, c67x+, ച്ക്സനുമ്ക്സക്സ.

-mbig-endian
ഒരു ബിഗ്-എൻഡിയൻ ലക്ഷ്യത്തിനായി കോഡ് സൃഷ്ടിക്കുക.

-mlittle-endian
ഒരു ചെറിയ-എൻഡിയൻ ലക്ഷ്യത്തിനായി കോഡ് സൃഷ്ടിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-എംസിം
സിമുലേറ്ററിന് അനുയോജ്യമായ സ്റ്റാർട്ടപ്പ് ഫയലുകളും ലിങ്കർ സ്ക്രിപ്റ്റും തിരഞ്ഞെടുക്കുക.

-msdata=default
ചൂണ്ടിക്കാണിച്ച ".neardata" വിഭാഗത്തിൽ ചെറിയ ആഗോള, സ്റ്റാറ്റിക് ഡാറ്റ ഇടുക
"B14" രജിസ്റ്റർ ചെയ്യുക. ".bss" വിഭാഗത്തിൽ ആരംഭിക്കാത്ത ചെറിയ ആഗോള, സ്റ്റാറ്റിക് ഡാറ്റ ഇടുക,
".neardata" വിഭാഗത്തോട് ചേർന്നാണ്. ചെറിയ വായന-മാത്രം ഡാറ്റ നൽകുക
".റോഡാറ്റ" വിഭാഗം. വലിയ ഡാറ്റാ ഭാഗങ്ങൾക്കായി ഉപയോഗിക്കുന്ന അനുബന്ധ വിഭാഗങ്ങളാണ്
".ഫാർഡാറ്റ", ".ഫാർ", ".കോൺസ്റ്റ്".

-msdata=എല്ലാം
ചെറിയ ഒബ്‌ജക്‌റ്റുകൾ മാത്രമല്ല, എല്ലാ ഡാറ്റയും ചെറിയ ഡാറ്റയ്‌ക്കായി നീക്കിവച്ചിരിക്കുന്ന വിഭാഗങ്ങളിലേക്ക് ചേർക്കുക, ഒപ്പം
അവ ആക്സസ് ചെയ്യുന്നതിന് "B14" രജിസ്റ്ററുമായി ബന്ധപ്പെട്ട വിലാസം ഉപയോഗിക്കുക.

-msdata=ഒന്നുമില്ല
ചെറിയ ഡാറ്റയ്‌ക്കായി നീക്കിവച്ചിരിക്കുന്ന വിഭാഗങ്ങൾ ഉപയോഗിക്കരുത്, കൂടാതെ സമ്പൂർണ്ണ വിലാസങ്ങൾ ഉപയോഗിക്കുക
എല്ലാ ഡാറ്റയും ആക്സസ് ചെയ്യുക. ".fardata" എന്നതിൽ സമാരംഭിച്ച എല്ലാ ആഗോള, സ്റ്റാറ്റിക് ഡാറ്റയും ഇടുക
വിഭാഗം, കൂടാതെ ".ഫാർ" വിഭാഗത്തിലെ ആരംഭിക്കാത്ത എല്ലാ ഡാറ്റയും. എല്ലാ സ്ഥിരമായ ഡാറ്റയും ചേർക്കുക
".const" വിഭാഗം.

ച്രിസ് ഓപ്ഷനുകൾ

ഈ ഓപ്ഷനുകൾ CRIS പോർട്ടുകൾക്കായി പ്രത്യേകം നിർവചിച്ചിരിക്കുന്നു.

-മാർച്ച്=വാസ്തുവിദ്യ-തരം
-mcpu=വാസ്തുവിദ്യ-തരം
നിർദ്ദിഷ്ട ആർക്കിടെക്ചറിനായി കോഡ് സൃഷ്ടിക്കുക. എന്നതിനായുള്ള തിരഞ്ഞെടുപ്പുകൾ വാസ്തുവിദ്യ-തരം ആകുന്നു
v3, v8 ഒപ്പം v10 യഥാക്രമം ETRAX 4, ETRAX 100, ETRAX 100 LX എന്നിവയ്ക്ക്. സ്ഥിരസ്ഥിതിയാണ് v0
cris-axis-linux-gnu ഒഴികെ, സ്ഥിരസ്ഥിതി എവിടെയാണ് v10.

-mtune=വാസ്തുവിദ്യ-തരം
ട്യൂൺ ചെയ്യുക വാസ്തുവിദ്യ-തരം സൃഷ്ടിച്ച കോഡിന് ബാധകമായ എല്ലാം, ഒഴികെ
എബിഐയും ലഭ്യമായ നിർദ്ദേശങ്ങളുടെ കൂട്ടവും. എന്നതിനായുള്ള തിരഞ്ഞെടുപ്പുകൾ വാസ്തുവിദ്യ-തരം ആകുന്നു
എന്നതിന് സമാനമാണ് -മാർച്ച്=വാസ്തുവിദ്യ-തരം.

-mmax-stack-frame=n
ഒരു ഫംഗ്‌ഷന്റെ സ്റ്റാക്ക് ഫ്രെയിം കവിയുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക n ബൈറ്റുകൾ.

-മെട്രാക്സ്4
-മെട്രാക്സ്100
ഓപ്ഷനുകൾ -മെട്രാക്സ്4 ഒപ്പം -മെട്രാക്സ്100 എന്നതിന്റെ പര്യായപദങ്ങളാണ് -മാർച്ച്=v3 ഒപ്പം -മാർച്ച്=v8
യഥാക്രമം.

-mmul-ബഗ്-പരിഹാരം
-mno-mul-bug-പരിഹാരം
CPU മോഡലുകൾക്കുള്ള "muls", "mulu" നിർദ്ദേശങ്ങളിലെ ഒരു ബഗിന് ചുറ്റും പ്രവർത്തിക്കുക
ബാധകമാണ്. ഈ ഓപ്ഷൻ സ്ഥിരസ്ഥിതിയായി സജീവമാണ്.

-mpdebug
അസംബ്ലി കോഡിൽ CRIS-നിർദ്ദിഷ്ട വെർബോസ് ഡീബഗ്ഗുമായി ബന്ധപ്പെട്ട വിവരങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക. ഈ
ഓപ്‌ഷൻ ഓഫ് ചെയ്യുന്നതിന്റെ ഫലവുമുണ്ട് #NO_APP ഫോർമാറ്റ് ചെയ്‌ത-കോഡ് സൂചകം
അസംബ്ലി ഫയലിന്റെ തുടക്കത്തിൽ അസംബ്ലർ.

-mcc-init
മുൻ നിർദ്ദേശങ്ങളിൽ നിന്നുള്ള കണ്ടീഷൻ കോഡ് ഫലങ്ങൾ ഉപയോഗിക്കരുത്; എപ്പോഴും താരതമ്യം ചെയ്യുക
കണ്ടീഷൻ കോഡുകൾ ഉപയോഗിക്കുന്നതിന് മുമ്പ് പരിശോധനാ നിർദ്ദേശങ്ങൾ.

-mno-പാർശ്വഫലങ്ങൾ
പോസ്റ്റ്-അല്ലാതെയുള്ള അഡ്രസിംഗ് മോഡുകളിൽ പാർശ്വഫലങ്ങളുള്ള നിർദ്ദേശങ്ങൾ പുറപ്പെടുവിക്കരുത്.
ഇൻക്രിമെന്റും.

-mstack-align
-mno-stack-align
-mdata-align
-mno-data-align
-mconst-align
-mno-const-align
ഈ ഓപ്ഷനുകൾ (ഇല്ല- ഓപ്ഷനുകൾ) സ്റ്റാക്ക് ഫ്രെയിമിനായി ക്രമീകരിക്കുക (ക്രമീകരണങ്ങൾ ഇല്ലാതാക്കുക),
വ്യക്തിഗത ഡാറ്റയും സ്ഥിരാങ്കങ്ങളും പരമാവധി ഒറ്റ ഡാറ്റാ ആക്‌സസ് വലുപ്പത്തിനായി വിന്യസിക്കണം
തിരഞ്ഞെടുത്ത CPU മോഡലിന്. 32-ബിറ്റ് വിന്യാസം ക്രമീകരിക്കുക എന്നതാണ് സ്ഥിരസ്ഥിതി. എബിഐ
ഘടന ലേഔട്ട് പോലുള്ള വിശദാംശങ്ങൾ ഈ ഓപ്ഷനുകൾ ബാധിക്കില്ല.

-m32-ബിറ്റ്
-m16-ബിറ്റ്
-m8-ബിറ്റ്
മുകളിലുള്ള സ്റ്റാക്ക്-ഡാറ്റ-, കോൺസ്റ്റ്-അലൈൻ ഓപ്ഷനുകൾക്ക് സമാനമായി, ഈ ഓപ്‌ഷനുകൾ ക്രമീകരിക്കുന്നു
സ്റ്റാക്ക് ഫ്രെയിം, റൈറ്റ് ചെയ്യാവുന്ന ഡാറ്റ, സ്ഥിരാങ്കങ്ങൾ എല്ലാം 32-ബിറ്റ്, 16-ബിറ്റ് അല്ലെങ്കിൽ 8-ബിറ്റ് വിന്യസിച്ചിരിക്കുന്നു.
സ്ഥിരസ്ഥിതി 32-ബിറ്റ് വിന്യാസമാണ്.

-mno-prologue-epilogue
-പ്രോലോഗ്-എപ്പിലോഗ്
കൂടെ -mno-prologue-epilogue, സാധാരണ ഫംഗ്‌ഷൻ പ്രോലോഗും എപ്പിലോഗും സജ്ജീകരിക്കുന്നു
സ്റ്റാക്ക് ഫ്രെയിം ഒഴിവാക്കി, റിട്ടേൺ നിർദ്ദേശങ്ങളോ റിട്ടേൺ സീക്വൻസുകളോ ഇല്ല
കോഡിൽ സൃഷ്ടിച്ചു. വിഷ്വൽ പരിശോധനയ്‌ക്കൊപ്പം മാത്രം ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക
കംപൈൽ ചെയ്ത കോഡ്: കോൾ സേവ് ചെയ്ത രജിസ്റ്ററുകൾ ആയിരിക്കുമ്പോൾ മുന്നറിയിപ്പുകളോ പിശകുകളോ ഉണ്ടാകില്ല
സംരക്ഷിച്ചു, അല്ലെങ്കിൽ പ്രാദേശിക വേരിയബിളുകൾക്കുള്ള സംഭരണം അനുവദിക്കേണ്ടതുണ്ട്.

-mno-gotplt
-mgotplt
കൂടെ -fpic ഒപ്പം -fPIC, ലോഡ് ചെയ്യുന്ന നിർദ്ദേശ ക്രമങ്ങൾ ജനറേറ്റ് ചെയ്യരുത് (ജനറേറ്റ് ചെയ്യുക).
ഫംഗ്‌ഷനുകൾക്കായുള്ള വിലാസങ്ങൾ (മറ്റുള്ളവയിൽ പരമ്പരാഗതം
ആർക്കിടെക്ചറുകൾ) PLT-ലേക്ക് വിളിക്കുന്നു. സ്ഥിരസ്ഥിതിയാണ് -mgotplt.

-മെൽഫ്
ലെഗസി നോ-ഓപ് ഓപ്‌ഷൻ cris-axis-elf, cris-axis-linux-gnu എന്നിവയ്‌ക്കൊപ്പം മാത്രമേ തിരിച്ചറിയൂ
ടാർഗെറ്റുകൾ.

-mlinux
ലെഗസി നോ-ഓപ് ഓപ്‌ഷൻ cris-axis-linux-gnu ടാർഗെറ്റിനൊപ്പം മാത്രമേ അംഗീകരിക്കപ്പെട്ടിട്ടുള്ളൂ.

-സിം
ഈ ഓപ്‌ഷൻ, cris-axis-elf-ന് അംഗീകരിച്ചു, ഇൻപുട്ട്-ഔട്ട്‌പുട്ടുമായി ലിങ്ക് ചെയ്യാൻ ക്രമീകരിക്കുന്നു
ഒരു സിമുലേറ്റർ ലൈബ്രറിയിൽ നിന്നുള്ള പ്രവർത്തനങ്ങൾ. കോഡ്, ഇനീഷ്യലൈസ് ചെയ്ത ഡാറ്റ, സീറോ ഇനീഷ്യലൈസ്ഡ് ഡാറ്റ
തുടർച്ചയായി അനുവദിച്ചിരിക്കുന്നു.

-സിം2
പോലെ -സിം, എന്നാൽ 0x40000000 ലും പൂജ്യത്തിലും ആരംഭിച്ച ഡാറ്റ കണ്ടെത്താൻ ലിങ്കർ ഓപ്ഷനുകൾ കൈമാറുക.
0x80000000-ൽ ഡാറ്റ ആരംഭിച്ചു.

CR16 ഓപ്ഷനുകൾ

ഈ ഓപ്ഷനുകൾ CR16 പോർട്ടുകൾക്കായി പ്രത്യേകം നിർവചിച്ചിരിക്കുന്നു.

-എംഎംഎസി
മൾട്ടിപ്ലൈ-അക്മുലേറ്റ് നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക. സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കി.

-mcr16cplus
-mcr16c
CR16C അല്ലെങ്കിൽ CR16C+ ആർക്കിടെക്ചറിനായി കോഡ് സൃഷ്ടിക്കുക. CR16C+ ആർക്കിടെക്ചർ ഡിഫോൾട്ടാണ്.

-എംസിം
സിമുലേറ്ററുമായി പൊരുത്തപ്പെടുന്ന libsim.a ലൈബ്രറിയെ ലിങ്ക് ചെയ്യുന്നു. ELF-ന് ബാധകമാണ്
കമ്പൈലർ മാത്രം.

-മിന്റ്32
32-ബിറ്റ് വൈഡ് ആയി പൂർണ്ണസംഖ്യ തരം തിരഞ്ഞെടുക്കുക.

-mbit-ops
ബിറ്റ് കൃത്രിമത്വങ്ങൾക്കായി "sbit"/"cbit" നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നു.

-mdata-model=മാതൃക
ഒരു ഡാറ്റ മോഡൽ തിരഞ്ഞെടുക്കുക. എന്നതിനായുള്ള തിരഞ്ഞെടുപ്പുകൾ മാതൃക ആകുന്നു സമീപം, ബഹുദൂരം or ഇടത്തരം. ഇടത്തരം സ്ഥിരസ്ഥിതിയാണ്.
എന്നിരുന്നാലും, ബഹുദൂരം കൂടെ സാധുതയില്ല -mcr16c, CR16C ആർക്കിടെക്ചർ പിന്തുണയ്ക്കാത്തതിനാൽ
വിദൂര ഡാറ്റ മോഡൽ.

ഡാര്വിന് ഓപ്ഷനുകൾ

ഡാർവിൻ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ പ്രവർത്തിക്കുന്ന എല്ലാ ആർക്കിടെക്ചറുകൾക്കും ഈ ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു.

ഡാർവിനിലെ FSF GCC "കൊഴുപ്പ്" ഒബ്ജക്റ്റ് ഫയലുകൾ സൃഷ്ടിക്കുന്നില്ല; ഇത് ഒരു ഒബ്ജക്റ്റ് ഫയൽ സൃഷ്ടിക്കുന്നു
ജിസിസിയെ ലക്ഷ്യം വച്ചുകൊണ്ട് നിർമ്മിച്ച ഏക വാസ്തുവിദ്യ. ഡാർവിനിലെ ആപ്പിളിന്റെ ജിസിസി "കൊഴുപ്പ്" ഉണ്ടാക്കുന്നു
ഒന്നിലധികം ആണെങ്കിൽ ഫയലുകൾ -കമാനം ഓപ്ഷനുകൾ ഉപയോഗിക്കുന്നു; കംപൈലറോ ലിങ്കറോ പ്രവർത്തിപ്പിക്കുന്നതിലൂടെയാണ് ഇത് ചെയ്യുന്നത്
ഒന്നിലധികം തവണ ഫലങ്ങളിൽ ചേരുന്നു ലിപ്പോ.

സൃഷ്‌ടിച്ച ഫയലിന്റെ ഉപവിഭാഗം (ഇത് പോലെ ppc7400 or ppc970 or i686) നിർണ്ണയിക്കുന്നത്
GCC ലക്ഷ്യമിടുന്ന ISA വ്യക്തമാക്കുന്ന ഫ്ലാഗുകൾ -എംസിപിയു or - മാർച്ച്. ദി
-force_cpusubtype_ALL ഇത് മറികടക്കാൻ ഓപ്ഷൻ ഉപയോഗിക്കാം.

ഒരു ഐഎസ്എ പൊരുത്തക്കേട് അവതരിപ്പിക്കുമ്പോൾ ഡാർവിൻ ഉപകരണങ്ങൾ അവയുടെ സ്വഭാവത്തിൽ വ്യത്യാസപ്പെട്ടിരിക്കുന്നു. ദി
അസംബ്ലർ, as, എന്നതിന്റെ ഉപവിഭാഗത്തിന് സാധുതയുള്ള നിർദ്ദേശങ്ങൾ മാത്രമേ ഉപയോഗിക്കാൻ അനുവദിക്കൂ
ഫയൽ സൃഷ്ടിക്കുന്നു, അതിനാൽ നിങ്ങൾക്ക് a-യിൽ 64-ബിറ്റ് നിർദ്ദേശങ്ങൾ നൽകാനാവില്ല ppc750 ഒബ്ജക്റ്റ് ഫയൽ. ദി
പങ്കിട്ട ലൈബ്രറികൾക്കുള്ള ലിങ്കർ, /usr/bin/libtool, പരാജയപ്പെടുകയും ആവശ്യപ്പെട്ടാൽ ഒരു പിശക് പ്രിന്റ് ചെയ്യുകയും ചെയ്യുന്നു
ഇൻപുട്ട് ഫയലുകളേക്കാൾ കുറഞ്ഞ നിയന്ത്രിത ഉപതരം ഉപയോഗിച്ച് പങ്കിട്ട ലൈബ്രറി സൃഷ്ടിക്കുക (ഇതിനായി
ഉദാഹരണത്തിന്, ഒരു ഇടാൻ ശ്രമിക്കുന്നു ppc970 a ലെ ഒബ്ജക്റ്റ് ഫയൽ ppc7400 പുസ്തകശാല). ഇതിനായുള്ള ലിങ്കർ
എക്സിക്യൂട്ടബിൾസ്, ld, നിശ്ശബ്ദമായി എക്സിക്യൂട്ടബിളിന് അതിലെ ഏതെങ്കിലുമൊരു നിയന്ത്രിത ഉപവിഭാഗം നൽകുന്നു
ഇൻപുട്ട് ഫയലുകൾ.

-Fമുതലാളി
ചട്ടക്കൂട് ഡയറക്ടറി ചേർക്കുക മുതലാളി തിരയേണ്ട ഡയറക്ടറികളുടെ ലിസ്റ്റിന്റെ തലയിലേക്ക്
ഹെഡ്ഡർ ഫയലുകൾക്കായി. ഈ ഡയറക്‌ടറികൾ വ്യക്തമാക്കിയവയുമായി ഇടകലർന്നിരിക്കുന്നു -I
ഓപ്‌ഷനുകൾ ഇടത്തുനിന്ന് വലത്തോട്ട് ക്രമത്തിൽ സ്‌കാൻ ചെയ്യുന്നു.

ചട്ടക്കൂടുകൾ ഉള്ള ഒരു ഡയറക്ടറിയാണ് ഫ്രെയിംവർക്ക് ഡയറക്ടറി. ഒരു ചട്ടക്കൂട് a
a ഉള്ള ഡയറക്ടറി തലക്കെട്ടുകൾ ഒപ്പം / അല്ലെങ്കിൽ സ്വകാര്യ തലക്കെട്ടുകൾ ഡയറക്‌ടറി അതിൽ നേരിട്ട് അടങ്ങിയിരിക്കുന്നു
അവസാനിക്കുന്നു .ചട്ടക്കൂട്. ഒരു ചട്ടക്കൂടിന്റെ പേര് ഈ ഡയറക്ടറിയുടെ പേര് ഒഴികെയുള്ളതാണ്
The .ചട്ടക്കൂട്. ചട്ടക്കൂടുമായി ബന്ധപ്പെട്ട തലക്കെട്ടുകൾ അവ രണ്ടിലൊന്നിൽ കാണപ്പെടുന്നു
ഡയറക്ടറികൾ, കൂടെ തലക്കെട്ടുകൾ ആദ്യം അന്വേഷിക്കുന്നത്. ഒരു സബ്ഫ്രെയിം വർക്ക് ഒരു ചട്ടക്കൂടാണ്
ഒരു ചട്ടക്കൂടിലുള്ള ഡയറക്ടറി ചട്ടക്കൂടുകൾ ഡയറക്ടറി. സബ്ഫ്രെയിം വർക്ക് ഉൾപ്പെടുന്നു
സബ്ഫ്രെയിം വർക്ക് ഉൾക്കൊള്ളുന്ന ഒരു ചട്ടക്കൂടിന്റെ തലക്കെട്ടിൽ മാത്രമേ തലക്കെട്ടുകൾ ദൃശ്യമാകൂ, അല്ലെങ്കിൽ
ഒരു സഹോദര സബ്ഫ്രെയിം വർക്ക് തലക്കെട്ടിൽ. രണ്ട് സബ്ഫ്രെയിംവർക്കുകൾ സംഭവിക്കുകയാണെങ്കിൽ അവ സഹോദരങ്ങളാണ്
ഒരേ ചട്ടക്കൂട്. ഒരു സബ്ഫ്രെയിംവർക്കിന് ഒരു ചട്ടക്കൂടിന്റെ അതേ പേര് ഉണ്ടായിരിക്കരുത്; എ
ഇത് ലംഘിച്ചാൽ മുന്നറിയിപ്പ് നൽകും. നിലവിൽ ഒരു സബ്ഫ്രെയിം വർക്കിന് കഴിയില്ല
സബ്ഫ്രെയിംവർക്കുകൾ; ഭാവിയിൽ, ഇതിനെ പിന്തുണയ്ക്കുന്നതിനായി മെക്കാനിസം വിപുലീകരിക്കാം. ദി
സാധാരണ ചട്ടക്കൂടുകൾ കണ്ടെത്താൻ കഴിയും /സിസ്റ്റം/ലൈബ്രറി/ഫ്രെയിംവർക്കുകൾ ഒപ്പം
/ ലൈബ്രറി / ഫ്രെയിംവർക്കുകൾ. ഒരു ഉദാഹരണത്തിൽ "#ഉൾപ്പെടുത്തുക ",
എവിടെ ചട്ടക്കൂട് ചട്ടക്കൂടിന്റെ പേര് സൂചിപ്പിക്കുന്നു ഒപ്പം header.h എന്നതിൽ കണ്ടെത്തി
സ്വകാര്യ തലക്കെട്ടുകൾ or തലക്കെട്ടുകൾ ഡയറക്ടറി.

-iframeworkമുതലാളി
പോലെ -F ഡയറക്‌ടറി ഒഴികെ ഒരു സിസ്റ്റം ഡയറക്‌ടറിയായി കണക്കാക്കുന്നു. പ്രധാന വ്യത്യാസം
ഇതിനിടയിൽ -iframework ഒപ്പം -F കൂടെ ആണ് -iframework കമ്പൈലർ മുന്നറിയിപ്പ് നൽകുന്നില്ല
വഴി കണ്ടെത്തിയ ഹെഡർ ഫയലുകൾക്കുള്ളിൽ അടങ്ങിയിരിക്കുന്ന നിർമ്മിതികളെക്കുറിച്ച് മുതലാളി. ഈ ഓപ്ഷൻ സാധുവാണ്
ഭാഷകളുടെ സി കുടുംബത്തിന് മാത്രം.

- ഊഹിച്ചു
ഉപയോഗിക്കുന്ന ചിഹ്നങ്ങൾക്കായി ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ പുറത്തുവിടുക. സ്റ്റബ്സ് ഡീബഗ്ഗിംഗ് ഫോർമാറ്റിനായി,
ഇത് പ്രാപ്തമാക്കുന്നു -ഫെലിമിനേറ്റ്-ഉപയോഗിക്കാത്ത-ഡീബഗ്-ചിഹ്നങ്ങൾ. ഇത് സ്ഥിരസ്ഥിതിയായി ഓണാണ്.

-ജിഫുൾ
എല്ലാ ചിഹ്നങ്ങൾക്കും തരങ്ങൾക്കുമായി ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ പുറത്തുവിടുക.

-mmacosx-version-min=പതിപ്പ്
ഈ എക്സിക്യൂട്ടബിൾ പ്രവർത്തിപ്പിക്കുന്ന MacOS X-ന്റെ ആദ്യ പതിപ്പ് പതിപ്പ്. സാധാരണ
ന്റെ മൂല്യങ്ങൾ പതിപ്പ് 10.1, 10.2, 10.3.9 എന്നിവ ഉൾപ്പെടുന്നു.

സ്ഥിരസ്ഥിതിയായി സിസ്റ്റത്തിന്റെ തലക്കെട്ടുകൾ ഉപയോഗിക്കുന്നതിനാണ് കംപൈലർ നിർമ്മിച്ചിരിക്കുന്നതെങ്കിൽ, സ്ഥിരസ്ഥിതിയായി
ഈ ഓപ്ഷൻ കംപൈലർ പ്രവർത്തിക്കുന്ന സിസ്റ്റം പതിപ്പാണ്, അല്ലാത്തപക്ഷം
നിരവധി സിസ്റ്റങ്ങൾക്കും കോഡ് ബേസുകൾക്കും അനുയോജ്യമായ തിരഞ്ഞെടുപ്പുകൾ നടത്തുക എന്നതാണ് സ്ഥിരസ്ഥിതി
സാധ്യമാണ്.

-എംകെർണൽ
കേർണൽ വികസന മോഡ് പ്രവർത്തനക്ഷമമാക്കുക. ദി -എംകെർണൽ ഓപ്ഷൻ സെറ്റുകൾ - സ്റ്റാറ്റിക്, -fno-common,
-fno-use-cxa-atexit, -fno-ഒഴിവാക്കലുകൾ, -fno-നോൺ-കോൾ-അപവാദങ്ങൾ, -ഫാപ്പിൾ-കെക്സ്റ്റ്,
-fno-ദുർബലമായ ഒപ്പം -fno-rtti വേണ്ടിടത്ത്. ഈ മോഡും സജ്ജമാക്കുന്നു -mno-altivec,
-msoft-float, -fno-builtin ഒപ്പം -mlong-ശാഖ PowerPC ലക്ഷ്യങ്ങൾക്കായി.

-mone-byte-bool
"bool" എന്നതിനായുള്ള സ്ഥിരസ്ഥിതികൾ അസാധുവാക്കുക, അങ്ങനെ "sizeof(bool)==1". സ്ഥിരസ്ഥിതിയായി "sizeof(bool)"
ഡാർവിൻ/പവർപിസിക്ക് വേണ്ടി കംപൈൽ ചെയ്യുമ്പോൾ 4 ആണ്, ഡാർവിൻ/x1-നായി കംപൈൽ ചെയ്യുമ്പോൾ 86 ആണ്, അതിനാൽ ഇത്
ഓപ്ഷന് x86-ൽ യാതൊരു സ്വാധീനവുമില്ല.

മുന്നറിയിപ്പ്: ദി -mone-byte-bool സ്വിച്ച് ബൈനറി അല്ലാത്ത കോഡ് സൃഷ്ടിക്കാൻ ജിസിസിക്ക് കാരണമാകുന്നു
ആ സ്വിച്ച് ഇല്ലാതെ ജനറേറ്റ് ചെയ്ത കോഡുമായി പൊരുത്തപ്പെടുന്നു. ഈ സ്വിച്ച് ഉപയോഗിക്കുന്നത് ആവശ്യമായി വന്നേക്കാം
സിസ്റ്റം ലൈബ്രറികൾ ഉൾപ്പെടെ ഒരു പ്രോഗ്രാമിലെ മറ്റെല്ലാ മൊഡ്യൂളുകളും വീണ്ടും കംപൈൽ ചെയ്യുന്നു. ഇത് ഉപയോഗിക്കൂ
സ്ഥിരമല്ലാത്ത ഡാറ്റാ മോഡലിന് അനുസൃതമായി മാറുക.

-mfix-ആൻഡ്-തുടരുക
-ഫിക്സ്-ആൻഡ്-തുടരുക
-findirect-data
GDB-യെ അനുവദിക്കുന്നത് പോലെയുള്ള വേഗത്തിലുള്ള വികസനത്തിന് അനുയോജ്യമായ കോഡ് സൃഷ്ടിക്കുക
ചലനാത്മകമായി ലോഡുചെയ്യുക .o ഫയലുകൾ ഇതിനകം പ്രവർത്തിക്കുന്ന പ്രോഗ്രാമുകളിലേക്ക്. -findirect-data ഒപ്പം
-ഫിക്സ്-ആൻഡ്-തുടരുക പിന്നോക്ക അനുയോജ്യതയ്ക്കായി നൽകിയിരിക്കുന്നു.

-എല്ലാ_ലോഡ്
സ്റ്റാറ്റിക് ആർക്കൈവ് ലൈബ്രറികളിലെ എല്ലാ അംഗങ്ങളെയും ലോഡ് ചെയ്യുന്നു. മനുഷ്യനെ കാണുക ld(1) കൂടുതൽ വിവരങ്ങൾക്ക്.

-ആർച്ച്_എററുകൾ_മാരകമായ
തെറ്റായ വാസ്തുവിദ്യയുള്ള ഫയലുകളുമായി ബന്ധപ്പെട്ട പിശകുകൾ മാരകമായേക്കാം.

-ബൈൻഡ്_അറ്റ്_ലോഡ്
ഡൈനാമിക് ലിങ്കർ എല്ലാം ബൈൻഡ് ചെയ്യുന്ന തരത്തിൽ ഔട്ട്പുട്ട് ഫയൽ അടയാളപ്പെടുത്തുന്നതിന് കാരണമാകുന്നു
ഫയൽ ലോഡുചെയ്യുമ്പോഴോ സമാരംഭിക്കുമ്പോഴോ നിർവചിക്കാത്ത റഫറൻസുകൾ.

-ബണ്ടിൽ
ഒരു Mach-o ബണ്ടിൽ ഫോർമാറ്റ് ഫയൽ നിർമ്മിക്കുക. മനുഷ്യനെ കാണുക ld(1) കൂടുതൽ വിവരങ്ങൾക്ക്.

-ബണ്ടിൽ_ലോഡർ എക്സിക്യൂട്ടബിൾ
ഈ ഓപ്ഷൻ വ്യക്തമാക്കുന്നു എക്സിക്യൂട്ടബിൾ അത് ബിൽഡ് ഔട്ട്പുട്ട് ഫയൽ ലോഡ് ചെയ്യും
ലിങ്ക്ഡ്. മനുഷ്യനെ കാണുക ld(1) കൂടുതൽ വിവരങ്ങൾക്ക്.

-ഡൈനാമിക്ലിബ്
ഈ ഓപ്‌ഷൻ പാസാകുമ്പോൾ, എക്‌സിക്യൂട്ടബിൾ എപ്പോൾ എന്നതിനുപകരം ജിസിസി ഒരു ഡൈനാമിക് ലൈബ്രറി നിർമ്മിക്കുന്നു
ലിങ്കിംഗ്, ഡാർവിൻ ഉപയോഗിച്ച് ലിബ്ടൂൾ കമാൻഡ്.

-force_cpusubtype_ALL
ഇത് ജിസിസിയുടെ ഔട്ട്‌പുട്ട് ഫയലിൽ എല്ലാം ഉപവിഭാഗം, നിയന്ത്രിക്കുന്ന ഒന്നിന് പകരം
The -എംസിപിയു or - മാർച്ച് ഓപ്ഷൻ.

-allowable_client ഇടപാടുകാരന്റെ പേര്
-ഇടപാടുകാരന്റെ പേര്
-compatibility_version
-നിലവിലെ പതിപ്പ്
-ഡെഡ്_സ്ട്രിപ്പ്
-ആശ്രിത-ഫയൽ
-dylib_file
-dylinker_install_name
- ചലനാത്മകം
-exported_symbols_list
-ഫയലിസ്റ്റ്
-ഫ്ലാറ്റ്_നെയിംസ്പേസ്
-force_flat_namespace
-headerpad_max_install_names
-ഇമേജ്_ബേസ്
-init
-install_name
-keep_private_externs
-multi_module
-multiply_defined
-multiply_defined_unused
-noall_load
-no_dead_strip_inits_and_terms
-നോഫിക്സ്പ്രെബൈൻഡിംഗ്
-നാമൾട്ടിഡിഫുകൾ
-നോപ്രെബൈൻഡ്
-മൂക്ക് ലിങ്ക്ഡിറ്റ്
-pagezero_size
-പ്രീബൈൻഡ്
-prebind_all_twolevel_modules
-സ്വകാര്യ_ബണ്ടിൽ
-read_only_relocks
-sectalign
-സെക്ടോബ്ജക്റ്റ് ചിഹ്നങ്ങൾ
-whyload
-seg1addr
-വിഭാഗം സൃഷ്ടിക്കുക
-സെക്ടോബ്ജക്റ്റ് ചിഹ്നങ്ങൾ
-മേഖല
-സെഗദ്ദർ
-segs_read_only_addr
-segs_read_write_addr
-seg_addr_table
-seg_addr_table_filename
-സെഗ്ലിങ്കെഡിറ്റ്
-സെഗ്പ്രോട്ട്
-segs_read_only_addr
-segs_read_write_addr
-single_module
- സ്റ്റാറ്റിക്
-സബ്_ലൈബ്രറി
-ഉപ_കുട
-twolevel_namespace
-കുട
- നിർവചിക്കാത്തത്
- unexported_symbols_list
ദുർബലമായ_റഫറൻസ്_പൊരുത്തക്കേടുകൾ
- whatsloaded
ഈ ഓപ്ഷനുകൾ ഡാർവിൻ ലിങ്കറിലേക്ക് കൈമാറുന്നു. ഡാർവിൻ ലിങ്കർ മാൻ പേജ് വിവരിക്കുന്നു
അവ വിശദമായി.

DEC ആൽഫ ഓപ്ഷനുകൾ

ഇവ -m ഡിഇസി ആൽഫ നടപ്പാക്കലുകൾക്കായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mno-soft-float
-msoft-float
ഫ്ലോട്ടിംഗ് പോയിന്റിനായി ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).
പ്രവർത്തനങ്ങൾ. എപ്പോൾ -msoft-float വ്യക്തമാക്കിയിരിക്കുന്നു, ഇതിൽ പ്രവർത്തിക്കുന്നു libgcc.a നിർവഹിക്കാൻ ഉപയോഗിക്കുന്നു
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾ. അവയെ അനുകരിക്കുന്ന ദിനചര്യകളാൽ മാറ്റിസ്ഥാപിക്കാത്തപക്ഷം
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഓപ്പറേഷനുകൾ, അല്ലെങ്കിൽ അത്തരം എമുലേഷനുകളെ വിളിക്കുന്ന വിധത്തിൽ സമാഹരിച്ചിരിക്കുന്നു
ദിനചര്യകൾ, ഈ ദിനചര്യകൾ ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾ നൽകുന്നു. നിങ്ങൾ കംപൈൽ ചെയ്യുകയാണെങ്കിൽ
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങളില്ലാത്ത ഒരു ആൽഫ, ലൈബ്രറി നിർമ്മിച്ചിട്ടുണ്ടെന്ന് നിങ്ങൾ ഉറപ്പാക്കണം
അവരെ വിളിക്കാതിരിക്കാൻ.

ഫ്ലോട്ടിംഗ് പോയിന്റ് ഓപ്പറേഷനുകളില്ലാത്ത ആൽഫ നടപ്പിലാക്കലുകൾ ആവശ്യമാണെന്ന കാര്യം ശ്രദ്ധിക്കുക
ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററുകൾ.

-mfp-reg
-mno-fp-regs
ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്റർ സെറ്റ് ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക. -mno-fp-regs
ധ്വനിപ്പിക്കുന്നു -msoft-float. ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്റർ സെറ്റ് ഉപയോഗിച്ചിട്ടില്ലെങ്കിൽ, ഫ്ലോട്ടിംഗ് പോയിന്റ്
ഓപ്പറണ്ടുകൾ പൂർണ്ണസംഖ്യകളും ഫ്ലോട്ടിംഗ് പോയിന്റും പോലെ പൂർണ്ണസംഖ്യ രജിസ്റ്ററുകളിൽ കടന്നുപോകുന്നു
ഫലങ്ങൾ $f0-ന് പകരം $0-ൽ കടന്നുപോകുന്നു. ഇതൊരു നിലവാരമില്ലാത്ത കോളിംഗ് സീക്വൻസാണ്, അതിനാൽ
കംപൈൽ ചെയ്‌ത കോഡ് ഉപയോഗിച്ച് വിളിക്കുന്ന ഫ്ലോട്ടിംഗ് പോയിന്റ് ആർഗ്യുമെന്റ് അല്ലെങ്കിൽ റിട്ടേൺ മൂല്യമുള്ള ഏതെങ്കിലും ഫംഗ്‌ഷൻ
കൂടെ -mno-fp-regs ആ ഓപ്‌ഷനോടൊപ്പം സമാഹരിച്ചിരിക്കണം.

ഈ ഐച്ഛികത്തിന്റെ ഒരു സാധാരണ ഉപയോഗം, ഉപയോഗിക്കാത്ത ഒരു കേർണൽ നിർമ്മിക്കുക എന്നതാണ്
സംരക്ഷിച്ച് പുനഃസ്ഥാപിക്കരുത്, ഏതെങ്കിലും ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററുകൾ.

-മീ
ആൽഫ ആർക്കിടെക്ചർ പരമാവധി ഒപ്റ്റിമൈസ് ചെയ്ത ഫ്ലോട്ടിംഗ് പോയിന്റ് ഹാർഡ്‌വെയർ നടപ്പിലാക്കുന്നു
പ്രകടനം. ഇത് മിക്കവാറും IEEE ഫ്ലോട്ടിംഗ് പോയിന്റ് സ്റ്റാൻഡേർഡിന് അനുസൃതമാണ്. എന്നിരുന്നാലും,
പൂർണ്ണമായി പാലിക്കുന്നതിന്, സോഫ്റ്റ്വെയർ സഹായം ആവശ്യമാണ്. ഈ ഓപ്ഷൻ കോഡ് സൃഷ്ടിക്കുന്നു
പൂർണ്ണമായും IEEE-അനുയോജ്യമായ കോഡ് ഒഴികെ അതാണ് കൃത്യതയില്ലാത്ത-പതാക പരിപാലിക്കപ്പെടുന്നില്ല (ചുവടെ കാണുക).
ഈ ഓപ്‌ഷൻ ഓണാക്കിയാൽ, പ്രീപ്രൊസസ്സർ മാക്രോ "_IEEE_FP" നിർവചിക്കപ്പെടുന്നത്
സമാഹാരം. തത്ഫലമായുണ്ടാകുന്ന കോഡിന് കാര്യക്ഷമത കുറവാണെങ്കിലും ശരിയായി പിന്തുണയ്ക്കാൻ കഴിയും
ഡീനോർമലൈസ്ഡ് സംഖ്യകളും അസാധാരണമായ ഐഇഇഇ മൂല്യങ്ങളായ നോൺ-എ-നമ്പർ, പ്ലസ്/മൈനസ് എന്നിവ
അനന്തത. മറ്റ് ആൽഫ കമ്പൈലറുകൾ ഈ ഓപ്ഷനെ വിളിക്കുന്നു -ieee_with_no_inexact.

-mieee-with-inexact
ഇത് പോലെയാണ് -മീ ജനറേറ്റ് ചെയ്ത കോഡ് ഒഴികെ IEEE നിലനിർത്തുന്നു കൃത്യതയില്ലാത്ത-പതാക.
ഈ ഓപ്‌ഷൻ ഓൺ ചെയ്യുന്നത്, ജനറേറ്റ് ചെയ്‌ത കോഡ് പൂർണ്ണമായും അനുസരിച്ചുള്ള IEEE നടപ്പിലാക്കുന്നതിന് കാരണമാകുന്നു
കണക്ക്. "_IEEE_FP" കൂടാതെ, "_IEEE_FP_EXACT" ഒരു പ്രീപ്രൊസസ്സർ മാക്രോ ആയി നിർവചിച്ചിരിക്കുന്നു.
ചില ആൽഫ നിർവ്വഹണങ്ങളിൽ, തത്ഫലമായുണ്ടാകുന്ന കോഡ് വളരെ സാവധാനത്തിൽ എക്സിക്യൂട്ട് ചെയ്തേക്കാം
സ്ഥിരസ്ഥിതിയായി സൃഷ്ടിച്ച കോഡ്. എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്ന വളരെ കുറച്ച് കോഡ് ഉള്ളതിനാൽ
കൃത്യതയില്ലാത്ത-പതാക, നിങ്ങൾ സാധാരണയായി ഈ ഓപ്ഷൻ വ്യക്തമാക്കരുത്. മറ്റ് ആൽഫ കമ്പൈലറുകൾ വിളിക്കുന്നു
ഈ ഓപ്ഷൻ -ieee_with_inexact.

-mfp-trap-mode=ട്രാപ്പ്-മോഡ്
ഫ്ലോട്ടിംഗ് പോയിന്റുമായി ബന്ധപ്പെട്ട കെണികൾ പ്രവർത്തനക്ഷമമാക്കുന്നത് ഈ ഓപ്‌ഷൻ നിയന്ത്രിക്കുന്നു. മറ്റ് ആൽഫ
കമ്പൈലർമാർ ഈ ഓപ്ഷനെ വിളിക്കുന്നു -fptm ട്രാപ്പ്-മോഡ്. ട്രാപ്പ് മോഡ് നാലിൽ ഒന്നായി സജ്ജമാക്കാം
മൂല്യങ്ങൾ:

n ഇതാണ് സ്ഥിരസ്ഥിതി (സാധാരണ) ക്രമീകരണം. പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ള ഒരേയൊരു കെണികൾ
സോഫ്‌റ്റ്‌വെയറിൽ അപ്രാപ്‌തമാക്കാൻ കഴിയാത്തവ (ഉദാ, സീറോ ട്രാപ്പിലൂടെ വിഭജനം).

u വഴി പ്രവർത്തനക്ഷമമാക്കിയ കെണികൾ കൂടാതെ n, അണ്ടർഫ്ലോ ട്രാപ്പുകളും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

su പോലെ u, എന്നാൽ സോഫ്റ്റ്‌വെയർ പൂർത്തീകരണത്തിനായി നിർദ്ദേശങ്ങൾ സുരക്ഷിതമാണെന്ന് അടയാളപ്പെടുത്തിയിരിക്കുന്നു (കാണുക
വിശദാംശങ്ങൾക്ക് ആൽഫ ആർക്കിടെക്ചർ മാനുവൽ).

sui പോലെ su, എന്നാൽ കൃത്യതയില്ലാത്ത കെണികളും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

-mfp-rounding-mode=റൗണ്ടിംഗ് മോഡ്
IEEE റൗണ്ടിംഗ് മോഡ് തിരഞ്ഞെടുക്കുന്നു. മറ്റ് ആൽഫ കമ്പൈലറുകൾ ഈ ഓപ്ഷനെ വിളിക്കുന്നു -fprm
റൗണ്ടിംഗ് മോഡ്. ദി റൗണ്ടിംഗ് മോഡ് ഇവയിലൊന്ന് ആകാം:

n സാധാരണ IEEE റൗണ്ടിംഗ് മോഡ്. ഫ്ലോട്ടിംഗ് പോയിന്റ് നമ്പറുകൾ ഏറ്റവും അടുത്തുള്ള ഭാഗത്തേക്ക് വൃത്താകൃതിയിലാണ്
മെഷീൻ നമ്പർ അല്ലെങ്കിൽ ടൈ ആണെങ്കിൽ ഇരട്ട മെഷീൻ നമ്പറിലേക്ക്.

m മൈനസ് അനന്തതയിലേക്ക് വൃത്താകൃതി.

c അരിഞ്ഞ റൗണ്ടിംഗ് മോഡ്. ഫ്ലോട്ടിംഗ് പോയിന്റ് നമ്പറുകൾ പൂജ്യത്തിലേക്ക് വൃത്താകൃതിയിലാണ്.

d ഡൈനാമിക് റൗണ്ടിംഗ് മോഡ്. ഫ്ലോട്ടിംഗ് പോയിന്റ് കൺട്രോൾ രജിസ്റ്ററിലെ ഒരു ഫീൽഡ് (fpcr, കാണുക
ആൽഫ ആർക്കിടെക്ചർ റഫറൻസ് മാനുവൽ) ഫലത്തിൽ റൗണ്ടിംഗ് മോഡ് നിയന്ത്രിക്കുന്നു. സി
പ്ലസ് ഇൻഫിനിറ്റിയിലേക്ക് റൗണ്ട് ചെയ്യുന്നതിനായി ലൈബ്രറി ഈ രജിസ്റ്റർ ആരംഭിക്കുന്നു. അങ്ങനെ,
നിങ്ങളുടെ പ്രോഗ്രാം പരിഷ്കരിച്ചില്ലെങ്കിൽ fpcr, d വൃത്താകൃതിയിലുള്ള പ്ലസ് എന്നതിനോട് യോജിക്കുന്നു
അനന്തത.

-mtrap-precision=കെണി-കൃത്യത
ആൽഫ ആർക്കിടെക്ചറിൽ, ഫ്ലോട്ടിംഗ് പോയിന്റ് ട്രാപ്പുകൾ കൃത്യതയില്ലാത്തതാണ്. ഇല്ലാതെ എന്നാണ് ഇതിനർത്ഥം
സോഫ്റ്റ്‌വെയർ സഹായം ഫ്ലോട്ടിംഗ് ട്രാപ്പിൽ നിന്നും പ്രോഗ്രാമിൽ നിന്നും വീണ്ടെടുക്കുന്നത് അസാധ്യമാണ്
വധശിക്ഷ സാധാരണയായി അവസാനിപ്പിക്കേണ്ടതുണ്ട്. സഹായിക്കാൻ കഴിയുന്ന കോഡ് സൃഷ്ടിക്കാൻ ജിസിസിക്ക് കഴിയും
ഒരു കാരണമായ കൃത്യമായ സ്ഥാനം നിർണ്ണയിക്കുന്നതിൽ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ട്രാപ്പ് ഹാൻഡ്‌ലറുകൾ
ഫ്ലോട്ടിംഗ് പോയിന്റ് ട്രാപ്പ്. ഒരു ആപ്ലിക്കേഷന്റെ ആവശ്യകതകളെ ആശ്രയിച്ച്, വ്യത്യസ്തമാണ്
കൃത്യതകളുടെ തലങ്ങൾ തിരഞ്ഞെടുക്കാം:

p പ്രോഗ്രാം കൃത്യത. ഈ ഓപ്‌ഷൻ ഡിഫോൾട്ടാണ്, അതിനർത്ഥം ഒരു ട്രാപ്പ് ഹാൻഡ്‌ലറിന് മാത്രമേ കഴിയൂ
ഏത് പ്രോഗ്രാമാണ് ഫ്ലോട്ടിംഗ് പോയിന്റ് ഒഴിവാക്കലിന് കാരണമായതെന്ന് തിരിച്ചറിയുക.

f പ്രവർത്തന കൃത്യത. ട്രാപ്പ് ഹാൻഡ്‌ലറിന് കാരണമായ പ്രവർത്തനം നിർണ്ണയിക്കാൻ കഴിയും a
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഒഴിവാക്കൽ.

i പ്രബോധന കൃത്യത. ട്രാപ്പ് ഹാൻഡ്‌ലറിന് കൃത്യമായ നിർദ്ദേശം നിർണ്ണയിക്കാൻ കഴിയും
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഒഴിവാക്കലിന് കാരണമായി.

മറ്റ് ആൽഫ കമ്പൈലറുകൾ വിളിക്കപ്പെടുന്ന തത്തുല്യമായ ഓപ്ഷനുകൾ നൽകുന്നു -സ്കോപ്പ്_സേഫ് ഒപ്പം
-പുനരാരംഭിക്കൽ_സുരക്ഷിതം.

-mieee-conformant
ഈ ഓപ്‌ഷൻ ജനറേറ്റുചെയ്‌ത കോഡിനെ ഐഇഇഇ അനുരൂപമായി അടയാളപ്പെടുത്തുന്നു. നിങ്ങൾ ഈ ഓപ്ഷൻ ഉപയോഗിക്കരുത്
നിങ്ങൾ വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ -mtrap-precision=i ഒന്നുകിൽ -mfp-trap-mode=su or
-mfp-trap-mode=sui. അതിന്റെ ഒരേയൊരു ഫലം ലൈൻ പുറപ്പെടുവിക്കുക എന്നതാണ് .കൊടി 48 ചടങ്ങിൽ
ജനറേറ്റ് ചെയ്ത അസംബ്ലി ഫയലിന്റെ പ്രോലോഗ്.

-ബിൽഡ്-കോൺസ്റ്റന്റുകൾ
സാധാരണയായി GCC ഒരു 32- അല്ലെങ്കിൽ 64-ബിറ്റ് പൂർണ്ണസംഖ്യ സ്ഥിരാങ്കം നിർമ്മിക്കാൻ കഴിയുമോ എന്ന് പരിശോധിക്കുന്നു.
രണ്ടോ മൂന്നോ നിർദ്ദേശങ്ങളിൽ ചെറിയ സ്ഥിരാങ്കങ്ങളിൽ നിന്ന്. അതിന് കഴിയുന്നില്ലെങ്കിൽ, അത് ഔട്ട്പുട്ട് ചെയ്യുന്നു
ഒരു അക്ഷരാർത്ഥത്തിൽ കോൺസ്റ്റന്റ്, റൺ ടൈമിൽ ഡാറ്റ സെഗ്‌മെന്റിൽ നിന്ന് ലോഡ് ചെയ്യാൻ കോഡ് ജനറേറ്റ് ചെയ്യുന്നു.

നിർമ്മാണത്തിന് GCC ആവശ്യപ്പെടുന്നതിന് ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക എല്ലാം കോഡ് ഉപയോഗിക്കുന്ന പൂർണ്ണസംഖ്യ സ്ഥിരാങ്കങ്ങൾ, പോലും
ഇതിന് കൂടുതൽ നിർദ്ദേശങ്ങൾ ആവശ്യമാണ് (പരമാവധി ആറ് ആണ്).

ഒരു പങ്കിട്ട ലൈബ്രറി ഡൈനാമിക് ലോഡർ നിർമ്മിക്കാൻ നിങ്ങൾ സാധാരണയായി ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു. സ്വയം എ
പങ്കിട്ട ലൈബ്രറി, വേരിയബിളുകൾ കണ്ടെത്തുന്നതിന് മുമ്പ് അത് മെമ്മറിയിലേക്ക് മാറ്റണം
സ്വന്തം ഡാറ്റ വിഭാഗത്തിലെ സ്ഥിരാങ്കങ്ങൾ.

-mbwx
-mno-bwx
-mcix
-mno-cix
-എംഫിക്സ്
-mno-fix
പരമാവധി
-mno-max
ഓപ്ഷണൽ BWX, CIX, FIX, MAX എന്നിവ ഉപയോഗിക്കുന്നതിന് GCC കോഡ് സൃഷ്ടിക്കണമോ എന്ന് സൂചിപ്പിക്കുക
നിർദ്ദേശ സെറ്റുകൾ. സിപിയു പിന്തുണയ്ക്കുന്ന ഇൻസ്ട്രക്ഷൻ സെറ്റുകൾ ഉപയോഗിക്കുന്നതാണ് ഡിഫോൾട്ട്
വഴി വ്യക്തമാക്കിയ തരം -mcpu= ഓപ്‌ഷൻ അല്ലെങ്കിൽ ജിസിസി നിർമ്മിച്ചിരിക്കുന്ന സിപിയു, ഒന്നുമില്ലെങ്കിൽ
വ്യക്തമാക്കിയ.

-mfloat-vax
-mfloat-ieee
പകരം VAX F, G floating-point arithmetic ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
IEEE സിംഗിൾ ആൻഡ് ഡബിൾ പ്രിസിഷൻ.

-എക്‌സ്‌പ്ലിസിറ്റ്-റെലോക്കുകൾ
-mno-വ്യക്തമായ-relocks
പഴയ ആൽഫ അസംബ്ലറുകൾ വഴിയല്ലാതെ സിംബൽ റീലോക്കേഷനുകൾ സൃഷ്ടിക്കാൻ ഒരു മാർഗവും നൽകിയിട്ടില്ല
അസംബ്ലർ മാക്രോകൾ. ഈ മാക്രോകളുടെ ഉപയോഗം ഒപ്റ്റിമൽ ഇൻസ്ട്രക്ഷൻ ഷെഡ്യൂളിംഗ് അനുവദിക്കുന്നില്ല.
GNU binutils പതിപ്പ് 2.12 കംപൈലറിനെ അനുവദിക്കുന്ന ഒരു പുതിയ വാക്യഘടനയെ പിന്തുണയ്ക്കുന്നു.
ഏതൊക്കെ നിർദ്ദേശങ്ങൾക്കാണ് ഏതൊക്കെ സ്ഥലംമാറ്റങ്ങൾ ബാധകമാകേണ്ടതെന്ന് വ്യക്തമായി അടയാളപ്പെടുത്തുക. ഈ ഓപ്ഷൻ ആണ്
ഡീബഗ്ഗിംഗിന് ഉപയോഗപ്രദമാണ്, കാരണം അസംബ്ലറിന്റെ കഴിവുകൾ ജിസിസി കണ്ടെത്തുന്നു
നിർമ്മിക്കുകയും അതിനനുസരിച്ച് സ്ഥിരസ്ഥിതി സജ്ജമാക്കുകയും ചെയ്യുന്നു.

-msmall-ഡാറ്റ
-mlarge-ഡാറ്റ
എപ്പോൾ -എക്‌സ്‌പ്ലിസിറ്റ്-റെലോക്കുകൾ പ്രാബല്യത്തിൽ, സ്റ്റാറ്റിക് ഡാറ്റ ആക്സസ് ചെയ്യുന്നത് വഴിയാണ് gp-ബന്ധു
സ്ഥലംമാറ്റങ്ങൾ. എപ്പോൾ -msmall-ഡാറ്റ ഉപയോഗിക്കുന്നു, 8 ബൈറ്റുകളോ അതിൽ കുറവോ നീളമുള്ള ഒബ്‌ജക്റ്റുകൾ സ്ഥാപിച്ചിരിക്കുന്നു
a ചെറിയ ഡാറ്റ പ്രദേശം (".sdata", ".sbss" വിഭാഗങ്ങൾ) കൂടാതെ 16-ബിറ്റ് വഴി ആക്സസ് ചെയ്യപ്പെടുന്നു
$gp രജിസ്റ്ററിൽ നിന്നുള്ള സ്ഥലംമാറ്റങ്ങൾ. ഇത് ചെറിയ ഡാറ്റ ഏരിയയുടെ വലുപ്പം പരിമിതപ്പെടുത്തുന്നു
64KB, എന്നാൽ ഒരൊറ്റ നിർദ്ദേശം വഴി വേരിയബിളുകൾ നേരിട്ട് ആക്സസ് ചെയ്യാൻ അനുവദിക്കുന്നു.

സ്ഥിരസ്ഥിതി -mlarge-ഡാറ്റ. ഈ ഓപ്‌ഷൻ ഉപയോഗിച്ച് ഡാറ്റ ഏരിയ താഴെയായി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു
2GB. 2GB-യിൽ കൂടുതൽ ഡാറ്റ ആവശ്യമുള്ള പ്രോഗ്രാമുകൾക്ക് "malloc" അല്ലെങ്കിൽ "mmap" ഉപയോഗിക്കണം
പ്രോഗ്രാമിന്റെ ഡാറ്റ സെഗ്‌മെന്റിന് പകരം ഹീപ്പിൽ ഡാറ്റ അനുവദിക്കുക.

പങ്കിട്ട ലൈബ്രറികൾക്കായി കോഡ് സൃഷ്ടിക്കുമ്പോൾ, -fpic ധ്വനിപ്പിക്കുന്നു -msmall-ഡാറ്റ ഒപ്പം -fPIC
ധ്വനിപ്പിക്കുന്നു -mlarge-ഡാറ്റ.

-msmall-text
-mlarge-text
എപ്പോൾ -msmall-text ഉപയോഗിക്കുന്നു, മുഴുവൻ പ്രോഗ്രാമിന്റെയും കോഡ് എന്ന് കംപൈലർ അനുമാനിക്കുന്നു
(അല്ലെങ്കിൽ പങ്കിട്ട ലൈബ്രറി) 4MB-യിൽ യോജിക്കുന്നു, അതിനാൽ ഒരു ബ്രാഞ്ച് നിർദ്ദേശം ഉപയോഗിച്ച് എത്തിച്ചേരാനാകും.
എപ്പോൾ -msmall-ഡാറ്റ ഉപയോഗിക്കുന്നു, എല്ലാ പ്രാദേശിക ചിഹ്നങ്ങളും പങ്കിടുമെന്ന് കംപൈലറിന് അനുമാനിക്കാം
അതേ $gp മൂല്യം, അങ്ങനെ ഒരു ഫംഗ്‌ഷന് ആവശ്യമായ നിർദ്ദേശങ്ങളുടെ എണ്ണം കുറയ്ക്കുക
4 മുതൽ 1 വരെ വിളിക്കുക.

സ്ഥിരസ്ഥിതി -mlarge-text.

-mcpu=cpu_type
മെഷീൻ തരത്തിനായി ഇൻസ്ട്രക്ഷൻ സെറ്റും നിർദ്ദേശ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകളും സജ്ജമാക്കുക
cpu_type. നിങ്ങൾക്ക് ഒന്നുകിൽ വ്യക്തമാക്കാം EV ശൈലിയുടെ പേര് അല്ലെങ്കിൽ അനുബന്ധ ചിപ്പ് നമ്പർ.
EV4, EV5, EV6 ഫാമിലി പ്രൊസസറുകൾക്ക് വേണ്ടിയുള്ള ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ GCC പിന്തുണയ്ക്കുന്നു.
നിങ്ങൾ വ്യക്തമാക്കിയ പ്രൊസസറിൽ നിന്ന് നിർദ്ദേശങ്ങൾക്കായി സ്ഥിരസ്ഥിതി മൂല്യങ്ങൾ തിരഞ്ഞെടുക്കുന്നു. എങ്കിൽ
നിങ്ങൾ ഒരു പ്രോസസ്സർ തരം വ്യക്തമാക്കുന്നില്ല, GCC ഡിഫോൾട്ട് പ്രോസസറാണ്
കമ്പൈലർ നിർമ്മിച്ചു.

പിന്തുണയ്ക്കുന്ന മൂല്യങ്ങൾ cpu_type ആകുന്നു

വീട്4
വീട്45
21064
ഒരു EV4 ആയി ഷെഡ്യൂൾ ചെയ്യുന്നു, കൂടാതെ ഇൻസ്ട്രക്ഷൻ സെറ്റ് എക്സ്റ്റൻഷനുകളൊന്നുമില്ല.

വീട്5
21164
ഒരു EV5 ആയി ഷെഡ്യൂൾ ചെയ്യുന്നു, കൂടാതെ ഇൻസ്ട്രക്ഷൻ സെറ്റ് എക്സ്റ്റൻഷനുകളൊന്നുമില്ല.

വീട്56
21164a
ഒരു EV5 ആയി ഷെഡ്യൂൾ ചെയ്യുകയും BWX വിപുലീകരണത്തെ പിന്തുണയ്ക്കുകയും ചെയ്യുന്നു.

pca56
21164pc
21164PC
ഒരു EV5 ആയി ഷെഡ്യൂൾ ചെയ്യുകയും BWX, MAX വിപുലീകരണങ്ങളെ പിന്തുണയ്ക്കുകയും ചെയ്യുന്നു.

വീട്6
21264
ഒരു EV6 ആയി ഷെഡ്യൂൾ ചെയ്യുകയും BWX, FIX, MAX വിപുലീകരണങ്ങളെ പിന്തുണയ്ക്കുകയും ചെയ്യുന്നു.

വീട്67
21264a
ഒരു EV6 ആയി ഷെഡ്യൂൾ ചെയ്യുകയും BWX, CIX, FIX, MAX വിപുലീകരണങ്ങളെ പിന്തുണയ്ക്കുകയും ചെയ്യുന്നു.

നേറ്റീവ് ടൂൾചെയിനുകളും മൂല്യത്തെ പിന്തുണയ്ക്കുന്നു നേറ്റീവ്, ഏത് മികച്ച വാസ്തുവിദ്യ തിരഞ്ഞെടുക്കുന്നു
ഹോസ്റ്റ് പ്രോസസറിനുള്ള ഓപ്ഷൻ. -mcpu= സ്വദേശി GCC തിരിച്ചറിഞ്ഞില്ലെങ്കിൽ ഒരു ഫലവുമില്ല
പ്രൊസസർ.

-mtune=cpu_type
മെഷീൻ തരത്തിനായി നിർദ്ദേശ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ മാത്രം സജ്ജമാക്കുക cpu_type. ദി
നിർദ്ദേശങ്ങളുടെ കൂട്ടം മാറ്റിയിട്ടില്ല.

നേറ്റീവ് ടൂൾചെയിനുകളും മൂല്യത്തെ പിന്തുണയ്ക്കുന്നു നേറ്റീവ്, ഏത് മികച്ച വാസ്തുവിദ്യ തിരഞ്ഞെടുക്കുന്നു
ഹോസ്റ്റ് പ്രോസസറിനുള്ള ഓപ്ഷൻ. -mtune= സ്വദേശി GCC തിരിച്ചറിഞ്ഞില്ലെങ്കിൽ ഒരു ഫലവുമില്ല
പ്രൊസസർ.

-മെമ്മറി-ലേറ്റൻസി=കാലം
സാധാരണ മെമ്മറി റഫറൻസുകൾക്കായി ഷെഡ്യൂളർ അനുമാനിക്കേണ്ട ലേറ്റൻസി സജ്ജീകരിക്കുന്നു
അപേക്ഷ. ഉപയോഗിച്ച മെമ്മറി ആക്‌സസ് പാറ്റേണുകളെ ഈ നമ്പർ വളരെയധികം ആശ്രയിച്ചിരിക്കുന്നു
ആപ്ലിക്കേഷനും മെഷീനിലെ ബാഹ്യ കാഷെയുടെ വലുപ്പവും അനുസരിച്ച്.

സാധുവായ ഓപ്ഷനുകൾ കാലം ആകുന്നു

അക്കം
ക്ലോക്ക് സൈക്കിളുകളെ പ്രതിനിധീകരിക്കുന്ന ഒരു ദശാംശ സംഖ്യ.

L1
L2
L3
പ്രധാന
കംപൈലറിൽ "സാധാരണ" EV4 & നായുള്ള ക്ലോക്ക് സൈക്കിളുകളുടെ എണ്ണം കണക്കാക്കുന്നു
ലെവൽ 5, 1 & 2 കാഷെകൾക്കായുള്ള EV3 ഹാർഡ്‌വെയർ (Dcache, Scache, ഒപ്പം
Bcache), അതുപോലെ പ്രധാന മെമ്മറിയിലേക്ക്. EV3-ന് മാത്രമേ L5 സാധുതയുള്ളൂ എന്നത് ശ്രദ്ധിക്കുക.

FR30 ഓപ്ഷനുകൾ

ഈ ഓപ്ഷനുകൾ FR30 പോർട്ടിനായി പ്രത്യേകം നിർവചിച്ചിരിക്കുന്നു.

-msmall-മോഡൽ
ചെറിയ വിലാസ സ്പേസ് മോഡൽ ഉപയോഗിക്കുക. ഇതിന് ചെറിയ കോഡ് നിർമ്മിക്കാൻ കഴിയും, പക്ഷേ അത് അനുമാനിക്കുന്നു
എല്ലാ പ്രതീകാത്മക മൂല്യങ്ങളും വിലാസങ്ങളും 20-ബിറ്റ് ശ്രേണിയിലേക്ക് യോജിക്കുന്നു.

-mno-lsim
റൺടൈം പിന്തുണ നൽകിയിട്ടുണ്ടെന്നും അതിനാൽ ഉൾപ്പെടുത്തേണ്ട ആവശ്യമില്ലെന്നും കരുതുക
സിമുലേറ്റർ ലൈബ്രറി (libsim.a) ലിങ്കർ കമാൻഡ് ലൈനിൽ.

LIF ഓപ്ഷനുകൾ

-എംജിപിആർ-32
ആദ്യത്തെ 32 പൊതു-ഉദ്ദേശ്യ രജിസ്റ്ററുകൾ മാത്രം ഉപയോഗിക്കുക.

-എംജിപിആർ-64
എല്ലാ 64 പൊതു-ഉദ്ദേശ്യ രജിസ്റ്ററുകളും ഉപയോഗിക്കുക.

-mfpr-32
ആദ്യത്തെ 32 ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററുകൾ മാത്രം ഉപയോഗിക്കുക.

-mfpr-64
എല്ലാ 64 ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററുകളും ഉപയോഗിക്കുക.

-mhard-float
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾക്കായി ഹാർഡ്‌വെയർ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക.

-msoft-float
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾക്കായി ലൈബ്രറി ദിനചര്യകൾ ഉപയോഗിക്കുക.

-malloc-cc
വ്യവസ്ഥാ കോഡ് രജിസ്റ്ററുകൾ ചലനാത്മകമായി അനുവദിക്കുക.

-mfixed-cc
വ്യവസ്ഥാ കോഡ് രജിസ്റ്ററുകൾ ചലനാത്മകമായി അനുവദിക്കാൻ ശ്രമിക്കരുത്, "icc0" എന്നിവ മാത്രം ഉപയോഗിക്കുക
"fcc0".

-mdword
ഇരട്ട പദങ്ങൾ ഉപയോഗിക്കുന്നതിന് ABI മാറ്റുക.

-mno-dword
ഇരട്ട വാക്കുകളുടെ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കരുത്.

- ഇരട്ട
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഇരട്ട നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക.

-mno-ഇരട്ട
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഇരട്ട നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കരുത്.

- മീഡിയ
മീഡിയ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക.

-mno-media
മാധ്യമ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കരുത്.

-മുലദ്ദ്
നിർദ്ദേശങ്ങൾ ഗുണിക്കുകയും ചേർക്കുക/കുറക്കുകയും ചെയ്യുക.

-mno-muladd
ഗുണിക്കുക, ചേർക്കുക/കുറയ്ക്കൽ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കരുത്.

-mfdpic
പോയിന്ററുകളെ പ്രതിനിധീകരിക്കാൻ ഫംഗ്‌ഷൻ ഡിസ്ക്രിപ്റ്ററുകൾ ഉപയോഗിക്കുന്ന FDPIC ABI തിരഞ്ഞെടുക്കുക
പ്രവർത്തനങ്ങൾ. PIC/PIE-യുമായി ബന്ധപ്പെട്ട ഓപ്ഷനുകളൊന്നുമില്ലാതെ, അത് സൂചിപ്പിക്കുന്നു -fPIE. കൂടെ -fpic or
-fpie, GOT എൻട്രികളും ചെറിയ ഡാറ്റയും GOT-ൽ നിന്ന് 12-ബിറ്റ് പരിധിക്കുള്ളിലാണെന്ന് ഇത് അനുമാനിക്കുന്നു
അടിസ്ഥാന വിലാസം; കൂടെ -fPIC or -fPIE, GOT ഓഫ്‌സെറ്റുകൾ 32 ബിറ്റുകൾ ഉപയോഗിച്ച് കണക്കാക്കുന്നു. കൂടെ എ
bfin-elf ലക്ഷ്യം, ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നു -എംസിം.

-minline-plt
അറിയാത്ത ഫംഗ്‌ഷനുകളിലേക്കുള്ള ഫംഗ്‌ഷൻ കോളുകളിലെ PLT എൻട്രികളുടെ ഇൻലൈനിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
പ്രാദേശികമായി ബന്ധിപ്പിക്കുക. അതില്ലാതെ ഒരു ഫലവുമില്ല -mfdpic. എങ്കിൽ സ്ഥിരസ്ഥിതിയായി ഇത് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
സ്പീഡ് ഒപ്റ്റിമൈസ് ചെയ്യുകയും പങ്കിട്ട ലൈബ്രറികൾക്കായി കംപൈൽ ചെയ്യുകയും ചെയ്യുന്നു (അതായത്, -fPIC or -fpic), അഥവാ
എപ്പോൾ പോലുള്ള ഒരു ഒപ്റ്റിമൈസേഷൻ ഓപ്ഷൻ -O3 അല്ലെങ്കിൽ മുകളിലുള്ളത് കമാൻഡ് ലൈനിൽ ഉണ്ട്.

-mTLS
ത്രെഡ്-ലോക്കൽ കോഡ് സൃഷ്ടിക്കുമ്പോൾ ഒരു വലിയ TLS സെഗ്‌മെന്റ് കരുതുക.

-mtls
ത്രെഡ്-ലോക്കൽ കോഡ് സൃഷ്ടിക്കുമ്പോൾ ഒരു വലിയ TLS സെഗ്‌മെന്റ് അനുമാനിക്കരുത്.

-mgprel-ro
FDPIC ABI-ൽ ഉള്ളതായി അറിയാവുന്ന ഡാറ്റയ്ക്കായി "GPREL" റീലോക്കേഷനുകളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക
വായന-മാത്രം വിഭാഗങ്ങൾ. ഇത് ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു, ഒഴികെ -fpic or -fpie: എന്നിരുന്നാലും
ഗ്ലോബൽ ഓഫ്‌സെറ്റ് ടേബിളിനെ ചെറുതാക്കാൻ ഇത് സഹായിച്ചേക്കാം, ഇത് 1-ന് 4 നിർദ്ദേശം ട്രേഡ് ചെയ്യുന്നു
-fPIC or -fPIE, ഇത് 3-നായി 4 നിർദ്ദേശങ്ങൾ ട്രേഡ് ചെയ്യുന്നു, അതിലൊന്ന് ഒന്നിലധികം ആളുകൾ പങ്കിട്ടേക്കാം
ചിഹ്നങ്ങൾ, കൂടാതെ ഇത് പരാമർശിച്ച ചിഹ്നത്തിനായുള്ള ഒരു GOT എൻട്രിയുടെ ആവശ്യകത ഒഴിവാക്കുന്നു, അതിനാൽ ഇത്
വിജയിക്കാനാണ് കൂടുതൽ സാധ്യത. ഇല്ലെങ്കിൽ, -mno-gprel-ro ഇത് പ്രവർത്തനരഹിതമാക്കാൻ ഉപയോഗിക്കാം.

-multilib-library-pic
(ലൈബ്രറി, FD അല്ല) പിക് ലൈബ്രറികളുമായി ലിങ്ക് ചെയ്യുക. അത് സൂചിപ്പിക്കുന്നത് -mlibrary-ചിത്രം, അതുപോലെ
പ്രകാരം -fPIC ഒപ്പം -fpic കൂടാതെ -mfdpic. നിങ്ങൾ ഒരിക്കലും അത് വ്യക്തമായി ഉപയോഗിക്കേണ്ടതില്ല.

-mlinked-fp
ഒരു സ്റ്റാക്ക് ഫ്രെയിം എപ്പോഴെങ്കിലും എപ്പോഴും ഒരു ഫ്രെയിം പോയിന്റർ സൃഷ്ടിക്കുന്നതിനുള്ള EABI ആവശ്യകത പിന്തുടരുക
അനുവദിച്ചിട്ടുണ്ട്. ഈ ഓപ്‌ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കിയതിനാൽ ഇത് പ്രവർത്തനരഹിതമാക്കാം
-mno-linked-fp.

-mlong-കോളുകൾ
നിലവിലെ കംപൈലേഷൻ യൂണിറ്റിന് പുറത്തുള്ള ഫംഗ്‌ഷനുകൾ വിളിക്കാൻ പരോക്ഷ വിലാസം ഉപയോഗിക്കുക. ഈ
32-ബിറ്റ് വിലാസ സ്ഥലത്ത് എവിടെയും ഫംഗ്‌ഷനുകൾ സ്ഥാപിക്കാൻ അനുവദിക്കുന്നു.

-മാലിൻ-ലേബലുകൾ
മുമ്പത്തെ പാക്കറ്റിലേക്ക് NOP-കൾ ചേർത്ത് 8-ബൈറ്റ് അതിർത്തിയിലേക്ക് ലേബലുകൾ വിന്യസിക്കാൻ ശ്രമിക്കുക.
VLIW പാക്കിംഗ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ മാത്രമേ ഈ ഓപ്‌ഷനു ഫലമുണ്ടാകൂ. അത് പുതിയത് സൃഷ്ടിക്കുന്നില്ല
പാക്കറ്റുകൾ; ഇത് നിലവിലുള്ളവയിലേക്ക് NOP-കൾ ചേർക്കുന്നു.

-mlibrary-ചിത്രം
സ്ഥാന-സ്വതന്ത്ര EABI കോഡ് സൃഷ്ടിക്കുക.

-macc-4
ആദ്യത്തെ നാല് മീഡിയ അക്യുമുലേറ്റർ രജിസ്റ്ററുകൾ മാത്രം ഉപയോഗിക്കുക.

-macc-8
എട്ട് മീഡിയ അക്യുമുലേറ്റർ രജിസ്റ്ററുകളും ഉപയോഗിക്കുക.

-പാക്ക്
VLIW നിർദ്ദേശങ്ങൾ പായ്ക്ക് ചെയ്യുക.

-mno-പാക്ക്
VLIW നിർദ്ദേശങ്ങൾ പാക്ക് ചെയ്യരുത്.

-mno-കൊടികൾ
e_flags-ൽ ABI സ്വിച്ചുകൾ അടയാളപ്പെടുത്തരുത്.

-mcond-നീക്കം
സോപാധിക-ചലന നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക (സ്ഥിരസ്ഥിതി).

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-mno-cond-നീക്കം
സോപാധിക-ചലന നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനരഹിതമാക്കുക.

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-mscc
സോപാധിക സെറ്റ് നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക (സ്ഥിരസ്ഥിതി).

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-mno-sc
സോപാധിക സെറ്റ് നിർദ്ദേശങ്ങളുടെ ഉപയോഗം അപ്രാപ്തമാക്കുക.

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-mcond-exec
സോപാധിക നിർവ്വഹണത്തിന്റെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക (സ്ഥിരസ്ഥിതി).

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-mno-cond-exec
സോപാധിക നിർവ്വഹണത്തിന്റെ ഉപയോഗം പ്രവർത്തനരഹിതമാക്കുക.

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-mvliw-ശാഖ
VLIW നിർദ്ദേശങ്ങളിലേക്ക് ശാഖകൾ പാക്ക് ചെയ്യാൻ ഒരു പാസ് പ്രവർത്തിപ്പിക്കുക (സ്ഥിരസ്ഥിതി).

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-mno-vliw-ശാഖ
VLIW നിർദ്ദേശങ്ങളിൽ ശാഖകൾ പാക്ക് ചെയ്യാനുള്ള പാസ് റൺ ചെയ്യരുത്.

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-multi-cond-exec
"&&", "||" എന്നിവയുടെ ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനക്ഷമമാക്കുക സോപാധിക നിർവ്വഹണത്തിൽ (സ്ഥിരസ്ഥിതി).

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-mno-multi-cond-exec
"&&", "||" എന്നിവയുടെ ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനരഹിതമാക്കുക സോപാധിക നിർവ്വഹണത്തിൽ.

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-mnested-cond-exec
നെസ്റ്റഡ് സോപാധിക നിർവ്വഹണ ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനക്ഷമമാക്കുക (സ്ഥിരസ്ഥിതി).

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-mno-nested-cond-exec
നെസ്റ്റഡ് സോപാധിക നിർവ്വഹണ ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനരഹിതമാക്കുക.

ഈ സ്വിച്ച് പ്രധാനമായും കംപൈലർ ഡീബഗ്ഗ് ചെയ്യുന്നതിനുള്ളതാണ്, അത് നീക്കം ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
ഭാവി പതിപ്പ്.

-മോപ്റ്റിമൈസ്-അംഗം
ഈ സ്വിച്ച് കംപൈലർ സൃഷ്ടിച്ച കോഡിൽ നിന്ന് അനാവശ്യമായ "മെമ്പർ" നിർദ്ദേശങ്ങൾ നീക്കം ചെയ്യുന്നു.
ഇത് സ്ഥിരസ്ഥിതിയായി പ്രാപ്തമാക്കി.

-mno-optimize-membar
എന്നതിൽ നിന്ന് അനാവശ്യമായ "മെമ്പർ" നിർദ്ദേശങ്ങൾ സ്വയമേവ നീക്കംചെയ്യുന്നത് ഈ സ്വിച്ച് പ്രവർത്തനരഹിതമാക്കുന്നു
സൃഷ്ടിച്ച കോഡ്.

-mtomcat-stats
ടോംകാറ്റ് സ്ഥിതിവിവരക്കണക്കുകൾ അച്ചടിക്കാൻ ഗ്യാസ് ഉണ്ടാക്കുക.

-mcpu=സിപിയു
കോഡ് ജനറേറ്റ് ചെയ്യേണ്ട പ്രോസസ്സർ തരം തിരഞ്ഞെടുക്കുക. സാധ്യമായ മൂല്യങ്ങൾ frv, fr550,
ഗോവ, fr500, fr450, fr405, fr400, fr300 ഒപ്പം ലഘുവായ.

ഗ്നു / ലിനക്സ് ഓപ്ഷനുകൾ

ഇവ -m ഗ്നു/ലിനക്സ് ടാർഗെറ്റുകൾക്കായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mglibc
GNU C ലൈബ്രറി ഉപയോഗിക്കുക. ഓൺ ഒഴികെയുള്ള സ്ഥിരസ്ഥിതി ഇതാണ് *-*-linux-*uclibc* ഒപ്പം
*-*-linux-*android* ടാർഗെറ്റുകൾ.

-മുക്ലിബിസി
uClibc C ലൈബ്രറി ഉപയോഗിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി *-*-linux-*uclibc* ടാർഗെറ്റുകൾ.

-ബയോണിക്
ബയോണിക് സി ലൈബ്രറി ഉപയോഗിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി *-*-linux-*android* ടാർഗെറ്റുകൾ.

-മണ്ട്രോയിഡ്
ആൻഡ്രോയിഡ് പ്ലാറ്റ്‌ഫോമിന് അനുയോജ്യമായ കോഡ് കംപൈൽ ചെയ്യുക. ഇതാണ് സ്ഥിരസ്ഥിതി
*-*-linux-*android* ടാർഗെറ്റുകൾ.

കംപൈൽ ചെയ്യുമ്പോൾ, ഈ ഓപ്ഷൻ പ്രാപ്തമാക്കുന്നു -ബയോണിക്, -fPIC, -fno-ഒഴിവാക്കലുകൾ ഒപ്പം -fno-rtti by
സ്ഥിരസ്ഥിതി. ലിങ്ക് ചെയ്യുമ്പോൾ, ഈ ഓപ്‌ഷൻ GCC ഡ്രൈവറെ Android-നിർദ്ദിഷ്‌ട ഓപ്‌ഷനുകൾ പാസാക്കുന്നു
ലിങ്കറിലേക്ക്. അവസാനമായി, ഈ ഐച്ഛികം പ്രീപ്രൊസസ്സർ മാക്രോ "__ANDROID__" ആയിത്തീരുന്നു
നിർവചിച്ചിരിക്കുന്നത്.

-tno-android-cc
യുടെ സമാഹാര ഇഫക്‌റ്റുകൾ പ്രവർത്തനരഹിതമാക്കുക -മണ്ട്രോയിഡ്, അതായത്, പ്രവർത്തനക്ഷമമാക്കരുത് -ബയോണിക്, -fPIC,
-fno-ഒഴിവാക്കലുകൾ ഒപ്പം -fno-rtti സ്ഥിരസ്ഥിതിയായി.

-tno-android-ld
ന്റെ ലിങ്കിംഗ് ഇഫക്റ്റുകൾ പ്രവർത്തനരഹിതമാക്കുക -മണ്ട്രോയിഡ്, അതായത്, ഇതിലേക്ക് സ്റ്റാൻഡേർഡ് ലിനക്സ് ലിങ്കിംഗ് ഓപ്ഷനുകൾ കൈമാറുക
ലിങ്കർ.

H8 / 300 ഓപ്ഷനുകൾ

ഇവ -m H8/300 നടപ്പിലാക്കലുകൾക്കായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mrelax
സാധ്യമാകുമ്പോൾ, ലിങ്ക് സമയത്ത് ചില വിലാസ റഫറൻസുകൾ ചുരുക്കുക; ലിങ്കർ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു
-ശാന്തമാകൂ.

-mh H8/300H-ന് കോഡ് സൃഷ്ടിക്കുക.

-മിസ് H8S-നായി കോഡ് സൃഷ്ടിക്കുക.

-mn സാധാരണ മോഡിൽ H8S, H8/300H എന്നിവയ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക. ഈ സ്വിച്ച് ഉപയോഗിക്കണം
ഒന്നുകിൽ കൂടെ -mh or -മിസ്.

-ms2600
H8S/2600-നുള്ള കോഡ് സൃഷ്ടിക്കുക. ഈ സ്വിച്ച് ഉപയോഗിക്കേണ്ടതാണ് -മിസ്.

-മെക്സർ
മോണിറ്റർ ഉപയോഗിച്ച് ഫംഗ്‌ഷൻ നിർവ്വഹിക്കുന്നതിന് മുമ്പ് വിപുലീകൃത രജിസ്റ്ററുകൾ സ്റ്റാക്കിൽ സൂക്ഷിക്കുന്നു
ആട്രിബ്യൂട്ട്. ഡിഫോൾട്ട് ഓപ്ഷൻ ആണ് -മെക്സർ. H8S ടാർഗെറ്റുകൾക്ക് മാത്രമേ ഈ ഓപ്ഷൻ സാധുതയുള്ളൂ.

-mno-exr
മോണിറ്റർ ഉപയോഗിച്ച് ഫംഗ്‌ഷൻ നിർവ്വഹിക്കുന്നതിന് മുമ്പ് വിപുലീകൃത രജിസ്റ്ററുകൾ സ്റ്റാക്കിൽ സൂക്ഷിക്കില്ല
ആട്രിബ്യൂട്ട്. ഡിഫോൾട്ട് ഓപ്ഷൻ ആണ് -mno-exr. H8S ടാർഗെറ്റുകൾക്ക് മാത്രമേ ഈ ഓപ്ഷൻ സാധുതയുള്ളൂ.

-മിന്റ്32
സ്ഥിരസ്ഥിതിയായി "int" ഡാറ്റ 32 ബിറ്റുകൾ ആക്കുക.

-malign-300
H8/300H, H8S എന്നിവയിൽ, H8/300-ന്റെ അതേ വിന്യാസ നിയമങ്ങൾ ഉപയോഗിക്കുക. സ്ഥിരസ്ഥിതി
H8/300H, H8S എന്നിവ 4-ബൈറ്റ് ബൗണ്ടറികളിൽ ലോങ്ങുകളും ഫ്ലോട്ടുകളും വിന്യസിക്കുന്നതാണ്.
-malign-300 അവയെ 2-ബൈറ്റ് ബൗണ്ടറികളിൽ വിന്യസിക്കുന്നതിന് കാരണമാകുന്നു. ഈ ഓപ്ഷന് യാതൊരു ഫലവുമില്ല
H8/300-ൽ.

എച്ച്പിപിഎ ഓപ്ഷനുകൾ

ഇവ -m കമ്പ്യൂട്ടറുകളുടെ HPPA കുടുംബത്തിനായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-മാർച്ച്=വാസ്തുവിദ്യ-തരം
നിർദ്ദിഷ്ട ആർക്കിടെക്ചറിനായി കോഡ് സൃഷ്ടിക്കുക. എന്നതിനായുള്ള തിരഞ്ഞെടുപ്പുകൾ വാസ്തുവിദ്യ-തരം ആകുന്നു
1.0 PA 1.0-ന്, 1.1 PA 1.1, ഒപ്പം 2.0 PA 2.0 പ്രോസസ്സറുകൾക്ക്. റഫർ ചെയ്യുക
/usr/lib/sched.models ശരിയായ ആർക്കിടെക്ചർ ഓപ്ഷൻ നിർണ്ണയിക്കാൻ ഒരു HP-UX സിസ്റ്റത്തിൽ
നിങ്ങളുടെ മെഷീനായി. കുറഞ്ഞ സംഖ്യയുള്ള ആർക്കിടെക്ചറുകൾക്കായി സമാഹരിച്ച കോഡ് ഉയർന്നതിൽ പ്രവർത്തിക്കുന്നു
അക്കമിട്ട വാസ്തുവിദ്യകൾ, പക്ഷേ മറിച്ചല്ല.

-mpa-risc-1-0
-mpa-risc-1-1
-mpa-risc-2-0
എന്നതിനായുള്ള പര്യായങ്ങൾ -മാർച്ച്=1.0, -മാർച്ച്=1.1, ഒപ്പം -മാർച്ച്=2.0 യഥാക്രമം.

-mjump-in-delay
ഈ ഓപ്‌ഷൻ അവഗണിക്കുകയും അനുയോജ്യതയ്ക്കായി മാത്രം നൽകുകയും ചെയ്യുന്നു.

-mdisable-fpregs
ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററുകൾ ഏതെങ്കിലും വിധത്തിൽ ഉപയോഗിക്കുന്നതിൽ നിന്ന് തടയുക. ഇതിന് ഇത് ആവശ്യമാണ്
ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററുകളുടെ അലസമായ സന്ദർഭ സ്വിച്ചിംഗ് നടത്തുന്ന കേർണലുകൾ കംപൈൽ ചെയ്യുന്നു. എങ്കിൽ
നിങ്ങൾ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുകയും കംപൈലറായ ഫ്ലോട്ടിംഗ്-പോയിന്റ് പ്രവർത്തനങ്ങൾ നടത്താൻ ശ്രമിക്കുകയും ചെയ്യുന്നു
അലസിപ്പിക്കുന്നു.

-mdisable-indexing
ഇൻഡെക്സിംഗ് വിലാസ മോഡുകൾ ഉപയോഗിക്കുന്നതിൽ നിന്ന് കംപൈലറിനെ തടയുക. ഇത് ചിലത് ഒഴിവാക്കുന്നു
MACH-ന് കീഴിൽ MIG സൃഷ്ടിച്ച കോഡ് കംപൈൽ ചെയ്യുമ്പോൾ അവ്യക്തമായ പ്രശ്നങ്ങൾ.

-mno-space-regs
ടാർഗെറ്റിന് സ്പേസ് രജിസ്റ്ററുകൾ ഇല്ലെന്ന് അനുമാനിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക. ഇത് ജിസിസിയെ അനുവദിക്കുന്നു
വേഗതയേറിയ പരോക്ഷ കോളുകൾ സൃഷ്ടിക്കുകയും അൺസ്കെയിൽ ചെയ്യാത്ത സൂചിക വിലാസ മോഡുകൾ ഉപയോഗിക്കുകയും ചെയ്യുക.

അത്തരം കോഡ് ലെവൽ 0 PA സിസ്റ്റങ്ങൾക്കും കേർണലുകൾക്കും അനുയോജ്യമാണ്.

-mfast-പരോക്ഷ-കോളുകൾ
കോളുകൾ ഒരിക്കലും ബഹിരാകാശ അതിരുകൾ കടക്കുന്നില്ലെന്ന് കരുതുന്ന കോഡ് സൃഷ്ടിക്കുക. ഇത് ജിസിസിയെ അനുവദിക്കുന്നു
വേഗത്തിൽ പരോക്ഷ കോളുകൾ ചെയ്യുന്ന കോഡ് എമിറ്റ് ചെയ്യുക.

പങ്കിട്ട ലൈബ്രറികളുടെയോ നെസ്റ്റഡ് ഫംഗ്‌ഷനുകളുടെയോ സാന്നിധ്യത്തിൽ ഈ ഓപ്ഷൻ പ്രവർത്തിക്കില്ല.

-mfixed-range=രജിസ്റ്റർ-പരിധി
നൽകിയിരിക്കുന്ന രജിസ്റ്റർ ശ്രേണിയെ നിശ്ചിത രജിസ്റ്ററുകളായി കണക്കാക്കുന്ന കോഡ് സൃഷ്ടിക്കുക. ഒരു നിശ്ചിത രജിസ്റ്റർ
രജിസ്റ്റർ അലോക്കേറ്റർക്ക് ഉപയോഗിക്കാൻ കഴിയാത്ത ഒന്നാണ്. കേർണൽ കംപൈൽ ചെയ്യുമ്പോൾ ഇത് ഉപയോഗപ്രദമാണ്
കോഡ്. ഒരു ഡാഷ് കൊണ്ട് വേർതിരിക്കുന്ന രണ്ട് രജിസ്റ്ററുകളായി ഒരു രജിസ്റ്റർ ശ്രേണി വ്യക്തമാക്കിയിരിക്കുന്നു. ഒന്നിലധികം
രജിസ്റ്റർ ശ്രേണികൾ ഒരു കോമ ഉപയോഗിച്ച് വേർതിരിക്കാവുന്നതാണ്.

-mlong-ലോഡ്-സ്റ്റോർ
HP-UX 3-ന് ചിലപ്പോൾ ആവശ്യമായി വരുന്ന 10-ഇൻസ്ട്രക്ഷൻ ലോഡ്, സ്റ്റോർ സീക്വൻസുകൾ സൃഷ്ടിക്കുക
ലിങ്കർ. ഇത് തുല്യമാണ് +k HP കമ്പൈലറുകളിലേക്കുള്ള ഓപ്ഷൻ.

-കയറ്റാവുന്ന-റൺടൈം
ELF സിസ്റ്റങ്ങൾക്കായി HP നിർദ്ദേശിച്ച പോർട്ടബിൾ കോളിംഗ് കൺവെൻഷനുകൾ ഉപയോഗിക്കുക.

-mgas
GAS-ന് മാത്രം മനസ്സിലാകുന്ന അസംബ്ലർ നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക.

-mschedule=cpu-തരം
മെഷീൻ തരത്തിനായുള്ള നിയന്ത്രണങ്ങൾ അനുസരിച്ച് കോഡ് ഷെഡ്യൂൾ ചെയ്യുക cpu-തരം. തിരഞ്ഞെടുപ്പുകൾ
വേണ്ടി cpu-തരം ആകുന്നു 700 7100, 7100LC, 7200, 7300 ഒപ്പം 8000. കാണുക
/usr/lib/sched.models ശരിയായ ഷെഡ്യൂളിംഗ് ഓപ്ഷൻ നിർണ്ണയിക്കാൻ ഒരു HP-UX സിസ്റ്റത്തിൽ
നിങ്ങളുടെ യന്ത്രം. ഡിഫോൾട്ട് ഷെഡ്യൂളിംഗ് ആണ് 8000.

-mlinker-opt
HP-UX ലിങ്കറിൽ ഒപ്റ്റിമൈസേഷൻ പാസ് പ്രവർത്തനക്ഷമമാക്കുക. ഇത് പ്രതീകാത്മക ഡീബഗ്ഗിംഗ് ഉണ്ടാക്കുന്നു എന്നത് ശ്രദ്ധിക്കുക
അസാധ്യം. ഇത് HP-UX 8, HP-UX 9 ലിങ്കറുകളിൽ ഒരു ബഗ് ട്രിഗർ ചെയ്യുന്നു
ചില പ്രോഗ്രാമുകൾ ലിങ്ക് ചെയ്യുമ്പോൾ വ്യാജ പിശക് സന്ദേശങ്ങൾ നൽകുക.

-msoft-float
ഫ്ലോട്ടിംഗ് പോയിന്റിനായി ലൈബ്രറി കോളുകൾ അടങ്ങിയ ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. മുന്നറിയിപ്പ്: ആവശ്യമായ
എല്ലാ HPPA ലക്ഷ്യങ്ങൾക്കും ലൈബ്രറികൾ ലഭ്യമല്ല. സാധാരണയായി സൗകര്യങ്ങൾ
മെഷീന്റെ സാധാരണ സി കംപൈലർ ഉപയോഗിക്കുന്നു, പക്ഷേ ഇത് നേരിട്ട് ക്രോസിൽ ചെയ്യാൻ കഴിയില്ല.
സമാഹാരം. അനുയോജ്യമായ ലൈബ്രറി നൽകുന്നതിന് നിങ്ങൾ സ്വന്തം ക്രമീകരണം ചെയ്യണം
ക്രോസ്-കംപൈലേഷനുള്ള പ്രവർത്തനങ്ങൾ.

-msoft-float ഔട്ട്പുട്ട് ഫയലിലെ കോളിംഗ് കൺവെൻഷൻ മാറ്റുന്നു; അതിനാൽ, അത് മാത്രം
നിങ്ങൾ സമാഹരിച്ചാൽ ഉപയോഗപ്രദമാണ് എല്ലാം ഈ ഓപ്ഷൻ ഉള്ള ഒരു പ്രോഗ്രാമിന്റെ. പ്രത്യേകിച്ച്, നിങ്ങൾക്ക് ആവശ്യമാണ്
സമാഹരിക്കുക libgcc.a, GCC-യ്‌ക്കൊപ്പം വരുന്ന ലൈബ്രറി -msoft-float ഇതിനായി
ജോലി ചെയ്യാൻ.

-msio
സെർവർ IO-യ്‌ക്കായി "_SIO" എന്ന മുൻ നിർവചനം സൃഷ്ടിക്കുക. സ്ഥിരസ്ഥിതിയാണ് -mwsio. ഇത് സൃഷ്ടിക്കുന്നു
വർക്ക്‌സ്റ്റേഷൻ IO-യ്‌ക്കായി "__hp9000s700", "__hp9000s700__", "_WSIO" എന്നിവ മുൻനിർവചിക്കുന്നു.
ഈ ഓപ്ഷനുകൾ HP-UX, HI-UX എന്നിവയ്ക്ക് കീഴിൽ ലഭ്യമാണ്.

-mgnu-ld
ഗ്നുവിനുള്ള പ്രത്യേക ഓപ്ഷനുകൾ ഉപയോഗിക്കുക ld. ഇത് കടന്നുപോകുന്നു - പങ്കിട്ടു ലേക്ക് ld ഒരു പങ്കിടൽ നിർമ്മിക്കുമ്പോൾ
പുസ്തകശാല. GCC കോൺഫിഗർ ചെയ്യുമ്പോൾ അത് വ്യക്‌തമായോ പരോക്ഷമായോ ഉള്ളതാണ്
ഗ്നു ലിങ്കർ. ഈ ഓപ്ഷൻ ഏതിനെ ബാധിക്കില്ല ld വിളിച്ചു; അത് എന്ത് മാറ്റുന്നു
പാരാമീറ്ററുകൾ അതിലേക്ക് കൈമാറുന്നു ld. ദി ld എന്ന് വിളിക്കുന്നത് നിർണ്ണയിക്കപ്പെടുന്നു
--with-ld കോൺഫിഗർ ഓപ്‌ഷൻ, ജിസിസിയുടെ പ്രോഗ്രാം സെർച്ച് പാത്ത്, ഒടുവിൽ ഉപയോക്താവിന്റെ വഴി PATH.
GCC ഉപയോഗിക്കുന്ന ലിങ്കർ ഉപയോഗിച്ച് പ്രിന്റ് ചെയ്യാവുന്നതാണ് ഏത് `ജിസിസി -print-prog-name=ld`. ഈ
64-ബിറ്റ് HP-UX GCC-യിൽ മാത്രമേ ഓപ്ഷൻ ലഭ്യമാകൂ, അതായത് കോൺഫിഗർ ചെയ്‌തിരിക്കുന്നു
hppa*64*-*-hpux*.

-mhp-ld
HP-യ്‌ക്കുള്ള പ്രത്യേക ഓപ്ഷനുകൾ ഉപയോഗിക്കുക ld. ഇത് കടന്നുപോകുന്നു -b ലേക്ക് ld ഒരു പങ്കിട്ട ലൈബ്രറി നിർമ്മിക്കുമ്പോൾ
കടന്നുപോകുകയും ചെയ്യുന്നു +അംഗീകരിക്കുക ടൈപ്പ് പൊരുത്തക്കേട് ലേക്ക് ld എല്ലാ ലിങ്കുകളിലും. ജിസിസി ആയിരിക്കുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ്
എച്ച്പി ലിങ്കർ ഉപയോഗിച്ച് വ്യക്തമായി അല്ലെങ്കിൽ പരോക്ഷമായി ക്രമീകരിച്ചിരിക്കുന്നു. ഈ ഓപ്ഷൻ ബാധിക്കില്ല
ഏത് ld വിളിച്ചു; ഏത് പാരാമീറ്ററുകൾ അതിലേക്ക് കൈമാറുന്നു എന്നതിനെ അത് മാറ്റുന്നു ld. ദി ld
എന്ന് വിളിക്കുന്നത് നിർണ്ണയിക്കപ്പെടുന്നു --with-ld കോൺഫിഗർ ഓപ്ഷൻ, ജിസിസിയുടെ പ്രോഗ്രാം തിരയൽ
പാത, ഒടുവിൽ ഉപയോക്താവിന്റെ വഴി PATH. GCC ഉപയോഗിക്കുന്ന ലിങ്കർ ഉപയോഗിച്ച് പ്രിന്റ് ചെയ്യാവുന്നതാണ്
ഏത് `ജിസിസി -print-prog-name=ld`. ഈ ഓപ്ഷൻ 64-ബിറ്റ് HP-UX-ൽ മാത്രമേ ലഭ്യമാകൂ
GCC, അതായത് കോൺഫിഗർ ചെയ്തിരിക്കുന്നത് hppa*64*-*-hpux*.

-mlong-കോളുകൾ
ദൈർഘ്യമേറിയ കോൾ സീക്വൻസുകൾ ഉപയോഗിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക. ഒരു കോൾ എപ്പോഴും സാധ്യമാണെന്ന് ഇത് ഉറപ്പാക്കുന്നു
ലിങ്കർ സൃഷ്‌ടിച്ച അപൂർണ്ണതയിലേക്ക് എത്താൻ. എപ്പോൾ മാത്രം ദീർഘമായ കോളുകൾ സൃഷ്ടിക്കുക എന്നതാണ് സ്ഥിരസ്ഥിതി
കോൾ സൈറ്റിൽ നിന്ന് ഫംഗ്‌ഷന്റെ അല്ലെങ്കിൽ വിവർത്തന യൂണിറ്റിന്റെ ആരംഭത്തിലേക്കുള്ള ദൂരം
ഉപയോഗിച്ചിരിക്കുന്ന ബ്രാഞ്ച് തരം അനുസരിച്ച് നിശ്ചയിച്ചിട്ടുള്ള ഒരു മുൻനിശ്ചയിച്ച പരിധി കവിഞ്ഞേക്കാം. ദി
സാധാരണ കോളുകളുടെ പരിധി 7,600,000, 240,000 ബൈറ്റുകൾ ആണ്, PA 2.0-ന്
കൂടാതെ PA 1.X ആർക്കിടെക്ചറുകളും. സിബ്കോളുകൾ എല്ലായ്പ്പോഴും 240,000 ബൈറ്റുകളിൽ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.

ഉപയോഗിക്കുമ്പോൾ ഫംഗ്‌ഷനുകളുടെ തുടക്കം മുതൽ ദൂരങ്ങൾ അളക്കുന്നു
-ഫംഗ്ഷൻ-വിഭാഗങ്ങൾ ഓപ്ഷൻ, അല്ലെങ്കിൽ ഉപയോഗിക്കുമ്പോൾ -mgas ഒപ്പം -mno-portable-runtime ഓപ്ഷനുകൾ
SOM ലിങ്കറിനൊപ്പം HP-UX-ന് കീഴിൽ ഒരുമിച്ച്.

ഈ ഓപ്ഷൻ സാധാരണയായി ഉപയോഗിക്കുന്നത് അഭികാമ്യമല്ല, കാരണം ഇത് പ്രകടനത്തെ കുറയ്ക്കുന്നു. എന്നിരുന്നാലും,
വലിയ ആപ്ലിക്കേഷനുകളിൽ ഇത് ഉപയോഗപ്രദമായേക്കാം, പ്രത്യേകിച്ചും ഭാഗിക ലിങ്കിംഗ് ഉപയോഗിക്കുമ്പോൾ
ആപ്ലിക്കേഷൻ നിർമ്മിക്കുക.

ഉപയോഗിച്ച ദൈർഘ്യമേറിയ കോളുകളുടെ തരങ്ങൾ അസംബ്ലറുടെയും ലിങ്കറിന്റെയും കഴിവുകളെ ആശ്രയിച്ചിരിക്കുന്നു,
സൃഷ്ടിക്കപ്പെടുന്ന കോഡിന്റെ തരവും. ദീർഘകാലത്തെ പിന്തുണയ്ക്കുന്ന സിസ്റ്റങ്ങളിൽ ആഘാതം
സമ്പൂർണ്ണ കോളുകൾ, നീണ്ട ചിത്ര ചിഹ്നം-വ്യത്യാസം അല്ലെങ്കിൽ പിസി-ആപേക്ഷിക കോളുകൾ എന്നിവ ആയിരിക്കണം
താരതമ്യേന ചെറുത്. എന്നിരുന്നാലും, പിക് കോഡിലെ 32-ബിറ്റ് ELF സിസ്റ്റങ്ങളിൽ ഒരു പരോക്ഷ കോൾ ഉപയോഗിക്കുന്നു
അത് വളരെ നീണ്ടതാണ്.

-munix=unix-std
കംപൈലർ മുൻ‌നിർവചകൾ സൃഷ്‌ടിക്കുകയും നിർദ്ദിഷ്ട UNIX സ്റ്റാൻഡേർഡിനായി ഒരു ആരംഭ ഫയൽ തിരഞ്ഞെടുക്കുക.
എന്നതിനായുള്ള തിരഞ്ഞെടുപ്പുകൾ unix-std ആകുന്നു 93, 95 ഒപ്പം 98. 93 എല്ലാ HP-UX പതിപ്പുകളിലും പിന്തുണയ്ക്കുന്നു.
95 HP-UX 10.10-ലും അതിനുശേഷമുള്ള പതിപ്പുകളിലും ലഭ്യമാണ്. 98 HP-UX 11.11-ലും അതിനുശേഷമുള്ള പതിപ്പുകളിലും ലഭ്യമാണ്.
സ്ഥിര മൂല്യങ്ങൾ എന്നിവയാണ് 93 HP-UX-ന് 10.00, 95 HP-UX 10.10 ന് 11.00 വരെ, ഒപ്പം 98
HP-UX 11.11-നും അതിനുശേഷമുള്ളതിനും.

-munix=93 GCC 3.3, 3.4 എന്നിവയ്ക്ക് സമാനമായ മുൻ നിർവചനങ്ങൾ നൽകുന്നു. -munix=95 നൽകുന്നു
"XOPEN_UNIX", "_XOPEN_SOURCE_EXTENDED" എന്നിവയ്‌ക്കായുള്ള അധിക മുൻ‌നിർവചകളും സ്റ്റാർട്ട്‌ഫയലും
unix95.o. -munix=98 "_XOPEN_UNIX" എന്നതിനായി അധിക മുൻ നിർവചനങ്ങൾ നൽകുന്നു,
"_XOPEN_SOURCE_EXTENDED", "_INCLUDE__STDC_A1_SOURCE", "_INCLUDE_XOPEN_SOURCE_500",
സ്റ്റാർട്ട് ഫയലും unix98.o.

അത് പ്രധാനപ്പെട്ട ഈ ഓപ്ഷൻ വിവിധ ലൈബ്രറികൾക്കുള്ള ഇന്റർഫേസുകളെ മാറ്റുന്നു എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്
ദിനചര്യകൾ. സി ലൈബ്രറിയുടെ പ്രവർത്തന സ്വഭാവത്തെയും ഇത് ബാധിക്കുന്നു. അങ്ങനെ, അങ്ങേയറ്റം
ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നതിൽ ശ്രദ്ധ ആവശ്യമാണ്.

ഒന്നിലധികം UNIX സ്റ്റാൻഡേർഡ് ഉപയോഗിച്ച് പ്രവർത്തിക്കാൻ ഉദ്ദേശിക്കുന്ന ലൈബ്രറി കോഡ് പരിശോധിക്കണം,
"__xpg4_extended_mask" എന്ന വേരിയബിൾ ഉചിതമായ രീതിയിൽ സജ്ജീകരിച്ച് പുനഃസ്ഥാപിക്കുക. മിക്ക ഗ്നു സോഫ്റ്റ്വെയറും
ഈ കഴിവ് നൽകുന്നില്ല.

-nolibdld
എപ്പോൾ libdld.sl തിരയാനുള്ള ലിങ്ക് ഓപ്‌ഷനുകളുടെ ജനറേഷൻ അടിച്ചമർത്തുക - സ്റ്റാറ്റിക് ഓപ്ഷൻ ആണ്
HP-UX 10-ലും അതിനുശേഷമുള്ളവയിലും വ്യക്തമാക്കിയിരിക്കുന്നു.

- സ്റ്റാറ്റിക്
libc-ലെ setlocale-ന്റെ HP-UX നടപ്പാക്കലിന് libdld.sl-നെ ആശ്രയിക്കുന്നു. അവിടെ
libdld.sl-ന്റെ ഒരു ആർക്കൈവ് പതിപ്പല്ല. അങ്ങനെ, എപ്പോൾ - സ്റ്റാറ്റിക് ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടുണ്ട്,
ഈ ആശ്രിതത്വം പരിഹരിക്കുന്നതിന് പ്രത്യേക ലിങ്ക് ഓപ്ഷനുകൾ ആവശ്യമാണ്.

HP-UX 10-ലും അതിനുശേഷമുള്ള പതിപ്പുകളിലും, GCC ഡ്രൈവർ ലിങ്ക് ചെയ്യുന്നതിന് ആവശ്യമായ ഓപ്ഷനുകൾ ചേർക്കുന്നു
libdld.sl എപ്പോൾ - സ്റ്റാറ്റിക് ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടുണ്ട്. ഇത് ഫലമായുണ്ടാകുന്ന ബൈനറിക്ക് കാരണമാകുന്നു
ചലനാത്മകമായിരിക്കുക. 64-ബിറ്റ് പോർട്ടിൽ, ലിങ്കറുകൾ സ്ഥിരസ്ഥിതിയായി ഡൈനാമിക് ബൈനറികൾ സൃഷ്ടിക്കുന്നു
എങ്ങനെ ആയാലും. ദി -nolibdld ചേർക്കുന്നതിൽ നിന്നും GCC ഡ്രൈവർ തടയാൻ ഓപ്ഷൻ ഉപയോഗിക്കാം
ഈ ലിങ്ക് ഓപ്ഷനുകൾ.

- ത്രെഡുകൾ
ഇതിനൊപ്പം മൾട്ടിത്രെഡിംഗിനുള്ള പിന്തുണ ചേർക്കുക ഡിസിഇ ഇഴ HP-UX-ന് കീഴിലുള്ള ലൈബ്രറി. ഈ ഓപ്ഷൻ
പ്രീപ്രൊസസ്സറിനും ലിങ്കറിനും ഫ്ലാഗുകൾ സജ്ജമാക്കുന്നു.

IA-64 ഓപ്ഷനുകൾ

ഇവയൊക്കെയാണ് -m Intel IA-64 ആർക്കിടെക്ചറിനായി നിർവചിച്ചിരിക്കുന്ന ഓപ്ഷനുകൾ.

-mbig-endian
ഒരു ബിഗ്-എൻഡിയൻ ലക്ഷ്യത്തിനായി കോഡ് സൃഷ്ടിക്കുക. ഇത് HP-UX-ന്റെ ഡിഫോൾട്ടാണ്.

-mlittle-endian
ഒരു ചെറിയ-എൻഡിയൻ ലക്ഷ്യത്തിനായി കോഡ് സൃഷ്ടിക്കുക. AIX5, GNU/Linux എന്നിവയുടെ സ്ഥിരസ്ഥിതിയാണിത്.

-mgnu-as
-mno-gnu-as
ഗ്നു അസംബ്ലറിനായി കോഡ് സൃഷ്ടിക്കുക (അല്ലെങ്കിൽ ചെയ്യരുത്). ഇതാണ് സ്ഥിരസ്ഥിതി.

-mgnu-ld
-mno-gnu-ld
ഗ്നു ലിങ്കറിനായി കോഡ് സൃഷ്ടിക്കുക (അല്ലെങ്കിൽ ചെയ്യരുത്). ഇതാണ് സ്ഥിരസ്ഥിതി.

-mno-pic
ആഗോള പോയിന്റർ രജിസ്റ്റർ ഉപയോഗിക്കാത്ത കോഡ് സൃഷ്ടിക്കുക. ഫലം സ്ഥാനമല്ല
സ്വതന്ത്ര കോഡ്, കൂടാതെ IA-64 ABI ലംഘിക്കുന്നു.

-mvolatile-asm-സ്റ്റോപ്പ്
-mno-volatile-asm-stop
അസ്ഥിരമായ asm പ്രസ്താവനകൾക്ക് മുമ്പും ശേഷവും ഉടൻ ഒരു സ്റ്റോപ്പ് ബിറ്റ് സൃഷ്ടിക്കുക (അല്ലെങ്കിൽ ചെയ്യരുത്).

-mregister-names
-mno-register-names
സൃഷ്ടിക്കുക (അല്ലെങ്കിൽ ചെയ്യരുത്) in, സ്ഥലം, ഒപ്പം പുറത്ത് അടുക്കിയിരിക്കുന്ന രജിസ്റ്ററുകൾക്ക് പേരുകൾ രജിസ്റ്റർ ചെയ്യുക. ഈ
അസംബ്ലർ ഔട്ട്‌പുട്ട് കൂടുതൽ വായിക്കാൻ കഴിയുന്നതാക്കിയേക്കാം.

-mno-sdata
-msdata
ചെറിയ ഡാറ്റ വിഭാഗം ഉപയോഗിക്കുന്ന ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനരഹിതമാക്കുക (അല്ലെങ്കിൽ പ്രാപ്തമാക്കുക). ഇത് ഉപയോഗപ്രദമായേക്കാം
ഒപ്റ്റിമൈസർ ബഗുകൾക്ക് ചുറ്റും പ്രവർത്തിക്കുന്നതിന്.

-mconstant-gp
ഒരൊറ്റ സ്ഥിരമായ ആഗോള പോയിന്റർ മൂല്യം ഉപയോഗിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക. എപ്പോൾ ഇത് ഉപയോഗപ്രദമാണ്
കേർണൽ കോഡ് കംപൈൽ ചെയ്യുന്നു.

-mauto-ചിത്രം
സ്വയം മാറ്റിസ്ഥാപിക്കാവുന്ന കോഡ് സൃഷ്ടിക്കുക. ഇത് സൂചിപ്പിക്കുന്നു -mconstant-gp. ഇത് ഉപയോഗപ്രദമാണ്
ഫേംവെയർ കോഡ് കംപൈൽ ചെയ്യുമ്പോൾ.

-മിൻലൈൻ-ഫ്ലോട്ട്-ഡിവൈഡ്-മിനിറ്റ്-ലേറ്റൻസി
ഏറ്റവും കുറഞ്ഞ ലേറ്റൻസി ഉപയോഗിച്ച് ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യങ്ങളുടെ ഇൻലൈൻ ഡിവൈഡുകൾക്കായി കോഡ് സൃഷ്ടിക്കുക
അൽഗോരിതം.

-minline-float-divide-max-throughput
പരമാവധി ത്രൂപുട്ട് ഉപയോഗിച്ച് ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യങ്ങളുടെ ഇൻലൈൻ ഡിവൈഡുകൾക്കായി കോഡ് സൃഷ്ടിക്കുക
അൽഗോരിതം.

-mno-inline-float-divide
ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യങ്ങളുടെ വിഭജനത്തിനായി ഇൻലൈൻ കോഡ് സൃഷ്ടിക്കരുത്.

-minline-int-divide-min-lateency
മിനിമം ലേറ്റൻസി ഉപയോഗിച്ച് പൂർണ്ണസംഖ്യ മൂല്യങ്ങളുടെ ഇൻലൈൻ വിഭജനങ്ങൾക്കായി കോഡ് സൃഷ്ടിക്കുക
അൽഗോരിതം.

-minline-int-divide-max-throughput
പരമാവധി ത്രൂപുട്ട് ഉപയോഗിച്ച് പൂർണ്ണസംഖ്യ മൂല്യങ്ങളുടെ ഇൻലൈൻ വിഭജനങ്ങൾക്കായി കോഡ് സൃഷ്ടിക്കുക
അൽഗോരിതം.

-mno-inline-int-divide
പൂർണ്ണസംഖ്യ മൂല്യങ്ങളുടെ വിഭജനത്തിനായി ഇൻലൈൻ കോഡ് സൃഷ്ടിക്കരുത്.

-minline-sqrt-min-latency
മിനിമം ലേറ്റൻസി അൽഗോരിതം ഉപയോഗിച്ച് ഇൻലൈൻ സ്ക്വയർ റൂട്ടുകൾക്കായി കോഡ് സൃഷ്ടിക്കുക.

-minline-sqrt-max-thoughput
പരമാവധി ത്രൂപുട്ട് അൽഗോരിതം ഉപയോഗിച്ച് ഇൻലൈൻ സ്ക്വയർ റൂട്ടുകൾക്കായി കോഡ് സൃഷ്ടിക്കുക.

-mno-inline-sqrt
"sqrt" എന്നതിനായി ഇൻലൈൻ കോഡ് സൃഷ്ടിക്കരുത്.

-mfused-madd
-mno-fused-madd
സംയോജിപ്പിച്ച ഗുണനം/കൂട്ടുക അല്ലെങ്കിൽ ഗുണിക്കുക/കുറയ്ക്കൽ എന്നിവ ഉപയോഗിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക (ചെയ്യരുത്)
നിർദ്ദേശങ്ങൾ. ഈ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്നതാണ് സ്ഥിരസ്ഥിതി.

-mno-dwarf2-asm
-mdwarf2-asm
DWARF 2 ലൈൻ നമ്പർ ഡീബഗ്ഗിംഗ് വിവരങ്ങൾക്കായി അസംബ്ലർ കോഡ് സൃഷ്ടിക്കരുത് (അല്ലെങ്കിൽ ചെയ്യുക).
ഗ്നു അസംബ്ലർ ഉപയോഗിക്കാത്തപ്പോൾ ഇത് ഉപയോഗപ്രദമാകും.

-മെർലി-സ്റ്റോപ്പ്-ബിറ്റുകൾ
-mno-ഏർലി-സ്റ്റോപ്പ്-ബിറ്റുകൾ
നിർദ്ദേശത്തിന് തൊട്ടുമുമ്പുള്ളതിനേക്കാൾ നേരത്തെ സ്റ്റോപ്പ് ബിറ്റുകൾ സ്ഥാപിക്കാൻ അനുവദിക്കുക
സ്റ്റോപ്പ് ബിറ്റ് പ്രവർത്തനക്ഷമമാക്കി. ഇത് നിർദ്ദേശ ഷെഡ്യൂളിംഗ് മെച്ചപ്പെടുത്തും, എന്നാൽ എല്ലായ്‌പ്പോഴും അങ്ങനെയല്ല
അങ്ങിനെ ചെയ്യ്.

-mfixed-range=രജിസ്റ്റർ-പരിധി
നൽകിയിരിക്കുന്ന രജിസ്റ്റർ ശ്രേണിയെ നിശ്ചിത രജിസ്റ്ററുകളായി കണക്കാക്കുന്ന കോഡ് സൃഷ്ടിക്കുക. ഒരു നിശ്ചിത രജിസ്റ്റർ
രജിസ്റ്റർ അലോക്കേറ്റർക്ക് ഉപയോഗിക്കാൻ കഴിയാത്ത ഒന്നാണ്. കേർണൽ കംപൈൽ ചെയ്യുമ്പോൾ ഇത് ഉപയോഗപ്രദമാണ്
കോഡ്. ഒരു ഡാഷ് കൊണ്ട് വേർതിരിക്കുന്ന രണ്ട് രജിസ്റ്ററുകളായി ഒരു രജിസ്റ്റർ ശ്രേണി വ്യക്തമാക്കിയിരിക്കുന്നു. ഒന്നിലധികം
രജിസ്റ്റർ ശ്രേണികൾ ഒരു കോമ ഉപയോഗിച്ച് വേർതിരിക്കാവുന്നതാണ്.

-mtls-size=tls-വലിപ്പം
ഉടനടി TLS ഓഫ്‌സെറ്റുകളുടെ ബിറ്റ് വലുപ്പം വ്യക്തമാക്കുക. സാധുവായ മൂല്യങ്ങൾ 14, 22, 64 എന്നിവയാണ്.

-mtune=cpu-തരം
ഒരു പ്രത്യേക സിപിയുവിനുള്ള നിർദ്ദേശ ഷെഡ്യൂളിംഗ് ട്യൂൺ ചെയ്യുക, സാധുവായ മൂല്യങ്ങൾ ഇറ്റാനിയം,
ഇറ്റാനിയം1, ലയിച്ചു, ഇറ്റാനിയം2, ഒപ്പം മക്കിൻലി.

-milp32
-mlp64
32-ബിറ്റ് അല്ലെങ്കിൽ 64-ബിറ്റ് എൻവയോൺമെന്റിനായി കോഡ് സൃഷ്ടിക്കുക. 32-ബിറ്റ് എൻവയോൺമെന്റ് സജ്ജീകരിക്കുന്നു,
നീളവും 32 ബിറ്റുകളിലേക്കുള്ള പോയിന്ററും. 64-ബിറ്റ് എൻവയോൺമെന്റ് 32 ബിറ്റുകളും നീളവും ആയി സജ്ജീകരിക്കുന്നു
64 ബിറ്റുകളിലേക്കുള്ള പോയിന്റർ. ഇവ HP-UX നിർദ്ദിഷ്ട ഫ്ലാഗുകളാണ്.

-mno-sched-br-data-spec
-msched-br-data-spec
(Dis/En) വീണ്ടും ലോഡുചെയ്യുന്നതിന് മുമ്പ് ഡാറ്റ ഊഹക്കച്ചവട ഷെഡ്യൂളിംഗ് സാധ്യമാണ്. ഇത് ജനറേഷനിൽ കലാശിക്കുന്നു
"ld.a" നിർദ്ദേശങ്ങളും അനുബന്ധ പരിശോധന നിർദ്ദേശങ്ങളും ("ld.c" / "chk.a"). ദി
ഡിഫോൾട്ട് 'ഡിസേബിൾ' ആണ്.

-msched-ar-data-spec
-mno-sched-ar-data-spec
റീലോഡ് ചെയ്തതിന് ശേഷം ഡാറ്റ ഊഹക്കച്ചവട ഷെഡ്യൂളിംഗ് (എൻ/ഡിസ്) ചെയ്യാനാകും. ഇത് ജനറേഷനിൽ കലാശിക്കുന്നു
"ld.a" നിർദ്ദേശങ്ങളും അനുബന്ധ പരിശോധന നിർദ്ദേശങ്ങളും ("ld.c" / "chk.a"). ദി
സ്ഥിരസ്ഥിതി 'പ്രാപ്തമാക്കുക' ആണ്.

-mno-sched-control-spec
-msched-control-spec
(Dis/En) കഴിയുന്ന നിയന്ത്രണ ഊഹക്കച്ചവട ഷെഡ്യൂളിംഗ്. ഈ സമയത്ത് മാത്രമേ ഈ ഫീച്ചർ ലഭ്യമാകൂ
മേഖല ഷെഡ്യൂളിംഗ് (അതായത് റീലോഡ് ചെയ്യുന്നതിന് മുമ്പ്). ഇത് "ld.s"-ന്റെ തലമുറയ്ക്ക് കാരണമാകുന്നു.
നിർദ്ദേശങ്ങളും അനുബന്ധ ചെക്ക് നിർദ്ദേശങ്ങളും "chk.s". സ്ഥിരസ്ഥിതിയാണ്
'അപ്രാപ്തമാക്കുക'.

-msched-br-in-data-spec
-mno-sched-br-in-data-spec
ഡാറ്റയെ ആശ്രയിക്കുന്ന നിർദ്ദേശങ്ങളുടെ ഊഹക്കച്ചവട ഷെഡ്യൂളിംഗ് (എൻ/ഡിസ്) ചെയ്യാവുന്നതാണ്
വീണ്ടും ലോഡുചെയ്യുന്നതിന് മുമ്പ് ഊഹക്കച്ചവടം. ഉപയോഗിച്ച് മാത്രമേ ഇത് ഫലപ്രദമാകൂ -msched-br-data-spec
പ്രവർത്തനക്ഷമമാക്കി. സ്ഥിരസ്ഥിതി 'പ്രവർത്തനക്ഷമമാക്കുക' ആണ്.

-msched-ar-in-data-spec
-mno-sched-ar-in-data-spec
ഡാറ്റയെ ആശ്രയിക്കുന്ന നിർദ്ദേശങ്ങളുടെ ഊഹക്കച്ചവട ഷെഡ്യൂളിംഗ് (എൻ/ഡിസ്) ചെയ്യാവുന്നതാണ്
റീലോഡിന് ശേഷമുള്ള ഊഹക്കച്ചവടങ്ങൾ. ഉപയോഗിച്ച് മാത്രമേ ഇത് ഫലപ്രദമാകൂ -msched-ar-data-spec
പ്രവർത്തനക്ഷമമാക്കി. സ്ഥിരസ്ഥിതി 'പ്രവർത്തനക്ഷമമാക്കുക' ആണ്.

-msched-in-control-spec
-mno-sched-in-control-spec
എന്നതിനെ ആശ്രയിച്ചുള്ള നിർദ്ദേശങ്ങളുടെ ഊഹക്കച്ചവട ഷെഡ്യൂളിംഗ് (എൻ/ഡിസ്) ചെയ്യാം
ഊഹക്കച്ചവടം നിയന്ത്രിക്കുക. ഉപയോഗിച്ച് മാത്രമേ ഇത് ഫലപ്രദമാകൂ -msched-control-spec പ്രവർത്തനക്ഷമമാക്കി.
സ്ഥിരസ്ഥിതി 'പ്രവർത്തനക്ഷമമാക്കുക' ആണ്.

-mno-sched-prefer-non-data-spec-insns
-msched-prefer-non-data-spec-insns
പ്രവർത്തനക്ഷമമാക്കിയാൽ, ഡാറ്റാ ഊഹക്കച്ചവട നിർദ്ദേശങ്ങൾ ഇല്ലെങ്കിൽ മാത്രമേ ഷെഡ്യൂളിനായി തിരഞ്ഞെടുക്കൂ
ഈ സമയത്ത് മറ്റ് തിരഞ്ഞെടുപ്പുകൾ. ഇത് ഡാറ്റ ഊഹക്കച്ചവടത്തിന്റെ ഉപയോഗം കൂടുതൽ വർദ്ധിപ്പിക്കുന്നു
യാഥാസ്ഥിതിക. ഡിഫോൾട്ട് 'ഡിസേബിൾ' ആണ്.

-mno-sched-prefer-non-control-spec-insns
-msched-prefer-non-control-spec-insns
പ്രവർത്തനക്ഷമമാക്കിയാൽ, നിയന്ത്രണ-ഊഹക്കച്ചവട നിർദ്ദേശങ്ങൾ ഉണ്ടെങ്കിൽ മാത്രമേ ഷെഡ്യൂളിനായി തിരഞ്ഞെടുക്കൂ
ഇപ്പോൾ മറ്റ് തിരഞ്ഞെടുപ്പുകളൊന്നുമില്ല. ഇത് നിയന്ത്രണ ഊഹക്കച്ചവടത്തിന്റെ ഉപയോഗത്തെ വളരെയധികം സഹായിക്കുന്നു
കൂടുതൽ യാഥാസ്ഥിതിക. ഡിഫോൾട്ട് 'ഡിസേബിൾ' ആണ്.

-mno-sched-count-spec-in-critical-path
-msched-count-spec-in-critical-path
പ്രവർത്തനക്ഷമമാക്കിയാൽ, കണക്കുകൂട്ടൽ സമയത്ത് ഊഹക്കച്ചവട ആശ്രിതത്വം പരിഗണിക്കും
നിർദ്ദേശങ്ങളുടെ മുൻഗണനകൾ. ഇത് ഊഹക്കച്ചവടത്തിന്റെ ഉപയോഗം കുറച്ചുകൂടി വർദ്ധിപ്പിക്കുന്നു
യാഥാസ്ഥിതിക. ഡിഫോൾട്ട് 'ഡിസേബിൾ' ആണ്.

-msched-spec-ldc
ഒരു ലളിതമായ ഡാറ്റ ഊഹക്കച്ചവടം ഉപയോഗിക്കുക. ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി ഓണാണ്.

-msched-control-spec-ldc
നിയന്ത്രണ ഊഹക്കച്ചവടത്തിനായി ഒരു ലളിതമായ പരിശോധന ഉപയോഗിക്കുക. ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി ഓണാണ്.

ഓരോ സൈക്കിളിനും ശേഷം -msched-stop-bits
ഷെഡ്യൂൾ ചെയ്യുമ്പോൾ ഓരോ സൈക്കിളിനും ശേഷം ഒരു സ്റ്റോപ്പ് ബിറ്റ് സ്ഥാപിക്കുക. ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി ഓണാണ്.

-msched-fp-mem-deps-zero-cost
ഫ്ലോട്ടിംഗ് പോയിന്റ് സ്റ്റോറുകളും ലോഡുകളും ഒരു വൈരുദ്ധ്യം ഉണ്ടാക്കാൻ സാധ്യതയില്ലെന്ന് കരുതുക
ഒരേ നിർദ്ദേശ ഗ്രൂപ്പിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. ഈ ഓപ്‌ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.

-msel-sched-dont-check-control-spec
സെലക്ടീവ് ഷെഡ്യൂളിംഗിൽ കൺട്രോൾ ഊഹക്കച്ചവടത്തിനായി പരിശോധനകൾ സൃഷ്ടിക്കുക. ഈ പതാക
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കി.

-msched-max-memory-insns=max-insns
ഓരോ ഇൻസ്ട്രക്ഷൻ ഗ്രൂപ്പിനും കുറഞ്ഞ മുൻഗണന നൽകിക്കൊണ്ട് മെമ്മറി ഇൻസ്‌നുകളുടെ എണ്ണം പരിമിതപ്പെടുത്തുക
അതേ ഇൻസ്ട്രക്ഷൻ ഗ്രൂപ്പിൽ ഷെഡ്യൂൾ ചെയ്യാൻ ശ്രമിക്കുന്ന തുടർന്നുള്ള മെമ്മറി ഇൻസ്‌നുകൾ.
കാഷെ ബാങ്ക് വൈരുദ്ധ്യങ്ങൾ തടയാൻ പതിവായി ഉപയോഗപ്രദമാണ്. സ്ഥിര മൂല്യം 1 ആണ്.

-msched-max-memory-insns-hard-limit
വ്യക്തമാക്കിയ പരിധി ഉണ്ടാക്കുന്നു msched-max-memory-insns കഠിനമായ പരിധി, കൂടുതൽ അനുവദിക്കുന്നില്ല
ഒരു ഇൻസ്ട്രക്ഷൻ ഗ്രൂപ്പിലെ ആ നമ്പറിനേക്കാൾ. അല്ലെങ്കിൽ, പരിധി "സോഫ്റ്റ്" ആണ്, അർത്ഥം
പരിധിയിലെത്തുമ്പോൾ നോൺ-മെമ്മറി പ്രവർത്തനങ്ങളാണ് തിരഞ്ഞെടുക്കുന്നത്, എന്നാൽ മെമ്മറി
പ്രവർത്തനങ്ങൾ ഇപ്പോഴും ഷെഡ്യൂൾ ചെയ്തേക്കാം.

LM32 ഓപ്ഷനുകൾ

ഇവ -m LatticeMico32 ആർക്കിടെക്ചറിനായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mbarrel-shift-enabled
ബാരൽ-ഷിഫ്റ്റ് നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക.

-mdivide-പ്രവർത്തനക്ഷമമാക്കി
ഡിവൈഡ്, മോഡുലസ് നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക.

-multiply-പ്രവർത്തനക്ഷമമാക്കി
ഗുണന നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക.

-msign-extend-enabled
സൈൻ വിപുലീകരണ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക.

-മ്യൂസർ-പ്രാപ്തമാക്കി
ഉപയോക്തൃ-നിർവചിച്ച നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക.

മ്ക്സനുമ്ക്സച് ഓപ്ഷനുകൾ

-mcpu=പേര്
കോഡ് ജനറേറ്റ് ചെയ്യുന്ന സിപിയു തിരഞ്ഞെടുക്കുക. പേര് ഒന്നായിരിക്കാം r8 സി R8C/Tiny-യ്ക്ക്
പരമ്പര m16c M16C (/60 വരെ) സീരീസിന്, m32cm M16C/80 സീരീസിനായി, അല്ലെങ്കിൽ m32c
M32C/80 സീരീസിന്.

-എംസിം
പ്രോഗ്രാം സിമുലേറ്ററിൽ പ്രവർത്തിക്കുമെന്ന് വ്യക്തമാക്കുന്നു. ഇത് ഒരു ബദലിന് കാരണമാകുന്നു
റൺടൈം ലൈബ്രറി ലിങ്ക് ചെയ്യണം, അതിൽ പിന്തുണയ്ക്കുന്നു, ഉദാഹരണത്തിന്, ഫയൽ I/O. നിങ്ങൾ ചെയ്യരുത്
യഥാർത്ഥ ഹാർഡ്‌വെയറിൽ പ്രവർത്തിക്കുന്ന പ്രോഗ്രാമുകൾ സൃഷ്ടിക്കുമ്പോൾ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക; നിങ്ങൾ തീർച്ചയായും
I/O ഫംഗ്‌ഷനുകൾക്കായി നിങ്ങളുടെ സ്വന്തം റൺടൈം ലൈബ്രറി നൽകുക.

-memregs=അക്കം
കോഡ് ജനറേഷൻ സമയത്ത് GCC ഉപയോഗിക്കുന്ന മെമ്മറി അടിസ്ഥാനമാക്കിയുള്ള വ്യാജ രജിസ്റ്ററുകളുടെ എണ്ണം വ്യക്തമാക്കുന്നു.
ഈ വ്യാജ-രജിസ്റ്ററുകൾ യഥാർത്ഥ രജിസ്റ്ററുകൾ പോലെയാണ് ഉപയോഗിക്കുന്നത്, അതിനാൽ തമ്മിൽ ഒരു ഇടപാടുണ്ട്
ലഭ്യമായ രജിസ്റ്ററുകളിലേക്ക് കോഡ് ഘടിപ്പിക്കാനുള്ള ജിസിസിയുടെ കഴിവും പ്രകടന പിഴയും
രജിസ്റ്ററുകൾക്ക് പകരം മെമ്മറി ഉപയോഗിക്കുന്നു. ഒരു പ്രോഗ്രാമിലെ എല്ലാ മൊഡ്യൂളുകളും ആയിരിക്കണം എന്നത് ശ്രദ്ധിക്കുക
ഈ ഓപ്‌ഷന്റെ അതേ മൂല്യത്തിൽ സമാഹരിച്ചിരിക്കുന്നു. ഇക്കാരണത്താൽ, നിങ്ങൾ ഇത് ഉപയോഗിക്കരുത്
ജിസിസിയുടെ ഡിഫോൾട്ട് റൺടൈം ലൈബ്രറികളുള്ള ഓപ്ഷൻ.

M32R/D ഓപ്ഷനുകൾ

ഇവ -m Renesas M32R/D ആർക്കിടെക്ചറുകൾക്കായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-m32r2
M32R/2-നുള്ള കോഡ് സൃഷ്ടിക്കുക.

-m32rx
M32R/X-നുള്ള കോഡ് സൃഷ്ടിക്കുക.

-m32r
M32R-നുള്ള കോഡ് സൃഷ്ടിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mmodel=ചെറിയത്
എല്ലാ ഒബ്‌ജക്‌റ്റുകളും 16MB മെമ്മറിയിൽ ജീവിക്കുന്നതായി കരുതുക (അതിനാൽ അവയുടെ വിലാസങ്ങൾ ആകാം
"ld24" നിർദ്ദേശം ലോഡുചെയ്‌തു), കൂടാതെ എല്ലാ സബ്‌റൂട്ടീനുകളും ഇതുപയോഗിച്ച് എത്തിച്ചേരാനാകുമെന്ന് കരുതുക.
"bl" നിർദ്ദേശം. ഇതാണ് സ്ഥിരസ്ഥിതി.

ഒരു പ്രത്യേക വസ്തുവിന്റെ വിലാസം "മോഡൽ" ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് സജ്ജമാക്കാം.

-mmodel= മീഡിയം
ഒബ്‌ജക്റ്റുകൾ 32-ബിറ്റ് അഡ്രസ് സ്‌പെയ്‌സിൽ എവിടെയും ഉണ്ടെന്ന് കരുതുക (കംപൈലർ സൃഷ്ടിക്കുന്നു
"seth/add3" അവരുടെ വിലാസങ്ങൾ ലോഡുചെയ്യുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ), കൂടാതെ എല്ലാ സബ്റൂട്ടീനുകളും ഉണ്ടെന്ന് കരുതുക
"bl" നിർദ്ദേശം ഉപയോഗിച്ച് എത്തിച്ചേരാനാകും.

-mmodel=വലുത്
ഒബ്‌ജക്റ്റുകൾ 32-ബിറ്റ് അഡ്രസ് സ്‌പെയ്‌സിൽ എവിടെയും ഉണ്ടെന്ന് കരുതുക (കംപൈലർ സൃഷ്ടിക്കുന്നു
അവരുടെ വിലാസങ്ങൾ ലോഡ് ചെയ്യാനുള്ള "seth/add3" നിർദ്ദേശങ്ങൾ), സബ്റൂട്ടീനുകൾ ആയിരിക്കില്ല എന്ന് കരുതുക
"bl" നിർദ്ദേശം ഉപയോഗിച്ച് എത്തിച്ചേരാനാകും (കംപൈലർ വളരെ പതുക്കെ ജനറേറ്റുചെയ്യുന്നു
"seth/add3/jl" നിർദ്ദേശ ക്രമം).

-msdata=ഒന്നുമില്ല
ചെറിയ ഡാറ്റ ഏരിയയുടെ ഉപയോഗം പ്രവർത്തനരഹിതമാക്കുക. വേരിയബിളുകൾ ".data", ".bss", അല്ലെങ്കിൽ
".rodata" ("വിഭാഗം" ആട്രിബ്യൂട്ട് വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ). ഇതാണ് സ്ഥിരസ്ഥിതി.

ചെറിയ ഡാറ്റ ഏരിയയിൽ ".sdata", ".sbss" എന്നീ വിഭാഗങ്ങൾ അടങ്ങിയിരിക്കുന്നു. വസ്തുക്കൾ ആകാം
ഇവയിലൊന്ന് ഉപയോഗിച്ച് "വിഭാഗം" ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് ചെറിയ ഡാറ്റ ഏരിയയിൽ വ്യക്തമായി ഇടുക
വിഭാഗങ്ങൾ.

-msdata=sdata
ചെറിയ ഡാറ്റ ഏരിയയിൽ ചെറിയ ആഗോളവും സ്റ്റാറ്റിക് ഡാറ്റയും ഇടുക, എന്നാൽ പ്രത്യേകം സൃഷ്ടിക്കരുത്
അവരെ പരാമർശിക്കാനുള്ള കോഡ്.

-msdata=ഉപയോഗം
ചെറിയ ഡാറ്റ ഏരിയയിൽ ചെറിയ ആഗോളവും സ്റ്റാറ്റിക് ഡാറ്റയും ഇടുക, പ്രത്യേകം സൃഷ്ടിക്കുക
അവരെ പരാമർശിക്കാനുള്ള നിർദ്ദേശങ്ങൾ.

-G സംഖ്യ
ആഗോളവും നിശ്ചലവുമായ ഒബ്‌ജക്റ്റുകൾ ഇതിനേക്കാൾ കുറവോ തുല്യമോ ഇടുക സംഖ്യ ചെറിയ ഡാറ്റയിലേക്ക് ബൈറ്റുകൾ അല്ലെങ്കിൽ
സാധാരണ ഡാറ്റ അല്ലെങ്കിൽ ബിഎസ്എസ് വിഭാഗങ്ങൾക്ക് പകരം ബിഎസ്എസ് വിഭാഗങ്ങൾ. യുടെ ഡിഫോൾട്ട് മൂല്യം സംഖ്യ is
8. എസ് -msdata ഓപ്ഷൻ ഒന്നായി സജ്ജീകരിക്കണം sdata or ഉപയോഗം ഈ ഓപ്ഷന് എന്തെങ്കിലും ഉണ്ടായിരിക്കണം
ഇഫക്ട്.

എല്ലാ മൊഡ്യൂളുകളും ഒരേ രീതിയിൽ കംപൈൽ ചെയ്യണം -G സംഖ്യ മൂല്യം. വ്യത്യസ്തമായി കംപൈൽ ചെയ്യുന്നു
ന്റെ മൂല്യങ്ങൾ സംഖ്യ പ്രവർത്തിക്കുകയോ പ്രവർത്തിക്കാതിരിക്കുകയോ ചെയ്യാം; ഇല്ലെങ്കിൽ ലിങ്കർ ഒരു പിശക് നൽകുന്നു
സന്ദേശം --- തെറ്റായ കോഡ് സൃഷ്ടിച്ചിട്ടില്ല.

-mdebug
കംപൈലറിലെ M32R-നിർദ്ദിഷ്‌ട കോഡ് സഹായിച്ചേക്കാവുന്ന ചില സ്ഥിതിവിവരക്കണക്കുകൾ പ്രദർശിപ്പിക്കുന്നു
ഡീബഗ്ഗിംഗ് പ്രോഗ്രാമുകളിൽ.

-മാലിൻ-ലൂപ്പുകൾ
എല്ലാ ലൂപ്പുകളും 32-ബൈറ്റ് അതിർത്തിയിലേക്ക് വിന്യസിക്കുക.

-mno-align-loops
ലൂപ്പുകൾക്കായി 32-ബൈറ്റ് വിന്യാസം നടപ്പിലാക്കരുത്. ഇതാണ് സ്ഥിരസ്ഥിതി.

-missue-rate=അക്കം
ഇഷ്യൂ അക്കം ഓരോ സൈക്കിളും നിർദ്ദേശങ്ങൾ. അക്കം 1 അല്ലെങ്കിൽ 2 മാത്രമേ കഴിയൂ.

-mbranch-cost=അക്കം
അക്കം 1 അല്ലെങ്കിൽ 2 മാത്രമേ ആകാൻ കഴിയൂ. അത് 1 ആണെങ്കിൽ, സോപാധികമായതിനേക്കാൾ ശാഖകൾ തിരഞ്ഞെടുക്കുന്നതാണ്
കോഡ്, അത് 2 ആണെങ്കിൽ, വിപരീതം ബാധകമാണ്.

-mflush-trap=അക്കം
കാഷെ ഫ്ലഷ് ചെയ്യാൻ ഉപയോഗിക്കേണ്ട ട്രാപ്പ് നമ്പർ വ്യക്തമാക്കുന്നു. സ്ഥിരസ്ഥിതി 12 ആണ്. സാധുവാണ്
സംഖ്യകൾ 0 നും 15 നും ഇടയിലാണ്.

-mno-flush-trap
ഒരു ട്രാപ്പ് ഉപയോഗിച്ച് കാഷെ ഫ്ലഷ് ചെയ്യാൻ കഴിയില്ലെന്ന് വ്യക്തമാക്കുന്നു.

-mflush-func=പേര്
കാഷെ ഫ്ലഷ് ചെയ്യുന്നതിന് വിളിക്കേണ്ട ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ഫംഗ്‌ഷന്റെ പേര് വ്യക്തമാക്കുന്നു. ദി
സ്ഥിരസ്ഥിതിയാണ് _ഫ്ലഷ്_കാഷെ, എന്നാൽ ഒരു ട്രാപ്പ് ലഭ്യമല്ലെങ്കിൽ മാത്രമേ ഒരു ഫംഗ്ഷൻ കോൾ ഉപയോഗിക്കൂ.

-mno-flush-func
കാഷെ ഫ്ലഷ് ചെയ്യുന്നതിന് OS ഫംഗ്‌ഷൻ ഇല്ലെന്ന് സൂചിപ്പിക്കുന്നു.

മ്ക്സനുമ്ക്സക്സക്സനുമ്ക്സ ഓപ്ഷനുകൾ

ഇവയൊക്കെയാണ് -m M680x0, ColdFire പ്രോസസറുകൾക്കായി നിർവചിച്ചിരിക്കുന്ന ഓപ്ഷനുകൾ. സ്ഥിരസ്ഥിതി ക്രമീകരണങ്ങൾ
കംപൈലർ ക്രമീകരിച്ചപ്പോൾ ഏത് ആർക്കിടെക്ചർ തിരഞ്ഞെടുത്തു എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു; സ്ഥിരസ്ഥിതികൾ
ഏറ്റവും സാധാരണമായ തിരഞ്ഞെടുപ്പുകൾക്കായി ചുവടെ നൽകിയിരിക്കുന്നു.

-മാർച്ച്=കമാനം
ഒരു നിർദ്ദിഷ്‌ട M680x0 അല്ലെങ്കിൽ ColdFire നിർദ്ദേശ സെറ്റ് ആർക്കിടെക്ചറിനായി കോഡ് സൃഷ്‌ടിക്കുക.
അനുവദനീയമായ മൂല്യങ്ങൾ കമാനം M680x0 ആർക്കിടെക്ചറുകൾക്ക് ഇവയാണ്: 68000, 68010, 68020, 68030,
68040, 68060 ഒപ്പം cpu32. ഫ്രീസ്കെയിലിന്റെ അനുസരിച്ചാണ് കോൾഡ്ഫയർ ആർക്കിടെക്ചറുകൾ തിരഞ്ഞെടുക്കുന്നത്
ISA വർഗ്ഗീകരണവും അനുവദനീയമായ മൂല്യങ്ങളും ഇവയാണ്: isaah, isaaplus, ഇസാബ് ഒപ്പം ഐസക്ക്.

GCC ഒരു മാക്രോ "__mcf നിർവചിക്കുന്നുകമാനം__" ഒരു കോൾഡ്‌ഫയറിനുള്ള കോഡ് സൃഷ്ടിക്കുമ്പോഴെല്ലാം
ലക്ഷ്യം. ദി കമാനം ഈ മാക്രോയിൽ അതിലൊന്നാണ് - മാർച്ച് മുകളിൽ നൽകിയിരിക്കുന്ന വാദങ്ങൾ.

ഒരുമിച്ച് ഉപയോഗിക്കുമ്പോൾ, - മാർച്ച് ഒപ്പം -mtune സമാനമായ ഒരു കുടുംബത്തിൽ പ്രവർത്തിക്കുന്ന കോഡ് തിരഞ്ഞെടുക്കുക
പ്രോസസ്സറുകൾ പക്ഷേ ഒരു പ്രത്യേക മൈക്രോ ആർക്കിടെക്ചറിനായി ഒപ്റ്റിമൈസ് ചെയ്തിരിക്കുന്നു.

-mcpu=സിപിയു
ഒരു നിർദ്ദിഷ്‌ട M680x0 അല്ലെങ്കിൽ ColdFire പ്രോസസറിനായി കോഡ് സൃഷ്‌ടിക്കുക. M680x0 സിപിയുഇവയാണ്:
68000, 68010, 68020, 68030, 68040, 68060, 68302, 68332 ഒപ്പം cpu32. കോൾഡ് ഫയർ സിപിയുs
താഴെയുള്ള പട്ടികയിൽ നൽകിയിരിക്കുന്നു, അത് CPU-കളെ കുടുംബങ്ങളായി തരംതിരിക്കുന്നു:

കുടുംബം: -എംസിപിയു വാദങ്ങൾ
51 : 51 51 51ഗ്രാം 51 സെ ക്സനുമ്ക്സെമ് 51ജെ 51jf 51jg 51 ജെഎം 51mm 51ക്യു 51 കി.മീ
5206 : 5202 5204 5206
ക്സനുമ്ക്സെ : ക്സനുമ്ക്സെ
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 523
5249 : 5249
5250 : 5250
5271 : 5270 5271
5272 : 5272
5275 : 5274 5275
5282 : 5280 5281 5282 528
53017 : 53011 53012 53013 53014 53015 53016 53017
5307 : 5307
5329 : 5327 5328 5329 532
5373 : 5372 5373 537
5407 : 5407
5475 : 5470 5471 5472 5473 5474 5475 547 5480 5481 5482 5483 5484 5485

-mcpu=സിപിയു അസാധുവാക്കുന്നു -മാർച്ച്=കമാനം if കമാനം എന്നതുമായി പൊരുത്തപ്പെടുന്നു സിപിയു. മറ്റ് കോമ്പിനേഷനുകൾ
-എംസിപിയു ഒപ്പം - മാർച്ച് നിരസിച്ചു.

GCC മാക്രോ നിർവചിക്കുന്നു "__mcf_cpu_സിപിയു" കോൾഡ്‌ഫയർ ലക്ഷ്യം വെയ്ക്കുമ്പോൾ സിപിയു തിരഞ്ഞെടുത്തിരിക്കുന്നു. അതും
നിർവചിക്കുന്നു "__mcf_family_കുടുംബം", എവിടെ മൂല്യം കുടുംബം മുകളിലുള്ള പട്ടികയിൽ നൽകിയിരിക്കുന്നു.

-mtune=രാഗം
ഒരു പ്രത്യേക മൈക്രോ ആർക്കിടെക്ചറിനുള്ള കോഡ് ക്രമീകരിച്ചിരിക്കുന്ന നിയന്ത്രണങ്ങൾക്കുള്ളിൽ ട്യൂൺ ചെയ്യുക - മാർച്ച്
ഒപ്പം -എംസിപിയു. M680x0 മൈക്രോ ആർക്കിടെക്ചറുകൾ ഇവയാണ്: 68000, 68010, 68020, 68030, 68040,
68060 ഒപ്പം cpu32. കോൾഡ്ഫയർ മൈക്രോ ആർക്കിടെക്ചറുകൾ ഇവയാണ്: cfv1, cfv2, cfv3, cfv4 ഒപ്പം
cfv4e.

നിങ്ങൾക്ക് ഉപയോഗിക്കാം -mtune=68020-40 68020-ൽ താരതമ്യേന നന്നായി പ്രവർത്തിക്കേണ്ട കോഡിന്,
68030 ഉം 68040 ഉം ലക്ഷ്യങ്ങൾ. -mtune=68020-60 സമാനമാണ് എന്നാൽ 68060 ലക്ഷ്യങ്ങൾ ഉൾപ്പെടുന്നു
നന്നായി. ഈ രണ്ട് ഓപ്ഷനുകളും ഒരേ ട്യൂണിംഗ് തീരുമാനങ്ങൾ തിരഞ്ഞെടുക്കുന്നു -m68020-40 ഒപ്പം -m68020-60
യഥാക്രമം.

GCC മാക്രോകളെ നിർവചിക്കുന്നു "__mcകമാനം" കൂടാതെ "__mcകമാനം__" 680x0 ആർക്കിടെക്ചറിനായി ട്യൂൺ ചെയ്യുമ്പോൾ
കമാനം. ഇത് "mc" എന്നും നിർവചിക്കുന്നുകമാനം" ഒന്നുകിൽ ഒഴികെ -ആൻസി അല്ലെങ്കിൽ GNU അല്ലാത്തത് -std ഓപ്ഷൻ ഉപയോഗിക്കുന്നു.
തിരഞ്ഞെടുത്തത് പോലെ, നിരവധി ആർക്കിടെക്ചറുകൾക്കായി ജിസിസി ട്യൂൺ ചെയ്യുകയാണെങ്കിൽ -mtune=68020-40 or
-mtune=68020-60, ഇത് ശ്രേണിയിലെ എല്ലാ ആർക്കിടെക്ചറിനും മാക്രോകൾ നിർവചിക്കുന്നു.

GCC മാക്രോ "__mനേരത്തെ__" കോൾഡ്ഫയർ മൈക്രോ ആർക്കിടെക്ചറിനായി ട്യൂൺ ചെയ്യുമ്പോൾ
നേരത്തെഎവിടെ നേരത്തെ മുകളിൽ നൽകിയിരിക്കുന്ന വാദങ്ങളിലൊന്നാണ്.

-m68000
-mc68000
ഒരു 68000-ന് ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. കംപൈലർ കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ്
68000 അടിസ്ഥാനമാക്കിയുള്ള സംവിധാനങ്ങൾ. ഇതിന് തുല്യമാണ് -മാർച്ച്=68000.

68000 ഉൾപ്പെടെ 000 അല്ലെങ്കിൽ EC68008 കോർ ഉള്ള മൈക്രോകൺട്രോളറുകൾക്കായി ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക.
68302, 68306, 68307, 68322, 68328, 68356.

-m68010
ഒരു 68010-ന് ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. കംപൈലർ കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ്
68010 അടിസ്ഥാനമാക്കിയുള്ള സംവിധാനങ്ങൾ. ഇതിന് തുല്യമാണ് -മാർച്ച്=68010.

-m68020
-mc68020
ഒരു 68020-ന് ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. കംപൈലർ കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ്
68020 അടിസ്ഥാനമാക്കിയുള്ള സംവിധാനങ്ങൾ. ഇതിന് തുല്യമാണ് -മാർച്ച്=68020.

-m68030
ഒരു 68030-ന് ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. കംപൈലർ കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ്
68030 അടിസ്ഥാനമാക്കിയുള്ള സംവിധാനങ്ങൾ. ഇതിന് തുല്യമാണ് -മാർച്ച്=68030.

-m68040
ഒരു 68040-ന് ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. കംപൈലർ കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ്
68040 അടിസ്ഥാനമാക്കിയുള്ള സംവിധാനങ്ങൾ. ഇതിന് തുല്യമാണ് -മാർച്ച്=68040.

അനുകരിക്കേണ്ട 68881/68882 നിർദ്ദേശങ്ങളുടെ ഉപയോഗത്തെ ഈ ഓപ്‌ഷൻ തടയുന്നു
68040-ലെ സോഫ്റ്റ്‌വെയർ. നിങ്ങളുടെ 68040-ന് അനുകരിക്കാൻ കോഡ് ഇല്ലെങ്കിൽ ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കുക
ആ നിർദ്ദേശങ്ങൾ.

-m68060
ഒരു 68060-ന് ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. കംപൈലർ കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ്
68060 അടിസ്ഥാനമാക്കിയുള്ള സംവിധാനങ്ങൾ. ഇതിന് തുല്യമാണ് -മാർച്ച്=68060.

ഈ ഓപ്ഷൻ 68020, 68881/68882 നിർദ്ദേശങ്ങളുടെ ഉപയോഗം തടയുന്നു
68060-ൽ സോഫ്‌റ്റ്‌വെയർ അനുകരിക്കുന്നു. നിങ്ങളുടെ 68060-ന് കോഡ് ഇല്ലെങ്കിൽ ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കുക
ആ നിർദ്ദേശങ്ങൾ അനുകരിക്കാൻ.

-mcpu32
ഒരു CPU32-നായി ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. കംപൈലർ കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ്
CPU32 അടിസ്ഥാനമാക്കിയുള്ള സിസ്റ്റങ്ങൾ. ഇതിന് തുല്യമാണ് -മാർച്ച്=സിപിയു32.

32 ഉൾപ്പെടെ, CPU32 അല്ലെങ്കിൽ CPU68330+ കോർ ഉള്ള മൈക്രോകൺട്രോളറുകൾക്കായി ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക,
68331, 68332, 68333, 68334, 68336, 68340, 68341, 68349, 68360.

-m5200
520X ColdFire CPU-നായി ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. കംപൈലർ ആയിരിക്കുമ്പോൾ ഇതാണ് സ്ഥിരസ്ഥിതി
520X-അധിഷ്ഠിത സിസ്റ്റങ്ങൾക്കായി ക്രമീകരിച്ചിരിക്കുന്നു. ഇതിന് തുല്യമാണ് -mcpu=5206, ഇപ്പോൾ
ആ ഓപ്ഷന് അനുകൂലമായി ഒഴിവാക്കി.

MCF5200, MCF5202, ഉൾപ്പെടെ 5203 കോർ ഉള്ള മൈക്രോകൺട്രോളറിനായി ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക.
MCF5204, MCF5206.

-m5206e
5206e കോൾഡ്‌ഫയർ സിപിയുവിനുള്ള ഔട്ട്‌പുട്ട് സൃഷ്‌ടിക്കുക. ഈ ഓപ്ഷൻ ഇപ്പോൾ അനുകൂലമായി ഒഴിവാക്കിയിരിക്കുന്നു
തുല്യമായത് -mcpu=5206e.

-m528x
ColdFire 528X കുടുംബത്തിലെ ഒരു അംഗത്തിന് ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. ഓപ്ഷൻ ഇപ്പോൾ ആണ്
തത്തുല്യമായതിന് അനുകൂലമായി ഒഴിവാക്കി -mcpu=528x.

-m5307
ഒരു ColdFire 5307 CPU-നായി ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. എന്നതിന് അനുകൂലമായി ഓപ്ഷൻ ഇപ്പോൾ ഒഴിവാക്കിയിരിക്കുന്നു
തുല്യമായ -mcpu=5307.

-m5407
ഒരു ColdFire 5407 CPU-നായി ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. എന്നതിന് അനുകൂലമായി ഓപ്ഷൻ ഇപ്പോൾ ഒഴിവാക്കിയിരിക്കുന്നു
തുല്യമായ -mcpu=5407.

-mcfv4e
ColdFire V4e ഫാമിലി സിപിയുവിന് (ഉദാ: 547x/548x) ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. യുടെ ഉപയോഗം ഇതിൽ ഉൾപ്പെടുന്നു
ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ. ഓപ്ഷൻ തുല്യമാണ് -mcpu=547x, ആണ്
ആ ഓപ്ഷന് അനുകൂലമായി ഇപ്പോൾ ഒഴിവാക്കിയിരിക്കുന്നു.

-m68020-40
പുതിയ നിർദ്ദേശങ്ങളൊന്നും ഉപയോഗിക്കാതെ, 68040-ന് ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. ഇത് ഫലം
ഒരു 68020/68881 അല്ലെങ്കിൽ 68030 അല്ലെങ്കിൽ a എന്നിവയിൽ താരതമ്യേന കാര്യക്ഷമമായി പ്രവർത്തിക്കാൻ കഴിയുന്ന കോഡിൽ
68040. ജനറേറ്റ് ചെയ്ത കോഡ് 68881 നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്നു
68040.

ഓപ്ഷൻ തുല്യമാണ് -മാർച്ച്=68020 -mtune=68020-40.

-m68020-60
പുതിയ നിർദ്ദേശങ്ങളൊന്നും ഉപയോഗിക്കാതെ, 68060-ന് ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. ഇത് ഫലം
ഒരു 68020/68881 അല്ലെങ്കിൽ 68030 അല്ലെങ്കിൽ a എന്നിവയിൽ താരതമ്യേന കാര്യക്ഷമമായി പ്രവർത്തിക്കാൻ കഴിയുന്ന കോഡിൽ
68040. ജനറേറ്റ് ചെയ്ത കോഡ് 68881 നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്നു
68060.

ഓപ്ഷൻ തുല്യമാണ് -മാർച്ച്=68020 -mtune=68020-60.

-mhard-float
-m68881
ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക. 68020-നും അതിനുമുകളിലുള്ളവയ്ക്കും ഇത് സ്ഥിരസ്ഥിതിയാണ്
FPU ഉള്ള ColdFire ഉപകരണങ്ങൾക്കായി. ഇത് "__HAVE_68881__" എന്ന മാക്രോയെ നിർവ്വചിക്കുന്നു
M680x0 ടാർഗെറ്റുകളും കോൾഡ്ഫയർ ടാർഗെറ്റുകളിൽ "__mcffpu__" ഉം.

-msoft-float
ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കരുത്; പകരം ലൈബ്രറി കോളുകൾ ഉപയോഗിക്കുക. ഇതാണ്
68000, 68010, 68832 ടാർഗെറ്റുകൾക്ക് സ്ഥിരസ്ഥിതി. കോൾഡ്‌ഫയറിന്റെ ഡിഫോൾട്ട് കൂടിയാണിത്
FPU ഇല്ലാത്ത ഉപകരണങ്ങൾ.

-എംഡിവി
-mno-div
കോൾഡ്‌ഫയർ ഹാർഡ്‌വെയർ വിഭജനവും ശേഷിക്കുന്ന നിർദ്ദേശങ്ങളും സൃഷ്ടിക്കുക (ജനറേറ്റ് ചെയ്യരുത്). എങ്കിൽ
- മാർച്ച് ഇല്ലാതെ ഉപയോഗിക്കുന്നു -എംസിപിയു, കോൾഡ്ഫയർ ആർക്കിടെക്ചറുകൾക്ക് സ്ഥിരസ്ഥിതി "ഓൺ" ആണ്, കൂടാതെ "ഓഫ്"
M680x0 ആർക്കിടെക്ചറുകൾക്കായി. അല്ലെങ്കിൽ, ഡിഫോൾട്ട് ടാർഗെറ്റ് സിപിയുവിൽ നിന്ന് എടുത്തതാണ് (ഒന്നുകിൽ
സ്ഥിരസ്ഥിതി സിപിയു, അല്ലെങ്കിൽ വ്യക്തമാക്കിയ ഒന്ന് -എംസിപിയു). ഉദാഹരണത്തിന്, സ്ഥിരസ്ഥിതി "ഓഫ്" ആണ്
വേണ്ടി -mcpu=5206 വേണ്ടി "ഓൺ" -mcpu=5206e.

ഈ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ GCC മാക്രോ "__mcfhwdiv__" നിർവചിക്കുന്നു.

-msshort
"short int" പോലെ 16 ബിറ്റ് വീതിയുള്ള "int" എന്ന് ടൈപ്പ് ചെയ്യുക. കൂടാതെ, പരാമീറ്ററുകൾ
API ഉള്ള ടാർഗെറ്റുകളിൽ പോലും 16-ബിറ്റ് അതിർത്തിയിലേക്ക് വിന്യസിച്ചിരിക്കുന്നു.
32-ബിറ്റിലേക്ക് പ്രൊമോഷൻ നിർബന്ധമാക്കുന്നു.

-mno-ഹ്രസ്വ
"int" എന്ന തരം 16 ബിറ്റ് വീതിയുള്ളതായി കണക്കാക്കരുത്. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mnobitfield
-mno-bitfield
ബിറ്റ്-ഫീൽഡ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കരുത്. ദി -m68000, -mcpu32 ഒപ്പം -m5200 ഓപ്ഷനുകൾ സൂചിപ്പിക്കുന്നു
-mnobitfield.

-mbitfield
ബിറ്റ്-ഫീൽഡ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക. ദി -m68020 ഓപ്ഷൻ സൂചിപ്പിക്കുന്നു -mbitfield. ഇതാണ്
നിങ്ങൾ 68020-ന് വേണ്ടി രൂപകൽപ്പന ചെയ്ത കോൺഫിഗറേഷൻ ഉപയോഗിക്കുകയാണെങ്കിൽ സ്ഥിരസ്ഥിതി.

-mrtd
വ്യത്യസ്‌തമായ ഫംഗ്‌ഷൻ-കോളിംഗ് കൺവെൻഷൻ ഉപയോഗിക്കുക, അതിൽ ഫംഗ്‌ഷനുകൾ സ്ഥിരമായി എടുക്കുന്നു
ആർഗ്യുമെന്റുകളുടെ എണ്ണം "rtd" നിർദ്ദേശത്തോടൊപ്പം നൽകുന്നു, അത് അവയുടെ ആർഗ്യുമെന്റുകൾ പോപ്പ് ചെയ്യുന്നു
മടങ്ങുമ്പോൾ. ആവശ്യമില്ലാത്തതിനാൽ ഇത് കോളറിൽ ഒരു നിർദ്ദേശം സംരക്ഷിക്കുന്നു
അവിടെ വാദങ്ങൾ പോപ്പ് ചെയ്യുക.

ഈ കോളിംഗ് കൺവെൻഷൻ Unix-ൽ സാധാരണയായി ഉപയോഗിക്കുന്ന ഒന്നുമായി പൊരുത്തപ്പെടുന്നില്ല, അതിനാൽ നിങ്ങൾ
Unix കമ്പൈലർ ഉപയോഗിച്ച് സമാഹരിച്ച ലൈബ്രറികളിലേക്ക് നിങ്ങൾക്ക് വിളിക്കണമെങ്കിൽ അത് ഉപയോഗിക്കാൻ കഴിയില്ല.

കൂടാതെ, വേരിയബിൾ എടുക്കുന്ന എല്ലാ ഫംഗ്ഷനുകൾക്കും നിങ്ങൾ ഫംഗ്ഷൻ പ്രോട്ടോടൈപ്പുകൾ നൽകണം
ആർഗ്യുമെന്റുകളുടെ എണ്ണം ("printf" ഉൾപ്പെടെ); അല്ലെങ്കിൽ തെറ്റായ കോഡ് സൃഷ്ടിക്കപ്പെടും
ആ പ്രവർത്തനങ്ങളിലേക്ക് വിളിക്കുന്നു.

കൂടാതെ, നിങ്ങൾ ഒരു ഫംഗ്‌ഷനെ വളരെയധികം വിളിക്കുകയാണെങ്കിൽ ഗുരുതരമായ തെറ്റായ കോഡ് ഫലങ്ങൾ
വാദങ്ങൾ. (സാധാരണയായി, അധിക വാദങ്ങൾ നിരുപദ്രവകരമായി അവഗണിക്കപ്പെടുന്നു.)

"rtd" നിർദ്ദേശം 68010, 68020, 68030, 68040, 68060, CPU32 എന്നിവ പിന്തുണയ്ക്കുന്നു
പ്രോസസ്സറുകൾ, എന്നാൽ 68000 അല്ലെങ്കിൽ 5200 വഴിയല്ല.

-mno-rtd
തിരഞ്ഞെടുത്ത കോളിംഗ് കൺവെൻഷനുകൾ ഉപയോഗിക്കരുത് -mrtd. ഇതാണ് സ്ഥിരസ്ഥിതി.

-malign-int
-mno-align-int
GCC "int", "long", "long long", "float", "double", "long" എന്നിവ വിന്യസിക്കുന്നുണ്ടോ എന്ന് നിയന്ത്രിക്കുക
32-ബിറ്റ് അതിർത്തിയിലെ ഇരട്ട" വേരിയബിളുകൾ (-malign-int) അല്ലെങ്കിൽ ഒരു 16-ബിറ്റ് അതിർത്തി
(-mno-align-int). 32-ബിറ്റ് ബൗണ്ടറികളിൽ വേരിയബിളുകൾ വിന്യസിക്കുന്നത് പ്രവർത്തിക്കുന്ന കോഡ് നിർമ്മിക്കുന്നു
32-ബിറ്റ് ബസുകളുള്ള പ്രോസസറുകളിൽ കൂടുതൽ മെമ്മറിയുടെ ചെലവിൽ കുറച്ച് വേഗത്തിൽ.

മുന്നറിയിപ്പ്: നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ -malign-int സ്വിച്ച്, മുകളിൽ പറഞ്ഞവ ഉൾക്കൊള്ളുന്ന ഘടനകളെ GCC വിന്യസിക്കുന്നു
പ്രസിദ്ധീകരിച്ച മിക്ക ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസ് സ്പെസിഫിക്കേഷനുകളേക്കാൾ വ്യത്യസ്തമായ തരങ്ങൾ
m68k.

-mpcrel
ഗ്ലോബൽ ഉപയോഗിക്കുന്നതിന് പകരം 68000-ന്റെ പിസി-ആപേക്ഷിക വിലാസ മോഡ് നേരിട്ട് ഉപയോഗിക്കുക
ഓഫ്സെറ്റ് പട്ടിക. നിലവിൽ, ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നു -fpic, പരമാവധി ഒരു 16-ബിറ്റ് ഓഫ്സെറ്റ് അനുവദിക്കുന്നു
പിസി-ആപേക്ഷിക വിലാസത്തിനായി. -fPIC നിലവിൽ പിന്തുണയ്ക്കുന്നില്ല -mpcrel, എന്നിരുന്നാലും
ഇത് 68020-ഉം ഉയർന്ന പ്രൊസസ്സറുകളും പിന്തുണയ്ക്കാം.

-mno-strict-align
-mstrict-align
വിന്യസിക്കാത്ത മെമ്മറി റഫറൻസുകൾ സിസ്റ്റം കൈകാര്യം ചെയ്യുന്നുവെന്ന് കരുതരുത്.

-msep-data
മെമ്മറിയുടെ മറ്റൊരു മേഖലയിൽ ഡാറ്റാ സെഗ്മെന്റ് സ്ഥാപിക്കാൻ അനുവദിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക
ടെക്സ്റ്റ് സെഗ്മെന്റിൽ നിന്ന്. ഇത് ഇല്ലാത്ത ഒരു പരിതസ്ഥിതിയിൽ എക്സിക്യൂട്ട്-ഇൻ-പ്ലേസ് അനുവദിക്കുന്നു
വെർച്വൽ മെമ്മറി മാനേജ്മെന്റ്. ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നു -fPIC.

-mno-sep-data
ഡാറ്റ സെഗ്‌മെന്റ് ടെക്‌സ്‌റ്റ് സെഗ്‌മെന്റിനെ പിന്തുടരുന്നുവെന്ന് അനുമാനിക്കുന്ന കോഡ് സൃഷ്‌ടിക്കുക. ഇതാണ്
സ്ഥിരസ്ഥിതി.

-മിഡ്-ഷെയർഡ്-ലൈബ്രറി
ലൈബ്രറി ഐഡി രീതി വഴി പങ്കിട്ട ലൈബ്രറികളെ പിന്തുണയ്ക്കുന്ന കോഡ് സൃഷ്ടിക്കുക. ഇത് അനുവദിക്കുന്നു
വെർച്വൽ മെമ്മറി ഇല്ലാത്ത ഒരു പരിതസ്ഥിതിയിൽ എക്സിക്യൂട്ട്-ഇൻ-പ്ലേസ്, പങ്കിട്ട ലൈബ്രറികൾക്കായി
മാനേജ്മെന്റ്. ഈ ഓപ്ഷൻ സൂചിപ്പിക്കുന്നു -fPIC.

-mno-id-shared-library
ഐഡി അടിസ്ഥാനമാക്കിയുള്ള പങ്കിട്ട ലൈബ്രറികൾ ഉപയോഗിക്കുന്നുണ്ടെന്ന് കരുതാത്ത കോഡ് സൃഷ്ടിക്കുക. ഇതാണ്
സ്ഥിരസ്ഥിതി.

-mshared-library-id=n
കംപൈൽ ചെയ്യുന്ന ഐഡി അടിസ്ഥാനമാക്കിയുള്ള പങ്കിട്ട ലൈബ്രറിയുടെ തിരിച്ചറിയൽ നമ്പർ വ്യക്തമാക്കുന്നു.
0 ന്റെ മൂല്യം വ്യക്തമാക്കുന്നത് കൂടുതൽ കോംപാക്റ്റ് കോഡ് സൃഷ്ടിക്കുന്നു; മറ്റ് മൂല്യങ്ങളുടെ ശക്തികൾ വ്യക്തമാക്കുന്നു
നിലവിലെ ലൈബ്രറിയിലേക്ക് ആ നമ്പർ അനുവദിച്ചു, എന്നാൽ കൂടുതൽ സ്ഥലമോ സമയമോ ഇല്ല-
ഈ ഓപ്ഷൻ ഒഴിവാക്കുന്നതിനേക്കാൾ കാര്യക്ഷമമാണ്.

-mxgot
-mno-xgot
ColdFire-നായി പൊസിഷൻ-ഇൻഡിപെൻഡന്റ് കോഡ് സൃഷ്ടിക്കുമ്പോൾ, എങ്കിൽ പ്രവർത്തിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക
GOT ന് 8192-ലധികം എൻട്രികളുണ്ട്. ഈ കോഡ് കോഡിനേക്കാൾ വലുതും വേഗത കുറഞ്ഞതുമാണ്
ഈ ഓപ്ഷൻ ഇല്ലാതെ ജനറേറ്റ് ചെയ്തത്. M680x0 പ്രോസസ്സറുകളിൽ, ഈ ഓപ്ഷൻ ആവശ്യമില്ല; -fPIC
മതിയാകും.

GOT-ൽ നിന്ന് മൂല്യങ്ങൾ ലോഡുചെയ്യുന്നതിന് GCC സാധാരണയായി ഒരൊറ്റ നിർദ്ദേശം ഉപയോഗിക്കുന്നു. ഇത് ആയിരിക്കുമ്പോൾ
താരതമ്യേന കാര്യക്ഷമമാണ്, GOT ഏകദേശം 64k-ൽ കുറവാണെങ്കിൽ മാത്രമേ ഇത് പ്രവർത്തിക്കൂ. എന്തും
വലുത് ഇനിപ്പറയുന്നതുപോലുള്ള ഒരു പിശക് റിപ്പോർട്ടുചെയ്യുന്നതിന് ലിങ്കർ കാരണമാകുന്നു:

സ്ഥലംമാറ്റം അനുയോജ്യമായി ചുരുക്കി: R_68K_GOT16O ഫൂബാർ

ഇത് സംഭവിക്കുകയാണെങ്കിൽ, നിങ്ങളുടെ കോഡ് വീണ്ടും കംപൈൽ ചെയ്യണം -mxgot. അപ്പോൾ അത് പ്രവർത്തിക്കണം
വളരെ വലിയ GOT-കൾ. എന്നിരുന്നാലും, കോഡ് സൃഷ്ടിച്ചത് -mxgot കാര്യക്ഷമത കുറവാണ്, കാരണം
ഒരു ആഗോള ചിഹ്നത്തിന്റെ മൂല്യം ലഭിക്കുന്നതിന് 4 നിർദ്ദേശങ്ങൾ എടുക്കുന്നു.

ഗ്നു ലിങ്കറിന്റെ പുതിയ പതിപ്പുകൾ ഉൾപ്പെടെ ചില ലിങ്കറുകൾക്ക് സൃഷ്ടിക്കാൻ കഴിയുമെന്നത് ശ്രദ്ധിക്കുക
ഒന്നിലധികം GOT-കൾ, GOT എൻട്രികൾ അടുക്കുക. നിങ്ങൾക്ക് അത്തരമൊരു ലിങ്കർ ഉണ്ടെങ്കിൽ, നിങ്ങൾക്ക് മാത്രമേ ആവശ്യമുള്ളൂ
ഉപയോഗിക്കാൻ -mxgot 8192 GOT-ൽ കൂടുതൽ ആക്‌സസ് ചെയ്യുന്ന ഒരൊറ്റ ഒബ്‌ജക്റ്റ് ഫയൽ കംപൈൽ ചെയ്യുമ്പോൾ
എൻട്രികൾ. വളരെ കുറച്ചുപേർ മാത്രമേ ചെയ്യുന്നുള്ളൂ.

GCC പൊസിഷൻ-ഇൻഡിപെൻഡന്റ് കോഡ് സൃഷ്ടിക്കുന്നില്ലെങ്കിൽ ഈ ഓപ്ഷനുകൾക്ക് യാതൊരു ഫലവുമില്ല.

എംകോർ ഓപ്ഷനുകൾ

ഇവയൊക്കെയാണ് -m മോട്ടറോള എം*കോർ പ്രോസസ്സറുകൾക്കായി നിർവചിച്ചിരിക്കുന്ന ഓപ്ഷനുകൾ.

-mhardlit
-mno-hardlit
കോഡ് സ്ട്രീമിലേക്ക് ഇൻലൈൻ സ്ഥിരാങ്കങ്ങൾ രണ്ട് നിർദ്ദേശങ്ങളിലോ അതിൽ കുറവോ ചെയ്യാനാകുമെങ്കിൽ.

-എംഡിവി
-mno-div
വിഭജിക്കുന്നതിനുള്ള നിർദ്ദേശം ഉപയോഗിക്കുക. (സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കി).

-mrelax-ഉടൻ
-mno-relax-immediate
ബിറ്റ് ഓപ്പറേഷനുകളിൽ അനിയന്ത്രിതമായ വലിപ്പത്തിലുള്ള ഉടനടി അനുവദിക്കുക.

-mwide-bitfields
-mno-wid-bitfields
എല്ലായ്‌പ്പോഴും ബിറ്റ്-ഫീൽഡുകളെ "int"-size ആയി പരിഗണിക്കുക.

-m4byte-പ്രവർത്തനങ്ങൾ
-mno-4byte-പ്രവർത്തനങ്ങൾ
എല്ലാ ഫംഗ്‌ഷനുകളും 4-ബൈറ്റ് അതിർത്തിയിലേക്ക് വിന്യസിക്കാൻ നിർബന്ധിക്കുക.

-mcallgraph-data
-mno-calgraph-data
കോൾഗ്രാഫ് വിവരങ്ങൾ പുറത്തുവിടുക.

-mslow-ബൈറ്റുകൾ
-mno-slow-bytes
ബൈറ്റ് അളവുകൾ വായിക്കുമ്പോൾ വാക്ക് ആക്സസ് തിരഞ്ഞെടുക്കുക.

-mlittle-endian
-mbig-endian
ഒരു ചെറിയ-എൻഡിയൻ ലക്ഷ്യത്തിനായി കോഡ് സൃഷ്ടിക്കുക.

-m210
-m340
210 പ്രോസസറിനായി കോഡ് സൃഷ്ടിക്കുക.

-mno-lsim
റൺടൈം പിന്തുണ നൽകിയിട്ടുണ്ടെന്ന് കരുതുക, അതിനാൽ സിമുലേറ്റർ ലൈബ്രറി ഒഴിവാക്കുക
(libsim.a) ലിങ്കർ കമാൻഡ് ലൈനിൽ നിന്ന്.

-mstack-increment=വലുപ്പം
ഒരൊറ്റ സ്റ്റാക്ക് ഇൻക്രിമെന്റ് പ്രവർത്തനത്തിനായി പരമാവധി തുക സജ്ജമാക്കുക. വലിയ മൂല്യങ്ങൾക്ക് കഴിയും
ഒരു വലിയ തുക ആവശ്യമുള്ള ഫംഗ്‌ഷനുകൾ അടങ്ങിയ പ്രോഗ്രാമുകളുടെ വേഗത വർദ്ധിപ്പിക്കുക
സ്റ്റാക്ക് സ്പേസ്, എന്നാൽ സ്റ്റാക്ക് വിപുലീകരിക്കുകയാണെങ്കിൽ അവയ്ക്ക് സെഗ്മെന്റേഷൻ തകരാർ സംഭവിക്കാം
വളരെയധികം. സ്ഥിര മൂല്യം 0x1000 ആണ്.

എം.പി ഓപ്ഷനുകൾ

-മാബ്സ്ഡിഫ്
രണ്ട് രജിസ്റ്ററുകൾ തമ്മിലുള്ള സമ്പൂർണ വ്യത്യാസമായ "abs" നിർദ്ദേശം പ്രവർത്തനക്ഷമമാക്കുന്നു.

-മാൾ-ഓപ്‌റ്റുകൾ
എല്ലാ ഓപ്ഷണൽ നിർദ്ദേശങ്ങളും പ്രവർത്തനക്ഷമമാക്കുന്നു---ശരാശരി, ഗുണനം, ഹരിക്കൽ, ബിറ്റ് പ്രവർത്തനങ്ങൾ,
ലീഡിംഗ് പൂജ്യം, കേവല വ്യത്യാസം, മിനിറ്റ്/പരമാവധി, ക്ലിപ്പ്, സാച്ചുറേഷൻ.

-മാവറേജ്
രണ്ട് രജിസ്റ്ററുകളുടെ ശരാശരി കണക്കാക്കുന്ന "ave" നിർദ്ദേശം പ്രവർത്തനക്ഷമമാക്കുന്നു.

-m based=n
വലിപ്പത്തിന്റെ വേരിയബിളുകൾ n സ്ഥിരസ്ഥിതിയായി ".അടിസ്ഥാനത്തിലുള്ള" വിഭാഗത്തിൽ ബൈറ്റുകളോ അതിൽ കുറവോ സ്ഥാപിക്കുന്നു.
അടിസ്ഥാന വേരിയബിളുകൾ $tp രജിസ്റ്ററിനെ അടിസ്ഥാന രജിസ്റ്ററായി ഉപയോഗിക്കുന്നു, കൂടാതെ 128-ബൈറ്റ് പരിധിയുണ്ട്
".അടിസ്ഥാന" വിഭാഗത്തിലേക്ക്.

-mbitops
ബിറ്റ് പ്രവർത്തന നിർദ്ദേശങ്ങൾ പ്രാപ്തമാക്കുന്നു---ബിറ്റ് ടെസ്റ്റ് ("btstm"), സെറ്റ് ("bsetm"), ക്ലിയർ
("bclrm"), വിപരീതം ("bnotm"), ടെസ്റ്റ്-ആൻഡ്-സെറ്റ് ("tas").

-mc=പേര്
സ്ഥിരമായ ഡാറ്റ ഏത് വിഭാഗത്തിലാണ് സ്ഥാപിച്ചിരിക്കുന്നതെന്ന് തിരഞ്ഞെടുക്കുന്നു. പേര് ഒരുപക്ഷേ തീരെച്ചെറിയ, സമീപം, അഥവാ ബഹുദൂരം.

-mclip
"ക്ലിപ്പ്" നിർദ്ദേശം പ്രവർത്തനക്ഷമമാക്കുന്നു. അതല്ല -mclip നിങ്ങളല്ലാതെ പ്രയോജനമില്ല
നൽകാൻ -mminmax.

-mconfig=പേര്
അന്തർനിർമ്മിത കോർ കോൺഫിഗറേഷനുകളിലൊന്ന് തിരഞ്ഞെടുക്കുന്നു. ഓരോ MeP ചിപ്പിലും ഒന്നോ അതിലധികമോ ഉണ്ട്
അതിൽ മൊഡ്യൂളുകൾ; ഓരോ മൊഡ്യൂളിനും ഒരു കോർ സിപിയുവും വിവിധ കോപ്രൊസസ്സറുകളും ഉണ്ട്, ഓപ്ഷണൽ
നിർദ്ദേശങ്ങളും അനുബന്ധ ഉപകരണങ്ങളും. ജിസിസിയുടെ ഭാഗമല്ല, "MeP-Integrator" ടൂൾ നൽകുന്നു
ഈ ഓപ്ഷൻ വഴി ഈ കോൺഫിഗറേഷനുകൾ; ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നത് എല്ലാം ഉപയോഗിക്കുന്നതിന് തുല്യമാണ്
അനുബന്ധ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ. ഡിഫോൾട്ട് കോൺഫിഗറേഷൻ ആണ് സ്ഥിരസ്ഥിതി.

-എംകോപ്
കോപ്രൊസസർ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നു. സ്ഥിരസ്ഥിതിയായി, ഇതൊരു 32-ബിറ്റ് കോപ്രോസസർ ആണ്. കുറിപ്പ്
കോപ്രൊസസർ സാധാരണയായി പ്രവർത്തനക്ഷമമാക്കുന്നത് വഴിയാണ് -mconfig= ഓപ്ഷൻ.

-mcop32
32-ബിറ്റ് കോപ്രോസസറിന്റെ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നു.

-mcop64
64-ബിറ്റ് കോപ്രോസസറിന്റെ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നു.

-mivc2
IVC2 ഷെഡ്യൂളിംഗ് പ്രവർത്തനക്ഷമമാക്കുന്നു. IVC2 64-ബിറ്റ് VLIW കോപ്രൊസസറാണ്.

-എംഡിസി
".near" വിഭാഗത്തിൽ സ്ഥിരമായ വേരിയബിളുകൾ സ്ഥാപിക്കുന്നതിന് കാരണമാകുന്നു.

-എംഡിവി
"div", "divu" നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നു.

-മെബ്
ബിഗ്-എൻഡിയൻ കോഡ് സൃഷ്ടിക്കുക.

-മെൽ
ലിറ്റിൽ-എൻഡിയൻ കോഡ് സൃഷ്ടിക്കുക.

-മിയോ-അസ്ഥിരമായ
"io" ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് അടയാളപ്പെടുത്തിയിരിക്കുന്ന ഏതെങ്കിലും വേരിയബിൾ ആയിരിക്കണമെന്ന് കംപൈലറോട് പറയുന്നു
അസ്ഥിരമായി കണക്കാക്കുന്നു.

- മില്ലി ഡിഫോൾട്ടായി ".ഫാർ" വിഭാഗത്തിലേക്ക് വേരിയബിളുകൾ നൽകുന്നതിന് കാരണമാകുന്നു.

-mleadz
"leadz" (ലീഡിംഗ് സീറോ) നിർദ്ദേശം പ്രവർത്തനക്ഷമമാക്കുന്നു.

-എംഎം സ്ഥിരസ്ഥിതിയായി ".near" വിഭാഗത്തിലേക്ക് വേരിയബിളുകൾ നൽകുന്നതിന് കാരണമാകുന്നു.

-mminmax
"മിനിറ്റ്", "മാക്സ്" നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നു.

-mult
ഗുണനവും ഗുണന-ശേഖരണ നിർദ്ദേശങ്ങളും പ്രവർത്തനക്ഷമമാക്കുന്നു.

-mno-opts
പ്രവർത്തനക്ഷമമാക്കിയ എല്ലാ ഓപ്ഷണൽ നിർദ്ദേശങ്ങളും പ്രവർത്തനരഹിതമാക്കുന്നു -മാൾ-ഓപ്‌റ്റുകൾ.

- ആവർത്തിക്കുക
ലോ-ഓവർഹെഡ് ലൂപ്പിംഗിനായി ഉപയോഗിക്കുന്ന "ആവർത്തനം", "ആവർത്തനം" നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നു.

-മിസ് എല്ലാ വേരിയബിളുകളും ".tiny" വിഭാഗത്തിലേക്ക് സ്ഥിരസ്ഥിതിയാക്കുന്നു. ഒരു ഉണ്ടെന്ന് ശ്രദ്ധിക്കുക
ഈ വിഭാഗത്തിലേക്കുള്ള 65536-ബൈറ്റ് പരിധി. ഈ വേരിയബിളുകളിലേക്കുള്ള ആക്‌സസ്സ് %gp ബേസ് ഉപയോഗിക്കുന്നു
രജിസ്റ്റർ ചെയ്യുക.

-മസാതുർ
സാച്ചുറേഷൻ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നു. കംപൈലർ നിലവിൽ ഇല്ല എന്നത് ശ്രദ്ധിക്കുക
ഇവ തന്നെ ജനറേറ്റ് ചെയ്യുക, എന്നാൽ മറ്റ് ടൂളുകളുമായുള്ള അനുയോജ്യതയ്ക്കായി ഈ ഓപ്ഷൻ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്,
"ആയി" പോലെ.

-msdram
ഡിഫോൾട്ട് റോം അടിസ്ഥാനമാക്കിയുള്ള റൺടൈമിന് പകരം SDRAM അടിസ്ഥാനമാക്കിയുള്ള റൺടൈം ലിങ്ക് ചെയ്യുക.

-എംസിം
സിമുലേറ്റർ റൺ-ടൈം ലൈബ്രറികൾ ലിങ്ക് ചെയ്യുക.

-msimnovec
സിമുലേറ്റർ റൺടൈം ലൈബ്രറികൾ ലിങ്ക് ചെയ്യുക, പുനഃസജ്ജീകരണത്തിനുള്ള ബിൽറ്റ്-ഇൻ പിന്തുണ ഒഴികെ
ഒഴിവാക്കൽ വെക്റ്ററുകളും പട്ടികകളും.

-എംടിഎഫ്
എല്ലാ ഫംഗ്‌ഷനുകളും ".ഫാർ" വിഭാഗത്തിലേക്ക് സ്ഥിരസ്ഥിതിയാക്കുന്നു. ഈ ഓപ്ഷൻ കൂടാതെ, പ്രവർത്തനങ്ങൾ
".near" വിഭാഗത്തിലേക്ക് ഡിഫോൾട്ട്.

-mtiny=n
ആയ വേരിയബിളുകൾ n ".tiny" വിഭാഗത്തിലേക്ക് ബൈറ്റുകളോ അതിൽ കുറവോ അനുവദിച്ചിരിക്കുന്നു. ഇവ
വേരിയബിളുകൾ $gp ബേസ് രജിസ്റ്റർ ഉപയോഗിക്കുന്നു. ഈ ഓപ്ഷന്റെ ഡിഫോൾട്ട് 4 ആണ്, എന്നാൽ അത് ശ്രദ്ധിക്കുക
".tiny" വിഭാഗത്തിന് 65536-ബൈറ്റ് പരിധിയുണ്ട്.

മൈക്രോബ്ലേസ് ഓപ്ഷനുകൾ

-msoft-float
ഫ്ലോട്ടിംഗ് പോയിന്റിനായി സോഫ്റ്റ്വെയർ എമുലേഷൻ ഉപയോഗിക്കുക (സ്ഥിരസ്ഥിതി).

-mhard-float
ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക.

-mmemcpy
ബ്ലോക്ക് നീക്കങ്ങൾ ഒപ്റ്റിമൈസ് ചെയ്യരുത്, "memcpy" ഉപയോഗിക്കുക.

-mno-clearbss
ഈ ഓപ്ഷൻ ഒഴിവാക്കിയിരിക്കുന്നു. ഉപയോഗിക്കുക -fno-zero-initialized-in-bss പകരം.

-mcpu=cpu-തരം
നൽകിയിരിക്കുന്ന സിപിയുവിൻറെ സവിശേഷതകളും ഷെഡ്യൂൾ കോഡും ഉപയോഗിക്കുക. പിന്തുണയ്ക്കുന്ന മൂല്യങ്ങൾ എന്നതിലാണ്
ഫോർമാറ്റ് vX.YY.Zഎവിടെ X ഒരു പ്രധാന പതിപ്പാണ്, YY ചെറിയ പതിപ്പാണ്, കൂടാതെ Z is
അനുയോജ്യത കോഡ്. ഉദാഹരണ മൂല്യങ്ങൾ v3.00.a, v4.00.b, v5.00.a, v5.00.b, v5.00.b,
v6.00.a.

-mxl-soft-mul
സോഫ്റ്റ്‌വെയർ മൾട്ടിപ്ലൈ എമുലേഷൻ ഉപയോഗിക്കുക (സ്ഥിരസ്ഥിതി).

-mxl-soft-div
വിഭജനങ്ങൾക്കായി സോഫ്‌റ്റ്‌വെയർ എമുലേഷൻ ഉപയോഗിക്കുക (ഡിഫോൾട്ട്).

-mxl-ബാരൽ-ഷിഫ്റ്റ്
ഹാർഡ്‌വെയർ ബാരൽ ഷിഫ്റ്റർ ഉപയോഗിക്കുക.

-mxl-പാറ്റേൺ-താരതമ്യം ചെയ്യുക
പാറ്റേൺ താരതമ്യം നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക.

-small-divides
ചെറിയ ഒപ്പിട്ട പൂർണ്ണ ഡിവിഷനുകൾക്കായി ടേബിൾ ലുക്ക്അപ്പ് ഒപ്റ്റിമൈസേഷൻ ഉപയോഗിക്കുക.

-mxl-stack-check
ഈ ഓപ്ഷൻ ഒഴിവാക്കിയിരിക്കുന്നു. ഉപയോഗിക്കുക -fstack-ചെക്ക് പകരം.

-mxl-gp-opt
GP-relative ".sdata"/".sbss" വിഭാഗങ്ങൾ ഉപയോഗിക്കുക.

-mxl-multiply-high
32x32 ഗുണനത്തിന്റെ ഉയർന്ന ഭാഗത്തിന് ഗുണിക്കുക ഉയർന്ന നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക.

-mxl-float-convert
ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് കൺവേർഷൻ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക.

-mxl-float-sqrt
ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് സ്‌ക്വയർ റൂട്ട് നിർദ്ദേശം ഉപയോഗിക്കുക.

-mbig-endian
ഒരു ബിഗ്-എൻഡിയൻ ലക്ഷ്യത്തിനായി കോഡ് സൃഷ്ടിക്കുക.

-mlittle-endian
ഒരു ചെറിയ-എൻഡിയൻ ലക്ഷ്യത്തിനായി കോഡ് സൃഷ്ടിക്കുക.

-mxl-reorder
പുനഃക്രമീകരിക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (സ്വാപ്പും ബൈറ്റും റിവേഴ്സ്ഡ് ലോഡ്/സ്റ്റോർ).

-mxl-മോഡ്-ആപ്ലിക്കേഷൻ മോഡൽ
ആപ്ലിക്കേഷൻ മോഡൽ തിരഞ്ഞെടുക്കുക ആപ്ലിക്കേഷൻ മോഡൽ. സാധുവായ മോഡലുകളാണ്

എക്സിക്യൂട്ടബിൾ
സാധാരണ എക്സിക്യൂട്ടബിൾ (ഡിഫോൾട്ട്), സ്റ്റാർട്ടപ്പ് കോഡ് ഉപയോഗിക്കുന്നു crt0.o.

xmdstub
Xilinx മൈക്രോപ്രൊസസർ ഡീബഗ്ഗർ (XMD) അടിസ്ഥാനമാക്കിയുള്ള സോഫ്റ്റ്‌വെയർ ഇൻട്രൂസീവ് ഡീബഗ്ഗിനൊപ്പം ഉപയോഗിക്കുന്നതിന്
xmdstub എന്ന ഏജന്റ്. ഇത് സ്റ്റാർട്ടപ്പ് ഫയൽ ഉപയോഗിക്കുന്നു crt1.o എന്നതിന്റെ ആരംഭ വിലാസം സജ്ജമാക്കുന്നു
പ്രോഗ്രാം 0x800.

ബൂട്ട്സ്ട്രാപ്പ്
ഒരു ബൂട്ട്ലോഡർ ഉപയോഗിച്ച് ലോഡ് ചെയ്യുന്ന ആപ്ലിക്കേഷനുകൾക്കായി. ഈ മോഡൽ സ്റ്റാർട്ടപ്പ് ഫയൽ ഉപയോഗിക്കുന്നു
crt2.o പ്രോസസർ റീസെറ്റ് വെക്റ്റർ ഹാൻഡ്‌ലർ അടങ്ങിയിട്ടില്ല. ഇത് അനുയോജ്യമാണ്
ഒരു പ്രോസസ്സർ റീസെറ്റിലെ നിയന്ത്രണം ബൂട്ട്ലോഡറിലേക്ക് മാറ്റുന്നതിന് പകരം
അപേക്ഷ.

നവകർത്താക്കൾ
മൈക്രോബ്ലേസ് വെക്റ്ററുകളൊന്നും ആവശ്യമില്ലാത്ത ആപ്ലിക്കേഷനുകൾക്കായി. ഈ ഓപ്ഷൻ
ഒരു മോണിറ്ററിംഗ് ആപ്ലിക്കേഷനിൽ പ്രവർത്തിക്കുന്ന ആപ്ലിക്കേഷനുകൾക്ക് ഉപയോഗപ്രദമായേക്കാം. ഈ മോഡൽ
ഉപയോഗങ്ങൾ crt3.o ഒരു സ്റ്റാർട്ടപ്പ് ഫയലായി.

ഓപ്ഷൻ -xl-മോഡ്-ആപ്ലിക്കേഷൻ മോഡൽ എന്നതിനുള്ള ഒഴിവാക്കപ്പെട്ട അപരനാമമാണ് -mxl-മോഡ്-ആപ്ലിക്കേഷൻ മോഡൽ.

എംഐപിഎസ് ഓപ്ഷനുകൾ

-ഇ.ബി ബിഗ്-എൻഡിയൻ കോഡ് സൃഷ്ടിക്കുക.

-ഇഎൽ ലിറ്റിൽ-എൻഡിയൻ കോഡ് സൃഷ്ടിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി mips*el-*-* കോൺഫിഗറേഷനുകൾ.

-മാർച്ച്=കമാനം
പ്രവർത്തിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക കമാനം, ഇത് ഒരു ജനറിക് MIPS ISA യുടെ പേരായിരിക്കാം, അല്ലെങ്കിൽ
ഒരു പ്രത്യേക പ്രോസസ്സറിന്റെ പേര്. ISA പേരുകൾ ഇവയാണ്: mips1, mips2, mips3, mips4,
mips32, mips32r2, mips32r3, mips32r5, mips32r6, mips64, mips64r2, mips64r3, mips64r5
ഒപ്പം mips64r6. പ്രോസസ്സറിന്റെ പേരുകൾ ഇവയാണ്: 4kc, 4 കിലോമീറ്റർ, 4kp, 4ksc, 4കെസി, 4കെഎം, 4 കെപ്പ്, 4 കെഎസ്ഡി,
5kc, 5kf, 20kc, 24kc, 24kf2_1, 24kf1_1, 24കെസി, 24കെഫ്2_1, 24കെഫ്1_1, 34kc, 34kf2_1,
34kf1_1, 34kn, 74kc, 74kf2_1, 74kf1_1, 74kf3_2, 1004kc, 1004kf2_1, 1004kf1_1,
loongson2e, loongson2f, loongson3a, എം 4 കെ, എം 14 കെ, m14kc, m14ke, m14kec, ഒക്ടിയോൺ, ഒക്ടിയോൺ+,
ഒക്റ്റിയോൺ2, ഒക്റ്റിയോൺ3, ഓറിയോൺ, പ്ക്സനുമ്ക്സ, r2000, r3000, r3900, r4000, r4400, r4600, r4650,
r4700, r6000, r8000, 7000 രൂപ, 9000 രൂപ, r10000, r12000, r14000, r16000, sb1, sr71000,
vr4100, vr4111, vr4120, vr4130, vr4300, vr5000, vr5400, vr5500, xlr ഒപ്പം xlp. ദി
പ്രത്യേക മൂല്യം നിന്ന്-അബി തിരഞ്ഞെടുത്ത എബിഐക്ക് ഏറ്റവും അനുയോജ്യമായ ആർക്കിടെക്ചർ തിരഞ്ഞെടുക്കുന്നു
(അതാണ്, mips1 32-ബിറ്റ് എബിഐകൾക്കും mips3 64-ബിറ്റ് എബിഐകൾക്കായി).

നേറ്റീവ് Linux/GNU ടൂൾചെയിനും മൂല്യത്തെ പിന്തുണയ്ക്കുന്നു നേറ്റീവ്, അത് ഏറ്റവും മികച്ചത് തിരഞ്ഞെടുക്കുന്നു
ഹോസ്റ്റ് പ്രോസസറിനുള്ള ആർക്കിടെക്ചർ ഓപ്ഷൻ. -മാർച്ച് = സ്വദേശി GCC ചെയ്താൽ ഫലമില്ല
പ്രോസസ്സർ തിരിച്ചറിയുന്നില്ല.

പ്രോസസ്സർ പേരുകളിൽ, ഒരു ഫൈനൽ 000 എന്നായി ചുരുക്കിപ്പറയാം k (ഉദാഹരണത്തിന്, -മാർച്ച്=r2k).
പ്രിഫിക്സുകൾ ഓപ്ഷണൽ ആണ്, കൂടാതെ vr എഴുതിയേക്കാം r.

ഫോമിന്റെ പേരുകൾ nf2_1 യുടെ പകുതി നിരക്കിൽ FPU കൾ ക്ലോക്ക് ചെയ്തിരിക്കുന്ന പ്രോസസ്സറുകൾ റഫർ ചെയ്യുക
കോർ, ഫോമിന്റെ പേരുകൾ nf1_1 ഒരേ നിരക്കിൽ ക്ലോക്ക് ചെയ്ത എഫ്പിയു ഉള്ള പ്രോസസ്സറുകൾ റഫർ ചെയ്യുക
ഫോമിന്റെ കാമ്പും പേരുകളും nf3_2 FPU-കളുള്ള പ്രൊസസറുകൾ റഫർ ചെയ്യുക
കാമ്പിനെ സംബന്ധിച്ചിടത്തോളം 3:2. അനുയോജ്യത കാരണങ്ങളാൽ, nf a ആയി അംഗീകരിക്കപ്പെടുന്നു
എന്നതിന്റെ പര്യായപദം nf2_1 സമയത്ത് nx ഒപ്പം bfx എന്നതിന്റെ പര്യായപദങ്ങളായി അംഗീകരിക്കപ്പെടുന്നു nf1_1.

ഈ ഓപ്ഷന്റെ മൂല്യത്തെ അടിസ്ഥാനമാക്കി GCC രണ്ട് മാക്രോകൾ നിർവചിക്കുന്നു. ആദ്യത്തേത് "_MIPS_ARCH" ആണ്,
ഇത് ടാർഗെറ്റ് ആർക്കിടെക്ചറിന്റെ പേര് ഒരു സ്ട്രിംഗ് ആയി നൽകുന്നു. രണ്ടാമത്തേതിന് ഒരു രൂപമുണ്ട്
"_MIPS_ARCH_foo"എവിടെ ഫൂ "_MIPS_ARCH" എന്നതിന്റെ വലിയക്ഷര മൂല്യമാണ്. ഉദാഹരണത്തിന്,
-മാർച്ച്=r2000 "_MIPS_ARCH" എന്നത് "r2000" ആയി സജ്ജീകരിക്കുകയും മാക്രോ "_MIPS_ARCH_R2000" നിർവചിക്കുകയും ചെയ്യുന്നു.

"_MIPS_ARCH" മാക്രോ മുകളിൽ നൽകിയിരിക്കുന്ന പ്രൊസസർ പേരുകൾ ഉപയോഗിക്കുന്നു എന്നത് ശ്രദ്ധിക്കുക. മറ്റുള്ളവയിൽ
വാക്കുകൾ, ഇതിന് മുഴുവൻ പ്രിഫിക്‌സും ഉണ്ട്, ചുരുക്കിയല്ല 000 as k. ഈ സന്ദർഭത്തിൽ മുതൽ-
അബി, പരിഹരിച്ച ആർക്കിടെക്ചറിന് മാക്രോ പേരിടുന്നു (ഒന്നുകിൽ "mips1" അല്ലെങ്കിൽ "mips3"). അത് പേരിടുന്നു
ഇല്ലെങ്കിൽ ഡിഫോൾട്ട് ആർക്കിടെക്ചർ - മാർച്ച് ഓപ്ഷൻ നൽകിയിരിക്കുന്നു.

-mtune=കമാനം
ഇതിനായി ഒപ്റ്റിമൈസ് ചെയ്യുക കമാനം. മറ്റ് കാര്യങ്ങൾക്കൊപ്പം, ഈ ഓപ്‌ഷൻ നിർദ്ദേശങ്ങളുടെ രീതിയെ നിയന്ത്രിക്കുന്നു
ഷെഡ്യൂൾ ചെയ്തതും ഗണിത പ്രവർത്തനങ്ങളുടെ വിലയും. യുടെ പട്ടിക കമാനം മൂല്യങ്ങൾ
എന്നതിന് തുല്യമാണ് - മാർച്ച്.

ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കാത്തപ്പോൾ, വ്യക്തമാക്കിയ പ്രോസസ്സറിനായി GCC ഒപ്റ്റിമൈസ് ചെയ്യുന്നു - മാർച്ച്. വഴി
ഉപയോഗിച്ച് - മാർച്ച് ഒപ്പം -mtune ഒരുമിച്ച്, a-യിൽ പ്രവർത്തിക്കുന്ന കോഡ് സൃഷ്ടിക്കാൻ കഴിയും
പ്രോസസ്സറുകളുടെ കുടുംബം, എന്നാൽ ആ കുടുംബത്തിലെ ഒരു പ്രത്യേക അംഗത്തിന് കോഡ് ഒപ്റ്റിമൈസ് ചെയ്യുക.

-mtune മാക്രോകൾ "_MIPS_TUNE", "_MIPS_TUNE_ എന്നിവ നിർവ്വചിക്കുന്നുfoo", ഒരേ ജോലി
വഴി - മാർച്ച് മുകളിൽ വിവരിച്ചവ.

-mips1
തുല്യമായ -മാർച്ച്=മിപ്സ്1.

-mips2
തുല്യമായ -മാർച്ച്=മിപ്സ്2.

-mips3
തുല്യമായ -മാർച്ച്=മിപ്സ്3.

-mips4
തുല്യമായ -മാർച്ച്=മിപ്സ്4.

-mips32
തുല്യമായ -മാർച്ച്=മിപ്സ്32.

-mips32r3
തുല്യമായ -മാർച്ച്=mips32r3.

-mips32r5
തുല്യമായ -മാർച്ച്=mips32r5.

-mips32r6
തുല്യമായ -മാർച്ച്=mips32r6.

-mips64
തുല്യമായ -മാർച്ച്=മിപ്സ്64.

-mips64r2
തുല്യമായ -മാർച്ച്=mips64r2.

-mips64r3
തുല്യമായ -മാർച്ച്=mips64r3.

-mips64r5
തുല്യമായ -മാർച്ച്=mips64r5.

-mips64r6
തുല്യമായ -മാർച്ച്=mips64r6.

-mips16
-mno-mips16
MIPS16 കോഡ് സൃഷ്ടിക്കുക (ജനറേറ്റ് ചെയ്യരുത്). GCC ലക്ഷ്യമിടുന്നത് MIPS32 അല്ലെങ്കിൽ MIPS64 ആണെങ്കിൽ
ആർക്കിടെക്ചർ, ഇത് MIPS16e ASE ഉപയോഗിക്കുന്നു.

MIPS16 കോഡ് ജനറേഷൻ ഒരു പ്രവർത്തന അടിസ്ഥാനത്തിൽ നിയന്ത്രിക്കാനും കഴിയും
"mips16", "nomips16" ആട്രിബ്യൂട്ടുകൾ.

-mflip-mips16
ഇതര ഫംഗ്‌ഷനുകളിൽ MIPS16 കോഡ് സൃഷ്‌ടിക്കുക. റിഗ്രഷനാണ് ഈ ഓപ്ഷൻ നൽകിയിരിക്കുന്നത്
മിക്സഡ് MIPS16/MIPS16 ഇതര കോഡ് ജനറേഷന്റെ ടെസ്റ്റിംഗ്, അത് സാധാരണ വേണ്ടിയുള്ളതല്ല
ഉപയോക്തൃ കോഡ് കംപൈൽ ചെയ്യുന്നതിൽ ഉപയോഗിക്കുക.

-minterlink-compressed
-mno-interlink-compressed
സ്റ്റാൻഡേർഡ് (കംപ്രസ് ചെയ്യാത്ത) MIPS ISA എന്ന ലിങ്ക് ഉപയോഗിച്ച് ആ കോഡ് ആവശ്യപ്പെടുക (ആവശ്യമില്ല).
MIPS16, microMIPS കോഡ് എന്നിവയുമായി പൊരുത്തപ്പെടുന്നു, തിരിച്ചും.

ഉദാഹരണത്തിന്, സ്റ്റാൻഡേർഡ് ISA എൻകോഡിംഗ് ഉപയോഗിക്കുന്ന കോഡിന് നേരിട്ട് MIPS16-ലേക്ക് കയറാൻ കഴിയില്ല അല്ലെങ്കിൽ
microMIPS കോഡ്; അത് ഒന്നുകിൽ ഒരു കോൾ അല്ലെങ്കിൽ ഒരു പരോക്ഷ ജമ്പ് ഉപയോഗിക്കണം. -minterlink-compressed
അതിനാൽ ജമ്പിന്റെ ലക്ഷ്യം ജിസിസിക്ക് അറിയില്ലെങ്കിൽ ഡയറക്ട് ജമ്പുകൾ പ്രവർത്തനരഹിതമാക്കുന്നു
കംപ്രസ് ചെയ്തു.

-minterlink-mips16
-mno-interlink-mips16
എന്ന അപരനാമങ്ങൾ -minterlink-compressed ഒപ്പം -mno-interlink-compressed. ഈ ഓപ്ഷനുകൾ
മൈക്രോമിപ്‌സ് എഎസ്ഇക്ക് മുമ്പുള്ളതും ബാക്ക്വേർഡ് കോംപാറ്റിബിളിറ്റിക്കായി നിലനിർത്തിയതുമാണ്.

-മാബി=32
-mabi=o64
-mabi=n32
-മാബി=64
-മാബി=ഏബി
നൽകിയിരിക്കുന്ന എബിഐയ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക.

ഇഎബിഐക്ക് 32-ബിറ്റും 64-ബിറ്റ് വേരിയന്റും ഉണ്ടെന്നത് ശ്രദ്ധിക്കുക. GCC സാധാരണയായി 64-ബിറ്റ് സൃഷ്ടിക്കുന്നു
നിങ്ങൾ ഒരു 64-ബിറ്റ് ആർക്കിടെക്ചർ തിരഞ്ഞെടുക്കുമ്പോൾ കോഡ് ചെയ്യുക, എന്നാൽ നിങ്ങൾക്ക് ഉപയോഗിക്കാം -mgp32 32-ബിറ്റ് കോഡ് ലഭിക്കാൻ
പകരം.

O64 ABI-യെ കുറിച്ചുള്ള വിവരങ്ങൾക്ക്, കാണുകhttp://gcc.gnu.org/projects/mipso64-abi.html>.

GCC ഒ32 എബിഐയുടെ ഒരു വകഭേദത്തെ പിന്തുണയ്ക്കുന്നു, അതിൽ ഫ്ലോട്ടിംഗ്-പോയിന്റ് രജിസ്റ്ററുകൾ 64 ആണ്.
32 ബിറ്റുകളേക്കാൾ വീതി. ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഈ കോമ്പിനേഷൻ തിരഞ്ഞെടുക്കാം -മാബി=32 -mfp64. ഈ എ.ബി.ഐ
"mthc1", "mfhc1" നിർദ്ദേശങ്ങളെ ആശ്രയിക്കുന്നു, അതിനാൽ പിന്തുണയ്ക്കുന്നു
MIPS32R2, MIPS32R3, MIPS32R5 പ്രോസസറുകൾ.

ആർഗ്യുമെന്റുകൾക്കും റിട്ടേൺ മൂല്യങ്ങൾക്കുമുള്ള രജിസ്റ്റർ അസൈൻമെന്റുകൾ അതേപടി തുടരുന്നു, എന്നാൽ ഓരോന്നും
സ്കെയിലർ മൂല്യം 64-ബിറ്റിന്റെ ജോഡിക്ക് പകരം ഒരൊറ്റ 32-ബിറ്റ് രജിസ്റ്ററിൽ കടന്നുപോകുന്നു
രജിസ്റ്റർ ചെയ്യുന്നു. ഉദാഹരണത്തിന്, സ്കെയിലർ ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യങ്ങൾ തിരികെ നൽകുന്നു $f0 മാത്രം, എ
$f0/$f1 ജോഡി. കോൾ-സേവ് ചെയ്ത രജിസ്റ്ററുകളുടെ സെറ്റും അതേപടി തുടരുന്നു-
അക്കമിട്ട ഇരട്ട-പ്രിസിഷൻ രജിസ്റ്ററുകൾ സംരക്ഷിച്ചു.

O32 ABI-യുടെ രണ്ട് അധിക വേരിയന്റുകളിൽ നിന്ന് ഒരു പരിവർത്തനം സാധ്യമാക്കാൻ പിന്തുണയ്ക്കുന്നു
32-ബിറ്റ് മുതൽ 64-ബിറ്റ് വരെയുള്ള രജിസ്റ്ററുകൾ. ഇവയാണ് FPXX (-mfpxx) കൂടാതെ FP64A (-mfp64
-mno-odd-spreg). എല്ലാ കോഡുകളും കൃത്യമായി എക്‌സിക്യൂഷൻ ചെയ്യേണ്ടത് FPXX വിപുലീകരണം നിർബന്ധമാക്കുന്നു
32-ബിറ്റ് അല്ലെങ്കിൽ 64-ബിറ്റ് രജിസ്റ്ററുകൾ ഉപയോഗിച്ച് പ്രവർത്തിപ്പിക്കുമ്പോൾ. കോഡ് പരസ്പരം ബന്ധിപ്പിക്കാവുന്നതാണ്
FP32 അല്ലെങ്കിൽ FP64, എന്നാൽ രണ്ടും അല്ല. FP64A വിപുലീകരണം FP64 വിപുലീകരണത്തിന് സമാനമാണ്
ഒറ്റ-സംഖ്യയുള്ള ഒറ്റ-പ്രിസിഷൻ രജിസ്റ്ററുകൾ ഉപയോഗിക്കുന്നത് വിലക്കുന്നു. ഇതിൽ ഉപയോഗിക്കാം
MIPS32R5 പ്രോസസ്സറുകളിലെ FPU-കളുടെ "FRE" മോഡുമായി സംയോജിച്ച് FP32 രണ്ടും അനുവദിക്കുന്നു
കൂടാതെ FPU മോഡുകൾ മാറ്റാതെ തന്നെ ഇന്റർലിങ്ക് ചെയ്യാനും പ്രവർത്തിപ്പിക്കാനുമുള്ള FP64A കോഡ്.

-മാബിക്കൽസ്
-mno-abicalls
SVR4 ശൈലിയിലുള്ള ഡൈനാമിക് ഒബ്‌ജക്‌റ്റുകൾക്ക് അനുയോജ്യമായ കോഡ് സൃഷ്‌ടിക്കുക (ജനറേറ്റ് ചെയ്യരുത്).
-മാബിക്കൽസ് SVR4-അധിഷ്ഠിത സിസ്റ്റങ്ങളുടെ ഡിഫോൾട്ടാണ്.

-mshared
-mno-പങ്കിട്ടത്
പൂർണ്ണമായും സ്ഥാന-സ്വതന്ത്രമായ കോഡ് സൃഷ്ടിക്കുക (ജനറേറ്റ് ചെയ്യരുത്), അതിന് കഴിയും
അതിനാൽ പങ്കിട്ട ലൈബ്രറികളിലേക്ക് ലിങ്ക് ചെയ്യുക. ഈ ഓപ്ഷൻ മാത്രമേ ബാധിക്കുകയുള്ളൂ -മാബിക്കൽസ്.

എല്ലാം -മാബിക്കൽസ് ഓപ്ഷനുകൾ പരിഗണിക്കാതെ, കോഡ് പരമ്പരാഗതമായി സ്ഥാന-സ്വതന്ത്രമാണ്
പോലെ -fPIC ഒപ്പം -fpic. എന്നിരുന്നാലും, ഒരു വിപുലീകരണമെന്ന നിലയിൽ, GNU ടൂൾചെയിൻ എക്സിക്യൂട്ടബിളുകൾ അനുവദിക്കുന്നു
പ്രാദേശികമായി ബന്ധിപ്പിക്കുന്ന ചിഹ്നങ്ങൾക്കായി കേവല ആക്‌സസ്സ് ഉപയോഗിക്കുന്നതിന്. ഇതിന് ചെറിയ ജിപിയും ഉപയോഗിക്കാം
പ്രാദേശികമായി നിർവചിച്ചിരിക്കുന്ന ഫംഗ്‌ഷനുകളിലേക്ക് ഇനീഷ്യലൈസേഷൻ സീക്വൻസുകളും ഡയറക്ട് കോളുകൾ ജനറേറ്റുചെയ്യുന്നു. ഈ
മോഡ് തിരഞ്ഞെടുത്തത് -mno-പങ്കിട്ടത്.

-mno-പങ്കിട്ടത് 2.16 അല്ലെങ്കിൽ അതിലും ഉയർന്ന ബിന്യൂട്ടിലുകളെ ആശ്രയിച്ചിരിക്കുന്നു, മാത്രമല്ല അത് മാത്രം സാധ്യമാകുന്ന വസ്തുക്കളെ സൃഷ്ടിക്കുകയും ചെയ്യുന്നു
GNU ലിങ്കർ വഴി ബന്ധിപ്പിച്ചിരിക്കുന്നു. എന്നിരുന്നാലും, ഈ ഓപ്ഷൻ ഫൈനലിന്റെ എബിഐയെ ബാധിക്കില്ല
എക്സിക്യൂട്ടബിൾ; അത് മാറ്റിസ്ഥാപിക്കാവുന്ന വസ്തുക്കളുടെ എബിഐയെ മാത്രമേ ബാധിക്കുകയുള്ളൂ. ഉപയോഗിക്കുന്നത് -mno-പങ്കിട്ടത്
സാധാരണയായി എക്സിക്യൂട്ടബിളുകളെ ചെറുതും വേഗമേറിയതുമാക്കുന്നു.

-mshared സ്ഥിരസ്ഥിതിയാണ്.

-mplt
-mno-plt
സ്റ്റാറ്റിക്, ഡൈനാമിക് ലിങ്കറുകൾ PLT-കളെ പിന്തുണയ്ക്കുകയും പകർത്തുകയും ചെയ്യുന്നുവെന്ന് കരുതുക (ഊഹിക്കരുത്).
സ്ഥലംമാറ്റങ്ങൾ. ഈ ഓപ്ഷൻ മാത്രമേ ബാധിക്കുകയുള്ളൂ -mno-പങ്കിട്ടത് -മാബിക്കൽസ്. n64 ABI-യ്‌ക്ക്, ഇത്
ഓപ്ഷൻ ഇല്ലാതെ ഒരു ഫലവുമില്ല -msym32.

നിങ്ങൾക്ക് ഉണ്ടാക്കാം -mplt GCC കോൺഫിഗർ ചെയ്തുകൊണ്ട് സ്ഥിരസ്ഥിതി --with-mips-plt. സ്ഥിരസ്ഥിതി
is -mno-plt അല്ലെങ്കിൽ.

-mxgot
-mno-xgot
ആഗോള ഓഫ്‌സെറ്റ് പട്ടികയുടെ വലുപ്പത്തിലുള്ള സാധാരണ നിയന്ത്രണങ്ങൾ ഉയർത്തുക (ഉയർത്തരുത്).

GOT-ൽ നിന്ന് മൂല്യങ്ങൾ ലോഡുചെയ്യുന്നതിന് GCC സാധാരണയായി ഒരൊറ്റ നിർദ്ദേശം ഉപയോഗിക്കുന്നു. ഇത് ആയിരിക്കുമ്പോൾ
താരതമ്യേന കാര്യക്ഷമമാണ്, GOT ഏകദേശം 64k-ൽ കുറവാണെങ്കിൽ മാത്രമേ ഇത് പ്രവർത്തിക്കൂ. എന്തും
വലുത് ഇനിപ്പറയുന്നതുപോലുള്ള ഒരു പിശക് റിപ്പോർട്ടുചെയ്യുന്നതിന് ലിങ്കർ കാരണമാകുന്നു:

സ്ഥലംമാറ്റം അനുയോജ്യമാക്കുന്നതിന് വെട്ടിച്ചുരുക്കി: R_MIPS_GOT16 ഫൂബാർ

ഇത് സംഭവിക്കുകയാണെങ്കിൽ, നിങ്ങളുടെ കോഡ് വീണ്ടും കംപൈൽ ചെയ്യണം -mxgot. ഇത് വളരെ പ്രവർത്തിക്കുന്നു
വലിയ GOT-കൾ, കോഡിന്റെ കാര്യക്ഷമത കുറവാണെങ്കിലും, ഇതിന് മൂന്ന് എടുക്കും
ഒരു ആഗോള ചിഹ്നത്തിന്റെ മൂല്യം ലഭ്യമാക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ.

ചില ലിങ്കറുകൾക്ക് ഒന്നിലധികം GOT-കൾ സൃഷ്ടിക്കാൻ കഴിയുമെന്നത് ശ്രദ്ധിക്കുക. നിങ്ങൾക്ക് അത്തരമൊരു ലിങ്കർ ഉണ്ടെങ്കിൽ, നിങ്ങൾ
മാത്രം ഉപയോഗിക്കേണ്ടതുണ്ട് -mxgot ഒരൊറ്റ ഒബ്‌ജക്റ്റ് ഫയൽ 64k-ൽ കൂടുതൽ ആക്‌സസ് ചെയ്യുമ്പോൾ
GOT എൻട്രികളുടെ മൂല്യം. വളരെ കുറച്ചുപേർ മാത്രമേ ചെയ്യുന്നുള്ളൂ.

GCC പൊസിഷൻ ഇൻഡിപെൻഡന്റ് കോഡ് സൃഷ്ടിക്കുന്നില്ലെങ്കിൽ ഈ ഓപ്‌ഷനുകൾക്ക് യാതൊരു ഫലവുമില്ല.

-mgp32
പൊതു-ഉദ്ദേശ്യ രജിസ്റ്ററുകൾക്ക് 32 ബിറ്റ് വീതിയുണ്ടെന്ന് കരുതുക.

-mgp64
പൊതു-ഉദ്ദേശ്യ രജിസ്റ്ററുകൾക്ക് 64 ബിറ്റ് വീതിയുണ്ടെന്ന് കരുതുക.

-mfp32
ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററുകൾക്ക് 32 ബിറ്റ് വീതിയുണ്ടെന്ന് കരുതുക.

-mfp64
ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററുകൾക്ക് 64 ബിറ്റ് വീതിയുണ്ടെന്ന് കരുതുക.

-mfpxx
ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററുകളുടെ വീതി ഊഹിക്കരുത്.

-mhard-float
ഫ്ലോട്ടിംഗ് പോയിന്റ് കോപ്രോസസർ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക.

-msoft-float
ഫ്ലോട്ടിംഗ് പോയിന്റ് കോപ്രോസസർ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കരുത്. ഫ്ലോട്ടിംഗ് പോയിന്റ് നടപ്പിലാക്കുക
പകരം ലൈബ്രറി കോളുകൾ ഉപയോഗിച്ച് കണക്കുകൂട്ടലുകൾ.

-mno-float
തുല്യമായ -msoft-float, എന്നാൽ അധികമായി പ്രോഗ്രാം കംപൈൽ ചെയ്യുന്നു എന്ന് ഉറപ്പിച്ചു പറയുന്നു
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങളൊന്നും നടത്തുന്നില്ല. ഈ ഓപ്ഷൻ നിലവിൽ പിന്തുണയ്ക്കുന്നു
ചില ബെയർ-മെറ്റൽ MIPS കോൺഫിഗറേഷനുകൾ വഴി മാത്രം, അത് ഒരു പ്രത്യേക സെറ്റ് തിരഞ്ഞെടുക്കാം
എല്ലാ ഫ്ലോട്ടിംഗ് പോയിന്റ് പിന്തുണയും ഇല്ലാത്ത ലൈബ്രറികൾ (ഉദാഹരണത്തിന്, ഫ്ലോട്ടിംഗ്-ഉൾപ്പെടെ
പോയിന്റ് "printf" ഫോർമാറ്റുകൾ). കോഡ് സമാഹരിച്ചിട്ടുണ്ടെങ്കിൽ -mno-float ആകസ്മികമായി അടങ്ങിയിരിക്കുന്നു
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾ, ഇത് ഒരു ലിങ്ക്-ടൈം അല്ലെങ്കിൽ റൺ-ടൈം പരാജയം നേരിടാൻ സാധ്യതയുണ്ട്.

-സിംഗിൾ-ഫ്ലോട്ട്
ഫ്ലോട്ടിംഗ് പോയിന്റ് കോപ്രോസസർ ഒറ്റ-പ്രിസിഷൻ പ്രവർത്തനങ്ങളെ മാത്രമേ പിന്തുണയ്ക്കൂ എന്ന് കരുതുക.

-mdouble-float
ഫ്ലോട്ടിംഗ് പോയിന്റ് കോപ്രോസസർ ഇരട്ട-പ്രിസിഷൻ പ്രവർത്തനങ്ങളെ പിന്തുണയ്ക്കുന്നുവെന്ന് കരുതുക. ഈ
സ്ഥിരസ്ഥിതിയാണ്.

-modd-spreg
-mno-odd-spreg
o32-ന് ഒറ്റ-നമ്പറുള്ള ഒറ്റ-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ്-പോയിന്റ് രജിസ്റ്ററുകളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക
എബിഐ. ഈ രജിസ്റ്ററുകളെ പിന്തുണയ്ക്കുന്ന പ്രോസസ്സറുകൾക്കുള്ള ഡിഫോൾട്ടാണിത്.
o32 FPXX ABI ഉപയോഗിക്കുമ്പോൾ, -mno-odd-spreg സ്ഥിരസ്ഥിതിയായി സജ്ജീകരിച്ചിരിക്കുന്നു.

-mabs=2008
-mabs=പൈതൃകം
ഈ ഓപ്‌ഷനുകൾ സ്‌പെഷ്യൽ നോട്ട്-എ-നമ്പർ (NaN) IEEE 754-ന്റെ ചികിത്സയെ നിയന്ത്രിക്കുന്നു
"abs" ഉള്ള ഫ്ലോട്ടിംഗ് പോയിന്റ് ഡാറ്റ.fmt" കൂടാതെ "നെഗ്.fmt" യന്ത്ര നിർദ്ദേശങ്ങൾ.

സ്ഥിരസ്ഥിതിയായി അല്ലെങ്കിൽ എപ്പോൾ -mabs=പൈതൃകം പാരമ്പര്യ ചികിത്സ തിരഞ്ഞെടുത്തു. ഇതിൽ
ഈ നിർദ്ദേശങ്ങൾ ഗണിതമായി കണക്കാക്കുകയും ശരിയായ പ്രവർത്തനത്തിൽ ഒഴിവാക്കുകയും ചെയ്യുന്നു
ആവശ്യമാണ്, ഇൻപുട്ട് ഓപ്പറാൻറ് ഒരു NaN ആയിരിക്കാം. നിർദ്ദേശങ്ങളുടെ ദൈർഘ്യമേറിയ ശ്രേണി
ഫ്ലോട്ടിംഗ്-പോയിന്റ് ഡാറ്റയുടെ സൈൻ ബിറ്റ് മാനുവലായി കൈകാര്യം ചെയ്യുന്നില്ലെങ്കിൽ പകരം ഉപയോഗിക്കും
The -ഫിനിറ്റ്-ഗണിതം-മാത്രം ഓപ്ഷനും വ്യക്തമാക്കിയിട്ടുണ്ട്.

ദി -mabs=2008 ഓപ്ഷൻ IEEE 754-2008 ചികിത്സ തിരഞ്ഞെടുക്കുന്നു. ഈ സാഹചര്യത്തിൽ ഇവ
നിർദ്ദേശങ്ങൾ നോൺ-ഗണിതമായി കണക്കാക്കപ്പെടുന്നു, അതിനാൽ എല്ലാത്തിലും ശരിയായി പ്രവർത്തിക്കുന്നു
ഇൻപുട്ട് ഓപ്പറാൻറ് ഒരു NaN ആയ കേസുകളിൽ ഉൾപ്പെടെ. ഈ നിർദ്ദേശങ്ങൾ
അതിനാൽ എല്ലായ്‌പ്പോഴും ബന്ധപ്പെട്ട പ്രവർത്തനങ്ങൾക്ക് ഉപയോഗിക്കുന്നു.

-mnan=2008
-മ്നാൻ=പൈതൃകം
ഈ ഓപ്‌ഷനുകൾ സ്‌പെഷ്യൽ നോട്ട്-എ-നമ്പറിന്റെ (NaN) IEEE 754-ന്റെ എൻകോഡിംഗ് നിയന്ത്രിക്കുന്നു.
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഡാറ്റ.

ദി -മ്നാൻ=പൈതൃകം ഓപ്ഷൻ ലെഗസി എൻകോഡിംഗ് തിരഞ്ഞെടുക്കുന്നു. ഈ സാഹചര്യത്തിൽ ശാന്തമായ NaN-കൾ (qNaNs)
അവയുടെ പിന്നിലുള്ള പ്രാധാന്യത്തിന്റെ ആദ്യ ബിറ്റ് സൂചിപ്പിക്കുന്നു, ഫീൽഡ് 0 ആണ്
സിഗ്നലിംഗ് NaN കൾ (sNaNs) അവയുടെ പിന്നിലുള്ള പ്രാധാന്യത്തിന്റെ ആദ്യ ബിറ്റ് കൊണ്ട് സൂചിപ്പിക്കുന്നു
ഫീൽഡ് 1 ആണ്.

ദി -mnan=2008 ഓപ്ഷൻ IEEE 754-2008 എൻകോഡിംഗ് തിരഞ്ഞെടുക്കുന്നു. ഈ സാഹചര്യത്തിൽ qNaN-കൾ
അവയുടെ പിന്നിലുള്ള പ്രാധാന്യത്തിന്റെ ആദ്യ ബിറ്റ് സൂചിപ്പിക്കുന്നു, ഫീൽഡ് 1 ആണ്, അതേസമയം sNaN-കൾ
അവയുടെ പിന്നിലുള്ള പ്രാധാന്യത്തിന്റെ ആദ്യ ബിറ്റ് സൂചിപ്പിക്കുന്നു, കൂടാതെ ഫീൽഡ് 0 ആണ്.

സ്ഥിരസ്ഥിതി -മ്നാൻ=പൈതൃകം GCC കോൺഫിഗർ ചെയ്തിട്ടില്ലെങ്കിൽ --with-nan=2008.

-mllsc
-mno-llsc
ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്) ll, sc, ഒപ്പം സമന്വയം ബിൽറ്റ്-ഇൻ ആറ്റോമിക് മെമ്മറി നടപ്പിലാക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ
പ്രവർത്തനങ്ങൾ. ഒരു ഓപ്ഷനും വ്യക്തമാക്കാത്തപ്പോൾ, ലക്ഷ്യമാണെങ്കിൽ GCC നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്നു
വാസ്തുവിദ്യ അവരെ പിന്തുണയ്ക്കുന്നു.

-mllsc റൺടൈം എൻവയോൺമെന്റിന് നിർദ്ദേശങ്ങൾ അനുകരിക്കാൻ കഴിയുമെങ്കിൽ ഉപയോഗപ്രദമാണ് -mno-llsc
നിലവാരമില്ലാത്ത ISA-കൾക്കായി കംപൈൽ ചെയ്യുമ്പോൾ ഉപയോഗപ്രദമാകും. നിങ്ങൾക്ക് ഏതെങ്കിലും ഓപ്ഷൻ ഉണ്ടാക്കാം
GCC കോൺഫിഗർ ചെയ്യുന്നതിലൂടെ സ്ഥിരസ്ഥിതി --with-llsc ഒപ്പം --llsc ഇല്ലാതെ യഥാക്രമം.
--with-llsc ചില കോൺഫിഗറേഷനുകളുടെ ഡിഫോൾട്ടാണ്; ഇൻസ്റ്റലേഷൻ ഡോക്യുമെന്റേഷൻ കാണുക
വിവരങ്ങൾക്ക്.

-എംഡിഎസ്പി
-mno-dsp
MIPS DSP ASE-യുടെ റിവിഷൻ 1 ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).
ഈ ഐച്ഛികം പ്രീപ്രൊസസ്സർ മാക്രോ "__mips_dsp" നിർവചിക്കുന്നു. അതും നിർവചിക്കുന്നു
"__mips_dsp_rev" മുതൽ 1 വരെ.

-mdspr2
-mno-dspr2
MIPS DSP ASE-യുടെ റിവിഷൻ 2 ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).
ഈ ഐച്ഛികം "__mips_dsp", "__mips_dspr2" എന്നീ പ്രീപ്രൊസസ്സർ മാക്രോകളെ നിർവചിക്കുന്നു. അത്
"__mips_dsp_rev" എന്നും 2 ആയി നിർവചിക്കുന്നു.

-msmartmips
-mno-smartmips
MIPS SmartMIPS ASE ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).

- ജോഡി-അവിവാഹിതൻ
-mno-ജോഡി-ഒറ്റ
ജോടിയാക്കിയ ഒറ്റ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).
ഈ ഓപ്ഷന് ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് പിന്തുണ പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്.

-mdmx
-mno-mdmx
MIPS ഡിജിറ്റൽ മീഡിയ വിപുലീകരണ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്). ഈ ഓപ്ഷൻ മാത്രമേ കഴിയൂ
64-ബിറ്റ് കോഡ് സൃഷ്ടിക്കുമ്പോൾ ഉപയോഗിക്കുന്നു, ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് പിന്തുണ ആവശ്യമാണ്
പ്രവർത്തനക്ഷമമാക്കി.

-mips3d
-mno-mips3d
MIPS-3D ASE ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്). ഓപ്ഷൻ -mips3d ധ്വനിപ്പിക്കുന്നു - ജോഡി-അവിവാഹിതൻ.

-മിമിക്രൊമിപ്സ്
-mno-micromips
മൈക്രോമിപ്സ് കോഡ് സൃഷ്ടിക്കുക (ജനറേറ്റ് ചെയ്യരുത്).

മൈക്രോഎംഐപിഎസ് കോഡ് ജനറേഷൻ ഒരു പ്രവർത്തന അടിസ്ഥാനത്തിൽ നിയന്ത്രിക്കാനും കഴിയും
"micromips", "nomicromips" ആട്രിബ്യൂട്ടുകൾ.

-എംഎംടി
-mno-mt
MT മൾട്ടിത്രെഡിംഗ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).

-എംഎംസിയു
-mno-mcu
MIPS MCU ASE നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).

-മേവ
-mno-eva
MIPS മെച്ചപ്പെടുത്തിയ വെർച്വൽ വിലാസ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).

-mvirt
-mno-virt
MIPS വിർച്ച്വലൈസേഷൻ ആപ്ലിക്കേഷൻ നിർദ്ദിഷ്ട നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).

-mxpa
-mno-xpa
MIPS എക്സ്റ്റെൻഡഡ് ഫിസിക്കൽ അഡ്രസ് (XPA) നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).

-mlong64
"നീണ്ട" തരങ്ങൾ 64 ബിറ്റുകൾ വീതിയുള്ളതാക്കാൻ നിർബന്ധിക്കുക. കാണുക -mlong32 സ്ഥിരസ്ഥിതിയുടെ വിശദീകരണത്തിനായി
പോയിന്റർ വലുപ്പം നിർണ്ണയിക്കുന്ന രീതിയും.

-mlong32
"ലോംഗ്", "ഇന്റ്", പോയിന്റർ തരങ്ങൾ എന്നിവ 32 ബിറ്റ് വീതിയുള്ളതാക്കാൻ നിർബന്ധിക്കുക.

"int"s, "long"s, pointers എന്നിവയുടെ ഡിഫോൾട്ട് വലുപ്പം ABIയെ ആശ്രയിച്ചിരിക്കുന്നു. എല്ലാ
പിന്തുണയ്‌ക്കുന്ന എബിഐകൾ 32-ബിറ്റ് "ഇന്റ്" ഉപയോഗിക്കുന്നു. 64-ബിറ്റ് പോലെ n64 ABI 64-ബിറ്റ് "ലോംഗ്" ഉപയോഗിക്കുന്നു
ഇഎബിഐ; മറ്റുള്ളവർ 32-ബിറ്റ് "നീണ്ട" ഉപയോഗിക്കുന്നു. പോയിന്ററുകൾക്ക് "നീണ്ട" അല്ലെങ്കിൽ അതേ വലിപ്പമുണ്ട്
പൂർണ്ണസംഖ്യ രജിസ്റ്ററിന്റെ അതേ വലുപ്പം, ഏതാണ് ചെറുത്.

-msym32
-mno-sym32
തിരഞ്ഞെടുത്തത് പരിഗണിക്കാതെ തന്നെ എല്ലാ ചിഹ്നങ്ങൾക്കും 32-ബിറ്റ് മൂല്യങ്ങൾ ഉണ്ടെന്ന് കരുതുക (ഊഹിക്കരുത്)
എബിഐ. ഈ ഓപ്ഷൻ സംയോജിപ്പിച്ച് ഉപയോഗപ്രദമാണ് -മാബി=64 ഒപ്പം -mno-abicalls കാരണം
പ്രതീകാത്മക വിലാസങ്ങളിലേക്ക് ചെറുതും വേഗത്തിലുള്ളതുമായ റഫറൻസുകൾ സൃഷ്ടിക്കാൻ ജിസിസിയെ അനുവദിക്കുന്നു.

-G സംഖ്യ
ബാഹ്യമായി ദൃശ്യമാകുന്ന ഡാറ്റയുടെ നിർവചനങ്ങൾ ആ ഡാറ്റ ഇല്ലെങ്കിൽ ഒരു ചെറിയ ഡാറ്റ വിഭാഗത്തിൽ ഇടുക
എന്നതിനേക്കാൾ വലുത് സംഖ്യ ബൈറ്റുകൾ. ജിസിസിക്ക് ഡാറ്റയിലേക്ക് കൂടുതൽ കാര്യക്ഷമമായ ആക്‌സസ് സൃഷ്ടിക്കാൻ കഴിയും; കാണുക
-mgpopt വിവരങ്ങൾക്ക്.

സ്വതവേ -G ഓപ്ഷൻ കോൺഫിഗറേഷനെ ആശ്രയിച്ചിരിക്കുന്നു.

-mlocal-sdata
-mno-local-sdata
നീട്ടുക (നീട്ടരുത്). -G സ്റ്റാറ്റിക് വേരിയബിളുകൾ പോലെയുള്ള പ്രാദേശിക ഡാറ്റകളിലേക്കും പെരുമാറ്റം
സിയിൽ -mlocal-sdata എല്ലാ കോൺഫിഗറേഷനുകളുടെയും ഡിഫോൾട്ടാണ്.

ഒരു ആപ്ലിക്കേഷൻ വളരെ ചെറിയ ഡാറ്റ ഉപയോഗിക്കുന്നുണ്ടെന്ന് ലിങ്കർ പരാതിപ്പെട്ടാൽ, നിങ്ങൾക്കത് ചെയ്യാം
പ്രകടനം കുറഞ്ഞ ഭാഗങ്ങൾ പുനർനിർമ്മിക്കാൻ ശ്രമിക്കണം -mno-local-sdata. നിങ്ങൾ
ഉപയോഗിച്ച് വലിയ ലൈബ്രറികൾ നിർമ്മിക്കാനും ആഗ്രഹിച്ചേക്കാം -mno-local-sdata, അങ്ങനെ ലൈബ്രറികൾ
പ്രധാന പ്രോഗ്രാമിന് കൂടുതൽ ഇടം നൽകുക.

-മെക്സ്റ്റേൺ-സ്ഡാറ്റ
-mno-extern-sdata
എങ്കിൽ ബാഹ്യമായി നിർവചിക്കപ്പെട്ട ഡാറ്റ ഒരു ചെറിയ ഡാറ്റ വിഭാഗത്തിലാണെന്ന് കരുതുക (ഊഹിക്കരുത്).
ആ ഡാറ്റയുടെ വലുപ്പം അതിനുള്ളിലാണ് -G പരിധി. -മെക്സ്റ്റേൺ-സ്ഡാറ്റ എല്ലാവരുടെയും ഡിഫോൾട്ടാണ്
കോൺഫിഗറേഷനുകൾ.

നിങ്ങൾ ഒരു മൊഡ്യൂൾ കംപൈൽ ചെയ്യുകയാണെങ്കിൽ നാട്ടൂകാർ കൂടെ -മെക്സ്റ്റേൺ-സ്ഡാറ്റ -G സംഖ്യ -mgpopt, ഒപ്പം നാട്ടൂകാർ അവലംബങ്ങൾ എ
വേരിയബിൾ വാരം അതിലും വലുതല്ല സംഖ്യ ബൈറ്റുകൾ, നിങ്ങൾ അത് ഉറപ്പാക്കണം വാരം സ്ഥാപിച്ചിരിക്കുന്നു
ഒരു ചെറിയ ഡാറ്റ വിഭാഗത്തിൽ. എങ്കിൽ വാരം മറ്റൊരു മൊഡ്യൂൾ നിർവ്വചിക്കുന്നു, ഒന്നുകിൽ നിങ്ങൾ കംപൈൽ ചെയ്യണം
ഉയർന്ന മതിയായ ആ മൊഡ്യൂൾ -G ഒരു "വിഭാഗം" ആട്രിബ്യൂട്ട് ക്രമീകരണം അല്ലെങ്കിൽ അറ്റാച്ചുചെയ്യുക വാരം's
നിർവചനം. എങ്കിൽ വാരം സാധാരണമാണ്, നിങ്ങൾ ആപ്പിനെ ഉയർന്ന ആവശ്യവുമായി ലിങ്ക് ചെയ്യണം -G
ക്രമീകരണം.

ഈ നിയന്ത്രണങ്ങൾ തൃപ്‌തിപ്പെടുത്തുന്നതിനുള്ള ഏറ്റവും എളുപ്പ മാർഗം എല്ലാ മൊഡ്യൂളുകളും കംപൈൽ ചെയ്യുകയും ലിങ്ക് ചെയ്യുകയും ചെയ്യുക എന്നതാണ്
അതേ -G ഓപ്ഷൻ. എന്നിരുന്നാലും, പിന്തുണയ്ക്കുന്ന ഒരു ലൈബ്രറി നിർമ്മിക്കാൻ നിങ്ങൾ ആഗ്രഹിച്ചേക്കാം
വിവിധ ചെറിയ ഡാറ്റ പരിധികൾ. ഉപയോഗിച്ച് ലൈബ്രറി കംപൈൽ ചെയ്തുകൊണ്ട് നിങ്ങൾക്ക് ഇത് ചെയ്യാൻ കഴിയും
ഏറ്റവും ഉയർന്ന പിന്തുണ -G ക്രമീകരണം കൂടാതെ അധികമായി ഉപയോഗിക്കുന്നു -mno-extern-sdata നിർത്താൻ
ബാഹ്യമായി നിർവചിക്കപ്പെട്ട ഡാറ്റയെക്കുറിച്ച് അനുമാനങ്ങൾ ഉണ്ടാക്കുന്നതിൽ നിന്നുള്ള ലൈബ്രറി.

-mgpopt
-mno-gpt
ഒരു ചെറിയ ഡാറ്റയിൽ അറിയപ്പെടുന്ന ചിഹ്നങ്ങൾക്കായി ജിപി-ആപേക്ഷിക ആക്‌സസ് ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).
വിഭാഗം; കാണുക -G, -mlocal-sdata ഒപ്പം -മെക്സ്റ്റേൺ-സ്ഡാറ്റ. -mgpopt എല്ലാവരുടെയും ഡിഫോൾട്ടാണ്
കോൺഫിഗറേഷനുകൾ.

-mno-gpt $gp രജിസ്റ്ററിന് മൂല്യം ഇല്ലാത്ത സന്ദർഭങ്ങളിൽ ഇത് ഉപയോഗപ്രദമാണ്
"_gp". ഉദാഹരണത്തിന്, കോഡ് ഒരു ബൂട്ടിൽ ഉപയോഗിക്കാവുന്ന ഒരു ലൈബ്രറിയുടെ ഭാഗമാണെങ്കിൽ
മോണിറ്റർ, ബൂട്ട് മോണിറ്റർ ദിനചര്യകളെ വിളിക്കുന്ന പ്രോഗ്രാമുകൾ $gp-ൽ ഒരു അജ്ഞാത മൂല്യം കടന്നുപോകുന്നു. (ഇൻ
അത്തരം സാഹചര്യങ്ങളിൽ, സാധാരണയായി ബൂട്ട് മോണിറ്റർ തന്നെ കംപൈൽ ചെയ്യുന്നു -ജി 0.)

-mno-gpt ധ്വനിപ്പിക്കുന്നു -mno-local-sdata ഒപ്പം -mno-extern-sdata.

-membedded-data
-mno-എംബെഡഡ്-ഡാറ്റ
സാധ്യമെങ്കിൽ ആദ്യം റീഡ്-ഒൺലി ഡാറ്റ വിഭാഗത്തിലേക്ക് വേരിയബിളുകൾ അനുവദിക്കുക, തുടർന്ന് അടുത്തത്
സാധ്യമെങ്കിൽ ചെറിയ ഡാറ്റ വിഭാഗം, അല്ലാത്തപക്ഷം ഡാറ്റയിൽ. ഇത് അല്പം വേഗത കുറഞ്ഞ കോഡ് നൽകുന്നു
സ്ഥിരസ്ഥിതിയേക്കാൾ, എന്നാൽ എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ ആവശ്യമായ റാമിന്റെ അളവ് കുറയ്ക്കുന്നു, അങ്ങനെ ചെയ്യാം
ചില എംബഡഡ് സിസ്റ്റങ്ങൾക്ക് മുൻഗണന നൽകണം.

-മുനിനിറ്റ്-കോൺസ്റ്റ്-ഇൻ-റോഡാറ്റ
-mno-uninit-const-in-rodata
റീഡ്-ഒൺലി ഡാറ്റ വിഭാഗത്തിൽ ആരംഭിക്കാത്ത "const" വേരിയബിളുകൾ ഇടുക. ഈ ഓപ്ഷൻ ആണ്
സംയോജിപ്പിച്ച് മാത്രം അർത്ഥവത്തായ -membedded-data.

-mcode-readable=ക്രമീകരണം
എക്സിക്യൂട്ടബിൾ വിഭാഗങ്ങളിൽ നിന്ന് വായിക്കുന്ന കോഡ് GCC സൃഷ്ടിക്കുമോ എന്ന് വ്യക്തമാക്കുക. ഇതുണ്ട്
സാധ്യമായ മൂന്ന് ക്രമീകരണങ്ങൾ:

-mcode-readable=yes
നിർദ്ദേശങ്ങൾ എക്സിക്യൂട്ടബിൾ വിഭാഗങ്ങൾ സ്വതന്ത്രമായി ആക്സസ് ചെയ്യാം. ഇതാണ് സ്ഥിരസ്ഥിതി ക്രമീകരണം.

-mcode-readable=pcrel
MIPS16 PC-ആപേക്ഷിക ലോഡ് നിർദ്ദേശങ്ങൾക്ക് എക്സിക്യൂട്ടബിൾ വിഭാഗങ്ങൾ ആക്സസ് ചെയ്യാൻ കഴിയും, എന്നാൽ മറ്റുള്ളവ
നിർദ്ദേശങ്ങൾ അങ്ങനെ ചെയ്യാൻ പാടില്ല. 4KSc, 4KSd പ്രോസസറുകളിൽ ഈ ഓപ്ഷൻ ഉപയോഗപ്രദമാണ്
കോഡ് TLB-കൾക്ക് റീഡ് ഇൻഹിബിറ്റ് ബിറ്റ് സെറ്റ് ഉള്ളപ്പോൾ. പ്രോസസ്സറുകളിലും ഇത് ഉപയോഗപ്രദമാണ്
ഒരു ഡ്യുവൽ ഇൻസ്ട്രക്ഷൻ/ഡാറ്റ SRAM ഇന്റർഫേസ് ഉള്ളതായി കോൺഫിഗർ ചെയ്യാൻ കഴിയും, അത്,
M4K പോലെ, PC-ആപേക്ഷിക ലോഡുകളെ ഇൻസ്ട്രക്ഷൻ RAM-ലേക്ക് സ്വയമേവ റീഡയറക്ട് ചെയ്യുന്നു.

-mcode-readable=No
നിർദ്ദേശങ്ങൾ എക്സിക്യൂട്ടബിൾ വിഭാഗങ്ങൾ ആക്സസ് ചെയ്യാൻ പാടില്ല. ഈ ഓപ്ഷൻ ഉപയോഗപ്രദമാകും
ഡ്യുവൽ ഇൻസ്ട്രക്ഷൻ/ഡാറ്റ SRAM ഇന്റർഫേസ് ഉള്ളതായി കോൺഫിഗർ ചെയ്‌തിരിക്കുന്ന ടാർഗെറ്റുകൾ
(M4K-ൽ നിന്ന് വ്യത്യസ്തമായി) PC-ആപേക്ഷിക ലോഡുകളെ സ്വയമേവ റീഡയറക്ട് ചെയ്യരുത്
നിർദ്ദേശം റാം.

-msplit-വിലാസങ്ങൾ
-mno-split-വിലാസങ്ങൾ
"%hi()", "%lo()" അസംബ്ലർ റീലോക്കേഷൻ ഓപ്പറേറ്റർമാരുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക (അപ്രാപ്തമാക്കുക). ഈ
ഓപ്ഷൻ അസാധുവാക്കിയിരിക്കുന്നു -എക്‌സ്‌പ്ലിസിറ്റ്-റെലോക്കുകൾ എന്നാൽ പിന്നാക്കക്കാർക്കായി നിലനിർത്തുന്നു
അനുയോജ്യത.

-എക്‌സ്‌പ്ലിസിറ്റ്-റെലോക്കുകൾ
-mno-വ്യക്തമായ-relocks
പ്രതീകാത്മക വിലാസങ്ങൾ കൈകാര്യം ചെയ്യുമ്പോൾ അസംബ്ലർ റീലോക്കേഷൻ ഓപ്പറേറ്റർമാരെ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).
ബദൽ, തിരഞ്ഞെടുത്തത് -mno-വ്യക്തമായ-relocks, പകരം അസംബ്ലർ മാക്രോകൾ ഉപയോഗിക്കുക എന്നതാണ്.

-എക്‌സ്‌പ്ലിസിറ്റ്-റെലോക്കുകൾ ഒരു അസംബ്ലർ ഉപയോഗിക്കുന്നതിന് GCC കോൺഫിഗർ ചെയ്തിട്ടുണ്ടെങ്കിൽ അത് ഡിഫോൾട്ടാണ്
റീലോക്കേഷൻ ഓപ്പറേറ്റർമാരെ പിന്തുണയ്ക്കുന്നു.

-mcheck-zero-division
-mno-check-zero-division
പൂജ്യം കൊണ്ട് പൂർണ്ണസംഖ്യ വിഭജനത്തിൽ ട്രാപ്പ് ചെയ്യുക (ട്രാപ്പ് ചെയ്യരുത്).

സ്ഥിരസ്ഥിതി -mcheck-zero-division.

-mdivide-ട്രാപ്പുകൾ
-mdivide-ബ്രേക്കുകൾ
MIPS സിസ്റ്റങ്ങൾ ഒരു സോപാധിക കെണി അല്ലെങ്കിൽ a സൃഷ്ടിച്ചുകൊണ്ട് പൂജ്യം കൊണ്ട് വിഭജനം പരിശോധിക്കുന്നു
ബ്രേക്ക് നിർദ്ദേശം. ട്രാപ്പുകൾ ഉപയോഗിക്കുന്നത് ചെറിയ കോഡിന് കാരണമാകുന്നു, പക്ഷേ MIPS-ൽ മാത്രമേ പിന്തുണയ്ക്കൂ
II ഉം പിന്നീടും. കൂടാതെ, ലിനക്സ് കേർണലിന്റെ ചില പതിപ്പുകളിൽ ട്രാപ്പ് തടയുന്ന ഒരു ബഗ് ഉണ്ട്
ശരിയായ സിഗ്നൽ സൃഷ്ടിക്കുന്നതിൽ നിന്ന് ("SIGFPE"). ഉപയോഗിക്കുക -mdivide-ട്രാപ്പുകൾ സോപാധികമായി അനുവദിക്കുന്നതിന്
അവരെ പിന്തുണയ്ക്കുന്ന ആർക്കിടെക്ചറുകളിലെ കെണികൾ -mdivide-ബ്രേക്കുകൾ ഉപയോഗം നിർബന്ധിക്കാൻ
ഇടവേളകൾ.

സ്ഥിരസ്ഥിതി സാധാരണമാണ് -mdivide-ട്രാപ്പുകൾ, എന്നാൽ ഇത് കോൺഫിഗർ ചെയ്യുന്ന സമയത്ത് അസാധുവാക്കാവുന്നതാണ്
ഉപയോഗിച്ച് --with-divide=breaks. വിഭജിച്ച് പൂജ്യം ചെക്കുകൾ ഉപയോഗിച്ച് പൂർണ്ണമായും പ്രവർത്തനരഹിതമാക്കാം
-mno-check-zero-division.

-mmemcpy
-mno-memcpy
നിസ്സാരമല്ലാത്ത ബ്ലോക്ക് നീക്കങ്ങൾക്കായി "memcpy" ഉപയോഗിക്കുന്നത് നിർബന്ധിക്കുക (നിർബന്ധിക്കരുത്). സ്ഥിരസ്ഥിതിയാണ്
-mno-memcpy, ഏറ്റവും സ്ഥിരമായ വലിപ്പത്തിലുള്ള പകർപ്പുകൾ ഇൻലൈൻ ചെയ്യാൻ GCCയെ ഇത് അനുവദിക്കുന്നു.

-mlong-കോളുകൾ
-mno-ലോംഗ്-കോളുകൾ
"ജൽ" നിർദ്ദേശത്തിന്റെ ഉപയോഗം പ്രവർത്തനരഹിതമാക്കുക (പ്രവർത്തനരഹിതമാക്കരുത്). "ജൽ" ഉപയോഗിച്ച് കോളിംഗ് ഫംഗ്‌ഷനുകൾ
കൂടുതൽ കാര്യക്ഷമമാണ് എന്നാൽ വിളിക്കുന്നയാളും വിളിക്കുന്നയാളും ഒരേ 256 മെഗാബൈറ്റിൽ ആയിരിക്കണം
സെഗ്മെന്റ്.

ഈ ഓപ്‌ഷൻ abicals കോഡിനെ ബാധിക്കില്ല. സ്ഥിരസ്ഥിതിയാണ് -mno-ലോംഗ്-കോളുകൾ.

-മ്മദ്
-mno-ഭ്രാന്തൻ
"mad", "madu", "mul" നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക (പ്രവർത്തനരഹിതമാക്കുക)
R4650 ISA.

-മിമാദ്
-mno-imadd
"madd", "msub" പൂർണ്ണസംഖ്യ നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക (അപ്രാപ്തമാക്കുക). സ്ഥിരസ്ഥിതിയാണ്
-മിമാദ് 74k ഒഴികെയുള്ള "madd", "msub" എന്നിവയെ പിന്തുണയ്ക്കുന്ന ആർക്കിടെക്ചറുകളിൽ
ആർക്കിടെക്ചർ സ്ലോ കോഡ് സൃഷ്ടിക്കുന്നതായി കണ്ടെത്തി.

-mfused-madd
-mno-fused-madd
ഫ്ലോട്ടിംഗ്-പോയിന്റ് മൾട്ടിപ്ലൈ-അക്യുമുലേറ്റ് നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക (അപ്രാപ്തമാക്കുക).
ലഭ്യമാണ്. സ്ഥിരസ്ഥിതിയാണ് -mfused-madd.

R8000 CPU-ൽ മൾട്ടിപ്ലൈ-അക്മുലേറ്റ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുമ്പോൾ, ഇന്റർമീഡിയറ്റ്
ഉൽപ്പന്നം അനന്തമായ കൃത്യതയോടെ കണക്കാക്കുന്നു, FCSR ഫ്ലഷിന് വിധേയമല്ല
സീറോ ബിറ്റ്. ചില സാഹചര്യങ്ങളിൽ ഇത് അഭികാമ്യമല്ലായിരിക്കാം. മറ്റ് പ്രോസസ്സറുകളിൽ
ഫലം സംഖ്യാപരമായി, പ്രത്യേക ഗുണനം ഉപയോഗിച്ച് തുല്യമായ കണക്കുകൂട്ടലിനോട് സാമ്യമുള്ളതാണ്,
നിർദ്ദേശങ്ങൾ ചേർക്കുക, കുറയ്ക്കുക, നിരാകരിക്കുക.

-nocpp
ഉപയോക്തൃ അസംബ്ലർ ഫയലുകളിൽ അതിന്റെ പ്രീപ്രൊസസ്സർ പ്രവർത്തിപ്പിക്കരുതെന്ന് MIPS അസംബ്ലറോട് പറയുക (ഒരു കൂടെ
.s സഫിക്സ്) അവയെ കൂട്ടിച്ചേർക്കുമ്പോൾ.

-mfix-24k
-mno-fix-24k
24K E48 (റീഫിൽ ചെയ്യുമ്പോൾ സ്റ്റോറുകളിലെ ഡാറ്റ നഷ്‌ടപ്പെട്ടു) തെറ്റുതിരുത്തി പ്രവർത്തിക്കുക. പരിഹാരമാർഗ്ഗങ്ങൾ
ജിസിസിയല്ല, അസംബ്ലർ നടപ്പിലാക്കുന്നു.

-mfix-r4000
-mno-fix-r4000
ചില R4000 CPU പിശകുകൾക്ക് ചുറ്റും പ്രവർത്തിക്കുക:

- ഒരു ഡബിൾ വേഡ് അല്ലെങ്കിൽ വേരിയബിൾ ഷിഫ്റ്റ് എക്സിക്യൂട്ട് ചെയ്താൽ തെറ്റായ ഫലം നൽകിയേക്കാം
ഒരു പൂർണ്ണസംഖ്യ വിഭജനം ആരംഭിച്ച ഉടൻ.

- ഒരു ഡബിൾ വേഡ് അല്ലെങ്കിൽ വേരിയബിൾ ഷിഫ്റ്റ് എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ തെറ്റായ ഫലം നൽകിയേക്കാം
ഒരു പൂർണ്ണസംഖ്യ ഗുണനം പുരോഗമിക്കുന്നു.

- a യുടെ കാലതാമസം സ്ലോട്ടിൽ ആരംഭിച്ചാൽ ഒരു പൂർണ്ണസംഖ്യ വിഭജനം തെറ്റായ ഫലം നൽകിയേക്കാം
എടുത്ത ശാഖ അല്ലെങ്കിൽ ഒരു ജമ്പ്.

-mfix-r4400
-mno-fix-r4400
ചില R4400 CPU പിശകുകൾക്ക് ചുറ്റും പ്രവർത്തിക്കുക:

- ഒരു ഡബിൾ വേഡ് അല്ലെങ്കിൽ വേരിയബിൾ ഷിഫ്റ്റ് എക്സിക്യൂട്ട് ചെയ്താൽ തെറ്റായ ഫലം നൽകിയേക്കാം
ഒരു പൂർണ്ണസംഖ്യ വിഭജനം ആരംഭിച്ച ഉടൻ.

-mfix-r10000
-mno-fix-r10000
ചില R10000 പിശകുകൾക്ക് ചുറ്റും പ്രവർത്തിക്കുക:

- "ll"/"sc" സീക്വൻസുകൾ 3.0-ന് മുമ്പുള്ള പുനരവലോകനങ്ങളിൽ ആറ്റോമിക് ആയി പ്രവർത്തിച്ചേക്കില്ല. അവര് ചിലപ്പോള്
2.6-ഉം അതിനുമുമ്പുള്ള പുനരവലോകനങ്ങളും തടസ്സപ്പെട്ടു.

ടാർഗെറ്റ് ആർക്കിടെക്ചർ ബ്രാഞ്ച് സാധ്യതയെ പിന്തുണയ്ക്കുന്നുവെങ്കിൽ മാത്രമേ ഈ ഓപ്ഷൻ ഉപയോഗിക്കാൻ കഴിയൂ
നിർദ്ദേശങ്ങൾ. -mfix-r10000 എപ്പോൾ ആണ് സ്ഥിരസ്ഥിതി -മാർച്ച്=r10000 ഉപയോഗിക്കുന്നു; -mno-fix-r10000
അല്ലെങ്കിൽ ഡിഫോൾട്ടാണ്.

-mfix-rm7000
-mno-fix-rm7000
RM7000 "dmult"/"dmultu" പിശകിന് ചുറ്റും പ്രവർത്തിക്കുക. വഴിയാണ് പരിഹാര നടപടികൾ നടപ്പിലാക്കുന്നത്
ജിസിസിയെക്കാൾ അസംബ്ലർ.

-mfix-vr4120
-mno-fix-vr4120
ചില VR4120 പിശകുകൾക്ക് ചുറ്റും പ്രവർത്തിക്കുക:

- "dmultu" എല്ലായ്പ്പോഴും ശരിയായ ഫലം നൽകുന്നില്ല.

- "div", "ddiv" എന്നിവ ഓപ്പറണ്ടുകളിൽ ഒന്നാണെങ്കിൽ എല്ലായ്പ്പോഴും ശരിയായ ഫലം നൽകുന്നില്ല
നെഗറ്റീവ് ആണ്.

ഡിവിഷൻ പിഴവിനുള്ള പരിഹാരമാർഗങ്ങൾ പ്രത്യേക പ്രവർത്തനങ്ങളെ ആശ്രയിക്കുന്നു libgcc.a. അടുത്ത്
നിലവിൽ, ഈ ഫംഗ്‌ഷനുകൾ "mips64vr*-elf" കോൺഫിഗറേഷനുകൾ മാത്രമാണ് നൽകുന്നത്.

മറ്റ് VR4120 പിശകുകൾക്ക് ചില ജോഡികൾക്കിടയിൽ ഒരു NOP ചേർക്കേണ്ടതുണ്ട്
നിർദ്ദേശങ്ങൾ. ഈ പിഴവുകൾ കൈകാര്യം ചെയ്യുന്നത് അസംബ്ലർ ആണ്, GCC തന്നെയല്ല.

-mfix-vr4130
VR4130 "mflo"/"mfhi" പിശകിന് ചുറ്റും പ്രവർത്തിക്കുക. വഴിയാണ് പരിഹാര നടപടികൾ നടപ്പിലാക്കുന്നത്
GCC മുഖേനയല്ല അസംബ്ലർ, എന്നിരുന്നാലും GCC "mflo", "mfhi" എന്നിവ ഉപയോഗിക്കുന്നത് ഒഴിവാക്കുന്നു
പകരം VR4130 "macc", "macchi", "dmacc", "dmacchi" നിർദ്ദേശങ്ങൾ ലഭ്യമാണ്.

-mfix-sb1
-mno-fix-sb1
ചില SB-1 CPU കോർ എററ്റയ്ക്ക് ചുറ്റും പ്രവർത്തിക്കുക. (ഈ പതാക നിലവിൽ SB-1 ന് ചുറ്റും പ്രവർത്തിക്കുന്നു
പുനരവലോകനം 2 "F1", "F2" ഫ്ലോട്ടിംഗ് പോയിന്റ് പിശക്.)

-mr10k-cache-barrier=ക്രമീകരണം
പാർശ്വഫലങ്ങൾ ഒഴിവാക്കാൻ GCC കാഷെ ബാരിയറുകൾ ചേർക്കണമോ എന്ന് വ്യക്തമാക്കുക
R10K പ്രൊസസറുകളെ കുറിച്ചുള്ള ഊഹാപോഹങ്ങൾ.

പല പ്രൊസസറുകളിലും പൊതുവായി, ഒരു സോപാധികമായ ഫലം പ്രവചിക്കാൻ R10K ശ്രമിക്കുന്നു
ബ്രാഞ്ച്, "എടുത്ത" ബ്രാഞ്ചിൽ നിന്നുള്ള നിർദ്ദേശങ്ങൾ ഊഹക്കച്ചവടത്തിൽ നടപ്പിലാക്കുന്നു. അത് പിന്നീട്
പ്രവചിച്ച ഫലം തെറ്റാണെങ്കിൽ ഈ നിർദ്ദേശങ്ങൾ നിർത്തലാക്കുന്നു. എന്നിരുന്നാലും, R10K-യിൽ,
ഉപേക്ഷിക്കപ്പെട്ട നിർദ്ദേശങ്ങൾ പോലും പാർശ്വഫലങ്ങൾ ഉണ്ടാക്കാം.

ഈ പ്രശ്നം കേർണൽ സ്റ്റോറുകളെ മാത്രമേ ബാധിക്കുകയുള്ളൂ, സിസ്റ്റത്തെ ആശ്രയിച്ച്, കേർണൽ ലോഡുകൾ.
ഒരു ഉദാഹരണമായി, ഊഹക്കച്ചവടത്തിൽ നടപ്പിലാക്കിയ സ്റ്റോർ ടാർഗെറ്റ് മെമ്മറി കാഷിലേക്ക് ലോഡ് ചെയ്തേക്കാം
സ്റ്റോർ തന്നെ പിന്നീട് നിർത്തലാക്കിയാലും, കാഷെ ലൈൻ വൃത്തികെട്ടതായി അടയാളപ്പെടുത്തുക. ഒരു ഡിഎംഎ ആണെങ്കിൽ
ഓപ്പറേഷൻ "ഡേർട്ടി" ലൈൻ ഫ്ലഷ് ചെയ്യുന്നതിന് മുമ്പ് മെമ്മറിയുടെ അതേ ഏരിയയിലേക്ക് എഴുതുന്നു
കാഷെ ചെയ്ത ഡാറ്റ DMA-ed ഡാറ്റയെ പുനരാലേഖനം ചെയ്യുന്നു. പൂർണ്ണമായി R10K പ്രൊസസർ മാനുവൽ കാണുക
മറ്റ് സാധ്യമായ പ്രശ്നങ്ങൾ ഉൾപ്പെടെയുള്ള വിവരണം.

ഓരോ മെമ്മറി ആക്‌സസ്സിനും മുമ്പായി കാഷെ ബാരിയർ നിർദ്ദേശങ്ങൾ ചേർക്കുക എന്നതാണ് ഒരു പരിഹാരം
ഊഹക്കച്ചവടത്തിൽ നടപ്പിലാക്കിയേക്കാം, ഗർഭം അലസിപ്പിച്ചാലും പാർശ്വഫലങ്ങൾ ഉണ്ടായേക്കാം.
-mr10k-cache-barrier=ക്രമീകരണം ജിസിസിയുടെ ഈ പ്രതിവിധി നടപ്പിലാക്കുന്നത് നിയന്ത്രിക്കുന്നു. അത്
ഇനിപ്പറയുന്ന പ്രദേശങ്ങളിലെ ഏതെങ്കിലും ബൈറ്റിലേക്കുള്ള ആക്‌സസ് നിർത്തലാക്കിയതിന് സൈഡ് ഇല്ലെന്ന് അനുമാനിക്കുന്നു
ഇഫക്റ്റുകൾ:

1. നിലവിലെ ഫംഗ്‌ഷന്റെ സ്റ്റാക്ക് ഫ്രെയിം ഉൾക്കൊള്ളുന്ന മെമ്മറി;

2. ഒരു ഇൻകമിംഗ് സ്റ്റാക്ക് ആർഗ്യുമെന്റ് ഉൾക്കൊള്ളുന്ന മെമ്മറി;

3. ലിങ്ക്-ടൈം-കോൺസ്റ്റന്റ് വിലാസമുള്ള ഒരു ഒബ്‌ജക്റ്റ് കൈവശപ്പെടുത്തിയ മെമ്മറി.

ഈ പ്രദേശങ്ങളിലേക്കുള്ള ഊഹക്കച്ചവട പ്രവേശനം ഉറപ്പാക്കേണ്ടത് കേർണലിന്റെ ഉത്തരവാദിത്തമാണ്
തീർച്ചയായും സുരക്ഷിതമാണ്.

ഇൻപുട്ട് പ്രോഗ്രാമിൽ ഇനിപ്പറയുന്നതുപോലുള്ള ഒരു ഫംഗ്ഷൻ ഡിക്ലറേഷൻ അടങ്ങിയിട്ടുണ്ടെങ്കിൽ:

ശൂന്യമായ foo (ശൂന്യം);

അപ്പോൾ "foo" നടപ്പിലാക്കുന്നത് "j foo", "jal foo" എന്നിവ നടപ്പിലാക്കാൻ അനുവദിക്കണം.
ഊഹക്കച്ചവടത്തിൽ. GCC സ്വയം സമാഹരിക്കുന്ന ഫംഗ്‌ഷനുകൾക്കുള്ള ഈ നിയന്ത്രണത്തെ മാനിക്കുന്നു. അത്
നോൺ-ജിസിസി ഫംഗ്‌ഷനുകളും (കൈകൊണ്ട് എഴുതിയ അസംബ്ലി കോഡ് പോലുള്ളവ) ഇത് ചെയ്യുമെന്ന് പ്രതീക്ഷിക്കുന്നു.

ഓപ്ഷന് മൂന്ന് രൂപങ്ങളുണ്ട്:

-mr10k-cache-barrier=load-store
ഊഹക്കച്ചവടത്തിൽ എക്‌സിക്യൂട്ട് ചെയ്‌തേക്കാവുന്ന ഒരു ലോഡിന് അല്ലെങ്കിൽ സ്റ്റോറിന് മുമ്പ് ഒരു കാഷെ ബാരിയർ ചേർക്കുക
ഗർഭച്ഛിദ്രം ചെയ്താലും പാർശ്വഫലങ്ങൾ ഉണ്ടായേക്കാം.

-mr10k-cache-barrier=സ്റ്റോർ
ഊഹക്കച്ചവടത്തിൽ എക്‌സിക്യൂട്ട് ചെയ്‌തേക്കാവുന്ന ഒരു കാഷെ ബാരിയർ ഒരു സ്‌റ്റോറിന് മുമ്പായി ചേർക്കുക
അബോർഷൻ ചെയ്താലും പാർശ്വഫലങ്ങൾ ഉണ്ടായേക്കാം.

-mr10k-cache-barrier=ഒന്നുമില്ല
കാഷെ ബാരിയറുകൾ ചേർക്കുന്നത് പ്രവർത്തനരഹിതമാക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി ക്രമീകരണം.

-mflush-func=ഫങ്ക്
-mno-flush-func
ഐ, ഡി കാഷെകൾ ഫ്ലഷ് ചെയ്യുന്നതിനോ അല്ലെങ്കിൽ അത്തരത്തിലുള്ളവ വിളിക്കാതിരിക്കുന്നതിനോ വിളിക്കുന്നതിനുള്ള പ്രവർത്തനം വ്യക്തമാക്കുന്നു
പ്രവർത്തനം. വിളിക്കുകയാണെങ്കിൽ, ഫംഗ്‌ഷൻ പൊതുവായ അതേ ആർഗ്യുമെന്റുകൾ എടുക്കണം
"_flush_func", അതായത്, കാഷെ ഉള്ള മെമ്മറി ശ്രേണിയുടെ വിലാസം
ഫ്ലഷ്, മെമ്മറി ശ്രേണിയുടെ വലിപ്പം, നമ്പർ 3 (രണ്ട് കാഷെകളും ഫ്ലഷ് ചെയ്യാൻ). ദി
ഡിഫോൾട്ട് ജിസിസി കോൺഫിഗർ ചെയ്ത ടാർഗെറ്റിനെ ആശ്രയിച്ചിരിക്കുന്നു, പക്ഷേ സാധാരണയായി ഒന്നുകിൽ
"_flush_func" അല്ലെങ്കിൽ "__cpu_flush".

ബ്രാഞ്ച്-ചെലവ്=സംഖ്യ
ശാഖകളുടെ വില ഏകദേശം സജ്ജമാക്കുക സംഖ്യ "ലളിതമായ" നിർദ്ദേശങ്ങൾ. ഈ ചെലവ് ഒരു മാത്രം
ഹ്യൂറിസ്റ്റിക്, റിലീസുകളിലുടനീളം സ്ഥിരമായ ഫലങ്ങൾ നൽകുമെന്ന് ഉറപ്പില്ല. ഒരു പൂജ്യം
ചെലവ് അനാവശ്യമായി ഡിഫോൾട്ട് തിരഞ്ഞെടുക്കുന്നു, അത് അടിസ്ഥാനമാക്കിയുള്ളതാണ് -mtune ക്രമീകരണം.

- ശാഖ-സാധ്യത
-mno-ശാഖ-സാധ്യത
എന്നതിനായുള്ള ഡിഫോൾട്ട് പരിഗണിക്കാതെ തന്നെ, ബ്രാഞ്ച് സാധ്യതയുള്ള നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുകയോ പ്രവർത്തനരഹിതമാക്കുകയോ ചെയ്യുക
തിരഞ്ഞെടുത്ത വാസ്തുവിദ്യ. ഡിഫോൾട്ടായി, എങ്കിൽ ബ്രാഞ്ച് സാധ്യതയുള്ള നിർദ്ദേശങ്ങൾ ജനറേറ്റ് ചെയ്തേക്കാം
തിരഞ്ഞെടുത്ത വാസ്തുവിദ്യ അവരെ പിന്തുണയ്ക്കുന്നു. ഒരു അപവാദം MIPS32 നും
ആ ആർക്കിടെക്ചറുകൾ നടപ്പിലാക്കുന്ന MIPS64 ആർക്കിടെക്ചറുകളും പ്രോസസ്സറുകളും; അവയ്ക്ക് വേണ്ടി,
ബ്രാഞ്ച് സാധ്യതയുള്ള നിർദ്ദേശങ്ങൾ ഡിഫോൾട്ടായി സൃഷ്ടിക്കപ്പെടുന്നില്ല കാരണം MIPS32 ഉം
MIPS64 ആർക്കിടെക്ചറുകൾ അവയുടെ ഉപയോഗത്തെ പ്രത്യേകമായി നിരാകരിക്കുന്നു.

-mfp-ഒഴിവാക്കലുകൾ
-mno-fp-exceptions
FP ഒഴിവാക്കലുകൾ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടോ എന്ന് വ്യക്തമാക്കുന്നു. ഇത് FP നിർദ്ദേശങ്ങൾ എങ്ങനെയാണെന്നതിനെ ബാധിക്കുന്നു
ചില പ്രോസസ്സറുകൾക്കായി ഷെഡ്യൂൾ ചെയ്തിരിക്കുന്നു. എഫ്പി ഒഴിവാക്കലുകൾ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു എന്നതാണ് സ്ഥിരസ്ഥിതി.

ഉദാഹരണത്തിന്, SB-1-ൽ, FP ഒഴിവാക്കലുകൾ പ്രവർത്തനരഹിതമാക്കിയിട്ടുണ്ടെങ്കിൽ, ഞങ്ങൾ 64-ബിറ്റ് പുറപ്പെടുവിക്കുന്നു
കോഡ്, അപ്പോൾ നമുക്ക് രണ്ട് FP പൈപ്പുകളും ഉപയോഗിക്കാം. അല്ലെങ്കിൽ, നമുക്ക് ഒരു FP പൈപ്പ് മാത്രമേ ഉപയോഗിക്കാൻ കഴിയൂ.

-mvr4130-അലൈൻ
-mno-vr4130-align
VR4130 പൈപ്പ്‌ലൈൻ ടു-വേ സൂപ്പർസ്‌കലാർ ആണ്, എന്നാൽ രണ്ട് നിർദ്ദേശങ്ങൾ മാത്രമേ നൽകാൻ കഴിയൂ
ആദ്യത്തേത് 8-ബൈറ്റ് വിന്യസിക്കുകയാണെങ്കിൽ ഒരുമിച്ച്. ഈ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, GCC വിന്യസിക്കുന്നു
സമാന്തരമായി നടപ്പിലാക്കണമെന്ന് അത് കരുതുന്ന ജോഡി നിർദ്ദേശങ്ങൾ.

VR4130-നായി ഒപ്റ്റിമൈസ് ചെയ്യുമ്പോൾ മാത്രമേ ഈ ഓപ്‌ഷൻ ഫലമുള്ളൂ. ഇത് സാധാരണയായി കോഡ് ഉണ്ടാക്കുന്നു
വേഗത്തിൽ, പക്ഷേ അത് വലുതാക്കാനുള്ള ചെലവിൽ. ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
ഒപ്റ്റിമൈസേഷൻ ലെവൽ -O3.

-എംസിൻസി
-mno-synci
അതിനെ പിന്തുണയ്ക്കുന്ന ആർക്കിടെക്ചറുകളിൽ "സിൻസി" നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക (അപ്രാപ്തമാക്കുക).
"__builtin___clear_cache" ആയിരിക്കുമ്പോൾ "synci" നിർദ്ദേശങ്ങൾ (പ്രാപ്തമാക്കിയിട്ടുണ്ടെങ്കിൽ) ജനറേറ്റുചെയ്യുന്നു
സമാഹരിച്ചത്.

ഈ ഓപ്ഷൻ ഡിഫോൾട്ടാണ് -mno-synci, എന്നാൽ കോൺഫിഗർ ചെയ്യുന്നതിലൂടെ ഡിഫോൾട്ട് അസാധുവാക്കാവുന്നതാണ്
കൂടെ ജി.സി.സി --വിത്ത്-സിൻസി.

സിംഗിൾ പ്രൊസസർ സിസ്റ്റങ്ങൾക്കായി കോഡ് കംപൈൽ ചെയ്യുമ്പോൾ, "സിൻസി" ഉപയോഗിക്കുന്നത് പൊതുവെ സുരക്ഷിതമാണ്.
എന്നിരുന്നാലും, പല മൾട്ടി-കോർ (SMP) സിസ്റ്റങ്ങളിലും, ഇത് നിർദ്ദേശത്തെ അസാധുവാക്കുന്നില്ല
എല്ലാ കോറുകളിലും കാഷെ ചെയ്യുന്നു, അത് നിർവചിക്കാത്ത സ്വഭാവത്തിലേക്ക് നയിച്ചേക്കാം.

-mrelax-pic-കോളുകൾ
-mno-relax-pic-കോളുകൾ
രജിസ്റ്റർ $25 വഴി സാധാരണയായി അയക്കുന്ന PIC കോളുകൾ നേരിട്ടുള്ള കോളുകളാക്കി മാറ്റാൻ ശ്രമിക്കുക.
ലിങ്ക് ചെയ്യുന്നയാൾക്ക് ലിങ്ക്-ടൈമിലും എങ്കിലും ലക്ഷ്യസ്ഥാനം പരിഹരിക്കാൻ കഴിയുമെങ്കിൽ മാത്രമേ ഇത് സാധ്യമാകൂ
നേരിട്ടുള്ള കോളിനുള്ള പരിധിയിലാണ് ലക്ഷ്യസ്ഥാനം.

-mrelax-pic-കോളുകൾ ഒരു അസംബ്ലറും എയും ഉപയോഗിക്കുന്നതിനായി GCC കോൺഫിഗർ ചെയ്തിട്ടുണ്ടെങ്കിൽ സ്ഥിരസ്ഥിതിയാണ്
".reloc" അസംബ്ലി നിർദ്ദേശത്തെ പിന്തുണയ്ക്കുന്ന ലിങ്കർ ഒപ്പം -എക്‌സ്‌പ്ലിസിറ്റ്-റെലോക്കുകൾ ഉണ്ട്
ഫലം. കൂടെ -mno-വ്യക്തമായ-relocks, ഈ ഒപ്റ്റിമൈസേഷൻ നടപ്പിലാക്കാൻ കഴിയും
കംപൈലറിന്റെ സഹായമില്ലാതെ അസംബ്ലറും ലിങ്കറും മാത്രം.

-mmcount-ra-വിലാസം
-mno-mcount-ra-വിലാസം
കോളിംഗ് ഫംഗ്‌ഷന്റെ റിട്ടേൺ പരിഷ്‌ക്കരിക്കാൻ "_mcount"-നെ അനുവദിക്കുന്ന കോഡ് എമിറ്റ് (എമിറ്റ് ചെയ്യരുത്)
വിലാസം. പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ഈ ഓപ്‌ഷൻ സാധാരണ "_mcount" ഇന്റർഫേസ് പുതിയതിനൊപ്പം വിപുലീകരിക്കുന്നു
ra-വിലാസം "intptr_t *" എന്ന തരമുള്ള പരാമീറ്റർ, $12 രജിസ്റ്ററിൽ പാസ്സാക്കുന്നു.
"_mcount" എന്നതിന് ഇനിപ്പറയുന്നവ രണ്ടും ചെയ്തുകൊണ്ട് മടക്ക വിലാസം പരിഷ്കരിക്കാനാകും:

* $31 രജിസ്റ്ററിൽ പുതിയ വിലാസം തിരികെ നൽകുന്നു.

* പുതിയ വിലാസം "* എന്നതിൽ സംഭരിക്കുന്നുra-വിലാസം", എങ്കിൽ ra-വിലാസം ശൂന്യമാണ്.

സ്ഥിരസ്ഥിതി -mno-mcount-ra-വിലാസം.

MMIX ഓപ്ഷനുകൾ

ഈ ഓപ്ഷനുകൾ MMIX-നായി നിർവചിച്ചിരിക്കുന്നു:

-mlibfuncs
-mno-libfuncs
ആന്തരിക ലൈബ്രറി ഫംഗ്‌ഷനുകൾ കംപൈൽ ചെയ്യുന്നുണ്ടെന്ന് വ്യക്തമാക്കുക, എല്ലാ മൂല്യങ്ങളും കൈമാറുന്നു
രജിസ്റ്റർ ചെയ്യുന്നു, വലിപ്പം പ്രശ്നമല്ല.

-മെപ്സിലോൺ
-mno-epsilon
"rE" യുമായി താരതമ്യപ്പെടുത്തുന്ന ഫ്ലോട്ടിംഗ് പോയിന്റ് താരതമ്യ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക
എപ്സിലോൺ രജിസ്റ്റർ.

-mabi=mmixware
-മാബി=ഗ്നു
ഫംഗ്‌ഷൻ പാരാമീറ്ററുകൾ കടന്നുപോകുന്ന കോഡ് സൃഷ്‌ടിക്കുകയും മൂല്യങ്ങൾ നൽകുകയും ചെയ്യുക (വിളിച്ചതിൽ
ഫംഗ്‌ഷൻ) ഗ്ലോബൽ ഉപയോഗിക്കുന്ന ഗ്നു എബിഐയ്‌ക്ക് വിരുദ്ധമായി $0-ഉം അതിനുമുകളിലും ഉള്ള രജിസ്റ്ററുകളായി കാണുന്നു
$231-ഉം അതിനുമുകളിലും രജിസ്റ്റർ ചെയ്യുന്നു.

-mzero-വിപുലീകരിക്കുക
-mno-zero-extend
മെമ്മറിയിൽ നിന്നുള്ള ഡാറ്റ 64 ബിറ്റുകളിൽ കുറഞ്ഞ വലുപ്പത്തിൽ വായിക്കുമ്പോൾ, പൂജ്യം ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്)
സൈൻ-എക്‌സ്റ്റൻഡിംഗ് നിർദ്ദേശങ്ങൾക്കുപകരം ഡിഫോൾട്ടായി ലോഡ് നിർദ്ദേശങ്ങൾ നീട്ടുന്നു.

-mknuthdiv
-mno-knuthdiv
ഒരു വിഭജനത്തിന്റെ ഫലത്തിൽ ഒരു ശേഷിക്കുന്ന ഭാഗം വിഭജനത്തിന്റെ അതേ ചിഹ്നം ഉണ്ടാക്കുക.
സ്ഥിരസ്ഥിതിയോടെ, -mno-knuthdiv, ബാക്കിയുള്ളതിന്റെ അടയാളം എന്ന ചിഹ്നത്തെ പിന്തുടരുന്നു
ലാഭവിഹിതം. രണ്ട് രീതികളും ഗണിതശാസ്ത്രപരമായി സാധുതയുള്ളതാണ്, രണ്ടാമത്തേത് ഏതാണ്ട് പ്രത്യേകമാണ്
ഉപയോഗിച്ചു.

-mtoplevel-ചിഹ്നങ്ങൾ
-mno-toplevel-ചിഹ്നങ്ങൾ
മുൻകൈയെടുക്കുക (മുൻകൂട്ടി കാണിക്കരുത്) a : എല്ലാ ആഗോള ചിഹ്നങ്ങളിലേക്കും, അതിനാൽ അസംബ്ലി കോഡ് ഉപയോഗിക്കാം
"PREFIX" അസംബ്ലി നിർദ്ദേശത്തോടൊപ്പം.

-മെൽഫ്
സ്ഥിരസ്ഥിതിക്ക് പകരം ELF ഫോർമാറ്റിൽ ഒരു എക്സിക്യൂട്ടബിൾ സൃഷ്ടിക്കുക mmo ഉപയോഗിക്കുന്ന ഫോർമാറ്റ്
The മിമിക്സ് സിമുലേറ്റർ.

-ബ്രാഞ്ച്-പ്രവചിക്കുക
-mno-ശാഖ-പ്രവചനം
സ്റ്റാറ്റിക് ബ്രാഞ്ച് പ്രവചനം ചെയ്യുമ്പോൾ, പ്രോബബിൾ-ബ്രാഞ്ച് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്).
ഒരു സാധ്യതയുള്ള ശാഖയെ സൂചിപ്പിക്കുന്നു.

-ബേസ്-വിലാസങ്ങൾ
-mno-ബേസ്-വിലാസങ്ങൾ
ഉപയോഗിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക (ജനറേറ്റ് ചെയ്യരുത്). അടിസ്ഥാനം വിലാസങ്ങൾ. ഒരു അടിസ്ഥാന വിലാസം ഉപയോഗിക്കുന്നു
a എന്നതിനായി സ്വയമേവ ഒരു അഭ്യർത്ഥന (അസംബ്ലറും ലിങ്കറും കൈകാര്യം ചെയ്യുന്നു) സൃഷ്ടിക്കുന്നു
ഒരു ആഗോള രജിസ്റ്ററിൽ സ്ഥിരമായി സജ്ജീകരിക്കും. ഒന്നോ അതിലധികമോ അടിസ്ഥാനത്തിനായി രജിസ്റ്റർ ഉപയോഗിക്കുന്നു
രജിസ്റ്ററിലെ മൂല്യത്തിൽ നിന്ന് 0 മുതൽ 255 വരെയുള്ള പരിധിയിലുള്ള വിലാസ അഭ്യർത്ഥനകൾ. ദി
സാധാരണയായി ഹ്രസ്വവും വേഗത്തിലുള്ളതുമായ കോഡിലേക്ക് നയിക്കുന്നു, എന്നാൽ വ്യത്യസ്ത ഡാറ്റാ ഇനങ്ങളുടെ എണ്ണം
അഭിസംബോധന ചെയ്യാൻ കഴിയുന്നത് പരിമിതമാണ്. ഇതിനർത്ഥം ധാരാളം സ്റ്റാറ്റിക് ഡാറ്റ ഉപയോഗിക്കുന്ന ഒരു പ്രോഗ്രാം എന്നാണ്
ആവശ്യമായി വന്നേക്കാം -mno-ബേസ്-വിലാസങ്ങൾ.

-സിംഗിൾ-എക്സിറ്റ്
-mno-single-exit
ഓരോ ഫംഗ്‌ഷനിലും ഒരൊറ്റ എക്‌സിറ്റ് പോയിന്റ് ഉണ്ടായിരിക്കാൻ സൃഷ്‌ടിച്ച കോഡ് നിർബന്ധിക്കുക (നിർബന്ധിക്കരുത്).

MN10300 ഓപ്ഷനുകൾ

ഇവ -m Matsushita MN10300 ആർക്കിടെക്ചറുകൾക്കായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mult-ബഗ്
MN10300 പ്രോസസ്സറുകൾക്കുള്ള ഗുണന നിർദ്ദേശങ്ങളിൽ ബഗുകൾ ഒഴിവാക്കാൻ കോഡ് സൃഷ്ടിക്കുക.
ഇതാണ് സ്ഥിരസ്ഥിതി.

-mno-mult-bug
MN10300-നുള്ള ഗുണന നിർദ്ദേശങ്ങളിൽ ബഗുകൾ ഒഴിവാക്കാൻ കോഡ് സൃഷ്ടിക്കരുത്
പ്രോസസ്സറുകൾ.

-മാം33
AM33 പ്രോസസറിന് പ്രത്യേക സവിശേഷതകൾ ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കുക.

-mno-am33
AM33 പ്രോസസറിന് പ്രത്യേക സവിശേഷതകൾ ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കരുത്. ഇതാണ്
സ്ഥിരസ്ഥിതിയായി.

-മാം33-2
AM33/2.0 പ്രോസസറിന് പ്രത്യേക സവിശേഷതകൾ ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കുക.

-മാം34
AM34 പ്രോസസറിന് പ്രത്യേക സവിശേഷതകൾ ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കുക.

-mtune=cpu-തരം
നിർദ്ദേശങ്ങൾ ഷെഡ്യൂൾ ചെയ്യുമ്പോൾ സൂചിപ്പിച്ച CPU തരത്തിന്റെ സമയ സവിശേഷതകൾ ഉപയോഗിക്കുക.
ഇത് ടാർഗെറ്റുചെയ്‌ത പ്രോസസ്സർ തരത്തെ മാറ്റില്ല. CPU തരം ഇതിലൊന്നായിരിക്കണം
mn10300, am33, am33-2 or am34.

-mreturn-pointer-on-d0
ഒരു പോയിന്റർ നൽകുന്ന ഒരു ഫംഗ്‌ഷൻ സൃഷ്‌ടിക്കുമ്പോൾ, പോയിന്റർ "a0" ലും രണ്ടിലും തിരികെ നൽകുക
"d0". അല്ലെങ്കിൽ, പോയിന്റർ "a0" ൽ മാത്രമേ തിരികെ നൽകൂ, അത്തരത്തിൽ വിളിക്കാൻ ശ്രമിക്കുന്നു
ഒരു പ്രോട്ടോടൈപ്പ് ഇല്ലാത്ത പ്രവർത്തനങ്ങൾ പിശകുകളിൽ കലാശിക്കുന്നു. ഈ ഓപ്ഷൻ ഓണാണെന്ന് ശ്രദ്ധിക്കുക
സ്ഥിരസ്ഥിതി; ഉപയോഗിക്കുക -mno-return-pointer-on-d0 ഇത് അപ്രാപ്തമാക്കാൻ.

-mno-crt0
സി റൺ-ടൈം ഇനീഷ്യലൈസേഷൻ ഒബ്ജക്റ്റ് ഫയലിൽ ലിങ്ക് ചെയ്യരുത്.

-mrelax
ഒരു റിലാക്സേഷൻ ഒപ്റ്റിമൈസേഷൻ പാസ് നടത്തണമെന്ന് ലിങ്കറോട് സൂചിപ്പിക്കുക
ശാഖകൾ, കോളുകൾ, കേവല മെമ്മറി വിലാസങ്ങൾ എന്നിവ ചുരുക്കുക. ഈ ഐച്ഛികത്തിന് ഒരു പ്രഭാവം മാത്രമേ ഉള്ളൂ
അവസാന ലിങ്ക് ഘട്ടത്തിനായി കമാൻഡ് ലൈനിൽ ഉപയോഗിക്കുമ്പോൾ.

ഈ ഓപ്ഷൻ പ്രതീകാത്മക ഡീബഗ്ഗിംഗ് അസാധ്യമാക്കുന്നു.

-mliw
കംപൈലറിനെ സൃഷ്ടിക്കാൻ അനുവദിക്കുക നീളമുള്ള നിർദ്ദേശം വാക്ക് ലക്ഷ്യമാണെങ്കിൽ നിർദ്ദേശങ്ങൾ
AM33 അല്ലെങ്കിൽ പിന്നീട്. ഇതാണ് സ്ഥിരസ്ഥിതി. ഈ ഓപ്ഷൻ പ്രീപ്രൊസസ്സർ മാക്രോയെ നിർവചിക്കുന്നു
"__LIW__".

-മ്നൊലിവ്
കംപൈലറിനെ സൃഷ്ടിക്കാൻ അനുവദിക്കരുത് നീളമുള്ള നിർദ്ദേശം വാക്ക് നിർദ്ദേശങ്ങൾ. ഈ ഓപ്ഷൻ
പ്രീപ്രൊസസ്സർ മാക്രോ "__NO_LIW__" നിർവചിക്കുന്നു.

-msetlb
കംപൈലറിനെ സൃഷ്ടിക്കാൻ അനുവദിക്കുക SETLB ഒപ്പം Lcc ലക്ഷ്യമാണെങ്കിൽ നിർദ്ദേശങ്ങൾ
AM33 അല്ലെങ്കിൽ പിന്നീട്. ഇതാണ് സ്ഥിരസ്ഥിതി. ഈ ഓപ്ഷൻ പ്രീപ്രൊസസ്സർ മാക്രോയെ നിർവചിക്കുന്നു
"__SETLB__".

-mnosetlb
കംപൈലറിനെ സൃഷ്ടിക്കാൻ അനുവദിക്കരുത് SETLB or Lcc നിർദ്ദേശങ്ങൾ. ഈ ഓപ്ഷൻ നിർവചിക്കുന്നു
പ്രീപ്രൊസസ്സർ മാക്രോ "__NO_SETLB__".

മോക്സി ഓപ്ഷനുകൾ

-മെബ്
ബിഗ്-എൻഡിയൻ കോഡ് സൃഷ്ടിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി മോക്സി-*-* കോൺഫിഗറേഷനുകൾ.

-മെൽ
ലിറ്റിൽ-എൻഡിയൻ കോഡ് സൃഷ്ടിക്കുക.

-mmul.x
mul.x, umul.x നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി മോക്സിബോക്സ്-*-*
കോൺഫിഗറേഷനുകൾ.

-mno-crt0
സി റൺ-ടൈം ഇനീഷ്യലൈസേഷൻ ഒബ്ജക്റ്റ് ഫയലിൽ ലിങ്ക് ചെയ്യരുത്.

MSP430 ഓപ്ഷനുകൾ

ഈ ഓപ്ഷനുകൾ MSP430 നായി നിർവചിച്ചിരിക്കുന്നു:

-മസ്ം-ഹെക്സ്
അസംബ്ലി ഔട്ട്‌പുട്ട് എപ്പോഴും ഹെക്‌സ് കോൺസ്റ്റന്റ്‌സ് ഉപയോഗിക്കാൻ നിർബന്ധിക്കുക. സാധാരണയായി അത്തരം സ്ഥിരാങ്കങ്ങൾ ഒപ്പിടുന്നു
ദശാംശങ്ങൾ, എന്നാൽ ഈ ഓപ്ഷൻ testsuite കൂടാതെ/അല്ലെങ്കിൽ സൗന്ദര്യാത്മക ആവശ്യങ്ങൾക്ക് ലഭ്യമാണ്.

-mmcu=
ടാർഗെറ്റുചെയ്യാൻ MCU തിരഞ്ഞെടുക്കുക. ഇത് അടിസ്ഥാനമാക്കി ഒരു സി പ്രീപ്രൊസസ്സർ ചിഹ്നം സൃഷ്ടിക്കാൻ ഉപയോഗിക്കുന്നു
MCU നാമം, വലിയക്ഷരത്തിലേക്ക് പരിവർത്തനം ചെയ്‌ത് മുമ്പും ശേഷവും ഉറപ്പിച്ചു __. ഇതാകട്ടെ
ആണ് ഉപയോഗിക്കുന്നത് msp430.h ഒരു MCU-നിർദ്ദിഷ്ട സപ്ലിമെന്ററി ഹെഡർ തിരഞ്ഞെടുക്കാൻ ഹെഡ്ഡർ ഫയൽ
ഫയൽ.

ഐ‌എസ്‌എ ഉപയോഗിക്കാനും ഈ ഓപ്ഷൻ സജ്ജമാക്കുന്നു. MCU പേര് മാത്രം അറിയാവുന്ന ഒന്നാണെങ്കിൽ
430 ഐഎസ്എയെ പിന്തുണയ്ക്കുക, തുടർന്ന് അത് തിരഞ്ഞെടുത്തു, അല്ലാത്തപക്ഷം 430X ഐഎസ്എ തിരഞ്ഞെടുക്കപ്പെടും. എ
MCU എന്ന പൊതു നാമം msp430 430 ISA തിരഞ്ഞെടുക്കാനും ഉപയോഗിക്കാം. അതുപോലെ ദി
ജനറിക് msp430x MCU പേര് 430X ISA തിരഞ്ഞെടുക്കുന്നു.

കൂടാതെ ലിങ്കർ കമാൻഡ് ലൈനിലേക്ക് ഒരു MCU-നിർദ്ദിഷ്ട ലിങ്കർ സ്ക്രിപ്റ്റ് ചേർത്തിരിക്കുന്നു. ദി
MCU-യുടെ പേരാണ് സ്ക്രിപ്റ്റിന്റെ പേര് .ld ചേർത്തു. ഇങ്ങനെ വ്യക്തമാക്കുന്നു -mmcu=xxx on
The ജിസി കമാൻഡ് ലൈൻ C പ്രീപ്രൊസസ്സർ ചിഹ്നം "__XXX__" നിർവചിക്കുകയും ലിങ്കറിന് കാരണമാകുകയും ചെയ്യുന്നു
എന്ന സ്ക്രിപ്റ്റിനായി തിരയാൻ xxx.ld.

ഈ ഓപ്ഷൻ അസംബ്ലർക്കും കൈമാറുന്നു.

-mcpu=
ഉപയോഗിക്കേണ്ട ISA വ്യക്തമാക്കുന്നു. സ്വീകാര്യമായ മൂല്യങ്ങളാണ് msp430, msp430x ഒപ്പം msp430xv2. ഈ
ഓപ്ഷൻ ഒഴിവാക്കിയിരിക്കുന്നു. ദി -mmcu= ഐഎസ്എ തിരഞ്ഞെടുക്കാൻ ഓപ്ഷൻ ഉപയോഗിക്കണം.

-എംസിം
സിമുലേറ്റർ റൺടൈം ലൈബ്രറികളിലേക്കും ലിങ്കർ സ്ക്രിപ്റ്റിലേക്കും ലിങ്ക് ചെയ്യുക. എല്ലാ സ്ക്രിപ്റ്റുകളും അസാധുവാക്കുന്നു
വഴി തിരഞ്ഞെടുക്കും -mmcu= ഓപ്ഷൻ.

-mlarge
വലിയ മോഡൽ വിലാസം ഉപയോഗിക്കുക (20-ബിറ്റ് പോയിന്ററുകൾ, 32-ബിറ്റ് "size_t").

- ചെറുത്
ചെറിയ മോഡൽ വിലാസം ഉപയോഗിക്കുക (16-ബിറ്റ് പോയിന്ററുകൾ, 16-ബിറ്റ് "size_t").

-mrelax
ഈ ഓപ്‌ഷൻ അസംബ്ലറിനും ലിങ്കറിനും കൈമാറുന്നു, കൂടാതെ ലിങ്കറിനെ പ്രവർത്തിക്കാൻ അനുവദിക്കുന്നു
അന്തിമ ലിങ്ക് വരെ ചെയ്യാൻ കഴിയാത്ത ചില ഒപ്റ്റിമൈസേഷനുകൾ.

mhwmult=
ടാർഗെറ്റ് പിന്തുണയ്‌ക്കുന്ന ഹാർഡ്‌വെയർ ഗുണിത തരം വിവരിക്കുന്നു. സ്വീകാര്യമായ മൂല്യങ്ങളാണ്
ആരും ഹാർഡ്‌വെയർ ഗുണിക്കാതെ, 16bit ഒറിജിനൽ 16-ബിറ്റ്-ഒൺലി മൾട്ടിപ്ലൈ പിന്തുണയ്ക്കുന്നു
ആദ്യകാല MCU-കൾ വഴി. 32bit 16/32-ബിറ്റ് ഗുണിതത്തിനായി പിന്നീടുള്ള MCU-കൾ പിന്തുണയ്ക്കുന്നു f5 പരമ്പര
16/32-ബിറ്റ് ഗുണിതത്തിനായി F5-സീരീസ് MCU-കൾ പിന്തുണയ്ക്കുന്നു. ഒരു മൂല്യം കാര് ആകാം
നൽകിയത്. എം‌സി‌യു നാമത്തെ അടിസ്ഥാനമാക്കി ഹാർഡ്‌വെയർ ഗുണിത പിന്തുണ കുറയ്ക്കാൻ ഇത് ജിസിസിയോട് പറയുന്നു
നൽകിയത് -എംഎംസിയു ഓപ്ഷൻ. അല്ലെങ്കിൽ -എംഎംസിയു അപ്പോൾ ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടുണ്ട് 32bit ഹാർഡ്വെയർ
ഗുണിത പിന്തുണ അനുമാനിക്കപ്പെടുന്നു. കാര് സ്ഥിരസ്ഥിതി ക്രമീകരണമാണ്.

ഹാർഡ്‌വെയർ ഗുണിതങ്ങൾ സാധാരണയായി ഒരു ലൈബ്രറി ദിനചര്യയിൽ വിളിച്ചാണ് നടത്തുന്നത്. ഇത് സംരക്ഷിക്കുന്നു
സൃഷ്ടിച്ച കോഡിലെ ഇടം. കംപൈൽ ചെയ്യുമ്പോൾ -O3 അല്ലെങ്കിൽ ഉയർന്നത് എന്നിരുന്നാലും ഹാർഡ്‌വെയർ
മൾട്ടിപ്ലയർ ഇൻലൈനിൽ അഭ്യർത്ഥിക്കുന്നു. ഇത് വലുതും എന്നാൽ വേഗതയേറിയതുമായ കോഡിനായി മാറുന്നു.

ഹാർഡ്‌വെയർ മൾട്ടിപ്ലൈ ദിനചര്യകൾ പ്രവർത്തിക്കുമ്പോൾ തടസ്സങ്ങൾ പ്രവർത്തനരഹിതമാക്കുകയും പുനഃസ്ഥാപിക്കുകയും ചെയ്യുന്നു
അവ പൂർത്തിയാകുമ്പോൾ മുമ്പത്തെ തടസ്സം. ഇത് അവരെ അകത്ത് ഉപയോഗിക്കാൻ സുരക്ഷിതമാക്കുന്നു
ഹാൻഡ്‌ലറുകളെ തടസ്സപ്പെടുത്തുക, അതുപോലെ സാധാരണ കോഡിലും.

-മിന്റ്
ഒരു മിനിമം റൺടൈം എൻവയോൺമെന്റിന്റെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക - സ്റ്റാറ്റിക് ഇനീഷ്യലൈസറുകൾ ഇല്ല അല്ലെങ്കിൽ
നിർമ്മാതാക്കൾ. ഇത് മെമ്മറി-നിയന്ത്രിത ഉപകരണങ്ങൾക്കായി ഉദ്ദേശിച്ചുള്ളതാണ്. കംപൈലർ ഉൾപ്പെടുന്നു
ചില ഒബ്‌ജക്‌റ്റുകളിലെ പ്രത്യേക ചിഹ്നങ്ങൾ ലിങ്കറിനോടും റൺടൈമിനോടും ഏത് കോഡ് ശകലങ്ങളാണ് എന്ന് പറയുന്നു
ആവശ്യമാണ്.

NDS32 ഓപ്ഷനുകൾ

NDS32 നടപ്പിലാക്കലുകൾക്കായി ഈ ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mbig-endian
ബിഗ്-എൻഡിയൻ മോഡിൽ കോഡ് സൃഷ്ടിക്കുക.

-mlittle-endian
ലിറ്റിൽ-എൻഡിയൻ മോഡിൽ കോഡ് സൃഷ്ടിക്കുക.

-mreduced-regs
രജിസ്റ്റർ അലോക്കേഷനായി കുറച്ച സെറ്റ് രജിസ്റ്ററുകൾ ഉപയോഗിക്കുക.

-mfull-regs
രജിസ്റ്റർ അലോക്കേഷനായി പൂർണ്ണ സെറ്റ് രജിസ്റ്ററുകൾ ഉപയോഗിക്കുക.

-mcmov
സോപാധിക നീക്ക നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

-mno-cmov
സോപാധികമായ നീക്കൽ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കരുത്.

-mperf-ext
പ്രകടന വിപുലീകരണ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

-mno-perf-ext
പ്രകടന വിപുലീകരണ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കരുത്.

-mv3push
v3 push25/pop25 നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

-mno-v3push
v3 push25/pop25 നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കരുത്.

-m16-ബിറ്റ്
16-ബിറ്റ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

-mno-16-ബിറ്റ്
16-ബിറ്റ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കരുത്.

-misr-vector-size=സംഖ്യ
ഓരോ ഇന്ററപ്റ്റ് വെക്‌ടറിന്റെയും വലുപ്പം വ്യക്തമാക്കുക, അത് 4 അല്ലെങ്കിൽ 16 ആയിരിക്കണം.

-mcache-block-size=സംഖ്യ
ഓരോ കാഷെ ബ്ലോക്കിന്റെയും വലുപ്പം വ്യക്തമാക്കുക, അത് 2 നും 4 നും ഇടയിൽ 512 പവർ ആയിരിക്കണം.

-മാർച്ച്=കമാനം
ടാർഗെറ്റ് ആർക്കിടെക്ചറിന്റെ പേര് വ്യക്തമാക്കുക.

-mcmodel=കോഡ് മോഡൽ
കോഡ് മോഡൽ ഒന്നിലേക്ക് സജ്ജമാക്കുക

ചെറിയ
എല്ലാ ഡാറ്റയും റീഡ്-ഒൺലി ഡാറ്റാ സെഗ്‌മെന്റുകളും 512കെബി വിലാസത്തിനുള്ളിൽ ആയിരിക്കണം.
ടെക്‌സ്‌റ്റ് സെഗ്‌മെന്റ് 16എംബി വിലാസത്തിനുള്ളിൽ ആയിരിക്കണം.

ഇടത്തരം
ഡാറ്റാ സെഗ്‌മെന്റ് 512കെബിക്കുള്ളിൽ ആയിരിക്കണം അതേസമയം റീഡ്-ഒൺലി ഡാറ്റ സെഗ്‌മെന്റ് ആകാം
4GB വിലാസത്തിനുള്ളിൽ. ടെക്‌സ്‌റ്റ് സെഗ്‌മെന്റ് ഇപ്പോഴും 16MB-യിൽ ആയിരിക്കണം
സ്ഥലത്തെ അഭിസംബോധന ചെയ്യുന്നു.

വലിയ
എല്ലാ ടെക്‌സ്‌റ്റ്, ഡാറ്റ സെഗ്‌മെന്റുകളും 4 ജിബി അഡ്രസ്സിംഗ് സ്‌പെയ്‌സിനുള്ളിൽ ആകാം.

-mctor-dtor
കൺസ്ട്രക്റ്റർ/ഡിസ്ട്രക്റ്റർ ഫീച്ചർ പ്രവർത്തനക്ഷമമാക്കുക.

-mrelax
നിർദ്ദേശങ്ങൾ വിശ്രമിക്കാൻ ഗൈഡ് ലിങ്കർ.

നോയിസ് II ഓപ്ഷനുകൾ

Altera Nios II പ്രോസസറിനായി നിർവചിച്ചിരിക്കുന്ന ഓപ്ഷനുകൾ ഇവയാണ്.

-G സംഖ്യ
ആഗോളവും നിശ്ചലവുമായ ഒബ്‌ജക്റ്റുകൾ ഇതിനേക്കാൾ കുറവോ തുല്യമോ ഇടുക സംഖ്യ ചെറിയ ഡാറ്റയിലേക്ക് ബൈറ്റുകൾ അല്ലെങ്കിൽ
സാധാരണ ഡാറ്റ അല്ലെങ്കിൽ ബിഎസ്എസ് വിഭാഗങ്ങൾക്ക് പകരം ബിഎസ്എസ് വിഭാഗങ്ങൾ. യുടെ ഡിഫോൾട്ട് മൂല്യം സംഖ്യ is
8.

-mgopt=ഓപ്ഷൻ
-mgpopt
-mno-gpt
ജിപി-ആപേക്ഷിക ആക്സസുകൾ സൃഷ്ടിക്കുക (ജനറേറ്റ് ചെയ്യരുത്). ഇനിപ്പറയുന്നവ ഓപ്ഷൻ പേരുകൾ ആകുന്നു
അംഗീകരിച്ചത്:

ആരും
ജിപി-ആപേക്ഷിക ആക്‌സസ് സൃഷ്‌ടിക്കരുത്.

പ്രാദേശിക
ബാഹ്യമോ അല്ലാത്തതോ ആയ ചെറിയ ഡാറ്റാ ഒബ്‌ജക്‌റ്റുകൾക്കായി ജിപി-ആപേക്ഷിക ആക്‌സസ് സൃഷ്‌ടിക്കുക
ദുർബലമായ. സ്പഷ്ടമായ ഒബ്‌ജക്റ്റുകൾക്ക് ജിപി-ആപേക്ഷിക വിലാസവും ഉപയോഗിക്കുക
ഒരു "വിഭാഗം" ആട്രിബ്യൂട്ട് വഴി ഒരു ചെറിയ ഡാറ്റ വിഭാഗത്തിൽ സ്ഥാപിച്ചിരിക്കുന്നു.

ഗ്ലോബൽ
വേണ്ടി പ്രാദേശിക, മാത്രമല്ല ചെറിയ ഡാറ്റാ ഒബ്‌ജക്‌റ്റുകൾക്കായി ജിപി-ആപേക്ഷിക ആക്‌സസ് സൃഷ്‌ടിക്കുകയും ചെയ്യുന്നു
ബാഹ്യമോ ദുർബലമോ ആണ്. നിങ്ങൾ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുകയാണെങ്കിൽ, എല്ലാ ഭാഗങ്ങളും ഉറപ്പാക്കണം
നിങ്ങളുടെ പ്രോഗ്രാം (ലൈബ്രറികൾ ഉൾപ്പെടെ) ഇതുമായി സമാഹരിച്ചിരിക്കുന്നു -G ക്രമീകരണം.

ഡാറ്റ
പ്രോഗ്രാമിലെ എല്ലാ ഡാറ്റാ ഒബ്‌ജക്‌റ്റുകൾക്കും ജിപി-ആപേക്ഷിക ആക്‌സസ് സൃഷ്‌ടിക്കുക. നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ
ഈ ഓപ്‌ഷൻ, നിങ്ങളുടെ പ്രോഗ്രാമിന്റെ മുഴുവൻ ഡാറ്റയും BSS സെഗ്‌മെന്റുകളും 64K-ൽ യോജിക്കണം
മെമ്മറിയും അതിനുള്ളിൽ അവ അനുവദിക്കുന്നതിന് നിങ്ങൾ ഉചിതമായ ഒരു ലിങ്കർ സ്ക്രിപ്റ്റ് ഉപയോഗിക്കണം
ആഗോള പോയിന്ററിന്റെ അഭിസംബോധന ചെയ്യാവുന്ന ശ്രേണി.

എല്ലാം ഫംഗ്‌ഷൻ പോയിന്ററുകൾക്കും ഡാറ്റ പോയിന്ററുകൾക്കുമായി ജിപി-ആപേക്ഷിക വിലാസങ്ങൾ സൃഷ്ടിക്കുക. എങ്കിൽ
നിങ്ങൾ ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കുന്നു, നിങ്ങളുടെ പ്രോഗ്രാമിന്റെ മുഴുവൻ ടെക്‌സ്‌റ്റ്, ഡാറ്റ, ബിഎസ്എസ് സെഗ്‌മെന്റുകളും നിർബന്ധമായും ഉപയോഗിക്കണം
64K മെമ്മറിയിൽ ഉൾക്കൊള്ളുന്നു, അനുവദിക്കുന്നതിന് നിങ്ങൾ ഉചിതമായ ലിങ്കർ സ്ക്രിപ്റ്റ് ഉപയോഗിക്കണം
ആഗോള പോയിന്ററിന്റെ അഭിസംബോധന ചെയ്യാവുന്ന പരിധിക്കുള്ളിൽ അവ.

-mgpopt എന്നതിന് തുല്യമാണ് -mgopt=പ്രാദേശിക, ഒപ്പം -mno-gpt എന്നതിന് തുല്യമാണ് -mgpopt=ഒന്നുമില്ല.

സ്ഥിരസ്ഥിതി -mgpopt എപ്പോൾ ഒഴികെ -fpic or -fPIC സ്ഥാനം സൃഷ്ടിക്കാൻ വ്യക്തമാക്കിയിരിക്കുന്നു-
സ്വതന്ത്ര കോഡ്. നിയോസ് II എബിഐ ജിപി-ആപേക്ഷിക ആക്‌സസ്സ് അനുവദിക്കുന്നില്ലെന്ന കാര്യം ശ്രദ്ധിക്കുക
ലൈബ്രറികൾ പങ്കിട്ടു.

നിങ്ങൾ വ്യക്തമാക്കേണ്ടതുണ്ട് -mno-gpt ഉൾപ്പെടുന്ന പ്രോഗ്രാമുകൾ നിർമ്മിക്കുമ്പോൾ വ്യക്തമായി
വലിയ GOT ഡാറ്റ വിഭാഗങ്ങൾ ഉൾപ്പെടെ, വലിയ അളവിലുള്ള ചെറിയ ഡാറ്റ. ഈ സാഹചര്യത്തിൽ, ദി
ജിപി-ആപേക്ഷിക വിലാസത്തിനുള്ള 16-ബിറ്റ് ഓഫ്‌സെറ്റ് ആക്‌സസ്സ് അനുവദിക്കാൻ പര്യാപ്തമായിരിക്കില്ല
മുഴുവൻ ചെറിയ ഡാറ്റ വിഭാഗം.

-മെൽ
-മെബ്
യഥാക്രമം ലിറ്റിൽ-എൻഡിയൻ (ഡിഫോൾട്ട്) അല്ലെങ്കിൽ ബിഗ്-എൻഡിയൻ (പരീക്ഷണാത്മക) കോഡ് സൃഷ്ടിക്കുക.

-mbypass-cache
-mno-ബൈപാസ്-കാഷെ
യുടെ I/O വേരിയന്റുകൾ ഉപയോഗിച്ച് എല്ലാ ലോഡും സ്റ്റോർ നിർദ്ദേശങ്ങളും എല്ലായ്‌പ്പോഴും കാഷെ മറികടക്കാൻ നിർബന്ധിക്കുക
നിർദ്ദേശങ്ങൾ. കാഷെ ബൈപാസ് ചെയ്യുക എന്നതല്ല ഡിഫോൾട്ട്.

-mno-കാഷെ-അസ്ഥിരമായ
-mcache-അസ്ഥിരമായ
ലോഡിന്റെയും സ്റ്റോറിന്റെയും I/O വകഭേദങ്ങൾ ഉപയോഗിച്ച് അസ്ഥിരമായ മെമ്മറി ആക്‌സസ് കാഷെ ബൈപാസ് ചെയ്യുന്നു
നിർദ്ദേശങ്ങൾ. കാഷെ ബൈപാസ് ചെയ്യുക എന്നതല്ല ഡിഫോൾട്ട്.

-mno-fast-sw-div
-mfast-sw-div
ചെറിയ സംഖ്യകൾക്കായി പട്ടിക അടിസ്ഥാനമാക്കിയുള്ള ഫാസ്റ്റ് ഡിവൈഡ് ഉപയോഗിക്കരുത്. ഫാസ്റ്റ് ഉപയോഗിക്കുന്നതാണ് സ്ഥിരസ്ഥിതി
വിഭജിക്കുക -O3 മുകളിൽ.

-mno-hw-mul
-mhw-mul
-mno-hw-mulx
-mhw-mulx
-mno-hw-div
-mhw-div
"mul", "mulx", "div" കുടുംബ നിർദ്ദേശങ്ങൾ പുറപ്പെടുവിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുക
കമ്പൈലർ. ഡിഫോൾട്ട് "mul" എമിറ്റ് ചെയ്യുകയാണ്, "div", "mulx" എന്നിവ പുറപ്പെടുവിക്കരുത്.

-മകസ്റ്റം-ഇൻസ്‌എൻ=N
-mno-കസ്റ്റം-ഇൻസ്‌എൻ
ഓരോ -മകസ്റ്റം-ഇൻസ്‌എൻ=N എൻകോഡിംഗിനൊപ്പം ഒരു ഇഷ്‌ടാനുസൃത നിർദ്ദേശത്തിന്റെ ഉപയോഗം ഓപ്ഷൻ പ്രാപ്തമാക്കുന്നു N എപ്പോൾ
ഉപയോഗിക്കുന്ന കോഡ് സൃഷ്ടിക്കുന്നു ഇൻസ്‌എൻ. ഉദാഹരണത്തിന്, -mcustom-fadds=253 കസ്റ്റം സൃഷ്ടിക്കുന്നു
ഇൻസ്ട്രക്ഷൻ 253-ന് പകരം സിംഗിൾ-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ്-പോയിന്റ് ആഡ് ഓപ്പറേഷനുകൾക്കായി
ഒരു ലൈബ്രറി കോൾ ഉപയോഗിക്കുന്നതിന്റെ ഡിഫോൾട്ട് സ്വഭാവം.

ഇനിപ്പറയുന്ന മൂല്യങ്ങൾ ഇൻസ്‌എൻ പിന്തുണയ്ക്കുന്നു. മറ്റുവിധത്തിൽ സൂചിപ്പിച്ചത് ഒഴികെ, ഫ്ലോട്ടിംഗ് പോയിന്റ്
സാധാരണ IEEE 754 സെമാന്റിക്‌സ് ഉപയോഗിച്ച് പ്രവർത്തനങ്ങൾ നടപ്പിലാക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു
സി ഓപ്പറേറ്റർമാരുമായോ തത്തുല്യമായ ജിസിസി ബിൽറ്റ്-ഇൻ ഫംഗ്ഷനുകളുമായോ നേരിട്ട് യോജിക്കുന്നു.

സിംഗിൾ-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റ്:

ഫാഡുകൾ, fsubs, fdivs, fmuls
ബൈനറി ഗണിത പ്രവർത്തനങ്ങൾ.

ശിഖരങ്ങൾ
ഏകീകൃത നിഷേധം.

ഫാബ്സ്
ഏകീകൃത സമ്പൂർണ്ണ മൂല്യം.

fcmpeqs, fcmpges, fcmpgts, fcmples, fcmplts, fcmpnes
താരതമ്യ പ്രവർത്തനങ്ങൾ.

fmins, fmaxs
ഫ്ലോട്ടിംഗ് പോയിന്റ് മിനിമം പരമാവധി. എങ്കിൽ മാത്രമേ ഈ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കപ്പെടുകയുള്ളൂ
-ഫിനിറ്റ്-ഗണിതം-മാത്രം വ്യക്തമാക്കിയിട്ടുണ്ട്.

fsqrts
ഏകീകൃത സ്ക്വയർ റൂട്ട് പ്രവർത്തനം.

fcoss, fsins, ftans, ഫാറ്റൻസ്, fexps, ചമ്മട്ടികൾ
ഫ്ലോട്ടിംഗ്-പോയിന്റ് ത്രികോണമിതി, എക്‌സ്‌പോണൻഷ്യൽ ഫംഗ്‌ഷനുകൾ. ഈ നിർദ്ദേശങ്ങൾ
എങ്കിൽ മാത്രം ജനറേറ്റഡ് -funsafe-math-optimizations എന്നും വ്യക്തമാക്കിയിട്ടുണ്ട്.

ഇരട്ട കൃത്യതയുള്ള ഫ്ലോട്ടിംഗ് പോയിന്റ്:

faddd, fsubd, fdivd, fmuld
ബൈനറി ഗണിത പ്രവർത്തനങ്ങൾ.

fnegd
ഏകീകൃത നിഷേധം.

fabsd
ഏകീകൃത സമ്പൂർണ്ണ മൂല്യം.

fcmpeqd, fcmpged, fcmpgtd, fcmpled, fcmpltd, fcmpned
താരതമ്യ പ്രവർത്തനങ്ങൾ.

fmind, fmaxd
ഇരട്ട-പ്രിസിഷൻ മിനിമം പരമാവധി. എങ്കിൽ മാത്രമേ ഈ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കപ്പെടുകയുള്ളൂ
-ഫിനിറ്റ്-ഗണിതം-മാത്രം വ്യക്തമാക്കിയിട്ടുണ്ട്.

fsqrtd
ഏകീകൃത സ്ക്വയർ റൂട്ട് പ്രവർത്തനം.

fcosd, fsind, ftand, കൊഴുപ്പ്, fexpd, ചാട്ടയടി
ഇരട്ട-പ്രിസിഷൻ ത്രികോണമിതിയും എക്സ്പോണൻഷ്യൽ ഫംഗ്ഷനുകളും. ഈ നിർദ്ദേശങ്ങൾ
എങ്കിൽ മാത്രം ജനറേറ്റഡ് -funsafe-math-optimizations എന്നും വ്യക്തമാക്കിയിട്ടുണ്ട്.

പരിവർത്തനങ്ങൾ:

fextsd
ഒറ്റ പ്രിസിഷനിൽ നിന്ന് ഇരട്ട പ്രിസിഷനിലേക്കുള്ള പരിവർത്തനം.

ftruncds
ഇരട്ട പ്രിസിഷനിൽ നിന്ന് ഒറ്റ പ്രിസിഷനിലേക്കുള്ള പരിവർത്തനം.

ഫിക്സി, പരിഹരിക്കുക, fixdi, fixdu
ഫ്ലോട്ടിംഗ് പോയിന്റിൽ നിന്ന് ഒപ്പിട്ടതോ ഒപ്പിടാത്തതോ ആയ പൂർണ്ണസംഖ്യ തരങ്ങളിലേക്കുള്ള പരിവർത്തനം
പൂജ്യത്തിലേക്കുള്ള വെട്ടിച്ചുരുക്കൽ.

ചുറ്റും
സിംഗിൾ-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റിൽ നിന്ന് ഒപ്പിട്ട പൂർണ്ണസംഖ്യയിലേക്കുള്ള പരിവർത്തനം, റൗണ്ടിംഗ്
പൂജ്യത്തിൽ നിന്ന് ഏറ്റവും അടുത്തുള്ള പൂർണ്ണസംഖ്യയും ബന്ധങ്ങളും. ഇത് യോജിക്കുന്നു
"__builtin_lroundf" ഫംഗ്‌ഷൻ എപ്പോൾ -fno-math-errno ഉപയോഗിക്കുന്നു.

ഫ്ലോട്ടീസ്, ഫ്ലോട്ടസ്, ഫ്ലോട്ടിഡ്, ഫ്ലോട്ടഡ്
ഒപ്പിട്ടതോ ഒപ്പിടാത്തതോ ആയ പൂർണ്ണസംഖ്യ തരങ്ങളിൽ നിന്ന് ഫ്ലോട്ടിംഗ് പോയിന്റ് തരങ്ങളിലേക്കുള്ള പരിവർത്തനം.

കൂടാതെ, X, Y എന്നീ ആന്തരിക രജിസ്റ്ററുകൾക്കുള്ള ഇനിപ്പറയുന്ന എല്ലാ കൈമാറ്റ നിർദ്ദേശങ്ങളും
ഇരട്ട-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങളിൽ ഏതെങ്കിലും ഉപയോഗിക്കുന്നതിന് നൽകണം.
രണ്ട് ഇരട്ട-പ്രിസിഷൻ സോഴ്സ് ഓപ്പറണ്ടുകൾ എടുക്കുന്ന ഇഷ്‌ടാനുസൃത നിർദ്ദേശങ്ങൾ ആദ്യത്തേത് പ്രതീക്ഷിക്കുന്നു
64-ബിറ്റ് രജിസ്റ്ററിലെ ഓപ്പറാൻറ് എക്സ്
ഓപ്പറേഷൻ) എന്നത് ഇഷ്‌ടാനുസൃത ഗണിത നിർദ്ദേശങ്ങൾക്ക് ഏറ്റവും കുറഞ്ഞ പ്രാധാന്യത്തോടെ നൽകിയിരിക്കുന്നു
ഉറവിട രജിസ്റ്ററിൽ പകുതി src1 ഏറ്റവും പ്രധാനപ്പെട്ട പകുതിയും src2. ഒരു ആചാരം
ഇരട്ട കൃത്യതയുള്ള ഫലം നൽകുന്ന നിർദ്ദേശം ഏറ്റവും പ്രധാനപ്പെട്ട 32 നൽകുന്നു
ഡെസ്റ്റിനേഷൻ രജിസ്റ്ററിലെ ബിറ്റുകൾ, ബാക്കി പകുതി 32-ബിറ്റ് രജിസ്റ്ററിൽ Y. GCC
രജിസ്റ്റർ X എഴുതുന്നതിനും കൂടാതെ/അല്ലെങ്കിൽ വായിക്കുന്നതിനും ആവശ്യമായ കോഡ് സീക്വൻസുകൾ സ്വയമേവ സൃഷ്ടിക്കുന്നു
ഇരട്ട-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുമ്പോൾ Y രജിസ്റ്റർ ചെയ്യുക.

fwrx
എഴുതുക src1 X ന്റെ ഏറ്റവും കുറഞ്ഞ പകുതിയിലേക്കും src2 ഏറ്റവും പ്രധാനപ്പെട്ടതിലേക്ക്
X ന്റെ പകുതി

fwry
എഴുതുക src1 Y-യിലേക്ക്.

frdxhi, frdxlo
എക്‌സിന്റെ ഏറ്റവുമധികമോ കുറഞ്ഞതോ ആയ (യഥാക്രമം) പ്രധാനപ്പെട്ട പകുതി വായിച്ച് അതിൽ സംഭരിക്കുക ലക്ഷ്യസ്ഥാനം.

ഫ്രഡി
Y യുടെ മൂല്യം വായിച്ച് അതിൽ സംഭരിക്കുക ലക്ഷ്യസ്ഥാനം.

നിയോസ് II കസ്റ്റം ജനറേഷനിൽ നിങ്ങൾക്ക് കൂടുതൽ പ്രാദേശിക നിയന്ത്രണം നേടാനാകുമെന്നത് ശ്രദ്ധിക്കുക
"ടാർഗെറ്റ് ("ഇഷ്‌ടാനുസൃതം-) ഉപയോഗിച്ചുള്ള നിർദ്ദേശങ്ങൾinsn=N")" കൂടാതെ "ലക്ഷ്യം ("ഇഷ്ടമില്ല-insn")"
ഫംഗ്ഷൻ ആട്രിബ്യൂട്ടുകൾ അല്ലെങ്കിൽ പ്രാഗ്മകൾ.

-mcustom-fpu-cfg=പേര്
ഈ ഓപ്‌ഷൻ മുൻകൂട്ടി നിശ്ചയിച്ച, പേരിട്ടിരിക്കുന്ന ഇഷ്‌ടാനുസൃത നിർദ്ദേശ എൻകോഡിംഗുകളുടെ ഒരു കൂട്ടം പ്രവർത്തനക്ഷമമാക്കുന്നു (കാണുക
-മകസ്റ്റം-ഇൻസ്‌എൻ മുകളിൽ). നിലവിൽ, ഇനിപ്പറയുന്ന സെറ്റുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mcustom-fpu-cfg=60-1 ഇതിന് തുല്യമാണ്: -mcustom-fmuls=252 -mcustom-fadds=253
-mcustom-fsubs=254 -fsingle-പ്രിസിഷൻ-സ്ഥിരം

-mcustom-fpu-cfg=60-2 ഇതിന് തുല്യമാണ്: -mcustom-fmuls=252 -mcustom-fadds=253
-mcustom-fsubs=254 -mcustom-fdivs=255 -fsingle-പ്രിസിഷൻ-സ്ഥിരം

-mcustom-fpu-cfg=72-3 ഇതിന് തുല്യമാണ്: -mcustom-floatus=243 -mcustom-fixsi=244
-mcustom-floatis=245 -mcustom-fcmpgts=246 -mcustom-fcmples=249 -mcustom-fcmpeqs=250
-mcustom-fcmpnes=251 -mcustom-fmuls=252 -mcustom-fadds=253 -mcustom-fsubs=254
-mcustom-fdivs=255 -fsingle-പ്രിസിഷൻ-സ്ഥിരം

വ്യക്തി നൽകുന്ന ഇഷ്‌ടാനുസൃത നിർദ്ദേശ അസൈൻമെന്റുകൾ -മകസ്റ്റം-ഇൻസ്‌എൻ= ഓപ്ഷനുകൾ അസാധുവാക്കുന്നു
നൽകിയവ -mcustom-fpu-cfg=, എന്നതിലെ ഓപ്ഷനുകളുടെ ക്രമം പരിഗണിക്കാതെ തന്നെ
കമാൻഡ് ലൈൻ.

ഒരു FPU കോൺഫിഗറേഷൻ തിരഞ്ഞെടുക്കുന്നതിൽ നിങ്ങൾക്ക് കൂടുതൽ പ്രാദേശിക നിയന്ത്രണം നേടാനാകുമെന്നത് ശ്രദ്ധിക്കുക
"ടാർഗെറ്റ്("custom-fpu-cfg=) ഉപയോഗിച്ച്പേര്")" ഫംഗ്ഷൻ ആട്രിബ്യൂട്ട് അല്ലെങ്കിൽ പ്രാഗ്മ.

ഈ അധിക -m Altera Nios II ELF (ബെയർ-മെറ്റൽ) ലക്ഷ്യത്തിനായി ഓപ്ഷനുകൾ ലഭ്യമാണ്:

-mhal
എച്ച്എഎൽ ബിഎസ്പിയുമായുള്ള ലിങ്ക്. ഇത് ജിസിസി നൽകുന്ന സി റൺടൈം സ്റ്റാർട്ടപ്പുമായുള്ള ലിങ്കിംഗിനെ അടിച്ചമർത്തുന്നു
കൂടാതെ ടെർമിനേഷൻ കോഡ്, കൂടാതെ സാധാരണയായി ഇവയുമായി സംയോജിച്ച് ഉപയോഗിക്കുന്നു -msys-crt0= വ്യക്തമാക്കാൻ
HAL BSP നൽകുന്ന ഇതര സ്റ്റാർട്ടപ്പ് കോഡിന്റെ സ്ഥാനം.

-msmallc
സി ലൈബ്രറിയുടെ പരിമിത പതിപ്പുമായുള്ള ലിങ്ക്, -lsmallc, ന്യൂലിബിനേക്കാൾ.

-msys-crt0=ആരംഭ ഫയൽ
ആരംഭ ഫയൽ ലിങ്ക് ചെയ്യുമ്പോൾ ഉപയോഗിക്കേണ്ട സ്റ്റാർട്ട്ഫയലിന്റെ (crt0) ഫയൽ നാമമാണ്. ഈ ഓപ്ഷൻ
എന്നിവയുമായി സംയോജിച്ച് മാത്രമേ ഉപയോഗപ്രദമാകൂ -mhal.

-msys-lib=systemlib
systemlib താഴ്ന്ന നിലയിലുള്ള സിസ്റ്റം കോളുകൾ നൽകുന്ന ലൈബ്രറിയുടെ ലൈബ്രറിയുടെ പേരാണ്
സി ലൈബ്രറി ആവശ്യപ്പെടുന്നു, ഉദാ "വായിക്കുക", "എഴുതുക". ഈ ഓപ്ഷൻ സാധാരണയായി ഉപയോഗിക്കുന്നു
ഒരു HAL BSP നൽകുന്ന ലൈബ്രറിയുമായുള്ള ലിങ്ക്.

എൻവിഡിയ PTX ഓപ്ഷനുകൾ

ഈ ഓപ്‌ഷനുകൾ Nvidia PTX-നായി നിർവചിച്ചിരിക്കുന്നു:

-m32
-m64
32-ബിറ്റ് അല്ലെങ്കിൽ 64-ബിറ്റ് എബിഐയ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക.

-മെയിൻകെർണൽ
ഒരു __main കേർണലിനുള്ള കോഡിലുള്ള ലിങ്ക്. ഇത് ഓഫ്‌ലോഡിംഗിന് പകരം ഒറ്റയ്ക്ക് നിൽക്കുന്നതിനാണ്
വധശിക്ഷ.

PDP-11 ഓപ്ഷനുകൾ

ഈ ഓപ്ഷനുകൾ PDP-11 നായി നിർവചിച്ചിരിക്കുന്നു:

-mfpu
ഹാർഡ്‌വെയർ FPP ഫ്ലോട്ടിംഗ് പോയിന്റ് ഉപയോഗിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി. (എഫ്ഐഎസ് ഫ്ലോട്ടിംഗ് പോയിന്റ്
PDP-11/40 പിന്തുണയ്ക്കുന്നില്ല.)

-msoft-float
ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് ഉപയോഗിക്കരുത്.

-mac0
ഫ്ലോട്ടിംഗ് പോയിന്റ് റിട്ടേൺ ac0 (Unix അസംബ്ലർ വാക്യഘടനയിൽ fr0) ൽ ഫലങ്ങൾ നൽകുന്നു.

-mno-ac0
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഫലങ്ങൾ മെമ്മറിയിൽ തിരികെ നൽകുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-m40
ഒരു PDP-11/40 എന്നതിനായി കോഡ് സൃഷ്ടിക്കുക.

-m45
ഒരു PDP-11/45 എന്നതിനായി കോഡ് സൃഷ്ടിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-m10
ഒരു PDP-11/10 എന്നതിനായി കോഡ് സൃഷ്ടിക്കുക.

-mbcopy-builtin
മെമ്മറി പകർത്തുന്നതിനായി ഇൻലൈൻ "മോവ്മെംഹി" പാറ്റേണുകൾ ഉപയോഗിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-എംബികോപ്പി
മെമ്മറി പകർത്താൻ ഇൻലൈൻ "മോവ്മെംഹി" പാറ്റേണുകൾ ഉപയോഗിക്കരുത്.

-മിന്റ്16
-mno-int32
16-ബിറ്റ് "int" ഉപയോഗിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-മിന്റ്32
-mno-int16
32-ബിറ്റ് "int" ഉപയോഗിക്കുക.

-mfloat64
-mno-float32
64-ബിറ്റ് "ഫ്ലോട്ട്" ഉപയോഗിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mfloat32
-mno-float64
32-ബിറ്റ് "ഫ്ലോട്ട്" ഉപയോഗിക്കുക.

-മാബ്ഷി
"abshi2" പാറ്റേൺ ഉപയോഗിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mno-abshi
"abshi2" പാറ്റേൺ ഉപയോഗിക്കരുത്.

-ബ്രാഞ്ച്-ചെലവേറിയത്
ശാഖകൾ ചെലവേറിയതാണെന്ന് നടിക്കുക. കോഡ് ജനറേഷൻ പരീക്ഷിക്കുന്നതിന് വേണ്ടിയാണിത്
മാത്രം.

-mbranch-വിലകുറഞ്ഞ
ശാഖകൾ ചെലവേറിയതാണെന്ന് നടിക്കരുത്. ഇതാണ് സ്ഥിരസ്ഥിതി.

-munix-asm
Unix അസംബ്ലർ വാക്യഘടന ഉപയോഗിക്കുക. കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ് pdp11-*-bsd.

-mdec-asm
DEC അസംബ്ലർ വാക്യഘടന ഉപയോഗിക്കുക. ഏതെങ്കിലും PDP-11 ലക്ഷ്യത്തിനായി കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ്
ഒഴികെ pdp11-*-bsd.

picoChip ഓപ്ഷനുകൾ

ഇവ -m picoChip നടപ്പിലാക്കലുകൾക്കായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mae=ae_type
അറേയ്‌ക്കായി ഇൻസ്ട്രക്ഷൻ സെറ്റ്, രജിസ്റ്റർ സെറ്റ്, ഇൻസ്ട്രക്ഷൻ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ എന്നിവ സജ്ജമാക്കുക
ഘടക തരം ae_type. പിന്തുണയ്ക്കുന്ന മൂല്യങ്ങൾ ae_type ആകുന്നു എന്തും, MUL, ഒപ്പം മാക്.

-mae=ഏതെങ്കിലും പൂർണ്ണമായും പൊതുവായ AE തരം തിരഞ്ഞെടുക്കുന്നു. ഈ ഓപ്‌ഷൻ റൺ ചെയ്യുന്ന കോഡ് ജനറേറ്റ് ചെയ്യുന്നു
മറ്റേതെങ്കിലും AE തരങ്ങളിൽ. കോഡ് കംപൈൽ ചെയ്താൽ അത്ര കാര്യക്ഷമമല്ല
ഒരു നിർദ്ദിഷ്‌ട എഇ തരത്തിനും ചില തരത്തിലുള്ള പ്രവർത്തനത്തിനും (ഉദാ, ഗുണനം) പ്രവർത്തിക്കില്ല
എല്ലാത്തരം എഇയിലും ശരിയായി.

-mae=MUL ഒരു MUL AE തരം തിരഞ്ഞെടുക്കുന്നു. സമാഹരിച്ച കോഡിന് ഏറ്റവും ഉപയോഗപ്രദമായ AE തരമാണിത്,
സ്ഥിരസ്ഥിതിയുമാണ്.

-mae=MAC ഒരു DSP-ശൈലി MAC AE തിരഞ്ഞെടുക്കുന്നു. ഈ ഓപ്‌ഷൻ ഉപയോഗിച്ച് കംപൈൽ ചെയ്‌തിരിക്കുന്ന കോഡ് ഇതിൽ നിന്ന് കഷ്ടപ്പെടാം
ബൈറ്റ് (ചാർ) കൃത്രിമത്വത്തിന്റെ മോശം പ്രകടനം, DSP AE നൽകുന്നില്ല
ബൈറ്റ് ലോഡ്/സ്റ്റോറുകൾക്കുള്ള ഹാർഡ്‌വെയർ പിന്തുണ.

-വിലാസമായി ചിഹ്നം
ഒരു ലോഡ്/സ്റ്റോറിലെ വിലാസമായി ഒരു ചിഹ്ന നാമം നേരിട്ട് ഉപയോഗിക്കുന്നതിന് കംപൈലറിനെ പ്രവർത്തനക്ഷമമാക്കുക
നിർദ്ദേശം, ആദ്യം ഒരു രജിസ്റ്ററിൽ ലോഡ് ചെയ്യാതെ. സാധാരണയായി, ഇതിന്റെ ഉപയോഗം
ഓപ്ഷൻ ഉപയോഗിക്കാത്ത സമയത്തേക്കാൾ വേഗത്തിൽ പ്രവർത്തിക്കുന്ന വലിയ പ്രോഗ്രാമുകൾ ഓപ്ഷൻ സൃഷ്ടിക്കുന്നു.
എന്നിരുന്നാലും, ഫലങ്ങൾ ഓരോ പ്രോഗ്രാമിനും വ്യത്യാസപ്പെട്ടിരിക്കുന്നു, അതിനാൽ ഇത് ഒരു ഉപയോക്തൃ ഓപ്ഷനായി അവശേഷിക്കുന്നു,
സ്ഥിരമായി പ്രവർത്തനക്ഷമമാക്കുന്നതിനുപകരം.

-mno-infective-warnings
കാര്യക്ഷമമല്ലാത്ത കോഡിന്റെ ജനറേഷൻ സംബന്ധിച്ച മുന്നറിയിപ്പുകൾ പ്രവർത്തനരഹിതമാക്കുന്നു. ഈ മുന്നറിയിപ്പുകൾ ആകാം
സൃഷ്ടിച്ചത്, ഉദാഹരണത്തിന്, ബൈറ്റ്-ലെവൽ മെമ്മറി പ്രവർത്തനങ്ങൾ നടത്തുന്ന കോഡ് കംപൈൽ ചെയ്യുമ്പോൾ
MAC AE തരത്തിൽ. MAC AE-ന് ബൈറ്റ്-ലെവൽ മെമ്മറിക്ക് ഹാർഡ്‌വെയർ പിന്തുണയില്ല
പ്രവർത്തനങ്ങൾ, അതിനാൽ എല്ലാ ബൈറ്റ് ലോഡ്/സ്റ്റോറുകളും വേഡ് ലോഡ്/സ്റ്റോറിൽ നിന്ന് സമന്വയിപ്പിച്ചിരിക്കണം
പ്രവർത്തനങ്ങൾ. ഇത് കാര്യക്ഷമമല്ല, നിങ്ങളെ സൂചിപ്പിക്കുന്നതിന് ഒരു മുന്നറിയിപ്പ് ജനറേറ്റുചെയ്യുന്നു
ബൈറ്റ് ഓപ്പറേഷനുകൾ ഒഴിവാക്കുന്നതിനോ അല്ലെങ്കിൽ ഉള്ള ഒരു എഇ തരത്തെ ടാർഗെറ്റുചെയ്യുന്നതിനോ കോഡ് മാറ്റിയെഴുതണം
ആവശ്യമായ ഹാർഡ്‌വെയർ പിന്തുണ. ഈ ഓപ്‌ഷൻ ഈ മുന്നറിയിപ്പുകളെ പ്രവർത്തനരഹിതമാക്കുന്നു.

പവർപിസി ഓപ്ഷനുകൾ

ഇവ ചുവടെ പട്ടികപ്പെടുത്തിയിരിക്കുന്നു

RX78 ഓപ്ഷനുകൾ

-എംസിം
ഒരു സിമുലേറ്ററിനുള്ളിലെ പ്രവർത്തനത്തെ പിന്തുണയ്ക്കുന്നതിന് അധിക ടാർഗെറ്റ് ലൈബ്രറികളിലെ ലിങ്കുകൾ.

-mmul=ഒന്നുമില്ല
-mmul=g13
-mmul=rl78
ഉപയോഗിക്കേണ്ട ഹാർഡ്‌വെയർ ഗുണന പിന്തുണയുടെ തരം വ്യക്തമാക്കുന്നു. സ്ഥിരസ്ഥിതിയാണ്
ആരും, ഇത് സോഫ്റ്റ്‌വെയർ ഗുണന പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നു. ദി ഗ്ക്സനുമ്ക്സ ഓപ്ഷൻ ആണ്
ഹാർഡ്‌വെയർ RL78/G13 ടാർഗെറ്റുകളിൽ മാത്രം പെരിഫറൽ ഗുണിക്കുക/വിഭജിക്കുക. ദി rl78 ഓപ്ഷൻ ആണ്
RL78 സോഫ്റ്റ്‌വെയർ മാനുവലിൽ നിർവചിച്ചിരിക്കുന്ന സ്റ്റാൻഡേർഡ് ഹാർഡ്‌വെയർ ഗുണനത്തിനായി.

-m64bit-ഡബിൾസ്
-m32bit-ഡബിൾസ്
"ഇരട്ട" ഡാറ്റ തരം 64 ബിറ്റുകൾ ആക്കുക (-m64bit-ഡബിൾസ്) അല്ലെങ്കിൽ 32 ബിറ്റുകൾ (-m32bit-ഡബിൾസ്)
വലിപ്പത്തിൽ. സ്ഥിരസ്ഥിതിയാണ് -m32bit-ഡബിൾസ്.

ഐബിഎം RS / 6000 ഒപ്പം പവർപിസി ഓപ്ഷനുകൾ

ഇവ -m IBM RS/6000, PowerPC എന്നിവയ്‌ക്കായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mpowerpc-gpopt
-mno-powerpc-gpopt
-mpowerpc-gfxopt
-mno-powerpc-gfxopt
-mpowerpc64
-mno-powerpc64
-mmfcrf
-mno-mfcrf
-mpopcntb
-mno-popcntb
-mpopcntd
-mno-popcntd
-mfprnd
-mno-fprnd
-എംസിഎംപിബി
-mno-cmpb
-എംഎംഎഫ്പിജിപിആർ
-mno-mfpgpr
-mhard-dfp
-mno-hard-dfp
നിങ്ങളുടെ പ്രോസസറിൽ ഏതൊക്കെ നിർദ്ദേശങ്ങൾ ലഭ്യമാണ് എന്ന് വ്യക്തമാക്കാൻ നിങ്ങൾ ഈ ഓപ്‌ഷനുകൾ ഉപയോഗിക്കുന്നു
ഉപയോഗിക്കുന്നു. GCC കോൺഫിഗർ ചെയ്യുമ്പോൾ ഈ ഓപ്ഷനുകളുടെ ഡിഫോൾട്ട് മൂല്യം നിർണ്ണയിക്കപ്പെടുന്നു.
വ്യക്തമാക്കുന്നത് -mcpu=cpu_type ഈ ഓപ്ഷനുകളുടെ സ്പെസിഫിക്കേഷനെ അസാധുവാക്കുന്നു. ഞങ്ങൾ
ഉപയോഗിക്കാൻ ശുപാർശ ചെയ്യുന്നു -mcpu=cpu_type മുകളിൽ ലിസ്റ്റുചെയ്തിരിക്കുന്ന ഓപ്ഷനുകളേക്കാൾ ഓപ്ഷൻ.

വ്യക്തമാക്കുന്നത് -mpowerpc-gpopt ഓപ്ഷണൽ PowerPC ആർക്കിടെക്ചർ ഉപയോഗിക്കാൻ GCC-യെ അനുവദിക്കുന്നു
ഫ്ലോട്ടിംഗ് പോയിന്റ് സ്ക്വയർ റൂട്ട് ഉൾപ്പെടെയുള്ള ജനറൽ പർപ്പസ് ഗ്രൂപ്പിലെ നിർദ്ദേശങ്ങൾ.
വ്യക്തമാക്കുന്നത് -mpowerpc-gfxopt ഓപ്ഷണൽ PowerPC ആർക്കിടെക്ചർ ഉപയോഗിക്കാൻ GCC-യെ അനുവദിക്കുന്നു
ഫ്ലോട്ടിംഗ് പോയിന്റ് സെലക്ട് ഉൾപ്പെടെയുള്ള ഗ്രാഫിക്സ് ഗ്രൂപ്പിലെ നിർദ്ദേശങ്ങൾ.

ദി -mmfcrf കണ്ടീഷൻ രജിസ്റ്റർ ഫീൽഡിൽ നിന്ന് നീക്കം സൃഷ്ടിക്കാൻ ജിസിസിയെ ഓപ്ഷൻ അനുവദിക്കുന്നു
POWER4 പ്രോസസറിലും പിന്തുണയ്ക്കുന്ന മറ്റ് പ്രോസസ്സറുകളിലും നിർദ്ദേശങ്ങൾ നടപ്പിലാക്കി
PowerPC V2.01 ആർക്കിടെക്ചർ. ദി -mpopcntb പോപ്പ് കൗണ്ട് സൃഷ്ടിക്കാൻ ജിസിസിയെ ഓപ്ഷൻ അനുവദിക്കുന്നു
POWER5-ൽ നടപ്പിലാക്കിയ ഇരട്ട-പ്രിസിഷൻ FP റെസിപ്രോക്കൽ എസ്റ്റിമേറ്റ് നിർദ്ദേശവും
PowerPC V2.02 ആർക്കിടെക്ചറിനെ പിന്തുണയ്ക്കുന്ന പ്രോസസ്സറും മറ്റ് പ്രോസസ്സറുകളും. ദി
-mpopcntd എന്നതിൽ നടപ്പിലാക്കിയ പോപ്പ്കൗണ്ട് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കാൻ ജിസിസിയെ ഓപ്ഷൻ അനുവദിക്കുന്നു
POWER7 പ്രൊസസറും PowerPC V2.06 ആർക്കിടെക്ചറിനെ പിന്തുണയ്ക്കുന്ന മറ്റ് പ്രോസസ്സറുകളും.
ദി -mfprnd ഓപ്‌ഷൻ എഫ്പി റൗണ്ട് ടു ഇന്റിജർ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കാൻ ജിസിസിയെ അനുവദിക്കുന്നു
POWER5+ പ്രൊസസറിലും PowerPC-യെ പിന്തുണയ്ക്കുന്ന മറ്റ് പ്രോസസ്സറുകളിലും നടപ്പിലാക്കി
V2.03 ആർക്കിടെക്ചർ. ദി -എംസിഎംപിബി താരതമ്യം ബൈറ്റുകൾ സൃഷ്ടിക്കാൻ ജിസിസിയെ ഓപ്ഷൻ അനുവദിക്കുന്നു
POWER6 പ്രോസസറിലും പിന്തുണയ്ക്കുന്ന മറ്റ് പ്രോസസ്സറുകളിലും നിർദ്ദേശങ്ങൾ നടപ്പിലാക്കി
PowerPC V2.05 ആർക്കിടെക്ചർ. ദി -എംഎംഎഫ്പിജിപിആർ FP നീക്കം ജനറേറ്റ് ചെയ്യാൻ ജിസിസിയെ ഓപ്ഷൻ അനുവദിക്കുന്നു
POWER6X പ്രൊസസറിൽ നടപ്പിലാക്കിയ പൊതു-ഉദ്ദേശ്യ രജിസ്റ്ററിലേക്കുള്ള നിർദ്ദേശങ്ങൾ കൂടാതെ
വിപുലീകൃത PowerPC V2.05 ആർക്കിടെക്ചറിനെ പിന്തുണയ്ക്കുന്ന മറ്റ് പ്രോസസ്സറുകൾ. ദി -mhard-dfp
നടപ്പിലാക്കിയ ഡെസിമൽ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കാൻ ജിസിസിയെ ഓപ്ഷൻ അനുവദിക്കുന്നു
ചില പവർ പ്രോസസറുകൾ.

ദി -mpowerpc64 അധിക 64-ബിറ്റ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കാൻ ജിസിസിയെ ഓപ്ഷൻ അനുവദിക്കുന്നു
പൂർണ്ണ PowerPC64 ആർക്കിടെക്ചറിലും GPR-കളെ 64-ബിറ്റ്, ഡബിൾ വേർഡ് ആയി കണക്കാക്കുകയും ചെയ്യുന്നു
അളവ്. ജിസിസി ഡിഫോൾട്ടിലേക്ക് -mno-powerpc64.

-mcpu=cpu_type
ആർക്കിടെക്ചർ തരം, രജിസ്റ്റർ ഉപയോഗം, നിർദ്ദേശ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ എന്നിവ സജ്ജമാക്കുക
യന്ത്ര തരം cpu_type. പിന്തുണയ്ക്കുന്ന മൂല്യങ്ങൾ cpu_type ആകുന്നു 401, 403, 405, 405fp, 440,
440fp, 464, 464fp, 476, 476fp, 505, 601, 602, 603, ക്സനുമ്ക്സെ, 604, ക്സനുമ്ക്സെ, 620, 630, 740,
7400, 7450, 750, 801, 821, 823, 860, 970, 8540, a2, e300c2, e300c3, e500mc, e500mc64,
e5500, e6500, ec603e, G3, G4, G5, ടൈറ്റാൻ, power3, power4, power5, പവർ5+, power6,
power6x, power7, power8, പവർ പിസി, powerpc64, powerpc64le, ഒപ്പം rs64.

-mcpu=powerpc, -mcpu=powerpc64, ഒപ്പം -mcpu=powerpc64le ശുദ്ധമായ 32-ബിറ്റ് പവർപിസി വ്യക്തമാക്കുക
(ഒന്നുകിൽ എൻഡിയൻ), 64-ബിറ്റ് ബിഗ് എൻഡിയൻ പവർപിസി, 64 ബിറ്റ് ലിറ്റിൽ എൻഡിയൻ പവർപിസി
ആർക്കിടെക്ചർ മെഷീൻ തരങ്ങൾ, ഉചിതമായ, ജനറിക് പ്രോസസർ മോഡൽ അനുമാനിക്കപ്പെടുന്നു
ഷെഡ്യൂളിംഗ് ഉദ്ദേശ്യങ്ങൾ.

മറ്റ് ഓപ്ഷനുകൾ ഒരു നിർദ്ദിഷ്ട പ്രോസസ്സർ വ്യക്തമാക്കുന്നു. ആ ഓപ്ഷനുകൾക്ക് കീഴിൽ കോഡ് സൃഷ്ടിച്ചു
ആ പ്രോസസറിൽ മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നു, മറ്റുള്ളവയിൽ പ്രവർത്തിക്കില്ല.

ദി -എംസിപിയു ഓപ്‌ഷനുകൾ ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ സ്വയമേവ പ്രവർത്തനക്ഷമമാക്കുകയോ പ്രവർത്തനരഹിതമാക്കുകയോ ചെയ്യുന്നു:

-മാൾട്ടിവെക് -mfprnd -mhard-float -mmfcrf - ഒന്നിലധികം -mpopcntb -mpopcntd -mpowerpc64
-mpowerpc-gpopt -mpowerpc-gfxopt -സിംഗിൾ-ഫ്ലോട്ട് -mdouble-float -സിമ്പിൾ-എഫ്പിയു -ംസ്ട്രിംഗ്
-mmulhw -mdlmzb -എംഎംഎഫ്പിജിപിആർ -mvsx -mcrypto -mdirect-move -mpower8-ഫ്യൂഷൻ
-mpower8-വെക്റ്റർ -mquad-മെമ്മറി -mquad-memory-atomic

കംപൈലർ പതിപ്പുകൾക്കിടയിൽ ഏതെങ്കിലും പ്രത്യേക സിപിയുവിനായി സജ്ജീകരിച്ചിരിക്കുന്ന പ്രത്യേക ഓപ്ഷനുകൾ വ്യത്യാസപ്പെടുന്നു,
ആ സിപിയുവിനുള്ള ഒപ്റ്റിമൽ കോഡ് നിർമ്മിക്കുന്ന ക്രമീകരണത്തെ ആശ്രയിച്ച്; അത് ഇല്ല
യഥാർത്ഥ ഹാർഡ്‌വെയറിന്റെ കഴിവുകൾ അനിവാര്യമായും പ്രതിഫലിപ്പിക്കണം. നിങ്ങൾ ഒരു സജ്ജീകരിക്കാൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ
ഒരു പ്രത്യേക മൂല്യത്തിലേക്കുള്ള വ്യക്തിഗത ഓപ്ഷൻ, നിങ്ങൾക്ക് ശേഷം അത് വ്യക്തമാക്കാം -എംസിപിയു ഓപ്ഷൻ,
പോലെ -mcpu=970 -mno-altivec.

AIX-ൽ, ദി -മാൾട്ടിവെക് ഒപ്പം -mpowerpc64 ഓപ്‌ഷനുകൾ പ്രവർത്തനക്ഷമമാക്കുകയോ പ്രവർത്തനരഹിതമാക്കുകയോ ചെയ്‌തിട്ടില്ല -എംസിപിയു
ഈ ഓപ്ഷനുകൾക്ക് AIX-ന് പൂർണ്ണ പിന്തുണയില്ലാത്തതിനാൽ നിലവിൽ ഓപ്ഷൻ. ഒരുപക്ഷേ നിങ്ങൾ
നിങ്ങളുടേതിൽ ഇത് പ്രവർത്തിക്കുമെന്ന് നിങ്ങൾക്ക് ഉറപ്പുണ്ടെങ്കിൽ അവ വ്യക്തിഗതമായി പ്രവർത്തനക്ഷമമാക്കുകയോ പ്രവർത്തനരഹിതമാക്കുകയോ ചെയ്യുക
പരിസ്ഥിതി.

-mtune=cpu_type
മെഷീൻ തരത്തിനായി നിർദ്ദേശ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ സജ്ജമാക്കുക cpu_type, എന്നാൽ സജ്ജീകരിക്കരുത്
ആർക്കിടെക്ചർ തരം അല്ലെങ്കിൽ രജിസ്റ്റർ ഉപയോഗം -mcpu=cpu_type ചെയ്യുന്നു. എന്നതിന് സമാന മൂല്യങ്ങൾ
cpu_type എന്നതിന് ഉപയോഗിക്കുന്നു -mtune പോലെ -എംസിപിയു. രണ്ടും വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിൽ, കോഡ് ജനറേറ്റ് ചെയ്യപ്പെടും
വാസ്തുവിദ്യയും രജിസ്റ്ററുകളും ഉപയോഗിക്കുന്നു -എംസിപിയു, എന്നാൽ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ സജ്ജമാക്കി
-mtune.

-mcmodel=ചെറിയത്
ചെറിയ മോഡലിന് PowerPC64 കോഡ് സൃഷ്ടിക്കുക: TOC 64k ആയി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.

-mcmodel= മീഡിയം
മീഡിയം മോഡലിനായി PowerPC64 കോഡ് സൃഷ്ടിക്കുക: TOC-യും മറ്റ് സ്റ്റാറ്റിക് ഡാറ്റയും ഉയർന്നേക്കാം
മൊത്തം 4G വലുപ്പത്തിലേക്ക്.

-mcmodel=വലുത്
വലിയ മോഡലിന് PowerPC64 കോഡ് സൃഷ്‌ടിക്കുക: TOC 4G വരെ വലുപ്പമുള്ളതാകാം. മറ്റുള്ളവ
ഡാറ്റയും കോഡും 64-ബിറ്റ് വിലാസ ഇടത്തിൽ മാത്രം പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.

-മാൾട്ടിവെക്
-mno-altivec
AltiVec നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക, കൂടാതെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക
AltiVec നിർദ്ദേശ സെറ്റിലേക്ക് കൂടുതൽ നേരിട്ട് പ്രവേശനം അനുവദിക്കുന്ന ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകൾ.
നിങ്ങൾ സജ്ജീകരിക്കേണ്ടതും ആവശ്യമായി വന്നേക്കാം -mabi=altivec AltiVec ABI ഉപയോഗിച്ച് നിലവിലെ ABI ക്രമീകരിക്കാൻ
മെച്ചപ്പെടുത്തലുകൾ.

എപ്പോൾ -മാൾട്ടിവെക് എന്നതിലുപരി ഉപയോഗിക്കുന്നു -maltivec=le or -maltivec=be, മൂലക ക്രമം
"vec_splat", "vec_extract", "vec_insert" പൊരുത്തം തുടങ്ങിയ Altivec ആന്തരികതകൾക്കായി
അറേ എലമെന്റ് ക്രമം ടാർഗെറ്റിന്റെ അന്തസ്സുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. അതായത്, ഘടകം
ഒരു ബിഗ്-എൻഡിയനെ ടാർഗെറ്റ് ചെയ്യുമ്പോൾ വെക്റ്റർ രജിസ്റ്ററിലെ ഏറ്റവും ഇടതുവശത്തുള്ള മൂലകത്തെ പൂജ്യം തിരിച്ചറിയുന്നു
പ്ലാറ്റ്ഫോം, ഒപ്പം a ടാർഗെറ്റ് ചെയ്യുമ്പോൾ വെക്റ്റർ രജിസ്റ്ററിലെ ഏറ്റവും വലത് മൂലകം തിരിച്ചറിയുന്നു
ലിറ്റിൽ-എൻഡിയൻ പ്ലാറ്റ്ഫോം.

-maltivec=be
ബിഗ്-എൻഡിയൻ എലമെന്റ് ഓർഡർ ഉപയോഗിച്ച് Altivec നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക, എന്നത് പരിഗണിക്കാതെ തന്നെ
ലക്ഷ്യം വലുതോ ചെറുതോ ആണ്. ഒരു ബിഗ്-എൻഡിയനെ ടാർഗെറ്റുചെയ്യുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയാണ്
പ്ലാറ്റ്ഫോം.

പോലുള്ള Altivec അന്തർലീനങ്ങളിൽ മൂലക സംഖ്യകളെ വ്യാഖ്യാനിക്കാൻ മൂലക ക്രമം ഉപയോഗിക്കുന്നു
"vec_splat", "vec_extract", "vec_insert". സ്ഥിരസ്ഥിതിയായി, ഇവ അറേ ഘടകവുമായി പൊരുത്തപ്പെടുന്നു
ലക്ഷ്യത്തിനായുള്ള അന്തസ്സുമായി ബന്ധപ്പെട്ട ക്രമം.

-maltivec=le
എന്നത് പരിഗണിക്കാതെ, ലിറ്റിൽ-എൻഡിയൻ എലമെന്റ് ഓർഡർ ഉപയോഗിച്ച് Altivec നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക
ലക്ഷ്യം വലുത്- അല്ലെങ്കിൽ ചെറിയ-എൻഡിയൻ ആണ്. കുറച്ച് ടാർഗെറ്റ് ചെയ്യുമ്പോൾ ഇതാണ് സ്ഥിരസ്ഥിതി-
endian പ്ലാറ്റ്ഫോം. ഒരു ബിഗ്-എൻഡിയനെ ടാർഗെറ്റുചെയ്യുമ്പോൾ ഈ ഓപ്ഷൻ നിലവിൽ അവഗണിക്കപ്പെട്ടിരിക്കുന്നു
പ്ലാറ്റ്ഫോം.

പോലുള്ള Altivec അന്തർലീനങ്ങളിൽ മൂലക സംഖ്യകളെ വ്യാഖ്യാനിക്കാൻ മൂലക ക്രമം ഉപയോഗിക്കുന്നു
"vec_splat", "vec_extract", "vec_insert". സ്ഥിരസ്ഥിതിയായി, ഇവ അറേ ഘടകവുമായി പൊരുത്തപ്പെടുന്നു
ലക്ഷ്യത്തിനായുള്ള അന്തസ്സുമായി ബന്ധപ്പെട്ട ക്രമം.

-mvrsave
-mno-vrsave
AltiVec കോഡ് സൃഷ്ടിക്കുമ്പോൾ VRSAVE നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

-mgen-സെൽ-മൈക്രോകോഡ്
സെൽ മൈക്രോകോഡ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക.

-mwarn-cell-microcode
ഒരു സെൽ മൈക്രോകോഡ് നിർദ്ദേശം പുറപ്പെടുവിക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക. ഒരു സെൽ മൈക്രോകോഡിന്റെ ഒരു ഉദാഹരണം
നിർദ്ദേശം ഒരു വേരിയബിൾ ഷിഫ്റ്റാണ്.

-സുരക്ഷിത-plt
അനുവദിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക ld ഒപ്പം ld.so. എക്സിക്യൂട്ടബിളുകളും പങ്കിട്ട ലൈബ്രറികളും നിർമ്മിക്കാൻ
നോൺ എക്സിക്യൂട്ടബിൾ ".plt", ".got" എന്നീ വിഭാഗങ്ങൾ. ഇതൊരു PowerPC 32-ബിറ്റ് SYSV ABI ഓപ്ഷനാണ്.

-mbss-plt
ഒരു BSS ".plt" വിഭാഗം ഉപയോഗിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക ld.so. പൂരിപ്പിക്കുന്നു, കൂടാതെ ".plt" ആവശ്യമാണ്
കൂടാതെ എഴുതാവുന്നതും എക്സിക്യൂട്ട് ചെയ്യാവുന്നതുമായ ".Got" വിഭാഗങ്ങൾ. ഇതൊരു PowerPC 32-ബിറ്റാണ്
SYSV ABI ഓപ്ഷൻ.

- മിസൽ
-mno-isel
ഈ സ്വിച്ച് ISEL നിർദ്ദേശങ്ങളുടെ ജനറേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുന്നു.

-misel=അതെ അല്ല
ഈ സ്വിച്ച് ഒഴിവാക്കി. ഉപയോഗിക്കുക - മിസൽ ഒപ്പം -mno-isel പകരം.

-എംഎസ്പി
-mno-spe
ഈ സ്വിച്ച് SPE simd നിർദ്ദേശങ്ങളുടെ ജനറേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുന്നു.

- ജോടിയാക്കിയത്
-mno-ജോഡി
ഈ സ്വിച്ച് PAIRED simd നിർദ്ദേശങ്ങളുടെ ജനറേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുന്നു.

-mspe=അതെ അല്ല
ഈ ഓപ്ഷൻ ഒഴിവാക്കി. ഉപയോഗിക്കുക -എംഎസ്പി ഒപ്പം -mno-spe പകരം.

-mvsx
-mno-vsx
വെക്റ്റർ/സ്കെലാർ (വിഎസ്എക്സ്) നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക, കൂടാതെ
VSX-ലേക്ക് കൂടുതൽ നേരിട്ടുള്ള പ്രവേശനം അനുവദിക്കുന്ന അന്തർനിർമ്മിത പ്രവർത്തനങ്ങളുടെ ഉപയോഗം പ്രാപ്തമാക്കുക
നിർദ്ദേശ സെറ്റ്.

-mcrypto
-mno-crypto
ഇതിലേക്ക് നേരിട്ട് പ്രവേശനം അനുവദിക്കുന്ന ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകളുടെ ഉപയോഗം (പ്രവർത്തനരഹിതമാക്കുക) പ്രവർത്തനക്ഷമമാക്കുക
PowerPC ISA-യുടെ 2.07 പതിപ്പിൽ ചേർത്തിട്ടുള്ള ക്രിപ്‌റ്റോഗ്രാഫിക് നിർദ്ദേശങ്ങൾ.

-mdirect-move
-mno-direct-move
ഇതിനിടയിൽ ഡാറ്റ നീക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
പൊതുവായ ഉദ്ദേശ്യ രജിസ്റ്ററുകളും വെക്റ്റർ/സ്കെലാർ (VSX) രജിസ്റ്ററുകളും ചേർത്തിട്ടുണ്ട്
PowerPC ISA-യുടെ 2.07 പതിപ്പ്.

-mpower8-ഫ്യൂഷൻ
-mno-power8-ഫ്യൂഷൻ
ചില പൂർണ്ണസംഖ്യ പ്രവർത്തനങ്ങളെ അടുത്ത് സൂക്ഷിക്കുന്ന (സൂക്ഷിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
പവർ8-ലും പിന്നീടുള്ള പ്രോസസ്സറുകളിലും നിർദ്ദേശങ്ങൾ ഒരുമിച്ച് സംയോജിപ്പിക്കാൻ കഴിയും.

-mpower8-വെക്റ്റർ
-mno-power8-vector
വെക്‌ടറും സ്‌കെലാർ നിർദ്ദേശങ്ങളും ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്‌ടിക്കുക
PowerPC ISA-യുടെ 2.07 പതിപ്പിൽ ചേർത്തു. ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകളുടെ ഉപയോഗവും പ്രവർത്തനക്ഷമമാക്കുക
വെക്റ്റർ നിർദ്ദേശങ്ങളിലേക്ക് കൂടുതൽ നേരിട്ടുള്ള പ്രവേശനം അനുവദിക്കുക.

-mquad-മെമ്മറി
-mno-quad-memory
നോൺ-ആറ്റോമിക് ക്വാഡ് വേഡ് മെമ്മറി നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക.
ദി -mquad-മെമ്മറി ഓപ്ഷന് 64-ബിറ്റ് മോഡ് ആവശ്യമാണ്.

-mquad-memory-atomic
-mno-quad-memory-atomic
ആറ്റോമിക് ക്വാഡ് വേഡ് മെമ്മറി നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക. ദി
-mquad-memory-atomic ഓപ്ഷന് 64-ബിറ്റ് മോഡ് ആവശ്യമാണ്.

-mupper-regs-df
-mno-upper-regs-df
സ്കെയിലർ ഇരട്ട പ്രിസിഷൻ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
വെക്റ്റർ/സ്കെലാർ ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററിലെ എല്ലാ 64 രജിസ്റ്ററുകളും ടാർഗെറ്റുചെയ്യുക
PowerPC ISA-യുടെ 2.06 പതിപ്പിൽ ചേർത്തു. -mupper-regs-df എങ്കിൽ സ്ഥിരസ്ഥിതിയായി ഓണാക്കിയിരിക്കുന്നു
നിങ്ങൾ ഏതെങ്കിലും ഉപയോഗിക്കുക -mcpu=power7, -mcpu=power8, അഥവാ -mvsx ഓപ്ഷനുകൾ.

-mupper-regs-sf
-mno-upper-regs-sf
സ്കെയിലർ സിംഗിൾ പ്രിസിഷൻ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
വെക്റ്റർ/സ്കെലാർ ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്ററിലെ എല്ലാ 64 രജിസ്റ്ററുകളും ടാർഗെറ്റുചെയ്യുക
PowerPC ISA-യുടെ 2.07 പതിപ്പിൽ ചേർത്തു. -mupper-regs-sf എങ്കിൽ സ്ഥിരസ്ഥിതിയായി ഓണാക്കിയിരിക്കുന്നു
നിങ്ങൾ ഇവയിലേതെങ്കിലും ഉപയോഗിക്കുക -mcpu=power8 or -mpower8-വെക്റ്റർ ഓപ്ഷനുകൾ.

-mupper-regs
-mno-upper-regs
എല്ലാ 64 ഉം ലക്ഷ്യമിടുന്ന സ്കെലാർ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
മോഡലിനെ ആശ്രയിച്ച് വെക്റ്റർ/സ്‌കെലാർ ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്‌റ്റർ സെറ്റിൽ രജിസ്റ്റർ ചെയ്യുന്നു
യന്ത്രം.

എങ്കില് -mno-upper-regs ഓപ്ഷൻ ഉപയോഗിക്കുന്നു, ഇത് രണ്ടും ഓഫാക്കുന്നു -mupper-regs-sf ഒപ്പം
-mupper-regs-df ഓപ്ഷനുകൾ.

-mfloat-gprs=അതെ/ഒറ്റ/ഇരട്ട/ഇല്ല
-mfloat-gprs
ഈ സ്വിച്ച് ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങളുടെ ജനറേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുന്നു
അതിനെ പിന്തുണയ്ക്കുന്ന ആർക്കിടെക്ചറുകൾക്കുള്ള പൊതു-ഉദ്ദേശ്യ രജിസ്റ്ററുകൾ.

വാദം അതെ or സിംഗിൾ സിംഗിൾ പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റിന്റെ ഉപയോഗം സാധ്യമാക്കുന്നു
പ്രവർത്തനങ്ങൾ.

വാദം ഇരട്ട സിംഗിൾ, ഡബിൾ പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റിന്റെ ഉപയോഗം സാധ്യമാക്കുന്നു
പ്രവർത്തനങ്ങൾ.

വാദം ഇല്ല പൊതു-ഉദ്ദേശ്യ രജിസ്റ്ററുകളിലെ ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾ പ്രവർത്തനരഹിതമാക്കുന്നു.

ഈ ഓപ്ഷൻ നിലവിൽ MPC854x-ൽ മാത്രമേ ലഭ്യമാകൂ.

-m32
-m64
ഡാർവിൻ, SVR32 ടാർഗെറ്റുകൾ (ഉൾപ്പെടെ) 64-ബിറ്റ് അല്ലെങ്കിൽ 4-ബിറ്റ് എൻവയോൺമെന്റുകൾക്കായി കോഡ് സൃഷ്ടിക്കുക
ഗ്നു/ലിനക്സ്). 32-ബിറ്റ് എൻവയോൺമെന്റ് ഇന്റ്, ലോംഗ്, പോയിന്റർ എന്നിവ 32 ബിറ്റുകളായി സജ്ജീകരിക്കുന്നു
ഏത് PowerPC വേരിയന്റിലും പ്രവർത്തിക്കുന്ന കോഡ് സൃഷ്ടിക്കുന്നു. 64-ബിറ്റ് എൻവയോൺമെന്റ് സജ്ജീകരിക്കുന്നു
32 ബിറ്റുകളും നീളവും 64 ബിറ്റുകളിലേക്കുള്ള പോയിന്ററും, കൂടാതെ PowerPC64-നായി കോഡ് സൃഷ്ടിക്കുന്നു.
-mpowerpc64.

-mfull-toc
-mno-fp-in-toc
-mno-സം-ഇൻ-ടോക്ക്
-മിനിമൽ-ടോക്ക്
എല്ലാവർക്കുമായി സൃഷ്‌ടിച്ച TOC (ഉള്ളടക്കപ്പട്ടിക) ജനറേഷൻ പരിഷ്‌ക്കരിക്കുക
എക്സിക്യൂട്ടബിൾ ഫയൽ. ദി -mfull-toc സ്ഥിരസ്ഥിതിയായി ഓപ്ഷൻ തിരഞ്ഞെടുത്തു. അങ്ങനെയെങ്കിൽ ജി.സി.സി
ഓരോ അദ്വിതീയ നോൺ-ഓട്ടോമാറ്റിക് വേരിയബിൾ റഫറൻസിനും കുറഞ്ഞത് ഒരു TOC എൻട്രി എങ്കിലും അനുവദിക്കുന്നു
നിങ്ങളുടെ പ്രോഗ്രാം. GCC, TOC-യിൽ ഫ്ലോട്ടിംഗ്-പോയിന്റ് സ്ഥിരാങ്കങ്ങളും സ്ഥാപിക്കുന്നു. എന്നിരുന്നാലും, മാത്രം
TOC-യിൽ 16,384 എൻട്രികൾ ലഭ്യമാണ്.

നിങ്ങൾ ലഭ്യമായതിൽ കവിഞ്ഞൊഴുകിയതായി ഒരു ലിങ്കർ പിശക് സന്ദേശം ലഭിക്കുകയാണെങ്കിൽ
TOC സ്‌പെയ്‌സ്, ഉപയോഗിച്ച TOC സ്‌പെയ്‌സിന്റെ അളവ് നിങ്ങൾക്ക് കുറയ്ക്കാനാകും -mno-fp-in-toc ഒപ്പം
-mno-സം-ഇൻ-ടോക്ക് ഓപ്ഷനുകൾ. -mno-fp-in-toc ഫ്ലോട്ടിംഗ് പോയിന്റ് ഇടുന്നതിൽ നിന്ന് ജിസിസിയെ തടയുന്നു
ടിഒസിയിലെ സ്ഥിരാങ്കങ്ങളും -mno-സം-ഇൻ-ടോക്ക് കണക്കാക്കാൻ കോഡ് സൃഷ്ടിക്കാൻ GCC യെ നിർബന്ധിക്കുന്നു
ഒരു വിലാസത്തിന്റെ ആകെത്തുകയും റൺ ടൈമിലെ സ്ഥിരാങ്കം ആ തുക TOC-യിൽ ഇടുന്നതിനുപകരം.
ഈ ഓപ്ഷനുകളിൽ ഒന്നോ രണ്ടോ നിങ്ങൾക്ക് വ്യക്തമാക്കാം. ഓരോന്നും ജിസിസി ഉൽപ്പാദിപ്പിക്കുന്നതിന് കാരണമാകുന്നു
TOC ഇടം സംരക്ഷിക്കുന്നതിനുള്ള ചെലവിൽ അല്പം വേഗത കുറഞ്ഞതും വലുതുമായ കോഡ്.

ഈ രണ്ട് ഓപ്‌ഷനുകളും വ്യക്തമാക്കുമ്പോഴും നിങ്ങൾക്ക് TOC-യിൽ ഇടം തീർന്നാൽ,
വ്യക്തമാക്കുക -മിനിമൽ-ടോക്ക് പകരം. ഈ ഓപ്‌ഷൻ GCC-ന് ഒരു TOC എൻട്രി മാത്രമേ നൽകൂ
ഓരോ ഫയലും. നിങ്ങൾ ഈ ഓപ്‌ഷൻ വ്യക്തമാക്കുമ്പോൾ, വേഗത കുറഞ്ഞതും വലുതുമായ കോഡ് GCC നിർമ്മിക്കുന്നു
എന്നാൽ ഇത് വളരെ കുറച്ച് TOC സ്പേസ് ഉപയോഗിക്കുന്നു. ഈ ഓപ്‌ഷൻ എന്നതിൽ മാത്രം ഉപയോഗിക്കാൻ നിങ്ങൾ ആഗ്രഹിച്ചേക്കാം
പതിവായി നടപ്പിലാക്കാത്ത കോഡ് അടങ്ങിയ ഫയലുകൾ.

-മക്സ് 64
-മക്സ് 32
64-ബിറ്റ് AIX ABI, കോളിംഗ് കൺവെൻഷൻ പ്രവർത്തനക്ഷമമാക്കുക: 64-ബിറ്റ് പോയിന്ററുകൾ, 64-ബിറ്റ് "നീണ്ട" തരം, കൂടാതെ
അവരെ പിന്തുണയ്ക്കാൻ ആവശ്യമായ അടിസ്ഥാന സൗകര്യങ്ങൾ. വ്യക്തമാക്കുന്നത് -മക്സ് 64 ധ്വനിപ്പിക്കുന്നു -mpowerpc64,
സമയത്ത് -മക്സ് 32 64-ബിറ്റ് എബിഐ പ്രവർത്തനരഹിതമാക്കുകയും സൂചിപ്പിക്കുന്നു -mno-powerpc64. ജിസിസി ഡിഫോൾട്ടിലേക്ക്
-മക്സ് 32.

-mxl-compat
-mno-xl-compat
AIX- ഉപയോഗിക്കുമ്പോൾ IBM XL കംപൈലർ സെമാന്റിക്‌സുമായി കൂടുതൽ അടുക്കുന്ന കോഡ് നിർമ്മിക്കുക-
അനുയോജ്യമായ എബിഐ. ന് അപ്പുറത്തുള്ള പ്രോട്ടോടൈപ്പ് ചെയ്ത ഫംഗ്‌ഷനുകളിലേക്ക് ഫ്ലോട്ടിംഗ് പോയിന്റ് ആർഗ്യുമെന്റുകൾ കൈമാറുക
ആർഗ്യുമെന്റ് FPR-കൾക്ക് പുറമെ സ്റ്റാക്കിൽ സേവ് ഏരിയ (RSA) രജിസ്റ്റർ ചെയ്യുക. ഊഹിക്കരുത്
128-ബിറ്റ് ദൈർഘ്യമുള്ള ഇരട്ട മൂല്യത്തിലെ ഏറ്റവും പ്രധാനപ്പെട്ട ഇരട്ടി ശരിയായി റൗണ്ട് ചെയ്യുമ്പോൾ
മൂല്യങ്ങൾ താരതമ്യം ചെയ്ത് ഇരട്ടിയിലേക്ക് പരിവർത്തനം ചെയ്യുന്നു. നീളമുള്ള ഇരട്ടയ്ക്കായി XL ചിഹ്ന നാമങ്ങൾ ഉപയോഗിക്കുക
പിന്തുണ ദിനചര്യകൾ.

AIX കോളിംഗ് കൺവെൻഷൻ വിപുലീകരിച്ചെങ്കിലും ഒരു കൈകാര്യം ചെയ്യാൻ ആദ്യം രേഖപ്പെടുത്തിയിരുന്നില്ല
അതിന്റെ ആർഗ്യുമെന്റുകളുടെ വിലാസം എടുക്കുന്ന ഒരു ഫംഗ്‌ഷനെ വിളിക്കുന്നതിന്റെ അവ്യക്തമായ കെ&ആർ സി കേസ്
പ്രഖ്യാപിച്ചതിനേക്കാൾ കുറച്ച് വാദങ്ങൾ. IBM XL കംപൈലറുകൾ ഫ്ലോട്ടിംഗ് പോയിന്റ് ആർഗ്യുമെന്റുകൾ ആക്സസ് ചെയ്യുന്നു
ഒരു സബ്റൂട്ടീൻ ഇല്ലാതെ കംപൈൽ ചെയ്യുമ്പോൾ സ്റ്റാക്കിൽ നിന്ന് RSA-യിൽ ചേരരുത്
ഒപ്റ്റിമൈസേഷൻ. കാരണം എപ്പോഴും ഫ്ലോട്ടിംഗ് പോയിന്റ് ആർഗ്യുമെന്റുകൾ സ്റ്റാക്കിൽ സൂക്ഷിക്കുന്നു
കാര്യക്ഷമമല്ലാത്തതും അപൂർവ്വമായി ആവശ്യമുള്ളതും, ഈ ഓപ്‌ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല, അത് മാത്രമാണ്
ഒപ്റ്റിമൈസേഷൻ കൂടാതെ IBM XL കംപൈലറുകൾ സമാഹരിച്ച സബ്റൂട്ടീനുകൾ വിളിക്കുമ്പോൾ അത് ആവശ്യമാണ്.

-mpe
പിന്തുണ ഐബിഎം RS / 6000 SP സമാന്തരമായി പരിസ്ഥിതി (PE). ഉപയോഗിക്കാൻ എഴുതിയ ഒരു ആപ്ലിക്കേഷൻ ലിങ്ക് ചെയ്യുക
ആപ്ലിക്കേഷൻ റൺ ചെയ്യാൻ പ്രാപ്തമാക്കുന്നതിന് പ്രത്യേക സ്റ്റാർട്ടപ്പ് കോഡ് ഉപയോഗിച്ച് സന്ദേശം കൈമാറുന്നു. ദി
സിസ്റ്റം സ്റ്റാൻഡേർഡ് ലൊക്കേഷനിൽ PE ഇൻസ്റ്റാൾ ചെയ്തിരിക്കണം (/usr/lpp/ppe.poe/), അഥവാ
നവ്യ ഫയൽ ഉപയോഗിച്ച് അസാധുവാക്കണം -സ്‌പെസിഫിക്കേഷൻ= ഉചിതമായത് വ്യക്തമാക്കുന്നതിനുള്ള ഓപ്ഷൻ
ഡയറക്ടറി സ്ഥാനം. സമാന്തര പരിസ്ഥിതി ത്രെഡുകളെ പിന്തുണയ്ക്കുന്നില്ല, അതിനാൽ -mpe
ഓപ്ഷൻ കൂടാതെ -pthread ഓപ്ഷൻ പൊരുത്തപ്പെടുന്നില്ല.

-മലിൻ-സ്വാഭാവികം
-മലിഗ്-പവർ
AIX, 32-bit Darwin, 64-bit PowerPC GNU/Linux എന്നിവയിൽ, ഓപ്ഷൻ -മലിൻ-സ്വാഭാവികം
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഡബിൾസ് പോലുള്ള വലിയ തരങ്ങളുടെ എബിഐ-നിർവചിച്ച വിന്യാസത്തെ അസാധുവാക്കുന്നു,
അവയുടെ സ്വാഭാവിക വലുപ്പത്തെ അടിസ്ഥാനമാക്കിയുള്ള അതിർത്തിയിൽ. ഓപ്ഷൻ -മലിഗ്-പവർ ജിസിസിക്ക് നിർദ്ദേശം നൽകുന്നു
ABI-നിർദിഷ്ട വിന്യാസ നിയമങ്ങൾ പാലിക്കുക. സ്റ്റാൻഡേർഡ് അലൈൻമെന്റിലേക്ക് GCC ഡിഫോൾട്ട് ചെയ്യുന്നു
എബിഐയിൽ നിർവചിച്ചിരിക്കുന്നത്.

64-ബിറ്റ് ഡാർവിനിൽ, സ്വാഭാവിക വിന്യാസമാണ് ഡിഫോൾട്ട്, കൂടാതെ -മലിഗ്-പവർ അല്ല
പിന്തുണയ്‌ക്കുന്നു.

-msoft-float
-mhard-float
ഫ്ലോട്ടിംഗ് പോയിന്റ് രജിസ്റ്റർ സെറ്റ് ഉപയോഗിക്കാത്ത (ഉപയോഗിക്കുന്ന) കോഡ് സൃഷ്ടിക്കുക. സോഫ്റ്റ്വെയർ
നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ ഫ്ലോട്ടിംഗ് പോയിന്റ് എമുലേഷൻ നൽകും -msoft-float ഓപ്ഷൻ, കൂടാതെ കടന്നുപോകുക
ലിങ്ക് ചെയ്യുമ്പോൾ ജിസിസിയിലേക്കുള്ള ഓപ്ഷൻ.

-സിംഗിൾ-ഫ്ലോട്ട്
-mdouble-float
ഒറ്റ- അല്ലെങ്കിൽ ഇരട്ട-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ്-പോയിന്റ് പ്രവർത്തനങ്ങൾക്കായി കോഡ് സൃഷ്ടിക്കുക.
-mdouble-float ധ്വനിപ്പിക്കുന്നു -സിംഗിൾ-ഫ്ലോട്ട്.

-സിമ്പിൾ-എഫ്പിയു
ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റിനായി "sqrt", "div" നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കരുത്.

-mfpu=പേര്
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റിന്റെ തരം വ്യക്തമാക്കുക. സാധുവായ മൂല്യങ്ങൾ പേര് ആകുന്നു sp_lite (തുല്യമായ
-സിംഗിൾ-ഫ്ലോട്ട് -സിമ്പിൾ-എഫ്പിയു), dp_lite (തുല്യമായ -mdouble-float -സിമ്പിൾ-എഫ്പിയു),
sp_full (തുല്യമായ -സിംഗിൾ-ഫ്ലോട്ട്), ഒപ്പം dp_full (തുല്യമായ -mdouble-float).

-mxilinx-fpu
Xilinx PPC 405/440-ൽ ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റിനായി ഒപ്റ്റിമൈസേഷനുകൾ നടത്തുക.

- ഒന്നിലധികം
-mno-ഒന്നിലധികം
ലോഡ് ഒന്നിലധികം പദ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
ഒന്നിലധികം പദ നിർദ്ദേശങ്ങൾ സംഭരിക്കുക. ഈ നിർദ്ദേശങ്ങൾ ഡിഫോൾട്ടായി ജനറേറ്റ് ചെയ്യപ്പെടുന്നു
പവർ സിസ്റ്റങ്ങൾ, പവർപിസി സിസ്റ്റങ്ങളിൽ ജനറേറ്റ് ചെയ്തതല്ല. ഉപയോഗിക്കരുത് - ഒന്നിലധികം കുറച്ച്-
എൻഡിയൻ പവർപിസി സിസ്റ്റങ്ങൾ, പ്രൊസസർ ഉള്ളപ്പോൾ ആ നിർദ്ദേശങ്ങൾ പ്രവർത്തിക്കില്ല
ലിറ്റിൽ-എൻഡിയൻ മോഡ്. ഇവ അനുവദിക്കുന്ന PPC740, PPC750 എന്നിവയാണ് ഒഴിവാക്കലുകൾ
ലിറ്റിൽ-എൻഡിയൻ മോഡിൽ നിർദ്ദേശങ്ങൾ.

-ംസ്ട്രിംഗ്
-mno-സ്ട്രിംഗ്
ലോഡ് സ്ട്രിംഗ് നിർദ്ദേശങ്ങളും സ്റ്റോറും ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
ഒന്നിലധികം രജിസ്റ്ററുകൾ സംരക്ഷിക്കുന്നതിനും ചെറിയ ബ്ലോക്ക് നീക്കങ്ങൾ നടത്തുന്നതിനുമുള്ള സ്ട്രിംഗ് വേഡ് നിർദ്ദേശങ്ങൾ. ഇവ
നിർദ്ദേശങ്ങൾ പവർ സിസ്റ്റങ്ങളിൽ ഡിഫോൾട്ടായി ജനറേറ്റുചെയ്യുന്നു, പവർപിസിയിൽ സൃഷ്ടിക്കപ്പെടുന്നില്ല
സംവിധാനങ്ങൾ. ഉപയോഗിക്കരുത് -ംസ്ട്രിംഗ് ലിറ്റിൽ-എൻഡിയൻ പവർപിസി സിസ്റ്റങ്ങളിൽ, അവ മുതൽ
പ്രൊസസർ ലിറ്റിൽ-എൻഡിയൻ മോഡിൽ ആയിരിക്കുമ്പോൾ നിർദ്ദേശങ്ങൾ പ്രവർത്തിക്കില്ല. ഒഴിവാക്കലുകൾ
PPC740, PPC750 എന്നിവയാണ് ലിറ്റിൽ-എൻഡിയൻ മോഡിൽ ഈ നിർദ്ദേശങ്ങൾ അനുവദിക്കുന്നത്.

-മാറ്റുക
-mno-update
അപ്ഡേറ്റ് ചെയ്യുന്ന ലോഡ് അല്ലെങ്കിൽ സ്റ്റോർ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
കണക്കാക്കിയ മെമ്മറി ലൊക്കേഷന്റെ വിലാസത്തിലേക്കുള്ള അടിസ്ഥാന രജിസ്റ്റർ. ഈ നിർദ്ദേശങ്ങൾ
സ്ഥിരസ്ഥിതിയായി ജനറേറ്റുചെയ്യുന്നു. നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ -mno-update, ഇടയിൽ ഒരു ചെറിയ ജനൽ ഉണ്ട്
സ്റ്റാക്ക് പോയിന്റർ അപ്ഡേറ്റ് ചെയ്യുന്ന സമയം, മുമ്പത്തെ ഫ്രെയിമിന്റെ വിലാസം
സംഭരിച്ചു, ഇതിനർത്ഥം സ്റ്റാക്ക് ഫ്രെയിമിനെ തടസ്സങ്ങളിലേക്കോ സിഗ്നലുകളിലേക്കോ കടത്തിവിടുന്ന കോഡ് എന്നാണ്
കേടായ ഡാറ്റ നേടുക.

-മാവോയിഡ്-സൂചിക-വിലാസങ്ങൾ
-mno-avoid-indexed-addresses
ഇൻഡെക്‌സ് ചെയ്‌ത ലോഡിന്റെയോ സ്‌റ്റോറിന്റെയോ ഉപയോഗം ഒഴിവാക്കാൻ (ഒഴിവാക്കാൻ) ശ്രമിക്കുന്ന കോഡ് സൃഷ്‌ടിക്കുക
നിർദ്ദേശങ്ങൾ. ഈ നിർദ്ദേശങ്ങൾ Power6 പ്രൊസസറുകളിൽ ഒരു പെർഫോമൻസ് പിഴ ചുമത്താം
16M കടക്കുന്ന വലിയ നിരകളിലൂടെ കടന്നുപോകുമ്പോൾ പോലുള്ള ചില സാഹചര്യങ്ങളിൽ
അതിർത്തി. Power6 ടാർഗെറ്റുചെയ്യുമ്പോൾ ഈ ഓപ്‌ഷൻ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുകയും പ്രവർത്തനരഹിതമാക്കുകയും ചെയ്യുന്നു
അല്ലെങ്കിൽ.

-mfused-madd
-mno-fused-madd
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഗുണിക്കുകയും ശേഖരിക്കുകയും ചെയ്യുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
നിർദ്ദേശങ്ങൾ. ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റാണെങ്കിൽ ഈ നിർദ്ദേശങ്ങൾ ഡിഫോൾട്ടായി ജനറേറ്റുചെയ്യുന്നു
ഉപയോഗിക്കുന്നു. യന്ത്രത്തെ ആശ്രയിച്ചിരിക്കുന്നു -mfused-madd ഓപ്ഷൻ ഇപ്പോൾ മെഷീനിലേക്ക് മാപ്പ് ചെയ്തിട്ടുണ്ട്-
സ്വതന്ത്രമായ -ffp-contract=വേഗത ഓപ്ഷൻ, ഒപ്പം -mno-fused-madd എന്നതിലേക്ക് മാപ്പ് ചെയ്തിരിക്കുന്നു
-ffp-contract=ഓഫ്.

-mmulhw
-mno-mulhw
അർദ്ധ-പദം ഗുണിക്കുകയും ഗുണിക്കുക-ശേഖരിക്കുകയും ചെയ്യുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
IBM 405, 440, 464, 476 പ്രോസസറുകളിലെ നിർദ്ദേശങ്ങൾ. ഈ നിർദ്ദേശങ്ങൾ
ആ പ്രോസസറുകൾ ടാർഗെറ്റ് ചെയ്യുമ്പോൾ സ്ഥിരസ്ഥിതിയായി ജനറേറ്റുചെയ്യുന്നു.

-mdlmzb
-mno-dlmzb
സ്ട്രിംഗ്-സെർച്ച് ഉപയോഗിക്കുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക dlmzb IBM-ലെ നിർദ്ദേശം
405, 440, 464, 476 പ്രോസസറുകൾ. എപ്പോൾ ഈ നിർദ്ദേശം സ്ഥിരസ്ഥിതിയായി ജനറേറ്റുചെയ്യുന്നു
ആ പ്രോസസറുകൾ ലക്ഷ്യമിടുന്നു.

-mno-bit-align
-mbit-align
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും ഘടനകളെയും യൂണിയനുകളെയും നിർബന്ധിക്കുന്നില്ല
ബിറ്റ്-ഫീൽഡിന്റെ അടിസ്ഥാന തരവുമായി വിന്യസിക്കേണ്ട ബിറ്റ്-ഫീൽഡുകൾ അടങ്ങിയിരിക്കുന്നു.

ഉദാഹരണത്തിന്, ഡിഫോൾട്ടായി 8 "അൺസൈൻ ചെയ്യാത്ത" ബിറ്റ്-ഫീൽഡുകൾ അടങ്ങിയ ഒരു ഘടന
ദൈർഘ്യം 1 4-ബൈറ്റ് അതിർത്തിയിലേക്ക് വിന്യസിച്ചിരിക്കുന്നു, കൂടാതെ 4 ബൈറ്റുകളുടെ വലുപ്പവുമുണ്ട്. ഉപയോഗിച്ച്
-mno-bit-align, ഘടന ഒരു 1-ബൈറ്റ് അതിർത്തിയിലേക്ക് വിന്യസിച്ചിരിക്കുന്നു, 1 ബൈറ്റ് വലുപ്പമുണ്ട്.

-mno-strict-align
-mstrict-align
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും അലൈൻ ചെയ്യാത്ത മെമ്മറി ഉണ്ടെന്ന് കരുതുന്നില്ല.
റഫറൻസുകൾ കൈകാര്യം ചെയ്യുന്നത് സിസ്റ്റം ആണ്.

- mrelocatable
-mno-reloocatable
ഒരു സ്റ്റാറ്റിക് എക്‌സിക്യൂട്ടബിൾ a-ലേക്ക് മാറ്റാൻ അനുവദിക്കുന്ന (അനുവദിക്കുന്നില്ല) കോഡ് സൃഷ്‌ടിക്കുക
പ്രവർത്തന സമയത്ത് വ്യത്യസ്ത വിലാസം. ഒരു ലളിതമായ എംബഡഡ് PowerPC സിസ്റ്റം ലോഡർ വേണം
".fixup" ൽ ലിസ്റ്റുചെയ്തിരിക്കുന്ന ".got2", 4-ബൈറ്റ് ലൊക്കേഷനുകളുടെ മുഴുവൻ ഉള്ളടക്കങ്ങളും മാറ്റിസ്ഥാപിക്കുക
വിഭാഗം, ഈ ഓപ്ഷൻ സൃഷ്ടിച്ച 32-ബിറ്റ് വിലാസങ്ങളുടെ പട്ടിക. ഇത് പ്രവർത്തിക്കുന്നതിന്, എല്ലാം
ഒബ്‌ജക്‌റ്റുകൾ ഒരുമിച്ച് കംപൈൽ ചെയ്യണം - mrelocatable or -mrelocatable-lib.
- mrelocatable കോഡ് സ്റ്റാക്കിനെ 8-ബൈറ്റ് അതിർത്തിയിലേക്ക് വിന്യസിക്കുന്നു.

-mrelocatable-lib
-mno-relocatable-lib
പോലെ - mrelocatable, -mrelocatable-lib സ്റ്റാറ്റിക് അനുവദിക്കുന്നതിന് ".fixup" വിഭാഗം സൃഷ്ടിക്കുന്നു
എക്സിക്യൂട്ടബിളുകൾ റൺ ടൈമിൽ മാറ്റി സ്ഥാപിക്കണം, പക്ഷേ -mrelocatable-lib ഉപയോഗിക്കുന്നില്ല
ചെറിയ സ്റ്റാക്ക് വിന്യാസം - mrelocatable. ഉപയോഗിച്ച് സമാഹരിച്ച വസ്തുക്കൾ -mrelocatable-lib കഴിയുക
ഇവയുടെ ഏതെങ്കിലും കോമ്പിനേഷൻ ഉപയോഗിച്ച് സമാഹരിച്ച ഒബ്‌ജക്‌റ്റുകളുമായി ബന്ധിപ്പിക്കും - mrelocatable ഓപ്ഷനുകൾ.

-mno-toc
-എംടിഒസി
സിസ്റ്റം V.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും രജിസ്റ്റർ 2 അടങ്ങിയിരിക്കുന്നതായി കരുതുന്നില്ല
പ്രോഗ്രാമിൽ ഉപയോഗിച്ചിരിക്കുന്ന വിലാസങ്ങളിലേക്ക് വിരൽ ചൂണ്ടുന്ന ഒരു ആഗോള മേഖലയിലേക്കുള്ള ഒരു പോയിന്റർ.

- ചെറിയ
-mlittle-endian
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും പ്രോസസറിനായി കോഡ് കംപൈൽ ചെയ്യുന്നു.
endian മോഡ്. ദി -mlittle-endian ഓപ്ഷൻ സമാനമാണ് - ചെറിയ.

-മ്പിഗ്
-mbig-endian
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും പ്രോസസറിനായുള്ള കോഡ് കംപൈൽ ചെയ്യുന്നു.
endian മോഡ്. ദി -mbig-endian ഓപ്ഷൻ സമാനമാണ് -മ്പിഗ്.

-mdynamic-no-pic
ഡാർവിൻ, മാക് ഒഎസ് എക്സ് സിസ്റ്റങ്ങളിൽ, കോഡ് കംപൈൽ ചെയ്യുക, അങ്ങനെ അത് മാറ്റിസ്ഥാപിക്കാൻ കഴിയില്ല, പക്ഷേ അത്
അതിന്റെ ബാഹ്യ പരാമർശങ്ങൾ മാറ്റിസ്ഥാപിക്കാവുന്നതാണ്. തത്ഫലമായുണ്ടാകുന്ന കോഡ് അനുയോജ്യമാണ്
ആപ്ലിക്കേഷനുകൾ, എന്നാൽ പങ്കിട്ട ലൈബ്രറികളല്ല.

-msingle-pic-base
PIC അഡ്രസ്സിംഗിനായി ഉപയോഗിക്കുന്ന രജിസ്റ്ററിനെ ലോഡുചെയ്യുന്നതിന് പകരം റീഡ്-ഒൺലി ആയി പരിഗണിക്കുക
ഓരോ ഫംഗ്‌ഷനുമുള്ള ആമുഖം. ഇത് ആരംഭിക്കുന്നതിന് റൺടൈം സംവിധാനമാണ് ഉത്തരവാദി
നിർവ്വഹണം ആരംഭിക്കുന്നതിന് മുമ്പ് ഉചിതമായ മൂല്യം ഉപയോഗിച്ച് രജിസ്റ്റർ ചെയ്യുക.

-mprioritize-restricted-insns=മുൻഗണന
ഡിസ്പാച്ച്-സ്ലോട്ട് നിയന്ത്രിതമായി നൽകിയിട്ടുള്ള മുൻഗണന ഈ ഓപ്‌ഷൻ നിയന്ത്രിക്കുന്നു
രണ്ടാമത്തെ ഷെഡ്യൂളിംഗ് പാസ് സമയത്ത് നിർദ്ദേശങ്ങൾ. വാദം മുൻഗണന മൂല്യം എടുക്കുന്നു
0, 1, അഥവാ 2 എന്നതിന്, ഏറ്റവും ഉയർന്നതോ രണ്ടാമത്തെ ഉയർന്നതോ ആയ (യഥാക്രമം) മുൻഗണന നൽകുന്നതിന്
ഡിസ്പാച്ച്-സ്ലോട്ട് നിയന്ത്രിത നിർദ്ദേശങ്ങൾ.

-msched-costly-dep=ആശ്രിതത്വം_തരം
ഈ ഓപ്‌ഷൻ ഏത് ആശ്രിതത്വത്തെയാണ് ടാർഗെറ്റ് സമയത്ത് ചെലവേറിയതായി കണക്കാക്കുന്നത് എന്ന് നിയന്ത്രിക്കുന്നു
നിർദ്ദേശ ഷെഡ്യൂളിംഗ്. വാദം ആശ്രിതത്വം_തരം ഇനിപ്പറയുന്നവയിൽ ഒന്ന് എടുക്കുന്നു
മൂല്യങ്ങൾ:

ഇല്ല ഒരു ആശ്രിതത്വവും ചെലവേറിയതല്ല.

എല്ലാം എല്ലാ ആശ്രിതത്വങ്ങളും ചെലവേറിയതാണ്.

true_store_to_load
സ്റ്റോറിൽ നിന്ന് ലോഡിലേക്കുള്ള യഥാർത്ഥ ആശ്രിതത്വം ചെലവേറിയതാണ്.

store_to_load
സ്റ്റോർ മുതൽ ലോഡ് വരെയുള്ള ഏത് ആശ്രിതത്വവും ചെലവേറിയതാണ്.

അക്കം
ലേറ്റൻസി കൂടുതലോ തുല്യമോ ആയ ഏതെങ്കിലും ആശ്രിതത്വം അക്കം ചെലവേറിയതാണ്.

-minsert-sched-nops=സ്കീം
രണ്ടാമത്തെ ഷെഡ്യൂളിംഗ് സമയത്ത് ഏത് NOP ഇൻസേർഷൻ സ്കീമാണ് ഉപയോഗിക്കുന്നത് എന്നത് ഈ ഓപ്ഷൻ നിയന്ത്രിക്കുന്നു
കടന്നുപോകുക. വാദം സ്കീം ഇനിപ്പറയുന്ന മൂല്യങ്ങളിൽ ഒന്ന് എടുക്കുന്നു:

ഇല്ല NOP-കൾ ചേർക്കരുത്.

പാഡ് അതനുസരിച്ച്, ഒഴിവുള്ള ഇഷ്യൂ സ്ലോട്ടുകളുള്ള ഏതെങ്കിലും ഡിസ്പാച്ച് ഗ്രൂപ്പിന് NOP-കളുള്ള പാഡ്
ഷെഡ്യൂളറുടെ ഗ്രൂപ്പിംഗ്.

regroup_exact
ചെലവേറിയ ആശ്രിത ഇൻസ്‌നുകളെ പ്രത്യേക ഗ്രൂപ്പുകളായി നിർബന്ധിക്കാൻ NOP-കൾ ചേർക്കുക. കൃത്യമായി തിരുകുക
കണക്കാക്കിയ പ്രകാരം, ഒരു പുതിയ ഗ്രൂപ്പിലേക്ക് ഒരു ഇൻസ്‌എൻ നിർബന്ധിതമാക്കാൻ ആവശ്യമായത്ര NOP-കൾ
പ്രോസസ്സർ ഗ്രൂപ്പിംഗ്.

അക്കം
ചെലവേറിയ ആശ്രിത ഇൻസ്‌നുകളെ പ്രത്യേക ഗ്രൂപ്പുകളായി നിർബന്ധിക്കാൻ NOP-കൾ ചേർക്കുക. തിരുകുക അക്കം
ഒരു പുതിയ ഗ്രൂപ്പിലേക്ക് ഒരു ഇൻസ്‌എൻ നിർബന്ധമാക്കാൻ NOP-കൾ.

-mcall-sysv
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും കോളിംഗ് കൺവെൻഷനുകൾ ഉപയോഗിച്ച് കോഡ് കംപൈൽ ചെയ്യുന്നു
സിസ്റ്റം V ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസ്, PowerPC-യുടെ 1995 മാർച്ചിലെ ഡ്രാഫ്റ്റ് പാലിക്കുക
പ്രോസസർ സപ്ലിമെന്റ്. നിങ്ങൾ GCC ഉപയോഗിച്ച് കോൺഫിഗർ ചെയ്തിട്ടില്ലെങ്കിൽ ഇതാണ് സ്ഥിരസ്ഥിതി
powerpc-*-eabiaix.

-മ്ചല്ല്-SysV-EABI
-എംകാൽ-ഇ.എ.ഐ.
രണ്ടും വ്യക്തമാക്കുക -mcall-sysv ഒപ്പം -മീബി ഓപ്ഷനുകൾ.

-mcall-sysv-noeabi
രണ്ടും വ്യക്തമാക്കുക -mcall-sysv ഒപ്പം -mno-eabi ഓപ്ഷനുകൾ.

-mcall-aixdesc
സിസ്റ്റം V.4-ലും എംബഡഡ് PowerPC സിസ്റ്റങ്ങളിലും AIX ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനായുള്ള കോഡ് കംപൈൽ ചെയ്യുന്നു.

-mcall-linux
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും ലിനക്സ് അടിസ്ഥാനമാക്കിയുള്ള ഗ്നുവിനുള്ള കോഡ് കംപൈൽ ചെയ്യുന്നു
സിസ്റ്റം.

-mcall-freebsd
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും ഫ്രീബിഎസ്ഡി പ്രവർത്തനത്തിനുള്ള കോഡ് കംപൈൽ ചെയ്യുന്നു
സിസ്റ്റം.

-mcall-netbsd
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും നെറ്റ്ബിഎസ്ഡി പ്രവർത്തനത്തിനുള്ള കോഡ് കംപൈൽ ചെയ്യുന്നു
സിസ്റ്റം.

-mcall-openbsd
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും ഓപ്പൺബിഎസ്ഡി പ്രവർത്തനത്തിനുള്ള കോഡ് കംപൈൽ ചെയ്യുന്നു
സിസ്റ്റം.

-maix-struct-return
മെമ്മറിയിലെ എല്ലാ ഘടനകളും തിരികെ നൽകുക (AIX ABI വ്യക്തമാക്കിയത്).

-msvr4-struct-return
രജിസ്റ്ററുകളിൽ (SVR8 ABI വ്യക്തമാക്കിയത്) 4 ബൈറ്റുകളേക്കാൾ ചെറിയ ഘടനകൾ തിരികെ നൽകുക.

-mabi=അബി-തരം
ഒരു പ്രത്യേക വിപുലീകരണം ഉപയോഗിച്ച് നിലവിലെ എബിഐ വിപുലീകരിക്കുക, അല്ലെങ്കിൽ അത്തരം വിപുലീകരണം നീക്കം ചെയ്യുക. സാധുവാണ്
മൂല്യങ്ങളാണ് ആൾട്ടിവെക്, നോ-ആൾട്ടിവെക്, സ്പീക്ക്, നോ-സ്പെ, ibmlongdouble, അതായത് നീളമുള്ള ഇരട്ട, elfv1,
elfv2.

-മാബി=സ്പെ
SPE ABI വിപുലീകരണങ്ങൾക്കൊപ്പം നിലവിലെ ABI വിപുലീകരിക്കുക. ഇത് ഡിഫോൾട്ട് എബിഐയെ മാറ്റില്ല,
പകരം അത് നിലവിലെ എബിഐയിലേക്ക് SPE ABI വിപുലീകരണങ്ങൾ ചേർക്കുന്നു.

-മാബി=നോ-സ്പെ
നിലവിലെ ABI-യ്‌ക്കായി Book-E SPE ABI വിപുലീകരണങ്ങൾ പ്രവർത്തനരഹിതമാക്കുക.

-mabi=ibmlongdouble
IBM എക്സ്റ്റെൻഡഡ്-പ്രിസിഷൻ ലോംഗ് ഡബിൾ ഉപയോഗിക്കുന്നതിന് നിലവിലെ എബിഐ മാറ്റുക. ഇതൊരു PowerPC ആണ്
32-ബിറ്റ് SYSV ABI ഓപ്ഷൻ.

-mabi=ieeelongdouble
IEEE എക്സ്റ്റെൻഡഡ്-പ്രിസിഷൻ ലോംഗ് ഡബിൾ ഉപയോഗിക്കുന്നതിന് നിലവിലെ എബിഐ മാറ്റുക. ഇതൊരു PowerPC ആണ്
32-ബിറ്റ് ലിനക്സ് എബിഐ ഓപ്ഷൻ.

-mabi=elfv1
ELFv1 ABI ഉപയോഗിക്കുന്നതിന് നിലവിലെ ABI മാറ്റുക. ബിഗ്-എൻഡിയനുള്ള ഡിഫോൾട്ട് എബിഐ ഇതാണ്
PowerPC 64-ബിറ്റ് ലിനക്സ്. ഡിഫോൾട്ട് എബിഐയെ മറികടക്കുന്നതിന് പ്രത്യേക സിസ്റ്റം പിന്തുണയും ആവശ്യമാണ്
അതിശയകരമായ വഴികളിൽ പരാജയപ്പെടാൻ സാധ്യതയുണ്ട്.

-mabi=elfv2
ELFv2 ABI ഉപയോഗിക്കുന്നതിന് നിലവിലെ ABI മാറ്റുക. ഇത് ചെറിയവയുടെ ഡിഫോൾട്ട് എബിഐ ആണ്-
endian PowerPC 64-bit Linux. ഡിഫോൾട്ട് എബിഐയെ മറികടക്കുന്നതിന് പ്രത്യേക സംവിധാനം ആവശ്യമാണ്
പിന്തുണയും ഗംഭീരമായ വഴികളിൽ പരാജയപ്പെടാൻ സാധ്യതയുണ്ട്.

-പ്രോട്ടോടൈപ്പ്
-mno-പ്രോട്ടോടൈപ്പ്
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും എല്ലാ കോളുകളും വേരിയബിൾ ആർഗ്യുമെന്റിലേക്കാണെന്ന് അനുമാനിക്കുന്നു
പ്രവർത്തനങ്ങൾ ശരിയായി പ്രോട്ടോടൈപ്പ് ചെയ്തിരിക്കുന്നു. അല്ലെങ്കിൽ, കംപൈലർ ഒരു നിർദ്ദേശം ചേർക്കണം
വ്യവസ്ഥാ കോഡ് രജിസ്റ്ററിന്റെ ബിറ്റ് 6 സജ്ജീകരിക്കാനോ മായ്‌ക്കാനോ പ്രോട്ടോടൈപ്പ് ചെയ്യാത്ത ഓരോ കോളിനും മുമ്പായി
("CR") ഫ്ലോട്ടിംഗ് പോയിന്റിൽ ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യങ്ങൾ കടന്നുപോകുമോ എന്ന് സൂചിപ്പിക്കാൻ
ഫംഗ്‌ഷൻ വേരിയബിൾ ആർഗ്യുമെന്റുകൾ എടുക്കുന്ന സാഹചര്യത്തിൽ രജിസ്റ്റർ ചെയ്യുന്നു. കൂടെ -പ്രോട്ടോടൈപ്പ്, കോളുകൾ മാത്രം
പ്രോട്ടോടൈപ്പ് ചെയ്‌ത വേരിയബിൾ ആർഗ്യുമെന്റ് ഫംഗ്‌ഷനുകളിലേക്ക് ബിറ്റ് സജ്ജമാക്കുക അല്ലെങ്കിൽ മായ്‌ക്കുക.

-എംസിം
എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിൽ, സ്റ്റാർട്ടപ്പ് മൊഡ്യൂൾ എന്ന് വിളിക്കപ്പെടുന്നുവെന്ന് കരുതുക സിം-ച്ര്ത്൦.ഒ ഒപ്പം
സാധാരണ സി ലൈബ്രറികൾ എന്ന് libsim.a ഒപ്പം libc.a. ഇതാണ് സ്ഥിരസ്ഥിതി
powerpc-*-eabisim കോൺഫിഗറേഷനുകൾ.

-mmvme
എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിൽ, സ്റ്റാർട്ടപ്പ് മൊഡ്യൂൾ എന്ന് വിളിക്കപ്പെടുന്നുവെന്ന് കരുതുക crt0.o ഒപ്പം
സാധാരണ സി ലൈബ്രറികളാണ് libmvme.a ഒപ്പം libc.a.

-ഭ്രാന്തന്മാർ
എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിൽ, സ്റ്റാർട്ടപ്പ് മൊഡ്യൂൾ എന്ന് വിളിക്കപ്പെടുന്നുവെന്ന് കരുതുക crt0.o ഒപ്പം
സാധാരണ സി ലൈബ്രറികളാണ് libads.എ ഒപ്പം libc.a.

- myellowknife
എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിൽ, സ്റ്റാർട്ടപ്പ് മൊഡ്യൂൾ എന്ന് വിളിക്കപ്പെടുന്നുവെന്ന് കരുതുക crt0.o ഒപ്പം
സാധാരണ സി ലൈബ്രറികളാണ് libyk.a ഒപ്പം libc.a.

-mvxworks
സിസ്റ്റം വി.4, എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിൽ, നിങ്ങൾ കംപൈൽ ചെയ്യുന്നത് ഒരു
VxWorks സിസ്റ്റം.

- അംഗം
ഉൾച്ചേർത്ത PowerPC സിസ്റ്റങ്ങളിൽ, സൂചിപ്പിക്കാൻ ELF ഫ്ലാഗ്സ് ഹെഡറിൽ "PPC_EMB" ബിറ്റ് സജ്ജമാക്കുക
എബി വിപുലീകൃത സ്ഥലംമാറ്റങ്ങൾ ഉപയോഗിക്കുന്നു.

-മീബി
-mno-eabi
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും എംബഡഡ് പാലിക്കുന്നു (അരുത്)
ആപ്ലിക്കേഷനുകൾ ബൈനറി ഇന്റർഫേസ് (EABI), ഇത് സിസ്റ്റത്തിലേക്കുള്ള ഒരു കൂട്ടം പരിഷ്ക്കരണങ്ങളാണ്
V.4 സ്പെസിഫിക്കേഷനുകൾ. തിരഞ്ഞെടുക്കുന്നു -മീബി സ്റ്റാക്ക് ഒരു 8-ബൈറ്റിലേക്ക് വിന്യസിച്ചിരിക്കുന്നു എന്നാണ് അർത്ഥമാക്കുന്നത്
അതിർത്തി, EABI പരിതസ്ഥിതി സജ്ജീകരിക്കുന്നതിന് "__eabi" എന്ന ഫംഗ്‌ഷനെ "മെയിൻ" എന്നതിൽ നിന്ന് വിളിക്കുന്നു,
ഒപ്പം -msdata രണ്ട് വ്യത്യസ്ത ചെറിയ ഡാറ്റ ചൂണ്ടിക്കാണിക്കാൻ ഓപ്ഷന് "r2", "r13" എന്നിവ ഉപയോഗിക്കാം
പ്രദേശങ്ങൾ. തിരഞ്ഞെടുക്കുന്നു -mno-eabi സ്റ്റാക്ക് ഒരു 16-ബൈറ്റ് അതിർത്തിയിലേക്ക് വിന്യസിച്ചിരിക്കുന്നു എന്നാണ് അർത്ഥമാക്കുന്നത്, നമ്പർ
EABI ഇനീഷ്യലൈസേഷൻ ഫംഗ്‌ഷനെ "മെയിൻ" എന്നതിൽ നിന്നും വിളിക്കുന്നു -msdata ഓപ്ഷൻ മാത്രം ഉപയോഗിക്കുന്നു
"r13" ഒരൊറ്റ ചെറിയ ഡാറ്റ ഏരിയയിലേക്ക് പോയിന്റ് ചെയ്യാൻ. ദി -മീബി നിങ്ങളാണെങ്കിൽ സ്ഥിരസ്ഥിതിയായി ഓപ്ഷൻ ഓണാണ്
ഇതിലൊന്ന് ഉപയോഗിച്ച് GCC ക്രമീകരിച്ചു powerpc*-*-eabi* ഓപ്ഷനുകൾ.

-msdata=eabi
സിസ്റ്റം വി.4, എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിൽ, ചെറിയ ഇനീഷ്യലൈസ് ചെയ്ത "കോൺസ്റ്റ്" ഗ്ലോബൽ ആൻഡ് ഇട്ടു
".sdata2" വിഭാഗത്തിലെ സ്റ്റാറ്റിക് ഡാറ്റ, അത് രജിസ്റ്റർ "r2" ചൂണ്ടിക്കാണിക്കുന്നു. ചെറുതായി വയ്ക്കുക
".sdata" വിഭാഗത്തിൽ നോൺ-"കോൺസ്റ്റ്" ഗ്ലോബൽ, സ്റ്റാറ്റിക് ഡാറ്റ തുടങ്ങിയിരിക്കുന്നു
രജിസ്റ്റർ "r13" ചൂണ്ടിക്കാണിക്കുന്നു. ചെറിയ അൺഇനീഷ്യലൈസ്ഡ് ഗ്ലോബൽ, സ്റ്റാറ്റിക് ഡാറ്റ ഇതിൽ ഇടുക
".sdata" വിഭാഗത്തോട് ചേർന്നുള്ള ".sbss" വിഭാഗം. ദി -msdata=eabi ഓപ്ഷൻ
യുമായി പൊരുത്തപ്പെടുന്നില്ല - mrelocatable ഓപ്ഷൻ. ദി -msdata=eabi ഓപ്ഷനും സജ്ജമാക്കുന്നു
- അംഗം ഓപ്ഷൻ.

-msdata=sysv
സിസ്റ്റം V.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും, ചെറിയ ആഗോള, സ്റ്റാറ്റിക് ഡാറ്റ നൽകുക
".sdata" വിഭാഗം, അത് "r13" രജിസ്റ്ററിലൂടെ ചൂണ്ടിക്കാണിക്കുന്നു. ചെറിയ അണ് ഇനീഷ്യലൈസ്ഡ് ഇടുക
".sdata" യോട് ചേർന്നുള്ള ".sbss" വിഭാഗത്തിലെ ആഗോള, സ്റ്റാറ്റിക് ഡാറ്റ
വിഭാഗം. ദി -msdata=sysv എന്ന ഓപ്ഷനുമായി പൊരുത്തപ്പെടുന്നില്ല - mrelocatable ഓപ്ഷൻ.

-msdata=default
-msdata
സിസ്റ്റം V.4, എംബഡഡ് PowerPC സിസ്റ്റങ്ങളിൽ, എങ്കിൽ -മീബി ഉപയോഗിക്കുന്നു, കോഡ് കംപൈൽ ചെയ്യുക
as -msdata=eabi, അല്ലാത്തപക്ഷം കോഡ് കംപൈൽ ചെയ്യുക -msdata=sysv.

-msdata=data
സിസ്റ്റം V.4, എംബഡഡ് PowerPC സിസ്റ്റങ്ങളിൽ, ".sdata"-ൽ ചെറിയ ആഗോള ഡാറ്റ ഇടുക.
വിഭാഗം. ".sbss" വിഭാഗത്തിൽ ആരംഭിക്കാത്ത ചെറിയ ആഗോള ഡാറ്റ ഇടുക. ഉപയോഗിക്കരുത്
എന്നിരുന്നാലും ചെറിയ ഡാറ്റ പരിഹരിക്കുന്നതിന് "r13" രജിസ്റ്റർ ചെയ്യുക. അല്ലാതെ ഇത് സ്ഥിര സ്വഭാവമാണ്
മറ്റ് -msdata ഓപ്ഷനുകൾ ഉപയോഗിക്കുന്നു.

-msdata=ഒന്നുമില്ല
-mno-sdata
എംബഡഡ് PowerPC സിസ്റ്റങ്ങളിൽ, ".data"-ൽ എല്ലാ ആഗോള, സ്റ്റാറ്റിക് ഡാറ്റയും ഇടുക.
വിഭാഗം, കൂടാതെ ".bss" വിഭാഗത്തിലെ ആരംഭിക്കാത്ത എല്ലാ ഡാറ്റയും.

-mblock-move-inline-limit=സംഖ്യ
എല്ലാ ബ്ലോക്ക് നീക്കങ്ങളും ഇൻലൈൻ ചെയ്യുക ("memcpy" അല്ലെങ്കിൽ സ്ട്രക്ചർ കോപ്പികളിലേക്കുള്ള കോളുകൾ പോലെ) അല്ലെങ്കിൽ
തുല്യമായി സംഖ്യ ബൈറ്റുകൾ. ഇതിനുള്ള ഏറ്റവും കുറഞ്ഞ മൂല്യം സംഖ്യ 32-ബിറ്റ് ടാർഗെറ്റുകളിൽ 32 ബൈറ്റുകളും 64 ഉം ആണ്
64-ബിറ്റ് ടാർഗെറ്റുകളിൽ ബൈറ്റുകൾ. ഡിഫോൾട്ട് മൂല്യം ടാർഗെറ്റ്-നിർദ്ദിഷ്ടമാണ്.

-G സംഖ്യ
എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിൽ, ആഗോളവും സ്റ്റാറ്റിക് ഇനങ്ങളും അതിൽ കുറവോ തുല്യമോ ഇടുക സംഖ്യ
സാധാരണ ഡാറ്റ അല്ലെങ്കിൽ ബിഎസ്എസ് വിഭാഗത്തിന് പകരം ചെറിയ ഡാറ്റ അല്ലെങ്കിൽ ബിഎസ്എസ് വിഭാഗങ്ങളിലേക്ക് ബൈറ്റുകൾ.
സ്ഥിരസ്ഥിതിയായി, സംഖ്യ 8. ആണ് -G സംഖ്യ ലിങ്കറിലേക്കും സ്വിച്ച് കൈമാറുന്നു. എല്ലാ മൊഡ്യൂളുകളും
അതുമായി സമാഹരിച്ചിരിക്കണം -G സംഖ്യ മൂല്യം.

- mregnames
-mno-regnnames
സിസ്റ്റം വി.4-ലും എംബഡഡ് പവർപിസി സിസ്റ്റങ്ങളിലും രജിസ്റ്ററിന്റെ പേരുകൾ പുറപ്പെടുവിക്കുന്നു (അരുത്).
പ്രതീകാത്മക രൂപങ്ങൾ ഉപയോഗിച്ച് അസംബ്ലി ഭാഷാ ഔട്ട്പുട്ട്.

-mlongcall
-mno-longcall
ഡിഫോൾട്ടായി എല്ലാ കോളുകളും ദൂരെയാണെന്നും അതിനാൽ ദീർഘവും കൂടുതൽ ചെലവേറിയതുമാണെന്ന് കരുതുക
കോളിംഗ് സീക്വൻസ് ആവശ്യമാണ്. 32 മെഗാബൈറ്റിൽ കൂടുതൽ ദൂരമുള്ള കോളുകൾക്ക് ഇത് ആവശ്യമാണ്
(33,554,432 ബൈറ്റുകൾ) നിലവിലെ സ്ഥാനത്ത് നിന്ന്. എങ്കിൽ ഒരു ചെറിയ കോൾ ജനറേറ്റ് ചെയ്യപ്പെടും
കോൾ അത്ര ദൂരെയായിരിക്കാൻ കഴിയില്ലെന്ന് കമ്പൈലറിന് അറിയാം. ഈ ക്രമീകരണം അസാധുവാക്കാവുന്നതാണ്
"ഷോർട്ട്കോൾ" ഫംഗ്ഷൻ ആട്രിബ്യൂട്ട്, അല്ലെങ്കിൽ "#പ്രാഗ്മ ദീർഘവിളി(0)".

ചില ലിങ്കറുകൾക്ക് പരിധിക്ക് പുറത്തുള്ള കോളുകൾ കണ്ടെത്താനും പശ കോഡ് സൃഷ്ടിക്കാനും കഴിയും
ഈച്ച. ഈ സിസ്റ്റങ്ങളിൽ, ദൈർഘ്യമേറിയ കോളുകൾ അനാവശ്യവും വേഗത കുറഞ്ഞ കോഡ് സൃഷ്ടിക്കുന്നതുമാണ്. പോലെ
ഈ എഴുത്തിൽ, PowerPC/64-നുള്ള GNU ലിങ്കർ പോലെ, AIX ലിങ്കറിന് ഇത് ചെയ്യാൻ കഴിയും. അത്
32-ബിറ്റ് പവർപിസി സിസ്റ്റങ്ങൾക്കുമായി ഗ്നു ലിങ്കറിലേക്ക് ഈ സവിശേഷത ചേർക്കാൻ പദ്ധതിയിട്ടിട്ടുണ്ട്.

ഡാർവിൻ/PPC സിസ്റ്റങ്ങളിൽ, "#pragma longcall" എന്നത് "jbsr callee, L42" ജനറേറ്റുചെയ്യുന്നു, കൂടാതെ ഒരു ശാഖ
ദ്വീപ് (പശ കോഡ്). രണ്ട് ടാർഗെറ്റ് വിലാസങ്ങൾ വിളിക്കുന്നയാളെയും ബ്രാഞ്ചിനെയും പ്രതിനിധീകരിക്കുന്നു
ദ്വീപ്. ഡാർവിൻ/പിപിസി ലിങ്കർ ആദ്യ വിലാസം തിരഞ്ഞെടുക്കുകയും ഒരു "bl callee" സൃഷ്ടിക്കുകയും ചെയ്യുന്നു
PPC "bl" നിർദ്ദേശം വിളിക്കുന്നയാളിൽ നേരിട്ട് എത്തിയാൽ; അല്ലെങ്കിൽ, ലിങ്കർ
ബ്രാഞ്ച് ദ്വീപിനെ വിളിക്കാൻ "bl L42" സൃഷ്ടിക്കുന്നു. ബ്രാഞ്ച് ദ്വീപ് അനുബന്ധമായി ചേർത്തിരിക്കുന്നു
കോളിംഗ് ഫംഗ്ഷന്റെ ശരീരം; ഇത് വിളിക്കുന്നയാളുടെ മുഴുവൻ 32-ബിറ്റ് വിലാസവും കണക്കാക്കുന്നു
അതിലേക്ക് ചാടുന്നു.

Mach-O (ഡാർവിൻ) സിസ്റ്റങ്ങളിൽ, ഈ ഓപ്ഷൻ കംപൈലർ എമിറ്റിനെ പശയിലേക്ക് നയിക്കുന്നു.
എല്ലാ നേരിട്ടുള്ള കോളുകളും, അത് ഉപയോഗിക്കണോ വേണ്ടയോ എന്ന് ഡാർവിൻ ലിങ്കർ തീരുമാനിക്കുന്നു.

ഭാവിയിൽ, ലിങ്കർ അറിയുമ്പോൾ GCC എല്ലാ ലോംഗ്കോൾ സ്പെസിഫിക്കേഷനുകളും അവഗണിച്ചേക്കാം
പശ ഉണ്ടാക്കുക.

-mtls-മാർക്കറുകൾ
-നോ-ടിഎൽഎസ്-മാർക്കറുകൾ
"__tls_get_addr" എന്നതിലേക്കുള്ള കോളുകൾ അടയാളപ്പെടുത്തുക (അടയാളപ്പെടുത്തരുത്) ഫംഗ്ഷൻ വ്യക്തമാക്കുന്ന ഒരു സ്ഥലംമാറ്റം
വാദം. ഫംഗ്‌ഷൻ കോളിനെ വിശ്വസനീയമായി ബന്ധപ്പെടുത്താൻ, സ്ഥലംമാറ്റം ലിങ്കറെ അനുവദിക്കുന്നു
ടിഎൽഎസ് ഒപ്റ്റിമൈസേഷനായുള്ള ആർഗ്യുമെന്റ് സെറ്റപ്പ് നിർദ്ദേശങ്ങൾ, ഇത് ജിസിസിയെ മികച്ചതാക്കാൻ അനുവദിക്കുന്നു
ക്രമം ഷെഡ്യൂൾ ചെയ്യുക.

-pthread
ഇതിനൊപ്പം മൾട്ടിത്രെഡിംഗിനുള്ള പിന്തുണ ചേർക്കുന്നു pthreads പുസ്തകശാല. ഈ ഓപ്ഷൻ ഫ്ലാഗുകൾ സജ്ജമാക്കുന്നു
പ്രീപ്രൊസസ്സറും ലിങ്കറും.

-mrecip
-mno-recip
ഈ ഓപ്‌ഷൻ പരസ്പര എസ്റ്റിമേറ്റിന്റെയും പരസ്പര സ്‌ക്വയർ റൂട്ട് എസ്റ്റിമേറ്റിന്റെയും ഉപയോഗം സാധ്യമാക്കുന്നു
അതിനുപകരം കൃത്യത വർദ്ധിപ്പിക്കുന്നതിനുള്ള അധിക ന്യൂട്ടൺ-റാപ്‌സൺ ഘട്ടങ്ങളുള്ള നിർദ്ദേശങ്ങൾ
ഫ്ലോട്ടിംഗ് പോയിന്റ് ആർഗ്യുമെന്റുകൾക്കായി ഒരു വിഭജനം അല്ലെങ്കിൽ വർഗ്ഗമൂലവും വിഭജനവും നടത്തുന്നു. നിങ്ങൾ ഉപയോഗിക്കണം
The ഫാസ്റ്റ്-ഗണിതം ഉപയോഗിക്കുമ്പോൾ ഓപ്ഷൻ -mrecip (കുറഞ്ഞപക്ഷം -funsafe-math-optimizations,
-ഫിനിറ്റ്-ഗണിതം-മാത്രം, -ഫ്രെസിപ്രോക്കൽ-ഗണിതം ഒപ്പം -fno-trapping-math). അതേസമയം ശ്രദ്ധിക്കുക
ക്രമത്തിന്റെ ത്രൂപുട്ട് സാധാരണയായി നോൺ-ന്റെ ത്രൂപുട്ടിനെക്കാൾ കൂടുതലാണ്
പരസ്പര നിർദ്ദേശം, ക്രമത്തിന്റെ കൃത്യത 2 ulp വരെ കുറയ്ക്കാം
(അതായത് 1.0 ന്റെ വിപരീതം 0.99999994) പരസ്പര വർഗ്ഗമൂലങ്ങൾക്ക്.

-mrecip=തിരഞ്ഞെടുക്കുക
ഈ ഓപ്‌ഷൻ ഏത് പരസ്പര എസ്റ്റിമേറ്റ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കാമെന്ന് നിയന്ത്രിക്കുന്നു. തിരഞ്ഞെടുക്കുക ഒരു ആണ്
കോമയാൽ വേർതിരിച്ച ഓപ്‌ഷനുകളുടെ ലിസ്റ്റ്, അതിന് മുമ്പായി "!" ഓപ്ഷൻ വിപരീതമാക്കാൻ:

എല്ലാം എല്ലാ എസ്റ്റിമേറ്റ് നിർദ്ദേശങ്ങളും പ്രവർത്തനക്ഷമമാക്കുക.

സ്ഥിരസ്ഥിതി
ഇതിന് തുല്യമായ ഡിഫോൾട്ട് നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക -mrecip.

ആരും
ഇതിന് തുല്യമായ എല്ലാ എസ്റ്റിമേറ്റ് നിർദ്ദേശങ്ങളും പ്രവർത്തനരഹിതമാക്കുക -mno-recip.

DIV ഒറ്റയ്ക്കും ഇരട്ടയ്ക്കും പരസ്പര ഏകദേശ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക
കൃത്യത.

ഡിവിഎഫ്
ഏക-പ്രിസിഷൻ റെസിപ്രോക്കൽ ഏകദേശ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക.

ഡിവിഡി
ഇരട്ട-പ്രിസിഷൻ റെസിപ്രോക്കൽ ഏകദേശ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക.

രൂപ
ഒറ്റയ്ക്കും രണ്ടിനും പരസ്പര സ്ക്വയർ റൂട്ട് ഏകദേശ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക
ഇരട്ട കൃത്യത.

rsqrtf
സിംഗിൾ-പ്രിസിഷൻ റെസിപ്രോക്കൽ സ്ക്വയർ റൂട്ട് ഏകദേശ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക.

rsqrtd
ഇരട്ട-പ്രിസിഷൻ റെസിപ്രോക്കൽ സ്ക്വയർ റൂട്ട് ഏകദേശ നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക.

അതിനാൽ, ഉദാഹരണത്തിന്, -mrecip=എല്ലാം,!rsqrtd എല്ലാ പരസ്പര എസ്റ്റിമേറ്റും പ്രാപ്തമാക്കുന്നു
"FRSQRTE", "XSRSQRTEDP", "XVRSQRTEDP" നിർദ്ദേശങ്ങൾ ഒഴികെയുള്ള നിർദ്ദേശങ്ങൾ
ഇരട്ട-പ്രിസിഷൻ റെസിപ്രോക്കൽ സ്ക്വയർ റൂട്ട് കണക്കുകൂട്ടലുകൾ കൈകാര്യം ചെയ്യുന്നത്.

-mrecip-പ്രിസിഷൻ
-mno-റെസിപ്പ്-പ്രിസിഷൻ
പരസ്പര എസ്റ്റിമേറ്റ് നിർദ്ദേശങ്ങൾ ഉയർന്നത് നൽകുന്നുവെന്ന് കരുതുക (ഊഹിക്കരുത്)
പവർപിസി എബിഐ നിർബന്ധമാക്കിയതിനേക്കാൾ കൃത്യമായ എസ്റ്റിമേറ്റ്. തിരഞ്ഞെടുക്കുന്നു -mcpu=power6,
-mcpu=power7 or -mcpu=power8 സ്വയമേവ തിരഞ്ഞെടുക്കുന്നു -mrecip-പ്രിസിഷൻ. ഇരട്ട-
പ്രിസിഷൻ സ്ക്വയർ റൂട്ട് എസ്റ്റിമേറ്റ് നിർദ്ദേശങ്ങൾ ലോ-യിൽ ഡിഫോൾട്ടായി ജനറേറ്റ് ചെയ്യുന്നില്ല.
കൃത്യമായ യന്ത്രങ്ങൾ, മൂന്നിന് ശേഷം ഒത്തുചേരുന്ന ഒരു എസ്റ്റിമേറ്റ് നൽകാത്തതിനാൽ
ഘട്ടങ്ങൾ.

-mveclibabi=ടൈപ്പ് ചെയ്യുക
ഒരു ബാഹ്യ ലൈബ്രറി ഉപയോഗിച്ച് ഇൻട്രിൻസിക്‌സ് വെക്‌ടറൈസ് ചെയ്യുന്നതിന് ഉപയോഗിക്കേണ്ട എബിഐ തരം വ്യക്തമാക്കുന്നു.
നിലവിൽ പിന്തുണയ്ക്കുന്ന ഒരേയൊരു തരം ബഹുജന, ഇത് ഐബിഎമ്മിന്റെ ഗണിതശാസ്ത്രം ഉപയോഗിക്കണമെന്ന് വ്യക്തമാക്കുന്നു
എക്സ്റ്റേണൽ ഉപയോഗിച്ച് ഇൻട്രിൻസിക്‌സ് വെക്‌ടറൈസ് ചെയ്യുന്നതിനുള്ള ആക്സിലറേഷൻ സബ്സിസ്റ്റം (മാസ്) ലൈബ്രറികൾ
ലൈബ്രറികൾ. GCC നിലവിൽ "acosd2", "acosf4", "acosd2", "acoshf4" എന്നിവയിലേക്ക് കോളുകൾ പുറപ്പെടുവിക്കുന്നു,
"asind2", "asinf4", "asinhd2", "asinhf4", "atan2d2", "atan2f4", "atand2", "atanf4",
"atanhd2", "atanhf4", "cbrtd2", "cbrtf4", "cosd2", "cosf4", "coshd2", "coshf4",
"erfcd2", "erfcf4", "erfd2", "erff4", "exp2d2", "exp2f4", "expd2", "expf4", "expm1d2",
"expm1f4", "hypotd2", "hypotf4", "lgammad2", "lgammaf4", "log10d2", "log10f4",
"log1pd2", "log1pf4", "log2d2", "log2f4", "logd2", "logf4", "powd2", "powf4", "sind2",
"sinf4", "sinhd2", "sinhf4", "sqrtd2", "sqrtf4", "tand2", "tanf4", "tanhd2", കൂടാതെ
പവർ 4-നുള്ള കോഡ് സൃഷ്ടിക്കുമ്പോൾ "tanhf7". രണ്ടും -ftree-vectorize ഒപ്പം
-funsafe-math-optimizations കൂടാതെ പ്രവർത്തനക്ഷമമാക്കണം. മാസ് ലൈബ്രറികൾ ആയിരിക്കണം
ലിങ്ക് സമയത്ത് വ്യക്തമാക്കിയിരിക്കുന്നു.

-mfriz
-mno-friz
എപ്പോൾ "friz" നിർദ്ദേശം ജനറേറ്റ് ചെയ്യുക (ജനറേറ്റ് ചെയ്യരുത്). -funsafe-math-optimizations
ഫ്ലോട്ടിംഗ്-പോയിന്റ് മൂല്യങ്ങൾ 64-ബിറ്റ് പൂർണ്ണസംഖ്യയിലേക്ക് റൗണ്ടിംഗ് ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിന് ഓപ്‌ഷൻ ഉപയോഗിക്കുന്നു.
ഫ്ലോട്ടിംഗ് പോയിന്റിലേക്ക് മടങ്ങുക. എങ്കിൽ "friz" നിർദ്ദേശം അതേ മൂല്യം നൽകുന്നില്ല
ഫ്ലോട്ടിംഗ് പോയിന്റ് നമ്പർ ഒരു പൂർണ്ണസംഖ്യയിൽ ഉൾക്കൊള്ളിക്കാനാവാത്തത്ര വലുതാണ്.

--നെസ്റ്റഡ്-ഫംഗ്ഷനുകൾക്ക് പോയിന്ററുകൾ
-mno-pointers-to-nested-functions
എപ്പോൾ സ്റ്റാറ്റിക് ചെയിൻ രജിസ്റ്റർ ("r11") ലോഡ് ചെയ്യാൻ കോഡ് ജനറേറ്റ് ചെയ്യുക (ജനറേറ്റ് ചെയ്യരുത്).
AIX, 64-bit Linux സിസ്റ്റങ്ങളിൽ ഒരു പോയിന്റർ വഴി വിളിക്കുന്നു, അവിടെ ഒരു ഫംഗ്ഷൻ പോയിന്റർ
ലോഡുചെയ്യേണ്ട TOC മൂല്യം, ഫംഗ്‌ഷൻ വിലാസം നൽകുന്ന 3-പദ വിവരണത്തിലേക്ക് പോയിന്റ് ചെയ്യുന്നു
"r2" രജിസ്റ്റർ ചെയ്യുക, കൂടാതെ "r11" രജിസ്റ്ററിൽ ലോഡ് ചെയ്യേണ്ട സ്റ്റാറ്റിക് ചെയിൻ മൂല്യം. ദി
--നെസ്റ്റഡ്-ഫംഗ്ഷനുകൾക്ക് പോയിന്ററുകൾ സ്ഥിരസ്ഥിതിയായി ഓണാണ്. നിങ്ങൾക്ക് പോയിന്ററുകൾ വഴി വിളിക്കാൻ കഴിയില്ല
നെസ്റ്റഡ് ഫംഗ്‌ഷനുകൾ അല്ലെങ്കിൽ ഫംഗ്‌ഷനുകളിലേക്കുള്ള പോയിന്ററുകൾ ഉപയോഗിക്കുന്ന മറ്റ് ഭാഷകളിൽ സമാഹരിച്ചിരിക്കുന്നു
നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ സ്റ്റാറ്റിക് ചെയിൻ -mno-pointers-to-nested-functions.

-save-toc-indirect
-mno-save-toc-indirect
റിസർവ് ചെയ്ത സ്റ്റാക്ക് ലൊക്കേഷനിൽ TOC മൂല്യം സംരക്ഷിക്കാൻ കോഡ് സൃഷ്ടിക്കുക (ജനറേറ്റ് ചെയ്യരുത്).
AIX-ലും 64-ബിറ്റിലും ഒരു പോയിന്റർ വഴിയാണ് ഫംഗ്‌ഷൻ വിളിക്കുന്നതെങ്കിൽ ഫംഗ്‌ഷൻ പ്രോലോഗിൽ
ലിനക്സ് സിസ്റ്റങ്ങൾ. പ്രോലോഗിൽ TOC മൂല്യം സംരക്ഷിച്ചിട്ടില്ലെങ്കിൽ, അത് തൊട്ടുമുമ്പ് സംരക്ഷിക്കപ്പെടും
പോയിന്ററിലൂടെയുള്ള കോൾ. ദി -mno-save-toc-indirect ഓപ്ഷൻ സ്ഥിരസ്ഥിതിയാണ്.

-mcompat-align-parm
-mno-compat-align-parm
പരമാവധി വിന്യാസം ഉപയോഗിച്ച് ഘടന പാരാമീറ്ററുകൾ കൈമാറാൻ (ജനറേറ്റ് ചെയ്യരുത്) കോഡ് സൃഷ്ടിക്കുക
GCC-യുടെ പഴയ പതിപ്പുകളുമായുള്ള അനുയോജ്യതയ്ക്കായി 64 ബിറ്റുകൾ.

GCC യുടെ പഴയ പതിപ്പുകൾ (4.9.0 ന് മുമ്പ്) ഒരു ഘടന പരാമീറ്റർ തെറ്റായി വിന്യസിച്ചില്ല
128-ബിറ്റ് ബൗണ്ടറിയിൽ, ആ ഘടനയിൽ 128-ബിറ്റ് ആവശ്യമുള്ള ഒരു അംഗം അടങ്ങിയിരിക്കുന്നു
വിന്യാസം. ജിസിസിയുടെ ഏറ്റവും പുതിയ പതിപ്പുകളിൽ ഇത് ശരിയാക്കിയിട്ടുണ്ട്. ഈ ഓപ്ഷൻ ഉപയോഗിക്കാം
എന്നതിന്റെ പഴയ പതിപ്പുകൾക്കൊപ്പം സമാഹരിച്ച ഫംഗ്‌ഷനുകൾക്ക് അനുയോജ്യമായ കോഡ് സൃഷ്‌ടിക്കാൻ
ജി.സി.സി.

ദി -mno-compat-align-parm ഓപ്ഷൻ സ്ഥിരസ്ഥിതിയാണ്.

RX ഓപ്ഷനുകൾ

ഈ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ RX ടാർഗെറ്റുകൾക്കായി നിർവചിച്ചിരിക്കുന്നു:

-m64bit-ഡബിൾസ്
-m32bit-ഡബിൾസ്
"ഇരട്ട" ഡാറ്റ തരം 64 ബിറ്റുകൾ ആക്കുക (-m64bit-ഡബിൾസ്) അല്ലെങ്കിൽ 32 ബിറ്റുകൾ (-m32bit-ഡബിൾസ്)
വലിപ്പത്തിൽ. സ്ഥിരസ്ഥിതിയാണ് -m32bit-ഡബിൾസ്. കുറിപ്പ് RX ഫ്ലോട്ടിംഗ് പോയിന്റ് ഹാർഡ്‌വെയർ മാത്രമേ പ്രവർത്തിക്കൂ
32-ബിറ്റ് മൂല്യങ്ങളിൽ, അതിനാലാണ് ഡിഫോൾട്ട് -m32bit-ഡബിൾസ്.

-എഫ്പിയു
-നോഫ്പു
സജ്ജമാക്കുന്നു (-എഫ്പിയു) അല്ലെങ്കിൽ അപ്രാപ്തമാക്കുന്നു (-നോഫ്പു) RX ഫ്ലോട്ടിംഗ് പോയിന്റ് ഹാർഡ്‌വെയറിന്റെ ഉപയോഗം. ദി
RX600 സീരീസിനായി ഡിഫോൾട്ട് പ്രവർത്തനക്ഷമമാക്കുകയും RX200 സീരീസിന് പ്രവർത്തനരഹിതമാക്കുകയും ചെയ്യുന്നു.

32-ബിറ്റ് ഫ്ലോട്ടിംഗ് പോയിന്റ് മൂല്യങ്ങൾക്കായി മാത്രമേ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ ജനറേറ്റ് ചെയ്യൂ,
എന്നിരുന്നാലും, FPU ഹാർഡ്‌വെയർ ഇരട്ടിയാണെങ്കിൽ ഉപയോഗിക്കില്ല -m64bit-ഡബിൾസ് ഓപ്ഷൻ ആണ്
ഉപയോഗിച്ചു.

കുറിപ്പ് എങ്കില് -എഫ്പിയു അപ്പോൾ ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാകും -funsafe-math-optimizations എന്നതും പ്രവർത്തനക്ഷമമാണ്
ഓട്ടോമാറ്റിയ്ക്കായി. RX FPU നിർദ്ദേശങ്ങൾ തന്നെ സുരക്ഷിതമല്ലാത്തതിനാലാണിത്.

-mcpu=പേര്
ടാർഗറ്റ് ചെയ്യേണ്ട RX CPU തരം തിരഞ്ഞെടുക്കുന്നു. നിലവിൽ മൂന്ന് തരം പിന്തുണയ്ക്കുന്നു,
ജനറിക് RX600 ഒപ്പം RX200 സീരീസ് ഹാർഡ്‌വെയറും നിർദ്ദിഷ്ടവും RX610 സിപിയു. സ്ഥിരസ്ഥിതിയാണ്
RX600.

തമ്മിലുള്ള വ്യത്യാസം RX600 ഒപ്പം RX610 അത് RX610 പിന്തുണയ്ക്കുന്നില്ല
"MVTIPL" നിർദ്ദേശം.

ദി RX200 സീരീസിന് ഒരു ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഇല്ല -നോഫ്പു പ്രവർത്തനക്ഷമമാക്കി
ഈ തരം തിരഞ്ഞെടുക്കുമ്പോൾ സ്ഥിരസ്ഥിതിയായി.

-mbig-endian-data
-mlittle-endian-data
ബിഗ്-എൻഡിയൻ ഫോർമാറ്റിൽ ഡാറ്റ സംഭരിക്കുക (പക്ഷേ കോഡ് അല്ല). സ്ഥിരസ്ഥിതിയാണ്
-mlittle-endian-data, അതായത് ലിറ്റിൽ-എൻഡിയൻ ഫോർമാറ്റിൽ ഡാറ്റ സംഭരിക്കുന്നതിന്.

-msmall-data-limit=N
സ്ഥാപിക്കാൻ കഴിയുന്ന ഗ്ലോബൽ, സ്റ്റാറ്റിക് വേരിയബിളുകളുടെ ബൈറ്റുകളിൽ പരമാവധി വലുപ്പം വ്യക്തമാക്കുന്നു
ചെറിയ ഡാറ്റ ഏരിയയിലേക്ക്. ചെറിയ ഡാറ്റ ഏരിയ ഉപയോഗിക്കുന്നത് ചെറുതും വേഗതയുമുള്ളതിലേക്ക് നയിച്ചേക്കാം
കോഡ്, എന്നാൽ ഏരിയയുടെ വലിപ്പം പരിമിതമാണ്, അത് പ്രോഗ്രാമർക്കാണ് അത് ഉറപ്പാക്കേണ്ടത്
പ്രദേശം കവിഞ്ഞൊഴുകുന്നില്ല. ചെറിയ ഡാറ്റ ഏരിയ RX- കളിൽ ഒന്ന് ഉപയോഗിക്കുമ്പോൾ
രജിസ്റ്ററുകൾ (സാധാരണയായി "r13") ഈ പ്രദേശത്തേക്ക് ചൂണ്ടിക്കാണിക്കുന്ന ഉപയോഗത്തിനായി നീക്കിവച്ചിരിക്കുന്നു, അതിനാൽ ഇത് ഇല്ല
കംപൈലർ ഉപയോഗിക്കുന്നതിന് കൂടുതൽ സമയം ലഭ്യമാണ്. ഇത് മന്ദഗതിയിലോ കൂടാതെ/അല്ലെങ്കിൽ വലുതോ ആയേക്കാം
ഈ രജിസ്റ്ററിൽ സൂക്ഷിക്കുന്നതിനുപകരം വേരിയബിളുകൾ സ്റ്റാക്കിലേക്ക് തള്ളുകയാണെങ്കിൽ കോഡ്.

ശ്രദ്ധിക്കുക, കോമൺ വേരിയബിളുകളും (ഇനീഷ്യലൈസ് ചെയ്തിട്ടില്ലാത്ത വേരിയബിളുകളും) സ്ഥിരാങ്കങ്ങളുമാണ്
എന്നതിലെ മറ്റ് വിഭാഗങ്ങളിലേക്ക് അസൈൻ ചെയ്‌തിരിക്കുന്നതിനാൽ ചെറിയ ഡാറ്റ ഏരിയയിൽ ഉൾപ്പെടുത്തിയിട്ടില്ല
ഔട്ട്പുട്ട് എക്സിക്യൂട്ടബിൾ.

സ്ഥിരസ്ഥിതി മൂല്യം പൂജ്യമാണ്, ഇത് ഈ സവിശേഷത പ്രവർത്തനരഹിതമാക്കുന്നു. ശ്രദ്ധിക്കുക, ഈ സവിശേഷത അല്ല
ഉയർന്ന ഒപ്റ്റിമൈസേഷൻ ലെവലുകൾക്കൊപ്പം ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കി (-O2 മുതലായവ) കാരണം
ഒരു രജിസ്റ്റർ റിസർവ് ചെയ്യുന്നതിന്റെ ദോഷകരമായ ഫലങ്ങൾ. അത് പ്രോഗ്രാമറുടെ തീരുമാനമാണ്
ഈ സവിശേഷത അവരുടെ പ്രോഗ്രാമിന് പ്രയോജനകരമാണോ എന്ന് പരീക്ഷിക്കാനും കണ്ടെത്താനും. കാണുക
യുടെ വിവരണം -mpid യഥാർത്ഥ രജിസ്റ്റർ എങ്ങനെ എന്നതിന്റെ വിവരണത്തിനുള്ള ഓപ്ഷൻ
തിരഞ്ഞെടുത്ത ചെറിയ ഡാറ്റ ഏരിയ പോയിന്റർ പിടിക്കുക.

-എംസിം
-mno-sim
സിമുലേറ്റർ റൺടൈം ഉപയോഗിക്കുക. ലിബ്ഗ്ലോസ് ബോർഡ്-നിർദ്ദിഷ്ട റൺടൈം ഉപയോഗിക്കുന്നതാണ് ഡിഫോൾട്ട്.

-mas100-വാക്യഘടന
-mno-as100-വാക്യഘടന
അസംബ്ലർ ഔട്ട്പുട്ട് സൃഷ്ടിക്കുമ്പോൾ, റെനെസാസിന്റെ AS100-ന് അനുയോജ്യമായ ഒരു വാക്യഘടന ഉപയോഗിക്കുക
അസംബ്ലർ. ഈ വാക്യഘടന GAS അസംബ്ലറിനും കൈകാര്യം ചെയ്യാൻ കഴിയും, എന്നാൽ ഇതിന് ചിലത് ഉണ്ട്
നിയന്ത്രണങ്ങൾ അതിനാൽ ഇത് സ്ഥിരസ്ഥിതിയായി സൃഷ്ടിക്കപ്പെടുന്നില്ല.

-mmax-constant-size=N
ഒരു ഓപ്പറാൻറായി ഉപയോഗിക്കാവുന്ന ഒരു സ്ഥിരാങ്കത്തിന്റെ പരമാവധി വലുപ്പം, ബൈറ്റുകളിൽ വ്യക്തമാക്കുന്നു
ഒരു RX നിർദ്ദേശം. RX ഇൻസ്ട്രക്ഷൻ സെറ്റ് 4 വരെയുള്ള സ്ഥിരാങ്കങ്ങളെ അനുവദിക്കുന്നുണ്ടെങ്കിലും
നിർദ്ദേശങ്ങളിൽ ഉപയോഗിക്കേണ്ട നീളമുള്ള ബൈറ്റുകൾ, ദൈർഘ്യമേറിയ മൂല്യം ദൈർഘ്യമേറിയതിന് തുല്യമാണ്
നിർദ്ദേശം. അതിനാൽ ചില സാഹചര്യങ്ങളിൽ വലിപ്പം പരിമിതപ്പെടുത്തുന്നത് പ്രയോജനകരമാണ്
നിർദ്ദേശങ്ങളിൽ ഉപയോഗിക്കുന്ന സ്ഥിരാങ്കങ്ങൾ. വളരെ വലുതായ സ്ഥിരാങ്കങ്ങളാണ് പകരം
സ്ഥിരമായ ഒരു പൂളിൽ സ്ഥാപിക്കുകയും രജിസ്റ്റർ പരോക്ഷമായി റഫറൻസ് ചെയ്യുകയും ചെയ്യുന്നു.

മൂല്യം N 0-നും 4-നും ഇടയിലാകാം. 0 (സ്ഥിരസ്ഥിതി) അല്ലെങ്കിൽ 4 എന്നതിന്റെ മൂല്യം അത് അർത്ഥമാക്കുന്നു
ഏത് വലുപ്പത്തിലുമുള്ള സ്ഥിരാങ്കങ്ങൾ അനുവദനീയമാണ്.

-mrelax
ലിങ്കർ റിലാക്സേഷൻ പ്രവർത്തനക്ഷമമാക്കുക. ലിങ്കർ റിലാക്സേഷൻ എന്നത് ലിങ്കർ ശ്രമിക്കുന്ന ഒരു പ്രക്രിയയാണ്
വിവിധ നിർദ്ദേശങ്ങളുടെ ചെറിയ പതിപ്പുകൾ കണ്ടെത്തി ഒരു പ്രോഗ്രാമിന്റെ വലുപ്പം കുറയ്ക്കുന്നതിന്.
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കി.

-mint-register=N
ഫാസ്റ്റ് ഇന്ററപ്റ്റ് ഹാൻഡ്‌ലർ ഫംഗ്‌ഷനുകൾക്കായി റിസർവ് ചെയ്യേണ്ട രജിസ്റ്ററുകളുടെ എണ്ണം വ്യക്തമാക്കുക. ദി
മൂല്യം N 0 നും 4 നും ഇടയിലാകാം. 1 ന്റെ മൂല്യം അർത്ഥമാക്കുന്നത് രജിസ്റ്റർ "r13" റിസർവ് ചെയ്തിരിക്കുന്നു എന്നാണ്
ഫാസ്റ്റ് ഇന്ററപ്റ്റ് ഹാൻഡ്‌ലറുകളുടെ പ്രത്യേക ഉപയോഗത്തിന്. 2 റിസർവുകളുടെ ഒരു മൂല്യം "r13" ഒപ്പം
"r12". 3 കരുതൽ "r13", "r12", "r11" എന്നിവയുടെ മൂല്യവും 4 കരുതൽ "r13" മൂല്യവും
"r10" വഴി. സ്ഥിരസ്ഥിതിയായ 0-ന്റെ മൂല്യം, രജിസ്റ്ററുകളൊന്നും റിസർവ് ചെയ്യുന്നില്ല.

-msave-ac-in-interrupts
ഇന്ററപ്റ്റ് ഹാൻഡ്‌ലർ ഫംഗ്‌ഷനുകൾ അക്യുമുലേറ്റർ രജിസ്‌റ്റർ സംരക്ഷിക്കണമെന്ന് വ്യക്തമാക്കുന്നു.
ഉദാഹരണത്തിന്, സാധാരണ കോഡ് അക്യുമുലേറ്റർ രജിസ്റ്റർ ഉപയോഗിക്കുകയാണെങ്കിൽ മാത്രമേ ഇത് ആവശ്യമുള്ളൂ
കാരണം ഇത് 64-ബിറ്റ് ഗുണനങ്ങൾ ചെയ്യുന്നു. അക്യുമുലേറ്ററിനെ അവഗണിക്കുക എന്നതാണ് സ്ഥിരസ്ഥിതി
ഇത് തടസ്സം കൈകാര്യം ചെയ്യുന്നവരെ വേഗത്തിലാക്കുന്നു.

-mpid
-mno-pid
പൊസിഷൻ ഇൻഡിപെൻഡന്റ് ഡാറ്റയുടെ ജനറേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു. പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ഇതിലേക്കുള്ള ഏതെങ്കിലും ആക്സസ്
സ്ഥിരമായ ഡാറ്റ ഒരു രജിസ്റ്ററിൽ സൂക്ഷിച്ചിരിക്കുന്ന അടിസ്ഥാന വിലാസത്തിൽ നിന്നുള്ള ഒരു ഓഫ്സെറ്റ് വഴിയാണ് ചെയ്യുന്നത്. ഈ
റൺ ടൈമിൽ ആവശ്യമില്ലാതെ സ്ഥിരമായ ഡാറ്റയുടെ സ്ഥാനം നിർണ്ണയിക്കാൻ അനുവദിക്കുന്നു
എക്സിക്യൂട്ടബിൾ മാറ്റിസ്ഥാപിക്കേണ്ടതാണ്, ഇത് ഇറുകിയതും ഉൾച്ചേർത്ത ആപ്ലിക്കേഷനുകളുടെ പ്രയോജനവുമാണ്
മെമ്മറി പരിമിതികൾ. പരിഷ്‌ക്കരിക്കാവുന്ന ഡാറ്റയെ ഈ ഓപ്ഷൻ ബാധിക്കില്ല.

ശ്രദ്ധിക്കുക, ഈ സവിശേഷത ഉപയോഗിക്കുന്നത് സ്ഥിരമായ ഡാറ്റയ്ക്കായി സാധാരണയായി "r13" എന്ന ഒരു രജിസ്‌റ്റർ റിസർവ് ചെയ്യുന്നു
അടിസ്ഥാന വിലാസം. ഇത് മന്ദഗതിയിലുള്ള കൂടാതെ/അല്ലെങ്കിൽ വലിയ കോഡിന് കാരണമാകാം, പ്രത്യേകിച്ച് സങ്കീർണ്ണമായവയിൽ
പ്രവർത്തനങ്ങൾ.

സ്ഥിരമായ ഡാറ്റാ ബേസ് വിലാസം കൈവശം വയ്ക്കാൻ തിരഞ്ഞെടുത്ത യഥാർത്ഥ രജിസ്റ്ററാണോ എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു
The -msmall-data-limit ഒപ്പം / അല്ലെങ്കിൽ -മിന്റ്-രജിസ്റ്റർ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ പ്രവർത്തനക്ഷമമാക്കി.
"r13" എന്ന രജിസ്റ്ററിൽ ആരംഭിച്ച് താഴേക്ക് പോകുമ്പോൾ, രജിസ്റ്ററുകൾ ആദ്യം അനുവദിക്കും
ആവശ്യകതകൾ നിറവേറ്റുന്നതിന് -മിന്റ്-രജിസ്റ്റർഎന്നിട്ട് -mpid ഒടുവിൽ
-msmall-data-limit. അതിനാൽ ചെറിയ ഡാറ്റ ഏരിയ രജിസ്റ്ററിന് "r8" ആകാൻ സാധിക്കും.
രണ്ടും ആണെങ്കിൽ -mint-register=4 ഒപ്പം -mpid കമാൻഡ് ലൈനിൽ വ്യക്തമാക്കിയിരിക്കുന്നു.

ഡിഫോൾട്ടായി ഈ ഫീച്ചർ പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല. വഴി സ്ഥിരസ്ഥിതി പുനഃസ്ഥാപിക്കാൻ കഴിയും -mno-pid
കമാൻഡ്-ലൈൻ ഓപ്ഷൻ.

-mno-warn-multiple-fast-interrupts
-mwarn-multiple-fast-interrupts
ഒന്നിലധികം വേഗത്തിലുള്ള തടസ്സങ്ങൾ കണ്ടെത്തിയാൽ മുന്നറിയിപ്പ് സന്ദേശം നൽകുന്നതിൽ നിന്ന് GCCയെ തടയുന്നു
ഒരു ഫയൽ കംപൈൽ ചെയ്യുമ്പോൾ ഹാൻഡ്ലർ. ഓരോ അധികത്തിനും മുന്നറിയിപ്പ് നൽകുക എന്നതാണ് സ്ഥിരസ്ഥിതി
ഫാസ്റ്റ് ഇന്ററപ്റ്റ് ഹാൻഡ്‌ലർ കണ്ടെത്തി, കാരണം RX അത്തരം ഒരു തടസ്സത്തെ മാത്രമേ പിന്തുണയ്ക്കൂ.

കുറിപ്പ്: പൊതുവായ GCC കമാൻഡ്-ലൈൻ ഓപ്ഷൻ -ഘടിപ്പിച്ചത്-reg RX-ന് പ്രത്യേക പ്രാധാന്യമുണ്ട്
"ഇന്ററപ്റ്റ്" ഫംഗ്ഷൻ ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുമ്പോൾ പോർട്ട്. ഈ ആട്രിബ്യൂട്ട് a സൂചിപ്പിക്കുന്നു
വേഗത്തിലുള്ള തടസ്സങ്ങൾ പ്രോസസ്സ് ചെയ്യാൻ ഉദ്ദേശിച്ചുള്ള പ്രവർത്തനം. രജിസ്റ്ററുകൾ മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂവെന്ന് ജിസിസി ഉറപ്പാക്കുന്നു
"r10", "r11", "r12" കൂടാതെ/അല്ലെങ്കിൽ "r13" എന്നതും സാധാരണ ഉപയോഗം
ഇതുവഴി ബന്ധപ്പെട്ട രജിസ്റ്ററുകൾ നിയന്ത്രിച്ചിരിക്കുന്നു -ഘടിപ്പിച്ചത്-reg or -മിന്റ്-രജിസ്റ്റർ
കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ.

S / 390 ഒപ്പം zSeries ഓപ്ഷനുകൾ

ഇവയൊക്കെയാണ് -m S/390, zSeries ആർക്കിടെക്ചറുകൾക്കായി നിർവചിച്ചിരിക്കുന്ന ഓപ്ഷനുകൾ.

-mhard-float
-msoft-float
ഫ്ലോട്ടിംഗിനായി ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങളും രജിസ്റ്ററുകളും ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്)
പോയിന്റ് പ്രവർത്തനങ്ങൾ. എപ്പോൾ -msoft-float വ്യക്തമാക്കിയിരിക്കുന്നു, ഇതിൽ പ്രവർത്തിക്കുന്നു libgcc.a ഉപയോഗിക്കുന്നു
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾ നടത്തുക. എപ്പോൾ -mhard-float കംപൈലർ വ്യക്തമാക്കിയിരിക്കുന്നു
IEEE ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നു. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mhard-dfp
-mno-hard-dfp
ദശാംശത്തിനായി ഹാർഡ്‌വെയർ ഡെസിമൽ-ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്)
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾ. എപ്പോൾ -mno-hard-dfp വ്യക്തമാക്കിയിരിക്കുന്നു, ഇതിൽ പ്രവർത്തിക്കുന്നു libgcc.a ആകുന്നു
ദശാംശ-ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾ നടത്താൻ ഉപയോഗിക്കുന്നു. എപ്പോൾ -mhard-dfp വ്യക്തമാക്കിയിരിക്കുന്നു, the
കംപൈലർ ഡെസിമൽ-ഫ്ലോട്ടിംഗ്-പോയിന്റ് ഹാർഡ്‌വെയർ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നു. ഇതാണ് സ്ഥിരസ്ഥിതി
വേണ്ടി -മാർച്ച്=z9-ec അല്ലെങ്കിൽ ഉയർന്നത്.

-mlong-ഇരട്ട-64
-mlong-ഇരട്ട-128
ഈ സ്വിച്ചുകൾ "നീണ്ട ഇരട്ട" തരത്തിന്റെ വലിപ്പം നിയന്ത്രിക്കുന്നു. 64 ബിറ്റുകൾ വലിപ്പം ഉണ്ടാക്കുന്നു
"ഇരട്ട" തരത്തിന് തുല്യമായ "നീണ്ട ഇരട്ട" തരം. ഇതാണ് സ്ഥിരസ്ഥിതി.

-എംബാക്ക്ചെയിൻ
-mno-backchain
വിളിക്കുന്നയാളുടെ ഫ്രെയിമിന്റെ വിലാസം ബാക്ക്‌ചെയിൻ പോയിന്ററായി സംഭരിക്കുക (സ്റ്റോർ ചെയ്യരുത്).
കോളിയുടെ സ്റ്റാക്ക് ഫ്രെയിം. ടൂളുകൾ ഉപയോഗിച്ച് ഡീബഗ്ഗിംഗ് അനുവദിക്കുന്നതിന് ഒരു ബാക്ക്ചെയിൻ ആവശ്യമായി വന്നേക്കാം
DWARF 2 കോൾ ഫ്രെയിം വിവരങ്ങൾ മനസ്സിലാകുന്നില്ല. എപ്പോൾ -mno-പാക്ക്ഡ്-സ്റ്റാക്ക് ഉണ്ട്
പ്രഭാവം, ബാക്ക്ചെയിൻ പോയിന്റർ സ്റ്റാക്ക് ഫ്രെയിമിന്റെ അടിയിൽ സൂക്ഷിക്കുന്നു; എപ്പോൾ
-പാക്ക്ഡ്-സ്റ്റാക്ക് ഫലത്തിൽ, ബാക്ക്‌ചെയിൻ എന്നതിന്റെ ഏറ്റവും ഉയർന്ന പദത്തിൽ സ്ഥാപിച്ചിരിക്കുന്നു
96/160 ബൈറ്റ് രജിസ്റ്റർ സേവ് ഏരിയ.

പൊതുവേ, കോഡ് സമാഹരിച്ചിരിക്കുന്നു -എംബാക്ക്ചെയിൻ കംപൈൽ ചെയ്ത കോഡുമായി കോൾ-അനുയോജ്യമാണ്
-mmo-backchain; എന്നിരുന്നാലും, ഡീബഗ്ഗിംഗ് ആവശ്യങ്ങൾക്കായി ബാക്ക്ചെയിൻ ഉപയോഗിക്കുന്നതിന് സാധാരണയായി ആവശ്യമാണ്
മുഴുവൻ ബൈനറിയും നിർമ്മിച്ചിരിക്കുന്നത് -എംബാക്ക്ചെയിൻ. എന്ന സംയോജനം ശ്രദ്ധിക്കുക
-എംബാക്ക്ചെയിൻ, -പാക്ക്ഡ്-സ്റ്റാക്ക് ഒപ്പം -mhard-float പിന്തുണയ്ക്കുന്നില്ല. പണിയുന്നതിനായി എ
ലിനക്സ് കേർണൽ ഉപയോഗം -msoft-float.

ബാക്ക്‌ചെയിൻ പരിപാലിക്കാതിരിക്കുക എന്നതാണ് സ്ഥിരസ്ഥിതി.

-പാക്ക്ഡ്-സ്റ്റാക്ക്
-mno-പാക്ക്ഡ്-സ്റ്റാക്ക്
പാക്ക് ചെയ്ത സ്റ്റാക്ക് ലേഔട്ട് ഉപയോഗിക്കുക (ഉപയോഗിക്കരുത്). എപ്പോൾ -mno-പാക്ക്ഡ്-സ്റ്റാക്ക് വ്യക്തമാക്കിയിരിക്കുന്നു, the
കംപൈലർ 96/160 ബൈറ്റ് രജിസ്റ്റർ സേവ് ഏരിയയുടെ എല്ലാ ഫീൽഡുകളും അവർക്കായി മാത്രം ഉപയോഗിക്കുന്നു
സ്ഥിര ഉദ്ദേശ്യം; ഉപയോഗിക്കാത്ത ഫീൽഡുകൾ ഇപ്പോഴും സ്റ്റാക്ക് സ്പേസ് എടുക്കുന്നു. എപ്പോൾ -പാക്ക്ഡ്-സ്റ്റാക്ക് is
വ്യക്തമാക്കിയിട്ടുള്ള, രജിസ്റ്റർ സേവ് സ്ലോട്ടുകൾ രജിസ്റ്റർ സേവിന്റെ മുകളിൽ സാന്ദ്രമായി പായ്ക്ക് ചെയ്തിരിക്കുന്നു
പ്രദേശം; ഉപയോഗിക്കാത്ത ഇടം മറ്റ് ആവശ്യങ്ങൾക്കായി വീണ്ടും ഉപയോഗിക്കുന്നു, ഇത് കൂടുതൽ കാര്യക്ഷമമായ ഉപയോഗത്തിന് അനുവദിക്കുന്നു
ലഭ്യമായ സ്റ്റാക്ക് സ്പേസ്. എന്നിരുന്നാലും, എപ്പോൾ -എംബാക്ക്ചെയിൻ പ്രാബല്യത്തിൽ ഉണ്ട്, ഏറ്റവും മുകളിൽ
സേവ് ഏരിയയുടെ വാക്ക് എല്ലായ്പ്പോഴും ബാക്ക്ചെയിൻ സംഭരിക്കുന്നതിന് ഉപയോഗിക്കുന്നു, കൂടാതെ റിട്ടേൺ വിലാസം
രജിസ്റ്റർ എപ്പോഴും ബാക്ക്ചെയിനിന് താഴെ രണ്ട് വാക്കുകൾ സംരക്ഷിച്ചിരിക്കുന്നു.

സ്റ്റാക്ക് ഫ്രെയിം ബാക്ക്ചെയിൻ ഉപയോഗിക്കാത്തിടത്തോളം, കോഡ് സൃഷ്ടിച്ചു -പാക്ക്ഡ്-സ്റ്റാക്ക്
ഉപയോഗിച്ച് സൃഷ്ടിച്ച കോഡുമായി കോൾ-അനുയോജ്യമാണ് -mno-പാക്ക്ഡ്-സ്റ്റാക്ക്. FSF അല്ലാത്ത ചിലത് ശ്രദ്ധിക്കുക
S/2.95-നുള്ള GCC 390 ന്റെ റിലീസുകൾ അല്ലെങ്കിൽ സ്റ്റാക്ക് ഫ്രെയിം ഉപയോഗിക്കുന്ന zSeries ജനറേറ്റഡ് കോഡ്
ഡീബഗ്ഗിംഗ് ആവശ്യങ്ങൾക്ക് മാത്രമല്ല, റൺ ടൈമിൽ ബാക്ക്ചെയിൻ. അത്തരം കോഡ് കോൾ അല്ല-
കംപൈൽ ചെയ്ത കോഡുമായി പൊരുത്തപ്പെടുന്നു -പാക്ക്ഡ്-സ്റ്റാക്ക്. കൂടാതെ, എന്നിവയുടെ സംയോജനവും ശ്രദ്ധിക്കുക
-എംബാക്ക്ചെയിൻ, -പാക്ക്ഡ്-സ്റ്റാക്ക് ഒപ്പം -mhard-float പിന്തുണയ്ക്കുന്നില്ല. പണിയുന്നതിനായി എ
ലിനക്സ് കേർണൽ ഉപയോഗം -msoft-float.

പാക്ക് ചെയ്ത സ്റ്റാക്ക് ലേഔട്ട് ഉപയോഗിക്കരുത് എന്നതാണ് ഡിഫോൾട്ട്.

-msmall-exec
-mno-small-exec
സബ്റൂട്ടീൻ ചെയ്യാൻ "ബ്രാസ്" നിർദ്ദേശം ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കുക (അല്ലെങ്കിൽ സൃഷ്ടിക്കരുത്).
വിളിക്കുന്നു. മൊത്തം എക്സിക്യൂട്ടബിൾ വലുപ്പം 64k കവിയുന്നില്ലെങ്കിൽ മാത്രമേ ഇത് വിശ്വസനീയമായി പ്രവർത്തിക്കൂ.
പകരം "basr" നിർദ്ദേശം ഉപയോഗിക്കുന്നതാണ് സ്ഥിരസ്ഥിതി, ഇതില്ല
പരിമിതപ്പെടുത്താതെ.

-m64
-m31
എപ്പോൾ -m31 വ്യക്തമാക്കിയിരിക്കുന്നു, എസ്/390 എബിഐയ്‌ക്കായി ഗ്നു/ലിനക്‌സിന് അനുസൃതമായ കോഡ് സൃഷ്‌ടിക്കുക. എപ്പോൾ
-m64 വ്യക്തമാക്കിയിരിക്കുന്നു, zSeries ABI-യ്‌ക്കായി GNU/Linux-ന് അനുയോജ്യമായ കോഡ് സൃഷ്ടിക്കുക. ഈ
പ്രത്യേകിച്ചും 64-ബിറ്റ് നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കാൻ GCC-യെ അനുവദിക്കുന്നു. വേണ്ടി സ്ക്സനുമ്ക്സ ലക്ഷ്യങ്ങൾ, ദി
സ്ഥിരസ്ഥിതിയാണ് -m31അതേസമയം s390x ലക്ഷ്യങ്ങൾ സ്ഥിരസ്ഥിതിയായി -m64.

-mzarch
-മെസ
എപ്പോൾ -mzarch വ്യക്തമാക്കിയിരിക്കുന്നു, ലഭ്യമായ നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കുക
z/വാസ്തുവിദ്യ. എപ്പോൾ -മെസ വ്യക്തമാക്കിയിരിക്കുന്നു, നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കുക
ESA/390-ൽ ലഭ്യമാണ്. അതല്ല -മെസ കൊണ്ട് സാധ്യമല്ല -m64. ഉത്പാദിപ്പിക്കുമ്പോൾ
S/390 ABI-യുടെ GNU/Linux-ന് അനുസൃതമായ കോഡ്, സ്ഥിരസ്ഥിതിയാണ് -മെസ. ഉത്പാദിപ്പിക്കുമ്പോൾ
zSeries ABI-യുടെ GNU/Linux-ന് അനുയോജ്യമായ കോഡ്, ഡിഫോൾട്ട് ആണ് -mzarch.

-mmvcle
-mno-mvcle
ബ്ലോക്ക് ചെയ്യാൻ "mvcle" നിർദ്ദേശം ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കുക (അല്ലെങ്കിൽ സൃഷ്ടിക്കരുത്).
നീക്കുന്നു. എപ്പോൾ -mno-mvcle വ്യക്തമാക്കിയിരിക്കുന്നു, പകരം ഒരു "mvc" ലൂപ്പ് ഉപയോഗിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി
വലിപ്പം ഒപ്റ്റിമൈസ് ചെയ്തില്ലെങ്കിൽ.

-mdebug
-mno-ഡീബഗ്
കംപൈൽ ചെയ്യുമ്പോൾ അധിക ഡീബഗ് വിവരങ്ങൾ പ്രിന്റ് ചെയ്യുക (അല്ലെങ്കിൽ പ്രിന്റ് ചെയ്യരുത്). സ്ഥിരസ്ഥിതിയാണ്
ഡീബഗ് വിവരങ്ങൾ അച്ചടിക്കാതിരിക്കാൻ.

-മാർച്ച്=cpu-തരം
പ്രവർത്തിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക cpu-തരം, ഇത് a പ്രതിനിധീകരിക്കുന്ന ഒരു സിസ്റ്റത്തിന്റെ പേരാണ്
ചില പ്രോസസ്സർ തരം. സാധ്യമായ മൂല്യങ്ങൾ cpu-തരം ആകുന്നു g5, g6, z900, z990, z9-109,
z9-ec, z10, z196, zEC12, ഒപ്പം z13. നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് കോഡ് സൃഷ്ടിക്കുമ്പോൾ
z/ആർക്കിടെക്ചറിൽ ലഭ്യമാണ്, സ്ഥിരസ്ഥിതിയാണ് -മാർച്ച്=z900. അല്ലെങ്കിൽ, സ്ഥിരസ്ഥിതിയാണ്
-മാർച്ച്=ജി5.

-mtune=cpu-തരം
ട്യൂൺ ചെയ്യുക cpu-തരം എബിഐ ഒഴികെ ജനറേറ്റ് ചെയ്ത കോഡിന് ബാധകമായ എല്ലാം
ലഭ്യമായ നിർദ്ദേശങ്ങളുടെ കൂട്ടവും. യുടെ പട്ടിക cpu-തരം മൂല്യങ്ങൾ എന്നതിന് തുല്യമാണ്
- മാർച്ച്. ഇതിനായി ഉപയോഗിക്കുന്ന മൂല്യമാണ് ഡിഫോൾട്ട് - മാർച്ച്.

-mtpf-ട്രേസ്
-mno-tpf-trace
ദിനചര്യകൾ കണ്ടെത്തുന്നതിന് TPF OS നിർദ്ദിഷ്ട ശാഖകളിൽ ചേർക്കുന്ന (ചേർക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ. ഇതിനായി കംപൈൽ ചെയ്യുമ്പോൾ പോലും ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി ഓഫാണ്
ടിപിഎഫ് ഒഎസ്.

-mfused-madd
-mno-fused-madd
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഗുണിക്കുകയും ശേഖരിക്കുകയും ചെയ്യുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
നിർദ്ദേശങ്ങൾ. ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റാണെങ്കിൽ ഈ നിർദ്ദേശങ്ങൾ ഡിഫോൾട്ടായി ജനറേറ്റുചെയ്യുന്നു
ഉപയോഗിക്കുന്നു.

-mwarn-framesize=ചട്ടക്കൂടിന്റെ വലുപ്പം
നിലവിലെ ഫംഗ്‌ഷൻ നൽകിയിരിക്കുന്ന ഫ്രെയിം വലുപ്പം കവിയുന്നുവെങ്കിൽ ഒരു മുന്നറിയിപ്പ് നൽകുക. കാരണം ഇത്
ഒരു കംപൈൽ-ടൈം ചെക്ക് പ്രോഗ്രാം പ്രവർത്തിക്കുമ്പോൾ അത് ഒരു യഥാർത്ഥ പ്രശ്നമാകേണ്ടതില്ല. അത്
ഒരു സ്റ്റാക്ക് ഓവർഫ്ലോയ്ക്ക് കാരണമാകുന്ന ഫംഗ്ഷനുകൾ തിരിച്ചറിയാൻ ഉദ്ദേശിച്ചുള്ളതാണ്. അത്
പരിമിതമായ സ്റ്റാക്ക് വലുപ്പമുള്ള ഒരു പരിതസ്ഥിതിയിൽ ഉപയോഗിക്കാൻ ഉപയോഗപ്രദമാണ് ഉദാ ലിനക്സ് കേർണൽ.

-mwarn-dynamicstack
ഫംഗ്‌ഷൻ "alloca" എന്ന് വിളിക്കുകയോ ഡൈനാമിക്-സൈസ് അറേകൾ ഉപയോഗിക്കുകയോ ചെയ്താൽ ഒരു മുന്നറിയിപ്പ് നൽകുക. ഈ
പരിമിതമായ സ്റ്റാക്ക് വലുപ്പമുള്ള പൊതുവെ ഒരു മോശം ആശയമാണ്.

-mstack-guard=സ്റ്റാക്ക്-ഗാർഡ്
-mstack-size=സ്റ്റാക്ക്-വലിപ്പം
ഈ ഓപ്‌ഷനുകൾ നൽകിയിട്ടുണ്ടെങ്കിൽ, S/390 ബാക്ക് എൻഡ് അധിക നിർദ്ദേശങ്ങൾ പുറപ്പെടുവിക്കുന്നു
സ്റ്റാക്ക് വലുപ്പമാണെങ്കിൽ ഒരു ട്രാപ്പ് പ്രവർത്തനക്ഷമമാക്കുന്ന ഫംഗ്ഷൻ പ്രോലോഗ് സ്റ്റാക്ക്-ഗാർഡ് മുകളിൽ ബൈറ്റുകൾ
സ്റ്റാക്ക്-വലിപ്പം (S/390-ലെ സ്റ്റാക്ക് താഴേക്ക് വളരുന്നുവെന്നത് ഓർക്കുക). എങ്കിൽ സ്റ്റാക്ക്-ഗാർഡ്
കംപൈൽ ചെയ്ത ഫ്രെയിമിന്റെ വലുപ്പത്തേക്കാൾ 2 വലിയ പവർ ഒഴിവാക്കിയിരിക്കുന്നു
ഫംഗ്ഷൻ തിരഞ്ഞെടുത്തു. ഈ ഓപ്‌ഷനുകൾ ഡീബഗ്ഗിംഗ് സ്റ്റാക്കിനെ സഹായിക്കാൻ ഉദ്ദേശിച്ചുള്ളതാണ്
ഓവർഫ്ലോ പ്രശ്നങ്ങൾ. അധികമായി പുറത്തുവിടുന്ന കോഡ് കുറച്ച് ഓവർഹെഡിന് കാരണമാകുന്നു
അതിനാൽ കൂടുതൽ പ്രകടനമില്ലാതെ ഉൽപ്പാദനം പോലുള്ള സംവിധാനങ്ങളിലും ഉപയോഗിക്കാം
തരംതാഴ്ത്തൽ. നൽകിയിരിക്കുന്ന മൂല്യങ്ങൾ 2 ന്റെയും കൃത്യമായ പവറുകളുമായിരിക്കണം സ്റ്റാക്ക്-വലിപ്പം ആയിരിക്കണം
എന്നതിനേക്കാൾ വലുത് സ്റ്റാക്ക്-ഗാർഡ് 64k കവിയാതെ. കൂടുതൽ കാര്യക്ഷമമാക്കാൻ വേണ്ടി
മൂല്യവുമായി വിന്യസിച്ചിരിക്കുന്ന വിലാസത്തിൽ സ്റ്റാക്ക് ആരംഭിക്കുന്നു എന്ന അനുമാനം കോഡ് ഉണ്ടാക്കുന്നു
നൽകിയ സ്റ്റാക്ക്-വലിപ്പം. ദി സ്റ്റാക്ക്-ഗാർഡ് എന്നതിനൊപ്പം മാത്രമേ ഓപ്ഷൻ ഉപയോഗിക്കാനാകൂ
സ്റ്റാക്ക്-വലിപ്പം.

-mhotpatch=പ്രീ-അർദ്ധവാക്കുകൾ,പോസ്റ്റ്-അർദ്ധവാക്കുകൾ
ഹോട്ട്പാച്ച് ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ, ഒരു "ഹോട്ട്-പാച്ചിംഗ്" ഫംഗ്‌ഷൻ പ്രോലോഗ് ജനറേറ്റുചെയ്യും
കംപൈലേഷൻ യൂണിറ്റിലെ എല്ലാ പ്രവർത്തനങ്ങളും. ഫംഗ്ഷൻ ലേബൽ നൽകിയിരിക്കുന്നത് കൊണ്ട് മുൻകൂട്ടി തയ്യാറാക്കിയതാണ്
രണ്ട്-ബൈറ്റ് NOP നിർദ്ദേശങ്ങളുടെ എണ്ണം (പ്രീ-അർദ്ധവാക്കുകൾ, പരമാവധി 1000000). ശേഷം
ലേബൽ, 2 * പോസ്റ്റ്-അർദ്ധവാക്കുകൾ നിർദ്ദേശങ്ങൾ പോലെയുള്ള ഏറ്റവും വലിയ NOP ഉപയോഗിച്ച് ബൈറ്റുകൾ കൂട്ടിച്ചേർക്കുന്നു
ആർക്കിടെക്ചർ അനുവദിക്കുന്നു (പരമാവധി 1000000).

രണ്ട് ആർഗ്യുമെന്റുകളും പൂജ്യമാണെങ്കിൽ, ഹോട്ട്പാച്ചിംഗ് പ്രവർത്തനരഹിതമാക്കും.

"hotpatch" ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് വ്യക്തിഗത ഫംഗ്‌ഷനുകൾക്കായി ഈ ഓപ്ഷൻ അസാധുവാക്കാവുന്നതാണ്.

സ്കോർ ഓപ്ഷനുകൾ

സ്കോർ നടപ്പിലാക്കലുകൾക്കായി ഈ ഓപ്‌ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-മെബ്
ബിഗ്-എൻഡിയൻ മോഡിനുള്ള കോഡ് കംപൈൽ ചെയ്യുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-മെൽ
ലിറ്റിൽ-എൻഡിയൻ മോഡിനുള്ള കോഡ് കംപൈൽ ചെയ്യുക.

-mnhwloop
"bcnz" നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നത് പ്രവർത്തനരഹിതമാക്കുക.

-മുൾസ്
വിന്യസിക്കാത്ത ലോഡും സ്റ്റോർ നിർദ്ദേശങ്ങളും സൃഷ്ടിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.

-എംഎംഎസി
മൾട്ടിപ്ലൈ-അക്മുലേറ്റ് നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക. സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കി.

-എംസ്‌കോർ 5
ടാർഗെറ്റ് ആർക്കിടെക്ചറായി SCORE5 വ്യക്തമാക്കുക.

-mscore5u
ടാർഗെറ്റ് ആർക്കിടെക്ചറിന്റെ SCORE5U വ്യക്തമാക്കുക.

-എംസ്‌കോർ 7
ടാർഗെറ്റ് ആർക്കിടെക്ചറായി SCORE7 വ്യക്തമാക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mscore7d
ടാർഗെറ്റ് ആർക്കിടെക്ചറായി SCORE7D വ്യക്തമാക്കുക.

SH ഓപ്ഷനുകൾ

ഇവ -m SH നടപ്പിലാക്കലുകൾക്കായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-m1 SH1-നുള്ള കോഡ് സൃഷ്ടിക്കുക.

-m2 SH2-നുള്ള കോഡ് സൃഷ്ടിക്കുക.

-m2e
SH2e-യ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക.

-m2a-nofpu
FPU ഇല്ലാതെ SH2a-യ്‌ക്കോ ഒരു SH2a-FPU-യ്‌ക്കോ വേണ്ടി കോഡ് സൃഷ്‌ടിക്കുക
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഉപയോഗിക്കുന്നില്ല.

-m2a-ഒറ്റ-മാത്രം
ഇരട്ട-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റ് ഇല്ലാത്ത വിധത്തിൽ SH2a-FPU-യ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക
പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നു.

-m2a-ഒറ്റ
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഒറ്റ കൃത്യതയിലാണെന്ന് അനുമാനിച്ച് SH2a-FPU-യ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക
സ്ഥിരസ്ഥിതിയായി മോഡ്.

-m2a
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഇരട്ട കൃത്യതയിലാണെന്ന് അനുമാനിച്ച് SH2a-FPU-യ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക
സ്ഥിരസ്ഥിതിയായി മോഡ്.

-m3 SH3-നുള്ള കോഡ് സൃഷ്ടിക്കുക.

-m3e
SH3e-യ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക.

-m4-nofpu
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഇല്ലാതെ SH4-നായി കോഡ് സൃഷ്ടിക്കുക.

-m4-ഒറ്റയ്ക്ക് മാത്രം
സിംഗിൾ-നെ മാത്രം പിന്തുണയ്ക്കുന്ന ഫ്ലോട്ടിംഗ്-പോയിന്റ് യൂണിറ്റ് ഉപയോഗിച്ച് SH4-നായി കോഡ് സൃഷ്ടിക്കുക
കൃത്യമായ ഗണിതശാസ്ത്രം.

-m4-ഒറ്റ
ഫ്ലോട്ടിംഗ്-പോയിന്റ് യൂണിറ്റ് സിംഗിൾ-പ്രിസിഷൻ മോഡിൽ ആണെന്ന് കരുതി SH4-നായി കോഡ് സൃഷ്ടിക്കുക
സ്ഥിരസ്ഥിതിയായി.

-m4 SH4-നുള്ള കോഡ് സൃഷ്ടിക്കുക.

-m4-100
SH4-100 എന്നതിനായി കോഡ് സൃഷ്ടിക്കുക.

-m4-100-nofpu
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഉപയോഗിക്കാത്ത വിധത്തിൽ SH4-100-നായി കോഡ് സൃഷ്ടിക്കുക.

-m4-100-ഒറ്റ
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് സിംഗിൾ പ്രിസിഷൻ മോഡിൽ ആണെന്ന് കരുതി SH4-100-ന് കോഡ് സൃഷ്ടിക്കുക
സ്ഥിരസ്ഥിതിയായി.

-m4-100-ഒറ്റ-മാത്രം
ഇരട്ട-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റ് ഇല്ലാത്ത വിധത്തിൽ SH4-100-ന് കോഡ് സൃഷ്ടിക്കുക
പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നു.

-m4-200
SH4-200 എന്നതിനായി കോഡ് സൃഷ്ടിക്കുക.

-m4-200-nofpu
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഇല്ലാത്ത വിധത്തിൽ SH4-200 നായി കോഡ് സൃഷ്ടിക്കുക
ഉപയോഗിച്ചു.

-m4-200-ഒറ്റ
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് സിംഗിൾ പ്രിസിഷൻ മോഡിൽ ആണെന്ന് കരുതി SH4-200-ന് കോഡ് സൃഷ്ടിക്കുക
സ്ഥിരസ്ഥിതിയായി.

-m4-200-ഒറ്റ-മാത്രം
ഇരട്ട-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റ് ഇല്ലാത്ത വിധത്തിൽ SH4-200-ന് കോഡ് സൃഷ്ടിക്കുക
പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നു.

-m4-300
SH4-300 എന്നതിനായി കോഡ് സൃഷ്ടിക്കുക.

-m4-300-nofpu
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഇല്ലാത്ത വിധത്തിൽ SH4-300 നായി കോഡ് സൃഷ്ടിക്കുക
ഉപയോഗിച്ചു.

-m4-300-ഒറ്റ
ഇരട്ട-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റ് ഇല്ലാത്ത വിധത്തിൽ SH4-300-ന് കോഡ് സൃഷ്ടിക്കുക
പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നു.

-m4-300-ഒറ്റ-മാത്രം
ഇരട്ട-പ്രിസിഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റ് ഇല്ലാത്ത വിധത്തിൽ SH4-300-ന് കോഡ് സൃഷ്ടിക്കുക
പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നു.

-m4-340
SH4-340 എന്നതിനായി കോഡ് സൃഷ്ടിക്കുക (MMU ഇല്ല, FPU ഇല്ല).

-m4-500
SH4-500 എന്നതിനായി കോഡ് സൃഷ്ടിക്കുക (FPU ഇല്ല). കടന്നുപോകുന്നു -isa=sh4-nofpu അസംബ്ലർക്ക്.

-m4a-nofpu
SH4al-dsp-യ്‌ക്കോ SH4a-യ്‌ക്കോ വേണ്ടി ഫ്ലോട്ടിംഗ് പോയിന്റ് തരത്തിൽ കോഡ് സൃഷ്‌ടിക്കുക
യൂണിറ്റ് ഉപയോഗിക്കുന്നില്ല.

-m4a-ഒറ്റ-മാത്രം
ഇരട്ട കൃത്യതയുള്ള ഫ്ലോട്ടിംഗ് പോയിന്റ് ഇല്ലാത്ത വിധത്തിൽ SH4a-യ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക
പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നു.

-m4a-ഒറ്റ
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഏക-കൃത്യതയിലാണെന്ന് അനുമാനിച്ച് SH4a-യ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക
സ്ഥിരസ്ഥിതിയായി മോഡ്.

-m4a
SH4a-യ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുക.

-m4al
അതുപോലെ തന്നെ -m4a-nofpu, അത് പരോക്ഷമായി കടന്നുപോകുന്നതൊഴിച്ചാൽ -dsp അസംബ്ലർക്ക്. ജി.സി.സി
ഇപ്പോൾ DSP നിർദ്ദേശങ്ങളൊന്നും സൃഷ്ടിക്കുന്നില്ല.

-m5-32media
SHmedia-യ്‌ക്കായി 32-ബിറ്റ് കോഡ് സൃഷ്‌ടിക്കുക.

-m5-32media-nofpu
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഇല്ലാത്ത വിധത്തിൽ SHmedia-യ്‌ക്കായി 32-ബിറ്റ് കോഡ് സൃഷ്‌ടിക്കുക
ഉപയോഗിച്ചു.

-m5-64media
SHmedia-യ്‌ക്കായി 64-ബിറ്റ് കോഡ് സൃഷ്‌ടിക്കുക.

-m5-64media-nofpu
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഇല്ലാത്ത വിധത്തിൽ SHmedia-യ്‌ക്കായി 64-ബിറ്റ് കോഡ് സൃഷ്‌ടിക്കുക
ഉപയോഗിച്ചു.

-m5-കോംപാക്റ്റ്
SHcompact-നായി കോഡ് സൃഷ്ടിക്കുക.

-m5-കോംപാക്ട്-നോഫ്പു
ഫ്ലോട്ടിംഗ് പോയിന്റ് യൂണിറ്റ് ഉപയോഗിക്കാത്ത വിധത്തിൽ SHcompact-നായി കോഡ് സൃഷ്ടിക്കുക.

-mb ബിഗ്-എൻഡിയൻ മോഡിൽ പ്രോസസറിനായുള്ള കോഡ് കംപൈൽ ചെയ്യുക.

- മില്ലി ലിറ്റിൽ-എൻഡിയൻ മോഡിൽ പ്രോസസറിനായുള്ള കോഡ് കംപൈൽ ചെയ്യുക.

-mdalign
64-ബിറ്റ് ബൗണ്ടറികളിൽ ഡബിൾസ് വിന്യസിക്കുക. ഇത് കോളിംഗ് കൺവെൻഷനുകളെ മാറ്റുന്നുവെന്നത് ശ്രദ്ധിക്കുക,
അതിനാൽ നിങ്ങൾ വീണ്ടും കംപൈൽ ചെയ്തില്ലെങ്കിൽ സ്റ്റാൻഡേർഡ് സി ലൈബ്രറിയിൽ നിന്നുള്ള ചില പ്രവർത്തനങ്ങൾ പ്രവർത്തിക്കില്ല
അത് ആദ്യം കൂടെ -mdalign.

-mrelax
സാധ്യമാകുമ്പോൾ, ലിങ്ക് സമയത്ത് ചില വിലാസ റഫറൻസുകൾ ചുരുക്കുക; ലിങ്കർ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു
-ശാന്തമാകൂ.

-mbigtable
"സ്വിച്ച്" പട്ടികകളിൽ 32-ബിറ്റ് ഓഫ്സെറ്റുകൾ ഉപയോഗിക്കുക. 16-ബിറ്റ് ഓഫ്‌സെറ്റുകൾ ഉപയോഗിക്കുന്നതാണ് സ്ഥിരസ്ഥിതി.

-mbitops
SH2A-യിൽ ബിറ്റ് മാനിപ്പുലേഷൻ നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക.

-mfmovd
"fmovd" നിർദ്ദേശത്തിന്റെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക. ചെക്ക് -mdalign വിന്യാസ നിയന്ത്രണങ്ങൾക്കായി.

-മ്രെനെസാസ്
റെനെസാസ് നിർവചിച്ചിരിക്കുന്ന കോളിംഗ് കൺവെൻഷനുകൾ പാലിക്കുക.

-mno-renesas
റെനെസാസ് കൺവെൻഷനുകൾക്ക് മുമ്പ് ജിസിസിക്ക് വേണ്ടി നിർവചിച്ചിരിക്കുന്ന കോളിംഗ് കൺവെൻഷനുകൾ പാലിക്കുക
ലഭ്യമായിരുന്നു. SH ടൂൾചെയിനിന്റെ എല്ലാ ടാർഗെറ്റുകൾക്കും ഈ ഓപ്ഷൻ ഡിഫോൾട്ടാണ്.

-mnomacsave
"MAC" രജിസ്റ്ററിനെ കോൾ-ക്ലോബർഡ് ആയി അടയാളപ്പെടുത്തുക, എങ്കിൽ പോലും -മ്രെനെസാസ് കൊടുത്തു.

-മീ
-mno-ieee
ഫ്ലോട്ടിംഗ് പോയിന്റ് താരതമ്യങ്ങളുടെ IEEE പാലിക്കൽ നിയന്ത്രിക്കുക, ഇത് കൈകാര്യം ചെയ്യലിനെ ബാധിക്കുന്നു
ഒരു താരതമ്യത്തിന്റെ ഫലം ക്രമരഹിതമായ കേസുകളിൽ. സ്ഥിരസ്ഥിതിയായി -മീ is
പരോക്ഷമായി പ്രവർത്തനക്ഷമമാക്കി. എങ്കിൽ -ഫിനിറ്റ്-ഗണിതം-മാത്രം പ്രവർത്തനക്ഷമമാക്കി -mno-ieee പരോക്ഷമായി സജ്ജീകരിച്ചിരിക്കുന്നു,
ഇത് വേഗതയേറിയ ഫ്ലോട്ടിംഗ് പോയിന്റ് വലിയ-തുല്യവും കുറവ്-തുല്യവുമായ താരതമ്യങ്ങൾക്ക് കാരണമാകുന്നു. ദി
ഇംപ്ലിസിറ്റ് ക്രമീകരണങ്ങൾ ഒന്നുകിൽ വ്യക്തമാക്കിയുകൊണ്ട് അസാധുവാക്കാവുന്നതാണ് -മീ or -mno-ieee.

-minline-ic_invalidate
നെസ്റ്റഡ് ഫംഗ്‌ഷൻ സജ്ജീകരിച്ചതിന് ശേഷം ഇൻസ്ട്രക്ഷൻ കാഷെ എൻട്രികൾ അസാധുവാക്കാൻ ഇൻലൈൻ കോഡ്
ട്രാംപോളിൻ. എങ്കിൽ ഈ ഓപ്ഷന് യാതൊരു ഫലവുമില്ല -മ്യൂസർമോഡ് പ്രാബല്യത്തിലുള്ളതും തിരഞ്ഞെടുത്തതുമാണ്
കോഡ് ജനറേഷൻ ഓപ്ഷൻ (ഉദാ -m4) "icbi" നിർദ്ദേശത്തിന്റെ ഉപയോഗം അനുവദിക്കുന്നില്ല.
തിരഞ്ഞെടുത്ത കോഡ് ജനറേഷൻ ഓപ്ഷൻ "icbi" ഉപയോഗിക്കാൻ അനുവദിക്കുന്നില്ലെങ്കിൽ
നിർദ്ദേശം, ഒപ്പം -മ്യൂസർമോഡ് പ്രാബല്യത്തിൽ ഇല്ല, ഇൻലൈൻ ചെയ്ത കോഡ് കൈകാര്യം ചെയ്യുന്നു
ഒരു അസോസിയേറ്റീവ് റൈറ്റിനൊപ്പം നേരിട്ട് നിർദ്ദേശ കാഷെ വിലാസ അറേ. ഇത് മാത്രമല്ല
റൺ ടൈമിൽ പ്രിവിലേജ്ഡ് മോഡ് ആവശ്യമാണ്, എന്നാൽ കാഷെ ലൈൻ ആയിരുന്നെങ്കിൽ അതും പരാജയപ്പെടും
TLB വഴി മാപ്പ് ചെയ്‌ത് മാപ്പ് ചെയ്യാത്തതായി മാറി.

- തെറ്റിദ്ധരിപ്പിക്കുക
അസംബ്ലി കോഡിൽ നിർദ്ദേശ വലുപ്പവും സ്ഥാനവും ഡംപ് ചെയ്യുക.

-പാഡ്സ്ട്രക്റ്റ്
ഈ ഓപ്ഷൻ ഒഴിവാക്കിയിരിക്കുന്നു. ഇത് ഘടനകളെ 4 ബൈറ്റുകളുടെ ഗുണിതങ്ങളാക്കി മാറ്റുന്നു, അതായത്
എസ്എച്ച് എബിഐയുമായി പൊരുത്തപ്പെടുന്നില്ല.

-matomic-model=മാതൃക
ആറ്റോമിക് പ്രവർത്തനങ്ങളുടെ മാതൃകയും അധിക പാരാമീറ്ററുകളും കോമയായി വേർതിരിച്ചിരിക്കുന്നു
പട്ടിക. ആറ്റോമിക് ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകളെക്കുറിച്ചുള്ള വിശദാംശങ്ങൾക്ക് കാണുക __ആറ്റോമിക് ബിൽറ്റിനുകൾ. ദി
ഇനിപ്പറയുന്ന മോഡലുകളും പാരാമീറ്ററുകളും പിന്തുണയ്ക്കുന്നു:

ആരും
കംപൈലർ ജനറേറ്റഡ് ആറ്റോമിക് സീക്വൻസുകൾ പ്രവർത്തനരഹിതമാക്കുകയും ആറ്റോമിക്കായി ലൈബ്രറി കോളുകൾ പുറപ്പെടുവിക്കുകയും ചെയ്യുക
പ്രവർത്തനങ്ങൾ. ലക്ഷ്യം "sh*-*-linux*" അല്ലെങ്കിൽ ഇതാണ് സ്ഥിരസ്ഥിതി.

മൃദു-ഗുസ
ആറ്റോമിക് ബിൽറ്റ്-നു വേണ്ടി ഗ്നു/ലിനക്സ് അനുയോജ്യമായ gUSA സോഫ്റ്റ്‌വെയർ ആറ്റോമിക് സീക്വൻസുകൾ സൃഷ്ടിക്കുക.
പ്രവർത്തനങ്ങളിൽ. ജനറേറ്റ് ചെയ്ത ആറ്റോമിക് സീക്വൻസുകൾക്ക് അധിക പിന്തുണ ആവശ്യമാണ്
സിസ്റ്റത്തിന്റെ ഇന്ററപ്റ്റ്/എക്‌സെപ്‌ഷൻ ഹാൻഡ്‌ലിംഗ് കോഡ്, SH3* എന്നിവയ്ക്ക് മാത്രം അനുയോജ്യമാണ്
SH4* സിംഗിൾ കോർ സിസ്റ്റങ്ങൾ. ടാർഗെറ്റ് ആയിരിക്കുമ്പോൾ ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കും
"sh*-*-linux*" കൂടാതെ SH3* അല്ലെങ്കിൽ SH4*. ലക്ഷ്യം SH4A ആയിരിക്കുമ്പോൾ, ഈ ഓപ്ഷനും
"movli.l", "movco.l" എന്നീ ഹാർഡ്‌വെയർ ആറ്റോമിക് നിർദ്ദേശങ്ങൾ ഭാഗികമായി ഉപയോഗിക്കുന്നു
അല്ലാതെ കൂടുതൽ കാര്യക്ഷമമായ കോഡ് സൃഷ്ടിക്കുക കണിശമായ വ്യക്തമാക്കിയിട്ടുണ്ട്.

soft-tcb
ത്രെഡ് നിയന്ത്രണത്തിൽ ഒരു വേരിയബിൾ ഉപയോഗിക്കുന്ന സോഫ്റ്റ്‌വെയർ ആറ്റോമിക് സീക്വൻസുകൾ സൃഷ്ടിക്കുക
തടയുക. ഇത് SH1*-ലും ഉപയോഗിക്കാവുന്ന gUSA സീക്വൻസുകളുടെ ഒരു വ്യതിയാനമാണ്
കൂടാതെ SH2* ലക്ഷ്യങ്ങളും. ജനറേറ്റഡ് ആറ്റോമിക് സീക്വൻസുകൾക്ക് അധിക പിന്തുണ ആവശ്യമാണ്
സിസ്റ്റത്തിന്റെ ഇന്ററപ്റ്റ്/എക്‌സെപ്‌ഷൻ ഹാൻഡ്‌ലിംഗ് കോഡ്, ഇവയ്ക്ക് മാത്രം അനുയോജ്യമാണ്
സിംഗിൾ-കോർ സിസ്റ്റങ്ങൾ. ഈ മോഡൽ ഉപയോഗിക്കുമ്പോൾ, ദി gbr-offset= പരാമീറ്റർ ആയിരിക്കണം
അതുപോലെ വ്യക്തമാക്കിയിട്ടുണ്ട്.

മൃദു-ഇമാസ്ക്
ക്രമീകരണം വഴി തടസ്സങ്ങൾ താൽക്കാലികമായി പ്രവർത്തനരഹിതമാക്കുന്ന സോഫ്റ്റ്‌വെയർ ആറ്റോമിക് സീക്വൻസുകൾ സൃഷ്ടിക്കുക
"SR.IMASK = 1111". പ്രോഗ്രാം പ്രത്യേക മോഡിൽ പ്രവർത്തിക്കുമ്പോൾ മാത്രമേ ഈ മോഡൽ പ്രവർത്തിക്കൂ
കൂടാതെ സിംഗിൾ കോർ സിസ്റ്റങ്ങൾക്ക് മാത്രം അനുയോജ്യമാണ്. ൽ നിന്നുള്ള അധിക പിന്തുണ
സിസ്റ്റത്തിന്റെ തടസ്സം/ഒഴിവാക്കൽ കൈകാര്യം ചെയ്യൽ കോഡ് ആവശ്യമില്ല. ഈ മോഡൽ
ലക്ഷ്യം "sh*-*-linux*" ഉം SH1* അല്ലെങ്കിൽ SH2* ആയിരിക്കുമ്പോൾ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുന്നു.

ഹാർഡ്-എൽഎൽസിഎസ്
"movli.l", "movco.l" നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് ഹാർഡ്‌വെയർ ആറ്റോമിക് സീക്വൻസുകൾ സൃഷ്ടിക്കുക
മാത്രം. ഇത് SH4A-യിൽ മാത്രമേ ലഭ്യമാകൂ, മൾട്ടി-കോർ സിസ്റ്റങ്ങൾക്ക് അനുയോജ്യമാണ്.
ഹാർഡ്‌വെയർ നിർദ്ദേശങ്ങൾ 32 ബിറ്റ് ആറ്റോമിക് വേരിയബിളുകൾ 8-ലേയ്‌ക്ക് മാത്രമേ പിന്തുണയ്‌ക്കുന്നുള്ളൂ എന്നതിനാൽ
അല്ലെങ്കിൽ 16 ബിറ്റ് വേരിയബിളുകൾ 32 ബിറ്റ് ആക്‌സസ് ഉപയോഗിച്ച് അനുകരിക്കുന്നു. ഇതുപയോഗിച്ചാണ് കോഡ് തയ്യാറാക്കിയത്
മറ്റ് സോഫ്‌റ്റ്‌വെയർ ആറ്റോമിക് മോഡൽ ഇന്ററപ്റ്റ്/എക്‌സെപ്‌ഷനുമായി ഓപ്‌ഷൻ പൊരുത്തപ്പെടുന്നു
ഒരു SH4A സിസ്റ്റത്തിൽ എക്സിക്യൂട്ട് ചെയ്താൽ കൈകാര്യം ചെയ്യാനുള്ള സംവിധാനങ്ങൾ. ൽ നിന്നുള്ള അധിക പിന്തുണ
ഈ മോഡലിന് സിസ്റ്റത്തിന്റെ ഇന്ററപ്റ്റ്/എക്‌സെപ്ഷൻ ഹാൻഡ്‌ലിംഗ് കോഡ് ആവശ്യമില്ല.

gbr-offset=
ത്രെഡ് കൺട്രോളിലെ വേരിയബിളിന്റെ ബൈറ്റുകളിൽ ഓഫ്സെറ്റ് ഈ പരാമീറ്റർ വ്യക്തമാക്കുന്നു
ജനറേറ്റഡ് ആറ്റോമിക് സീക്വൻസുകൾ ഉപയോഗിക്കേണ്ട ബ്ലോക്ക് ഘടന
soft-tcb മോഡൽ തിരഞ്ഞെടുത്തു. മറ്റ് മോഡലുകൾക്ക് ഈ പരാമീറ്റർ അവഗണിക്കപ്പെടുന്നു.
നിർദ്ദിഷ്ട മൂല്യം നാലിന്റെ ഒരു പൂർണ്ണ ഗുണിതവും 0-1020 ശ്രേണിയിൽ ആയിരിക്കണം.

കണിശമായ
ഈ പരാമീറ്റർ ഒന്നിലധികം ആറ്റോമിക് മോഡലുകളുടെ മിശ്രിതമായ ഉപയോഗം തടയുന്നു, അവ ആണെങ്കിലും
അനുയോജ്യമായ, കൂടാതെ കംപൈലറിനെ നിർദ്ദിഷ്ട ആറ്റോമിക് സീക്വൻസുകൾ സൃഷ്ടിക്കുന്നു
മോഡൽ മാത്രം.

-mtas
"__atomic_test_and_set" എന്നതിനായി "tas.b" ഒപ്‌കോഡ് സൃഷ്ടിക്കുക. എന്നതിനെ ആശ്രയിച്ച് ശ്രദ്ധിക്കുക
പ്രത്യേക ഹാർഡ്‌വെയർ, സോഫ്‌റ്റ്‌വെയർ കോൺഫിഗറേഷൻ ഇത് മൊത്തത്തിലുള്ള പ്രകടനത്തെ നശിപ്പിക്കും
"tas.b" നിർദ്ദേശം സൂചിപ്പിക്കുന്ന ഓപ്പറാൻറ് കാഷെ ലൈൻ ഫ്ലഷുകൾ കാരണം. ഓൺ
മൾട്ടി-കോർ SH4A പ്രോസസറുകൾ "tas.b" നിർദ്ദേശങ്ങൾ ജാഗ്രതയോടെ ഉപയോഗിക്കണം
ചില കാഷെ കോൺഫിഗറേഷനുകൾക്കായി ഡാറ്റ അഴിമതിക്ക് കാരണമാകാം.

-മുമ്പ് മറന്നു
പൊസിഷൻ-ഇൻഡിപെൻഡന്റ് കോഡ് സൃഷ്ടിക്കുമ്പോൾ, ഗ്ലോബൽ ഓഫ്‌സെറ്റ് ഉപയോഗിച്ച് ഫംഗ്‌ഷൻ കോളുകൾ എമിറ്റ് ചെയ്യുക
നടപടിക്രമ ലിങ്കേജ് ടേബിളിന് പകരം പട്ടിക.

-മ്യൂസർമോഡ്
-mno-usermode
പ്രത്യേക മോഡ് കോഡ് സൃഷ്ടിക്കുന്ന കംപൈലറിനെ അനുവദിക്കരുത് (അനുവദിക്കുക). വ്യക്തമാക്കുന്നത്
-മ്യൂസർമോഡ് എന്നും സൂചിപ്പിക്കുന്നു -mno-inline-ic_invalidate ഇൻലൈൻ ചെയ്ത കോഡ് പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ
ഉപയോക്തൃ മോഡിൽ. -മ്യൂസർമോഡ് ലക്ഷ്യം "sh*-*-linux*" ആയിരിക്കുമ്പോൾ സ്ഥിരസ്ഥിതിയാണ്. എങ്കിൽ
ലക്ഷ്യം SH1* അല്ലെങ്കിൽ SH2* ആണ് -മ്യൂസർമോഡ് ഉപയോക്തൃ മോഡ് ഇല്ലാത്തതിനാൽ യാതൊരു ഫലവുമില്ല.

-multcost=അക്കം
ഒരു ഗുണിത ഇൻസ്‌നിനുള്ള ചെലവ് സജ്ജീകരിക്കുക.

-mdiv=കൗശലം
പൂർണ്ണസംഖ്യ വിഭജന പ്രവർത്തനങ്ങൾക്കായി ഉപയോഗിക്കേണ്ട ഡിവിഷൻ തന്ത്രം സജ്ജമാക്കുക. എസ്എച്ച്മീഡിയയ്ക്ക് വേണ്ടി
കൗശലം ഇവയിലൊന്ന് ആകാം:

fp ഫ്ലോട്ടിംഗ് പോയിന്റിൽ പ്രവർത്തനം നടത്തുന്നു. ഇതിന് വളരെ ഉയർന്ന കാലതാമസമുണ്ട്, പക്ഷേ ആവശ്യമുണ്ട്
കുറച്ച് നിർദ്ദേശങ്ങൾ മാത്രം, അതിനാൽ നിങ്ങളുടെ കോഡിന് ആവശ്യത്തിന് ഉണ്ടെങ്കിൽ അത് ഒരു നല്ല തിരഞ്ഞെടുപ്പായിരിക്കാം
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഷെഡ്യൂൾ ചെയ്യാൻ കംപൈലറെ അനുവദിക്കുന്നതിന് എളുപ്പത്തിൽ ചൂഷണം ചെയ്യാവുന്ന ILP
നിർദ്ദേശങ്ങൾക്കൊപ്പം മറ്റ് നിർദ്ദേശങ്ങളും. പൂജ്യത്താൽ വിഭജനം കാരണമാകുന്നു a
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഒഴിവാക്കൽ.

ക്ഷണം വിഭജനത്തിന്റെ വിപരീതം കണക്കാക്കാൻ പൂർണ്ണസംഖ്യ പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നു, തുടർന്ന്
വിപരീതം കൊണ്ട് ലാഭവിഹിതം ഗുണിക്കുന്നു. ഈ തന്ത്രം CSE, ഹോയിസ്റ്റിംഗ് എന്നിവ അനുവദിക്കുന്നു
വിപരീത കണക്കുകൂട്ടലിന്റെ. പൂജ്യം കൊണ്ട് വിഭജനം ഒരു അവ്യക്തമായ ഫലം കണക്കാക്കുന്നു,
പക്ഷേ കുടുക്കില്ല.

inv:minlat
ന്റെ ഒരു വകഭേദം ക്ഷണം എവിടെ, CSE അല്ലെങ്കിൽ ഹോയിസ്റ്റിംഗ് അവസരങ്ങൾ കണ്ടെത്തിയില്ലെങ്കിൽ, അല്ലെങ്കിൽ
മുഴുവൻ പ്രവർത്തനവും അതേ സ്ഥലത്തേക്ക് ഉയർത്തി, അവസാന ഘട്ടങ്ങൾ
വിപരീത കണക്കുകൂട്ടൽ മൊത്തത്തിൽ കുറയ്ക്കുന്നതിന് അന്തിമ ഗുണനവുമായി ഇഴചേർന്നിരിക്കുന്നു
ലേറ്റൻസി, കുറച്ച് നിർദ്ദേശങ്ങൾ കൂടി ഉപയോഗിക്കുന്നതിന്റെ ചെലവിൽ, അങ്ങനെ കുറച്ച് ഓഫർ ചെയ്യുന്നു
മറ്റ് കോഡ് ഉപയോഗിച്ച് അവസരങ്ങൾ ഷെഡ്യൂൾ ചെയ്യുന്നു.

വിളി
സാധാരണയായി നടപ്പിലാക്കുന്ന ഒരു ലൈബ്രറി ഫംഗ്‌ഷനെ വിളിക്കുന്നു inv:minlat തന്ത്രം. ഈ
"m5-*media-nofpu" സമാഹാരങ്ങൾക്ക് ഉയർന്ന കോഡ് സാന്ദ്രത നൽകുന്നു.

കോൾ 2
ഒരേ ലൈബ്രറി ഫംഗ്‌ഷന്റെ മറ്റൊരു എൻട്രി പോയിന്റ് ഉപയോഗിക്കുന്നു, അവിടെ അത് അനുമാനിക്കുന്നു a
ഒരു ലുക്ക്അപ്പ് ടേബിളിലേക്കുള്ള പോയിന്റർ ഇതിനകം സജ്ജീകരിച്ചിട്ടുണ്ട്, ഇത് പോയിന്റർ ലോഡ് തുറന്നുകാട്ടുന്നു
സിഎസ്ഇയിലേക്കും കോഡ് ഹോസ്റ്റിംഗ് ഒപ്റ്റിമൈസേഷനുകളിലേക്കും.

inv:കോൾ
inv:കോൾ2
inv:fp
ഉപയോഗിക്കുക ക്ഷണം പ്രാരംഭ കോഡ് സൃഷ്ടിക്കുന്നതിനുള്ള അൽഗോരിതം, എന്നാൽ കോഡ് നിലനിൽക്കുകയാണെങ്കിൽ
ഒപ്റ്റിമൈസ് ചെയ്യാത്തത്, ഇതിലേക്ക് മടങ്ങുക വിളി, കോൾ 2, അഥവാ fp യഥാക്രമം തന്ത്രങ്ങൾ. അതല്ല
പൂജ്യം കൊണ്ട് വിഭജിക്കുന്നതിന്റെ സാധ്യതയുള്ള പാർശ്വഫലം ഒരു പ്രത്യേകം വഹിക്കുന്നു
നിർദ്ദേശം, അതിനാൽ എല്ലാ പൂർണ്ണസംഖ്യ നിർദ്ദേശങ്ങളും ഉയർത്തിയിരിക്കാൻ സാധ്യതയുണ്ട്,
എന്നാൽ പാർശ്വഫലങ്ങളുടെ മാർക്കർ അത് ഉള്ളിടത്ത് തന്നെ തുടരും. ഒരു പുനഃസംയോജനം
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഓപ്പറേഷൻസ് അല്ലെങ്കിൽ ഒരു കോൾ ആ സാഹചര്യത്തിൽ സാധ്യമല്ല.

Inv20u
Inv20l
യുടെ വകഭേദങ്ങൾ inv:minlat തന്ത്രം. വിപരീത കണക്കുകൂട്ടൽ എന്ന സാഹചര്യത്തിൽ
ഗുണനത്തിൽ നിന്ന് വേർതിരിക്കുന്നില്ല, ഡിവിഡന്റ് യോജിക്കുന്നിടത്ത് അവ വിഭജനത്തെ വേഗത്തിലാക്കുന്നു
20 ബിറ്റുകളിലേക്ക് (ബാധകമാകുന്നിടത്ത് പ്ലസ് ചിഹ്നം) ഒരു എണ്ണം ഒഴിവാക്കുന്നതിന് ഒരു ടെസ്റ്റ് തിരുകുക
ഈ കേസിൽ പ്രവർത്തനങ്ങൾ; ഈ ടെസ്റ്റ് വലിയ ഡിവിഡന്റുകളുടെ കാര്യത്തിൽ വേഗത കുറയ്ക്കുന്നു.
Inv20u അത്തരമൊരു ചെറിയ ലാഭവിഹിതം സാധ്യതയില്ലെന്ന് അനുമാനിക്കുന്നു, ഒപ്പം Inv20l
സാധ്യതയുണ്ടെന്ന് അനുമാനിക്കുന്നു.

SHmedia ഒഴികെയുള്ള ലക്ഷ്യങ്ങൾക്കായി കൗശലം ഇവയിലൊന്ന് ആകാം:

കോൾ-div1
സിംഗിൾ-സ്റ്റെപ്പ് ഡിവിഷൻ നിർദ്ദേശം "div1" ഉപയോഗിക്കുന്ന ഒരു ലൈബ്രറി ഫംഗ്‌ഷനെ വിളിക്കുന്നു
ഓപ്പറേഷൻ നടത്തുക. പൂജ്യം കൊണ്ട് വിഭജനം ഒരു വ്യക്തമാക്കാത്ത ഫലം കണക്കാക്കുകയും ചെയ്യുന്നു
കെണിയല്ല. SH4, SH2A, SHcompact എന്നിവ ഒഴികെയുള്ള ഡിഫോൾട്ടാണിത്.

കോൾ-എഫ്പി
ഇരട്ട പ്രിസിഷൻ ഫ്ലോട്ടിംഗിൽ പ്രവർത്തനം നടത്തുന്ന ഒരു ലൈബ്രറി ഫംഗ്‌ഷനെ വിളിക്കുന്നു
പോയിന്റ്. പൂജ്യം കൊണ്ട് വിഭജിക്കുന്നത് ഒരു ഫ്ലോട്ടിംഗ് പോയിന്റ് ഒഴിവാക്കലിന് കാരണമാകുന്നു. ഇതാണ് സ്ഥിരസ്ഥിതി
FPU ഉള്ള SHcompact-നായി. ഇരട്ടി ഇല്ലാത്ത ടാർഗെറ്റുകൾക്കായി ഇത് വ്യക്തമാക്കുന്നു
കൃത്യമായ എഫ്പിയു ഡിഫോൾട്ടായി "കോൾ-ഡിവ്1".

കോൾ-ടേബിൾ
ചെറിയ വിഭജനങ്ങൾക്കായി ഒരു ലുക്ക്അപ്പ് ടേബിൾ ഉപയോഗിക്കുന്ന ഒരു ലൈബ്രറി ഫംഗ്‌ഷനെ വിളിക്കുന്നു
വലിയ വിഭജനങ്ങൾക്കുള്ള കേസ് വ്യത്യാസമുള്ള "div1" നിർദ്ദേശം. പൂജ്യം കൊണ്ട് ഹരണം
ഒരു വ്യക്തതയില്ലാത്ത ഫലം കണക്കാക്കുന്നു, ട്രാപ്പ് ചെയ്യുന്നില്ല. ഇത് SH4-ന്റെ സ്ഥിരസ്ഥിതിയാണ്.
ഡൈനാമിക് ഷിഫ്റ്റ് നിർദ്ദേശങ്ങൾ ഡിഫോൾട്ടുകളില്ലാത്ത ടാർഗെറ്റുകൾക്കായി ഇത് വ്യക്തമാക്കുന്നു
"call-div1" എന്നതിലേക്ക്.

ഒരു ഡിവിഷൻ തന്ത്രം വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, ഡിഫോൾട്ട് സ്ട്രാറ്റജി അടിസ്ഥാനമാക്കിയാണ് തിരഞ്ഞെടുക്കുന്നത്
നിലവിലെ ലക്ഷ്യത്തിൽ. SH2A യുടെ സ്ഥിരസ്ഥിതി തന്ത്രം "divs", "divu" എന്നിവ ഉപയോഗിക്കുക എന്നതാണ്.
ലൈബ്രറി ഫംഗ്‌ഷൻ കോളുകൾക്ക് പകരം നിർദ്ദേശങ്ങൾ.

-മക്യുമുലേറ്റ്-ഔട്ട്‌ഗോയിംഗ്-ആർഗ്സ്
ഫംഗ്‌ഷൻ പ്രോലോഗിലെ ഔട്ട്‌ഗോയിംഗ് ആർഗ്യുമെന്റുകൾക്കായി ഒരു തവണ സ്ഥലം റിസർവ് ചെയ്യുക
ഓരോ കോളും. പ്രകടനത്തിനും വലുപ്പത്തിനും സാധാരണയായി പ്രയോജനകരമാണ്. അഴിക്കുന്നതിനും ആവശ്യമാണ്
സോപാധിക കോഡിന് ചുറ്റുമുള്ള സ്റ്റാക്ക് ഫ്രെയിം മാറ്റുന്നത് ഒഴിവാക്കാൻ.

-mdivsi3_libfunc=പേര്
32-ബിറ്റ് സൈൻ ചെയ്ത ഡിവിഷനിൽ ഉപയോഗിക്കുന്ന ലൈബ്രറി ഫംഗ്‌ഷന്റെ പേര് സജ്ജീകരിക്കുക പേര്. ഈ
എന്നതിൽ ഉപയോഗിച്ചിരിക്കുന്ന പേരിനെ മാത്രമേ ബാധിക്കുകയുള്ളൂ വിളി ഒപ്പം inv:കോൾ വിഭജന തന്ത്രങ്ങൾ, കൂടാതെ
ഇതുപോലെയുള്ള ഇൻപുട്ട്/ഔട്ട്പുട്ട്/ക്ലോബർഡ് രജിസ്റ്ററുകൾ കംപൈലർ ഇപ്പോഴും പ്രതീക്ഷിക്കുന്നു
ഓപ്ഷൻ ഉണ്ടായിരുന്നില്ല.

-mfixed-range=രജിസ്റ്റർ-പരിധി
നൽകിയിരിക്കുന്ന രജിസ്റ്റർ ശ്രേണിയെ നിശ്ചിത രജിസ്റ്ററുകളായി കണക്കാക്കുന്ന കോഡ് സൃഷ്ടിക്കുക. ഒരു നിശ്ചിത രജിസ്റ്റർ
രജിസ്റ്റർ അലോക്കേറ്റർക്ക് ഉപയോഗിക്കാൻ കഴിയാത്ത ഒന്നാണ്. കേർണൽ കംപൈൽ ചെയ്യുമ്പോൾ ഇത് ഉപയോഗപ്രദമാണ്
കോഡ്. ഒരു ഡാഷ് കൊണ്ട് വേർതിരിക്കുന്ന രണ്ട് രജിസ്റ്ററുകളായി ഒരു രജിസ്റ്റർ ശ്രേണി വ്യക്തമാക്കിയിരിക്കുന്നു. ഒന്നിലധികം
രജിസ്റ്റർ ശ്രേണികൾ ഒരു കോമ ഉപയോഗിച്ച് വേർതിരിക്കാവുന്നതാണ്.

-mindexed-addressing
SHmedia32/SHcompact-നായി ഇൻഡക്‌സ് ചെയ്‌ത വിലാസ മോഡിന്റെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക. ഇത് മാത്രം
ഹാർഡ്‌വെയറും കൂടാതെ/അല്ലെങ്കിൽ OS ഇൻഡെക്‌സ് ചെയ്‌തവയ്‌ക്കായി 32-ബിറ്റ് റാപ്-എറൗണ്ട് സെമാന്റിക്‌സ് നടപ്പിലാക്കുകയാണെങ്കിൽ സുരക്ഷിതമാണ്
വിലാസം മോഡ്. 64-ബിറ്റ് ഉപയോഗിച്ച് പ്രോസസ്സറുകൾ നടപ്പിലാക്കാൻ ആർക്കിടെക്ചർ അനുവദിക്കുന്നു
MMU, OS-ന് 32-ബിറ്റ് വിലാസം ലഭിക്കാൻ ഉപയോഗിക്കാമായിരുന്നു, എന്നാൽ നിലവിൽ ഹാർഡ്‌വെയർ ഇല്ലാത്തതിനാൽ
ഇൻഡക്‌സ് ചെയ്‌ത അഡ്രസ്‌സിംഗ് മോഡ് സുരക്ഷിതമാക്കാൻ ഇത് അല്ലെങ്കിൽ മറ്റേതെങ്കിലും മാർഗ്ഗം നടപ്പിലാക്കൽ പിന്തുണയ്ക്കുന്നു
32-ബിറ്റ് എബിഐയിൽ ഉപയോഗിക്കുന്നതിന്, സ്ഥിരസ്ഥിതിയാണ് -mno-indexed-addressing.

-mgettrcost=അക്കം
"gettr" നിർദ്ദേശത്തിന് വേണ്ടിയുള്ള ചെലവ് സജ്ജീകരിക്കുക അക്കം. എങ്കിൽ സ്ഥിരസ്ഥിതി 2 ആണ്
-mpt-fixed പ്രാബല്യത്തിൽ ഉണ്ട്, അല്ലാത്തപക്ഷം 100.

-mpt-fixed
"pt*" നിർദ്ദേശങ്ങൾ ട്രാപ്പ് ചെയ്യില്ലെന്ന് കരുതുക. ഇത് സാധാരണയായി മികച്ച ഷെഡ്യൂൾ ചെയ്ത കോഡ് സൃഷ്ടിക്കുന്നു,
എന്നാൽ നിലവിലുള്ള ഹാർഡ്‌വെയറിൽ സുരക്ഷിതമല്ല. നിലവിലെ വാസ്തുവിദ്യയുടെ നിർവചനം അത് പറയുന്നു
"ptabs" ഉം "ptrel" ട്രാപ്പും 3 ഉപയോഗിച്ച് ലക്ഷ്യം 3 ആകുമ്പോൾ.
a
ശാഖ, അല്ലെങ്കിൽ അവയെ ഒരു ലൂപ്പിൽ നിന്ന് ഉയർത്തുക. ഉദാഹരണത്തിന്, "__do_global_ctors", ഒരു ഭാഗം
libgcc പ്രോഗ്രാം സ്റ്റാർട്ടപ്പിൽ കൺസ്ട്രക്‌റ്ററുകളെ പ്രവർത്തിപ്പിക്കുന്ന, ഒരു ലിസ്റ്റിലെ ഫംഗ്‌ഷനുകൾ വിളിക്കുന്നു
-1 കൊണ്ട് വേർതിരിച്ചിരിക്കുന്നു. കൂടെ -mpt-fixed ഓപ്ഷൻ, "ptabs" പരീക്ഷിക്കുന്നതിന് മുമ്പ് ചെയ്തു
എതിരെ -1. അതിനർത്ഥം എല്ലാ കൺസ്ട്രക്റ്ററുകളും കുറച്ച് വേഗത്തിൽ പ്രവർത്തിക്കുന്നു, എന്നാൽ എപ്പോൾ
ലിസ്റ്റിന്റെ അവസാനം ലൂപ്പ് വരുന്നു, "ptabs" -1-ലേക്ക് ലോഡ് ചെയ്യുന്നതിനാൽ പ്രോഗ്രാം ക്രാഷാകുന്നു
ടാർഗെറ്റ് രജിസ്റ്റർ.

നിലവിലെ ആർക്കിടെക്ചർ നടപ്പിലാക്കുന്ന ഏതെങ്കിലും ഹാർഡ്‌വെയറിന് ഈ ഓപ്ഷൻ സുരക്ഷിതമല്ലാത്തതിനാൽ
സ്പെസിഫിക്കേഷൻ, ഡിഫോൾട്ട് ആണ് -mno-pt-fixed. കൂടെ വ്യക്തമായി വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ
-mgettrcost, -mno-pt-fixed എന്നും സൂചിപ്പിക്കുന്നു -mgettrcost=100; ഇത് രജിസ്ട്രേഷനെ തടയുന്നു
സാധാരണ പൂർണ്ണസംഖ്യകൾ സംഭരിക്കുന്നതിന് ടാർഗെറ്റ് രജിസ്റ്ററുകൾ ഉപയോഗിക്കുന്നതിൽ നിന്നുള്ള വിഹിതം.

അസാധുവായ ചിഹ്നങ്ങൾ
ചിഹ്നങ്ങൾ അസാധുവായിരിക്കാം എന്ന് കരുതുക. കംപൈലർ സൃഷ്ടിച്ച സാധാരണ ഫംഗ്‌ഷൻ ചിഹ്നങ്ങൾ
"movi"/"shori"/"ptabs" അല്ലെങ്കിൽ "movi"/"shori"/"ptrel" എന്നിവ ഉപയോഗിച്ച് ലോഡ് ചെയ്യാൻ എപ്പോഴും സാധുതയുള്ളവയാണ്, എന്നാൽ
അസംബ്ലർ കൂടാതെ/അല്ലെങ്കിൽ ലിങ്കർ തന്ത്രങ്ങൾ ഉപയോഗിച്ച്, കാരണമാകുന്ന ചിഹ്നങ്ങൾ സൃഷ്ടിക്കാൻ സാധിക്കും
കുടുക്കാൻ "ptabs" അല്ലെങ്കിൽ "ptrel". ഈ ഓപ്‌ഷൻ എപ്പോൾ മാത്രമേ അർത്ഥമുള്ളൂ -mno-pt-fixed ഉണ്ട്
ഫലം. ഇത് ക്രോസ്-ബേസിക്-ബ്ലോക്ക് CSE, ഹോയിസ്റ്റിംഗ്, ചിഹ്നത്തിന്റെ ഏറ്റവും കൂടുതൽ ഷെഡ്യൂൾ ചെയ്യൽ എന്നിവ തടയുന്നു
ലോഡ്സ്. സ്ഥിരസ്ഥിതിയാണ് -mno-അസാധുവായ-ചിഹ്നങ്ങൾ.

-mbranch-cost=സംഖ്യ
കരുതുക സംഖ്യ ഒരു ബ്രാഞ്ച് നിർദ്ദേശത്തിനുള്ള ചെലവ്. ഉയർന്ന സംഖ്യകൾ കംപൈലർ ഉണ്ടാക്കുന്നു
സാധ്യമെങ്കിൽ കൂടുതൽ ബ്രാഞ്ച് രഹിത കോഡ് സൃഷ്ടിക്കാൻ ശ്രമിക്കുക. വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ മൂല്യം
കംപൈൽ ചെയ്യുന്ന പ്രോസസ്സർ തരം അനുസരിച്ച് തിരഞ്ഞെടുത്തു.

-mzdcbranch
-mno-zdcbranch
സീറോ ഡിസ്‌പ്ലേസ്‌മെന്റ് സോപാധിക ബ്രാഞ്ച് നിർദ്ദേശങ്ങൾ "bt" എന്ന് ഊഹിക്കുക (ഊഹിക്കരുത്).
"bf" വേഗതയുള്ളതാണ്. എങ്കിൽ -mzdcbranch വ്യക്തമാക്കിയിരിക്കുന്നു, കംപൈലർ പൂജ്യം സ്ഥാനചലനം തിരഞ്ഞെടുക്കുന്നു
ബ്രാഞ്ച് കോഡ് ക്രമങ്ങൾ. SH4-നുള്ള കോഡ് സൃഷ്ടിക്കുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കും
SH4A. വ്യക്തമാക്കുന്നതിലൂടെ ഇത് വ്യക്തമായി പ്രവർത്തനരഹിതമാക്കാം -mno-zdcbranch.

-mcbranch-force-delay-slot
സോപാധിക ശാഖകൾക്കായി കാലതാമസം സ്ലോട്ടുകളുടെ ഉപയോഗം നിർബന്ധമാക്കുക, ഇത് കാലതാമസം സ്ലോട്ട് നിറയ്ക്കുന്നു
അനുയോജ്യമായ ഒരു നിർദ്ദേശം കണ്ടെത്താൻ കഴിയുന്നില്ലെങ്കിൽ "നോപ്പ്" ഉപയോഗിച്ച്. സ്ഥിരസ്ഥിതിയായി ഈ ഓപ്ഷൻ ആണ്
വികലാംഗൻ. ഒറിജിനലിൽ കാണുന്നതുപോലെ ഹാർഡ്‌വെയർ ബഗുകൾക്ക് ചുറ്റും പ്രവർത്തിക്കാൻ ഇത് പ്രവർത്തനക്ഷമമാക്കാം
SH7055.

-mfused-madd
-mno-fused-madd
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഗുണിക്കുകയും ശേഖരിക്കുകയും ചെയ്യുന്ന (ഉപയോഗിക്കാത്ത) കോഡ് സൃഷ്ടിക്കുക
നിർദ്ദേശങ്ങൾ. ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റാണെങ്കിൽ ഈ നിർദ്ദേശങ്ങൾ ഡിഫോൾട്ടായി ജനറേറ്റുചെയ്യുന്നു
ഉപയോഗിക്കുന്നു. യന്ത്രത്തെ ആശ്രയിച്ചിരിക്കുന്നു -mfused-madd ഓപ്ഷൻ ഇപ്പോൾ മെഷീനിലേക്ക് മാപ്പ് ചെയ്തിട്ടുണ്ട്-
സ്വതന്ത്രമായ -ffp-contract=വേഗത ഓപ്ഷൻ, ഒപ്പം -mno-fused-madd എന്നതിലേക്ക് മാപ്പ് ചെയ്തിരിക്കുന്നു
-ffp-contract=ഓഫ്.

-mfsca
-mno-fsca
സൈൻ, കോസൈൻ എന്നിവയ്ക്കുള്ള "fsca" നിർദ്ദേശം പുറപ്പെടുവിക്കാൻ കംപൈലറിനെ അനുവദിക്കുക അല്ലെങ്കിൽ അനുവദിക്കാതിരിക്കുക
ഏകദേശ കണക്കുകൾ. ഓപ്ഷൻ -mfsca എന്നിവയുമായി സംയോജിപ്പിച്ച് ഉപയോഗിക്കണം
-funsafe-math-optimizations. SH4A-യ്‌ക്കായി കോഡ് സൃഷ്‌ടിക്കുമ്പോൾ ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുന്നു.
ഉപയോഗിക്കുന്നു -mno-fsca സൈൻ, കോസൈൻ എന്നിവയുടെ ഏകദേശ കണക്കുകൾ പ്രവർത്തനരഹിതമാക്കുന്നു
-funsafe-math-optimizations പ്രാബല്യത്തിൽ ഉണ്ട്.

-mfsrra
-mno-fsrra
പരസ്പര ചതുരത്തിനുള്ള "fsrra" നിർദ്ദേശം പുറപ്പെടുവിക്കാൻ കംപൈലറിനെ അനുവദിക്കുക അല്ലെങ്കിൽ അനുവദിക്കാതിരിക്കുക
റൂട്ട് ഏകദേശങ്ങൾ. ഓപ്ഷൻ -mfsrra എന്നിവയുമായി സംയോജിപ്പിച്ച് ഉപയോഗിക്കണം
-funsafe-math-optimizations ഒപ്പം -ഫിനിറ്റ്-ഗണിതം-മാത്രം. എപ്പോൾ സ്ഥിരസ്ഥിതിയായി ഇത് പ്രവർത്തനക്ഷമമാക്കും
SH4A-നുള്ള കോഡ് സൃഷ്ടിക്കുന്നു. ഉപയോഗിക്കുന്നത് -mno-fsrra പരസ്പര സ്ക്വയർ റൂട്ട് പ്രവർത്തനരഹിതമാക്കുന്നു
എങ്കിൽ പോലും ഏകദേശ കണക്കുകൾ -funsafe-math-optimizations ഒപ്പം -ഫിനിറ്റ്-ഗണിതം-മാത്രം ഉണ്ട്
ഇഫക്ട്.

-നടക്കുക-ചലിക്കുക
സോപാധികമായ നീക്കത്തിനുള്ള നിർദ്ദേശങ്ങൾക്കായി സീറോ-ഡിസ്‌പ്ലേസ്‌മെന്റ് സോപാധിക ശാഖകൾ തിരഞ്ഞെടുക്കുക
പാറ്റേണുകൾ. ഇത് SH4 പ്രോസസറിൽ വേഗതയേറിയ കോഡ് ഉണ്ടാക്കും.

സൊളാരിസ് 2 ഓപ്ഷനുകൾ

ഇവ -m സോളാരിസ് 2-ൽ ഓപ്ഷനുകൾ പിന്തുണയ്ക്കുന്നു:

-mclear-hwcap
-mclear-hwcap സൃഷ്ടിച്ച ഹാർഡ്‌വെയർ കഴിവുകൾ നീക്കം ചെയ്യാൻ കമ്പൈലറോട് പറയുന്നു
സോളാരിസ് അസംബ്ലർ. ഒബ്ജക്റ്റ് ഫയലുകൾ ISA എക്സ്റ്റൻഷനുകൾ ഉപയോഗിക്കാത്തപ്പോൾ മാത്രമേ ഇത് ആവശ്യമുള്ളൂ
നിലവിലെ മെഷീൻ പിന്തുണയ്ക്കുന്നു, എന്നാൽ അവ ഉപയോഗിക്കണോ വേണ്ടയോ എന്ന് റൺടൈമിൽ പരിശോധിക്കുക.

-മിമ്പൂർ-ടെക്സ്റ്റ്
-മിമ്പൂർ-ടെക്സ്റ്റ്, കൂടാതെ ഉപയോഗിക്കുന്നു - പങ്കിട്ടു, കംപൈലറോട് കടന്നുപോകരുതെന്ന് പറയുന്നു -z ടെക്സ്റ്റ് ലേക്ക്
പങ്കിട്ട ഒബ്‌ജക്‌റ്റ് ലിങ്കുചെയ്യുമ്പോൾ ലിങ്കർ. ഈ ഓപ്ഷൻ ഉപയോഗിച്ച്, നിങ്ങൾക്ക് സ്ഥാനം ലിങ്ക് ചെയ്യാം-
ഒരു പങ്കിട്ട ഒബ്‌ജക്‌റ്റിലേക്ക് ആശ്രിത കോഡ്.

-മിമ്പൂർ-ടെക്സ്റ്റ് "സ്ഥലമാറ്റങ്ങൾ അനുവദിക്കാവുന്നതിനെതിരെ നിലനിൽക്കുന്നു, പക്ഷേ എഴുതാൻ കഴിയില്ല
വിഭാഗങ്ങൾ" ലിങ്കർ പിശക് സന്ദേശം. എന്നിരുന്നാലും, ആവശ്യമായ സ്ഥലംമാറ്റങ്ങൾ കോപ്പി-ഓൺ- ട്രിഗർ ചെയ്യുന്നു
എഴുതുക, പങ്കിട്ട ഒബ്‌ജക്റ്റ് യഥാർത്ഥത്തിൽ പ്രക്രിയകളിലുടനീളം പങ്കിടില്ല. ഇതിനുപകരമായി
ഉപയോഗിച്ച് -മിമ്പൂർ-ടെക്സ്റ്റ്, നിങ്ങൾ എല്ലാ സോഴ്സ് കോഡും കംപൈൽ ചെയ്യണം -fpic or -fPIC.

സോളാരിസ് 2-ൽ മുകളിൽ പറഞ്ഞവ കൂടാതെ ഈ സ്വിച്ചുകൾ പിന്തുണയ്ക്കുന്നു:

-പ്ത്രെഡുകൾ
POSIX ത്രെഡ്‌സ് ലൈബ്രറി ഉപയോഗിച്ച് മൾട്ടിത്രെഡിംഗിനുള്ള പിന്തുണ ചേർക്കുക. ഈ ഓപ്ഷൻ സജ്ജമാക്കുന്നു
പ്രീപ്രൊസസ്സറിനും ലിങ്കറിനും വേണ്ടിയുള്ള ഫ്ലാഗുകൾ. ഈ ഓപ്ഷൻ ത്രെഡിനെ ബാധിക്കില്ല
കംപൈലർ നിർമ്മിച്ച ഒബ്‌ജക്റ്റ് കോഡിന്റെ അല്ലെങ്കിൽ അത് വിതരണം ചെയ്ത ലൈബ്രറികളുടെ സുരക്ഷ.

-pthread
എന്നതിന്റെ പര്യായപദമാണിത് -പ്ത്രെഡുകൾ.

സ്പാർക്ക് ഓപ്ഷനുകൾ

ഇവ -m SPARC-ൽ ഓപ്ഷനുകൾ പിന്തുണയ്ക്കുന്നു:

-mno-app-regs
-മാപ്പ്-റെഗ്സ്
വ്യക്തമാക്കുക -മാപ്പ്-റെഗ്സ് 2 മുതൽ 4 വരെയുള്ള ആഗോള രജിസ്റ്ററുകൾ ഉപയോഗിച്ച് ഔട്ട്പുട്ട് സൃഷ്ടിക്കാൻ
SPARC SVR4 ABI അപേക്ഷകൾക്കായി കരുതിവച്ചിരിക്കുന്നു. ആഗോള രജിസ്റ്റർ 1 പോലെ, ഓരോ ആഗോള
2 മുതൽ 4 വരെയുള്ള രജിസ്‌റ്റർ പിന്നീട് ഒരു അലോക്കബിൾ രജിസ്‌റ്ററായി കണക്കാക്കുന്നു
ഫംഗ്ഷൻ കോളുകൾ. ഇതാണ് സ്ഥിരസ്ഥിതി.

ചില പ്രകടന നഷ്ടങ്ങളുടെ ചെലവിൽ പൂർണ്ണമായും SVR4 ABI-അനുസരണമുള്ളതായിരിക്കാൻ, വ്യക്തമാക്കുക
-mno-app-regs. ഈ ഓപ്ഷൻ ഉപയോഗിച്ച് നിങ്ങൾ ലൈബ്രറികളും സിസ്റ്റം സോഫ്റ്റ്വെയറും കംപൈൽ ചെയ്യണം.

- mflat
-mno-ഫ്ലാറ്റ്
കൂടെ - mflat, കംപൈലർ സേവ്/പുനഃസ്ഥാപിക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നില്ല കൂടാതെ a ഉപയോഗിക്കുന്നു
"ഫ്ലാറ്റ്" അല്ലെങ്കിൽ സിംഗിൾ രജിസ്റ്റർ വിൻഡോ മോഡൽ. ഈ മോഡൽ പതിവുമായി പൊരുത്തപ്പെടുന്നു
രജിസ്റ്റർ വിൻഡോ മോഡൽ. പ്രാദേശിക രജിസ്റ്ററുകളും ഇൻപുട്ട് രജിസ്റ്ററുകളും (0--5) ഇപ്പോഴും നിലവിലുണ്ട്
"കോൾ-സേവ്ഡ്" രജിസ്റ്ററുകളായി കണക്കാക്കുകയും ആവശ്യാനുസരണം സ്റ്റാക്കിൽ സൂക്ഷിക്കുകയും ചെയ്യുന്നു.

കൂടെ -mno-ഫ്ലാറ്റ് (സ്ഥിരസ്ഥിതി), കംപൈലർ സേവ്/പുനഃസ്ഥാപിക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നു (ഒഴികെ
ഇല പ്രവർത്തനങ്ങൾക്കായി). ഇതാണ് സാധാരണ ഓപ്പറേറ്റിംഗ് മോഡ്.

-mfpu
-mhard-float
ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ അടങ്ങിയ ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mno-fpu
-msoft-float
ഫ്ലോട്ടിംഗ് പോയിന്റിനായി ലൈബ്രറി കോളുകൾ അടങ്ങിയ ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക. മുന്നറിയിപ്പ്: ആവശ്യമായ
എല്ലാ SPARC ലക്ഷ്യങ്ങൾക്കും ലൈബ്രറികൾ ലഭ്യമല്ല. സാധാരണയായി സൗകര്യങ്ങൾ
മെഷീന്റെ സാധാരണ സി കംപൈലർ ഉപയോഗിക്കുന്നു, പക്ഷേ ഇത് നേരിട്ട് ക്രോസിൽ ചെയ്യാൻ കഴിയില്ല.
സമാഹാരം. അനുയോജ്യമായ ലൈബ്രറി നൽകുന്നതിന് നിങ്ങൾ സ്വന്തം ക്രമീകരണം ചെയ്യണം
ക്രോസ്-കംപൈലേഷനുള്ള പ്രവർത്തനങ്ങൾ. ഉൾച്ചേർത്ത ലക്ഷ്യങ്ങൾ സ്പാർക്-*-ഔട്ട് ഒപ്പം സ്പാർക്ലൈറ്റ്-*-*
സോഫ്റ്റ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് പിന്തുണ നൽകുക.

-msoft-float ഔട്ട്പുട്ട് ഫയലിലെ കോളിംഗ് കൺവെൻഷൻ മാറ്റുന്നു; അതിനാൽ, അത് മാത്രം
നിങ്ങൾ സമാഹരിച്ചാൽ ഉപയോഗപ്രദമാണ് എല്ലാം ഈ ഓപ്ഷൻ ഉള്ള ഒരു പ്രോഗ്രാമിന്റെ. പ്രത്യേകിച്ച്, നിങ്ങൾക്ക് ആവശ്യമാണ്
സമാഹരിക്കുക libgcc.a, GCC-യ്‌ക്കൊപ്പം വരുന്ന ലൈബ്രറി -msoft-float ഇതിനായി
ജോലി ചെയ്യാൻ.

-mhard-quad-float
ക്വാഡ്-വേഡ് (നീണ്ട ഇരട്ട) ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ അടങ്ങിയ ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക.

-msoft-quad-float
ക്വാഡ്-വേഡ് (നീണ്ട ഇരട്ട) ഫ്ലോട്ടിംഗ് പോയിന്റിനായി ലൈബ്രറി കോളുകൾ അടങ്ങിയ ഔട്ട്‌പുട്ട് സൃഷ്‌ടിക്കുക
നിർദ്ദേശങ്ങൾ. SPARC ABI-യിൽ വ്യക്തമാക്കിയിരിക്കുന്ന ഫംഗ്‌ഷനുകൾ എന്ന് വിളിക്കപ്പെടുന്നു. ഇതാണ്
സ്ഥിരസ്ഥിതിയായി.

ഇത് എഴുതുന്നത് പോലെ, ഹാർഡ്‌വെയർ പിന്തുണയുള്ള SPARC നടപ്പിലാക്കലുകൾ ഒന്നുമില്ല
ക്വാഡ്-വേഡ് ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ. അവരെല്ലാം ഒരു ട്രാപ്പ് ഹാൻഡ്‌ലറെ വിളിക്കുന്നു
ഈ നിർദ്ദേശങ്ങൾ, തുടർന്ന് ട്രാപ്പ് ഹാൻഡ്‌ലർ നിർദ്ദേശത്തിന്റെ പ്രഭാവം അനുകരിക്കുന്നു.
ട്രാപ്പ് ഹാൻഡ്‌ലർ ഓവർഹെഡ് കാരണം, ഇത് എബിഐ ലൈബ്രറിയിലേക്ക് വിളിക്കുന്നതിനേക്കാൾ വളരെ മന്ദഗതിയിലാണ്
ദിനചര്യകൾ. അങ്ങനെ ദി -msoft-quad-float ഓപ്ഷൻ സ്ഥിരസ്ഥിതിയാണ്.

-mno-unaligned-doubles
-മുനലൈൻഡ്-ഡബിൾസ്
ഇരട്ടകൾക്ക് 8-ബൈറ്റ് വിന്യാസം ഉണ്ടെന്ന് കരുതുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

കൂടെ -മുനലൈൻഡ്-ഡബിൾസ്, ഇരട്ടകൾക്ക് 8-ബൈറ്റ് വിന്യാസമുണ്ടെങ്കിൽ മാത്രമേ ജിസിസി അനുമാനിക്കൂ
മറ്റൊരു തരത്തിൽ അടങ്ങിയിരിക്കുന്നു, അല്ലെങ്കിൽ അവയ്ക്ക് ഒരു സമ്പൂർണ്ണ വിലാസം ഉണ്ടെങ്കിൽ. അല്ലെങ്കിൽ, അത്
അവർക്ക് 4-ബൈറ്റ് വിന്യാസം ഉണ്ടെന്ന് അനുമാനിക്കുന്നു. ഈ ഓപ്‌ഷൻ വ്യക്തമാക്കുന്നത് ചില അപൂർവങ്ങളെ ഒഴിവാക്കുന്നു
മറ്റ് കമ്പൈലറുകൾ സൃഷ്ടിച്ച കോഡുമായുള്ള അനുയോജ്യത പ്രശ്നങ്ങൾ. അത് സ്ഥിരസ്ഥിതിയല്ല
കാരണം ഇത് പ്രകടന നഷ്ടത്തിന് കാരണമാകുന്നു, പ്രത്യേകിച്ച് ഫ്ലോട്ടിംഗ് പോയിന്റ് കോഡിന്.

-മ്യൂസർ-മോഡ്
-mno-user-mode
സൂപ്പർവൈസർ മോഡിൽ മാത്രം പ്രവർത്തിക്കാൻ കഴിയുന്ന കോഡ് സൃഷ്ടിക്കരുത്. ഇതിന് മാത്രം പ്രസക്തമാണ്
LEON3 പ്രോസസറിനായി പുറപ്പെടുവിച്ച "casa" നിർദ്ദേശം. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mno-faster-structs
-mfaster-structs
കൂടെ -mfaster-structs, ഘടനകൾക്ക് 8-ബൈറ്റ് ഉണ്ടായിരിക്കണമെന്ന് കംപൈലർ അനുമാനിക്കുന്നു
വിന്യാസം. പകർപ്പുകൾക്കായി "ldd", "std" നിർദ്ദേശങ്ങളുടെ ജോഡി ഉപയോഗം ഇത് സാധ്യമാക്കുന്നു
ഘടന അസൈൻമെന്റിൽ, ഇരട്ടി "ld", "st" ജോഡികളുടെ സ്ഥാനത്ത്. എന്നിരുന്നാലും, ദി
ഈ മാറ്റിയ വിന്യാസത്തിന്റെ ഉപയോഗം SPARC ABIയെ നേരിട്ട് ലംഘിക്കുന്നു. അങ്ങനെ, അത് ഉദ്ദേശിച്ചിട്ടുള്ളതാണ്
തത്ഫലമായുണ്ടാകുന്ന കോഡ് ഡവലപ്പർ അംഗീകരിക്കുന്ന ടാർഗെറ്റുകളിൽ ഉപയോഗിക്കുന്നതിന് മാത്രം
എബിഐയുടെ നിയമങ്ങളുമായി നേരിട്ട് പൊരുത്തപ്പെടുന്നില്ല.

-mcpu=cpu_type
അതിനുള്ള നിർദ്ദേശ സെറ്റ്, രജിസ്റ്റർ സെറ്റ്, നിർദ്ദേശ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ എന്നിവ സജ്ജമാക്കുക
യന്ത്ര തരം cpu_type. പിന്തുണയ്ക്കുന്ന മൂല്യങ്ങൾ cpu_type ആകുന്നു v7, സൈപ്രസ്, v8, സൂപ്പർസ്പാർക്ക്,
ഹൈപ്പർസ്പാർക്ക്, ലിയോൺ, leon3, leon3v7, സ്പാർക്ലൈറ്റ്, f930, f934, സ്പാർക്ലൈറ്റ്86x, സ്പാർക്കിൾ,
tsc701, v9, അൾട്രാസ്പാർക്ക്, അൾട്രാസ്പാർക്3, നയാഗ്ര, നയാഗ്ര2, നയാഗ്ര3 ഒപ്പം നയാഗ്ര4.

നേറ്റീവ് സോളാരിസും ഗ്നു/ലിനക്സ് ടൂൾചെയിനുകളും മൂല്യത്തെ പിന്തുണയ്ക്കുന്നു നേറ്റീവ്, അത് തിരഞ്ഞെടുക്കുന്നു
ഹോസ്റ്റ് പ്രോസസറിനുള്ള മികച്ച ആർക്കിടെക്ചർ ഓപ്ഷൻ. -mcpu= സ്വദേശി എങ്കിൽ യാതൊരു ഫലവുമില്ല
GCC പ്രോസസ്സർ തിരിച്ചറിയുന്നില്ല.

ഒരു തിരഞ്ഞെടുക്കുന്ന മൂല്യങ്ങൾക്കായി ഡിഫോൾട്ട് ഇൻസ്ട്രക്ഷൻ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ ഉപയോഗിക്കുന്നു
വാസ്തുവിദ്യ അല്ലാതെ നടപ്പാക്കലല്ല. ഇവയാണ് v7, v8, സ്പാർക്ലൈറ്റ്, സ്പാർക്കിൾ, v9.

പിന്തുണയ്‌ക്കുന്ന ഓരോ ആർക്കിടെക്‌ചറിന്റെയും അവയുടെ പിന്തുണയ്‌ക്കുന്ന നടപ്പിലാക്കലുകളുടെയും ഒരു ലിസ്റ്റ് ഇവിടെയുണ്ട്.

v7 സൈപ്രസ്, leon3v7

v8 സൂപ്പർസ്പാർക്ക്, ഹൈപ്പർസ്പാർക്ക്, ലിയോൺ, ലിയോൺ3

സ്പാർക്ലൈറ്റ്
f930, f934, sparclite86x

സ്പാർക്കിൾ
tsc701

v9 അൾട്രാസ്പാർക്ക്, അൾട്രാസ്പാർക്3, നയാഗ്ര, നയാഗ്ര2, നയാഗ്ര3, നയാഗ്ര4

ഡിഫോൾട്ടായി (മറ്റൊരു തരത്തിൽ കോൺഫിഗർ ചെയ്തിട്ടില്ലെങ്കിൽ), V7 വേരിയന്റിനായി GCC കോഡ് സൃഷ്ടിക്കുന്നു.
SPARC വാസ്തുവിദ്യ. കൂടെ -mcpu=സൈപ്രസ്, കംപൈലർ അധികമായി അത് ഒപ്റ്റിമൈസ് ചെയ്യുന്നു
SPARCStation/SPARCServer 7xx സീരീസിൽ ഉപയോഗിക്കുന്നത് പോലെ സൈപ്രസ് CY602C3 ചിപ്പ്. ഇതാണ്
പഴയ SPARCSstation 1, 2, IPX മുതലായവയ്ക്കും അനുയോജ്യമാണ്.

കൂടെ -mcpu=v8, SPARC ആർക്കിടെക്ചറിന്റെ V8 വേരിയന്റിനായി GCC കോഡ് സൃഷ്ടിക്കുന്നു. ദി
വി 7 കോഡിൽ നിന്നുള്ള വ്യത്യാസം കംപൈലർ പൂർണ്ണസംഖ്യ ഗുണനങ്ങൾ പുറപ്പെടുവിക്കുന്നു എന്നതാണ്
SPARC-V8-ൽ നിലവിലുണ്ടെങ്കിലും SPARC-V7-ൽ ഇല്ലാത്ത പൂർണ്ണസംഖ്യ വിഭജന നിർദ്ദേശങ്ങൾ. കൂടെ
-mcpu=superparc, കംപൈലർ അധികമായി ഇത് SuperSPARC ചിപ്പിനായി ഒപ്റ്റിമൈസ് ചെയ്യുന്നു
SPARCstation 10, 1000, 2000 പരമ്പരകളിൽ ഉപയോഗിച്ചു.

കൂടെ -mcpu=സ്പാർക്ലൈറ്റ്, SPARC-ന്റെ SPARClite വേരിയന്റിനായി GCC കോഡ് സൃഷ്ടിക്കുന്നു
വാസ്തുവിദ്യ. ഇത് പൂർണ്ണസംഖ്യ ഗുണനം, പൂർണ്ണസംഖ്യ വിഭജിക്കൽ ഘട്ടം, സ്കാൻ എന്നിവ ചേർക്കുന്നു ("ffs")
SPARClite-ൽ നിലവിലുണ്ടെങ്കിലും SPARC-V7-ൽ അല്ലാത്ത നിർദ്ദേശങ്ങൾ. കൂടെ -mcpu=f930,
ഒറിജിനൽ ആയ ഫുജിറ്റ്സു MB86930 ചിപ്പിനായി കമ്പൈലർ ഇത് ഒപ്റ്റിമൈസ് ചെയ്യുന്നു.
എഫ്പിയു ഇല്ലാത്ത SPARClite. കൂടെ -mcpu=f934, കംപൈലർ അധികമായി അത് ഒപ്റ്റിമൈസ് ചെയ്യുന്നു
ഫുജിറ്റ്സു MB86934 ചിപ്പ്, FPU ഉള്ള ഏറ്റവും പുതിയ SPARClite ആണ്.

കൂടെ -mcpu=സ്പാർക്കിൾ, SPARC-ന്റെ SPARClet വേരിയന്റിനായി GCC കോഡ് സൃഷ്ടിക്കുന്നു
വാസ്തുവിദ്യ. ഇത് പൂർണ്ണസംഖ്യ ഗുണനം, ഗുണനം/ശേഖരണം, പൂർണ്ണസംഖ്യ വിഭജനം എന്നിവ കൂട്ടിച്ചേർക്കുന്നു
SPARClet-ൽ നിലവിലുണ്ടെങ്കിലും SPARC-V7-ൽ അല്ലാത്ത ഘട്ടം, സ്കാൻ ("ffs") നിർദ്ദേശങ്ങൾ. കൂടെ
-mcpu=tsc701, കംപൈലർ അത് TEMIC SPARClet ചിപ്പിനായി ഒപ്റ്റിമൈസ് ചെയ്യുന്നു.

കൂടെ -mcpu=v9, SPARC ആർക്കിടെക്ചറിന്റെ V9 വേരിയന്റിനായി GCC കോഡ് സൃഷ്ടിക്കുന്നു. ഈ
64-ബിറ്റ് പൂർണ്ണസംഖ്യയും ഫ്ലോട്ടിംഗ് പോയിന്റ് നീക്കൽ നിർദ്ദേശങ്ങളും ചേർക്കുന്നു, 3 അധിക ഫ്ലോട്ടിംഗ് പോയിന്റ്
വ്യവസ്ഥാ കോഡ് രജിസ്റ്ററുകളും സോപാധിക നീക്ക നിർദ്ദേശങ്ങളും. കൂടെ -mcpu=ultrasparc,
കംപൈലർ സൺ അൾട്രാസ്പാർക്ക് I/II/IIi ചിപ്പുകൾക്കായി ഇത് ഒപ്റ്റിമൈസ് ചെയ്യുന്നു. കൂടെ
-mcpu = ultrasparc3, കംപൈലർ സൺ അൾട്രാസ്പാർക്കിനായി ഇത് ഒപ്റ്റിമൈസ് ചെയ്യുന്നു
III/III+/IIIi/IIIi+/IV/IV+ ചിപ്പുകൾ. കൂടെ -എംസിപു=നയാഗ്ര, കംപൈലർ അധികമായി
Sun UltraSPARC T1 ചിപ്പുകൾക്കായി ഇത് ഒപ്റ്റിമൈസ് ചെയ്യുന്നു. കൂടെ -എംസിപു=നയാഗ്ര2, കമ്പൈലർ
കൂടാതെ ഇത് Sun UltraSPARC T2 ചിപ്പുകൾക്കായി ഒപ്റ്റിമൈസ് ചെയ്യുന്നു. കൂടെ -എംസിപു=നയാഗ്ര3,
കംപൈലർ അധികമായി ഇത് Sun UltraSPARC T3 ചിപ്പുകൾക്കായി ഒപ്റ്റിമൈസ് ചെയ്യുന്നു. കൂടെ -എംസിപു=നയാഗ്ര4,
കംപൈലർ അധികമായി ഇത് Sun UltraSPARC T4 ചിപ്പുകൾക്കായി ഒപ്റ്റിമൈസ് ചെയ്യുന്നു.

-mtune=cpu_type
മെഷീൻ തരത്തിനായി നിർദ്ദേശ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ സജ്ജമാക്കുക cpu_type, എന്നാൽ സജ്ജീകരിക്കരുത്
ഇൻസ്ട്രക്ഷൻ സെറ്റ് അല്ലെങ്കിൽ രജിസ്റ്റർ സെറ്റ് ആ ഓപ്ഷൻ -mcpu=cpu_type ചെയ്യും.

എന്നതിന് സമാന മൂല്യങ്ങൾ -mcpu=cpu_type ഇതിനായി ഉപയോഗിക്കാം -mtune=cpu_type, എന്നാൽ ഏക
ഒരു പ്രത്യേക സിപിയു നടപ്പിലാക്കൽ തിരഞ്ഞെടുക്കുന്നവയാണ് ഉപയോഗപ്രദമായ മൂല്യങ്ങൾ. അവയാണ്
സൈപ്രസ്, സൂപ്പർസ്പാർക്ക്, ഹൈപ്പർസ്പാർക്ക്, ലിയോൺ, leon3, leon3v7, f930, f934, സ്പാർക്ലൈറ്റ്86x,
tsc701, അൾട്രാസ്പാർക്ക്, അൾട്രാസ്പാർക്3, നയാഗ്ര, നയാഗ്ര2, നയാഗ്ര3 ഒപ്പം നയാഗ്ര4. കൂടെ
നേറ്റീവ് സോളാരിസും ഗ്നു/ലിനക്സ് ടൂൾചെയിനുകളും, നേറ്റീവ് ഉപയോഗിക്കാനും കഴിയും.

-mv8plus
-mno-v8plus
കൂടെ -mv8plus, SPARC-V8+ ABI-യ്‌ക്കായി GCC കോഡ് സൃഷ്‌ടിക്കുന്നു. V8-ൽ നിന്നുള്ള വ്യത്യാസം
എബിഐ എന്നത് ഗ്ലോബൽ, ഔട്ട് രജിസ്റ്ററുകൾ 64 ബിറ്റുകൾ വീതിയുള്ളതായി കണക്കാക്കുന്നു. ഇത് പ്രവർത്തനക്ഷമമാക്കി
എല്ലാ SPARC-V32 പ്രൊസസ്സറുകൾക്കുമായി 9-ബിറ്റ് മോഡിൽ സോളാരിസിൽ സ്ഥിരസ്ഥിതിയായി.

-എംവിഎസ്
-mno-vis
കൂടെ -എംവിഎസ്, അൾട്രാസ്പാർക്ക് വിഷ്വൽ പ്രയോജനപ്പെടുത്തുന്ന കോഡ് ജിസിസി സൃഷ്ടിക്കുന്നു
ഇൻസ്ട്രക്ഷൻ സെറ്റ് എക്സ്റ്റൻഷനുകൾ. സ്ഥിരസ്ഥിതിയാണ് -mno-vis.

-mvis2
-mno-vis2
കൂടെ -mvis2, അൾട്രാസ്പാർക്കിന്റെ പതിപ്പ് 2.0 പ്രയോജനപ്പെടുത്തുന്ന കോഡ് GCC സൃഷ്ടിക്കുന്നു
വിഷ്വൽ ഇൻസ്ട്രക്ഷൻ സെറ്റ് എക്സ്റ്റൻഷനുകൾ. സ്ഥിരസ്ഥിതിയാണ് -mvis2 ഒരു സിപിയു ടാർഗെറ്റ് ചെയ്യുമ്പോൾ അത്
UltraSPARC-III-ഉം പിന്നീടുള്ളതും പോലുള്ള അത്തരം നിർദ്ദേശങ്ങളെ പിന്തുണയ്ക്കുന്നു. ക്രമീകരണം -mvis2 ഇതും
സെറ്റുകൾ -എംവിഎസ്.

-mvis3
-mno-vis3
കൂടെ -mvis3, അൾട്രാസ്പാർക്കിന്റെ പതിപ്പ് 3.0 പ്രയോജനപ്പെടുത്തുന്ന കോഡ് GCC സൃഷ്ടിക്കുന്നു
വിഷ്വൽ ഇൻസ്ട്രക്ഷൻ സെറ്റ് എക്സ്റ്റൻഷനുകൾ. സ്ഥിരസ്ഥിതിയാണ് -mvis3 ഒരു സിപിയു ടാർഗെറ്റ് ചെയ്യുമ്പോൾ അത്
നയാഗ്ര-3, അതിനുശേഷമുള്ളത് പോലുള്ള നിർദ്ദേശങ്ങളെ പിന്തുണയ്ക്കുന്നു. ക്രമീകരണം -mvis3 സജ്ജീകരിക്കുകയും ചെയ്യുന്നു
-mvis2 ഒപ്പം -എംവിഎസ്.

-mcbcond
-mno-cbcond
കൂടെ -mcbcond, താരതമ്യം-ബ്രാഞ്ച് പ്രയോജനപ്പെടുത്തുന്ന കോഡ് GCC സൃഷ്ടിക്കുന്നു
നിർദ്ദേശങ്ങൾ, സ്പാർക് ആർക്കിടെക്ചർ 2011 ൽ നിർവചിച്ചിരിക്കുന്നത്. ഡിഫോൾട്ടാണ് -mcbcond എപ്പോൾ
നയാഗ്ര-4 ഉം അതിനുശേഷവും പോലുള്ള നിർദ്ദേശങ്ങളെ പിന്തുണയ്ക്കുന്ന ഒരു സിപിയു ലക്ഷ്യമിടുന്നു.

-mpopc
-mno-popc
കൂടെ -mpopc, UltraSPARC പോപ്പുലേഷൻ പ്രയോജനപ്പെടുത്തുന്ന കോഡ് GCC സൃഷ്ടിക്കുന്നു
കൗണ്ട് നിർദ്ദേശം. സ്ഥിരസ്ഥിതിയാണ് -mpopc അത്തരം പിന്തുണയ്ക്കുന്ന ഒരു സിപിയു ടാർഗെറ്റ് ചെയ്യുമ്പോൾ
നയാഗ്ര-2-ഉം പിന്നീടുള്ളതും പോലുള്ള നിർദ്ദേശങ്ങൾ.

-mfmaf
-mno-fmaf
കൂടെ -mfmaf, അൾട്രാസ്പാർക്ക് ഫ്യൂസ്ഡ് മൾട്ടിപ്ലൈയുടെ പ്രയോജനം ലഭിക്കുന്ന കോഡ് ജിസിസി സൃഷ്ടിക്കുന്നു-
ഫ്ലോട്ടിംഗ് പോയിന്റ് വിപുലീകരണങ്ങൾ ചേർക്കുക. സ്ഥിരസ്ഥിതിയാണ് -mfmaf ഒരു സിപിയു ടാർഗെറ്റ് ചെയ്യുമ്പോൾ അത്
നയാഗ്ര-3, അതിനുശേഷമുള്ളത് പോലുള്ള നിർദ്ദേശങ്ങളെ പിന്തുണയ്ക്കുന്നു.

-mfix-at697f
Atmel AT697F പ്രോസസറിന്റെ ഒറ്റ തെറ്റിന് ഡോക്യുമെന്റഡ് വർക്ക് എറൗണ്ട് പ്രവർത്തനക്ഷമമാക്കുക
(അത് AT13E പ്രോസസറിന്റെ പിശക് #697 ന് യോജിക്കുന്നു).

-mfix-ut699
ഫ്ലോട്ടിംഗ് പോയിന്റ് പിശകുകൾക്കും ഡാറ്റ കാഷെക്കുമായി ഡോക്യുമെന്റ് ചെയ്ത പരിഹാരങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക
UT699 പ്രൊസസറിന്റെ പിഴവ് അസാധുവാക്കുക.

ഇവ -m 9-ബിറ്റിലുള്ള SPARC-V64 പ്രോസസറുകളിൽ മുകളിൽ പറഞ്ഞവ കൂടാതെ ഓപ്ഷനുകൾ പിന്തുണയ്ക്കുന്നു
പരിതസ്ഥിതികൾ:

-m32
-m64
32-ബിറ്റ് അല്ലെങ്കിൽ 64-ബിറ്റ് എൻവയോൺമെന്റിനായി കോഡ് സൃഷ്ടിക്കുക. 32-ബിറ്റ് എൻവയോൺമെന്റ് സജ്ജീകരിക്കുന്നു,
നീളവും 32 ബിറ്റുകളിലേക്കുള്ള പോയിന്ററും. 64-ബിറ്റ് എൻവയോൺമെന്റ് 32 ബിറ്റുകളും നീളവും ആയി സജ്ജീകരിക്കുന്നു
64 ബിറ്റുകളിലേക്കുള്ള പോയിന്റർ.

-mcmodel=ഏത്
കോഡ് മോഡൽ ഒന്നിലേക്ക് സജ്ജമാക്കുക

മൃദുവായ
മീഡിയം/ലോ കോഡ് മോഡൽ: 64-ബിറ്റ് വിലാസങ്ങൾ, പ്രോഗ്രാമുകൾ താഴ്ന്ന 32-ൽ ലിങ്ക് ചെയ്തിരിക്കണം
ഓർമ്മയുടെ കഷണങ്ങൾ. പ്രോഗ്രാമുകൾ സ്റ്റാറ്റിക് അല്ലെങ്കിൽ ഡൈനാമിക് ആയി ലിങ്ക് ചെയ്യാവുന്നതാണ്.

medmid
മീഡിയം/മിഡിൽ കോഡ് മോഡൽ: 64-ബിറ്റ് വിലാസങ്ങൾ, പ്രോഗ്രാമുകൾ താഴ്ന്നതിൽ ലിങ്ക് ചെയ്തിരിക്കണം
44 ബിറ്റ് മെമ്മറി, ടെക്‌സ്‌റ്റ്, ഡാറ്റ സെഗ്‌മെന്റുകൾ 2 ജിബിയിൽ താഴെ വലിപ്പമുള്ളതായിരിക്കണം
ഡാറ്റ സെഗ്‌മെന്റ് ടെക്‌സ്‌റ്റ് സെഗ്‌മെന്റിന്റെ 2 ജിബിയ്ക്കുള്ളിൽ സ്ഥിതിചെയ്യണം.

മെഡനി
മീഡിയം/എനിവേർ കോഡ് മോഡൽ: 64-ബിറ്റ് വിലാസങ്ങൾ, പ്രോഗ്രാമുകൾ എവിടെയും ലിങ്ക് ചെയ്‌തേക്കാം
മെമ്മറിയിൽ, ടെക്‌സ്‌റ്റ്, ഡാറ്റ സെഗ്‌മെന്റുകൾ 2GB വലുപ്പത്തിലും ഡാറ്റയിലും കുറവായിരിക്കണം
സെഗ്‌മെന്റ് ടെക്‌സ്‌റ്റ് സെഗ്‌മെന്റിന്റെ 2 ജിബിയ്ക്കുള്ളിൽ സ്ഥിതിചെയ്യണം.

എംബ്മെഡനി
എംബഡഡ് സിസ്റ്റങ്ങൾക്കായുള്ള മീഡിയം/എനിവേർ കോഡ് മോഡൽ: 64-ബിറ്റ് വിലാസങ്ങൾ, ടെക്സ്റ്റ്
കൂടാതെ ഡാറ്റാ സെഗ്‌മെന്റുകളുടെ വലുപ്പം 2GB-യിൽ കുറവായിരിക്കണം, ഇവ രണ്ടും മെമ്മറിയിൽ എവിടെയും ആരംഭിക്കുന്നു
(ലിങ്ക് സമയത്ത് നിർണ്ണയിക്കുന്നത്). ആഗോള രജിസ്റ്റർ %g4 ഡാറ്റയുടെ അടിത്തറയിലേക്ക് പോയിന്റ് ചെയ്യുന്നു
സെഗ്മെന്റ്. പ്രോഗ്രാമുകൾ സ്ഥിരമായി ലിങ്ക് ചെയ്‌തിരിക്കുന്നു കൂടാതെ PIC പിന്തുണയ്‌ക്കുന്നില്ല.

-memory-model=മെം-മാതൃക
പ്രോസസറിൽ നിലവിലുള്ള മെമ്മറി മോഡൽ ഒന്നിലേക്ക് സജ്ജമാക്കുക

സ്ഥിരസ്ഥിതി
പ്രോസസ്സറിനും ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനുമുള്ള ഡിഫോൾട്ട് മെമ്മറി മോഡൽ.

rmo റിലാക്‌സ്ഡ് മെമ്മറി ഓർഡർ

pso ഭാഗിക സ്റ്റോർ ഓർഡർ

വിട്ടേക്കുക മൊത്തം സ്റ്റോർ ഓർഡർ

sc തുടർച്ചയായ സ്ഥിരത

ഈ മെമ്മറി മോഡലുകൾ Sparc V9 ആർക്കിടെക്ചറിന്റെ അനുബന്ധം D യിൽ ഔപചാരികമായി നിർവചിച്ചിരിക്കുന്നു
മാനുവൽ, പ്രോസസ്സറിന്റെ "PSTATE.MM" ഫീൽഡിൽ സജ്ജമാക്കിയിരിക്കുന്നതുപോലെ.

-mstack-പക്ഷപാതം
-mno-stack-bias
കൂടെ -mstack-പക്ഷപാതം, സ്റ്റാക്ക് പോയിന്ററും ഫ്രെയിം പോയിന്ററും ഉണ്ടെങ്കിൽ, GCC അനുമാനിക്കുന്നു,
-2047-നാൽ ഓഫ്‌സെറ്റ് ചെയ്തവ, സ്റ്റാക്ക് ഫ്രെയിം റഫറൻസുകൾ ഉണ്ടാക്കുമ്പോൾ അവ തിരികെ ചേർക്കേണ്ടതാണ്. ഈ
64-ബിറ്റ് മോഡിൽ സ്ഥിരസ്ഥിതിയാണ്. അല്ലെങ്കിൽ, അത്തരമൊരു ഓഫ്‌സെറ്റ് നിലവിലില്ലെന്ന് കരുതുക.

എസ്പിഎസ് ഓപ്ഷനുകൾ

ഇവ -m SPU-ൽ ഓപ്ഷനുകൾ പിന്തുണയ്ക്കുന്നു:

-mwarn-reloc
-മെറർ-റെലോക്ക്
എസ്പിയുവിനുള്ള ലോഡർ ഡൈനാമിക് റീലോക്കേഷനുകൾ കൈകാര്യം ചെയ്യുന്നില്ല. സ്ഥിരസ്ഥിതിയായി, GCC ഒരു നൽകുന്നു
ഒരു ഡൈനാമിക് റീലോക്കേഷൻ ആവശ്യമുള്ള കോഡ് സൃഷ്ടിക്കുമ്പോൾ പിശക്. -mno-error-relock
പിശക് പ്രവർത്തനരഹിതമാക്കുന്നു, -mwarn-reloc പകരം ഒരു മുന്നറിയിപ്പ് സൃഷ്ടിക്കുന്നു.

-msafe-dma
-munsafe-dma
ഡിഎംഎയുടെ സമാരംഭം അല്ലെങ്കിൽ പരിശോധന പൂർത്തിയാക്കുന്ന നിർദ്ദേശങ്ങൾ പുനഃക്രമീകരിക്കാൻ പാടില്ല
ആക്സസ് ചെയ്യപ്പെടുന്ന മെമ്മറിയുടെ ലോഡുകളോടും സ്റ്റോറുകളോടും ഉള്ള ബഹുമാനം. കൂടെ -munsafe-dma
മെമ്മറി ആക്‌സസ്സ് പരിരക്ഷിക്കുന്നതിന് നിങ്ങൾ "അസ്ഥിരമായ" കീവേഡ് ഉപയോഗിക്കണം, പക്ഷേ അത് സംഭവിക്കാം
മെമ്മറി മാറാത്ത സ്ഥലങ്ങളിൽ കാര്യക്ഷമമല്ലാത്ത കോഡ്. മാർക്ക് എന്നതിലുപരി
മെമ്മറി അസ്ഥിരമാണ്, നിങ്ങൾക്ക് ഉപയോഗിക്കാം -msafe-dma ഡിഎംഎയെ ചികിത്സിക്കാൻ കംപൈലറോട് പറയാൻ
എല്ലാ മെമ്മറിയെയും ബാധിക്കാൻ സാധ്യതയുള്ള നിർദ്ദേശങ്ങൾ.

-ബ്രാഞ്ച്-സൂചനകൾ
ഡിഫോൾട്ടായി, പൈപ്പ്‌ലൈൻ സ്റ്റാളുകൾ ഒഴിവാക്കാൻ GCC ഒരു ബ്രാഞ്ച് സൂചന നിർദ്ദേശം സൃഷ്ടിക്കുന്നു
എപ്പോഴും എടുത്തതോ ഒരുപക്ഷേ എടുത്തതോ ആയ ശാഖകൾ. 8-നേക്കാൾ അടുത്ത് ഒരു സൂചന ജനറേറ്റുചെയ്യുന്നില്ല
അതിന്റെ ശാഖയിൽ നിന്നുള്ള നിർദ്ദേശങ്ങൾ. അവ പ്രവർത്തനരഹിതമാക്കാൻ ചെറിയ കാരണങ്ങളൊന്നുമില്ല, ഒഴികെ
ഡീബഗ്ഗിംഗ് ഉദ്ദേശങ്ങൾ, അല്ലെങ്കിൽ ഒരു വസ്തുവിനെ അൽപ്പം ചെറുതാക്കുക.

-msmall-mem
-mlarge-mem
സ്ഥിരസ്ഥിതിയായി, വിലാസങ്ങൾ ഒരിക്കലും 18 ബിറ്റുകളിൽ വലുതായിരിക്കില്ല എന്ന് കരുതി GCC കോഡ് സൃഷ്ടിക്കുന്നു.
കൂടെ -mlarge-mem പൂർണ്ണമായ 32-ബിറ്റ് വിലാസം അനുമാനിക്കുന്ന കോഡ് ജനറേറ്റുചെയ്യുന്നു.

-mstdmain
ഡിഫോൾട്ടായി, എസ്പിയു-സ്റ്റൈൽ മെയിൻ ഫംഗ്ഷൻ അനുമാനിക്കുന്ന സ്റ്റാർട്ടപ്പ് കോഡിനെതിരെ ജിസിസി ലിങ്കുകൾ
ഇന്റർഫേസ് (ഒരു പാരമ്പര്യേതര പാരാമീറ്റർ ലിസ്റ്റ് ഉണ്ട്). കൂടെ -mstdmain, GCC ലിങ്കുകൾ
"മെയിൻ" എന്നതിലേക്ക് C99-സ്റ്റൈൽ ഇന്റർഫേസ് അനുമാനിക്കുന്ന സ്റ്റാർട്ടപ്പ് കോഡിനെതിരായ നിങ്ങളുടെ പ്രോഗ്രാം,
"argv" സ്ട്രിംഗുകളുടെ ഒരു പ്രാദേശിക പകർപ്പ് ഉൾപ്പെടെ.

-mfixed-range=രജിസ്റ്റർ-പരിധി
നൽകിയിരിക്കുന്ന രജിസ്റ്റർ ശ്രേണിയെ നിശ്ചിത രജിസ്റ്ററുകളായി കണക്കാക്കുന്ന കോഡ് സൃഷ്ടിക്കുക. ഒരു നിശ്ചിത രജിസ്റ്റർ
രജിസ്റ്റർ അലോക്കേറ്റർക്ക് ഉപയോഗിക്കാൻ കഴിയാത്ത ഒന്നാണ്. കേർണൽ കംപൈൽ ചെയ്യുമ്പോൾ ഇത് ഉപയോഗപ്രദമാണ്
കോഡ്. ഒരു ഡാഷ് കൊണ്ട് വേർതിരിക്കുന്ന രണ്ട് രജിസ്റ്ററുകളായി ഒരു രജിസ്റ്റർ ശ്രേണി വ്യക്തമാക്കിയിരിക്കുന്നു. ഒന്നിലധികം
രജിസ്റ്റർ ശ്രേണികൾ ഒരു കോമ ഉപയോഗിച്ച് വേർതിരിക്കാവുന്നതാണ്.

-mea32
-mea64
PPU വിലാസ സ്ഥലത്തേക്കുള്ള പോയിന്ററുകൾ "__ea" വഴി ആക്‌സസ് ചെയ്‌തതായി കരുതി കോഡ് കംപൈൽ ചെയ്യുക
32 അല്ലെങ്കിൽ 64 ബിറ്റ് വീതിയുള്ള വിലാസ സ്‌പേസ് ക്വാളിഫയർ എന്ന് പേരിട്ടിരിക്കുന്നു. സ്ഥിരസ്ഥിതി 32 ബിറ്റുകളാണ്.
ഇതൊരു എബിഐ മാറ്റുന്ന ഓപ്ഷനായതിനാൽ, ഒരു എക്സിക്യൂട്ടബിളിലെ എല്ലാ ഒബ്ജക്റ്റ് കോഡും കംപൈൽ ചെയ്തിരിക്കണം
ഒരേ ക്രമീകരണത്തോടെ.

-മാഡ്രസ്സ്-സ്പേസ്-കൺവേർഷൻ
-mno-വിലാസം-സ്പേസ്-പരിവർത്തനം
"__ea" വിലാസ ഇടം പൊതുവായ വിലാസത്തിന്റെ സൂപ്പർസെറ്റായി കണക്കാക്കുന്നത് അനുവദിക്കുക/അനുവദിക്കാതിരിക്കുക
സ്ഥലം. ഇത് "__ea", ജനറിക് പോയിന്റർ എന്നിവയ്ക്കിടയിലുള്ള വ്യക്തമായ തരം കാസ്റ്റുകൾ പ്രാപ്തമാക്കുന്നു
"__ea" പോയിന്ററുകളിലേക്കുള്ള ജനറിക് പോയിന്ററുകളുടെ വ്യക്തമായ പരിവർത്തനം. അനുവദിക്കുക എന്നതാണ് സ്ഥിരസ്ഥിതി
വിലാസ സ്പേസ് പോയിന്റർ പരിവർത്തനങ്ങൾ.

-mcache-size=കാഷെ വലിപ്പം
കംപൈലർ ഒരു എക്സിക്യൂട്ടബിളിലേക്ക് ലിങ്ക് ചെയ്യുന്ന libgcc പതിപ്പിനെ ഈ ഐച്ഛികം നിയന്ത്രിക്കുന്നു
കൂടാതെ "__ea" വിലാസത്തിൽ വേരിയബിളുകൾ ആക്സസ് ചെയ്യുന്നതിനായി ഒരു സോഫ്റ്റ്വെയർ നിയന്ത്രിത കാഷെ തിരഞ്ഞെടുക്കുന്നു
ഒരു പ്രത്യേക കാഷെ വലിപ്പമുള്ള ഇടം. സാധ്യമായ ഓപ്ഷനുകൾ കാഷെ വലിപ്പം ആകുന്നു 8, 16, 32, 64
ഒപ്പം 128. ഡിഫോൾട്ട് കാഷെ വലുപ്പം 64KB ആണ്.

-മാറ്റോമിക്-അപ്ഡേറ്റുകൾ
-mno-atomic-updates
കംപൈലർ ഒരു എക്സിക്യൂട്ടബിളിലേക്ക് ലിങ്ക് ചെയ്യുന്ന libgcc പതിപ്പിനെ ഈ ഐച്ഛികം നിയന്ത്രിക്കുന്നു
കൂടാതെ PPU-സൈഡ് വേരിയബിളുകളുടെ സോഫ്‌റ്റ്‌വെയർ നിയന്ത്രിത കാഷെയിലേക്ക് ആറ്റോമിക് അപ്‌ഡേറ്റ് ചെയ്യണമോ എന്ന് തിരഞ്ഞെടുക്കുന്നു
ഉപയോഗിക്കുന്നു. നിങ്ങൾ ആറ്റോമിക് അപ്‌ഡേറ്റുകൾ ഉപയോഗിക്കുകയാണെങ്കിൽ, SPU കോഡിൽ നിന്ന് PPU വേരിയബിളിലേക്ക് മാറ്റുന്നു
"__ea" എന്ന് പേരിട്ടിരിക്കുന്ന അഡ്രസ് സ്‌പെയ്‌സ് ക്വാളിഫയർ മറ്റ് PPU-ലേക്കുള്ള മാറ്റങ്ങളിൽ ഇടപെടുന്നില്ല
PPU കോഡിൽ നിന്ന് ഒരേ കാഷെ ലൈനിൽ വസിക്കുന്ന വേരിയബിളുകൾ. നിങ്ങൾ ആറ്റോമിക് ഉപയോഗിക്കുന്നില്ലെങ്കിൽ
അപ്ഡേറ്റുകൾ, അത്തരം ഇടപെടൽ ഉണ്ടാകാം; എന്നിരുന്നാലും, കാഷെ ലൈനുകൾ തിരികെ എഴുതുന്നത് കൂടുതലാണ്
കാര്യക്ഷമമായ. ആറ്റോമിക് അപ്‌ഡേറ്റുകൾ ഉപയോഗിക്കുന്നതാണ് ഡിഫോൾട്ട് സ്വഭാവം.

-മഡ്യുവൽ-നോപ്സ്
-mdual-nops=n
ഡിഫോൾട്ടായി, ഇരട്ട പ്രശ്‌നം വർദ്ധിക്കുമെന്ന് പ്രതീക്ഷിക്കുമ്പോൾ അത് വർദ്ധിപ്പിക്കാൻ GCC നോപ്സ് ചേർക്കുന്നു
പ്രകടനം n 0 മുതൽ 10 വരെയുള്ള ഒരു മൂല്യം ആകാം. ഒരു ചെറുത് n കുറച്ച് നോപ്സ് ചേർക്കുന്നു. 10 ആണ്
ഡിഫോൾട്ട്, 0 സമാനമാണ് -mno-dual-nops. ഉപയോഗിച്ച് അപ്രാപ്തമാക്കി -ഓസ്.

-mhint-max-nops=n
ഒരു ബ്രാഞ്ച് സൂചനയ്‌ക്കായി ചേർക്കേണ്ട പരമാവധി എണ്ണം നോപ്‌സ്. ഒരു ശാഖ സൂചന കുറഞ്ഞത് 8 ആയിരിക്കണം
അത് ബാധിക്കുന്ന ശാഖയിൽ നിന്നുള്ള നിർദ്ദേശങ്ങൾ. വരെ GCC ഇൻസേർട്ട് ചെയ്യുന്നു n ഇല്ല
ഇത് നടപ്പിലാക്കുക, അല്ലാത്തപക്ഷം ഇത് ബ്രാഞ്ച് സൂചന സൃഷ്ടിക്കില്ല.

-mhint-max-distance=n
ബ്രാഞ്ച് സൂചന നിർദ്ദേശത്തിന്റെ എൻകോഡിംഗ് സൂചനയെ 256-നുള്ളിൽ പരിമിതപ്പെടുത്തുന്നു
അത് ബാധിക്കുന്ന ശാഖയുടെ നിർദ്ദേശങ്ങൾ. സ്ഥിരസ്ഥിതിയായി, അത് ഉള്ളിലാണെന്ന് GCC ഉറപ്പാക്കുന്നു
125.

- സുരക്ഷിത സൂചനകൾ
എസ്പിയു അനിശ്ചിതമായി സ്തംഭിക്കുന്ന ഒരു ഹാർഡ്‌വെയർ ബഗിന് ചുറ്റും പ്രവർത്തിക്കുക. സ്ഥിരസ്ഥിതിയായി, ജി.സി.സി
ഈ സ്റ്റാൾ സംഭവിക്കില്ലെന്ന് ഉറപ്പാക്കാൻ "hbrp" നിർദ്ദേശം ചേർക്കുന്നു.

ഓപ്ഷനുകൾ വേണ്ടി സിസ്റ്റം V

ഈ അധിക ഓപ്‌ഷനുകൾ മറ്റുള്ളവയുമായി പൊരുത്തപ്പെടുന്നതിന് സിസ്റ്റം V റിലീസ് 4-ൽ ലഭ്യമാണ്
ആ സിസ്റ്റങ്ങളിലെ കമ്പൈലറുകൾ:

-G ഒരു പങ്കിട്ട ഒബ്‌ജക്റ്റ് സൃഷ്‌ടിക്കുക. എന്ന് ശുപാർശ ചെയ്യുന്നു - പ്രതീകാത്മകം or - പങ്കിട്ടു പകരം ഉപയോഗിക്കും.

-Qy ഒരു ".ident" അസംബ്ലറിൽ കംപൈലർ ഉപയോഗിക്കുന്ന ഓരോ ടൂളിന്റെയും പതിപ്പുകൾ തിരിച്ചറിയുക
ഔട്ട്പുട്ടിലെ നിർദ്ദേശം.

-ക്യു.എൻ ഔട്ട്‌പുട്ട് ഫയലിലേക്ക് ".ident" നിർദ്ദേശങ്ങൾ ചേർക്കുന്നത് ഒഴിവാക്കുക (ഇതാണ് സ്ഥിരസ്ഥിതി).

-വൈ.പി.dirs
ഡയറക്ടറികൾ തിരയുക dirs, കൂടാതെ മറ്റുള്ളവ ഇല്ല, കൂടെ വ്യക്തമാക്കിയിട്ടുള്ള ലൈബ്രറികൾക്കായി -l.

-Ym,മുതലാളി
ഡയറക്ടറിയിൽ നോക്കുക മുതലാളി M4 പ്രീപ്രൊസസർ കണ്ടെത്താൻ. അസംബ്ലർ ഇത് ഉപയോഗിക്കുന്നു
ഓപ്ഷൻ.

ടൈൽ-Gx ഓപ്ഷനുകൾ

ഇവ -m TILE-Gx-ൽ ഓപ്ഷനുകൾ പിന്തുണയ്ക്കുന്നു:

-mcmodel=ചെറിയത്
ചെറിയ മോഡലിന് കോഡ് സൃഷ്ടിക്കുക. നേരിട്ടുള്ള കോളുകൾക്കുള്ള ദൂരം 500M ആയി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു
ഏതെങ്കിലും ദിശയിൽ. പിസി-ആപേക്ഷിക വിലാസങ്ങൾ 32 ബിറ്റുകളാണ്. സമ്പൂർണ്ണ വിലാസങ്ങൾ പിന്തുണ
മുഴുവൻ വിലാസ ശ്രേണി.

-mcmodel=വലുത്
വലിയ മോഡലിന് കോഡ് സൃഷ്ടിക്കുക. കോൾ ദൂരത്തിന് പരിധിയില്ല, പിസി-
ആപേക്ഷിക വിലാസങ്ങൾ, അല്ലെങ്കിൽ കേവല വിലാസങ്ങൾ.

-mcpu=പേര്
ടാർഗെറ്റ് ചെയ്യേണ്ട സിപിയു തരം തിരഞ്ഞെടുക്കുന്നു. നിലവിൽ പിന്തുണയ്ക്കുന്ന തരം മാത്രമാണ് ടൈലിഗ്.

-m32
-m64
32-ബിറ്റ് അല്ലെങ്കിൽ 64-ബിറ്റ് എൻവയോൺമെന്റിനായി കോഡ് സൃഷ്ടിക്കുക. 32-ബിറ്റ് എൻവയോൺമെന്റ് സജ്ജീകരിക്കുന്നു,
നീളവും, 32 ബിറ്റുകളിലേക്കുള്ള പോയിന്ററും. 64-ബിറ്റ് എൻവയോൺമെന്റ് 32 ബിറ്റുകളും നീളവും ആയി സജ്ജീകരിക്കുന്നു
64 ബിറ്റുകളിലേക്കുള്ള പോയിന്റർ.

-mbig-endian
-mlittle-endian
യഥാക്രമം വലിയ/ചെറിയ എൻഡിയൻ മോഡിൽ കോഡ് സൃഷ്ടിക്കുക.

ടൈൽപ്രോ ഓപ്ഷനുകൾ

ഇവ -m TILEPro-ൽ ഓപ്ഷനുകൾ പിന്തുണയ്ക്കുന്നു:

-mcpu=പേര്
ടാർഗെറ്റ് ചെയ്യേണ്ട സിപിയു തരം തിരഞ്ഞെടുക്കുന്നു. നിലവിൽ പിന്തുണയ്ക്കുന്ന തരം മാത്രമാണ് ടൈൽപ്രോ.

-m32
ഒരു 32-ബിറ്റ് എൻവയോൺമെന്റിനായി കോഡ് സൃഷ്‌ടിക്കുക, അത് ഇന്റ്, ലോംഗ്, പോയിന്റർ എന്നിവ 32 ബിറ്റുകളായി സജ്ജമാക്കുന്നു.
പിന്തുണയ്‌ക്കുന്ന ഒരേയൊരു പെരുമാറ്റം ഇതാണ്, അതിനാൽ പതാക പ്രധാനമായും അവഗണിക്കപ്പെടുന്നു.

V850 ഓപ്ഷനുകൾ

ഇവ -m V850 നടപ്പിലാക്കലുകൾക്കായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mlong-കോളുകൾ
-mno-ലോംഗ്-കോളുകൾ
എല്ലാ കോളുകളും ദൂരെയുള്ളതായി (അടുത്തായി) പരിഗണിക്കുക. കോളുകൾ അകലെയാണെന്ന് അനുമാനിക്കുകയാണെങ്കിൽ,
കംപൈലർ എല്ലായ്പ്പോഴും ഫംഗ്‌ഷന്റെ വിലാസം ഒരു രജിസ്റ്ററിലേക്ക് ലോഡ് ചെയ്യുകയും പരോക്ഷമായി വിളിക്കുകയും ചെയ്യുന്നു
പോയിന്ററിലൂടെ.

-mno-ep
-എംപി
ഒരേ സൂചിക പോയിന്റർ 4 അല്ലെങ്കിൽ അതിൽ കൂടുതൽ ഉപയോഗിക്കുന്ന അടിസ്ഥാന ബ്ലോക്കുകൾ ഒപ്റ്റിമൈസ് ചെയ്യരുത് (ഒപ്റ്റിമൈസ് ചെയ്യുക).
പോയിന്റർ "ep" രജിസ്റ്ററിലേക്ക് പകർത്താനുള്ള സമയം, കൂടാതെ "sld", "sst" എന്നിവ ഉപയോഗിക്കുകയും ചെയ്യുക
നിർദ്ദേശങ്ങൾ. ദി -എംപി നിങ്ങൾ ഒപ്റ്റിമൈസ് ചെയ്യുകയാണെങ്കിൽ ഓപ്ഷൻ ഡിഫോൾട്ടായി ഓണാണ്.

-mno-prolog-function
-mprolog-പ്രവർത്തനം
പ്രോലോഗിൽ രജിസ്റ്ററുകൾ സംരക്ഷിക്കുന്നതിനും പുനഃസ്ഥാപിക്കുന്നതിനും ബാഹ്യ പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കരുത് (ഉപയോഗിക്കുക).
ഒരു ഫംഗ്‌ഷന്റെ എപ്പിലോഗും. ബാഹ്യ പ്രവർത്തനങ്ങൾ മന്ദഗതിയിലാണ്, എന്നാൽ കുറച്ച് കോഡ് ഉപയോഗിക്കുക
ഒന്നിലധികം ഫംഗ്‌ഷനുകൾ ഒരേ എണ്ണം രജിസ്റ്ററുകൾ സംരക്ഷിക്കുകയാണെങ്കിൽ സ്‌പെയ്‌സ്. ദി
-mprolog-പ്രവർത്തനം നിങ്ങൾ ഒപ്റ്റിമൈസ് ചെയ്യുകയാണെങ്കിൽ ഓപ്ഷൻ ഡിഫോൾട്ടായി ഓണാണ്.

-mspace
കോഡ് കഴിയുന്നത്ര ചെറുതാക്കാൻ ശ്രമിക്കുക. നിലവിൽ, ഇത് ഓണാക്കുന്നു -എംപി
ഒപ്പം -mprolog-പ്രവർത്തനം ഓപ്ഷനുകൾ.

-mtda=n
വലിപ്പമുള്ള സ്റ്റാറ്റിക് അല്ലെങ്കിൽ ഗ്ലോബൽ വേരിയബിളുകൾ ഇടുക n ചെറിയ ഡാറ്റ ഏരിയയിലേക്ക് ബൈറ്റുകൾ അല്ലെങ്കിൽ അതിൽ കുറവ്
ആ രജിസ്റ്റർ "ep" സൂചിപ്പിക്കുന്നു. ചെറിയ ഡാറ്റ ഏരിയയ്ക്ക് മൊത്തത്തിൽ 256 ബൈറ്റുകൾ വരെ സൂക്ഷിക്കാൻ കഴിയും
(ബൈറ്റ് റഫറൻസുകൾക്ക് 128 ബൈറ്റുകൾ).

-msda=n
വലിപ്പമുള്ള സ്റ്റാറ്റിക് അല്ലെങ്കിൽ ഗ്ലോബൽ വേരിയബിളുകൾ ഇടുക n ചെറിയ ഡാറ്റ ഏരിയയിലേക്ക് ബൈറ്റുകൾ അല്ലെങ്കിൽ അതിൽ കുറവ്
ആ രജിസ്റ്റർ "gp" പോയിന്റ് ചെയ്യുന്നു. ചെറിയ ഡാറ്റ ഏരിയയ്ക്ക് 64 കിലോബൈറ്റുകൾ വരെ പിടിക്കാൻ കഴിയും.

-mzda=n
വലിപ്പമുള്ള സ്റ്റാറ്റിക് അല്ലെങ്കിൽ ഗ്ലോബൽ വേരിയബിളുകൾ ഇടുക n ആദ്യ 32-ലേക്ക് ബൈറ്റുകൾ അല്ലെങ്കിൽ അതിൽ കുറവ്
കിലോബൈറ്റ് മെമ്മറി.

-mv850
ടാർഗെറ്റ് പ്രോസസർ V850 ആണെന്ന് വ്യക്തമാക്കുക.

-mv850e3v5
ടാർഗെറ്റ് പ്രോസസർ V850E3V5 ആണെന്ന് വ്യക്തമാക്കുക. പ്രീപ്രോസസർ സ്ഥിരാങ്കം
ഈ ഓപ്ഷൻ ഉപയോഗിച്ചാൽ "__v850e3v5__" നിർവചിക്കപ്പെടുന്നു.

-mv850e2v4
ടാർഗെറ്റ് പ്രോസസർ V850E3V5 ആണെന്ന് വ്യക്തമാക്കുക. ഇത് ഒരു അപരനാമമാണ്
-mv850e3v5 ഓപ്ഷൻ.

-mv850e2v3
ടാർഗെറ്റ് പ്രോസസർ V850E2V3 ആണെന്ന് വ്യക്തമാക്കുക. പ്രീപ്രോസസർ സ്ഥിരാങ്കം
ഈ ഓപ്ഷൻ ഉപയോഗിച്ചാൽ "__v850e2v3__" നിർവചിക്കപ്പെടുന്നു.

-mv850e2
ടാർഗെറ്റ് പ്രോസസർ V850E2 ആണെന്ന് വ്യക്തമാക്കുക. പ്രീപ്രോസസർ സ്ഥിരാങ്കം
ഈ ഓപ്ഷൻ ഉപയോഗിച്ചാൽ "__v850e2__" നിർവചിക്കപ്പെടുന്നു.

-mv850e1
ടാർഗെറ്റ് പ്രോസസർ V850E1 ആണെന്ന് വ്യക്തമാക്കുക. പ്രീപ്രോസസർ സ്ഥിരാങ്കങ്ങൾ
ഈ ഓപ്ഷൻ ഉപയോഗിച്ചാൽ "__v850e1__", "__v850e__" എന്നിവ നിർവചിക്കപ്പെടുന്നു.

-mv850es
ടാർഗെറ്റ് പ്രോസസർ V850ES ആണെന്ന് വ്യക്തമാക്കുക. ഇത് ഒരു അപരനാമമാണ് -mv850e1
ഓപ്ഷൻ.

-mv850e
ടാർഗെറ്റ് പ്രോസസർ V850E ആണെന്ന് വ്യക്തമാക്കുക. പ്രീപ്രോസസർ സ്ഥിരാങ്കം "__v850e__"
ഈ ഓപ്ഷൻ ഉപയോഗിക്കുകയാണെങ്കിൽ നിർവചിക്കപ്പെടുന്നു.

ഇല്ലെങ്കിൽ -mv850 വേണ്ടാ -mv850e വേണ്ടാ -mv850e1 വേണ്ടാ -mv850e2 വേണ്ടാ -mv850e2v3 വേണ്ടാ -mv850e3v5
നിർവചിക്കപ്പെട്ടതിന് ശേഷം ഒരു ഡിഫോൾട്ട് ടാർഗെറ്റ് പ്രൊസസർ തിരഞ്ഞെടുത്ത് പ്രസക്തമായത് __v850*__
പ്രീപ്രോസസർ സ്ഥിരാങ്കം നിർവചിച്ചിരിക്കുന്നു.

"__v850", "__v851__" എന്നീ പ്രീപ്രൊസസ്സർ സ്ഥിരാങ്കങ്ങൾ എപ്പോഴും നിർവചിക്കപ്പെടുന്നു, പരിഗണിക്കാതെ തന്നെ
ഏത് പ്രോസസർ വേരിയന്റാണ് ലക്ഷ്യം.

-mdisable-കോൾ
-mno-disable-കോൾ
ഈ ഓപ്‌ഷൻ v850e, v850e1, എന്നതിനായുള്ള "CALLT" നിർദ്ദേശത്തിന്റെ ജനറേഷൻ അടിച്ചമർത്തുന്നു.
v850 ആർക്കിടെക്ചറിന്റെ v2e850, v2e3v850, v3e5v850 എന്നിവ.

RH850 ABI ഉപയോഗത്തിലായിരിക്കുമ്പോൾ ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കും (കാണുക -mrh850-abi), ഒപ്പം
GCC ABI ഉപയോഗത്തിലായിരിക്കുമ്പോൾ ഡിഫോൾട്ടായി പ്രവർത്തനരഹിതമാക്കി. "CALLT" നിർദ്ദേശങ്ങൾ ആണെങ്കിൽ
ജനറേറ്റുചെയ്‌തതിനുശേഷം സി പ്രീപ്രൊസസ്സർ ചിഹ്നം "__V850_CALLT__" നിർവചിക്കപ്പെടുന്നു.

-mrelax
-mno-relax
കടന്നുപോകുക (അല്ലെങ്കിൽ കടന്നുപോകരുത്). -mrelax അസംബ്ലറിലേക്കുള്ള കമാൻഡ്-ലൈൻ ഓപ്ഷൻ.

-mlong-ജമ്പുകൾ
-mno-ലോംഗ്-ജമ്പുകൾ
പിസി-ആപേക്ഷിക ജമ്പ് നിർദ്ദേശങ്ങളുടെ ജനറേഷൻ പ്രവർത്തനരഹിതമാക്കുക (അല്ലെങ്കിൽ വീണ്ടും പ്രവർത്തനക്ഷമമാക്കുക).

-msoft-float
-mhard-float
ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങളുടെ ജനറേഷൻ പ്രവർത്തനരഹിതമാക്കുക (അല്ലെങ്കിൽ വീണ്ടും പ്രവർത്തനക്ഷമമാക്കുക). ഈ
ടാർഗെറ്റ് ആർക്കിടെക്ചർ ആയിരിക്കുമ്പോൾ മാത്രമേ ഓപ്ഷൻ പ്രാധാന്യമുള്ളൂ V850E2V3 അല്ലെങ്കിൽ ഉയർന്നത്. എങ്കിൽ
ഹാർഡ്‌വെയർ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ ജനറേറ്റുചെയ്യുന്നു, തുടർന്ന് സി പ്രീപ്രോസസർ
"__FPU_OK__" എന്ന ചിഹ്നം നിർവചിച്ചിരിക്കുന്നു, അല്ലാത്തപക്ഷം "__NO_FPU__" ചിഹ്നം നിർവചിച്ചിരിക്കുന്നു.

-മ്ലൂപ്പ്
e3v5 LOOP നിർദ്ദേശത്തിന്റെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുന്നു. ഈ നിർദ്ദേശത്തിന്റെ ഉപയോഗം അല്ല
e3v5 ആർക്കിടെക്ചർ തിരഞ്ഞെടുക്കുമ്പോൾ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുന്നു, കാരണം അതിന്റെ ഉപയോഗം ഇപ്പോഴും നിലനിൽക്കുന്നു
പരീക്ഷണാത്മക.

-mrh850-abi
-mghs
V850 ABI-യുടെ RH850 പതിപ്പിനുള്ള പിന്തുണ പ്രവർത്തനക്ഷമമാക്കുന്നു. ഇതാണ് സ്ഥിരസ്ഥിതി. കൂടെ
എബിഐയുടെ ഈ പതിപ്പിന് ഇനിപ്പറയുന്ന നിയമങ്ങൾ ബാധകമാണ്:

* പൂർണ്ണസംഖ്യ വലുപ്പമുള്ള ഘടനകളും യൂണിയനുകളും ഒരു മെമ്മറി പോയിന്റർ വഴി തിരിച്ചുനൽകുന്നു
ഒരു രജിസ്റ്റർ.

* വലിയ ഘടനകളും യൂണിയനുകളും (8 ബൈറ്റിലധികം വലിപ്പം) മൂല്യം വഴി കടന്നുപോകുന്നു.

* ഫംഗ്‌ഷനുകൾ 16-ബിറ്റ് ബൗണ്ടറികളിലേക്ക് വിന്യസിച്ചിരിക്കുന്നു.

* ദി -m8byte-align കമാൻഡ്-ലൈൻ ഓപ്ഷൻ പിന്തുണയ്ക്കുന്നു.

* ദി -mdisable-കോൾ കമാൻഡ്-ലൈൻ ഓപ്ഷൻ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു. ദി
-mno-disable-കോൾ കമാൻഡ്-ലൈൻ ഓപ്ഷൻ പിന്തുണയ്ക്കുന്നില്ല.

ABI-യുടെ ഈ പതിപ്പ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, C പ്രീപ്രൊസസ്സർ ചിഹ്നം "__V850_RH850_ABI__"
നിർവചിച്ചിരിക്കുന്നത്.

-mgcc-abi
V850 ABI-യുടെ പഴയ GCC പതിപ്പിനുള്ള പിന്തുണ പ്രവർത്തനക്ഷമമാക്കുന്നു. എബിഐയുടെ ഈ പതിപ്പിനൊപ്പം
ഇനിപ്പറയുന്ന നിയമങ്ങൾ ബാധകമാണ്:

* പൂർണ്ണസംഖ്യ വലുപ്പമുള്ള ഘടനകളും യൂണിയനുകളും "r10" രജിസ്റ്ററിൽ തിരികെ നൽകുന്നു.

* വലിയ ഘടനകളും യൂണിയനുകളും (8 ബൈറ്റുകളിൽ കൂടുതൽ വലിപ്പം) റഫറൻസ് വഴി കടന്നുപോകുന്നു.

* വലുപ്പം ഒപ്റ്റിമൈസ് ചെയ്യുന്നില്ലെങ്കിൽ ഫംഗ്‌ഷനുകൾ 32-ബിറ്റ് ബൗണ്ടറികളിലേക്ക് വിന്യസിച്ചിരിക്കുന്നു.

* ദി -m8byte-align കമാൻഡ്-ലൈൻ ഓപ്ഷൻ പിന്തുണയ്ക്കുന്നില്ല.

* ദി -mdisable-കോൾ കമാൻഡ്-ലൈൻ ഓപ്ഷൻ പിന്തുണയ്ക്കുന്നു, പക്ഷേ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല.

ABI-യുടെ ഈ പതിപ്പ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, C പ്രീപ്രൊസസ്സർ ചിഹ്നം "__V850_GCC_ABI__"
നിർവചിച്ചിരിക്കുന്നത്.

-m8byte-align
-mno-8byte-align
8-ബൈറ്റ് ബൗണ്ടറികളിൽ വിന്യസിക്കാൻ "ഇരട്ട", "നീണ്ട നീളമുള്ള" തരങ്ങൾക്കുള്ള പിന്തുണ പ്രവർത്തനക്ഷമമാക്കുന്നു.
എല്ലാ ഒബ്ജക്റ്റുകളുടെയും വിന്യാസം പരമാവധി 4-ബൈറ്റിലേക്ക് പരിമിതപ്പെടുത്തുക എന്നതാണ് സ്ഥിരസ്ഥിതി. എപ്പോൾ
-m8byte-align ഫലത്തിൽ C പ്രീപ്രൊസസ്സർ ചിഹ്നം "__V850_8BYTE_ALIGN__" ആണ്
നിർവചിച്ചിരിക്കുന്നത്.

-mbig-സ്വിച്ച്
വലിയ സ്വിച്ച് ടേബിളുകൾക്ക് അനുയോജ്യമായ കോഡ് സൃഷ്ടിക്കുക. എങ്കിൽ മാത്രം ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക
അസംബ്ലർ/ലിങ്കർ ഒരു സ്വിച്ച് ടേബിളിനുള്ളിൽ പരിധിക്ക് പുറത്തുള്ള ശാഖകളെക്കുറിച്ച് പരാതിപ്പെടുന്നു.

-മാപ്പ്-റെഗ്സ്
ഈ ഓപ്‌ഷൻ കംപൈലർ സൃഷ്‌ടിച്ച കോഡിൽ r2, r5 എന്നിവ ഉപയോഗിക്കുന്നതിന് കാരണമാകുന്നു. ഈ
ക്രമീകരണമാണ് സ്ഥിരസ്ഥിതി.

-mno-app-regs
ഈ ഓപ്ഷൻ r2, r5 എന്നിവ സ്ഥിര രജിസ്റ്ററുകളായി കണക്കാക്കുന്നു.

വാക്സ് ഓപ്ഷനുകൾ

ഇവ -m VAX-നുള്ള ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-മ്യൂണിക്സ്
Unix അസംബ്ലർ ചില ജമ്പ് നിർദ്ദേശങ്ങൾ ("aobleq" മുതലായവ) ഔട്ട്‌പുട്ട് ചെയ്യരുത്
VAX-ന് ദീർഘദൂര പരിധികളിൽ കൈകാര്യം ചെയ്യാൻ കഴിയില്ല.

-എംഗ്നു
GNU അസംബ്ലർ ആണെന്ന അനുമാനത്തിൽ, ആ ജമ്പ് നിർദ്ദേശങ്ങൾ ഔട്ട്പുട്ട് ചെയ്യുക
ഉപയോഗിച്ചു.

-എംജി ഡി ഫോർമാറ്റിന് പകരം ജി ഫോർമാറ്റ് ഫ്ലോട്ടിംഗ് പോയിന്റ് നമ്പറുകൾക്കുള്ള ഔട്ട്പുട്ട് കോഡ്.

വിസിയം ഓപ്ഷനുകൾ

-mdebug
ഫയൽ I/O നിർവ്വഹിക്കുന്നതും ഒരു MCM ടാർഗെറ്റിൽ പ്രവർത്തിക്കാൻ വിധിക്കപ്പെട്ടതുമായ ഒരു പ്രോഗ്രാം ആയിരിക്കണം
ഈ ഓപ്ഷനുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു. ഇത് libc.a, libdebug.a എന്നീ ലൈബ്രറികൾ ലിങ്ക് ചെയ്യപ്പെടുന്നതിന് കാരണമാകുന്നു.
ജിഡിബി റിമോട്ട് ഡീബഗ്ഗിംഗിന്റെ നിയന്ത്രണത്തിലുള്ള ടാർഗെറ്റിലാണ് പ്രോഗ്രാം റൺ ചെയ്യേണ്ടത്
അപൂർണ്ണം.

-എംസിം
ഫയൽ I/O നിർവ്വഹിക്കുന്നതും സിമുലേറ്ററിൽ പ്രവർത്തിക്കാൻ വിധിക്കപ്പെട്ടതുമായ ഒരു പ്രോഗ്രാം ആയിരിക്കണം
ഓപ്ഷനുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു. ഇത് libc.a, libsim.a എന്നീ ലൈബ്രറികൾ ലിങ്ക് ചെയ്യപ്പെടുന്നതിന് കാരണമാകുന്നു.

-mfpu
-mhard-float
ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ അടങ്ങിയ കോഡ് സൃഷ്ടിക്കുക. ഇതാണ് സ്ഥിരസ്ഥിതി.

-mno-fpu
-msoft-float
ഫ്ലോട്ടിംഗ് പോയിന്റിനായി ലൈബ്രറി കോളുകൾ അടങ്ങിയ കോഡ് സൃഷ്ടിക്കുക.

-msoft-float ഔട്ട്പുട്ട് ഫയലിലെ കോളിംഗ് കൺവെൻഷൻ മാറ്റുന്നു; അതിനാൽ, അത് മാത്രം
നിങ്ങൾ സമാഹരിച്ചാൽ ഉപയോഗപ്രദമാണ് എല്ലാം ഈ ഓപ്ഷൻ ഉള്ള ഒരു പ്രോഗ്രാമിന്റെ. പ്രത്യേകിച്ച്, നിങ്ങൾക്ക് ആവശ്യമാണ്
സമാഹരിക്കുക libgcc.a, GCC-യ്‌ക്കൊപ്പം വരുന്ന ലൈബ്രറി -msoft-float ഇതിനായി
ജോലി ചെയ്യാൻ.

-mcpu=cpu_type
അതിനുള്ള നിർദ്ദേശ സെറ്റ്, രജിസ്റ്റർ സെറ്റ്, നിർദ്ദേശ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ എന്നിവ സജ്ജമാക്കുക
യന്ത്ര തരം cpu_type. പിന്തുണയ്ക്കുന്ന മൂല്യങ്ങൾ cpu_type ആകുന്നു mcm, gr5 ഒപ്പം gr6.

mcm എന്നതിന്റെ പര്യായപദമാണ് gr5 പിന്നോക്ക അനുയോജ്യതയ്ക്കായി അവതരിപ്പിക്കുന്നു.

ഡിഫോൾട്ടായി (അല്ലെങ്കിൽ കോൺഫിഗർ ചെയ്തിട്ടില്ലെങ്കിൽ), GR5 വേരിയന്റിനായി GCC കോഡ് സൃഷ്ടിക്കുന്നു
വിസിയം വാസ്തുവിദ്യ.

കൂടെ -mcpu=gr6, വിസിയം ആർക്കിടെക്ചറിന്റെ GR6 വേരിയന്റിനായി GCC കോഡ് സൃഷ്ടിക്കുന്നു.
GR5 കോഡിൽ നിന്നുള്ള ഒരേയൊരു വ്യത്യാസം കമ്പൈലർ ബ്ലോക്ക് നീക്കം സൃഷ്ടിക്കും എന്നതാണ്
നിർദ്ദേശങ്ങൾ.

-mtune=cpu_type
മെഷീൻ തരത്തിനായി നിർദ്ദേശ ഷെഡ്യൂളിംഗ് പാരാമീറ്ററുകൾ സജ്ജമാക്കുക cpu_type, എന്നാൽ സജ്ജീകരിക്കരുത്
ഇൻസ്ട്രക്ഷൻ സെറ്റ് അല്ലെങ്കിൽ രജിസ്റ്റർ സെറ്റ് ആ ഓപ്ഷൻ -mcpu=cpu_type ചെയ്യും.

-msv-മോഡ്
ആക്‌സസിന് നിയന്ത്രണങ്ങളില്ലാത്ത സൂപ്പർവൈസർ മോഡിനായി കോഡ് സൃഷ്‌ടിക്കുക
പൊതു രജിസ്റ്ററുകളിലേക്ക്. ഇതാണ് സ്ഥിരസ്ഥിതി.

-മ്യൂസർ-മോഡ്
ചില പൊതു രജിസ്റ്ററുകളിലേക്കുള്ള ആക്സസ് ഉള്ള ഉപയോക്തൃ മോഡിനായി കോഡ് സൃഷ്ടിക്കുക
നിരോധിച്ചിരിക്കുന്നു: GR5-ൽ, r24 മുതൽ r31 വരെയുള്ള രജിസ്റ്ററുകൾ ഈ മോഡിൽ ആക്സസ് ചെയ്യാൻ കഴിയില്ല; ന്
GR6, R29 മുതൽ r31 വരെയുള്ള രജിസ്റ്ററുകളെ മാത്രമേ ബാധിക്കുകയുള്ളൂ.

വി.എം.എസ് ഓപ്ഷനുകൾ

ഇവ -m VMS നടപ്പിലാക്കലുകൾക്കായി ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു:

-mvms-റിട്ടേൺ-കോഡുകൾ
"മെയിൻ" എന്നതിൽ നിന്ന് വിഎംഎസ് അവസ്ഥ കോഡുകൾ തിരികെ നൽകുക. POSIX-സ്റ്റൈൽ അവസ്ഥ തിരികെ നൽകുക എന്നതാണ് ഡിഫോൾട്ട്
(ഉദാ. പിശക്) കോഡുകൾ.

-mdebug-main=പ്രിഫിക്‌സ്
പേര് ആരംഭിക്കുന്ന ആദ്യ ദിനചര്യ ഫ്ലാഗ് ചെയ്യുക പ്രിഫിക്‌സ് യുടെ പ്രധാന ദിനചര്യയായി
ഡീബഗ്ഗർ.

-malloc64
64-ബിറ്റ് മെമ്മറി അലോക്കേഷൻ ദിനചര്യകളിലേക്ക് ഡിഫോൾട്ട്.

-mpointer-size=വലുപ്പം
പോയിന്ററുകളുടെ സ്ഥിര വലുപ്പം സജ്ജമാക്കുക. സാധ്യമായ ഓപ്ഷനുകൾ വലുപ്പം ആകുന്നു 32 or കുറിയ 32 ബിറ്റിന്
സൂചനകൾ, 64 or നീളമുള്ള 64 ബിറ്റ് പോയിന്ററുകൾക്ക്, കൂടാതെ ഇല്ല 32 ബിറ്റ് പോയിന്ററുകൾ മാത്രം പിന്തുണയ്ക്കുന്നതിന്.
പിന്നീടുള്ള ഓപ്ഷൻ "pragma pointer_size" പ്രവർത്തനരഹിതമാക്കുന്നു.

VxWorks ഓപ്ഷനുകൾ

ഈ വിഭാഗത്തിലെ ഓപ്ഷനുകൾ എല്ലാ VxWorks ടാർഗെറ്റുകൾക്കും നിർവചിച്ചിരിക്കുന്നു. നിർദ്ദിഷ്ട ഓപ്ഷനുകൾ
ടാർഗെറ്റ് ഹാർഡ്‌വെയർ ആ ലക്ഷ്യത്തിനായുള്ള മറ്റ് ഓപ്ഷനുകൾക്കൊപ്പം ലിസ്റ്റ് ചെയ്തിരിക്കുന്നു.

-mrtp
VxWorks കേർണലുകൾക്കും തത്സമയ പ്രോസസ്സുകൾക്കും (ആർ‌ടി‌പികൾ) ജിസിസിക്ക് കോഡ് സൃഷ്ടിക്കാൻ കഴിയും. ഈ
ഓപ്ഷൻ മുമ്പത്തേതിൽ നിന്ന് രണ്ടാമത്തേതിലേക്ക് മാറുന്നു. ഇത് പ്രീപ്രൊസസ്സർ മാക്രോയെയും നിർവചിക്കുന്നു
"__RTP__".

--നോൺ-സ്റ്റാറ്റിക്
സ്റ്റാറ്റിക് ലൈബ്രറികളേക്കാൾ പങ്കിട്ട ലൈബ്രറികൾക്കെതിരെ എക്സിക്യൂട്ടബിൾ RTP ലിങ്ക് ചെയ്യുക. ദി
ഓപ്ഷനുകൾ - സ്റ്റാറ്റിക് ഒപ്പം - പങ്കിട്ടു RTP-കൾക്കും ഉപയോഗിക്കാം; - സ്റ്റാറ്റിക് സ്ഥിരസ്ഥിതിയാണ്.

- ബിസ്റ്റാറ്റിക്
-Bdynamic
ഈ ഓപ്ഷനുകൾ ലിങ്കറിന് കൈമാറുന്നു. അനുയോജ്യതയ്ക്കായി അവ നിർവചിച്ചിരിക്കുന്നു
ഡയബ്.

-എക്സ്ബൈൻഡ്-അലസമായ
ഫംഗ്‌ഷൻ കോളുകളുടെ അലസമായ ബൈൻഡിംഗ് പ്രവർത്തനക്ഷമമാക്കുക. ഈ ഓപ്ഷൻ തുല്യമാണ് -Wl,-z, ഇപ്പോൾ അത്
ഡയാബുമായുള്ള അനുയോജ്യതയ്ക്കായി നിർവചിച്ചിരിക്കുന്നു.

-എക്സ്ബൈൻഡ്-ഇപ്പോൾ
ഫംഗ്‌ഷൻ കോളുകളുടെ അലസമായ ബൈൻഡിംഗ് പ്രവർത്തനരഹിതമാക്കുക. ഈ ഓപ്‌ഷൻ ഡിഫോൾട്ടാണ്, ഇതിനായി നിർവചിച്ചിരിക്കുന്നു
ഡയാബുമായുള്ള അനുയോജ്യത.

x86 ഓപ്ഷനുകൾ

ഇവ -m കമ്പ്യൂട്ടറുകളുടെ x86 കുടുംബത്തിന് ഓപ്ഷനുകൾ നിർവചിച്ചിരിക്കുന്നു.

-മാർച്ച്=cpu-തരം
മെഷീൻ തരത്തിനായുള്ള നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുക cpu-തരം. അതിനു വിപരീതമായി -mtune=cpu-തരം,
നിർദിഷ്ടതിനായി ജനറേറ്റ് ചെയ്ത കോഡ് ട്യൂൺ ചെയ്യുന്നു cpu-തരം, -മാർച്ച്=cpu-തരം
കോഡ് സൃഷ്‌ടിക്കാൻ GCC-യെ അനുവദിക്കുന്നു, അത് പ്രൊസസ്സറുകളിൽ പ്രവർത്തിക്കില്ല
സൂചിപ്പിച്ചു. വ്യക്തമാക്കുന്നത് -മാർച്ച്=cpu-തരം ധ്വനിപ്പിക്കുന്നു -mtune=cpu-തരം.

എന്നതിനായുള്ള തിരഞ്ഞെടുപ്പുകൾ cpu-തരം ആകുന്നു:

നേറ്റീവ്
ഇത് നിർണ്ണയിച്ചുകൊണ്ട് സമാഹരിക്കുന്ന സമയത്ത് കോഡ് ജനറേറ്റുചെയ്യാൻ സിപിയു തിരഞ്ഞെടുക്കുന്നു
കംപൈലിംഗ് മെഷീന്റെ പ്രോസസ്സർ തരം. ഉപയോഗിക്കുന്നത് -മാർച്ച് = സ്വദേശി എല്ലാം പ്രാപ്തമാക്കുന്നു
ലോക്കൽ മെഷീൻ പിന്തുണയ്ക്കുന്ന ഇൻസ്ട്രക്ഷൻ സബ്സെറ്റുകൾ (അതിനാൽ ഫലം പ്രവർത്തിച്ചേക്കില്ല
വ്യത്യസ്ത മെഷീനുകളിൽ). ഉപയോഗിക്കുന്നത് -mtune= സ്വദേശി പ്രാദേശികമായി ഒപ്റ്റിമൈസ് ചെയ്ത കോഡ് നിർമ്മിക്കുന്നു
തിരഞ്ഞെടുത്ത ഇൻസ്ട്രക്ഷൻ സെറ്റിന്റെ നിയന്ത്രണങ്ങൾക്ക് കീഴിലുള്ള യന്ത്രം.

i386
യഥാർത്ഥ ഇന്റൽ i386 CPU.

i486
ഇന്റൽ i486 സിപിയു. (ഈ ചിപ്പിനായി ഒരു ഷെഡ്യൂളിംഗും നടപ്പിലാക്കിയിട്ടില്ല.)

i586
പെന്റിയം
MMX പിന്തുണയില്ലാത്ത ഇന്റൽ പെന്റിയം സിപിയു.

പെന്റിയം-എംഎംഎക്സ്
ഇന്റൽ പെന്റിയം എംഎംഎക്സ് സിപിയു, എംഎംഎക്സ് ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയുള്ള പെന്റിയം കോർ അടിസ്ഥാനമാക്കിയുള്ളതാണ്.

പെന്റിയംപ്രോ
ഇന്റൽ പെന്റിയം പ്രോ സിപിയു.

i686
കൂടെ ഉപയോഗിക്കുമ്പോൾ - മാർച്ച്, പെന്റിയം പ്രോ ഇൻസ്ട്രക്ഷൻ സെറ്റ് ഉപയോഗിക്കുന്നു, അതിനാൽ കോഡ് പ്രവർത്തിക്കുന്നു
എല്ലാ i686 ഫാമിലി ചിപ്പുകളിലും. കൂടെ ഉപയോഗിക്കുമ്പോൾ -mtune, എന്നതിന് സമാനമായ അർത്ഥമുണ്ട്
ജനറിക്.

പെന്റിയം2
ഇന്റൽ പെന്റിയം II CPU, MMX ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയുള്ള പെന്റിയം പ്രോ കോർ അടിസ്ഥാനമാക്കിയുള്ളതാണ്.

പെന്റിയം3
പെന്റിയം3മി
ഇന്റൽ പെന്റിയം III സിപിയു, എംഎംഎക്സ്, എസ്എസ്ഇ ഇൻസ്ട്രക്ഷൻ സെറ്റുള്ള പെന്റിയം പ്രോ കോർ അടിസ്ഥാനമാക്കിയുള്ളതാണ്
പിന്തുണ.

പെന്റിയം-എം
ഇന്റൽ പെന്റിയം എം; MMX, SSE, SSE2 എന്നിവയുള്ള Intel Pentium III CPU-യുടെ ലോ-പവർ പതിപ്പ്
നിർദ്ദേശ സെറ്റ് പിന്തുണ. സെൻട്രിനോ നോട്ട്ബുക്കുകൾ ഉപയോഗിക്കുന്നു.

പെന്റിയം4
പെന്റിയം4മി
MMX, SSE, SSE4 ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയുള്ള ഇന്റൽ പെന്റിയം 2 സിപിയു.

പ്രെസ്കോട്ട്
MMX, SSE, SSE4, SSE2 നിർദ്ദേശങ്ങളോടുകൂടിയ ഇന്റൽ പെന്റിയം 3 CPU-യുടെ മെച്ചപ്പെടുത്തിയ പതിപ്പ്
പിന്തുണ സജ്ജമാക്കുക.

നൊക്കോണ
4-ബിറ്റ് എക്സ്റ്റൻഷനുകളുള്ള ഇന്റൽ പെന്റിയം 64 സിപിയുവിന്റെ മെച്ചപ്പെടുത്തിയ പതിപ്പ്, MMX, SSE, SSE2 കൂടാതെ
SSE3 നിർദ്ദേശ സെറ്റ് പിന്തുണ.

കോർ 2
2-ബിറ്റ് എക്സ്റ്റൻഷനുകളുള്ള ഇന്റൽ കോർ 64 CPU, MMX, SSE, SSE2, SSE3, SSSE3
നിർദ്ദേശ സെറ്റ് പിന്തുണ.

നെഹാലം
64-ബിറ്റ് വിപുലീകരണങ്ങളുള്ള ഇന്റൽ നെഹാലം സിപിയു, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT നിർദ്ദേശ സെറ്റ് പിന്തുണ.

വെസ്റ്റ്മെയർ
64-ബിറ്റ് വിപുലീകരണങ്ങളുള്ള ഇന്റൽ വെസ്റ്റ്മെയർ സിപിയു, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, AES, PCLMUL ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണ.

മണൽപ്പാലം
64-ബിറ്റ് വിപുലീകരണങ്ങളുള്ള ഇന്റൽ സാൻഡി ബ്രിഡ്ജ് സിപിയു, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണ.

ഐവിബ്രിഡ്ജ്
64-ബിറ്റ് വിപുലീകരണങ്ങളുള്ള ഇന്റൽ ഐവി ബ്രിഡ്ജ് സിപിയു, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C നിർദ്ദേശങ്ങൾ
പിന്തുണ.

ഹാസ്വെൽ
64-ബിറ്റ് വിപുലീകരണങ്ങളുള്ള ഇന്റൽ ഹാസ്‌വെൽ സിപിയു, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2
ഒപ്പം F16C ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയും.

വിശാലമായ കിണർ
64-ബിറ്റ് വിപുലീകരണങ്ങളുള്ള ഇന്റൽ ബ്രോഡ്‌വെൽ സിപിയു, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2,
F16C, RDSEED, ADCX, PREFETCHW ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണ.

ബോണൽ
64-ബിറ്റ് എക്സ്റ്റൻഷനുകളുള്ള ഇന്റൽ ബോണൽ സിപിയു, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3
നിർദ്ദേശ സെറ്റ് പിന്തുണ.

വെള്ളിമോണ്ട്
64-ബിറ്റ് വിപുലീകരണങ്ങളുള്ള ഇന്റൽ സിൽവർമോണ്ട് സിപിയു, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND നിർദ്ദേശ സെറ്റ് പിന്തുണ.

knl 64-ബിറ്റ് വിപുലീകരണങ്ങളുള്ള ഇന്റൽ നൈറ്റിന്റെ ലാൻഡിംഗ് സിപിയു, MOVBE, MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER, AVX512CD
നിർദ്ദേശ സെറ്റ് പിന്തുണ.

k6 എംഎംഎക്സ് ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയുള്ള എഎംഡി കെ6 സിപിയു.

k6-2
k6-3
MMX, 6DNow എന്നിവയുള്ള AMD K3 CPU-യുടെ മെച്ചപ്പെടുത്തിയ പതിപ്പുകൾ! നിർദ്ദേശ സെറ്റ് പിന്തുണ.

അത്ലൺ
അത്ലൺ-tbird
MMX ഉള്ള AMD അത്‌ലോൺ CPU, 3dNOW!, മെച്ചപ്പെടുത്തിയ 3DNow! കൂടാതെ SSE പ്രീഫെച്ച് നിർദ്ദേശങ്ങളും
പിന്തുണ.

അത്ലൺ-4
athlon-xp
അത്ലൺ-എംപി
MMX ഉള്ള മെച്ചപ്പെടുത്തിയ AMD അത്‌ലോൺ CPU, 3DNow!, മെച്ചപ്പെടുത്തിയ 3DNow! കൂടാതെ മുഴുവൻ എസ്എസ്ഇ നിർദ്ദേശവും
പിന്തുണ സജ്ജമാക്കുക.

k8
ഒപ്റ്റെറോൺ
അത്ലൺ64
അത്ലോൺ-എഫ് എക്സ്
x8-86 ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയുള്ള എഎംഡി കെ64 കോർ അടിസ്ഥാനമാക്കിയുള്ള പ്രോസസ്സറുകൾ ഉൾപ്പെടെ
AMD Opteron, Athlon 64, Athlon 64 FX പ്രോസസറുകൾ. (ഇത് MMX സൂപ്പർസെറ്റ് ചെയ്യുന്നു,
SSE, SSE2, 3DNow!, മെച്ചപ്പെടുത്തിയ 3DNow! കൂടാതെ 64-ബിറ്റ് ഇൻസ്ട്രക്ഷൻ സെറ്റ് എക്സ്റ്റൻഷനുകളും.)

k8-sse3
opteron-sse3
athlon64-sse3
SSE8 നിർദ്ദേശ സപ്പോർട്ട് ഉള്ള AMD K3 കോറുകളുടെ മെച്ചപ്പെടുത്തിയ പതിപ്പുകൾ.

amdfam10
ബാര്സിലോന
x10-86 ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയുള്ള എഎംഡി ഫാമിലി 64എച്ച് കോറുകൾ അടിസ്ഥാനമാക്കിയുള്ള സിപിയു. (ഈ
സൂപ്പർസെറ്റുകൾ MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, മെച്ചപ്പെടുത്തിയ 3DNow!, ABM, 64-ബിറ്റ്
നിർദ്ദേശ സെറ്റ് വിപുലീകരണങ്ങൾ.)

bdver1
x15-86 ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയുള്ള എഎംഡി ഫാമിലി 64എച്ച് കോറുകൾ അടിസ്ഥാനമാക്കിയുള്ള സിപിയു. (ഈ
സൂപ്പർസെറ്റുകൾ FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A,
SSSE3, SSE4.1, SSE4.2, ABM, 64-ബിറ്റ് ഇൻസ്ട്രക്ഷൻ സെറ്റ് വിപുലീകരണങ്ങൾ.)

bdver2
x15-86 നിർദ്ദേശ സപ്പോർട്ട് ഉള്ള എഎംഡി ഫാമിലി 64h കോർ അധിഷ്ഠിത സിപിയു. (ഈ
സൂപ്പർസെറ്റുകൾ BMI, TBM, F16C, FMA, FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE,
SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, 64-ബിറ്റ് ഇൻസ്ട്രക്ഷൻ സെറ്റ്
വിപുലീകരണങ്ങൾ.)

bdver3
x15-86 നിർദ്ദേശ സപ്പോർട്ട് ഉള്ള എഎംഡി ഫാമിലി 64h കോർ അധിഷ്ഠിത സിപിയു. (ഈ
സൂപ്പർസെറ്റുകൾ BMI, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, XOP, LWP, AES, PCL_MUL, CX16,
MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, 64-ബിറ്റ് ഇൻസ്ട്രക്ഷൻ സെറ്റ്
വിപുലീകരണങ്ങൾ.

bdver4
x15-86 നിർദ്ദേശ സപ്പോർട്ട് ഉള്ള എഎംഡി ഫാമിലി 64h കോർ അധിഷ്ഠിത സിപിയു. (ഈ
സൂപ്പർസെറ്റുകൾ BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP, AES,
PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM കൂടാതെ
64-ബിറ്റ് ഇൻസ്ട്രക്ഷൻ സെറ്റ് എക്സ്റ്റൻഷനുകൾ.

btver1
x14-86 ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയുള്ള എഎംഡി ഫാമിലി 64എച്ച് കോറുകൾ അടിസ്ഥാനമാക്കിയുള്ള സിപിയു. (ഈ
സൂപ്പർസെറ്റുകൾ MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM, 64-ബിറ്റ് ഇൻസ്ട്രക്ഷൻ സെറ്റ്
വിപുലീകരണങ്ങൾ.)

btver2
x16-86 നിർദ്ദേശ സപ്പോർട്ട് ഉള്ള AMD ഫാമിലി 64h കോറുകൾ അടിസ്ഥാനമാക്കിയുള്ള CPU-കൾ. ഈ
MOVBE, F16C, BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM, SSE4A, എന്നിവ ഉൾപ്പെടുന്നു
SSSE3, SSE3, SSE2, SSE, MMX, 64-ബിറ്റ് ഇൻസ്ട്രക്ഷൻ സെറ്റ് വിപുലീകരണങ്ങൾ.

വിഞ്ചിപ്പ്-സി6
IDT WinChip C6 CPU, അധിക MMX ഇൻസ്ട്രക്ഷൻ സെറ്റിനൊപ്പം i486 പോലെ കൈകാര്യം ചെയ്യുന്നു
പിന്തുണ.

വിഞ്ചിപ്പ്2
IDT WinChip 2 CPU, അധിക MMX, 486DNow എന്നിവയ്‌ക്കൊപ്പം i3-ന്റെ അതേ രീതിയിൽ കൈകാര്യം ചെയ്യുന്നു!
നിർദ്ദേശ സെറ്റ് പിന്തുണ.

c3 MMX ഉം 3DNow ഉം ഉള്ള C3 CPU വഴി! നിർദ്ദേശ സെറ്റ് പിന്തുണ. (ഷെഡ്യൂളിംഗ് ഒന്നുമില്ല
ഈ ചിപ്പിനായി നടപ്പിലാക്കി.)

c3-2
VIA C3-2 (Nehemiah/C5XL) MMX, SSE ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയുള്ള CPU. (ഇല്ല
ഈ ചിപ്പിനായി ഷെഡ്യൂളിംഗ് നടപ്പിലാക്കുന്നു.)

ജിയോഡ്
MMX, 3DNow എന്നിവയ്‌ക്കൊപ്പം എഎംഡി ജിയോഡ് ഉൾച്ചേർത്ത പ്രോസസർ! നിർദ്ദേശ സെറ്റ് പിന്തുണ.

-mtune=cpu-തരം
ട്യൂൺ ചെയ്യുക cpu-തരം എബിഐ ഒഴികെ ജനറേറ്റ് ചെയ്ത കോഡിന് ബാധകമായ എല്ലാം
ലഭ്യമായ നിർദ്ദേശങ്ങളുടെ കൂട്ടവും. ഒരു നിർദ്ദിഷ്ട തിരഞ്ഞെടുക്കുമ്പോൾ cpu-തരം ഷെഡ്യൂളുകൾ
ആ പ്രത്യേക ചിപ്പിന് അനുയോജ്യമായ കാര്യങ്ങൾ, കംപൈലർ ഒരു കോഡും സൃഷ്ടിക്കുന്നില്ല
നിങ്ങൾ a ഉപയോഗിക്കാത്തിടത്തോളം അത് ഡിഫോൾട്ട് മെഷീൻ തരത്തിൽ പ്രവർത്തിക്കാൻ കഴിയില്ല -മാർച്ച്=cpu-തരം ഓപ്ഷൻ.
ഉദാഹരണത്തിന്, i686-pc-linux-gnu എന്നതിനായി GCC കോൺഫിഗർ ചെയ്തിട്ടുണ്ടെങ്കിൽ -mtune=പെന്റിയം4 സൃഷ്ടിക്കുന്നു
പെന്റിയം 4-നായി ട്യൂൺ ചെയ്‌തിരിക്കുന്ന കോഡ്, പക്ഷേ ഇപ്പോഴും i686 മെഷീനുകളിൽ പ്രവർത്തിക്കുന്നു.

എന്നതിനായുള്ള തിരഞ്ഞെടുപ്പുകൾ cpu-തരം എന്നതിന് സമാനമാണ് - മാർച്ച്. ഇതുകൂടാതെ, -mtune 2 പിന്തുണയ്ക്കുന്നു
എന്നതിനായുള്ള അധിക ചോയ്‌സുകൾ cpu-തരം:

ജനറിക്
ഏറ്റവും സാധാരണമായ IA32/AMD64/EM64T പ്രോസസറുകൾക്കായി ഒപ്റ്റിമൈസ് ചെയ്ത പ്രൊഡക്‌ട് കോഡ്. നിങ്ങൾ എങ്കിൽ
നിങ്ങളുടെ കോഡ് റൺ ചെയ്യുന്ന സിപിയു അറിയുക, തുടർന്ന് നിങ്ങൾ ഉചിതമായത് ഉപയോഗിക്കണം
-mtune or - മാർച്ച് പകരം ഓപ്ഷൻ -mtune=ജനറിക്. പക്ഷേ, നിങ്ങൾക്കറിയില്ലെങ്കിൽ
നിങ്ങളുടെ ആപ്ലിക്കേഷന്റെ സിപിയു ഉപയോക്താക്കൾക്ക് കൃത്യമായി എന്താണ് ലഭിക്കുക, അപ്പോൾ നിങ്ങൾ ഇത് ഉപയോഗിക്കണം
ഓപ്ഷൻ.

വിപണിയിൽ പുതിയ പ്രോസസ്സറുകൾ വിന്യസിച്ചിരിക്കുന്നതിനാൽ, ഈ ഓപ്ഷന്റെ സ്വഭാവം
മാറും. അതിനാൽ, നിങ്ങൾ GCC-യുടെ ഒരു പുതിയ പതിപ്പിലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുകയാണെങ്കിൽ, കോഡ് ജനറേഷൻ
ഈ ഓപ്‌ഷൻ നിയന്ത്രിക്കുന്നത് ഏറ്റവും കൂടുതൽ പ്രോസസ്സറുകൾ പ്രതിഫലിപ്പിക്കുന്നതിന് മാറും
GCC യുടെ പതിപ്പ് പുറത്തിറങ്ങുന്ന സമയത്ത് സാധാരണമാണ്.

അവിടെ ഇല്ല -മാർച്ച്=ജനറിക് ഓപ്ഷൻ കാരണം - മാർച്ച് നിർദ്ദേശങ്ങളുടെ സെറ്റിനെ സൂചിപ്പിക്കുന്നു
കംപൈലറിന് ഉപയോഗിക്കാൻ കഴിയും, എല്ലാവർക്കും ബാധകമായ പൊതുവായ നിർദ്ദേശങ്ങളൊന്നും ഇല്ല
പ്രോസസ്സറുകൾ. താരതമ്യേന, -mtune പ്രോസസ്സറിനെ സൂചിപ്പിക്കുന്നു (അല്ലെങ്കിൽ, ഈ സാഹചര്യത്തിൽ,
പ്രോസസ്സറുകളുടെ ശേഖരം) ഇതിനായി കോഡ് ഒപ്റ്റിമൈസ് ചെയ്തിരിക്കുന്നു.

Intel
ഏറ്റവും നിലവിലുള്ള ഇന്റൽ പ്രോസസറുകൾക്കായി ഒപ്റ്റിമൈസ് ചെയ്ത പ്രൊഡ്യൂസ് കോഡ്, ഹാസ്വെൽ
ജിസിസിയുടെ ഈ പതിപ്പിനായി സിൽവർമോണ്ടും. നിങ്ങളുടെ കോഡിലുള്ള സിപിയു നിങ്ങൾക്കറിയാമെങ്കിൽ
പ്രവർത്തിക്കും, തുടർന്ന് നിങ്ങൾ അനുബന്ധം ഉപയോഗിക്കണം -mtune or - മാർച്ച് പകരം ഓപ്ഷൻ
-mtune=intel. പക്ഷേ, നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഹാസ്‌വെല്ലിലും മികച്ച പ്രകടനം കാഴ്ചവെക്കണമെന്ന് നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ
കൂടാതെ സിൽവർമോണ്ട്, നിങ്ങൾ ഈ ഓപ്ഷൻ ഉപയോഗിക്കണം.

പുതിയ ഇന്റൽ പ്രോസസറുകൾ വിപണിയിൽ വിന്യസിച്ചിരിക്കുന്നതിനാൽ, ഇതിന്റെ സ്വഭാവം
ഓപ്ഷൻ മാറും. അതിനാൽ, നിങ്ങൾ GCC-യുടെ ഒരു പുതിയ പതിപ്പിലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുകയാണെങ്കിൽ, കോഡ്
ഈ ഓപ്‌ഷൻ നിയന്ത്രിക്കുന്ന ജനറേഷൻ ഏറ്റവും നിലവിലുള്ള ഇന്റലിനെ പ്രതിഫലിപ്പിക്കുന്ന തരത്തിൽ മാറും
GCC യുടെ പതിപ്പ് പുറത്തിറങ്ങിയ സമയത്തെ പ്രോസസ്സറുകൾ.

അവിടെ ഇല്ല -മാർച്ച്=ഇന്റൽ ഓപ്ഷൻ കാരണം - മാർച്ച് നിർദ്ദേശങ്ങളുടെ സെറ്റിനെ സൂചിപ്പിക്കുന്നു
കംപൈലറിന് ഉപയോഗിക്കാൻ കഴിയും, എല്ലാവർക്കും ബാധകമായ പൊതുവായ നിർദ്ദേശങ്ങളൊന്നും ഇല്ല
പ്രോസസ്സറുകൾ. താരതമ്യേന, -mtune പ്രോസസ്സറിനെ സൂചിപ്പിക്കുന്നു (അല്ലെങ്കിൽ, ഈ സാഹചര്യത്തിൽ,
പ്രോസസ്സറുകളുടെ ശേഖരം) ഇതിനായി കോഡ് ഒപ്റ്റിമൈസ് ചെയ്തിരിക്കുന്നു.

-mcpu=cpu-തരം
എന്നതിനുള്ള ഒഴിവാക്കപ്പെട്ട പര്യായപദം -mtune.

-mfpmath=യൂണിറ്റ്
തിരഞ്ഞെടുത്ത യൂണിറ്റിനായി ഫ്ലോട്ടിംഗ് പോയിന്റ് കണക്ക് സൃഷ്ടിക്കുക യൂണിറ്റ്. എന്നതിനായുള്ള തിരഞ്ഞെടുപ്പുകൾ യൂണിറ്റ് ആകുന്നു:

387 മിക്ക ചിപ്പുകളിലും നിലവിലുള്ള 387 ഫ്ലോട്ടിംഗ് പോയിന്റ് കോപ്രൊസസർ ഉപയോഗിക്കുക
അല്ലാതെ അനുകരിക്കുകയും ചെയ്തു. ഈ ഓപ്ഷൻ ഉപയോഗിച്ച് സമാഹരിച്ച കോഡ് മിക്കവാറും എല്ലായിടത്തും പ്രവർത്തിക്കുന്നു.
താത്കാലിക ഫലങ്ങൾ കൃത്യതയ്ക്ക് പകരം 80-ബിറ്റ് കൃത്യതയിൽ കണക്കാക്കുന്നു
തരം അനുസരിച്ച് വ്യക്തമാക്കിയത്, മിക്കവയുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ അല്പം വ്യത്യസ്തമായ ഫലങ്ങൾ നൽകുന്നു
മറ്റ് ചിപ്പുകൾ. കാണുക -ഫ്ലോട്ട്-സ്റ്റോർ കൂടുതൽ വിശദമായ വിവരണത്തിന്.

x86-32 ടാർഗെറ്റുകൾക്കുള്ള ഡിഫോൾട്ട് ചോയിസാണിത്.

സം എസ്എസ്ഇ ഇൻസ്ട്രക്ഷൻ സെറ്റിലുള്ള സ്കെയിലർ ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുക. ഈ
പെന്റിയം III ഉം പുതിയ ചിപ്പുകളും എഎംഡി ലൈനിലും ഇൻസ്ട്രക്ഷൻ സെറ്റ് പിന്തുണയ്ക്കുന്നു
അത്‌ലോൺ-4, അത്‌ലോൺ എക്‌സ്‌പി, അത്‌ലോൺ എംപി ചിപ്പുകൾ. എസ്എസ്ഇയുടെ മുൻ പതിപ്പ്
ഇൻസ്ട്രക്ഷൻ സെറ്റ് ഒറ്റ-പ്രിസിഷൻ ഗണിതത്തെ മാത്രമേ പിന്തുണയ്ക്കൂ, അങ്ങനെ ഇരട്ടയും
വിപുലീകൃത-കൃത്യതയുള്ള ഗണിതശാസ്ത്രം ഇപ്പോഴും 387 ഉപയോഗിച്ചാണ് ചെയ്യുന്നത്. പിന്നീടുള്ള പതിപ്പ്, ഇപ്പോൾ
പെന്റിയം 4, എഎംഡി x86-64 ചിപ്പുകളിൽ മാത്രം, ഡബിൾ പ്രിസിഷൻ ഗണിതശാസ്ത്രത്തെയും പിന്തുണയ്ക്കുന്നു.

x86-32 കമ്പൈലറിനായി, നിങ്ങൾ ഉപയോഗിക്കണം -മാർച്ച്=cpu-തരം, -msse or -msse2 ലേക്ക് മാറുന്നു
SSE വിപുലീകരണങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുകയും ഈ ഓപ്ഷൻ ഫലപ്രദമാക്കുകയും ചെയ്യുക. x86-64 കമ്പൈലറിന്,
ഈ വിപുലീകരണങ്ങൾ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

തത്ഫലമായുണ്ടാകുന്ന കോഡ് മിക്ക കേസുകളിലും വളരെ വേഗതയുള്ളതായിരിക്കണം
387 കോഡിന്റെ സംഖ്യാപരമായ അസ്ഥിരത പ്രശ്നങ്ങൾ ഒഴിവാക്കുക, എന്നാൽ നിലവിലുള്ള ചിലത് തകർത്തേക്കാം
താൽക്കാലികമായി 80 ബിറ്റുകൾ പ്രതീക്ഷിക്കുന്ന കോഡ്.

x86-64 കമ്പൈലറിനുള്ള ഡിഫോൾട്ട് ചോയിസാണിത്.

sse,387
sse+387
രണ്ടും
രണ്ട് നിർദ്ദേശ സെറ്റുകളും ഒരേസമയം ഉപയോഗിക്കാൻ ശ്രമിക്കുക. ഇത് ഫലപ്രദമായി ഇരട്ടിയാക്കുന്നു
ലഭ്യമായ രജിസ്റ്ററുകളുടെ അളവ്, കൂടാതെ 387-ന് പ്രത്യേക എക്സിക്യൂഷൻ യൂണിറ്റുകളുള്ള ചിപ്പുകളിൽ
കൂടാതെ എക്സിക്യൂഷൻ റിസോഴ്സുകളും SSE. ഇപ്പോഴും ഈ ഓപ്ഷൻ ശ്രദ്ധയോടെ ഉപയോഗിക്കുക
പരീക്ഷണാത്മകമാണ്, കാരണം ജിസിസി രജിസ്റ്റർ അലോക്കേറ്റർ പ്രത്യേകം മാതൃകയാക്കുന്നില്ല
ഫങ്ഷണൽ യൂണിറ്റുകൾ നന്നായി, അസ്ഥിരമായ പ്രകടനത്തിന് കാരണമാകുന്നു.

-masm=ഭാഷ
തിരഞ്ഞെടുത്തവ ഉപയോഗിച്ച് അസംബ്ലി നിർദ്ദേശങ്ങൾ ഔട്ട്പുട്ട് ചെയ്യുക ഭാഷ. ഏത് ഭാഷാഭേദത്തെയും ബാധിക്കുന്നു
അടിസ്ഥാന "asm", വിപുലമായ "asm" എന്നിവയ്ക്കായി ഉപയോഗിക്കുന്നു. പിന്തുണയ്‌ക്കുന്ന ചോയ്‌സുകൾ (വ്യവഹാര ക്രമത്തിൽ) ആകുന്നു att
or Intel. സ്ഥിരസ്ഥിതി att. ഡാർവിൻ പിന്തുണയ്ക്കുന്നില്ല Intel.

-mieee-fp
-നിനോ-ഐഇ-എഫ്പി
കംപൈലർ IEEE ഫ്ലോട്ടിംഗ് പോയിന്റ് താരതമ്യങ്ങൾ ഉപയോഗിക്കുന്നുണ്ടോ ഇല്ലയോ എന്നത് നിയന്ത്രിക്കുക. ഇവ
ഒരു താരതമ്യത്തിന്റെ ഫലം ക്രമരഹിതമായ സാഹചര്യത്തിൽ ശരിയായി കൈകാര്യം ചെയ്യുക.

-msoft-float
ഫ്ലോട്ടിംഗ് പോയിന്റിനായി ലൈബ്രറി കോളുകൾ അടങ്ങിയ ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക.

മുന്നറിയിപ്പ്: ആവശ്യമായ ലൈബ്രറികൾ ജിസിസിയുടെ ഭാഗമല്ല. സാധാരണയായി സൗകര്യങ്ങൾ
മെഷീന്റെ സാധാരണ സി കംപൈലർ ഉപയോഗിക്കുന്നു, പക്ഷേ ഇത് നേരിട്ട് ക്രോസിൽ ചെയ്യാൻ കഴിയില്ല.
സമാഹാരം. അനുയോജ്യമായ ലൈബ്രറി നൽകുന്നതിന് നിങ്ങൾ സ്വന്തം ക്രമീകരണം ചെയ്യണം
ക്രോസ്-കംപൈലേഷനുള്ള പ്രവർത്തനങ്ങൾ.

ഒരു ഫംഗ്‌ഷൻ ഫ്ലോട്ടിംഗ് പോയിന്റ് നൽകുന്ന മെഷീനുകളിൽ, 80387 രജിസ്റ്ററിൽ ഫലമുണ്ടാകും
സ്റ്റാക്ക്, ചില ഫ്ലോട്ടിംഗ് പോയിന്റ് ഒപ്കോഡുകൾ പുറപ്പെടുവിച്ചേക്കാം -msoft-float ഉപയോഗിക്കുന്നു.

-mno-fp-ret-in-387
ഫംഗ്‌ഷനുകളുടെ റിട്ടേൺ മൂല്യങ്ങൾക്കായി FPU രജിസ്റ്ററുകൾ ഉപയോഗിക്കരുത്.

സാധാരണ കോളിംഗ് കൺവെൻഷനിൽ "ഫ്ലോട്ട്", "ഡബിൾ" എന്നീ തരങ്ങളുടെ റിട്ടേൺ മൂല്യങ്ങൾ ഉണ്ട്.
ഒരു FPU രജിസ്റ്ററിൽ, FPU ഇല്ലെങ്കിലും. ഓപ്പറേറ്റിംഗ് സിസ്റ്റം എന്നതാണ് ആശയം
ഒരു FPU അനുകരിക്കണം.

ഓപ്ഷൻ -mno-fp-ret-in-387 സാധാരണ സിപിയുവിൽ അത്തരം മൂല്യങ്ങൾ തിരികെ നൽകുന്നതിന് കാരണമാകുന്നു
പകരം രജിസ്റ്റർ ചെയ്യുന്നു.

-mno-fancy-math-387
ചില 387 എമുലേറ്ററുകൾ "sin", "cos", "sqrt" നിർദ്ദേശങ്ങളെ പിന്തുണയ്ക്കുന്നില്ല
387. ആ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നത് ഒഴിവാക്കാൻ ഈ ഓപ്ഷൻ വ്യക്തമാക്കുക. ഈ ഓപ്ഷൻ ആണ്
OpenBSD, NetBSD എന്നിവയിൽ സ്ഥിരസ്ഥിതി. എപ്പോഴാണ് ഈ ഓപ്ഷൻ അസാധുവാക്കുന്നത് - മാർച്ച് അത് സൂചിപ്പിക്കുന്നു
ടാർഗെറ്റ് സിപിയുവിന് എല്ലായ്‌പ്പോഴും ഒരു എഫ്പിയു ഉണ്ട്, അതിനാൽ നിർദ്ദേശങ്ങൾക്ക് അനുകരണം ആവശ്യമില്ല.
നിങ്ങൾ ഉപയോഗിക്കാത്തിടത്തോളം ഈ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കപ്പെടുന്നതല്ല
-funsafe-math-optimizations മാറുക.

-മലിൻ-ഇരട്ട
-mno-align-double
A-ൽ GCC "ഇരട്ട", "നീണ്ട ഇരട്ട", "നീണ്ട നീളമുള്ള" വേരിയബിളുകൾ വിന്യസിക്കുന്നുണ്ടോ എന്ന് നിയന്ത്രിക്കുക
രണ്ട്-വാക്കിന്റെ അതിർത്തി അല്ലെങ്കിൽ ഒരു വാക്കിന്റെ അതിർത്തി. രണ്ട്-വാക്കിൽ "ഇരട്ട" വേരിയബിളുകൾ വിന്യസിക്കുന്നു
ബൗണ്ടറി കൂടുതൽ ചെലവിൽ ഒരു പെന്റിയത്തിൽ കുറച്ച് വേഗത്തിൽ പ്രവർത്തിക്കുന്ന കോഡ് നിർമ്മിക്കുന്നു
മെമ്മറി.

x86-64-ൽ, -മലിൻ-ഇരട്ട സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു.

മുന്നറിയിപ്പ്: നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ -മലിൻ-ഇരട്ട സ്വിച്ച്, മുകളിൽ പറഞ്ഞ തരങ്ങൾ അടങ്ങുന്ന ഘടനകൾ
പ്രസിദ്ധീകരിച്ച ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസ് സ്പെസിഫിക്കേഷനുകളിൽ നിന്ന് വ്യത്യസ്തമായി വിന്യസിച്ചിരിക്കുന്നു
x86-32 ന് വേണ്ടിയുള്ളതും കൂടാതെ കംപൈൽ ചെയ്ത കോഡിലെ ഘടനകളുമായി ബൈനറി അനുയോജ്യമല്ല
ആ സ്വിച്ച്.

-m96bit-നീണ്ട-ഇരട്ട
-m128bit-നീണ്ട-ഇരട്ട
ഈ സ്വിച്ചുകൾ "നീണ്ട ഇരട്ട" തരത്തിന്റെ വലിപ്പം നിയന്ത്രിക്കുന്നു. x86-32 ആപ്ലിക്കേഷൻ ബൈനറി
ഇന്റർഫേസ് 96 ബിറ്റുകൾ വലുപ്പം വ്യക്തമാക്കുന്നു, അതിനാൽ -m96bit-നീണ്ട-ഇരട്ട ആണ് ഡിഫോൾട്ട് ഇൻ
32-ബിറ്റ് മോഡ്.

ആധുനിക വാസ്തുവിദ്യകൾ (പെന്റിയവും പുതിയതും) "ലോംഗ് ഡബിൾ" 8-ലേക്ക് വിന്യസിക്കാൻ ഇഷ്ടപ്പെടുന്നു.
അല്ലെങ്കിൽ 16-ബൈറ്റ് അതിർത്തി. എബിഐയുമായി പൊരുത്തപ്പെടുന്ന അറേകളിലോ ഘടനകളിലോ, ഇത് അങ്ങനെയല്ല
സാധ്യമാണ്. അങ്ങനെ വ്യക്തമാക്കുന്നു -m128bit-നീണ്ട-ഇരട്ട "നീണ്ട ഇരട്ട" 16-ബൈറ്റിലേക്ക് വിന്യസിക്കുന്നു
അധിക 32-ബിറ്റ് പൂജ്യം ഉപയോഗിച്ച് "ലോംഗ് ഡബിൾ" പാഡ് ചെയ്തുകൊണ്ട് അതിർത്തി.

x86-64 കമ്പൈലറിൽ, -m128bit-നീണ്ട-ഇരട്ട അതിന്റെ ABI ആയി സ്ഥിരസ്ഥിതി ചോയ്സ് ആണ്
16-ബൈറ്റ് അതിർത്തിയിൽ "നീണ്ട ഇരട്ട" വിന്യസിച്ചിട്ടുണ്ടെന്ന് വ്യക്തമാക്കുന്നു.

ഈ ഓപ്ഷനുകളൊന്നും x87 സ്റ്റാൻഡേർഡിനേക്കാൾ കൂടുതൽ കൃത്യത പ്രാപ്തമാക്കുന്നില്ല എന്നത് ശ്രദ്ധിക്കുക
ഒരു "ലോംഗ് ഡബിൾ" എന്നതിന് 80 ബിറ്റുകൾ.

മുന്നറിയിപ്പ്: നിങ്ങളുടെ ടാർഗെറ്റ് എബിഐയുടെ ഡിഫോൾട്ട് മൂല്യം നിങ്ങൾ അസാധുവാക്കുകയാണെങ്കിൽ, ഇത് വലുപ്പം മാറ്റുന്നു
"ലോംഗ് ഡബിൾ" വേരിയബിളുകൾ അടങ്ങിയിരിക്കുന്ന ഘടനകളുടെയും അറേകളുടെയും, അതുപോലെ തന്നെ പരിഷ്ക്കരിക്കുന്നതും
"ലോംഗ് ഡബിൾ" എടുക്കുന്ന ഫംഗ്‌ഷനുകൾക്കായുള്ള ഫംഗ്‌ഷൻ കോളിംഗ് കൺവെൻഷൻ. അതുകൊണ്ട് അവർ അങ്ങനെയല്ല
ആ സ്വിച്ച് ഇല്ലാതെ കംപൈൽ ചെയ്ത കോഡുമായി ബൈനറി-അനുയോജ്യമാണ്.

-mlong-ഇരട്ട-64
-mlong-ഇരട്ട-80
-mlong-ഇരട്ട-128
ഈ സ്വിച്ചുകൾ "നീണ്ട ഇരട്ട" തരത്തിന്റെ വലിപ്പം നിയന്ത്രിക്കുന്നു. 64 ബിറ്റുകൾ വലിപ്പം ഉണ്ടാക്കുന്നു
"ഇരട്ട" തരത്തിന് തുല്യമായ "നീണ്ട ഇരട്ട" തരം. ഇത് 32-ബിറ്റിന്റെ സ്ഥിരസ്ഥിതിയാണ്
ബയോണിക് സി ലൈബ്രറി. 128 ബിറ്റുകളുടെ വലുപ്പം "നീണ്ട ഇരട്ട" തരത്തെ തുല്യമാക്കുന്നു
"__float128" തരം. 64-ബിറ്റ് ബയോണിക് സി ലൈബ്രറിയുടെ ഡിഫോൾട്ടാണിത്.

മുന്നറിയിപ്പ്: നിങ്ങളുടെ ടാർഗെറ്റ് എബിഐയുടെ ഡിഫോൾട്ട് മൂല്യം നിങ്ങൾ അസാധുവാക്കുകയാണെങ്കിൽ, ഇത് വലുപ്പം മാറ്റുന്നു
"ലോംഗ് ഡബിൾ" വേരിയബിളുകൾ അടങ്ങിയിരിക്കുന്ന ഘടനകളുടെയും അറേകളുടെയും, അതുപോലെ തന്നെ പരിഷ്ക്കരിക്കുന്നതും
"ലോംഗ് ഡബിൾ" എടുക്കുന്ന ഫംഗ്‌ഷനുകൾക്കായുള്ള ഫംഗ്‌ഷൻ കോളിംഗ് കൺവെൻഷൻ. അതുകൊണ്ട് അവർ അങ്ങനെയല്ല
ആ സ്വിച്ച് ഇല്ലാതെ കംപൈൽ ചെയ്ത കോഡുമായി ബൈനറി-അനുയോജ്യമാണ്.

-malign-data=ടൈപ്പ് ചെയ്യുക
GCC വേരിയബിളുകൾ എങ്ങനെ വിന്യസിക്കുന്നു എന്നത് നിയന്ത്രിക്കുക. പിന്തുണയ്ക്കുന്ന മൂല്യങ്ങൾ ടൈപ്പ് ചെയ്യുക ആകുന്നു കോംപാറ്റ് ഉപയോഗങ്ങൾ വർദ്ധിച്ചു
വിന്യാസ മൂല്യത്തിന് അനുയോജ്യമായ GCC 4.8 ഉം അതിനുമുമ്പും ഉപയോഗിക്കുന്നു, അബി ആയി വിന്യാസ മൂല്യം ഉപയോഗിക്കുന്നു
psABI വ്യക്തമാക്കിയത്, കൂടാതെ കാഷെലൈൻ പൊരുത്തപ്പെടുത്തുന്നതിന് വർദ്ധിച്ച അലൈൻമെന്റ് മൂല്യം ഉപയോഗിക്കുന്നു
കാഷെ ലൈൻ വലിപ്പം. കോംപാറ്റ് സ്ഥിരസ്ഥിതിയാണ്.

-mlarge-data-threshold=ഉമ്മറം
എപ്പോൾ -mcmodel= മീഡിയം വ്യക്തമാക്കിയിരിക്കുന്നു, ഡാറ്റ ഒബ്‌ജക്‌റ്റുകൾ ഇതിലും വലുതാണ് ഉമ്മറം സ്ഥാപിച്ചിരിക്കുന്നു
വലിയ ഡാറ്റ വിഭാഗം. ലിങ്ക് ചെയ്‌തിരിക്കുന്ന എല്ലാ ഒബ്‌ജക്‌റ്റുകളിലും ഈ മൂല്യം ഒരുപോലെയായിരിക്കണം
ബൈനറി, ഡിഫോൾട്ട് 65535.

-mrtd
വ്യത്യസ്‌തമായ ഫംഗ്‌ഷൻ-കോളിംഗ് കൺവെൻഷൻ ഉപയോഗിക്കുക, അതിൽ ഫംഗ്‌ഷനുകൾ സ്ഥിരമായി എടുക്കുന്നു
ആർഗ്യുമെന്റുകളുടെ എണ്ണം "ret" ഉപയോഗിച്ച് മടങ്ങുന്നു സംഖ്യ" നിർദ്ദേശം, അത് അവരുടെ വാദങ്ങൾ ഉയർത്തുന്നു
മടങ്ങുമ്പോൾ. ആവശ്യമില്ലാത്തതിനാൽ ഇത് കോളറിൽ ഒരു നിർദ്ദേശം സംരക്ഷിക്കുന്നു
അവിടെ വാദങ്ങൾ പോപ്പ് ചെയ്യുക.

ഈ കോളിംഗ് സീക്വൻസ് ഉപയോഗിച്ച് ഒരു വ്യക്തിഗത ഫംഗ്‌ഷനെ വിളിക്കുന്നത് നിങ്ങൾക്ക് വ്യക്തമാക്കാം
ഫംഗ്ഷൻ ആട്രിബ്യൂട്ട് "stdcall". നിങ്ങൾക്ക് അസാധുവാക്കാനും കഴിയും -mrtd ഉപയോഗിച്ച് ഓപ്ഷൻ
ഫംഗ്ഷൻ ആട്രിബ്യൂട്ട് "cdecl".

മുന്നറിയിപ്പ്: ഈ കോളിംഗ് കൺവെൻഷൻ യുണിക്സിൽ സാധാരണയായി ഉപയോഗിക്കുന്ന ഒന്നുമായി പൊരുത്തപ്പെടുന്നില്ല,
അതിനാൽ നിങ്ങൾക്ക് Unix കമ്പൈലർ ഉപയോഗിച്ച് സമാഹരിച്ച ലൈബ്രറികളിലേക്ക് വിളിക്കണമെങ്കിൽ അത് ഉപയോഗിക്കാൻ കഴിയില്ല.

കൂടാതെ, വേരിയബിൾ എടുക്കുന്ന എല്ലാ ഫംഗ്ഷനുകൾക്കും നിങ്ങൾ ഫംഗ്ഷൻ പ്രോട്ടോടൈപ്പുകൾ നൽകണം
ആർഗ്യുമെന്റുകളുടെ എണ്ണം ("printf" ഉൾപ്പെടെ); അല്ലെങ്കിൽ തെറ്റായ കോഡ് സൃഷ്ടിക്കപ്പെടും
ആ പ്രവർത്തനങ്ങളിലേക്ക് വിളിക്കുന്നു.

കൂടാതെ, നിങ്ങൾ ഒരു ഫംഗ്‌ഷനെ വളരെയധികം വിളിക്കുകയാണെങ്കിൽ ഗുരുതരമായ തെറ്റായ കോഡ് ഫലങ്ങൾ
വാദങ്ങൾ. (സാധാരണയായി, അധിക വാദങ്ങൾ നിരുപദ്രവകരമായി അവഗണിക്കപ്പെടുന്നു.)

-mregparm=സംഖ്യ
പൂർണ്ണസംഖ്യ ആർഗ്യുമെന്റുകൾ കൈമാറാൻ എത്ര രജിസ്റ്ററുകൾ ഉപയോഗിക്കുന്നു എന്നത് നിയന്ത്രിക്കുക. സ്ഥിരസ്ഥിതിയായി, ഇല്ല
ആർഗ്യുമെന്റുകൾ കൈമാറാൻ രജിസ്റ്ററുകൾ ഉപയോഗിക്കുന്നു, പരമാവധി 3 രജിസ്റ്ററുകൾ ഉപയോഗിക്കാം. നിങ്ങൾക്ക് കഴിയും
ഫംഗ്‌ഷൻ ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് ഒരു നിർദ്ദിഷ്ട ഫംഗ്‌ഷനായി ഈ സ്വഭാവം നിയന്ത്രിക്കുക
"regparm".

മുന്നറിയിപ്പ്: നിങ്ങൾ ഈ സ്വിച്ച് ഉപയോഗിക്കുകയാണെങ്കിൽ, ഒപ്പം സംഖ്യ പൂജ്യമല്ല, അപ്പോൾ നിങ്ങൾ എല്ലാ മൊഡ്യൂളുകളും നിർമ്മിക്കണം
ഏതെങ്കിലും ലൈബ്രറികൾ ഉൾപ്പെടെ ഒരേ മൂല്യത്തിൽ. ഇതിൽ സിസ്റ്റം ലൈബ്രറികളും ഉൾപ്പെടുന്നു
സ്റ്റാർട്ടപ്പ് മൊഡ്യൂളുകൾ.

-msseregparm
ഫ്ലോട്ടിനും ഡബിൾ ആർഗ്യുമെന്റുകൾക്കും റിട്ടേൺ മൂല്യങ്ങൾക്കും SSE രജിസ്റ്റർ പാസിംഗ് കൺവെൻഷനുകൾ ഉപയോഗിക്കുക.
ഫംഗ്‌ഷൻ ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് ഒരു നിർദ്ദിഷ്‌ട പ്രവർത്തനത്തിനായി നിങ്ങൾക്ക് ഈ സ്വഭാവം നിയന്ത്രിക്കാനാകും
"sseregparm".

മുന്നറിയിപ്പ്: നിങ്ങൾ ഈ സ്വിച്ച് ഉപയോഗിക്കുകയാണെങ്കിൽ, നിങ്ങൾ എല്ലാ മൊഡ്യൂളുകളും ഒരേ മൂല്യത്തിൽ നിർമ്മിക്കണം,
ഏതെങ്കിലും ലൈബ്രറികൾ ഉൾപ്പെടെ. ഇതിൽ സിസ്റ്റം ലൈബ്രറികളും സ്റ്റാർട്ടപ്പ് മൊഡ്യൂളുകളും ഉൾപ്പെടുന്നു.

-mvect8-ret-in-mem
MMX രജിസ്റ്ററുകൾക്ക് പകരം 8-ബൈറ്റ് വെക്റ്ററുകൾ മെമ്മറിയിൽ തിരികെ നൽകുക. ഇതാണ് സ്ഥിരസ്ഥിതി
Solaris@tie{}8 ഉം 9 ഉം VxWorks ഉം സൺ സ്റ്റുഡിയോ കമ്പൈലറുകളുടെ എബിഐയുമായി പൊരുത്തപ്പെടാൻ
പതിപ്പ് 12. പിന്നീടുള്ള കംപൈലർ പതിപ്പുകൾ (സ്റ്റുഡിയോ 12 Update@tie{}1-ൽ തുടങ്ങി) പിന്തുടരുന്നു
മറ്റ് x86 ടാർഗെറ്റുകൾ ഉപയോഗിക്കുന്ന ABI, Solaris@tie{}10-ലും അതിനുശേഷമുള്ളതിലും സ്ഥിരസ്ഥിതിയാണ്.
മാത്രം നിർമ്മിച്ച നിലവിലുള്ള കോഡുമായി നിങ്ങൾ പൊരുത്തപ്പെടാൻ ആഗ്രഹിക്കുന്നെങ്കിൽ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക
ആ മുൻ കംപൈലർ പതിപ്പുകൾ അല്ലെങ്കിൽ GCC യുടെ പഴയ പതിപ്പുകൾ.

-mpc32
-mpc64
-mpc80
80387 ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രിസിഷൻ 32, 64 അല്ലെങ്കിൽ 80 ബിറ്റുകളായി സജ്ജമാക്കുക. എപ്പോൾ -mpc32 വ്യക്തമാക്കിയിട്ടുണ്ട്,
ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങളുടെ ഫലങ്ങളുടെ പ്രാധാന്യം 24 ബിറ്റുകളായി വൃത്താകൃതിയിലാണ്
(ഒറ്റ കൃത്യത); -mpc64 ഫ്ലോട്ടിംഗ് പോയിന്റിന്റെ ഫലങ്ങളുടെ പ്രാധാന്യത്തെ റൗണ്ട് ചെയ്യുന്നു
53 ബിറ്റുകളിലേക്കുള്ള പ്രവർത്തനങ്ങൾ (ഇരട്ട കൃത്യത) കൂടാതെ -mpc80 ഫലങ്ങളുടെ പ്രാധാന്യത്തെ ചുറ്റിപ്പറ്റി
ഫ്ലോട്ടിംഗ്-പോയിന്റ് പ്രവർത്തനങ്ങളുടെ 64 ബിറ്റുകൾ (എക്‌സ്റ്റൻഡഡ് ഡബിൾ പ്രിസിഷൻ), അതായത്
സ്ഥിരസ്ഥിതി. ഈ ഓപ്‌ഷൻ ഉപയോഗിക്കുമ്പോൾ, ഉയർന്ന കൃത്യതയിലുള്ള ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾ
FPU നിയന്ത്രണ വാക്ക് വ്യക്തമായി സജ്ജീകരിക്കാതെ പ്രോഗ്രാമർക്ക് ലഭ്യമല്ല.

ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങളുടെ റൗണ്ടിംഗ് സ്ഥിരസ്ഥിതിയായ 80 ബിറ്റുകളേക്കാൾ കുറവായി സജ്ജീകരിക്കുന്നു
ചില പ്രോഗ്രാമുകൾ 2% അല്ലെങ്കിൽ അതിൽ കൂടുതൽ വേഗത്തിലാക്കുക. ചില ഗണിതശാസ്ത്ര ലൈബ്രറികൾ അത് അനുമാനിക്കുന്നു എന്നത് ശ്രദ്ധിക്കുക
എക്സ്റ്റെൻഡഡ്-പ്രിസിഷൻ (80-ബിറ്റ്) ഫ്ലോട്ടിംഗ്-പോയിന്റ് പ്രവർത്തനങ്ങൾ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുന്നു; ദിനചര്യകൾ
അത്തരം ലൈബ്രറികളിൽ കാര്യമായ കൃത്യത നഷ്ടപ്പെടാം, സാധാരണയായി അങ്ങനെ-
ഈ ഓപ്‌ഷൻ ഉപയോഗിച്ച് കൃത്യത സജ്ജീകരിക്കുമ്പോൾ "ദുരന്തമായ റദ്ദാക്കൽ" എന്ന് വിളിക്കുന്നു
വിപുലമായ കൃത്യതയേക്കാൾ കുറവ്.

-mstackrealign
പ്രവേശന സമയത്ത് സ്റ്റാക്ക് പുനഃക്രമീകരിക്കുക. x86-ൽ, ദി -mstackrealign ഓപ്ഷൻ ഒരു സൃഷ്ടിക്കുന്നു
ആവശ്യമെങ്കിൽ റൺ-ടൈം സ്റ്റാക്ക് പുനഃക്രമീകരിക്കുന്ന ഇതര പ്രോലോഗും എപ്പിലോഗും. ഈ
ആധുനിക കോഡുകളുമായി 4-ബൈറ്റ് സ്റ്റാക്ക് വിന്യാസം നിലനിർത്തുന്ന ലെഗസി കോഡുകൾ മിശ്രണം ചെയ്യുന്നതിനെ പിന്തുണയ്ക്കുന്നു
SSE അനുയോജ്യതയ്ക്കായി 16-ബൈറ്റ് സ്റ്റാക്ക് വിന്യാസം സൂക്ഷിക്കുക. ആട്രിബ്യൂട്ടും കാണുക
"force_align_arg_pointer", വ്യക്തിഗത ഫംഗ്‌ഷനുകൾക്ക് ബാധകമാണ്.

-mpreferred-stack-boundary=സംഖ്യ
2 വരെ ഉയർത്തിയ സ്റ്റാക്ക് അതിർത്തി വിന്യസിച്ച് നിലനിർത്താൻ ശ്രമിക്കുക സംഖ്യ ബൈറ്റ് അതിർത്തി. എങ്കിൽ
-preferred-stack-boundary വ്യക്തമാക്കിയിട്ടില്ല, സ്ഥിരസ്ഥിതി 4 ആണ് (16 ബൈറ്റുകൾ അല്ലെങ്കിൽ 128 ബിറ്റുകൾ).

മുന്നറിയിപ്പ്: എസ്എസ്ഇ എക്സ്റ്റൻഷനുകൾക്കൊപ്പം x86-64 ആർക്കിടെക്ചറിനായി കോഡ് സൃഷ്ടിക്കുമ്പോൾ
വികലാംഗൻ, -mpreferred-stack-boundary=3 സ്റ്റാക്ക് അതിർത്തി വിന്യസിക്കാൻ ഉപയോഗിക്കാം
8 ബൈറ്റ് അതിർത്തി വരെ. x86-64 എബിഐക്ക് 16 ബൈറ്റ് സ്റ്റാക്ക് വിന്യാസം ആവശ്യമുള്ളതിനാൽ, ഇത് എബിഐ ആണ്
പൊരുത്തമില്ലാത്തതും സ്റ്റാക്ക് സ്പേസ് ഉള്ള നിയന്ത്രിത പരിതസ്ഥിതിയിൽ ഉപയോഗിക്കാൻ ഉദ്ദേശിച്ചുള്ളതുമാണ്
പ്രധാനപ്പെട്ട പരിമിതി. ഫംഗ്‌ഷനുകൾ 16 ഉപയോഗിച്ച് കംപൈൽ ചെയ്യുമ്പോൾ ഈ ഓപ്ഷൻ തെറ്റായ കോഡിലേക്ക് നയിക്കുന്നു
ബൈറ്റ് സ്റ്റാക്ക് വിന്യാസം (ഒരു സാധാരണ ലൈബ്രറിയിൽ നിന്നുള്ള പ്രവർത്തനങ്ങൾ പോലുള്ളവ) ഉപയോഗിച്ച് വിളിക്കുന്നു
തെറ്റായി ക്രമീകരിച്ച സ്റ്റാക്ക്. ഈ സാഹചര്യത്തിൽ, SSE നിർദ്ദേശങ്ങൾ തെറ്റായ മെമ്മറി ആക്‌സസിലേക്ക് നയിച്ചേക്കാം
കെണികൾ. കൂടാതെ, വേരിയബിൾ ആർഗ്യുമെന്റുകൾ അലൈൻ ചെയ്ത 16 ബൈറ്റിനായി തെറ്റായി കൈകാര്യം ചെയ്യുന്നു
ഒബ്‌ജക്‌റ്റുകൾ (x87 നീളമുള്ള ഇരട്ടയും __int128 ഉം ഉൾപ്പെടെ), തെറ്റായ ഫലങ്ങളിലേക്ക് നയിക്കുന്നു. നിങ്ങൾ തീർച്ചയായും
ഉപയോഗിച്ച് എല്ലാ മൊഡ്യൂളുകളും നിർമ്മിക്കുക -mpreferred-stack-boundary=3, ഏതെങ്കിലും ലൈബ്രറികൾ ഉൾപ്പെടെ. ഈ
സിസ്റ്റം ലൈബ്രറികളും സ്റ്റാർട്ടപ്പ് മൊഡ്യൂളുകളും ഉൾപ്പെടുന്നു.

-mincoming-stack-boundary=സംഖ്യ
ഇൻകമിംഗ് സ്റ്റാക്ക് 2 വരെ ഉയർത്തിയതായി വിന്യസിച്ചിട്ടുണ്ടെന്ന് കരുതുക സംഖ്യ ബൈറ്റ് അതിർത്തി. എങ്കിൽ
-മിൻകമിംഗ്-സ്റ്റാക്ക്-ബൗണ്ടറി വ്യക്തമാക്കിയിട്ടില്ല, വ്യക്തമാക്കിയത്
-preferred-stack-boundary ഉപയോഗിക്കുന്നു.

പെന്റിയത്തിലും പെന്റിയം പ്രോയിലും, "ഇരട്ട", "നീണ്ട ഇരട്ട" മൂല്യങ്ങൾ ഒരു ആയി വിന്യസിക്കണം
8-ബൈറ്റ് അതിർത്തി (കാണുക -മലിൻ-ഇരട്ട) അല്ലെങ്കിൽ കാര്യമായ റൺ ടൈം പ്രകടനം അനുഭവിക്കുക
പിഴകൾ. പെന്റിയം III-ൽ, സ്ട്രീമിംഗ് SIMD എക്സ്റ്റൻഷൻ (SSE) ഡാറ്റ തരം "__m128"
16-ബൈറ്റ് വിന്യസിച്ചിട്ടില്ലെങ്കിൽ ശരിയായി പ്രവർത്തിക്കില്ല.

സ്റ്റാക്കിൽ ഈ മൂല്യങ്ങളുടെ ശരിയായ വിന്യാസം ഉറപ്പാക്കാൻ, സ്റ്റാക്ക് അതിർത്തി ഇതുപോലെ ആയിരിക്കണം
സ്റ്റാക്കിൽ സംഭരിച്ചിരിക്കുന്ന ഏതൊരു മൂല്യത്തിനും ആവശ്യമുള്ളതുപോലെ വിന്യസിച്ചു. കൂടാതെ, എല്ലാ പ്രവർത്തനങ്ങളും
സ്റ്റാക്ക് വിന്യസിക്കുന്ന തരത്തിൽ ജനറേറ്റ് ചെയ്യണം. അങ്ങനെ ഒരു ഫംഗ്ഷൻ വിളിക്കുന്നു
ലോവർ ഉപയോഗിച്ച് കംപൈൽ ചെയ്‌ത ഒരു ഫംഗ്‌ഷനിൽ നിന്ന് ഉയർന്ന തിരഞ്ഞെടുത്ത സ്റ്റാക്ക് ബൗണ്ടറി ഉപയോഗിച്ച് സമാഹരിച്ചത്
തിരഞ്ഞെടുത്ത സ്റ്റാക്ക് അതിർത്തി മിക്കവാറും സ്റ്റാക്കിനെ തെറ്റായി ക്രമീകരിക്കുന്നു. എന്ന് ശുപാർശ ചെയ്യുന്നു
കോൾബാക്ക് ഉപയോഗിക്കുന്ന ലൈബ്രറികൾ എല്ലായ്പ്പോഴും സ്ഥിരസ്ഥിതി ക്രമീകരണം ഉപയോഗിക്കുന്നു.

ഈ അധിക വിന്യാസം അധിക സ്റ്റാക്ക് സ്പേസ് ഉപയോഗിക്കുകയും പൊതുവെ കോഡ് വർദ്ധിപ്പിക്കുകയും ചെയ്യുന്നു
വലിപ്പം. എംബഡഡ് സിസ്റ്റങ്ങൾ പോലെയുള്ള സ്‌പേസ് ഉപയോഗത്തിന് സംവേദനക്ഷമതയുള്ള കോഡ്
ഓപ്പറേറ്റിംഗ് സിസ്റ്റം കേർണലുകൾ, ഇഷ്ടപ്പെട്ട വിന്യാസം കുറയ്ക്കാൻ ആഗ്രഹിച്ചേക്കാം
-mpreferred-stack-boundary=2.

-mmmx
-msse
-msse2
-msse3
-mssse3
-msse4
-msse4a
-msse4.1
-msse4.2
-mavx
-mavx2
-mavx512f
-mavx512pf
-mavx512er
-mavx512cd
-ംഷ
-മേസ്
-mpclmul
-mclfushopt
-mfsgsbase
-mrdrnd
-mf16c
-എംഎഫ്എംഎ
-mfma4
-നിലോ-എഫ്എംഎ 4
-mprefetchwt1
-mxop
-mlwp
-m3dnow
-mpopcnt
-mabm
-mbmi
-mbmi2
-mlzcnt
-mfxsr
-mxsave
-mxsaveopt
-mxsavec
-mxsaves
-mrtm
-എംടിബിഎം
-എംഎംപിഎക്സ്
-mmwaitx
ഈ സ്വിച്ചുകൾ MMX, SSE, SSE2, SSE3, SSSE3, എന്നിവയിലെ നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രാപ്തമാക്കുന്നു.
SSE4.1, AVX, AVX2, AVX512F, AVX512PF, AVX512ER, AVX512CD, SHA, AES, PCLMUL, FSGSBASE,
RDRND, F16C, FMA, SSE4A, FMA4, XOP, LWP, ABM, BMI, BMI2, FXSR, XSAVE, XSAVEOPT, LZCNT,
RTM, MPX, MWAITX അല്ലെങ്കിൽ 3DNow! വിപുലമായ നിർദ്ദേശ സെറ്റുകൾ. ഓരോന്നിനും അനുബന്ധമുണ്ട് -mno-
ഈ നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനരഹിതമാക്കാനുള്ള ഓപ്ഷൻ.

ഈ വിപുലീകരണങ്ങൾ ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകളായി ലഭ്യമാണ്: കാണുക x86 അന്തർനിർമ്മിതമായത് പ്രവർത്തനങ്ങൾ,
ഈ സ്വിച്ചുകൾ പ്രവർത്തനക്ഷമമാക്കിയതും പ്രവർത്തനരഹിതമാക്കിയതുമായ പ്രവർത്തനങ്ങളുടെ വിശദാംശങ്ങൾക്കായി.

ഫ്ലോട്ടിംഗ് പോയിന്റ് കോഡിൽ നിന്ന് സ്വയമേവ SSE/SSE2 നിർദ്ദേശങ്ങൾ ജനറേറ്റുചെയ്യുന്നതിന് (എതിർവശത്ത്
387 നിർദ്ദേശങ്ങളിലേക്ക്), കാണുക -mfpmath=sse.

എപ്പോൾ എസ്‌എസ്‌എക്‌സ് നിർദ്ദേശങ്ങൾ ജിസിസി താഴ്ത്തുന്നു -mavx ഉപയോഗിക്കുന്നു. പകരം, അത് പുതിയ AVX സൃഷ്ടിക്കുന്നു
ആവശ്യമുള്ളപ്പോൾ എല്ലാ SSEx നിർദ്ദേശങ്ങൾക്കും നിർദ്ദേശങ്ങൾ അല്ലെങ്കിൽ AVX തുല്യത.

ഈ ഓപ്‌ഷനുകൾ ജനറേറ്റ് ചെയ്‌ത കോഡിൽ പോലും ഈ വിപുലീകൃത നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കാൻ ജിസിസിയെ പ്രാപ്‌തമാക്കുന്നു
കൂടാതെ -mfpmath=sse. റൺ-ടൈം സിപിയു കണ്ടെത്തൽ നടത്തുന്ന ആപ്ലിക്കേഷനുകൾ കംപൈൽ ചെയ്യണം
അനുയോജ്യമായ ഫ്ലാഗുകൾ ഉപയോഗിച്ച് പിന്തുണയ്ക്കുന്ന ഓരോ ആർക്കിടെക്ചറിനും പ്രത്യേക ഫയലുകൾ. ഇൻ
പ്രത്യേകിച്ചും, സിപിയു ഡിറ്റക്ഷൻ കോഡ് അടങ്ങിയ ഫയൽ ഇതില്ലാതെ കംപൈൽ ചെയ്യണം
ഈ ഓപ്ഷനുകൾ.

-mdump-tune-features
ഈ ഓപ്‌ഷൻ x86 പെർഫോമൻസ് ട്യൂണിംഗ് ഫീച്ചറുകളുടെ പേരുകൾ ഡംപ് ചെയ്യാൻ ജിസിസിയോട് നിർദ്ദേശിക്കുന്നു
സ്ഥിരസ്ഥിതി ക്രമീകരണങ്ങൾ. എന്നതിൽ പേരുകൾ ഉപയോഗിക്കാം -mtune-ctrl=ഫീച്ചർ-ലിസ്റ്റ്.

-mtune-ctrl=ഫീച്ചർ-ലിസ്റ്റ്
x86 കോഡ് ജനറേഷൻ ഫീച്ചറുകളുടെ ഫൈൻ ഗ്രെയിൻ കൺട്രോൾ ചെയ്യാൻ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു.
ഫീച്ചർ-ലിസ്റ്റ് എന്നതിന്റെ കോമയാൽ വേർതിരിച്ച പട്ടികയാണ് സവിശേഷത പേരുകൾ. ഇതും കാണുക
-mdump-tune-features. വ്യക്തമാക്കുമ്പോൾ, ദി സവിശേഷത അതിനു മുമ്പല്ലെങ്കിൽ ഓണാണ്
കൂടെ ^, അല്ലെങ്കിൽ, അത് ഓഫാക്കിയിരിക്കുന്നു. -mtune-ctrl=ഫീച്ചർ-ലിസ്റ്റ് ഉപയോഗിക്കാനാണ് ഉദ്ദേശിക്കുന്നത്
GCC ഡെവലപ്പർമാർ മുഖേന. ഇത് ഉപയോഗിക്കുന്നത് ടെസ്റ്റിംഗിൽ ഉൾപ്പെടാത്ത കോഡ് പാതകളിലേക്ക് നയിച്ചേക്കാം
കംപൈലർ ICEകളോ റൺടൈം പിശകുകളോ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്.

-mno-default
ഈ ഓപ്‌ഷൻ എല്ലാ ട്യൂൺ ചെയ്യാവുന്ന സവിശേഷതകളും ഓഫുചെയ്യാൻ GCC-യോട് നിർദ്ദേശിക്കുന്നു. ഇതും കാണുക
-mtune-ctrl=ഫീച്ചർ-ലിസ്റ്റ് ഒപ്പം -mdump-tune-features.

-mcld
ഫംഗ്‌ഷനുകളുടെ ആമുഖത്തിൽ ഒരു "cld" നിർദ്ദേശം പുറപ്പെടുവിക്കാൻ ഈ ഐച്ഛികം GCC യോട് നിർദ്ദേശിക്കുന്നു
അത് സ്ട്രിംഗ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്നു. സ്ട്രിംഗ് നിർദ്ദേശങ്ങൾ തിരഞ്ഞെടുക്കാനുള്ള DF ഫ്ലാഗിനെ ആശ്രയിച്ചിരിക്കുന്നു
ഓട്ടോഇൻക്രിമെന്റ് അല്ലെങ്കിൽ ഓട്ടോഡിക്രിമെന്റ് മോഡുകൾക്കിടയിൽ. എബിഐ ഡിഎഫ് ഫ്ലാഗ് വ്യക്തമാക്കുമ്പോൾ
ഫംഗ്‌ഷൻ എൻട്രിയിൽ ക്ലിയർ ചെയ്യപ്പെടും, ചില ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ ഈ സ്പെസിഫിക്കേഷൻ ലംഘിക്കുന്നില്ല
അവരുടെ ഒഴിവാക്കൽ ഡിസ്പാച്ചറുകളിൽ ഡിഎഫ് ഫ്ലാഗ് മായ്‌ക്കുന്നു. ഒഴിവാക്കൽ ഹാൻഡ്‌ലർ ആകാം
DF ഫ്ലാഗ് സെറ്റ് ഉപയോഗിച്ച് അഭ്യർത്ഥിച്ചു, ഇത് സ്ട്രിംഗ് ചെയ്യുമ്പോൾ തെറ്റായ ദിശാ മോഡിലേക്ക് നയിക്കുന്നു
നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്നു. ഈ ഓപ്‌ഷൻ 32-ബിറ്റ് x86 ടാർഗെറ്റുകളിൽ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കാം
എന്നതുമായി ജിസിസി ക്രമീകരിക്കുന്നു --enable-cld കോൺഫിഗർ ഓപ്ഷൻ. "cld" യുടെ ജനറേഷൻ
നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് അടിച്ചമർത്താൻ കഴിയും -mno-cld ഈ സാഹചര്യത്തിൽ കമ്പൈലർ ഓപ്ഷൻ.

-mvzeroupper
ഒരു കൈമാറ്റത്തിന് മുമ്പ് ഒരു "vzeroupper" നിർദ്ദേശം പുറപ്പെടുവിക്കാൻ ഈ ഓപ്ഷൻ GCC-നോട് നിർദ്ദേശിക്കുന്നു
AVX-ലേക്കുള്ള SSE ട്രാൻസിഷൻ പെനാൽറ്റി കുറയ്ക്കുന്നതിന് ഫംഗ്ഷനിൽ നിന്ന് പുറത്തേക്കുള്ള ഒഴുക്ക് നിയന്ത്രിക്കുക
അനാവശ്യമായ "zeroupper" അന്തർലീനങ്ങൾ നീക്കം ചെയ്യുന്നതുപോലെ.

-mprefer-avx128
128-ബിറ്റ് എവിഎക്‌സിന് പകരം 256-ബിറ്റ് എവിഎക്‌സ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കാൻ ജിസിസിയോട് ഈ ഓപ്‌ഷൻ നിർദ്ദേശിക്കുന്നു.
ഓട്ടോ-വെക്‌ടറൈസറിലെ നിർദ്ദേശങ്ങൾ.

-mcx16
ഈ ഓപ്‌ഷൻ "CMPXCHG16B" നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കാൻ GCC-യെ പ്രാപ്‌തമാക്കുന്നു. "CMPXCHG16B" അനുവദിക്കുന്നു
128-ബിറ്റ് ഇരട്ട ക്വാഡ്‌വേഡ് (അല്ലെങ്കിൽ ഒവേഡ്) ഡാറ്റ തരങ്ങളിലെ ആറ്റോമിക് പ്രവർത്തനങ്ങൾക്ക്. ഇതാണ്
ഒന്നിലധികം പ്രോസസ്സറുകൾക്ക് അപ്‌ഡേറ്റ് ചെയ്യാവുന്ന ഉയർന്ന റെസല്യൂഷൻ കൗണ്ടറുകൾക്ക് ഉപയോഗപ്രദമാണ് (അല്ലെങ്കിൽ
കോറുകൾ). ആറ്റോമിക് ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകളുടെ ഭാഗമായാണ് ഈ നിർദ്ദേശം സൃഷ്ടിക്കുന്നത്: കാണുക
__സമന്വയം ബിൽറ്റിനുകൾ or __ആറ്റോമിക് ബിൽറ്റിനുകൾ വിവരങ്ങൾക്ക്.

-msahf
ഈ ഓപ്‌ഷൻ 64-ബിറ്റ് കോഡിൽ "SAHF" നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നത് സാധ്യമാക്കുന്നു. ആദ്യകാല ഇന്റൽ
പെന്റിയം 4 ജി64 സ്റ്റെപ്പ് അവതരിപ്പിക്കുന്നതിന് മുമ്പ് ഇന്റൽ 4 പിന്തുണയുള്ള പെന്റിയം 1 സിപിയു
2005 ഡിസംബറിൽ, പിന്തുണയ്ക്കുന്ന "LAHF", "SAHF" നിർദ്ദേശങ്ങൾ ഇല്ലായിരുന്നു
എഎംഡി64. ചില സ്റ്റാറ്റസ് ഫ്ലാഗുകൾക്ക് യഥാക്രമം ലോഡ്, സ്റ്റോർ നിർദ്ദേശങ്ങളാണ് ഇവ.
64-ബിറ്റ് മോഡിൽ, "fmod", "drem" എന്നിവ ഒപ്റ്റിമൈസ് ചെയ്യാൻ "SAHF" നിർദ്ദേശം ഉപയോഗിക്കുന്നു
"ബാക്കിയുള്ള" ബിൽറ്റ്-ഇൻ ഫംഗ്ഷനുകൾ; കാണുക മറ്റു ബിൽറ്റിനുകൾ വിവരങ്ങൾക്ക്.

-mmovbe
"__builtin_bswap32" നടപ്പിലാക്കാൻ "movbe" നിർദ്ദേശം ഉപയോഗിക്കാൻ ഈ ഓപ്‌ഷൻ പ്രാപ്തമാക്കുന്നു.
കൂടാതെ "__builtin_bswap64".

-mcrc32
ഈ ഓപ്‌ഷൻ "__builtin_ia32_crc32qi" എന്ന ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകൾ പ്രവർത്തനക്ഷമമാക്കുന്നു,
"__builtin_ia32_crc32hi", "__builtin_ia32_crc32si", "__builtin_ia32_crc32di" എന്നിവയിലേക്ക്
"crc32" മെഷീൻ നിർദ്ദേശം സൃഷ്ടിക്കുക.

-mrecip
ഈ ഓപ്‌ഷൻ "RCPSS", "RSQRTSS" നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രാപ്‌തമാക്കുന്നു (അവയുടെ വെക്‌ടറൈസ്ഡ്
"ആർ‌സി‌പി‌പി‌എസ്", "ആർ‌എസ്‌ക്യുആർ‌ടി‌പി‌എസ്" എന്നീ വകഭേദങ്ങൾ) വർദ്ധിപ്പിക്കുന്നതിനുള്ള അധിക ന്യൂട്ടൺ-റാപ്‌സൺ ഘട്ടം
"DIVSS", "SQRTSS" (അവയുടെ വെക്‌ടറൈസ്ഡ് വേരിയന്റുകൾ) എന്നിവയ്‌ക്ക് പകരം കൃത്യത
കൃത്യമായ ഫ്ലോട്ടിംഗ് പോയിന്റ് ആർഗ്യുമെന്റുകൾ. എപ്പോൾ മാത്രമാണ് ഈ നിർദ്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നത്
-funsafe-math-optimizations കൂടെ ഒരുമിച്ച് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു -ഫിനിറ്റ്-ഗണിതം-മാത്രം ഒപ്പം
-fno-trapping-math. സീക്വൻസിൻറെ ത്രൂപുട്ട് എന്നതിനേക്കാൾ കൂടുതലാണെന്ന കാര്യം ശ്രദ്ധിക്കുക
നോൺ-റെസിപ്രോക്കൽ നിർദ്ദേശത്തിന്റെ ത്രൂപുട്ട്, ക്രമത്തിന്റെ കൃത്യത ആകാം
2 ulp വരെ കുറഞ്ഞു (അതായത് 1.0 ന്റെ വിപരീതം 0.99999994 ആണ്).

GCC നടപ്പിലാക്കുന്നത് "1.0f/sqrtf(x)" "RSQRTSS" (അല്ലെങ്കിൽ "RSQRTPS") യുടെ അടിസ്ഥാനത്തിൽ ഇതിനകം
കൂടെ ഫാസ്റ്റ്-ഗണിതം (അല്ലെങ്കിൽ മുകളിലുള്ള ഓപ്ഷൻ കോമ്പിനേഷൻ), ആവശ്യമില്ല -mrecip.

ഇതിനായുള്ള അധിക ന്യൂട്ടൺ-റാപ്‌സൺ സ്റ്റെപ്പ് ഉപയോഗിച്ച് ജിസിസി മുകളിലെ സീക്വൻസ് പുറപ്പെടുവിക്കുന്നു എന്നതും ശ്രദ്ധിക്കുക
വെക്‌ടറൈസ്ഡ് സിംഗിൾ ഫ്ലോട്ട് ഡിവിഷനും വെക്‌ടറൈസ്ഡ് "sqrtf(x)" ഇതിനകം കൂടെ ഫാസ്റ്റ്-ഗണിതം
(അല്ലെങ്കിൽ മുകളിലുള്ള ഓപ്ഷൻ കോമ്പിനേഷൻ), ആവശ്യമില്ല -mrecip.

-mrecip=തിരഞ്ഞെടുക്കുക
ഈ ഓപ്‌ഷൻ ഏത് പരസ്പര എസ്റ്റിമേറ്റ് നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കാമെന്ന് നിയന്ത്രിക്കുന്നു. തിരഞ്ഞെടുക്കുക ഒരു ആണ്
കോമയാൽ വേർതിരിച്ച ഓപ്‌ഷനുകളുടെ ലിസ്റ്റ്, അതിന് മുമ്പായി a ! ഓപ്ഷൻ വിപരീതമാക്കാൻ:

എല്ലാം എല്ലാ എസ്റ്റിമേറ്റ് നിർദ്ദേശങ്ങളും പ്രവർത്തനക്ഷമമാക്കുക.

സ്ഥിരസ്ഥിതി
ഇതിന് തുല്യമായ ഡിഫോൾട്ട് നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക -mrecip.

ആരും
ഇതിന് തുല്യമായ എല്ലാ എസ്റ്റിമേറ്റ് നിർദ്ദേശങ്ങളും പ്രവർത്തനരഹിതമാക്കുക -mno-recip.

DIV സ്കെയിലർ ഡിവിഷനുള്ള ഏകദേശ കണക്ക് പ്രവർത്തനക്ഷമമാക്കുക.

vec-div
വെക്‌ടറൈസ്ഡ് ഡിവിഷനുള്ള ഏകദേശ കണക്ക് പ്രവർത്തനക്ഷമമാക്കുക.

ചതുരശ്ര
സ്കെയിലർ സ്ക്വയർ റൂട്ടിനായി ഏകദേശ കണക്ക് പ്രവർത്തനക്ഷമമാക്കുക.

vec-sqrt
വെക്‌ടറൈസ്ഡ് സ്‌ക്വയർ റൂട്ടിനായി ഏകദേശ കണക്ക് പ്രവർത്തനക്ഷമമാക്കുക.

അതിനാൽ, ഉദാഹരണത്തിന്, -mrecip=എല്ലാം,!sqrt എല്ലാ പരസ്പര ഏകദേശ കണക്കുകളും പ്രാപ്തമാക്കുന്നു,
സ്ക്വയർ റൂട്ട് ഒഴികെ.

-mveclibabi=ടൈപ്പ് ചെയ്യുക
ഒരു ബാഹ്യ ലൈബ്രറി ഉപയോഗിച്ച് ഇൻട്രിൻസിക്‌സ് വെക്‌ടറൈസ് ചെയ്യുന്നതിന് ഉപയോഗിക്കേണ്ട എബിഐ തരം വ്യക്തമാക്കുന്നു.
പിന്തുണയ്ക്കുന്ന മൂല്യങ്ങൾ ടൈപ്പ് ചെയ്യുക ആകുന്നു എസ്.വി.എം.എൽ ഇന്റൽ ഷോർട്ട് വെക്റ്റർ മാത്ത് ലൈബ്രറിക്കും acml
എഎംഡി മാത്ത് കോർ ലൈബ്രറിക്ക് വേണ്ടി. ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നതിന്, രണ്ടും -ftree-vectorize ഒപ്പം
-funsafe-math-optimizations പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്, ഒരു SVML അല്ലെങ്കിൽ ACML ABI-അനുയോജ്യമാണ്
ലിങ്ക് സമയത്ത് ലൈബ്രറി വ്യക്തമാക്കണം.

GCC നിലവിൽ "vmldExp2", "vmldLn2", "vmldLog102", "vmldLog102" എന്നിവയിലേക്ക് കോളുകൾ പുറപ്പെടുവിക്കുന്നു,
"vmldPow2", "vmldTanh2", "vmldTan2", "vmldAtan2", "vmldAtanh2", "vmldCbrt2",
"vmldSinh2", "vmldSin2", "vmldAsinh2", "vmldAsin2", "vmldCosh2", "vmldCos2",
"vmldAcosh2", "vmldAcos2", "vmlsExp4", "vmlsLn4", "vmlsLog104", "vmlsLog104",
"vmlsPow4", "vmlsTanh4", "vmlsTan4", "vmlsAtan4", "vmlsAtanh4", "vmlsCbrt4",
"vmlsSinh4", "vmlsSin4", "vmlsAsinh4", "vmlsAsin4", "vmlsCosh4", "vmlsCos4",
"vmlsAcosh4", "vmlsAcos4" എന്നിവ അനുബന്ധ ഫംഗ്‌ഷൻ തരത്തിന് എപ്പോൾ -mveclibabi=svml is
ഉപയോഗിച്ചതും "__vrd2_sin", "__vrd2_cos", "__vrd2_exp", "__vrd2_log", "__vrd2_log2",
"__vrd2_log10", "__vrs4_sinf", "__vrs4_cosf", "__vrs4_expf", "__vrs4_logf",
അനുബന്ധ ഫംഗ്‌ഷൻ തരത്തിനായി "__vrs4_log2f", "__vrs4_log10f", "__vrs4_powf"
എപ്പോൾ -mveclibabi=acml ഉപയോഗിക്കുന്നു.

-mabi=പേര്
നിർദ്ദിഷ്‌ട കോളിംഗ് കൺവെൻഷനായി കോഡ് സൃഷ്‌ടിക്കുക. അനുവദനീയമായ മൂല്യങ്ങളാണ് SysV വേണ്ടി
GNU/Linux-ലും മറ്റ് സിസ്റ്റങ്ങളിലും ഉപയോഗിക്കുന്ന ABI, കൂടാതെ ms മൈക്രോസോഫ്റ്റ് എബിഐക്ക് വേണ്ടി. ദി
Microsoft Windows, SysV ABI എന്നിവ ടാർഗെറ്റുചെയ്യുമ്പോൾ Microsoft ABI ഉപയോഗിക്കുന്നതാണ് സ്ഥിരസ്ഥിതി
മറ്റെല്ലാ സിസ്റ്റങ്ങളിലും. ഉപയോഗിച്ച് പ്രത്യേക പ്രവർത്തനങ്ങൾക്കായി നിങ്ങൾക്ക് ഈ സ്വഭാവം നിയന്ത്രിക്കാനാകും
ഫംഗ്ഷൻ ആട്രിബ്യൂട്ടുകൾ "ms_abi", "sysv_abi".

-mtls-dialect=ടൈപ്പ് ചെയ്യുക
ഉപയോഗിച്ച് ത്രെഡ്-ലോക്കൽ സ്റ്റോറേജ് ആക്സസ് ചെയ്യാൻ കോഡ് സൃഷ്ടിക്കുക gnu or gnu2 കൺവെൻഷനുകൾ. gnu
യാഥാസ്ഥിതിക സ്ഥിരസ്ഥിതിയാണ്; gnu2 കൂടുതൽ കാര്യക്ഷമമാണ്, എന്നാൽ ഇത് കംപൈൽ-ഉം റൺ-ഉം ചേർത്തേക്കാം.
എല്ലാ സിസ്റ്റങ്ങളിലും തൃപ്തിപ്പെടുത്താൻ കഴിയാത്ത സമയ ആവശ്യകതകൾ.

-mpush-args
-mno-push-args
ഔട്ട്ഗോയിംഗ് പാരാമീറ്ററുകൾ സംഭരിക്കുന്നതിന് പുഷ് പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുക. ഈ രീതി ചെറുതും സാധാരണവുമാണ്
SUB/MOV പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്ന രീതി പോലെ തന്നെ വേഗതയേറിയതും സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമവുമാണ്. ചിലതിൽ
മെച്ചപ്പെടുത്തിയ ഷെഡ്യൂളിംഗ് കാരണം ഇത് പ്രവർത്തനരഹിതമാക്കുന്നത് പ്രകടനം മെച്ചപ്പെടുത്തിയേക്കാം
ആശ്രിതത്വങ്ങൾ.

-മക്യുമുലേറ്റ്-ഔട്ട്‌ഗോയിംഗ്-ആർഗ്സ്
പ്രവർത്തനക്ഷമമാക്കിയാൽ, ഔട്ട്‌ഗോയിംഗ് ആർഗ്യുമെന്റുകൾക്ക് ആവശ്യമായ പരമാവധി ഇടം കണക്കാക്കും
ഫംഗ്ഷൻ പ്രോലോഗ്. കുറഞ്ഞതിനാൽ മിക്ക ആധുനിക സിപിയുകളിലും ഇത് വേഗത്തിലാണ്
ഡിപൻഡൻസികൾ, മെച്ചപ്പെട്ട ഷെഡ്യൂളിംഗ്, ഇഷ്ടപ്പെട്ട സ്റ്റാക്ക് ആയിരിക്കുമ്പോൾ സ്റ്റാക്ക് ഉപയോഗം കുറച്ചു
അതിർത്തി 2 ന് തുല്യമല്ല. കോഡ് വലുപ്പത്തിൽ ശ്രദ്ധേയമായ വർദ്ധനവാണ് പോരായ്മ. ഈ
സ്വിച്ച് സൂചിപ്പിക്കുന്നു -mno-push-args.

-mthreads
MinGW-ൽ ത്രെഡ്-സുരക്ഷിത ഒഴിവാക്കൽ കൈകാര്യം ചെയ്യലിനെ പിന്തുണയ്ക്കുക. ത്രെഡ്-സേഫിനെ ആശ്രയിക്കുന്ന പ്രോഗ്രാമുകൾ
ഒഴിവാക്കൽ കൈകാര്യം ചെയ്യൽ എല്ലാ കോഡും കംപൈൽ ചെയ്യുകയും ലിങ്ക് ചെയ്യുകയും വേണം -mthreads ഓപ്ഷൻ. എപ്പോൾ
സമാഹരിക്കുന്നു, -mthreads നിർവചിക്കുന്നു -D_MT; ലിങ്ക് ചെയ്യുമ്പോൾ, അത് ഒരു പ്രത്യേക ത്രെഡ് ഹെൽപ്പറിൽ ലിങ്ക് ചെയ്യുന്നു
ലൈബ്രറി -lmingwthrd ഇത് ഓരോ ത്രെഡും ഒഴിവാക്കൽ-കൈകാര്യം ചെയ്യുന്ന ഡാറ്റ വൃത്തിയാക്കുന്നു.

-mno-align-stringops
ഇൻലൈൻ ചെയ്ത സ്ട്രിംഗ് പ്രവർത്തനങ്ങളുടെ ലക്ഷ്യസ്ഥാനം വിന്യസിക്കരുത്. ഈ സ്വിച്ച് കോഡ് കുറയ്ക്കുന്നു
ലക്ഷ്യസ്ഥാനം ഇതിനകം വിന്യസിച്ചിട്ടുണ്ടെങ്കിൽ വലുപ്പവും പ്രകടനവും മെച്ചപ്പെടുത്തുന്നു, എന്നാൽ GCC
അതിനെ കുറിച്ച് അറിയില്ല.

-minline-all-stringops
ഡിഫോൾട്ടായി GCC സ്ട്രിംഗ് ഓപ്പറേഷനുകൾ ലക്ഷ്യസ്ഥാനം അറിയുമ്പോൾ മാത്രം ഇൻലൈൻ ചെയ്യുന്നു
കുറഞ്ഞത് 4-ബൈറ്റ് അതിർത്തിയിലേക്ക് വിന്യസിച്ചു. ഇത് കൂടുതൽ ഇൻലൈനിംഗ് പ്രാപ്തമാക്കുകയും കോഡ് വർദ്ധിപ്പിക്കുകയും ചെയ്യുന്നു
വലിപ്പം, എന്നാൽ വേഗതയേറിയ "memcpy", "strlen" എന്നിവയെ ആശ്രയിച്ചിരിക്കുന്ന കോഡിന്റെ പ്രകടനം മെച്ചപ്പെടുത്താം
ചെറിയ ദൈർഘ്യത്തിന് "മെംസെറ്റ്".

-minline-stringops-dynamically
അജ്ഞാത വലുപ്പത്തിലുള്ള സ്ട്രിംഗ് പ്രവർത്തനങ്ങൾക്കായി, ചെറിയവയ്ക്ക് ഇൻലൈൻ കോഡ് ഉപയോഗിച്ച് റൺ-ടൈം പരിശോധനകൾ ഉപയോഗിക്കുക
ബ്ലോക്കുകളും വലിയ ബ്ലോക്കുകൾക്കായി ഒരു ലൈബ്രറി കോളും.

-mstringop-strategy=alga ഇംഗ്ലീഷ്
പ്രത്യേക അൽഗോരിതം ഉപയോഗിക്കുന്നതിന് വേണ്ടിയുള്ള ആന്തരിക തീരുമാനം ഹ്യൂറിസ്റ്റിക് അസാധുവാക്കുക
ഇൻലൈനിംഗ് സ്ട്രിംഗ് പ്രവർത്തനങ്ങൾ. ഇതിനായി അനുവദിച്ച മൂല്യങ്ങൾ alga ഇംഗ്ലീഷ് ആകുന്നു:

rep_byte
rep_4ബൈറ്റ്
rep_8ബൈറ്റ്
നിർദ്ദിഷ്‌ട വലുപ്പത്തിന്റെ i386 "rep" പ്രിഫിക്‌സ് ഉപയോഗിച്ച് വികസിപ്പിക്കുക.

byte_loop
ലൂപ്പ്
unrolled_loop
ഒരു ഇൻലൈൻ ലൂപ്പിലേക്ക് വികസിപ്പിക്കുക.

ലിബ്കോൾ
എപ്പോഴും ഒരു ലൈബ്രറി കോൾ ഉപയോഗിക്കുക.

-mmemcpy-strategy=കൗശലം
"__builtin_memcpy" വേണമോ എന്ന് തീരുമാനിക്കാൻ ആന്തരിക തീരുമാനം ഹ്യൂറിസ്റ്റിക് അസാധുവാക്കുക
ഇൻലൈൻ ചെയ്‌തിരിക്കുന്നതും കോപ്പി ഓപ്പറേഷന്റെ പ്രതീക്ഷിത വലുപ്പത്തിൽ ഉപയോഗിക്കേണ്ട ഇൻലൈൻ അൽഗോരിതം
അറിയപ്പെടുന്നു. കൗശലം കോമയാൽ വേർതിരിച്ച പട്ടികയാണ് alga ഇംഗ്ലീഷ്:max_size:dest_align ട്രിപ്പിൾസ്. alga ഇംഗ്ലീഷ്
ൽ വ്യക്തമാക്കിയിട്ടുണ്ട് -mstringop-തന്ത്രം, max_size പരമാവധി ബൈറ്റ് വലുപ്പം വ്യക്തമാക്കുന്നു
ഇൻലൈൻ അൽഗോരിതം alga ഇംഗ്ലീഷ് അനുവദനീയമാണ്. അവസാന ട്രിപ്പിറ്റിന്, ദി max_size "-1" ആയിരിക്കണം. ദി
max_size ലിസ്റ്റിലെ ട്രിപ്പിൾ വർദ്ധന ക്രമത്തിൽ വ്യക്തമാക്കണം. ദി
ഏറ്റവും കുറഞ്ഞ ബൈറ്റ് വലുപ്പം alga ഇംഗ്ലീഷ് ആദ്യത്തെ ട്രിപ്പിറ്റിന് 0 ആണ് കൂടാതെ "max_size + 1" എന്ന
മുമ്പത്തെ ശ്രേണി.

-mmemset-strategy=കൗശലം
ഓപ്ഷൻ സമാനമാണ് -mmemcpy-strategy= അല്ലാതെ അത് നിയന്ത്രിക്കാനാണ്
"__builtin_memset" വിപുലീകരണം.

-മോമിറ്റ്-ലീഫ്-ഫ്രെയിം-പോയിന്റർ
ലീഫ് ഫംഗ്‌ഷനുകൾക്കായി ഫ്രെയിം പോയിന്റർ ഒരു രജിസ്റ്ററിൽ സൂക്ഷിക്കരുത്. ഇത് ഒഴിവാക്കുന്നു
ഫ്രെയിം പോയിന്ററുകൾ സംരക്ഷിക്കുന്നതിനും സജ്ജീകരിക്കുന്നതിനും പുനഃസ്ഥാപിക്കുന്നതിനുമുള്ള നിർദ്ദേശങ്ങൾ കൂടാതെ ഒരു അധിക രജിസ്റ്ററും ഉണ്ടാക്കുന്നു
ഇല പ്രവർത്തനങ്ങളിൽ ലഭ്യമാണ്. ഓപ്ഷൻ -ഫോമിറ്റ്-ലീഫ്-ഫ്രെയിം-പോയിന്റർ ഫ്രെയിം നീക്കം ചെയ്യുന്നു
ലീഫ് ഫംഗ്‌ഷനുകൾക്കായുള്ള പോയിന്റർ, ഇത് ഡീബഗ്ഗിംഗ് ബുദ്ധിമുട്ടാക്കിയേക്കാം.

-mtls-direct-seg-refs
-mno-tls-direct-seg-refs
TLS സെഗ്‌മെന്റിൽ നിന്നുള്ള ഓഫ്‌സെറ്റുകൾ ഉപയോഗിച്ച് TLS വേരിയബിളുകൾ ആക്‌സസ് ചെയ്യാൻ കഴിയുമോ എന്നത് നിയന്ത്രിക്കുന്നു
രജിസ്റ്റർ ചെയ്യുക (32-ബിറ്റിന് %gs, 64-ബിറ്റിന് %fs), അല്ലെങ്കിൽ ത്രെഡ് ബേസ് പോയിന്റർ ആയിരിക്കണം
കൂട്ടിച്ചേർത്തു. ഇത് സാധുതയുള്ളതാണോ അല്ലയോ എന്നത് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തെയും അതാണോ എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു
മുഴുവൻ TLS ഏരിയയും ഉൾക്കൊള്ളാൻ സെഗ്‌മെന്റ് മാപ്പ് ചെയ്യുന്നു.

GNU C ലൈബ്രറി ഉപയോഗിക്കുന്ന സിസ്റ്റങ്ങൾക്ക്, ഡിഫോൾട്ട് ഓണാണ്.

-msse2avx
-mno-sse2avx
അസംബ്ലർ VEX പ്രിഫിക്‌സ് ഉപയോഗിച്ച് SSE നിർദ്ദേശങ്ങൾ എൻകോഡ് ചെയ്യണമെന്ന് വ്യക്തമാക്കുക. ഓപ്ഷൻ
-mavx സ്ഥിരസ്ഥിതിയായി ഇത് ഓണാക്കുന്നു.

-എംഫെൻട്രി
-mno-fentry
പ്രൊഫൈലിംഗ് സജീവമാണെങ്കിൽ (-പേജ്), പ്രൊഫൈലിംഗ് കൌണ്ടർ കോൾ ആമുഖത്തിന് മുമ്പ് ഇടുക.
ശ്രദ്ധിക്കുക: x86 ആർക്കിടെക്ചറുകളിൽ "ms_hook_prologue" എന്ന ആട്രിബ്യൂട്ട് സാധ്യമല്ല
നിമിഷം -എംഫെൻട്രി ഒപ്പം -പേജ്.

-mrecord-mcount
-mno-record-mcount
പ്രൊഫൈലിംഗ് സജീവമാണെങ്കിൽ (-പേജ്), പോയിന്ററുകൾ അടങ്ങുന്ന ഒരു __mcount_loc വിഭാഗം സൃഷ്ടിക്കുക
ഓരോ പ്രൊഫൈലിംഗ് കോളിലേക്കും. കോളുകൾ സ്വയമേവ പാച്ച് ചെയ്യുന്നതിനും ഔട്ട് ചെയ്യുന്നതിനും ഇത് ഉപയോഗപ്രദമാണ്.

-mnop-mcount
-mno-nop-mcount
പ്രൊഫൈലിംഗ് സജീവമാണെങ്കിൽ (-പേജ്), പ്രൊഫൈലിംഗ് ഫംഗ്‌ഷനുകളിലേക്കുള്ള കോളുകൾ നോപ്‌സ് ആയി ജനറേറ്റുചെയ്യുക.
അവ പിന്നീട് ചലനാത്മകമായി പാച്ച് ചെയ്യപ്പെടുമ്പോൾ ഇത് ഉപയോഗപ്രദമാണ്. ഇത് മാത്രമേ സാധ്യതയുള്ളൂ
ഒരുമിച്ച് ഉപയോഗപ്രദമാണ് -mrecord-mcount.

-mskip-rax-setup
-mno-skip-rax-setup
എസ്എസ്ഇ വിപുലീകരണങ്ങൾ പ്രവർത്തനരഹിതമാക്കി x86-64 ആർക്കിടെക്ചറിനായി കോഡ് സൃഷ്ടിക്കുമ്പോൾ,
-skip-rax-setup വേരിയബിളുകൾ ഇല്ലാത്തപ്പോൾ RAX രജിസ്റ്റർ സജ്ജീകരിക്കുന്നത് ഒഴിവാക്കാൻ ഉപയോഗിക്കാം
വെക്റ്റർ രജിസ്റ്ററിൽ പാസായ ആർഗ്യുമെന്റുകൾ.

മുന്നറിയിപ്പ്: വെക്റ്റർ രജിസ്റ്ററുകൾ അനാവശ്യമായി സംരക്ഷിക്കുന്നത് ഒഴിവാക്കാൻ RAX രജിസ്റ്റർ ഉപയോഗിക്കുന്നതിനാൽ
വേരിയബിൾ ആർഗ്യുമെന്റുകൾ പാസാക്കുമ്പോൾ സ്റ്റാക്ക് ചെയ്യുക, ഈ ഓപ്‌ഷന്റെ സ്വാധീനം വിളിക്കുന്നവർ ആകാം
കുറച്ച് സ്ഥലം പാഴാക്കുക, മോശമായി പെരുമാറുക അല്ലെങ്കിൽ ക്രമരഹിതമായ ഒരു സ്ഥലത്തേക്ക് ചാടുക. GCC 4.4 അല്ലെങ്കിൽ പുതിയത്
RAX റജിസ്റ്റർ മൂല്യം പരിഗണിക്കാതെ തന്നെ അത്തരം പ്രശ്നങ്ങൾ ഉണ്ടാകരുത്.

-m8bit-idiv
-mno-8bit-idiv
ഇന്റൽ ആറ്റം പോലെയുള്ള ചില പ്രോസസറുകളിൽ, 8-ബിറ്റ് ഒപ്പിടാത്ത പൂർണ്ണസംഖ്യ വിഭജനത്തേക്കാൾ വളരെ വേഗതയുള്ളതാണ്
32-ബിറ്റ്/64-ബിറ്റ് പൂർണ്ണസംഖ്യ വിഭജനം. ഈ ഓപ്ഷൻ ഒരു റൺ-ടൈം ചെക്ക് സൃഷ്ടിക്കുന്നു. രണ്ടും ആണെങ്കിൽ
ലാഭവിഹിതവും വിഭജനവും 0 മുതൽ 255 വരെയുള്ള പരിധിയിലാണ്, 8-ബിറ്റ് ഒപ്പിടാത്ത പൂർണ്ണസംഖ്യ വിഭജനം
32-ബിറ്റ്/64-ബിറ്റ് പൂർണ്ണസംഖ്യ വിഭജനത്തിന് പകരം ഉപയോഗിക്കുന്നു.

-mavx256-സ്പ്ലിറ്റ്-അൺലൈൻഡ്-ലോഡ്
-mavx256-സ്പ്ലിറ്റ്-അൺലൈൻഡ്-സ്റ്റോർ
32-ബൈറ്റ് AVX അലൈൻ ചെയ്യാത്ത ലോഡും സ്റ്റോറും വിഭജിക്കുക.

-mstack-protector-guard=ഗാർഡ്
കാനറി ഉപയോഗിച്ച് സ്റ്റാക്ക് പ്രൊട്ടക്ഷൻ കോഡ് സൃഷ്ടിക്കുക ഗാർഡ്. പിന്തുണയ്ക്കുന്ന ലൊക്കേഷനുകളാണ് ഗ്ലോബൽ
ആഗോള കാനറിക്ക് അല്ലെങ്കിൽ tls TLS ബ്ലോക്കിലെ ഓരോ ത്രെഡ് കാനറിക്കും (സ്ഥിരസ്ഥിതി). ഈ
എപ്പോൾ മാത്രമേ ഓപ്ഷൻ പ്രാബല്യത്തിൽ വരൂ -fstack-protectctor or -fstack-protector-എല്ലാം വ്യക്തമാക്കിയിട്ടുണ്ട്.

ഇവ -m 86-ബിറ്റിലെ x64-64 പ്രോസസ്സറുകളിൽ മുകളിൽ പറഞ്ഞവ കൂടാതെ സ്വിച്ചുകൾ പിന്തുണയ്ക്കുന്നു
പരിസ്ഥിതികൾ.

-m32
-m64
-mx32
-m16
16-ബിറ്റ്, 32-ബിറ്റ് അല്ലെങ്കിൽ 64-ബിറ്റ് എൻവയോൺമെന്റിനായി കോഡ് സൃഷ്ടിക്കുക. ദി -m32 ഓപ്ഷൻ സെറ്റ് "int",
"ലോംഗ്", കൂടാതെ 32 ബിറ്റുകളിലേക്ക് പോയിന്റർ ടൈപ്പ് ചെയ്യുന്നു, കൂടാതെ ഏത് i386 സിസ്റ്റത്തിലും പ്രവർത്തിക്കുന്ന കോഡ് ജനറേറ്റുചെയ്യുന്നു.

ദി -m64 ഓപ്ഷൻ "int" എന്നത് 32 ബിറ്റുകളായും "ലോംഗ്", പോയിന്റർ തരങ്ങൾ 64 ബിറ്റുകളായും സജ്ജീകരിക്കുന്നു, കൂടാതെ
x86-64 ആർക്കിടെക്ചറിനായി കോഡ് സൃഷ്ടിക്കുന്നു. ഡാർവിന് മാത്രം -m64 ഓപ്ഷൻ കൂടി
ഓഫ് ചെയ്യുന്നു -fno-pic ഒപ്പം -mdynamic-no-pic ഓപ്ഷനുകൾ.

ദി -mx32 ഓപ്ഷൻ "int", "long", പോയിന്റർ തരങ്ങൾ എന്നിവ 32 ബിറ്റുകളായി സജ്ജമാക്കുകയും കോഡ് സൃഷ്ടിക്കുകയും ചെയ്യുന്നു
x86-64 ആർക്കിടെക്ചറിനായി.

ദി -m16 ഓപ്ഷൻ സമാനമാണ് -m32, അതല്ലാതെ അത് ".code16gcc" ഔട്ട്പുട്ട് ചെയ്യുന്നു
അസംബ്ലി ഔട്ട്പുട്ടിന്റെ തുടക്കത്തിൽ അസംബ്ലി നിർദ്ദേശം, അതുവഴി ബൈനറി പ്രവർത്തിപ്പിക്കാൻ കഴിയും
16-ബിറ്റ് മോഡിൽ.

-mno-red-zone
x86-64 കോഡിനായി "റെഡ് സോൺ" എന്ന് വിളിക്കപ്പെടുന്നവ ഉപയോഗിക്കരുത്. റെഡ് സോൺ നിർബന്ധമാക്കിയത്
x86-64 എബിഐ; ഇത് സ്റ്റാക്ക് പോയിന്ററിന്റെ സ്ഥാനത്തിനപ്പുറമുള്ള 128-ബൈറ്റ് ഏരിയയാണ്
സിഗ്നൽ അല്ലെങ്കിൽ ഇന്ററപ്റ്റ് ഹാൻഡ്‌ലറുകൾ വഴി പരിഷ്‌ക്കരിച്ചതിനാൽ താത്കാലിക ഡാറ്റയ്‌ക്കായി ഉപയോഗിക്കാം
സ്റ്റാക്ക് പോയിന്റർ ക്രമീകരിക്കാതെ. പതാക -mno-red-zone ഈ റെഡ് സോൺ പ്രവർത്തനരഹിതമാക്കുന്നു.

-mcmodel=ചെറിയത്
ചെറിയ കോഡ് മോഡലിനായി കോഡ് സൃഷ്ടിക്കുക: പ്രോഗ്രാമും അതിന്റെ ചിഹ്നങ്ങളും ലിങ്ക് ചെയ്തിരിക്കണം
വിലാസ സ്ഥലത്തിന്റെ താഴ്ന്ന 2 GB. പോയിന്ററുകൾ 64 ബിറ്റുകളാണ്. പ്രോഗ്രാമുകൾ ആകാം
സ്ഥിരമായി അല്ലെങ്കിൽ ചലനാത്മകമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു. ഇതാണ് ഡിഫോൾട്ട് കോഡ് മോഡൽ.

-mcmodel=കെർണൽ
കേർണൽ കോഡ് മോഡലിനായി കോഡ് സൃഷ്ടിക്കുക. കെർണൽ നെഗറ്റീവ് 2 GB-യിൽ പ്രവർത്തിക്കുന്നു
വിലാസ സ്ഥലം. ലിനക്സ് കേർണൽ കോഡിനായി ഈ മോഡൽ ഉപയോഗിക്കേണ്ടതുണ്ട്.

-mcmodel= മീഡിയം
മീഡിയം മോഡലിനായി കോഡ് സൃഷ്‌ടിക്കുക: പ്രോഗ്രാം താഴെയുള്ള 2 GB-യിൽ ലിങ്ക് ചെയ്‌തിരിക്കുന്നു
വിലാസ സ്ഥലം. ചെറിയ ചിഹ്നങ്ങളും അവിടെ സ്ഥാപിച്ചിട്ടുണ്ട്. കൂടുതൽ വലിപ്പമുള്ള ചിഹ്നങ്ങൾ
-mlarge-data-threshold വലിയ ഡാറ്റയിലോ BSS വിഭാഗങ്ങളിലോ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്, അവ കണ്ടെത്താനാകും
2 ജിബിക്ക് മുകളിൽ. പ്രോഗ്രാമുകൾ സ്റ്റാറ്റിക് അല്ലെങ്കിൽ ഡൈനാമിക് ആയി ലിങ്ക് ചെയ്യാവുന്നതാണ്.

-mcmodel=വലുത്
വലിയ മോഡലിന് കോഡ് സൃഷ്ടിക്കുക. ഈ മോഡൽ വിലാസങ്ങളെക്കുറിച്ച് അനുമാനങ്ങളൊന്നും നൽകുന്നില്ല
വിഭാഗങ്ങളുടെ വലിപ്പവും.

-maddress-mode=നീണ്ട
ദൈർഘ്യമേറിയ വിലാസ മോഡിനായി കോഡ് സൃഷ്ടിക്കുക. ഇത് 64-ബിറ്റിനും x32-നും മാത്രമേ പിന്തുണയ്ക്കൂ
പരിസരങ്ങൾ. 64-ബിറ്റ് എൻവയോൺമെന്റുകൾക്കുള്ള സ്ഥിര വിലാസ മോഡാണിത്.

-maddress-mode= short
ഹ്രസ്വ വിലാസ മോഡിനായി കോഡ് സൃഷ്ടിക്കുക. ഇത് 32-ബിറ്റിനും x32-നും മാത്രമേ പിന്തുണയ്ക്കൂ
പരിസരങ്ങൾ. 32-ബിറ്റ്, x32 എൻവയോൺമെന്റുകൾക്കുള്ള ഡിഫോൾട്ട് വിലാസ മോഡ് ആണ് ഇത്.

x86 വിൻഡോസ് ഓപ്ഷനുകൾ

Microsoft Windows ലക്ഷ്യങ്ങൾക്കായി ഈ അധിക ഓപ്ഷനുകൾ ലഭ്യമാണ്:

-എംകൺസോൾ
നിർദ്ദേശം നൽകിക്കൊണ്ട് ഒരു കൺസോൾ ആപ്ലിക്കേഷൻ ജനറേറ്റ് ചെയ്യണമെന്ന് ഈ ഓപ്‌ഷൻ വ്യക്തമാക്കുന്നു
കൺസോൾ ആപ്ലിക്കേഷനുകൾക്ക് ആവശ്യമായ PE ഹെഡർ സബ്സിസ്റ്റം തരം സജ്ജീകരിക്കുന്നതിനുള്ള ലിങ്കർ.
ഈ ഓപ്‌ഷൻ Cygwin, MinGW ടാർഗെറ്റുകൾക്ക് ലഭ്യമാണ്, സ്ഥിരസ്ഥിതിയായി ഇത് പ്രവർത്തനക്ഷമമാക്കുന്നു
ആ ലക്ഷ്യങ്ങൾ.

-mdll
Cygwin, MinGW ടാർഗെറ്റുകൾക്ക് ഈ ഓപ്ഷൻ ലഭ്യമാണ്. ഒരു DLL---a എന്ന് ഇത് വ്യക്തമാക്കുന്നു
ഡൈനാമിക് ലിങ്ക് ലൈബ്രറി --- ജനറേറ്റ് ചെയ്യേണ്ടത്, ആവശ്യമുള്ളത് തിരഞ്ഞെടുക്കുന്നത് സാധ്യമാക്കുന്നു
റൺടൈം സ്റ്റാർട്ടപ്പ് ഒബ്ജക്റ്റും എൻട്രി പോയിന്റും.

-mnop-fun-dllimport
Cygwin, MinGW ടാർഗെറ്റുകൾക്ക് ഈ ഓപ്ഷൻ ലഭ്യമാണ്. എന്ന് അത് വ്യക്തമാക്കുന്നു
"dllimport" ആട്രിബ്യൂട്ട് അവഗണിക്കണം.

-mthread
MinGW ടാർഗെറ്റുകൾക്ക് ഈ ഓപ്ഷൻ ലഭ്യമാണ്. അത് MinGW-നിർദ്ദിഷ്ട ത്രെഡ് വ്യക്തമാക്കുന്നു
പിന്തുണ ഉപയോഗിക്കേണ്ടതാണ്.

-മ്യൂണിക്കോട്
MinGW-w64 ടാർഗെറ്റുകൾക്ക് ഈ ഓപ്ഷൻ ലഭ്യമാണ്. ഇത് "UNICODE" പ്രീപ്രൊസസ്സറിന് കാരണമാകുന്നു
മാക്രോ മുൻകൂട്ടി നിശ്ചയിക്കുകയും യൂണികോഡ്-പ്രാപ്‌തിയുള്ള റൺടൈം സ്റ്റാർട്ടപ്പ് കോഡ് തിരഞ്ഞെടുക്കുകയും ചെയ്യുന്നു.

-എംവിൻ32
Cygwin, MinGW ടാർഗെറ്റുകൾക്ക് ഈ ഓപ്ഷൻ ലഭ്യമാണ്. സാധാരണ എന്ന് ഇത് വ്യക്തമാക്കുന്നു
മൈക്രോസോഫ്റ്റ് വിൻഡോസ് മുൻകൂട്ടി നിശ്ചയിച്ചിട്ടുള്ള മാക്രോകൾ പ്രീ-പ്രൊസസറിൽ സജ്ജീകരിക്കേണ്ടതാണ്, പക്ഷേ അങ്ങനെയല്ല
റൺടൈം ലൈബ്രറി/സ്റ്റാർട്ടപ്പ് കോഡിന്റെ തിരഞ്ഞെടുപ്പിനെ സ്വാധീനിക്കുക.

-mwindows
Cygwin, MinGW ടാർഗെറ്റുകൾക്ക് ഈ ഓപ്ഷൻ ലഭ്യമാണ്. ഇത് ഒരു GUI എന്ന് വ്യക്തമാക്കുന്നു
PE തലക്കെട്ട് സജ്ജീകരിക്കാൻ ലിങ്കറോട് നിർദ്ദേശിച്ചാണ് ആപ്ലിക്കേഷൻ ജനറേറ്റ് ചെയ്യേണ്ടത്
ഉപസിസ്റ്റം തരം ഉചിതമായി.

-fno-set-stack-എക്സിക്യൂട്ടബിൾ
MinGW ടാർഗെറ്റുകൾക്ക് ഈ ഓപ്ഷൻ ലഭ്യമാണ്. ഇതിനായി എക്സിക്യൂട്ടബിൾ ഫ്ലാഗ് വ്യക്തമാക്കുന്നു
നെസ്റ്റഡ് ഫംഗ്‌ഷനുകൾ ഉപയോഗിക്കുന്ന സ്റ്റാക്ക് സജ്ജീകരിച്ചിട്ടില്ല. ബൈനറികൾ പ്രവർത്തിപ്പിക്കുന്നതിന് ഇത് ആവശ്യമാണ്
മൈക്രോസോഫ്റ്റ് വിൻഡോസിന്റെ കേർണൽ മോഡിൽ, സജ്ജീകരിക്കാൻ ഉപയോഗിക്കുന്ന User32 API പോലെ
എക്സിക്യൂട്ടബിൾ പ്രത്യേകാവകാശങ്ങൾ ലഭ്യമല്ല.

-fwritable-relocated-rdata
MinGW, Cygwin ടാർഗെറ്റുകൾക്ക് ഈ ഓപ്ഷൻ ലഭ്യമാണ്. അത് മാറ്റിസ്ഥാപിച്ചതായി വ്യക്തമാക്കുന്നു-
റീഡ്-ഒൺലി വിഭാഗത്തിലെ ഡാറ്റ .ഡാറ്റ വിഭാഗത്തിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. പ്രായമായവർക്ക് ഇത് ആവശ്യമാണ്
റൺടൈമുകൾ .rdata സെക്ഷനുകളുടെ പരിഷ്ക്കരണത്തെ പിന്തുണയ്ക്കുന്നില്ല.

-mpe-aligned-commons
Cygwin, MinGW ടാർഗെറ്റുകൾക്ക് ഈ ഓപ്ഷൻ ലഭ്യമാണ്. അത് GNU എന്ന് വ്യക്തമാക്കുന്നു
കോമൺ വേരിയബിളുകളുടെ ശരിയായ വിന്യാസം അനുവദിക്കുന്ന PE ഫയൽ ഫോർമാറ്റിലേക്കുള്ള വിപുലീകരണം
കോഡ് സൃഷ്ടിക്കുമ്പോൾ ഉപയോഗിക്കണം. GCC കണ്ടുപിടിച്ചാൽ അത് ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കും
കോൺഫിഗറേഷൻ സമയത്ത് കണ്ടെത്തിയ ടാർഗെറ്റ് അസംബ്ലർ സവിശേഷതയെ പിന്തുണയ്ക്കുന്നു.

ചുവടെ കാണുക x86 ഓപ്ഷനുകൾ സാധാരണ ഓപ്ഷനുകൾക്കായി.

എക്സ്സ്റ്റോമി16 ഓപ്ഷനുകൾ

ഈ ഓപ്ഷനുകൾ Xstormy16-നായി നിർവചിച്ചിരിക്കുന്നു:

-എംസിം
സിമുലേറ്ററിന് അനുയോജ്യമായ സ്റ്റാർട്ടപ്പ് ഫയലുകളും ലിങ്കർ സ്ക്രിപ്റ്റും തിരഞ്ഞെടുക്കുക.

എക്സ്റ്റെൻസ ഓപ്ഷനുകൾ

ഈ ഓപ്ഷനുകൾ Xtensa ടാർഗെറ്റുകൾക്കായി പിന്തുണയ്ക്കുന്നു:

-mconst16
-mno-const16
സ്ഥിരമായ മൂല്യങ്ങൾ ലോഡുചെയ്യുന്നതിന് "CONST16" നിർദ്ദേശങ്ങളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുക. ദി
"CONST16" നിർദ്ദേശം നിലവിൽ ടെൻസിലിക്കയിൽ നിന്നുള്ള ഒരു സാധാരണ ഓപ്ഷനല്ല. എപ്പോൾ
പ്രവർത്തനക്ഷമമാക്കി, "CONST16" നിർദ്ദേശങ്ങൾ എല്ലായ്പ്പോഴും സാധാരണ "L32R" ന് പകരം ഉപയോഗിക്കുന്നു
നിർദ്ദേശങ്ങൾ. "L16R" ആണെങ്കിൽ മാത്രമേ "CONST32" ന്റെ ഉപയോഗം സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കൂ.
നിർദ്ദേശം ലഭ്യമല്ല.

-mfused-madd
-mno-fused-madd
ഫ്യൂസ് ചെയ്‌ത ഗുണനം/ചേർക്കുക, ഗുണിക്കുക/കുറയ്‌ക്കുക എന്നിവയുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുക
ഫ്ലോട്ടിംഗ് പോയിന്റ് ഓപ്ഷൻ. ഫ്ലോട്ടിംഗ് പോയിന്റ് ഓപ്ഷനും ഇല്ലെങ്കിൽ ഇതിന് യാതൊരു ഫലവുമില്ല
പ്രവർത്തനക്ഷമമാക്കി. സംയോജിപ്പിച്ച ഗുണനം/കൂട്ടുക, ഗുണനം/കുറയ്ക്കൽ നിർദ്ദേശങ്ങൾ അപ്രാപ്‌തമാക്കുന്നു
ഗുണനത്തിനും കൂട്ടിച്ചേർക്കലിനും / കുറയ്ക്കുന്നതിനുമുള്ള പ്രത്യേക നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്നതിന് കമ്പൈലർ.
കർശനമായ IEEE 754-ന് അനുസൃതമായ ഫലങ്ങൾ ഉള്ള ചില സന്ദർഭങ്ങളിൽ ഇത് അഭികാമ്യമാണ്
ആവശ്യമാണ്: ഫ്യൂസ് ചെയ്ത ഗുണനം കൂട്ടിച്ചേർക്കുക/കുറയ്ക്കുക നിർദ്ദേശങ്ങൾ ഇന്റർമീഡിയറ്റിനെ റൗണ്ട് ചെയ്യുന്നില്ല
ഫലം, അതുവഴി ഫലങ്ങൾ ഉണ്ടാക്കുന്നു കൂടുതൽ വ്യക്തമാക്കിയതിനേക്കാൾ കൃത്യതയുള്ള ബിറ്റുകൾ
IEEE നിലവാരം. ഫ്യൂസ്ഡ് മൾട്ടിപ്ലൈ ആഡ്/ഒഴിവാക്കൽ നിർദ്ദേശങ്ങൾ പ്രവർത്തനരഹിതമാക്കുന്നതും അത് ഉറപ്പാക്കുന്നു
ഗുണനവും സംയോജിപ്പിക്കാനുള്ള കമ്പൈലറിന്റെ കഴിവിനോട് പ്രോഗ്രാം ഔട്ട്പുട്ട് സെൻസിറ്റീവ് അല്ല
പ്രവർത്തനങ്ങൾ ചേർക്കുക/കുറയ്ക്കുക.

-serialize-അസ്ഥിരമായ
-mno-serialize-volatile
ഈ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, "അസ്ഥിരമായ" മെമ്മറിക്ക് മുമ്പായി GCC "MEMW" നിർദ്ദേശങ്ങൾ ചേർക്കുന്നു
തുടർച്ചയായ സ്ഥിരത ഉറപ്പ് നൽകുന്ന റഫറൻസുകൾ. സ്ഥിരസ്ഥിതിയാണ് -serialize-അസ്ഥിരമായ.
ഉപയോഗം -mno-serialize-volatile "MEMW" നിർദ്ദേശങ്ങൾ ഒഴിവാക്കാൻ.

-mforce-no-pic
GNU/Linux പോലെയുള്ള ടാർഗെറ്റുകൾക്ക്, എല്ലാ ഉപയോക്തൃ മോഡ് Xtensa കോഡും സ്ഥാനത്തായിരിക്കണം-
സ്വതന്ത്ര കോഡ് (PIC), ഈ ഓപ്ഷൻ കേർണൽ കോഡ് കംപൈൽ ചെയ്യുന്നതിനായി PIC പ്രവർത്തനരഹിതമാക്കുന്നു.

-mtext-section-literals
-mno-text-section-literals
ഈ ഓപ്ഷനുകൾ അക്ഷരീയ കുളങ്ങളുടെ ചികിത്സയെ നിയന്ത്രിക്കുന്നു. സ്ഥിരസ്ഥിതിയാണ്
-mno-text-section-literals, ഔട്ട്പുട്ടിൽ ഒരു പ്രത്യേക വിഭാഗത്തിൽ ലിറ്ററലുകൾ സ്ഥാപിക്കുന്നു
ഫയൽ. ഇത് ലിറ്ററൽ പൂൾ ഒരു ഡാറ്റ റാം/റോമിൽ സ്ഥാപിക്കാൻ അനുവദിക്കുന്നു, കൂടാതെ ഇത് അനുവദിക്കുന്നു
അനാവശ്യമായവ നീക്കം ചെയ്യുന്നതിനായി പ്രത്യേക ഒബ്ജക്റ്റ് ഫയലുകളിൽ നിന്ന് ലിറ്ററൽ പൂളുകൾ സംയോജിപ്പിക്കുന്നതിനുള്ള ലിങ്കർ
അക്ഷരങ്ങൾ, കോഡ് വലുപ്പം മെച്ചപ്പെടുത്തുക. കൂടെ -mtext-section-literals, അക്ഷരങ്ങൾ ആകുന്നു
ടെക്‌സ്‌റ്റ് സെക്ഷനിൽ വിഭജിച്ചിരിക്കുന്നു, അവയെ അവരുമായി കഴിയുന്നത്ര അടുത്ത് നിർത്താൻ
അവലംബങ്ങൾ. വലിയ അസംബ്ലി ഫയലുകൾക്ക് ഇത് ആവശ്യമായി വന്നേക്കാം.

-mtarget-align
-mno-target-align
ഈ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, സ്വയമേവ അലൈൻ ചെയ്യാൻ GCC അസംബ്ലറോട് നിർദ്ദേശിക്കുന്നു
ചില കോഡ് സാന്ദ്രതയുടെ ചെലവിൽ ബ്രാഞ്ച് പിഴകൾ കുറയ്ക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ. ദി
ബ്രാഞ്ച് ടാർഗെറ്റുകളെ വിന്യസിക്കാൻ സാന്ദ്രത നിർദ്ദേശങ്ങൾ വിശാലമാക്കാൻ അസംബ്ലർ ശ്രമിക്കുന്നു
കോൾ നിർദ്ദേശങ്ങൾക്ക് താഴെയുള്ള നിർദ്ദേശങ്ങൾ. മതിയായ മുൻകൂർ സുരക്ഷിതത്വം ഇല്ലെങ്കിൽ
ഒരു ടാർഗെറ്റ് വിന്യസിക്കുന്നതിനുള്ള സാന്ദ്രത നിർദ്ദേശങ്ങൾ, വിശാലമാക്കൽ നടത്തുന്നില്ല. സ്ഥിരസ്ഥിതിയാണ്
-mtarget-align. ഈ ഓപ്ഷനുകൾ സ്വയമേവ അലൈൻ ചെയ്ത ചികിത്സയെ ബാധിക്കില്ല
"LOOP" പോലെയുള്ള നിർദ്ദേശങ്ങൾ, അസംബ്ലർ എപ്പോഴും വിശാലമാക്കുന്നതിലൂടെ വിന്യസിക്കുന്നു
സാന്ദ്രത നിർദ്ദേശങ്ങൾ അല്ലെങ്കിൽ NOP നിർദ്ദേശങ്ങൾ ചേർക്കുക വഴി.

-മോംഗ്കോളുകൾ
-mno-longcalls
ഈ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, നേരിട്ടുള്ള കോളുകൾ വിവർത്തനം ചെയ്യാൻ ജിസിസി അസംബ്ലറോട് നിർദ്ദേശിക്കുന്നു
നേരിട്ടുള്ള കോളിന്റെ ലക്ഷ്യം നിർണ്ണയിക്കാനാകുന്നില്ലെങ്കിൽ പരോക്ഷ കോളുകൾ
കോൾ നിർദ്ദേശം അനുവദിച്ച പരിധി. ഈ വിവർത്തനം സാധാരണയായി കോളുകൾക്കായി സംഭവിക്കുന്നു
മറ്റ് ഉറവിട ഫയലുകളിലെ പ്രവർത്തനങ്ങൾ. പ്രത്യേകിച്ചും, അസംബ്ലർ നേരിട്ട് വിവർത്തനം ചെയ്യുന്നു
ഒരു "L32R"-ലേക്ക് "കോൾ" നിർദ്ദേശം, തുടർന്ന് ഒരു "CALLX" നിർദ്ദേശം. സ്ഥിരസ്ഥിതിയാണ്
-mno-longcalls. കോൾ ടാർഗറ്റ് ചെയ്യാൻ കഴിയുന്ന പ്രോഗ്രാമുകളിൽ ഈ ഓപ്ഷൻ ഉപയോഗിക്കണം
പരിധിക്ക് പുറത്തായിരിക്കാം. ഈ ഓപ്ഷൻ അസംബ്ലറിൽ നടപ്പിലാക്കുന്നു, അല്ല
കമ്പൈലർ, അതിനാൽ ജിസിസി സൃഷ്ടിച്ച അസംബ്ലി കോഡ് ഇപ്പോഴും ഡയറക്ട് കോൾ കാണിക്കുന്നു
നിർദ്ദേശങ്ങൾ --- യഥാർത്ഥ നിർദ്ദേശങ്ങൾ കാണുന്നതിന് ഡിസ്അസംബ്ലിംഗ് ചെയ്ത ഒബ്ജക്റ്റ് കോഡ് നോക്കുക.
എല്ലാ ക്രോസ് ഫയൽ കോളുകൾക്കും അസംബ്ലർ ഒരു പരോക്ഷ കോൾ ഉപയോഗിക്കുന്നു എന്നത് ശ്രദ്ധിക്കുക
ശരിക്കും പരിധിക്ക് പുറത്തുള്ളവ.

zSeries ഓപ്ഷനുകൾ

ഇവ ചുവടെ പട്ടികപ്പെടുത്തിയിരിക്കുന്നു

ഓപ്ഷനുകൾ വേണ്ടി കോഡ് തലമുറ കൺവെൻഷനുകൾ
ഈ മെഷീൻ-സ്വതന്ത്ര ഓപ്ഷനുകൾ കോഡിൽ ഉപയോഗിക്കുന്ന ഇന്റർഫേസ് കൺവെൻഷനുകളെ നിയന്ത്രിക്കുന്നു
തലമുറ.

അവയിൽ മിക്കതിനും പോസിറ്റീവ്, നെഗറ്റീവ് ഫോമുകൾ ഉണ്ട്; നെഗറ്റീവ് ഫോം -foo is
-fno-foo. ചുവടെയുള്ള പട്ടികയിൽ, ഫോമുകളിൽ ഒന്ന് മാത്രമേ ലിസ്റ്റ് ചെയ്തിട്ടുള്ളൂ--- അല്ലാത്തത്
സ്ഥിരസ്ഥിതി. ഒന്നുകിൽ നീക്കം ചെയ്തുകൊണ്ട് നിങ്ങൾക്ക് മറ്റൊരു ഫോം കണ്ടെത്താനാകും ഇല്ല- അല്ലെങ്കിൽ അത് ചേർക്കുന്നു.

-fbounds-ചെക്ക്
അതിനെ പിന്തുണയ്ക്കുന്ന മുൻഭാഗങ്ങൾക്കായി, സൂചികകൾ ഉപയോഗിച്ചിട്ടുണ്ടോയെന്ന് പരിശോധിക്കാൻ അധിക കോഡ് സൃഷ്ടിക്കുക
ആക്സസ് അറേകൾ പ്രഖ്യാപിച്ച പരിധിക്കുള്ളിലാണ്. ഇത് നിലവിൽ പിന്തുണയ്ക്കുന്നു
Java, Fortran ഫ്രണ്ട് അവസാനിക്കുന്നു, ഇവിടെ ഈ ഓപ്ഷൻ ശരിയും തെറ്റും ആയി സ്ഥിരസ്ഥിതിയായി മാറുന്നു
യഥാക്രമം.

-fstack-reuse=പുനരുപയോഗ-നില
ഉപയോക്താവ് പ്രഖ്യാപിച്ച ലോക്കൽ/ഓട്ടോ വേരിയബിളുകൾക്കുള്ള സ്റ്റാക്ക് സ്പേസ് പുനരുപയോഗം ഈ ഓപ്ഷൻ നിയന്ത്രിക്കുന്നു
കമ്പൈലർ ജനറേറ്റ് ചെയ്ത താത്കാലികങ്ങൾ. പുനരുപയോഗ_നില കഴിയും എല്ലാം, പേര്_വാർസ്, അഥവാ ആരും. എല്ലാം
എല്ലാ പ്രാദേശിക വേരിയബിളുകൾക്കും താത്കാലികങ്ങൾക്കുമായി സ്റ്റാക്ക് പുനരുപയോഗം പ്രാപ്തമാക്കുന്നു, പേര്_വാർസ് പ്രാപ്തമാക്കുന്നു
പേരുകളുള്ള ഉപയോക്തൃ നിർവചിച്ച പ്രാദേശിക വേരിയബിളുകൾക്കായി മാത്രം വീണ്ടും ഉപയോഗിക്കുക, കൂടാതെ ആരും സ്റ്റാക്ക് പുനരുപയോഗം പ്രവർത്തനരഹിതമാക്കുന്നു
പൂർണ്ണമായും. സ്ഥിര മൂല്യം ആണ് എല്ലാം. പ്രോഗ്രാം വിപുലീകരിക്കുമ്പോൾ ഓപ്ഷൻ ആവശ്യമാണ്
ഒരു സ്കോപ്പ്ഡ് ലോക്കൽ വേരിയബിളിന്റെ അല്ലെങ്കിൽ താൽക്കാലികമായി സൃഷ്ടിച്ച ഒരു കംപൈലറിന്റെ ആയുസ്സ്
ഭാഷ നിർവചിച്ച അവസാന പോയിന്റ്. ഒരു വേരിയബിളിന്റെ ആയുസ്സ് അവസാനിക്കുമ്പോൾ, എങ്കിൽ
വേരിയബിൾ ലൈവ്സ് മെമ്മറിയിൽ, ഒപ്റ്റിമൈസിംഗ് കംപൈലറിന് അതിന്റെ സ്റ്റാക്ക് വീണ്ടും ഉപയോഗിക്കാനുള്ള സ്വാതന്ത്ര്യമുണ്ട്
ലൈവ് റേഞ്ച് ഇല്ലാത്ത മറ്റ് താത്കാലികങ്ങളോ സ്കോപ്പ്ഡ് ലോക്കൽ വേരിയബിളുകളോ ഉള്ള ഇടം
അതുമായി ഓവർലാപ്പ് ചെയ്യുക. പ്രാദേശിക ആയുസ്സ് വർദ്ധിപ്പിക്കുന്ന ലെഗസി കോഡ് ലംഘിക്കാൻ സാധ്യതയുണ്ട്
സ്റ്റാക്ക് പുനരുപയോഗ ഒപ്റ്റിമൈസേഷൻ.

ഉദാഹരണത്തിന്,

int *p;
{
int ലോക്കൽ1;

p = &local1;
ലോക്കൽ1 = 10;
....
}
{
int ലോക്കൽ2;
ലോക്കൽ2 = 20;
...
}

(*p == 10) // ലോക്കൽ1 ന്റെ പരിധിക്ക് പുറത്താണെങ്കിൽ
{

}

മറ്റൊരു ഉദാഹരണം:

ഘടന എ
{
A(int k) : i(k), j(k) {}
int i;
int j;
};

A *AP;

അസാധുവായ foo (const A& ar)
{
ap = & ar;
}

അസാധുവായ ബാർ()
{
foo(A(10)); // foo തിരികെ വരുമ്പോൾ താൽക്കാലിക വസ്തുവിന്റെ ആയുസ്സ് അവസാനിക്കുന്നു

{
A a(20);
....
}
ap->i+= 10; // ap റഫറൻസുകൾ പരിധിക്ക് പുറത്താണ്, ആരുടെ ഇടം
// എന്നത് a ഉപയോഗിച്ച് വീണ്ടും ഉപയോഗിക്കുന്നു. ap->i യുടെ മൂല്യം എന്താണ്?
}

ഒരു കംപൈലറിന്റെ ആയുസ്സ് താൽക്കാലികമായി സൃഷ്ടിക്കുന്നത് C++ സ്റ്റാൻഡേർഡ് നന്നായി നിർവചിച്ചിരിക്കുന്നു.
ഒരു താൽക്കാലിക ജീവിതകാലം അവസാനിക്കുമ്പോൾ, താൽക്കാലികം ഓർമ്മയിൽ ജീവിക്കുകയാണെങ്കിൽ,
ഒപ്റ്റിമൈസിംഗ് കംപൈലറിന് അതിന്റെ സ്റ്റാക്ക് സ്പേസ് മറ്റ് താത്കാലികങ്ങളുമായി അല്ലെങ്കിൽ വീണ്ടും ഉപയോഗിക്കാനുള്ള സ്വാതന്ത്ര്യമുണ്ട്
തത്സമയ ശ്രേണി ഓവർലാപ്പ് ചെയ്യാത്ത സ്കോപ്പ്ഡ് ലോക്കൽ വേരിയബിളുകൾ. എന്നിരുന്നാലും ചിലത്
ലെഗസി കോഡ് പഴയ കംപൈലർമാരുടെ സ്വഭാവത്തെ ആശ്രയിച്ചിരിക്കുന്നു, അതിൽ താൽക്കാലികമായി അടുക്കുന്നു
സ്ഥലം വീണ്ടും ഉപയോഗിക്കില്ല, ആക്രമണാത്മക സ്റ്റാക്ക് പുനരുപയോഗം റൺടൈം പിശകുകളിലേക്ക് നയിച്ചേക്കാം. ഈ
താൽക്കാലിക സ്റ്റാക്ക് പുനരുപയോഗ ഒപ്റ്റിമൈസേഷൻ നിയന്ത്രിക്കാൻ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു.

-ftrapv
സങ്കലനം, കുറയ്ക്കൽ, എന്നിവയിൽ ഒപ്പിട്ട ഓവർഫ്ലോയ്‌ക്കായി ഈ ഓപ്ഷൻ കെണികൾ സൃഷ്ടിക്കുന്നു.
ഗുണന പ്രവർത്തനങ്ങൾ.

-fwrapv
ഒപ്പിട്ട ഗണിത ഓവർഫ്ലോ അനുമാനിക്കാൻ ഈ ഓപ്ഷൻ കംപൈലറോട് നിർദ്ദേശിക്കുന്നു
സങ്കലനം, വ്യവകലനം, ഗുണനം എന്നിവ ടൂസ്-കംപ്ലിമെന്റ് ഉപയോഗിച്ച് ചുറ്റുന്നു
പ്രാതിനിധ്യം. ഈ ഫ്ലാഗ് ചില ഒപ്റ്റിമൈസേഷനുകൾ പ്രാപ്തമാക്കുകയും മറ്റുള്ളവയെ പ്രവർത്തനരഹിതമാക്കുകയും ചെയ്യുന്നു. ഈ
ജാവ ഭാഷ ആവശ്യപ്പെടുന്നതുപോലെ, ജാവ ഫ്രണ്ട് എൻഡിനായി ഓപ്ഷൻ സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
സവിശേഷത.

- ഒഴിവാക്കലുകൾ
ഒഴിവാക്കൽ കൈകാര്യം ചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കുക. ഒഴിവാക്കലുകൾ പ്രചരിപ്പിക്കാൻ ആവശ്യമായ അധിക കോഡ് സൃഷ്ടിക്കുന്നു. വേണ്ടി
ചില ലക്ഷ്യങ്ങൾ, എല്ലാ ഫംഗ്‌ഷനുകൾക്കുമായി GCC ഫ്രെയിം അൺവൈൻഡ് വിവരങ്ങൾ സൃഷ്ടിക്കുന്നു എന്നാണ് ഇത് സൂചിപ്പിക്കുന്നത്,
കാര്യമായ ഡാറ്റ വലുപ്പം ഓവർഹെഡിൽ ഉൽപ്പാദിപ്പിക്കാൻ കഴിയും, അത് ബാധിക്കില്ലെങ്കിലും
വധശിക്ഷ. നിങ്ങൾ ഈ ഓപ്‌ഷൻ വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, ഭാഷകൾക്കായി GCC ഇത് സ്ഥിരസ്ഥിതിയായി പ്രാപ്തമാക്കുന്നു
C++ പോലെ, സാധാരണയായി ഒഴിവാക്കലുകൾ കൈകാര്യം ചെയ്യേണ്ടത് ആവശ്യമാണ്, കൂടാതെ ഇത് പോലുള്ള ഭാഷകളിൽ ഇത് പ്രവർത്തനരഹിതമാക്കുന്നു
സാധാരണ ആവശ്യമില്ലാത്ത സി. എന്നിരുന്നാലും, നിങ്ങൾ എപ്പോൾ ഈ ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്
എഴുതിയിരിക്കുന്ന എക്‌സ്‌പ്‌ഷൻ ഹാൻഡ്‌ലറുകളുമായി ശരിയായി പ്രവർത്തിക്കേണ്ട സി കോഡ് കംപൈൽ ചെയ്യുന്നു
C++ ൽ. നിങ്ങൾ പഴയ C++ കംപൈൽ ചെയ്യുകയാണെങ്കിൽ ഈ ഓപ്ഷൻ പ്രവർത്തനരഹിതമാക്കാനും നിങ്ങൾ ആഗ്രഹിച്ചേക്കാം
ഒഴിവാക്കൽ കൈകാര്യം ചെയ്യാത്ത പ്രോഗ്രാമുകൾ.

-fnon-call-exceptions
ഒഴിവാക്കലുകൾ നൽകാൻ ട്രാപ്പിംഗ് നിർദ്ദേശങ്ങളെ അനുവദിക്കുന്ന കോഡ് സൃഷ്ടിക്കുക. ഇത് ശ്രദ്ധിക്കുക
എല്ലായിടത്തും നിലവിലില്ലാത്ത പ്ലാറ്റ്‌ഫോം-നിർദ്ദിഷ്ട റൺടൈം പിന്തുണ ആവശ്യമാണ്. മാത്രമല്ല,
അത് മാത്രമേ അനുവദിക്കൂ കെണി ഒഴിവാക്കലുകൾ, അതായത് മെമ്മറി റഫറൻസുകൾ അല്ലെങ്കിൽ
ഫ്ലോട്ടിംഗ് പോയിന്റ് നിർദ്ദേശങ്ങൾ. ഏകപക്ഷീയമായി ഒഴിവാക്കലുകൾ എറിയാൻ ഇത് അനുവദിക്കുന്നില്ല
"SIGALRM" പോലുള്ള സിഗ്നൽ ഹാൻഡ്‌ലറുകൾ.

-fdelete-dead-exceptions
ഒഴിവാക്കലുകൾ വരുത്തിയേക്കാവുന്ന നിർദ്ദേശങ്ങൾ പരിഗണിക്കുക, എന്നാൽ മറ്റുവിധത്തിൽ സംഭാവന നൽകരുത്
പ്രോഗ്രാമിന്റെ നിർവ്വഹണം ഒപ്റ്റിമൈസ് ചെയ്യാവുന്നതാണ്. ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു
Ada ഭാഷാ സ്പെസിഫിക്കേഷൻ അനുവദനീയമായ പ്രകാരം Ada ഫ്രണ്ട് എൻഡിനായി. ഒപ്റ്റിമൈസേഷൻ
നിർജ്ജീവമായ ഒഴിവാക്കലുകൾ നീക്കം ചെയ്യാൻ കാരണമാകുന്ന പാസുകൾ വ്യത്യസ്തമായി സ്വതന്ത്രമായി പ്രവർത്തനക്ഷമമാക്കുന്നു
ഒപ്റ്റിമൈസേഷൻ ലെവലുകൾ.

-ഫൺവിൻഡ്-ടേബിളുകൾ
സമാനമായ - ഒഴിവാക്കലുകൾ, അത് ആവശ്യമായ സ്റ്റാറ്റിക് ഡാറ്റ സൃഷ്ടിക്കുന്നു എന്നതൊഴിച്ചാൽ, പക്ഷേ
സൃഷ്ടിച്ച കോഡിനെ മറ്റൊരു തരത്തിലും ബാധിക്കില്ല. നിങ്ങൾക്ക് സാധാരണയായി ആവശ്യമില്ല
ഈ ഓപ്ഷൻ പ്രാപ്തമാക്കുക; പകരം, ഈ കൈകാര്യം ചെയ്യൽ ആവശ്യമുള്ള ഒരു ഭാഷാ പ്രൊസസർ അത് പ്രവർത്തനക്ഷമമാക്കുന്നു
നിനക്ക് പകരം.

-fasynchronous-unwind-tables
ടാർഗെറ്റ് മെഷീൻ പിന്തുണയ്‌ക്കുകയാണെങ്കിൽ, DWARF 2 ഫോർമാറ്റിൽ അൺവൈൻഡ് ടേബിൾ സൃഷ്‌ടിക്കുക. മേശയാണ്
ഓരോ നിർദ്ദേശ അതിരിലും കൃത്യമായി, അതിനാൽ ഇത് സ്റ്റാക്ക് അൺവൈൻഡിംഗിനായി ഉപയോഗിക്കാം
അസിൻക്രണസ് ഇവന്റുകൾ (ഡീബഗ്ഗർ അല്ലെങ്കിൽ ഗാർബേജ് കളക്ടർ പോലുള്ളവ).

-fno-gnu-unique
അടുത്തിടെയുള്ള ഗ്നു അസംബ്ലറും സി ലൈബ്രറിയും ഉള്ള സിസ്റ്റങ്ങളിൽ, C++ കമ്പൈലർ ഉപയോഗിക്കുന്നത്
ടെംപ്ലേറ്റ് സ്റ്റാറ്റിക് ഡാറ്റ അംഗങ്ങളുടെ നിർവചനങ്ങൾ ഉറപ്പാക്കാൻ "STB_GNU_UNIQUE" ബൈൻഡിംഗ്
കൂടാതെ ഇൻലൈൻ ഫംഗ്ഷനുകളിലെ സ്റ്റാറ്റിക് ലോക്കൽ വേരിയബിളുകൾ സാന്നിധ്യത്തിൽ പോലും അദ്വിതീയമാണ്
"RTLD_LOCAL"; രണ്ട് വ്യത്യസ്ത ആളുകൾ ഉപയോഗിക്കുന്ന ലൈബ്രറിയിലെ പ്രശ്നങ്ങൾ ഒഴിവാക്കാൻ ഇത് ആവശ്യമാണ്
"RTLD_LOCAL" പ്ലഗിനുകൾ അവയിലൊന്നിലെ നിർവചനത്തെ ആശ്രയിച്ചിരിക്കുന്നു, അതിനാൽ
ചിഹ്നത്തിന്റെ ബൈൻഡിംഗിനെക്കുറിച്ച് മറ്റൊന്നുമായി വിയോജിക്കുന്നു. എന്നാൽ ഇത് കാരണമാകുന്നു
ബാധിച്ച DSO-കൾക്കായി "dlclose" അവഗണിക്കപ്പെടും; നിങ്ങളുടെ പ്രോഗ്രാം പുനരാരംഭിക്കുന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നുവെങ്കിൽ
"dlclose", "dlopen" എന്നിവ വഴിയുള്ള ഒരു DSO നിങ്ങൾക്ക് ഉപയോഗിക്കാം -fno-gnu-unique.

-fpcc-struct-return
"ഹ്രസ്വ" "സ്‌ട്രക്‌റ്റ്", "യൂണിയൻ" മൂല്യങ്ങൾ മെമ്മറിയിൽ ഉള്ളതിനേക്കാൾ ദൈർഘ്യമേറിയത് പോലെ തിരികെ നൽകുക
രജിസ്റ്റർ ചെയ്യുന്നു. ഈ കൺവെൻഷന്റെ കാര്യക്ഷമത കുറവാണ്, പക്ഷേ അത് അനുവദിക്കുന്നതിന്റെ ഗുണമുണ്ട്
GCC- കംപൈൽ ചെയ്ത ഫയലുകളും മറ്റ് കംപൈലറുകൾക്കൊപ്പം കംപൈൽ ചെയ്ത ഫയലുകളും തമ്മിലുള്ള ഇന്റർകോളബിലിറ്റി,
പ്രത്യേകിച്ച് പോർട്ടബിൾ സി കംപൈലർ (പിസിസി).

മെമ്മറിയിൽ ഘടനകൾ തിരികെ നൽകുന്നതിനുള്ള കൃത്യമായ കൺവെൻഷൻ ലക്ഷ്യത്തെ ആശ്രയിച്ചിരിക്കുന്നു
കോൺഫിഗറേഷൻ മാക്രോകൾ.

ചെറിയ ഘടനകളും യൂണിയനുകളും അവയുടെ വലുപ്പവും വിന്യാസവും ചിലവയുമായി പൊരുത്തപ്പെടുന്നവയാണ്
പൂർണ്ണസംഖ്യ തരം.

മുന്നറിയിപ്പ്: കോഡ് സമാഹരിച്ചത് -fpcc-struct-return സ്വിച്ച് ബൈനറി അനുയോജ്യമല്ല
കോഡ് ഉപയോഗിച്ച് സമാഹരിച്ചിരിക്കുന്നു -ഫ്രെഗ്-സ്ട്രക്റ്റ്-റിട്ടേൺ സ്വിച്ച്. അല്ലാത്തവയുമായി പൊരുത്തപ്പെടാൻ ഇത് ഉപയോഗിക്കുക
ഡിഫോൾട്ട് ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസ്.

-ഫ്രെഗ്-സ്ട്രക്റ്റ്-റിട്ടേൺ
സാധ്യമാകുമ്പോൾ രജിസ്റ്ററുകളിൽ "struct", "union" മൂല്യങ്ങൾ തിരികെ നൽകുക. ഇത് കൂടുതൽ കാര്യക്ഷമമാണ്
ചെറിയ ഘടനകൾക്ക് -fpcc-struct-return.

നിങ്ങൾ ഒന്നും വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ -fpcc-struct-return വേണ്ടാ -ഫ്രെഗ്-സ്ട്രക്റ്റ്-റിട്ടേൺ, ജിസിസി ഡിഫോൾട്ട്
ഏത് കൺവെൻഷനാണ് ലക്ഷ്യത്തിന്റെ മാനദണ്ഡം. സ്റ്റാൻഡേർഡ് കൺവെൻഷൻ ഇല്ലെങ്കിൽ,
ജിസിസി ഡിഫോൾട്ടിലേക്ക് -fpcc-struct-return, GCC പ്രിൻസിപ്പൽ ആയ ലക്ഷ്യങ്ങൾ ഒഴികെ
കമ്പൈലർ. അത്തരം സന്ദർഭങ്ങളിൽ, ഞങ്ങൾക്ക് സ്റ്റാൻഡേർഡ് തിരഞ്ഞെടുക്കാം, ഞങ്ങൾ കൂടുതൽ കാര്യക്ഷമമായത് തിരഞ്ഞെടുക്കും
റിട്ടേൺ ബദൽ രജിസ്റ്റർ ചെയ്യുക.

മുന്നറിയിപ്പ്: കോഡ് സമാഹരിച്ചത് -ഫ്രെഗ്-സ്ട്രക്റ്റ്-റിട്ടേൺ സ്വിച്ച് ബൈനറി അനുയോജ്യമല്ല
കോഡ് ഉപയോഗിച്ച് സമാഹരിച്ചിരിക്കുന്നു -fpcc-struct-return സ്വിച്ച്. അല്ലാത്തവയുമായി പൊരുത്തപ്പെടാൻ ഇത് ഉപയോഗിക്കുക
ഡിഫോൾട്ട് ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസ്.

-fshort-enums
പ്രഖ്യാപിത ശ്രേണിക്ക് ആവശ്യമുള്ളത്ര ബൈറ്റുകൾ മാത്രം "enum" തരത്തിലേക്ക് അനുവദിക്കുക
സാധ്യമായ മൂല്യങ്ങൾ. പ്രത്യേകമായി, "enum" തരം ഏറ്റവും ചെറിയ പൂർണ്ണസംഖ്യയ്ക്ക് തുല്യമാണ്
ആവശ്യത്തിന് മുറി ഉള്ള തരം.

മുന്നറിയിപ്പ്: The -fshort-enums സ്വിച്ച് ബൈനറി അല്ലാത്ത കോഡ് സൃഷ്ടിക്കാൻ ജിസിസിക്ക് കാരണമാകുന്നു
ആ സ്വിച്ച് ഇല്ലാതെ ജനറേറ്റ് ചെയ്ത കോഡുമായി പൊരുത്തപ്പെടുന്നു. അല്ലാത്തവയുമായി പൊരുത്തപ്പെടാൻ ഇത് ഉപയോഗിക്കുക
ഡിഫോൾട്ട് ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസ്.

-fshort-ഇരട്ട
"ഇരട്ട" എന്നതിന് "ഫ്ലോട്ടിന്" ഉള്ള അതേ വലുപ്പം ഉപയോഗിക്കുക.

മുന്നറിയിപ്പ്: The -fshort-ഇരട്ട സ്വിച്ച് ബൈനറി അല്ലാത്ത കോഡ് സൃഷ്ടിക്കാൻ ജിസിസിക്ക് കാരണമാകുന്നു
ആ സ്വിച്ച് ഇല്ലാതെ ജനറേറ്റ് ചെയ്ത കോഡുമായി പൊരുത്തപ്പെടുന്നു. അല്ലാത്തവയുമായി പൊരുത്തപ്പെടാൻ ഇത് ഉപയോഗിക്കുക
ഡിഫോൾട്ട് ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസ്.

-fshort-wchar
"wchar_t" എന്നതിനായുള്ള അടിസ്ഥാന തരം അസാധുവാക്കുക, പകരം "ഷോർട്ട് അൺ സൈൻഡ് ഇൻറ്റ്"
ലക്ഷ്യത്തിനായുള്ള സ്ഥിരസ്ഥിതി. പ്രോഗ്രാമുകൾ നിർമ്മിക്കുന്നതിന് ഈ ഓപ്ഷൻ ഉപയോഗപ്രദമാണ്
വൈൻ.

മുന്നറിയിപ്പ്: The -fshort-wchar സ്വിച്ച് ബൈനറി അല്ലാത്ത കോഡ് സൃഷ്ടിക്കാൻ ജിസിസിക്ക് കാരണമാകുന്നു
ആ സ്വിച്ച് ഇല്ലാതെ ജനറേറ്റ് ചെയ്ത കോഡുമായി പൊരുത്തപ്പെടുന്നു. അല്ലാത്തവയുമായി പൊരുത്തപ്പെടാൻ ഇത് ഉപയോഗിക്കുക
ഡിഫോൾട്ട് ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസ്.

-fno-common
സി കോഡിൽ, അൺഇനീഷ്യലൈസ്ഡ് ഗ്ലോബൽ വേരിയബിളുകളുടെ സ്ഥാനം നിയന്ത്രിക്കുന്നു. Unix C കമ്പൈലറുകൾ
പരമ്പരാഗതമായി ഇത്തരം വേരിയബിളുകൾക്ക് വ്യത്യസ്തമായ ഒന്നിലധികം നിർവചനങ്ങൾ അനുവദിച്ചിട്ടുണ്ട്
ഒരു പൊതു ബ്ലോക്കിൽ വേരിയബിളുകൾ സ്ഥാപിക്കുന്നതിലൂടെ കമ്പൈലേഷൻ യൂണിറ്റുകൾ. ഇതാണ് പെരുമാറ്റം
വ്യക്തമാക്കിയത് -fcommon, കൂടാതെ മിക്ക ടാർഗെറ്റുകളിലും ജിസിസിയുടെ ഡിഫോൾട്ടാണ്. മറുവശത്ത്,
ഈ സ്വഭാവം ISO C-ന് ആവശ്യമില്ല, ചില ലക്ഷ്യങ്ങളിൽ ഒരു വേഗതയോ കോഡോ ഉണ്ടായിരിക്കാം
വേരിയബിൾ റഫറൻസുകളുടെ വലിപ്പം പിഴ. ദി -fno-common എന്ന ഓപ്ഷൻ വ്യക്തമാക്കുന്നു
കംപൈലർ ഒബ്ജക്റ്റിന്റെ ഡാറ്റ വിഭാഗത്തിൽ അൺഇനീഷ്യലൈസ്ഡ് ഗ്ലോബൽ വേരിയബിളുകൾ സ്ഥാപിക്കണം
ഫയൽ, അവയെ പൊതുവായ ബ്ലോക്കുകളായി സൃഷ്ടിക്കുന്നതിനുപകരം. ഈ പ്രഭാവം ഉണ്ട് എങ്കിൽ
ഒരേ വേരിയബിൾ രണ്ട് വ്യത്യസ്ത സമാഹാരങ്ങളിൽ ("ബാഹ്യ" ഇല്ലാതെ) പ്രഖ്യാപിച്ചു, നിങ്ങൾക്ക് a ലഭിക്കും
നിങ്ങൾ അവ ലിങ്കുചെയ്യുമ്പോൾ ഒന്നിലധികം നിർവചന പിശക്. ഈ സാഹചര്യത്തിൽ, നിങ്ങൾ കംപൈൽ ചെയ്യണം
-fcommon പകരം. ഉപയോഗിച്ച് കംപൈൽ ചെയ്യുന്നു -fno-common ലക്ഷ്യങ്ങളിൽ ഉപയോഗപ്രദമാണ്
മികച്ച പ്രകടനം നൽകുന്നു, അല്ലെങ്കിൽ പ്രോഗ്രാം പ്രവർത്തിക്കുമെന്ന് പരിശോധിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ
അൺഇനീഷ്യലൈസ്ഡ് വേരിയബിൾ ഡിക്ലറേഷനുകൾ എപ്പോഴും ഈ രീതിയിൽ കൈകാര്യം ചെയ്യുന്ന മറ്റ് സിസ്റ്റങ്ങൾ.

-fno-ident
"#ident" നിർദ്ദേശം അവഗണിക്കുക.

-finhibit-size-directive
".size" അസംബ്ലർ നിർദ്ദേശമോ പ്രശ്‌നമുണ്ടാക്കുന്ന മറ്റെന്തെങ്കിലുമോ ഔട്ട്‌പുട്ട് ചെയ്യരുത്
ഫംഗ്ഷൻ മധ്യഭാഗത്ത് വിഭജിക്കുകയും രണ്ട് ഭാഗങ്ങളും ദൂരെയുള്ള സ്ഥലങ്ങളിൽ സ്ഥാപിക്കുകയും ചെയ്താൽ
ഓർമ്മയിൽ വേറിട്ട്. കംപൈൽ ചെയ്യുമ്പോൾ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു crtstuff.c; നിങ്ങൾക്ക് ആവശ്യമില്ല
മറ്റെന്തിനും അത് ഉപയോഗിക്കാൻ.

-fverbose-asm
കൂടുതൽ കമന്ററി വിവരങ്ങൾ സൃഷ്‌ടിച്ച അസംബ്ലി കോഡിൽ ഇടുക
വായിക്കാവുന്നത്. ഈ ഓപ്ഷൻ സാധാരണയായി വായിക്കേണ്ടവർക്ക് മാത്രമേ ഉപയോഗിക്കൂ
അസംബ്ലി കോഡ് സൃഷ്ടിച്ചു (ഒരുപക്ഷേ കംപൈലർ തന്നെ ഡീബഗ്ഗ് ചെയ്യുമ്പോൾ).

-fno-verbose-asm, ഡിഫോൾട്ട്, അധിക വിവരങ്ങൾ ഒഴിവാക്കുന്നതിന് കാരണമാകുന്നു
രണ്ട് അസംബ്ലർ ഫയലുകൾ താരതമ്യം ചെയ്യുമ്പോൾ ഉപയോഗപ്രദമാണ്.

-frecord-gcc-സ്വിച്ചുകൾ
ഈ സ്വിച്ച് കംപൈലറിനെ അഭ്യർത്ഥിക്കാൻ ഉപയോഗിക്കുന്ന കമാൻഡ് ലൈൻ രേഖപ്പെടുത്തുന്നതിന് കാരണമാകുന്നു
സൃഷ്ടിച്ചുകൊണ്ടിരിക്കുന്ന ഒബ്ജക്റ്റ് ഫയൽ. ഈ സ്വിച്ച് ചിലതിൽ മാത്രം നടപ്പിലാക്കുന്നു
ടാർഗെറ്റുകളും റെക്കോർഡിംഗിന്റെ കൃത്യമായ ഫോർമാറ്റും ടാർഗെറ്റും ബൈനറി ഫയൽ ഫോർമാറ്റുമാണ്
ആശ്രിതമാണ്, എന്നാൽ ഇത് സാധാരണയായി ASCII ടെക്സ്റ്റ് അടങ്ങിയ ഒരു വിഭാഗത്തിന്റെ രൂപമാണ്. ഈ
എന്നതുമായി ബന്ധപ്പെട്ടതാണ് സ്വിച്ച് -fverbose-asm മാറുക, എന്നാൽ ആ സ്വിച്ച് റെക്കോർഡുകൾ മാത്രം
അസംബ്ലർ ഔട്ട്‌പുട്ട് ഫയലിലെ വിവരങ്ങൾ അഭിപ്രായങ്ങളായി, അതിനാൽ അത് ഒരിക്കലും ഒബ്‌ജക്റ്റിലേക്ക് എത്തില്ല
ഫയൽ. ഇതും കാണുക -grecord-gcc-സ്വിച്ചുകൾ കംപൈലർ ഓപ്ഷനുകൾ സംഭരിക്കുന്നതിനുള്ള മറ്റൊരു മാർഗ്ഗത്തിനായി
ഒബ്ജക്റ്റ് ഫയൽ.

-fpic
ഒരു പങ്കിട്ട ലൈബ്രറിയിൽ ഉപയോഗിക്കുന്നതിന് അനുയോജ്യമായ പൊസിഷൻ-ഇൻഡിപെൻഡന്റ് കോഡ് (PIC) സൃഷ്ടിക്കുക
ടാർഗെറ്റ് മെഷീനായി പിന്തുണയ്ക്കുന്നു. അത്തരം കോഡ് എല്ലാ സ്ഥിരമായ വിലാസങ്ങളും a വഴി ആക്സസ് ചെയ്യുന്നു
ആഗോള ഓഫ്‌സെറ്റ് പട്ടിക (GOT). എപ്പോൾ GOT എൻട്രികൾ ഡൈനാമിക് ലോഡർ പരിഹരിക്കുന്നു
പ്രോഗ്രാം ആരംഭിക്കുന്നു (ഡൈനാമിക് ലോഡർ ജിസിസിയുടെ ഭാഗമല്ല; ഇത് പ്രവർത്തനത്തിന്റെ ഭാഗമാണ്
സിസ്റ്റം). ലിങ്ക് ചെയ്‌ത എക്‌സിക്യൂട്ടബിളിന്റെ GOT വലുപ്പം ഒരു മെഷീൻ-നിർദ്ദിഷ്ട പരമാവധി കവിയുന്നുവെങ്കിൽ
വലുപ്പം, അത് സൂചിപ്പിക്കുന്ന ലിങ്കറിൽ നിന്ന് നിങ്ങൾക്ക് ഒരു പിശക് സന്ദേശം ലഭിക്കും -fpic പ്രവർത്തിക്കുന്നില്ല; ഇൻ
ആ സാഹചര്യത്തിൽ, കൂടെ വീണ്ടും കംപൈൽ ചെയ്യുക -fPIC പകരം. (ഈ മാക്സിമം SPARC-ൽ 8k ഉം 32k ഉം ആണ്
m68k, RS/6000 എന്നിവയിൽ. x86 ന് അത്തരം പരിധിയില്ല.)

സ്ഥാന-സ്വതന്ത്ര കോഡിന് പ്രത്യേക പിന്തുണ ആവശ്യമാണ്, അതിനാൽ മാത്രം പ്രവർത്തിക്കുന്നു
ചില യന്ത്രങ്ങൾ. x86-ന്, GCC സിസ്റ്റം V-യ്‌ക്ക് PIC പിന്തുണയ്‌ക്കുന്നു, പക്ഷേ സൂര്യനല്ല
386i. IBM RS/6000-നായി സൃഷ്‌ടിക്കപ്പെട്ട കോഡ് എല്ലായ്പ്പോഴും സ്ഥാന-സ്വതന്ത്രമാണ്.

ഈ ഫ്ലാഗ് സജ്ജീകരിക്കുമ്പോൾ, മാക്രോകൾ "__pic__", "__PIC__" എന്നിവ 1 ആയി നിർവചിക്കപ്പെടുന്നു.

-fPIC
ടാർഗെറ്റ് മെഷീനായി പിന്തുണയ്‌ക്കുകയാണെങ്കിൽ, അനുയോജ്യമായ സ്ഥാന-സ്വതന്ത്ര കോഡ് എമിറ്റ് ചെയ്യുക
ഗ്ലോബൽ ഓഫ്‌സെറ്റ് ടേബിളിന്റെ വലുപ്പത്തിലുള്ള ഒരു പരിധിയും ഡൈനാമിക് ലിങ്കിംഗും ഒഴിവാക്കലും. ഈ
m68k, PowerPC, SPARC എന്നിവയിൽ ഓപ്ഷൻ വ്യത്യാസം വരുത്തുന്നു.

സ്ഥാന-സ്വതന്ത്ര കോഡിന് പ്രത്യേക പിന്തുണ ആവശ്യമാണ്, അതിനാൽ മാത്രം പ്രവർത്തിക്കുന്നു
ചില യന്ത്രങ്ങൾ.

ഈ ഫ്ലാഗ് സജ്ജീകരിക്കുമ്പോൾ, മാക്രോകൾ "__pic__", "__PIC__" എന്നിവ 2 ആയി നിർവചിക്കപ്പെടുന്നു.

-fpie
-fPIE
ഈ ഓപ്ഷനുകൾ സമാനമാണ് -fpic ഒപ്പം -fPIC, എന്നാൽ പൊസിഷൻ സ്വതന്ത്ര കോഡ് സൃഷ്ടിച്ചു
എക്സിക്യൂട്ടബിളുകളിലേക്ക് മാത്രമേ ലിങ്ക് ചെയ്യാൻ കഴിയൂ. സാധാരണയായി ഈ ഓപ്ഷനുകൾ എപ്പോൾ ഉപയോഗിക്കുന്നു -പൈ ജിസിസി
ലിങ്ക് ചെയ്യുമ്പോൾ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു.

-fpie ഒപ്പം -fPIE രണ്ടും "__pie__", "__PIE__" എന്നീ മാക്രോകളെ നിർവ്വചിക്കുന്നു. മാക്രോകൾക്ക് ഉണ്ട്
മൂല്യം 1 എന്നതിനുള്ള -fpie ഒപ്പം 2 ഉം -fPIE.

-fno-ജമ്പ്-ടേബിളുകൾ
കൂടുതൽ കാര്യക്ഷമമായിരിക്കുമ്പോൾ പോലും സ്വിച്ച് സ്റ്റേറ്റ്‌മെന്റുകൾക്കായി ജമ്പ് ടേബിളുകൾ ഉപയോഗിക്കരുത്
മറ്റ് കോഡ് ജനറേഷൻ തന്ത്രങ്ങളേക്കാൾ. ഈ ഓപ്ഷൻ സംയോജിച്ച് ഉപയോഗപ്രദമാണ്
-fpic or -fPIC ഒരു ഡൈനാമിക് ലിങ്കറിന്റെ ഭാഗമായതും സാധ്യമല്ലാത്തതുമായ ബിൽഡിംഗ് കോഡിനായി
ഒരു ജമ്പ് ടേബിളിന്റെ വിലാസം പരാമർശിക്കുക. ചില ലക്ഷ്യങ്ങളിൽ, ജമ്പ് ടേബിളുകൾക്ക് ഒരു ആവശ്യമില്ല
ലഭിച്ചു, ഈ ഓപ്ഷൻ ആവശ്യമില്ല.

-ഘടിപ്പിച്ചത്-reg
എന്ന പേരിലുള്ള രജിസ്റ്റർ കൈകാര്യം ചെയ്യുക reg ഒരു നിശ്ചിത രജിസ്റ്ററായി; സൃഷ്ടിച്ച കോഡ് ഒരിക്കലും പരാമർശിക്കരുത്
അത് (ഒരുപക്ഷേ ഒരു സ്റ്റാക്ക് പോയിന്റർ, ഫ്രെയിം പോയിന്റർ അല്ലെങ്കിൽ മറ്റേതെങ്കിലും നിശ്ചിത റോളിൽ ഒഴികെ).

reg ഒരു രജിസ്റ്ററിന്റെ പേരായിരിക്കണം. സ്വീകരിച്ച രജിസ്റ്ററിന്റെ പേരുകൾ മെഷീൻ-നിർദ്ദിഷ്ടമാണ്
കൂടാതെ മെഷീൻ വിവരണ മാക്രോ ഫയലിലെ "REGISTER_NAMES" മാക്രോയിൽ നിർവചിച്ചിരിക്കുന്നു.

ഈ ഫ്ലാഗിന് ഒരു നെഗറ്റീവ് ഫോം ഇല്ല, കാരണം ഇത് മൂന്ന്-വഴി തിരഞ്ഞെടുക്കൽ വ്യക്തമാക്കുന്നു.

-fcall-ഉപയോഗിച്ച-reg
എന്ന പേരിലുള്ള രജിസ്റ്റർ കൈകാര്യം ചെയ്യുക reg ഒരു അലോക്കബിൾ രജിസ്റ്ററായി ഫംഗ്ഷൻ പ്രകാരം ക്ലോബ്ബർ ചെയ്യുന്നു
വിളിക്കുന്നു. a-ൽ ഉടനീളം ജീവിക്കാത്ത താൽക്കാലിക അല്ലെങ്കിൽ വേരിയബിളുകൾക്കായി ഇത് അനുവദിച്ചേക്കാം
വിളി. ഈ രീതിയിൽ കംപൈൽ ചെയ്ത ഫംഗ്ഷനുകൾ രജിസ്റ്ററിനെ സേവ് ചെയ്ത് പുനഃസ്ഥാപിക്കുന്നില്ല reg.

ഫ്രെയിം പോയിന്റർ അല്ലെങ്കിൽ സ്റ്റാക്ക് പോയിന്റർ ഉപയോഗിച്ച് ഈ ഫ്ലാഗ് ഉപയോഗിക്കുന്നത് ഒരു പിശകാണ്. ഇതിന്റെ ഉപയോഗം
മെഷീന്റെ നിർവ്വഹണത്തിൽ വ്യാപകമായ റോളുകൾ നിശ്ചയിച്ചിട്ടുള്ള മറ്റ് രജിസ്റ്ററുകൾക്ക് ഫ്ലാഗ്
മോഡൽ വിനാശകരമായ ഫലങ്ങൾ നൽകുന്നു.

ഈ ഫ്ലാഗിന് ഒരു നെഗറ്റീവ് ഫോം ഇല്ല, കാരണം ഇത് മൂന്ന്-വഴി തിരഞ്ഞെടുക്കൽ വ്യക്തമാക്കുന്നു.

-fcal-save-reg
എന്ന പേരിലുള്ള രജിസ്റ്റർ കൈകാര്യം ചെയ്യുക reg ഫംഗ്‌ഷനുകൾ വഴി സംരക്ഷിച്ച ഒരു അലോക്കബിൾ രജിസ്റ്ററായി. അത് ആയിരിക്കാം
ഒരു കോളിൽ ഉടനീളം ജീവിക്കുന്ന താൽക്കാലിക അല്ലെങ്കിൽ വേരിയബിളുകൾക്കായി പോലും അനുവദിച്ചിരിക്കുന്നു. പ്രവർത്തനങ്ങൾ
ഈ രീതിയിൽ കംപൈൽ ചെയ്‌ത രജിസ്‌റ്റർ സംരക്ഷിച്ച് പുനഃസ്ഥാപിക്കുക reg അവർ അത് ഉപയോഗിക്കുകയാണെങ്കിൽ.

ഫ്രെയിം പോയിന്റർ അല്ലെങ്കിൽ സ്റ്റാക്ക് പോയിന്റർ ഉപയോഗിച്ച് ഈ ഫ്ലാഗ് ഉപയോഗിക്കുന്നത് ഒരു പിശകാണ്. ഇതിന്റെ ഉപയോഗം
മെഷീന്റെ നിർവ്വഹണത്തിൽ വ്യാപകമായ റോളുകൾ നിശ്ചയിച്ചിട്ടുള്ള മറ്റ് രജിസ്റ്ററുകൾക്ക് ഫ്ലാഗ്
മോഡൽ വിനാശകരമായ ഫലങ്ങൾ നൽകുന്നു.

ഒരു രജിസ്റ്ററിനായി ഈ ഫ്ലാഗ് ഉപയോഗിക്കുന്നതിലൂടെ വ്യത്യസ്തമായ ഒരു ദുരന്തം ഉണ്ടാകുന്നു
ഫംഗ്‌ഷൻ മൂല്യങ്ങൾ തിരികെ നൽകാം.

ഈ ഫ്ലാഗിന് ഒരു നെഗറ്റീവ് ഫോം ഇല്ല, കാരണം ഇത് മൂന്ന്-വഴി തിരഞ്ഞെടുക്കൽ വ്യക്തമാക്കുന്നു.

-fpack-struct[=n]
ഒരു മൂല്യം വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, ദ്വാരങ്ങളില്ലാതെ എല്ലാ ഘടനാ അംഗങ്ങളെയും ഒരുമിച്ച് പാക്ക് ചെയ്യുക. എപ്പോൾ എ
മൂല്യം വ്യക്തമാക്കിയിരിക്കുന്നു (ഇത് രണ്ടിന്റെ ചെറിയ പവർ ആയിരിക്കണം), പായ്ക്ക് ഘടന അംഗങ്ങൾ
ഈ മൂല്യം അനുസരിച്ച്, പരമാവധി വിന്യാസത്തെ പ്രതിനിധീകരിക്കുന്നു (അതായത്, ഉള്ള വസ്തുക്കൾ
ഇതിലും വലിയ ഡിഫോൾട്ട് അലൈൻമെന്റ് ആവശ്യകതകൾ ഔട്ട്പുട്ട് അലൈൻ ചെയ്യപ്പെടാൻ സാധ്യതയുണ്ട്
അടുത്ത അനുയോജ്യമായ സ്ഥലം.

മുന്നറിയിപ്പ്: The -fpack-struct സ്വിച്ച് ബൈനറി അല്ലാത്ത കോഡ് സൃഷ്ടിക്കാൻ ജിസിസിക്ക് കാരണമാകുന്നു
ആ സ്വിച്ച് ഇല്ലാതെ ജനറേറ്റ് ചെയ്ത കോഡുമായി പൊരുത്തപ്പെടുന്നു. കൂടാതെ, ഇത് കോഡ് ഉണ്ടാക്കുന്നു
ഉപയുക്തമായ. സ്ഥിരമല്ലാത്ത ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസുമായി പൊരുത്തപ്പെടാൻ ഇത് ഉപയോഗിക്കുക.

-ഫിൻസ്ട്രമെന്റ്-ഫംഗ്ഷനുകൾ
ഫംഗ്‌ഷനുകളിലേക്ക് പ്രവേശിക്കുന്നതിനും പുറത്തുകടക്കുന്നതിനുമുള്ള ഇൻസ്ട്രുമെന്റേഷൻ കോളുകൾ സൃഷ്‌ടിക്കുക. ചടങ്ങിന് ശേഷം മാത്രം
എൻട്രിയും ഫംഗ്‌ഷൻ എക്‌സിറ്റിന് തൊട്ടുമുമ്പ്, ഇനിപ്പറയുന്ന പ്രൊഫൈലിംഗ് ഫംഗ്‌ഷനുകൾ ഉപയോഗിച്ച് വിളിക്കുന്നു
നിലവിലെ ഫംഗ്‌ഷന്റെ വിലാസവും അതിന്റെ കോൾ സൈറ്റും. (ചില പ്ലാറ്റ്‌ഫോമുകളിൽ,
"__builtin_return_address" നിലവിലെ പ്രവർത്തനത്തിനപ്പുറം പ്രവർത്തിക്കുന്നില്ല, അതിനാൽ കോൾ സൈറ്റ്
അല്ലാത്തപക്ഷം പ്രൊഫൈലിംഗ് ഫംഗ്‌ഷനുകൾക്ക് വിവരങ്ങൾ ലഭ്യമായേക്കില്ല.)

void __cyg_profile_func_enter (void *this_fn,
അസാധുവായ *കോൾ_സൈറ്റ്);
void __cyg_profile_func_exit (void *this_fn,
അസാധുവായ *കോൾ_സൈറ്റ്);

ആദ്യത്തെ ആർഗ്യുമെന്റ് നിലവിലെ ഫംഗ്ഷന്റെ ആരംഭത്തിന്റെ വിലാസമാണ്, അത് ആയിരിക്കാം
ചിഹ്ന പട്ടികയിൽ കൃത്യമായി നോക്കി.

മറ്റ് ഫംഗ്‌ഷനുകളിൽ ഇൻലൈനിൽ വിപുലീകരിച്ച ഫംഗ്‌ഷനുകൾക്കും ഈ ഇൻസ്‌ട്രുമെന്റേഷൻ ചെയ്‌തിരിക്കുന്നു.
ആശയപരമായി, ഇൻലൈൻ ഫംഗ്‌ഷൻ എവിടെയാണ് നൽകിയതെന്ന് പ്രൊഫൈലിംഗ് കോളുകൾ സൂചിപ്പിക്കുന്നു
പുറത്തുകടന്നു. അത്തരം ഫംഗ്‌ഷനുകളുടെ അഡ്രസ് ചെയ്യാവുന്ന പതിപ്പുകൾ ഉണ്ടായിരിക്കണം എന്നാണ് ഇതിനർത്ഥം. എങ്കിൽ
ഒരു ഫംഗ്‌ഷന്റെ നിങ്ങളുടെ എല്ലാ ഉപയോഗങ്ങളും ഇൻലൈനിൽ വികസിപ്പിച്ചിരിക്കുന്നു, ഇത് ഒരു അധിക വിപുലീകരണത്തെ അർത്ഥമാക്കാം
കോഡ് വലിപ്പം. നിങ്ങളുടെ സി കോഡിൽ "എക്‌സ്‌റ്റേൺ ഇൻലൈൻ" ഉപയോഗിക്കുകയാണെങ്കിൽ, വിലാസം നൽകാവുന്ന പതിപ്പ്
അത്തരം പ്രവർത്തനങ്ങൾ നൽകണം. (എന്തായാലും ഇത് സാധാരണമാണ്, പക്ഷേ നിങ്ങൾക്ക് ലഭിക്കുകയാണെങ്കിൽ
ഭാഗ്യം, ഒപ്റ്റിമൈസർ എല്ലായ്‌പ്പോഴും ഇൻലൈനിൽ ഫംഗ്‌ഷനുകൾ വിപുലീകരിക്കുന്നു, നിങ്ങൾക്ക് ലഭിച്ചിരിക്കാം
സ്റ്റാറ്റിക് കോപ്പികൾ നൽകാതെ അകലെ.)

ഒരു ഫംഗ്‌ഷന് "no_instrument_function" എന്ന ആട്രിബ്യൂട്ട് നൽകിയേക്കാം, ഈ സാഹചര്യത്തിൽ ഇത്
ഇൻസ്ട്രുമെന്റേഷൻ പൂർത്തിയായിട്ടില്ല. ഉദാഹരണത്തിന്, പ്രൊഫൈലിംഗിനായി ഇത് ഉപയോഗിക്കാം
മുകളിൽ ലിസ്‌റ്റ് ചെയ്‌തിരിക്കുന്ന ഫംഗ്‌ഷനുകൾ, ഉയർന്ന മുൻ‌ഗണനയുള്ള തടസ്സപ്പെടുത്തൽ ദിനചര്യകൾ, അവയിൽ നിന്നുള്ള ഏതെങ്കിലും ഫംഗ്‌ഷനുകൾ
പ്രൊഫൈലിംഗ് ഫംഗ്‌ഷനുകളെ സുരക്ഷിതമായി വിളിക്കാൻ കഴിയില്ല (ഒരുപക്ഷേ സിഗ്നൽ ഹാൻഡ്‌ലറുകൾ, എങ്കിൽ
പ്രൊഫൈലിംഗ് ദിനചര്യകൾ ഔട്ട്പുട്ട് ഉണ്ടാക്കുകയോ മെമ്മറി അനുവദിക്കുകയോ ചെയ്യുന്നു).

-finstrument-functions-exclude-file-list=ഫയല്,ഫയല്...
ഇൻസ്ട്രുമെന്റേഷനിൽ നിന്ന് ഒഴിവാക്കിയ പ്രവർത്തനങ്ങളുടെ ലിസ്റ്റ് സജ്ജമാക്കുക (വിവരണം കാണുക
of -ഫിൻസ്ട്രമെന്റ്-ഫംഗ്ഷനുകൾ). ഒരു ഫംഗ്‌ഷൻ ഡെഫനിഷൻ അടങ്ങുന്ന ഫയൽ പൊരുത്തപ്പെടുന്നുവെങ്കിൽ
ഒന്നിനൊപ്പം ഫയല്, അപ്പോൾ ആ പ്രവർത്തനം ഉപകരണമല്ല. മത്സരം പൂർത്തിയായി
substrings: എങ്കിൽ ഫയല് പരാമീറ്റർ എന്നത് ഫയലിന്റെ പേരിന്റെ ഒരു ഉപസ്‌ട്രിംഗാണ്, അത് പരിഗണിക്കപ്പെടുന്നു
ഒരു പൊരുത്തം ആകുക.

ഉദാഹരണത്തിന്:

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

പാത്ത്‌നാമങ്ങൾ അടങ്ങിയ ഫയലുകളിൽ നിർവചിച്ചിരിക്കുന്ന ഏതെങ്കിലും ഇൻലൈൻ ഫംഗ്‌ഷൻ ഒഴിവാക്കുന്നു /bits/stl or
ഉൾപ്പെടുന്നു/sys.

ചില കാരണങ്ങളാൽ, നിങ്ങൾ കത്ത് ഉൾപ്പെടുത്താൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ , ഒരെണ്ണത്തിൽ സിം, എഴുതുക ,. ഉദാഹരണത്തിന്,
-finstrument-functions-exclude-file-list=',,tmp' (ചുറ്റുമുള്ള ഒറ്റ ഉദ്ധരണി ശ്രദ്ധിക്കുക
ഓപ്ഷൻ).

-finstrument-functions-exclude-function-list=സിം,സിം...
ഇത് സമാനമാണ് -finstrument-functions-exclude-file-list, എന്നാൽ ഈ ഓപ്ഷൻ സജ്ജമാക്കുന്നു
ഇൻസ്ട്രുമെന്റേഷനിൽ നിന്ന് ഒഴിവാക്കേണ്ട ഫംഗ്‌ഷൻ പേരുകളുടെ ലിസ്റ്റ്. ഫംഗ്‌ഷന്റെ പേര്
"വെക്റ്റർ" പോലെയുള്ള ഉപയോക്താക്കൾക്ക് കാണാവുന്ന പേരുമായി പൊരുത്തപ്പെടുന്നു ബ്ലാ(കോൺസ്റ്റ് വെക്റ്റർ &)", അല്ല
ആന്തരിക മംഗൾഡ് പേര് (ഉദാ, "_Z4blahRSt6vectorIiSaIiEE"). മത്സരം പൂർത്തിയായി
substrings: എങ്കിൽ സിം പാരാമീറ്റർ എന്നത് ഫംഗ്‌ഷൻ നാമത്തിന്റെ ഒരു ഉപസ്‌ട്രിംഗാണ്, അത് പരിഗണിക്കപ്പെടുന്നു
ഒരു പൊരുത്തം. C99, C++ വിപുലീകൃത ഐഡന്റിഫയറുകൾക്ക്, ഫംഗ്‌ഷൻ നാമം നൽകണം
UTF-8-ൽ, സാർവത്രിക പ്രതീക നാമങ്ങൾ ഉപയോഗിക്കുന്നില്ല.

-fstack-ചെക്ക്
നിങ്ങൾ സ്റ്റാക്കിന്റെ അതിർത്തിക്കപ്പുറത്തേക്ക് പോകുന്നില്ലെന്ന് സ്ഥിരീകരിക്കാൻ കോഡ് സൃഷ്ടിക്കുക. നിങ്ങൾ
ഒന്നിലധികം ത്രെഡുകളുള്ള ഒരു പരിതസ്ഥിതിയിലാണ് നിങ്ങൾ പ്രവർത്തിക്കുന്നതെങ്കിൽ ഈ ഫ്ലാഗ് വ്യക്തമാക്കണം,
എന്നാൽ സ്റ്റാക്ക് മുതൽ ഒറ്റ-ത്രെഡുള്ള പരിതസ്ഥിതിയിൽ നിങ്ങൾ അത് അപൂർവ്വമായി മാത്രമേ വ്യക്തമാക്കേണ്ടതുള്ളൂ
ഒരു സ്റ്റാക്ക് മാത്രമാണെങ്കിൽ മിക്കവാറും എല്ലാ സിസ്റ്റങ്ങളിലും ഓവർഫ്ലോ സ്വയമേവ കണ്ടെത്തും.

ഈ സ്വിച്ച് യഥാർത്ഥത്തിൽ പരിശോധന നടത്താൻ കാരണമാകുന്നില്ലെന്ന് ശ്രദ്ധിക്കുക; പ്രവർത്തനം
സിസ്റ്റം അല്ലെങ്കിൽ ഭാഷ റൺടൈം അത് ചെയ്യണം. സ്വിച്ച് കോഡ് സൃഷ്ടിക്കുന്നതിന് കാരണമാകുന്നു
സ്റ്റാക്ക് വിപുലീകരിക്കുന്നത് അവർ കാണുന്നുവെന്ന് ഉറപ്പാക്കുക.

നിങ്ങൾക്ക് അധികമായി ഒരു സ്ട്രിംഗ് പാരാമീറ്റർ വ്യക്തമാക്കാൻ കഴിയും: ഇല്ല പരിശോധന ഇല്ല എന്നർത്ഥം ജനറിക് അർത്ഥം
പഴയ രീതിയിലുള്ള പരിശോധന നിർബന്ധമാക്കുക, പ്രത്യേക അതിനർത്ഥം ഏറ്റവും മികച്ച പരിശോധന രീതി ഉപയോഗിക്കുക എന്നാണ്
നഗ്നമായതിന് തുല്യമാണ് -fstack-ചെക്ക്.

പ്രത്യേക ലക്ഷ്യ പിന്തുണ ആവശ്യമില്ലാത്ത ഒരു പൊതു സംവിധാനമാണ് പഴയ രീതിയിലുള്ള പരിശോധന
കംപൈലർ എന്നാൽ ഇനിപ്പറയുന്ന പോരായ്മകളോടെയാണ് വരുന്നത്:

1. വലിയ ഒബ്‌ജക്‌റ്റുകൾക്കായുള്ള പരിഷ്‌ക്കരിച്ച അലോക്കേഷൻ തന്ത്രം: അവ എല്ലായ്പ്പോഴും അനുവദിച്ചിരിക്കുന്നു
അവയുടെ വലുപ്പം ഒരു നിശ്ചിത പരിധി കവിയുന്നുവെങ്കിൽ ചലനാത്മകമായി.

2. ഫംഗ്‌ഷനുകളുടെ സ്റ്റാറ്റിക് ഫ്രെയിമിന്റെ വലുപ്പത്തിലുള്ള നിശ്ചിത പരിധി: അതിന് മുകളിൽ എപ്പോൾ
പ്രത്യേക ഫംഗ്‌ഷൻ, സ്റ്റാക്ക് ചെക്കിംഗ് വിശ്വസനീയമല്ല കൂടാതെ ഒരു മുന്നറിയിപ്പ് നൽകിയിട്ടുണ്ട്
കംപൈലർ.

3. കാര്യക്ഷമതയില്ലായ്‌മ: പരിഷ്‌ക്കരിച്ച അലോക്കേഷൻ തന്ത്രവും ജനറിക്‌സും കാരണം
നടപ്പിലാക്കൽ, കോഡ് പ്രകടനം തടസ്സപ്പെട്ടു.

പഴയ രീതിയിലുള്ള സ്റ്റാക്ക് പരിശോധനയും ഫാൾബാക്ക് രീതിയാണെന്ന കാര്യം ശ്രദ്ധിക്കുക പ്രത്യേക അല്ലെങ്കിൽ
കംപൈലറിൽ ടാർഗെറ്റ് പിന്തുണ ചേർത്തിട്ടുണ്ട്.

-fstack-limit-register=reg
-fstack-limit-symbol=സിം
-fno-stack-limit
സ്റ്റാക്ക് ഒരു നിശ്ചിത മൂല്യത്തിനപ്പുറം വളരുന്നില്ലെന്ന് ഉറപ്പാക്കാൻ കോഡ് സൃഷ്ടിക്കുക
ഒരു രജിസ്റ്ററിന്റെ മൂല്യം അല്ലെങ്കിൽ ഒരു ചിഹ്നത്തിന്റെ വിലാസം. ഒരു വലിയ ശേഖരം ആവശ്യമാണെങ്കിൽ, എ
റൺ ടൈമിൽ സിഗ്നൽ ഉയർത്തുന്നു. മിക്ക ടാർഗെറ്റുകൾക്കും, സ്റ്റാക്കിന് മുമ്പായി സിഗ്നൽ ഉയർത്തുന്നു
അതിർത്തി മറികടക്കുന്നു, അതിനാൽ പ്രത്യേകം എടുക്കാതെ തന്നെ സിഗ്നൽ പിടിക്കാൻ സാധിക്കും
മുൻകരുതലുകൾ.

ഉദാഹരണത്തിന്, സമ്പൂർണ്ണ വിലാസത്തിലാണ് സ്റ്റാക്ക് ആരംഭിക്കുന്നതെങ്കിൽ 0x80000000 താഴേക്ക് വളരുന്നു,
നിങ്ങൾക്ക് പതാകകൾ ഉപയോഗിക്കാം -fstack-limit-symbol=__stack_limit ഒപ്പം
-Wl,--defsym,__stack_limit=0x7ffe0000 ഒരു സ്റ്റാക്ക് പരിധി 128KB നടപ്പിലാക്കാൻ. അതല്ല
ഇത് ഗ്നു ലിങ്കറിൽ മാത്രമേ പ്രവർത്തിക്കൂ.

-fsplit-stack
സ്റ്റോക്ക് കവിഞ്ഞൊഴുകുന്നതിന് മുമ്പ് അത് സ്വയമേവ വിഭജിക്കാൻ കോഡ് സൃഷ്ടിക്കുക. ഫലമായി
പ്രോഗ്രാമിന് വ്യതിചലിക്കാത്ത ഒരു സ്റ്റാക്ക് ഉണ്ട്, അത് പ്രോഗ്രാമിന് കഴിയുന്നില്ലെങ്കിൽ മാത്രം ഒഴുകും
കൂടുതൽ മെമ്മറി അനുവദിക്കുക. ത്രെഡ് ചെയ്ത പ്രോഗ്രാമുകൾ പ്രവർത്തിപ്പിക്കുമ്പോൾ ഇത് ഏറ്റവും ഉപയോഗപ്രദമാണ്
ഓരോ ത്രെഡിനും ഉപയോഗിക്കുന്നതിന് ഒരു നല്ല സ്റ്റാക്ക് വലുപ്പം കണക്കാക്കാൻ ഇനി ആവശ്യമില്ല. ഇതാണ്
നിലവിൽ GNU/Linux പ്രവർത്തിക്കുന്ന x86 ടാർഗെറ്റുകൾക്കായി മാത്രം നടപ്പിലാക്കുന്നു.

ഉപയോഗിച്ച് കോഡ് സമാഹരിച്ചപ്പോൾ -fsplit-stack കോൾ കോഡ് ഇല്ലാതെ സമാഹരിച്ചിരിക്കുന്നു -fsplit-stack, അവിടെ
പിന്നീടുള്ള കോഡ് പ്രവർത്തിപ്പിക്കുന്നതിന് കൂടുതൽ സ്റ്റാക്ക് സ്പേസ് ലഭ്യമായേക്കില്ല. എല്ലാം കംപൈൽ ചെയ്യുകയാണെങ്കിൽ
ലൈബ്രറി കോഡ് ഉൾപ്പെടെയുള്ള കോഡ് -fsplit-stack എന്നത് ഒരു ഓപ്ഷനല്ല, അപ്പോൾ ലിങ്കർക്ക് കഴിയും
ഈ കോളുകൾ ശരിയാക്കുക, അങ്ങനെ കോഡ് ഇല്ലാതെ സമാഹരിച്ചിരിക്കുന്നു -fsplit-stack എപ്പോഴും ഒരു വലിയ ഉണ്ട്
സ്റ്റാക്ക്. ഗ്നു ബിന്യൂട്ടിൽസ് റിലീസിലെ ഗോൾഡ് ലിങ്കറിൽ ഇതിനുള്ള പിന്തുണ നടപ്പിലാക്കുന്നു
2.21 ലും അതിനുശേഷവും.

-ഫ്ലീഡിംഗ്-അണ്ടർസ്കോർ
ഈ ഓപ്ഷനും അതിന്റെ എതിരാളിയും, -fno-leading-underscore, ബലമായി സി വഴി മാറ്റുക
ഒബ്‌ജക്റ്റ് ഫയലിൽ ചിഹ്നങ്ങൾ പ്രതിനിധീകരിക്കുന്നു. ലെഗസിയുമായി ബന്ധിപ്പിക്കാൻ സഹായിക്കുക എന്നതാണ് ഒരു ഉപയോഗം
അസംബ്ലി കോഡ്.

മുന്നറിയിപ്പ്: The -ഫ്ലീഡിംഗ്-അണ്ടർസ്കോർ സ്വിച്ച് GCC അല്ലാത്ത കോഡ് സൃഷ്ടിക്കുന്നതിന് കാരണമാകുന്നു
ആ സ്വിച്ച് ഇല്ലാതെ ജനറേറ്റ് ചെയ്ത കോഡുമായി ബൈനറി പൊരുത്തപ്പെടുന്നു. a യുമായി പൊരുത്തപ്പെടാൻ ഇത് ഉപയോഗിക്കുക
സ്ഥിരമല്ലാത്ത ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസ്. എല്ലാ ലക്ഷ്യങ്ങളും പൂർണ്ണ പിന്തുണ നൽകുന്നില്ല
ഈ സ്വിച്ചിനായി.

-ftls-model=മാതൃക
ഉപയോഗിക്കേണ്ട ത്രെഡ്-ലോക്കൽ സ്റ്റോറേജ് മോഡൽ മാറ്റുക. ദി മാതൃക വാദം അതിലൊന്നായിരിക്കണം
ആഗോള-ചലനാത്മകമായ, പ്രാദേശിക-ചലനാത്മകമായ, പ്രാരംഭ-നിർവഹണം or ലോക്കൽ എക്സി. തിരഞ്ഞെടുക്കലാണ് എന്നത് ശ്രദ്ധിക്കുക
ഒപ്റ്റിമൈസേഷന് വിധേയമായി: കംപൈലർ ചിഹ്നങ്ങൾ അല്ല എന്നതിന് കൂടുതൽ കാര്യക്ഷമമായ മോഡൽ ഉപയോഗിച്ചേക്കാം
വിവർത്തന യൂണിറ്റിന് പുറത്ത് ദൃശ്യം, അല്ലെങ്കിൽ എങ്കിൽ -fpic കമാൻഡ് ലൈനിൽ നൽകിയിട്ടില്ല.

ഇല്ലാത്ത സ്ഥിരസ്ഥിതി -fpic is പ്രാരംഭ-നിർവഹണം; കൂടെ -fpic സ്ഥിരസ്ഥിതിയാണ് ആഗോള-ചലനാത്മകമായ.

-fvisibility=[സ്ഥിരസ്ഥിതി|ആന്തരിക|മറച്ചു|സംരക്ഷിച്ചിരിക്കുന്നു]
ഡിഫോൾട്ട് ELF ഇമേജ് ചിഹ്ന ദൃശ്യപരത നിർദ്ദിഷ്ട ഓപ്ഷനിലേക്ക് സജ്ജമാക്കുക---എല്ലാ ചിഹ്നങ്ങളും
കോഡിനുള്ളിൽ അസാധുവാക്കാത്ത പക്ഷം ഇത് അടയാളപ്പെടുത്തി. ഈ സവിശേഷത ഉപയോഗിച്ച് വളരെ കഴിയും
പങ്കിട്ട ഒബ്‌ജക്റ്റ് ലൈബ്രറികളുടെ ലിങ്കിംഗും ലോഡ് സമയവും ഗണ്യമായി മെച്ചപ്പെടുത്തുക, കൂടുതൽ നിർമ്മിക്കുക
ഒപ്റ്റിമൈസ് ചെയ്ത കോഡ്, തികഞ്ഞ API കയറ്റുമതി നൽകുകയും ചിഹ്ന ഏറ്റുമുട്ടലുകൾ തടയുകയും ചെയ്യുക. അത്
ശക്തമായി നിങ്ങൾ വിതരണം ചെയ്യുന്ന എല്ലാ പങ്കിട്ട ഒബ്‌ജക്റ്റുകളിലും ഇത് ഉപയോഗിക്കാൻ ശുപാർശ ചെയ്യുന്നു.

നാമകരണം ഉണ്ടായിരുന്നിട്ടും, സ്ഥിരസ്ഥിതി എപ്പോഴും പൊതുവായി അർത്ഥമാക്കുന്നത്; അതായത്, ലിങ്ക് ചെയ്യാൻ ലഭ്യമാണ്
പങ്കിട്ട വസ്തുവിന് പുറത്ത് നിന്ന്. സംരക്ഷിച്ചിരിക്കുന്നു ഒപ്പം ആന്തരിക വളരെ ഉപയോഗശൂന്യമാണ്
യഥാർത്ഥ ലോക ഉപയോഗം, അതിനാൽ സാധാരണയായി ഉപയോഗിക്കുന്ന മറ്റ് ഓപ്ഷൻ ഇതാണ് മറച്ചു. എങ്കിൽ സ്ഥിരസ്ഥിതി
- fvisibility എന്ന് വ്യക്തമാക്കിയിട്ടില്ല സ്ഥിരസ്ഥിതി, അതായത്, എല്ലാ ചിഹ്നങ്ങളും പരസ്യമാക്കുക.

ELF ചിഹ്നങ്ങൾ ശരിയാണെന്ന് ഉറപ്പുവരുത്തുന്നതിലൂടെ നൽകുന്ന ആനുകൂല്യങ്ങളുടെ നല്ല വിശദീകരണം
അൾറിച്ച് ഡ്രെപ്പർ എഴുതിയ "പങ്കിട്ട ലൈബ്രറികൾ എങ്ങനെ എഴുതാം" എന്നത് ദൃശ്യപരത നൽകുന്നു (അത് ആകാം
ൽ കണ്ടെത്തിhttp://www.akkadia.org/drepper/>)---എന്നിരുന്നാലും ഒരു മികച്ച പരിഹാരം ഉണ്ടാക്കി
ഡിഫോൾട്ട് പൊതുവായതായിരിക്കുമ്പോൾ മറഞ്ഞിരിക്കുന്ന കാര്യങ്ങൾ അടയാളപ്പെടുത്തുന്നതിന് ഈ ഓപ്ഷൻ വഴി സാധ്യമാണ്
ഡിഫോൾട്ട് മറയ്ക്കുകയും കാര്യങ്ങൾ പൊതുവായി അടയാളപ്പെടുത്തുകയും ചെയ്യുക. വിൻഡോസിലും DLL-കളിലും ഇത് സാധാരണമാണ്
കൂടെ -fvisibility=മറഞ്ഞിരിക്കുന്നു കൂടാതെ "__attribute__ ((ദൃശ്യത("സ്ഥിര"")))" എന്നതിന് പകരം
"__declspec(dllexport)" നിങ്ങൾക്ക് സമാനമായ വാക്യഘടനയുള്ള ഏതാണ്ട് സമാനമായ സെമാന്റിക്സ് ലഭിക്കും.
ക്രോസ്-പ്ലാറ്റ്ഫോം പ്രോജക്ടുകളിൽ പ്രവർത്തിക്കുന്നവർക്ക് ഇത് വലിയ അനുഗ്രഹമാണ്.

നിലവിലുള്ള കോഡിലേക്ക് ദൃശ്യപരത പിന്തുണ ചേർക്കുന്നവർക്ക്, നിങ്ങൾക്ക് "#pragma GCC" കണ്ടെത്താം
ഉപയോഗത്തിന്റെ ദൃശ്യപരത. നിങ്ങൾ സജ്ജമാക്കാൻ ആഗ്രഹിക്കുന്ന ഡിക്ലറേഷനുകൾ ഉൾപ്പെടുത്തിക്കൊണ്ട് ഇത് പ്രവർത്തിക്കുന്നു
"#പ്രാഗ്മ ജിസിസി വിസിബിലിറ്റി പുഷ് (മറച്ചത്)", "#പ്രാഗ്മ എന്നിവയ്‌ക്കൊപ്പം (ഉദാഹരണത്തിന്) ദൃശ്യപരത
GCC ദൃശ്യപരത പോപ്പ്". ചിഹ്ന ദൃശ്യപരത കാണണമെന്ന് ഓർമ്മിക്കുക as ഭാഗം of
The എപിഐ ഇന്റർഫേസ് കരാർ അതിനാൽ എല്ലാ പുതിയ കോഡുകളും എപ്പോൾ ദൃശ്യപരത വ്യക്തമാക്കണം
അത് സ്ഥിരസ്ഥിതിയല്ല; അതായത്, പ്രാദേശിക ഡിഎസ്ഒയ്ക്കുള്ളിൽ മാത്രം ഉപയോഗിക്കാനുള്ള പ്രഖ്യാപനങ്ങൾ
എല്ലായിപ്പോഴും PLT പരോക്ഷം ഒഴിവാക്കാൻ മറച്ചിരിക്കുന്നതായി വ്യക്തമായി അടയാളപ്പെടുത്തുക
ഓവർഹെഡുകൾ --- ഇത് ധാരാളമായി വ്യക്തമാക്കുന്നത് വായനാക്ഷമതയും സ്വയം-രേഖപ്പെടുത്തലും സഹായിക്കുന്നു
കോഡിന്റെ. ISO C++ സ്പെസിഫിക്കേഷൻ ആവശ്യകതകൾ കാരണം, "ഓപ്പറേറ്റർ പുതിയത്" ഒപ്പം
"ഓപ്പറേറ്റർ ഡിലീറ്റ്" എപ്പോഴും ഡിഫോൾട്ട് ദൃശ്യപരത ആയിരിക്കണം.

നിങ്ങളുടെ പ്രോജക്‌റ്റിന് പുറത്തുള്ള തലക്കെട്ടുകൾ, പ്രത്യേകിച്ച് സിസ്റ്റം തലക്കെട്ടുകൾ എന്നിവയും
നിങ്ങൾ ഉപയോഗിക്കുന്ന മറ്റേതെങ്കിലും ലൈബ്രറിയിൽ നിന്നുള്ള തലക്കെട്ടുകൾ സമാഹരിക്കപ്പെടുമെന്ന് പ്രതീക്ഷിക്കുന്നില്ലായിരിക്കാം
സ്ഥിരസ്ഥിതി ഒഴികെയുള്ള ദൃശ്യപരത. നിങ്ങൾ "#പ്രാഗ്മ ജിസിസി" എന്ന് വ്യക്തമായി പറയേണ്ടി വന്നേക്കാം
അത്തരം തലക്കെട്ടുകൾ ഉൾപ്പെടുത്തുന്നതിന് മുമ്പ് ദൃശ്യപരത പുഷ് (സ്ഥിരസ്ഥിതി)".

"ബാഹ്യ" പ്രഖ്യാപനങ്ങളെ ബാധിക്കില്ല - fvisibility, അതിനാൽ ധാരാളം കോഡുകൾ ആകാം
ഉപയോഗിച്ച് വീണ്ടും സമാഹരിച്ചു -fvisibility=മറഞ്ഞിരിക്കുന്നു മാറ്റങ്ങളൊന്നുമില്ലാതെ. എന്നിരുന്നാലും, ഇത് അർത്ഥമാക്കുന്നത്
വ്യക്തമായ ദൃശ്യപരതയില്ലാത്ത "ബാഹ്യ" ഫംഗ്‌ഷനുകളിലേക്കുള്ള കോളുകൾ PLT ഉപയോഗിക്കുന്നു, അതിനാൽ ഇത് കൂടുതലാണ്
പറയാൻ "__attribute ((ദൃശ്യത))" കൂടാതെ/അല്ലെങ്കിൽ "#pragma GCC ദൃശ്യപരത" ഉപയോഗിക്കാൻ ഫലപ്രദമാണ്
"ബാഹ്യ" പ്രഖ്യാപനങ്ങൾ മറഞ്ഞിരിക്കുന്നതായി കണക്കാക്കേണ്ട കംപൈലർ.

അതല്ല - fvisibility C++ അവ്യക്തമായ ലിങ്കേജ് എന്റിറ്റികളെ ബാധിക്കുന്നു. ഇതിനർത്ഥം, അതിനർത്ഥം
ഉദാഹരണത്തിന്, DSO-കൾക്കിടയിൽ ഇടുന്ന ഒരു അപവാദ ക്ലാസ് വ്യക്തമായി അടയാളപ്പെടുത്തിയിരിക്കണം
ഡിഫോൾട്ട് ദൃശ്യപരതയോടെ അങ്ങനെ type_info നോഡുകൾ ഡിഎസ്ഒകൾക്കിടയിൽ ഏകീകൃതമാണ്.

ഈ സാങ്കേതിക വിദ്യകളെക്കുറിച്ചും അവയുടെ പ്രയോജനങ്ങളെക്കുറിച്ചും അവ എങ്ങനെ ഉപയോഗിക്കാമെന്നതിനെക്കുറിച്ചും ഉള്ള ഒരു അവലോകനം ഇവിടെയുണ്ട്
<http://gcc.gnu.org/wiki/Visibility>.

-fstrict-volatile-bitfields
അസ്ഥിരമായ ബിറ്റ്-ഫീൽഡുകളിലേക്ക് (അല്ലെങ്കിൽ മറ്റ് ഘടനകളിലേക്ക്) പ്രവേശനമുണ്ടെങ്കിൽ ഈ ഓപ്ഷൻ ഉപയോഗിക്കേണ്ടതാണ്
ഫീൽഡുകൾ, കംപൈലർ സാധാരണയായി ആ തരങ്ങളെ ബഹുമാനിക്കുന്നുണ്ടെങ്കിലും) ഒരൊറ്റ ഉപയോഗിക്കണം
സാധ്യമെങ്കിൽ സ്വാഭാവിക വിന്യാസത്തിലേക്ക് വിന്യസിച്ചിരിക്കുന്ന ഫീൽഡിന്റെ തരത്തിന്റെ വീതിയുടെ പ്രവേശനം.
ഉദാഹരണത്തിന്, മെമ്മറി-മാപ്പ് ചെയ്ത പെരിഫറൽ രജിസ്റ്ററുകളുള്ള ടാർഗെറ്റുകൾക്ക് അത്തരത്തിലുള്ളവ ആവശ്യമായി വന്നേക്കാം
16 ബിറ്റ് വീതിയുള്ള ആക്‌സസ്; ഈ ഫ്ലാഗ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് എല്ലാ പെരിഫറൽ ബിറ്റ്-ഫീൽഡുകളും പ്രഖ്യാപിക്കാൻ കഴിയും
"അൺസൈഡ് ഷോർട്ട്" ആയി (ഈ ടാർഗെറ്റുകളിൽ 16 ബിറ്റുകളാണ് ഹ്രസ്വമെന്ന് കരുതുക) GCC ഉപയോഗിക്കാൻ നിർബന്ധിക്കുന്നതിന്
ഒരുപക്ഷേ, കൂടുതൽ കാര്യക്ഷമമായ 16-ബിറ്റ് ആക്‌സസിന് പകരം 32-ബിറ്റ് ആക്‌സസ്സ്.

ഈ ഓപ്ഷൻ അപ്രാപ്തമാക്കിയാൽ, കംപൈലർ ഏറ്റവും കാര്യക്ഷമമായ നിർദ്ദേശം ഉപയോഗിക്കുന്നു. ൽ
മുമ്പത്തെ ഉദാഹരണം, അത് ആക്‌സസ് ചെയ്‌താലും, അത് 32-ബിറ്റ് ലോഡ് നിർദ്ദേശമായിരിക്കാം
ബിറ്റ്-ഫീൽഡിന്റെ ഒരു ഭാഗവും അല്ലെങ്കിൽ മെമ്മറി-മാപ്പ് ചെയ്ത രജിസ്റ്ററുകളും അടങ്ങാത്ത ബൈറ്റുകൾ
അപ്ഡേറ്റ് ചെയ്യുന്നതുമായി ബന്ധമില്ലാത്തത്.

ചില സന്ദർഭങ്ങളിൽ, "പാക്ക്" ആട്രിബ്യൂട്ട് ഒരു ഘടനാ ഫീൽഡിൽ പ്രയോഗിക്കുമ്പോൾ, അത്
ശരിയായ ഒരു വായനയോ എഴുത്തോ ഉപയോഗിച്ച് ഫീൽഡ് ആക്സസ് ചെയ്യാൻ കഴിഞ്ഞേക്കില്ല
ടാർഗെറ്റ് മെഷീനായി വിന്യസിച്ചു. ഈ സാഹചര്യത്തിൽ GCC ഒന്നിലധികം സൃഷ്ടിക്കുന്നതിലേക്ക് മടങ്ങുന്നു
റൺ ടൈമിൽ ഫലത്തെ തകരാറിലാക്കുന്നതോ വെട്ടിച്ചുരുക്കുന്നതോ ആയ കോഡിന് പകരം ആക്‌സസ്സ്.

ശ്രദ്ധിക്കുക: C/C++11 മെമ്മറി മോഡലിന്റെ നിയന്ത്രണങ്ങൾ കാരണം, റൈറ്റ് ആക്‌സസ് അനുവദനീയമല്ല
ബിറ്റ്-ഫീൽഡ് അല്ലാത്ത അംഗങ്ങളെ സ്പർശിക്കാൻ. അതിനാൽ എല്ലാ ബിറ്റുകളും നിർവചിക്കാൻ ശുപാർശ ചെയ്യുന്നു
ബിറ്റ്-ഫീൽഡ് അംഗങ്ങളായി ഫീൽഡിന്റെ തരം.

ഈ ഓപ്ഷന്റെ ഡിഫോൾട്ട് മൂല്യം നിർണ്ണയിക്കുന്നത് ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസാണ്
ടാർഗെറ്റ് പ്രോസസർ.

-fsync-libcalls
"__sync" കുടുംബത്തിന്റെ ഏതെങ്കിലും ഔട്ട്-ലൈൻ ഇൻസ്‌റ്റൻസ് ആണോ എന്ന് ഈ ഓപ്‌ഷൻ നിയന്ത്രിക്കുന്നു
C++11 "__atomic" ഫാമിലി ഫംഗ്‌ഷനുകൾ നടപ്പിലാക്കാൻ ഫംഗ്‌ഷനുകൾ ഉപയോഗിക്കാം.

ഈ ഓപ്ഷന്റെ ഡിഫോൾട്ട് മൂല്യം പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു, അതിനാൽ ഓപ്‌ഷന്റെ ഒരേയൊരു ഉപയോഗപ്രദമായ ഫോം
is -fno-sync-libcalls. ഈ ഓപ്ഷൻ നടപ്പിലാക്കുന്നതിൽ ഉപയോഗിക്കുന്നു ലിബാറ്റോമിക്
റൺടൈം ലൈബ്രറി.

ENVIRONMENT


GCC എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിനെ ബാധിക്കുന്ന നിരവധി പരിസ്ഥിതി വേരിയബിളുകൾ ഈ വിഭാഗം വിവരിക്കുന്നു. ചിലത്
വിവിധ തരങ്ങൾക്കായി തിരയുമ്പോൾ ഉപയോഗിക്കേണ്ട ഡയറക്‌ടറികളോ പ്രിഫിക്‌സുകളോ വ്യക്തമാക്കിക്കൊണ്ടാണ് അവയിൽ പ്രവർത്തിക്കുന്നത്
ഫയലുകളുടെ. സമാഹാര പരിസ്ഥിതിയുടെ മറ്റ് വശങ്ങൾ വ്യക്തമാക്കാൻ ചിലത് ഉപയോഗിക്കുന്നു.

പോലുള്ള ഓപ്ഷനുകൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് തിരയാനുള്ള സ്ഥലങ്ങളും വ്യക്തമാക്കാനാകുമെന്നത് ശ്രദ്ധിക്കുക -B, -I ഒപ്പം -L.
എൻവയോൺമെന്റ് വേരിയബിളുകൾ ഉപയോഗിച്ച് വ്യക്തമാക്കിയ സ്ഥലങ്ങളെ അപേക്ഷിച്ച് ഇവയ്ക്ക് മുൻഗണന ലഭിക്കുന്നു
GCC യുടെ കോൺഫിഗറേഷൻ വ്യക്തമാക്കുന്നവയെക്കാൾ മുൻഗണന നൽകുക.

ലാംഗ്
LC_CTYPE
LC_MESSAGES
LC_ALL
ഈ പരിസ്ഥിതി വേരിയബിളുകൾ GCC പ്രാദേശികവൽക്കരണ വിവരങ്ങൾ ഉപയോഗിക്കുന്ന രീതിയെ നിയന്ത്രിക്കുന്നു
ഇത് വ്യത്യസ്ത ദേശീയ കൺവെൻഷനുകൾക്കൊപ്പം പ്രവർത്തിക്കാൻ ജിസിസിയെ അനുവദിക്കുന്നു. ജിസിസി ലോക്കൽ പരിശോധിക്കുന്നു
വിഭാഗങ്ങൾ LC_CTYPE ഒപ്പം LC_MESSAGES അങ്ങനെ ചെയ്യാൻ ക്രമീകരിച്ചിട്ടുണ്ടെങ്കിൽ. ഈ പ്രദേശം
നിങ്ങളുടെ ഇൻസ്റ്റാളേഷൻ പിന്തുണയ്ക്കുന്ന ഏത് മൂല്യത്തിലേക്കും വിഭാഗങ്ങൾ സജ്ജമാക്കാൻ കഴിയും. ഒരു സാധാരണ മൂല്യം
en_GB.UTF-8 യുണൈറ്റഡ് കിംഗ്ഡത്തിലെ ഇംഗ്ലീഷിനായി UTF-8-ൽ എൻകോഡ് ചെയ്‌തിരിക്കുന്നു.

ദി LC_CTYPE പരിസ്ഥിതി വേരിയബിൾ പ്രതീക വർഗ്ഗീകരണം വ്യക്തമാക്കുന്നു. ജിസിസി ഇത് ഉപയോഗിക്കുന്നു
ഒരു സ്ട്രിംഗിലെ പ്രതീക അതിരുകൾ നിർണ്ണയിക്കുക; ചില മൾട്ടിബൈറ്റിന് ഇത് ആവശ്യമാണ്
ഉദ്ധരണികളും എസ്കേപ്പ് പ്രതീകങ്ങളും അടങ്ങുന്ന എൻകോഡിംഗുകൾ, മറ്റുവിധത്തിൽ വ്യാഖ്യാനിക്കപ്പെടുന്നു a
സ്ട്രിംഗ് അവസാനം അല്ലെങ്കിൽ രക്ഷപ്പെടൽ.

ദി LC_MESSAGES എൻവയോൺമെന്റ് വേരിയബിൾ ഡയഗ്നോസ്റ്റിക്സിൽ ഉപയോഗിക്കേണ്ട ഭാഷ വ്യക്തമാക്കുന്നു
സന്ദേശങ്ങൾ.

എങ്കില് LC_ALL പരിസ്ഥിതി വേരിയബിൾ സജ്ജീകരിച്ചിരിക്കുന്നു, ഇത് മൂല്യത്തെ മറികടക്കുന്നു LC_CTYPE ഒപ്പം
LC_MESSAGES; അല്ലാത്തപക്ഷം, LC_CTYPE ഒപ്പം LC_MESSAGES യുടെ മൂല്യത്തിലേക്ക് സ്ഥിരസ്ഥിതി ലാംഗ്
പരിസ്ഥിതി വേരിയബിൾ. ഈ വേരിയബിളുകളൊന്നും സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ, GCC ഡിഫോൾട്ടായി പരമ്പരാഗതമായി മാറുന്നു
സി ഇംഗ്ലീഷ് പെരുമാറ്റം.

ടിഎംപിഡിഐആർ
If ടിഎംപിഡിഐആർ സജ്ജീകരിച്ചിരിക്കുന്നു, ഇത് താൽക്കാലിക ഫയലുകൾക്കായി ഉപയോഗിക്കേണ്ട ഡയറക്ടറി വ്യക്തമാക്കുന്നു. GCC ഉപയോഗിക്കുന്നു
കംപൈലേഷന്റെ ഒരു ഘട്ടത്തിന്റെ ഔട്ട്‌പുട്ട് ഹോൾഡ് ചെയ്യാനുള്ള താൽക്കാലിക ഫയലുകൾ
അടുത്ത ഘട്ടത്തിലേക്കുള്ള ഇൻപുട്ട്: ഉദാഹരണത്തിന്, പ്രീപ്രോസസറിന്റെ ഔട്ട്പുട്ട്
കംപൈലറിലേക്കുള്ള ഇൻപുട്ട് ശരിയായി.

GCC_COMPARE_DEBUG
ക്രമീകരണം GCC_COMPARE_DEBUG കടന്നുപോകുന്നതിന് ഏതാണ്ട് തുല്യമാണ് -fcompare-debug ലേക്ക്
കമ്പൈലർ ഡ്രൈവർ. കൂടുതൽ വിവരങ്ങൾക്ക് ഈ ഓപ്ഷന്റെ ഡോക്യുമെന്റേഷൻ കാണുക.

GCC_EXEC_PREFIX
If GCC_EXEC_PREFIX സജ്ജീകരിച്ചിരിക്കുന്നു, എന്നതിന്റെ പേരുകളിൽ ഉപയോഗിക്കുന്നതിനുള്ള ഒരു പ്രിഫിക്‌സ് ഇത് വ്യക്തമാക്കുന്നു
കംപൈലർ നിർവ്വഹിക്കുന്ന ഉപപ്രോഗ്രാമുകൾ. ഈ പ്രിഫിക്‌സ് സംയോജിപ്പിക്കുമ്പോൾ സ്ലാഷൊന്നും ചേർക്കില്ല
ഒരു ഉപപ്രോഗ്രാമിന്റെ പേരിനൊപ്പം, എന്നാൽ ഒരു സ്ലാഷിൽ അവസാനിക്കുന്ന ഒരു പ്രിഫിക്സ് നിങ്ങൾക്ക് വ്യക്തമാക്കാം
നിങ്ങൾ ആഗ്രഹിക്കുന്നു.

If GCC_EXEC_PREFIX സജ്ജീകരിച്ചിട്ടില്ല, ഉപയോഗിക്കുന്നതിന് അനുയോജ്യമായ ഒരു പ്രിഫിക്സ് കണ്ടുപിടിക്കാൻ GCC ശ്രമിക്കുന്നു
അത് വിളിച്ചിരിക്കുന്ന പാതയുടെ പേരിനെ അടിസ്ഥാനമാക്കി.

നിർദ്ദിഷ്‌ട പ്രിഫിക്‌സ് ഉപയോഗിച്ച് ജിസിസിക്ക് ഉപപ്രോഗ്രാം കണ്ടെത്താൻ കഴിയുന്നില്ലെങ്കിൽ, അത് നോക്കാൻ ശ്രമിക്കുന്നു
ഉപപ്രോഗ്രാമിനുള്ള സാധാരണ സ്ഥലങ്ങൾ.

യുടെ ഡിഫോൾട്ട് മൂല്യം GCC_EXEC_PREFIX is ഉപസർഗ്ഗം/lib/gcc/ എവിടെ പ്രിഫിക്‌സ് എന്നതിന്റെ ഉപസർഗ്ഗമാണ്
ഇൻസ്റ്റാൾ ചെയ്ത കമ്പൈലർ. പല കേസുകളിലും പ്രിഫിക്‌സ് നിങ്ങൾ പ്രവർത്തിപ്പിക്കുമ്പോൾ "പ്രിഫിക്സ്" എന്നതിന്റെ മൂല്യമാണ്
കോൺഫിഗർ സ്ക്രിപ്റ്റ്.

ഉപയോഗിച്ച് വ്യക്തമാക്കിയ മറ്റ് പ്രിഫിക്സുകൾ -B ഈ പ്രിഫിക്‌സിന് മുൻഗണന നൽകുക.

പോലുള്ള ഫയലുകൾ കണ്ടെത്തുന്നതിനും ഈ പ്രിഫിക്സ് ഉപയോഗിക്കുന്നു crt0.o ലിങ്ക് ചെയ്യാൻ ഉപയോഗിക്കുന്നവ.

കൂടാതെ, തിരയാനുള്ള ഡയറക്ടറികൾ കണ്ടെത്തുന്നതിൽ പ്രിഫിക്സ് അസാധാരണമായ രീതിയിൽ ഉപയോഗിക്കുന്നു
ഹെഡ്ഡർ ഫയലുകൾക്കായി. സാധാരണയായി ആരംഭിക്കുന്ന ഓരോ സ്റ്റാൻഡേർഡ് ഡയറക്‌ടറികൾക്കും
കൂടെ /usr/local/lib/gcc (കൂടുതൽ കൃത്യമായി പറഞ്ഞാൽ, മൂല്യത്തോടൊപ്പം GCC_INCLUDE_DIR), ജിസിസി ശ്രമിക്കുന്നു
ഒരു ഇതര ഡയറക്‌ടറി നിർമ്മിക്കുന്നതിന് നിർദ്ദിഷ്ട പ്രിഫിക്‌സ് ഉപയോഗിച്ച് ആരംഭിക്കുന്നത് മാറ്റിസ്ഥാപിക്കുന്നു
പേര്. അങ്ങനെ, കൂടെ -Bfoo/, GCC തിരയലുകൾ foo/bar സ്റ്റാൻഡേർഡ് തിരയുന്നതിന് തൊട്ടുമുമ്പ്
ഡയറക്ടറി /usr/local/lib/bar. ഒരു സ്റ്റാൻഡേർഡ് ഡയറക്‌ടറി കോൺഫിഗർ ചെയ്‌തതിൽ നിന്ന് ആരംഭിക്കുകയാണെങ്കിൽ
പ്രിഫിക്‌സ് അപ്പോൾ മൂല്യം പ്രിഫിക്‌സ് ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നു GCC_EXEC_PREFIX തലക്കെട്ട് തിരയുമ്പോൾ
ഫയലുകൾ.

COMPILER_PATH
ഇതിന്റെ മൂല്യം COMPILER_PATH ഡയറക്‌ടറികളുടെ കോളൻ-വേർതിരിക്കപ്പെട്ട ലിസ്‌റ്റാണ് PATH.
സബ്‌പ്രോഗ്രാമുകൾക്കായി തിരയുമ്പോൾ, സാധ്യമല്ലെങ്കിൽ, ജിസിസി ഇപ്രകാരം വ്യക്തമാക്കിയ ഡയറക്‌ടറികൾ പരീക്ഷിക്കുന്നു
ഉപയോഗിച്ച് ഉപപ്രോഗ്രാമുകൾ കണ്ടെത്തുക GCC_EXEC_PREFIX.

ലൈബ്രറി_പാത്ത്
ഇതിന്റെ മൂല്യം ലൈബ്രറി_പാത്ത് ഡയറക്‌ടറികളുടെ കോളൻ-വേർതിരിക്കപ്പെട്ട ലിസ്‌റ്റാണ് PATH.
ഒരു നേറ്റീവ് കംപൈലറായി കോൺഫിഗർ ചെയ്യുമ്പോൾ, ജിസിസി എപ്പോൾ വ്യക്തമാക്കിയ ഡയറക്‌ടറികൾ പരീക്ഷിക്കുന്നു
പ്രത്യേക ലിങ്കർ ഫയലുകൾക്കായി തിരയുന്നു, അവ ഉപയോഗിച്ച് അത് കണ്ടെത്താൻ കഴിയുന്നില്ലെങ്കിൽ GCC_EXEC_PREFIX.
GCC ഉപയോഗിച്ച് ലിങ്ക് ചെയ്യുന്നത് സാധാരണ ലൈബ്രറികൾക്കായി തിരയുമ്പോൾ ഈ ഡയറക്ടറികളും ഉപയോഗിക്കുന്നു
വേണ്ടി -l ഓപ്ഷൻ (എന്നാൽ ഡയറക്‌ടറികൾ -L ആദ്യം വരിക).

ലാംഗ്
കംപൈലറിന് പ്രാദേശിക വിവരങ്ങൾ കൈമാറാൻ ഈ വേരിയബിൾ ഉപയോഗിക്കുന്നു. അതിൽ ഒരു വഴി
പ്രതീകം ഉപയോഗിക്കുമ്പോൾ ഉപയോഗിക്കേണ്ട പ്രതീക സെറ്റ് നിർണ്ണയിക്കാൻ ഈ വിവരങ്ങൾ ഉപയോഗിക്കുന്നു
ലിറ്ററലുകൾ, സ്ട്രിംഗ് ലിറ്ററലുകൾ, കമന്റുകൾ എന്നിവ C, C++ എന്നിവയിൽ പാഴ്‌സ് ചെയ്യുന്നു. കംപൈലർ ആയിരിക്കുമ്പോൾ
മൾട്ടിബൈറ്റ് പ്രതീകങ്ങൾ അനുവദിക്കുന്നതിനായി ക്രമീകരിച്ചിരിക്കുന്നു, ഇനിപ്പറയുന്ന മൂല്യങ്ങൾ ലാംഗ് ആകുന്നു
അംഗീകരിച്ചത്:

സി-ജെഐഎസ്
JIS പ്രതീകങ്ങൾ തിരിച്ചറിയുക.

സി-എസ്‌ജെഐഎസ്
SJIS പ്രതീകങ്ങൾ തിരിച്ചറിയുക.

സി-ഇയുസിജെപി
EUCJP പ്രതീകങ്ങൾ തിരിച്ചറിയുക.

If ലാംഗ് നിർവചിച്ചിട്ടില്ല, അല്ലെങ്കിൽ അതിന് മറ്റെന്തെങ്കിലും മൂല്യമുണ്ടെങ്കിൽ, കമ്പൈലർ "mblen" ഉപയോഗിക്കുന്നു
മൾട്ടിബൈറ്റ് തിരിച്ചറിയാനും വിവർത്തനം ചെയ്യാനും ഡിഫോൾട്ട് ലൊക്കേൽ നിർവചിച്ചിരിക്കുന്നത് പോലെ "mbtowc"
പ്രതീകങ്ങൾ.

ചില അധിക എൻവയോൺമെന്റ് വേരിയബിളുകൾ പ്രീപ്രോസസറിന്റെ സ്വഭാവത്തെ ബാധിക്കുന്നു.

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
ഓരോ വേരിയബിളിന്റെയും മൂല്യം ഒരു പ്രത്യേക പ്രതീകം കൊണ്ട് വേർതിരിച്ച ഡയറക്‌ടറികളുടെ ഒരു ലിസ്റ്റ് ആണ്
പോലെ PATH, അതിൽ ഹെഡർ ഫയലുകൾക്കായി നോക്കണം. പ്രത്യേക കഥാപാത്രം,
"PATH_SEPARATOR", ടാർഗെറ്റ്-ആശ്രിതവും GCC ബിൽഡ് ടൈമിൽ നിർണ്ണയിക്കപ്പെട്ടതുമാണ്. മൈക്രോസോഫ്റ്റിനായി
വിൻഡോസ് അടിസ്ഥാനമാക്കിയുള്ള ടാർഗെറ്റുകൾ ഇത് ഒരു അർദ്ധവിരാമമാണ്, മറ്റെല്ലാ ടാർഗെറ്റുകൾക്കും ഇത് ഒരു ആണ്
വൻകുടൽ.

CPATH ഉപയോഗിച്ച് വ്യക്തമാക്കിയതുപോലെ തിരയേണ്ട ഡയറക്ടറികളുടെ ഒരു ലിസ്റ്റ് വ്യക്തമാക്കുന്നു -I, പക്ഷേ
നൽകിയ ഏതെങ്കിലും പാതകൾക്ക് ശേഷം -I കമാൻഡ് ലൈനിലെ ഓപ്ഷനുകൾ. ഈ പരിസ്ഥിതി വേരിയബിൾ
ഏത് ഭാഷയാണ് പ്രീപ്രോസസ് ചെയ്യുന്നത് എന്നത് പരിഗണിക്കാതെ തന്നെ ഉപയോഗിക്കുന്നു.

ബാക്കിയുള്ള എൻവയോൺമെന്റ് വേരിയബിളുകൾ പ്രത്യേകം പ്രീപ്രോസസ് ചെയ്യുമ്പോൾ മാത്രമേ ബാധകമാകൂ
ഭാഷ സൂചിപ്പിച്ചു. ഓരോന്നും തിരയേണ്ട ഡയറക്ടറികളുടെ ഒരു ലിസ്റ്റ് വ്യക്തമാക്കുന്നു
ഉപയോഗിച്ച് വ്യക്തമാക്കിയിരിക്കുന്നു -വ്യവസ്ഥ, എന്നാൽ നൽകിയിട്ടുള്ള ഏതെങ്കിലും പാതകൾക്ക് ശേഷം -വ്യവസ്ഥ ഓപ്‌ഷനുകൾ
കമാൻഡ് ലൈൻ.

ഈ എല്ലാ വേരിയബിളുകളിലും, ഒരു ശൂന്യമായ ഘടകം അതിന്റെ കറന്റ് തിരയാൻ കമ്പൈലറോട് നിർദ്ദേശിക്കുന്നു
പ്രവർത്തന ഡയറക്ടറി. ഒരു പാതയുടെ തുടക്കത്തിലോ അവസാനത്തിലോ ശൂന്യമായ ഘടകങ്ങൾ പ്രത്യക്ഷപ്പെടാം. വേണ്ടി
ഉദാഹരണത്തിന്, മൂല്യമാണെങ്കിൽ CPATH ":/special/include" ആണ്, അതിന് സമാനമായ ഫലമുണ്ട്
-ഐ. -ഞാൻ/സ്പെഷ്യൽ/ഉൾപ്പെടുന്നു.

DEPENDENCIES_OUTPUT
ഈ വേരിയബിൾ സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, മേക്ക് അടിസ്ഥാനമാക്കിയുള്ള ഡിപൻഡൻസികൾ എങ്ങനെ ഔട്ട്പുട്ട് ചെയ്യണമെന്ന് അതിന്റെ മൂല്യം വ്യക്തമാക്കുന്നു
കംപൈലർ പ്രോസസ്സ് ചെയ്ത നോൺ-സിസ്റ്റം ഹെഡർ ഫയലുകളിൽ. സിസ്റ്റം ഹെഡർ ഫയലുകളാണ്
ഡിപൻഡൻസി ഔട്ട്പുട്ടിൽ അവഗണിച്ചു.

ഇതിന്റെ മൂല്യം DEPENDENCIES_OUTPUT ഒരു ഫയൽ നാമം മാത്രമായിരിക്കാം, ഈ സാഹചര്യത്തിൽ മേക്ക് നിയമങ്ങൾ
സോഴ്സ് ഫയൽ നാമത്തിൽ നിന്ന് ടാർഗെറ്റ് നാമം ഊഹിച്ച് ആ ഫയലിലേക്ക് എഴുതിയിരിക്കുന്നു. അഥവാ
മൂല്യത്തിന് ഫോം ഉണ്ടായിരിക്കാം ഫയല് ലക്ഷ്യം, ഈ സാഹചര്യത്തിൽ നിയമങ്ങൾ ഫയൽ ചെയ്യാൻ എഴുതിയിരിക്കുന്നു ഫയല്
ഉപയോഗിച്ച് ലക്ഷ്യം ലക്ഷ്യ നാമമായി.

മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, ഈ എൻവയോൺമെന്റ് വേരിയബിൾ ഓപ്ഷനുകൾ സംയോജിപ്പിക്കുന്നതിന് തുല്യമാണ് -എം.എം
ഒപ്പം -എം.എഫ്, ഒരു ഓപ്ഷണൽ കൂടെ -എം.ടി മാറുക കൂടി.

SUNPRO_DEPENDENCIES
ഈ വേരിയബിൾ സമാനമാണ് DEPENDENCIES_OUTPUT (മുകളിൽ കാണുക), ആ സംവിധാനം ഒഴികെ
ഹെഡ്ഡർ ഫയലുകൾ അവഗണിക്കപ്പെടുന്നില്ല, അതിനാൽ ഇത് സൂചിപ്പിക്കുന്നു -M അതിലും കൂടുതൽ -എം.എം. എന്നിരുന്നാലും, ആ
പ്രധാന ഇൻപുട്ട് ഫയലിനെ ആശ്രയിക്കുന്നത് ഒഴിവാക്കിയിരിക്കുന്നു.

onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് mipsel-linux-gnu-g++-5 ഓൺലൈനായി ഉപയോഗിക്കുക


സൗജന്യ സെർവറുകളും വർക്ക്സ്റ്റേഷനുകളും

Windows & Linux ആപ്പുകൾ ഡൗൺലോഡ് ചെയ്യുക

  • 1
    സ്വിഗ്
    സ്വിഗ്
    SWIG ഒരു സോഫ്റ്റ്‌വെയർ വികസന ഉപകരണമാണ്
    അത് സിയിൽ എഴുതിയ പ്രോഗ്രാമുകളെ ബന്ധിപ്പിക്കുന്നു
    വൈവിധ്യമാർന്ന ഉയർന്ന തലത്തിലുള്ള C++
    പ്രോഗ്രാമിംഗ് ഭാഷകൾ. കൂടെ SWIG ഉപയോഗിക്കുന്നു
    വ്യത്യസ്ത...
    SWIG ഡൗൺലോഡ് ചെയ്യുക
  • 2
    WooCommerce Nextjs റിയാക്റ്റ് തീം
    WooCommerce Nextjs റിയാക്റ്റ് തീം
    ഉപയോഗിച്ച് നിർമ്മിച്ച WooCommerce തീം പ്രതികരിക്കുക
    അടുത്ത JS, Webpack, Babel, Node, കൂടാതെ
    Express, GraphQL, Apollo എന്നിവ ഉപയോഗിച്ച്
    കക്ഷി. WooCommerce Store in React(
    അടങ്ങിയിരിക്കുന്നു: ഉൽപ്പന്നങ്ങൾ...
    WooCommerce Nextjs റിയാക്റ്റ് തീം ഡൗൺലോഡ് ചെയ്യുക
  • 3
    archlabs_repo
    archlabs_repo
    ArchLabs-നുള്ള പാക്കേജ് റിപ്പോ ഇതാണ്
    ലഭിക്കാവുന്ന ആപ്ലിക്കേഷൻ
    നിന്ന്
    https://sourceforge.net/projects/archlabs-repo/.
    ഇത് OnWorks-ൽ ഹോസ്റ്റ് ചെയ്തിട്ടുണ്ട്...
    archlabs_repo ഡൗൺലോഡ് ചെയ്യുക
  • 4
    സെഫിർ പദ്ധതി
    സെഫിർ പദ്ധതി
    സെഫിർ പ്രോജക്റ്റ് ഒരു പുതിയ തലമുറയാണ്
    തത്സമയ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം (RTOS).
    ഒന്നിലധികം ഹാർഡ്‌വെയർ പിന്തുണയ്ക്കുന്നു
    വാസ്തുവിദ്യകൾ. എ അടിസ്ഥാനമാക്കിയുള്ളതാണ്
    ചെറിയ കാൽപ്പാട് കേർണൽ...
    Zephyr Project ഡൗൺലോഡ് ചെയ്യുക
  • 5
    സ്കോണുകൾ
    സ്കോണുകൾ
    SCons ഒരു സോഫ്റ്റ്‌വെയർ നിർമ്മാണ ഉപകരണമാണ്
    അതൊരു മികച്ച ബദലാണ്
    ക്ലാസിക് "മെയ്ക്ക്" ബിൽഡ് ടൂൾ
    നാമെല്ലാവരും അറിയുകയും സ്നേഹിക്കുകയും ചെയ്യുന്നു. സ്കോൺസ് ആണ്
    ഒരു...
    SCons ഡൗൺലോഡ് ചെയ്യുക
  • 6
    PseInt
    PseInt
    PseInt എന്നതിനായുള്ള ഒരു കപട-കോഡ് വ്യാഖ്യാതാവാണ്
    സ്പാനിഷ് സംസാരിക്കുന്ന പ്രോഗ്രാമിംഗ് വിദ്യാർത്ഥികൾ.
    അതിനുള്ള ഒരു ഉപകരണമാണ് അതിന്റെ പ്രധാന ലക്ഷ്യം
    അടിസ്ഥാനം പഠിക്കുകയും മനസ്സിലാക്കുകയും ചെയ്യുന്നു
    ആശയം...
    PseInt ഡൗൺലോഡ് ചെയ്യുക
  • കൂടുതൽ "

ലിനക്സ് കമാൻഡുകൾ

Ad