Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന 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 പോലുള്ള ബൈറ്റുകൾ -ഫാലിൻ-ഫംഗ്ഷനുകൾ.
ലൂപ്പുകൾ പലതവണ എക്സിക്യൂട്ട് ചെയ്യുകയാണെങ്കിൽ, ഇത് ഡമ്മിയുടെ ഏത് എക്സിക്യൂഷനും നികത്തുന്നു
പ്ര