เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”เบžเบฒเบชเบฒเบเบฃเบฑเปˆเบ‡เปเบญเบชเบ›เบฒเป‚เบเบ™

OnWorks favicon

aarch64-linux-gnu-g++-4.9 - เบญเบญเบ™เบฅเบฒเบเปƒเบ™เบ„เบฅเบฒเบง

เป€เบ›เบตเบ”เปƒเบŠเป‰ aarch64-linux-gnu-g++-4.9 เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเบœเปˆเบฒเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ aarch64-linux-gnu-g++-4.9 เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเป‚เบ”เบเปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™เบซเบผเบฒเบเป†เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบ™เป„เบฅเบ™เปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบฑเปˆเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เป‚เบ„เบ‡เบเบฒเบ™:

NAME


gcc - GNU project C เปเบฅเบฐ C++ compiler

เบชเบฐเบซเบผเบธเบšเบชเบฑเบ‡เบฅเบงเบก


gcc [-c|-S|-E] [-std=เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™]
[-g] [- เปœเป‰เบฒ] [-Oเบฅเบฐเบ”เบฑเบš]
[-Wเป€เบ•เบทเบญเบ™... ] [-Wpedantic]
[-Idir... ] [-Ldir... ]
[-Dเบกเบฐเบซเบฒเบžเบฒเบ[=defn]...] [-Uเบกเบฐเบซเบฒเบžเบฒเบ]
[-fเบ—เบฒเบ‡เป€เบฅเบทเบญเบ... ] [-mเบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹... ]
[-o outfile] [@เป€เบญเบเบฐเบชเบฒเบ™] infile...

เบžเบฝเบ‡เปเบ•เปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰; เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญ. g ++ เบเบญเบกเบฎเบฑเบš
เบชเปˆเบงเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš gcc.

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”


เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡ GCC, เบกเบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปˆเบญเบ™, เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบเบฒเบ™เบ›เบฐเบเบญเบšเปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡.
"เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป‚เบ”เบเบฅเบงเบก" เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบขเบธเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ‡. เบชเปเบฒเบฅเบฑเบš
เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, the -c เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบšเบญเบเบงเปˆเบฒเบšเปเปˆเปƒเบซเป‰เปเบฅเปˆเบ™เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบงเบฑเบ”เบ–เบธ
เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เป‚เบ”เบเบœเบนเป‰เบ›เบฐเบเบญเบš.

เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบญเบทเปˆเบ™โ€‹เบ–เบทเบโ€‹เบชเบปเปˆเบ‡โ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹. เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบšเบฒเบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹
preprocessor เปเบฅเบฐเบญเบทเปˆเบ™เป† compiler เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. เปเบ•เปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ›เบฐเบเบญเบšเปเบฅเบฐ
เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ; เบชเปˆเบงเบ™เปƒเบซเบเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบšเบฑเบ™เบ—เบถเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เป€เบžเบฒเบฐเบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบ„เปˆเบญเบเบˆเบฐเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™เปƒเบ”เป†.

เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบš GCC เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ C; เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบžเบฝเบ‡เปเบ•เปˆเบเบฑเบšเบžเบฒเบชเบฒเบญเบทเปˆเบ™ (เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง C ++), เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡. เบ–เป‰เบฒเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เบšเปเปˆเป„เบ”เป‰เบเปˆเบฒเบงเป€เบ–เบดเบ‡เปเบซเบผเปˆเบ‡เปƒเบ”เบซเบ™เบถเปˆเบ‡
เบžเบฒเบชเบฒ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบฑเป‰เบ™เบเบฑเบšเบ—เบธเบเบžเบฒเบชเบฒเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™.

เป„เบ”เป‰ gcc เป‚เบ„เบ‡เบเบฒเบ™เบเบญเบกเบฎเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบฅเบฐเบŠเบทเปˆเป„เบŸเบฅเปŒเป€เบ›เบฑเบ™เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™. เบกเบตโ€‹เบซเบผเบฒเบโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบซเบผเบฒเบ
เบŠเบทเปˆเบ•เบปเบงเบญเบฑเบเบชเบญเบ™; เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบซเบผเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ”เบฝเบงเบญเบฒเบ”เบˆเบฐ เบšเปเปˆ เบ–เบทเบเบˆเบฑเบ”เป€เบ›เบฑเบ™เบเบธเปˆเบก: -เบ”เบตเบงเบตเบ”เบต เปเบกเปˆเบ™เบซเบผเบฒเบ
เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบˆเบฒเบ -d -v.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบชเบปเบกเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบญเบทเปˆเบ™เป†. เบชเปเบฒเบฅเบฑเบšเบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบšเปเปˆเป„เบ”เป‰
เป€เบฅเบทเปˆเบญเบ‡. เบ„เปเบฒเบชเบฑเปˆเบ‡เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบซเบผเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ”เบฝเบงเบเบฑเบ™; เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒ
เบ—เปˆเบฒเบ™เบฅเบฐเบšเบธ -L เบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡, เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ–เบทเบเบ„เบปเป‰เบ™เบซเบฒเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰,
เบเบฒเบ™เบšเบฑเบ™เบˆเบธเป€เบ‚เบปเป‰เบฒเบฎเบฝเบ™เบ‚เบญเบ‡ -l เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบซเบผเบฒเบเบกเบตเบŠเบทเปˆเบเบฒเบงเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ -f เบซเบผเบทเบเบฑเบš -W---เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡,
-fmove-loop-invariants, -Wformat เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบชเปˆเบงเบ™เปƒเบซเบเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบกเบตเบ—เบฑเบ‡เบ—เบฒเบ‡เบšเบงเบเปเบฅเบฐเบ—เบฒเบ‡เบฅเบปเบš
เปเบšเบšเบŸเบญเบก; เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ—เบฒเบ‡โ€‹เบฅเบปเบšโ€‹เบ‚เบญเบ‡โ€‹ -ffoo is -fno-foo. เป€เบญเบเบฐเบชเบฒเบ™เบ„เบนเปˆเบกเบทเบ™เบตเป‰เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เบชเบญเบ‡เบฎเบนเบšเปเบšเบš, เบญเบฑเบ™เปƒเบ”เบšเปเปˆเปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

OPTIONS


เบ—เบฒเบ‡เป€เบฅเบทเบญเบ Summary
เบ™เบตเป‰เปเบกเปˆเบ™เบšเบปเบ”เบชเบฐเบซเบผเบธเบšเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเบ—เบฑเบ‡เปเบปเบ”, เบˆเบฑเบ”เบเบธเปˆเบกเบ•เบฒเบกเบ›เบฐเป€เบžเบ”. เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบขเบนเปˆเปƒเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰
เบžเบฒเบเบชเปˆเบงเบ™.

เป‚เบ”เบเบฅเบงเบก เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-c -S -E -o เป€เบญเบเบฐเบชเบฒเบ™ -no-canonical-prefixes - เบ›เบธเบš -pass-exit-codes -x เบžเบฒเบชเบฒ -v
-### - เบŠเปˆเบงเบ[=เบฅเบฐเบ”เบฑเบš[...]] --เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบเบฒเบ™โ€‹เบŠเปˆเบงเบโ€‹เป€เบซเบผเบทเบญโ€‹ - เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ - เบซเปเปˆ @เป€เบญเบเบฐเบชเบฒเบ™ -fplugin=เป€เบญเบเบฐเบชเบฒเบ™
-fplugin-arg-เบŠเบทเปˆ=arg -fdump-ada-spec[-เบšเบฒเบ‡] -fada-spec-parent=เบซเบ™เปˆเบงเบเบšเปเบฅเบดเบเบฒเบ™
-fdump-go-spec=เป€เบญเบเบฐเบชเบฒเบ™

C เบžเบฒเบชเบฒ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-ansi -std=เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ -fgnu89-inline - เบ‚เปเป‰เบกเบนเบ™ aux เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™
-fallow-parameterless-variadic-functions -fno-asm -fno-builtin -fno-builtin-เบซเบ™เป‰เบฒเบ—เบตเปˆ
-fhosted - freestanding -fopenmp -fopenmp-simd -fms-เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ -fplan9-เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ
-trigraphs - เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก -cpp -fallow-single-precision -fcond-เบšเปเปˆเบเบปเบ‡เบเบฑเบ™
-flax-vector-เปเบ›เบ‡ -fsigned-bitfields -fsigned-char -funsigned-bitfields
-funsigned-char

C ++ เบžเบฒเบชเบฒ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-fabi-version=n -fno-access-control -fcheck-เปƒเปเปˆ -fconstexpr-depth=n
-ffriend-เบชเบฑเบเบขเบฒ -fno-elide-constructors -fno-enforce-eh-specs -ffor-scope
-fno-for-scope -fno-gnu-keywords -fno-implicit-templates
-fno-implicit-inline-templates -fno-implement-inlines -fms-เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ
-fno-nonansi-builtins -fnotrow-opt -fno-operator-names -fno-optional-diags
-fpermissive -fno-pretty-templates -frepo -fno-rtti -fstats
-ftemplate-backtrace-limit=n -ftemplate-depth=n -fno-threadsafe-statics
-fuse-cxa-atexit -fno-เบญเปˆเบญเบ™เปเบญ -nostdinc++ -fvisibility-inlines-hidden
-fvtable-verify=std|preinit|เบšเปเปˆเบกเบต -fvtv-เบ™เบฑเบš -fvtv-debug -fvisibility-ms-compat
-fext-เบ•เบปเบงเป€เบฅเบ-เบ•เบปเบงเปœเบฑเบ‡เบชเบท - เบงเบฒเบšเบต -Wconversion-null -Wctor-dtor-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ•เบปเบง
-Wdelete-เบšเปเปˆเปเบกเปˆเบ™ virtual-dtor -Wliteral-suffix - เบเบฒเบ™โ€‹เบ‚เบฑเบ”โ€‹เบ‚เบงเบฒเบ‡โ€‹ - เบเบปเบเป€เบงเบฑเป‰เบ™ -Wnon-virtual-dtor
- เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹ -Weffc++ -Wstrict-null-sentinel -Wno-เบšเปเปˆเปเบกเปˆเบ™เปเบกเปˆเปเบšเบš-เป€เบžเบทเปˆเบญเบ™ -Wold-style-cast
-Woverloaded-virtual -Wno-pmf-เปเบ›เบ‡ -Wsign-promo

Objective-C เปเบฅเบฐ เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡-C++ เบžเบฒเบชเบฒ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-fconstant-string-class=เบŠเบทเปˆโ€‹เบซเป‰เบญเบ‡โ€‹ -fgnu-runtime -fnext-runtime -fno-nil-receivers
-fobjc-abi-version=n -fobjc-call-cxx-cdtors -fobjc-เบชเบปเปˆเบ‡เป‚เบ”เบเบเบปเบ‡ -fobjc-เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™
-fobjc-gc -fobjc-nilcheck -fobjc-std=objc1 -freplace-objc-classes -fzero-link
-gen-decls -Wassign-intercept -Wno-protocol - เบœเบนเป‰โ€‹เป€เบฅเบทเบญเบโ€‹ -Wstrict-select-match
-Wunddeclared-เป€เบฅเบทเบญเบ

เบžเบฒเบชเบฒ เป€เบญเบเบฐเบฅเบฒเบ” เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-fmessage-length=n -fdiagnostics-show-location=[เบ„เบฑเป‰เบ‡เบซเบ™เบถเปˆเบ‡|เบ—เบธเบเป€เบชเบฑเป‰เบ™]
-fdiagnostics-color=[เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”|เบšเปเปˆเป€เบ„เบตเบ|เบชเบฐเป€เบซเบกเบตเป„เบ›] -fno-diagnostics-show-option
-fno-diagnostics-show-caret

เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบž เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-fsyntax เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ -fmax-errors=n -Wpedantic -pedantic เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹ -w -Wextra - เบเบฒ
-waddress -Waggregate-เบเบฑเบšเบ„เบทเบ™ -Waggressive-loop-optimizations - Warray-bounds
- เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ Wnoโ€‹ -Wno-builtin-macro-redefined -Wc++-compat -Wc++11-compat -Wcast-align
-Wcast-qual -Wchar-subscripts - Wclobbered - เบ„เปเบฒเป€เบซเบฑเบ™ - เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบ•เบฒเบกโ€‹เป€เบ‡เบทเปˆเบญเบ™โ€‹เป„เบ‚โ€‹
- เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹ -Wcoverage-mismatch -Wdate-time -Wdelete-เบšเปเปˆเบชเบปเบกเบšเบนเบ™ -Wno-cpp
-Wno-deprecated -Wno-deprecated-เบ›เบฐเบเบฒเบ” -Wdisabled-optimization -Wno-div-by-zero
- เบเบฒเบ™โ€‹เบชเบปเปˆเบ‡โ€‹เป€เบชเบตเบกโ€‹เบชเบญเบ‡โ€‹เบ„เบฑเป‰เบ‡โ€‹ - เบฎเปˆเบฒเบ‡เบเบฒเบเบญเปˆเบญเบ™เป€เบžเบ -Wenum เบ›เบฝเบšเบ—เบฝเบš -wno-endif-labels - เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹ -Wror=*
- เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ” Wfatalโ€‹ -Wfloat-เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™ -Wformat -Wformat=2 -Wno-format-contains-nul
-Wno-format-extra-args -Wformat-nonliteral -Wformat เบ„เบงเบฒเบกโ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹ -Wformat-y2k
-Wframe-larger-than=len -Wno-free-nonheap-object -Wjump-misses-init
-Wignored-qualifiers - Wimplicit -Wimplicit-function-เบ›เบฐเบเบฒเบ” -Wimplicit-int
- เบงเบดเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹ - Winline -Wmaybe-unitialized -Wno-int-to-pointer-cast
-Wno-invalid-offsetof -Winvalid-pch -Wlarger-than=len -Wunsafe-loop-optimizations
-Wlogical-op - เบเบฒเบง - เบเบฒเบง - เบœเบนเป‰เบเบดเบ‡ -Wmaybe-unitialized -Wmemset-transposed-args
-Wmissing-braces -Wmissing-field-initializers -Wmissing-include-dirs -Wno-multichar
-Wnonnull -Wno-เบฅเบปเป‰เบ™ -Wopenmp-simd -Woverlength-strings - เบซเปเปˆ
-Wpacked-bitfield-compat - เปเบœเปˆเบ™เปเบž -Wparentheses -Wpedantic-ms-format
-Wno-pedantic-ms-format -Wpointer-arith -Wno-pointer-to-int-cast -Wredundant-decls
-Wno-return-local-addr - เบ›เบฐโ€‹เป€เบžเบ” Wreturnโ€‹ - เบฅเปเบฒเบ”เบฑเบšเบˆเบธเบ” - เป€เบ‡เบปเบฒ -Wsign-เบ›เบฝเบšเบ—เบฝเบš
-Wsign เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹ - เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡ Wfloatโ€‹ -Wsizeof-pointer-memaccess -Wstack-protector
-Wstack-usage=len - เป€เบ›เบฑเบ™เบเบฒเบ™เบฅเป‰เบฒเบชเบธเบ” -Wstrict-aliasing=n -Wstrict-เบฅเบปเป‰เบ™
-Wstrict-overflow=n -Wsuggest-attribute=[เบšเปเบฅเบดเบชเบธเบ”|const|noreturn|เบฎเบนเบšเปเบšเบš]
-Wmissing-format-attribute - เบชเบฐเบซเบงเบดเบ” -Wswitch-default -Wwwitch-enum -Wsync-nand
-Wsystem-headers -Wtrampoline -Wtrigraphs -Wtype- limits -Wundef - เบ›เบฐเบเบฒเบ”
-Wunknown-pragmas -Wno-pragmas -Wunsuffixed-float-constants - เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹
-Wunused-function -Wunused-label -Wunused-local-typedefs -Wunused-เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต
-Wno-unused-เบœเบปเบ™ -Wunused-value -Wunused-variable -Wunused-but-set-parameter
-Wunused-but-set-variable -Wuseless-cast -Wvariadic-macros
-Wvector-เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™-เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš -Wvla -Wvolatile-register-var -Write-strings
-Wzero-as-null-pointer-constant

C เปเบฅเบฐ เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡-C-เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบž เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-Wbad-function-cast -Wmissing เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹ -Wmissing-parameter-type
-Wmissing-prototypes -Wnested-externs -Wold-style-เบ›เบฐเบเบฒเบ” -Wold-style-เบ™เบดเบเบฒเบก
-Wstrict-prototypes - เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก - เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เปเบšเบšโ€‹เบ”เบฑเป‰เบ‡โ€‹เป€เบ”เบตเบกโ€‹
-Wdeclaration เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ–เบฐโ€‹เปเบซเบผเบ‡โ€‹เบเบฒเบ™โ€‹ -Wpointer-เป€เบŠเบฑเบ™โ€‹

Debugging เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-dเบ•เบปเบงเบญเบฑเบเบชเบญเบ™ - dumpspecs - เป€เบ„เบทเปˆเบญเบ‡โ€‹เบ‚เบตเป‰โ€‹เบเบธเปˆเบ™ - dumpversion -fsanitize=เปเบšเบš -fdbg-cnt-list
-fdbg-cnt=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบเบฒเบ™เบ•เป‰เบฒเบ™เบกเบนเบ™เบ„เปˆเบฒ -fdisable-ipa-pass_name -fdisable-rtl-pass_name
-fdisable-rtl-เบŠเบทเปˆโ€‹เบœเปˆเบฒเบ™=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป„เบฅเบเบฐ -fdisable-tree-pass_name -fdisable-tree-เบœเปˆเบฒเบ™-
เบŠเบทเปˆ=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป„เบฅเบเบฐ -fdump-noaddr -fdump-เบšเปเปˆเบกเบตเบ•เบปเบงเป€เบฅเบ -fdump-unnumbered-links
-fdump-translation-unit[-n] -fdump-class-hierarchy[-n] -fdump-ipa-all
-fdump-ipa-cgraph -fdump-ipa-inline -fdump-เบœเปˆเบฒเบ™ -fdump-เบชเบฐเบ–เบดเบ•เบด -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-tree-sink
-fdump-tree-sra[-n] -fdump-tree-forwprop[-n] -fdump-tree-free[-n]
-fdump-tree-vtable-verify -fdump-tree-vrp[-n] -fdump-tree-storeccp[-n]
-fdump-final-insns=เป€เบญเบเบฐเบชเบฒเบ™ -fcompare-debug[=เป€เบฅเบทเบญเบ] -fcompare-debug-เบงเบดเบ™เบฒเบ—เบต
-feliminate-dwarf2-dups -fno-eliminate-unused-debug-types
-feliminate-unused-debug-เบชเบฑเบ™เบเบฒเบฅเบฑเบ -femit-class-debug-เบชเบฐเป€เปเบต -fenable-เบ›เบฐเป€เบžเบ”-เบœเปˆเบฒเบ™
-fenable-เบ›เบฐเป€เบžเบ”-เบœเปˆเบฒเบ™=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป„เบฅเบเบฐ -fdebug-types-section -fmem-report-wpa -fmem เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™
-fpre-ipa-mem-เบฅเบฒเบเบ‡เบฒเบ™ -fpost-ipa-mem-report -fprofile-arcs -fopt-info
- fopt-เบ‚เปเป‰โ€‹เบกเบนเบ™-เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™[=เป€เบญเบเบฐเบชเบฒเบ™] -frandom-seed=string -fsched-verbose=n -fsel-sched-verbose
-fsel-sched-dump-cfg -fsel-sched-pipelining-verbose -fstack เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ -ftest-เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹
-ftime เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹ -fvar-เบ•เบดเบ”เบ•เบฒเบก -fvar-tracking-assignments
-fvar-tracking-assignments-toggle -g -gเบฅเบฐเบ”เบฑเบš -gtoggle -gcoff -gdwarf-เบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒ -ggdb
-grecord-gcc-เบชเบฐเบซเบผเบฑเบš -gno-record-gcc-switches -gstabs -gstabs+ -gstrict-dwarf
-gno-strict-dwarf -gvms -gxcoff -gxcoff+ -fno-merge-debug-strings
-fno-dwarf2-cfi-asm -fdebug-prefix-map=เบญเบฒเบเบธ=เปƒเบซเบกเปˆ -femit-struct-debug-baseonly
-femit-struct-debug-เบซเบผเบธเบ”เบฅเบปเบ‡ -femit-struct-debug-เบฅเบฒเบเบฅเบฐเบญเบฝเบ”[=เบฅเบฒเบเบŠเบทเปˆเบชเบฐเป€เบžเบฒเบฐ] -p - เปœเป‰เบฒ
-print-file-name=เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” -print-libgcc-file-name -print-multi-directory
-print-multi-lib -print-multi-os-directory -print-prog-name=เป‚เบ„เบ‡เบเบฒเบ™
-print-search-dirs -Q -print-sysroot -print-sysroot-headers-suffix - save-tempsโ€‹
-save-temps=cwd -save-temps=obj เป€เบงเบฅเบฒ[=เป€เบญเบเบฐเบชเบฒเบ™]

เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ” เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-faggressive-loop-optimizations -falign-functions[=n] -falign-jumps[=n]
-falign-labels[=n] -falign-loops[=n] -fassociative-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ” -fauto-inc, เบ„เบฐ
-fbranch-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ -fbranch-target-load-optimize -fbranch-target-load-optimize2
-fbtr-bb-เบชเบฐเป€เบžเบฒเบฐ -fcaller-เบ›เบฐเบซเบเบฑเบ” -fcheck-data-deps -fcombine-stack-เบ›เบฑเบš
-fconserve-stack -fcompare-elim -fcprop-เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ -fcrossjumping -fcse-follow-jumps
-fcse-skip-blocks -fcx-fortran-เบเบปเบ”เบฅเบฐเบšเบฝเบš -fcx-limited-range -fdata-sections -fdce
-fdelayed-เบชเบฒเบ‚เบฒ -fdelete-null-pointer-checks -fdevirtualize
-fdevirtualize-speculatively -fdse - เบ„เบงเบฒเบกโ€‹เบขเป‰เบฒเบ™โ€‹เบเบปเบงโ€‹, inliningโ€‹ -fipa-sra
-fexpensive-optimizations -ffat-lto-เบงเบฑเบ”เบ–เบธ -fast เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹ -ffinite-math-เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
- เบฎเป‰เบฒเบ™เบ‚เบฒเบเป€เบ„เบทเปˆเบญเบ‡เบเปˆเบญเบ -fexcess-precision=เปเบšเบš -fforward-เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™ -ffp-เบชเบฑเบ™เบเบฒ=เปเบšเบš
-function-sections -fgcse -fgcse-after-reload -fgcse-las -fgcse-lm
-fgraphite-เบ•เบปเบงเบ•เบปเบ™ -fgcse-sm -fhoist-adjacent-loads -fif เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹ -fif เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡ 2โ€‹
-findirect-inlining -finline-functions -finline-functions-called-one เบ”เบฝเบง -finline-limit=n
-finline-small-functions -fipa-cp -fipa-cp-clone -fipa-pta -fipa-profile
-fipa-pure-const -fipa เบญเป‰เบฒเบ‡โ€‹เบญเบตเบ‡โ€‹ -fira-algorithm=เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบงเบดเบ—เบต -fira-region=เบžเบนเบกเบดเบžเบฒเบ
-fira-hoist-pressure -fira-loop-pressure -fno-ira-share-save-slots
-fno-ira-share-spill-slots -fira-verbose=n -fisolate-erroneous-paths-dereference
-fisolate-erroneous-paths-attribute -fivopts -fkeep-inline-เบŸเบฑเบ‡เบŠเบฑเบ™
-fkeep-static-consts -flive-range-shrinkage -floop-block -floop-interchange
-floop-strip-mine -floop-nest-optimize -floop-parallelize-เบ—เบฑเบ‡เปเบปเบ” -flto
-flto-compression-level -flto-partition=เบžเบถเบŠเบฐเบ„เบฐเบ™เบดเบ” 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-inline -fno-math-errno -fno-peephole -fno-peephole2
-fno-sched-interblock -fno-sched-spec -fno-เป€เบŠเบฑเบ™เบŠเบทเปˆ-เบชเบนเบ™ -fno-toplevel-reorder
-fno-traping-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ” -fno-zero-initialized-in-bss -fomit-frame-pointer
-foptimize-sibling-calls -fpartial-inlining -fpeel-loops -fpredictive-commoning
-fprefetch-loop-arrays -fprofile-report -fprofile-เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹ -fprofile-dir=เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡
-fprofile-generate -fprofile-generate=เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ -fprofile-เปƒเบŠเป‰ -fprofile-use=เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡
-fprofile-เบ„เปˆเบฒ -fprofile-reorder-functions -freciprocal-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ” เบŸเบฃเบต
-frename-เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ -freorder-เบ•เบฑเบ™ -freorder-blocks-and-partition -freorder - เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹
-frerun-cse-after-loop -freschedule-modulo-schedule-loops - เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹
-fsched2-use-superblocks -fsched-เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™ -fsched-spec-load
-fsched-spec-load-เบญเบฑเบ™เบ•เบฐเบฅเบฒเบ -fsched-stalled-insns-dep[=n] -fsched-stalled-insns[=n]
-fsched-group-heuristic -fsched-critical-path-heuristic -fsched-spec-insn-heuristic
-fsched-rank-heuristic -fsched-last-insn-heuristic -fsched-dep-count-heuristic
-fschedule-insns -fschedule-insns2 -fsection-anchors -fselective-เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒโ€‹
-fselective-เบเบณเบ™เบปเบ”โ€‹เป€เบงเบฅเบฒ2 -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops
-fshrink-wrap -fsignaling-nans -fsingle-precision-constant -fsplit-ivs-in-unroller
-fsplit-wide-types -stack-protector -fstack-protector-เบ—เบฑเบ‡เปเบปเบ” -fstack-protector-strong
-fstrict-aliasing -fstrict-เบฅเบปเป‰เบ™ -fthread-jumps -ftracer -ftree-bit-ccp
-ftree-builtin-call-dce -ftree-ccp -ftre-ch -ftree-coalesce-inline-vars
-ftree-coalesce-vars -ftree-copy-prop -free-copyrename -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-เบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบ
-ftree-loop-distribute-patterns -ftree-loop-ivcanon -ftree-loop-linear
-ftree-loop-optimize -ftree-loop-vectorize -ftree-parallelize-loops=n -ftre-pre
-ftree-partial-pre -ftree-pta -ftree-reassoc - เบญเปˆเบฒเบ‡เบฅเป‰เบฒเบ‡เบกเบท -ftree-slsr -ftree-sra
-ftre-switch-เปเบ›เบ‡ -ftree-tail-merge - เบซเป‰เบฒโ€‹เบ›เบตโ€‹ -ftree-vectorize -ftree-vrp
-funit-at-a-time -funroll-all-loops -funroll-loops -funsafe-loop-optimizations
-funsafe-math-optimizations -funswitch-loops -fvariable-expansion-in-unroller
-fvect-cost-model -fvpt -fweb - เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹ -fwpa -fuse-ld=linker
-fuse-linker-plugin --param เบŠเบทเปˆ=เบกเบนเบ™เบ„เปˆเบฒ -O -O0 -O1 -O2 -O3 -เบญเบช - เป„เบง - เบญเบˆ

เป‚เบ›เป€เบˆเบฑเบเป€เบ•เบตเป‰ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-Aเบ„เปเบฒเบ–เบฒเบก=เบ„เปเบฒเบ•เบญเบš -HAS-เบ„เปเบฒเบ–เบฒเบก[=เบ„เปเบฒเบ•เบญเบš] -C -dD -dI -dM -dN -Dเบกเบฐเบซเบฒเบžเบฒเบ[=defn] -E -H
-idirafter dir - เบฅเบงเบกโ€‹เบ—เบฑเบ‡โ€‹ เป€เบญเบเบฐเบชเบฒเบ™ - เป„เบญเบกเบฒเป‚เบ„เบฃ เป€เบญเบเบฐเบชเบฒเบ™ - เบ„เปเบฒโ€‹เบ™เบดโ€‹เบเบฒเบกโ€‹ เป€เบญเบเบฐเบชเบฒเบ™ -iwithprefix dir
-iwithprefix เบเปˆเบญเบ™ dir - เบฅเบฐเบšเบปเบš dir -Imultilib dir -isysroot dir -M เป€เบญเบฑเบก -MF -MG
-MP -MQ -MT -nostdinc -P -fdebug-cpp -ftrack-macro-เบ‚เบฐเบซเบเบฒเบ -fworking-directory
-remap -trigraphs -undef -Uเบกเบฐเบซเบฒเบžเบฒเบ -Wpโ€‹,เบ—เบฒเบ‡เป€เบฅเบทเบญเบ - เป‚เบ›เป€เบŠเบ”เป€เบŠเบต Xpre เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -no-integrated-cpp

เบ„เบปเบ™เบฅเบญเบšเบชเบฑเบ‡เบซเบฒเบ™ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ
- เบง.เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -Xassembler เบ—เบฒเบ‡เป€เบฅเบทเบญเบ

เบœเบนเป‰เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
object-file-name -lเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” -nostartfiles -nodefaultlibs -nostdlib -pie -rdynamic -s
-static -static-libgcc -static-libstdc++ -static-libasan -static-libtsan
-static-liblsan -static-libubsan - เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹ -shared-libgcc - เบชเบฑเบ™โ€‹เบเบฒโ€‹เบฅเบฑเบโ€‹ -T script
-Wl,เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -Xlinker เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -u เบชเบฑเบ™เบเบฒเบฅเบฑเบ

Directory เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-Bเบ„เบณ เบ™เบณ เปœเป‰เบฒ -Idir -iplugindir=dir -iquotedir -Ldir -spec=เป€เบญเบเบฐเบชเบฒเบ™ -AND- --sysroot=dir
--no-sysroot-suffix

เป€เบ„เบทเปˆเบญเบ‡ เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
AAArch64 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mabi=เบŠเบทเปˆ -mbig-endian -mlittle-endian -mgeneral-regs-เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
-mcmodel=เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบ -mcmodel=เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบ -mcmodel=เปƒเบซเบเปˆ -mstrict-align -momit-leaf-frame-pointer
-mno-omit-leaf-frame-pointer -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=เบŠเบทเปˆ

Adapteva Epiphany เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mhalf-reg-file -mprefer-short-insn-regs -mbranch-cost=num
-mcmove -mnops=num -msoft-cmpsf -msplit-lohi -mpost-inc -mpost-เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹
-mstack-offset=num -mround-เปƒเบเป‰เบ—เบตเปˆเบชเบธเบ” -mlong-เป‚เบ— -mshort-เป‚เบ— -msmall16 -mfp-mode=เบฎเบนเบšเปเบšเบšเบเบฒเบ™
-mvect-double -max-vect-align=num -msplit-vecmove-เบ•เบปเป‰เบ™ -m1reg-reg

ARC เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mbarrel-shifter -mcpu=cpu -mA6 -mARC600 -mA7 -mARC700 -mdpfp
-mdpfp-เบเบฐเบ—เบฑเบ”เบฎเบฑเบ” -mdpfp-เป„เบง -mno-dpfp-lrsr - เป€เบก -mno-mpy - mmul32x16 -mmul64 -mnorm
-mspfp -mspfp-เบเบฐเบ—เบฑเบ”เบฎเบฑเบ” -mspfp-เป„เบง -msimd -msoft-float -mswap -mcrc -mdsp-packa -mdvbf
- mlock -mmac-d16 -mmac-24 -mrtsc -mswpe - เป‚เบ—โ€‹เบฅเบฐโ€‹เบชเบฑเบš -mxy - misize -mannotate-align
-marclinux -marclinux_prof -mepilogue-cfi -mlong-เป‚เบ— -เป‚เบ—เบ›เบฒเบ™เบเบฒเบ‡ -msdata
-mucb-mcount -mvolatile-cache -malign-เป‚เบ— -mauto-modify-reg -mbbit-peephole -mno-brcc
-mcase-vector-pcrel -mcompact-casesi -mno-cond-exec -mearly-cbranchsi -mexpand-adddi
-mindexed-loads -mlra -mlra-priority-none -mlra-priority-compact mlra เบšเบนเบฅเบดเบกเบฐเบชเบดเบ”-
เบšเปเปˆเบเบฐเบ—เบฑเบ”เบฎเบฑเบ” -mno-millicode - เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ›เบฐโ€‹เบชเบปเบกโ€‹ -mq-เบŠเบฑเป‰เบ™ -mRcq -mRcw -msize-level=เบฅเบฐเบ”เบฑเบš
-mtune=cpu -mmultcost=num -munalign-prob-threshold=เบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™

ARM เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mapcs-frame -mno-apcs-frame -mabi=เบŠเบทเปˆ -mapcs-stack-เบเบงเบ”
-mno-apcs-stack-check -mapcs-float -mno-apcs-float -mapcs-reentrant
-mno-apcs-reentrant -msched-prolog -mno-sched-prolog -mlittle-endian -mbig-endian
-mwords-little-endian -mfloat-abi=เบŠเบทเปˆ -mfp16-format=เบŠเบทเปˆ -mthumb-interwork
-mno-thumb-interwork -mcpu=เบŠเบทเปˆ - เบกเบตเบ™เบฒ=เบŠเบทเปˆ -mfpu=เบŠเบทเปˆ -mstructure-size-boundary=n
-mabort-on-norturn -mlong-เป‚เบ— -mno-long-calls -msingle-pic-base
-mno-single-pic-base -mpic เบกเบฑเบเบชเบฐเบกเบฒเบŠเบดเบ =reg -mnop-fun-dllimport -mpoke-function-name
- เป‚เบ›เป‰เบกเบท - เบกเบฒเบก -mtpcs-frame -mtpcs-เปƒเบš-เบเบญเบš -mcaller-super-interworking
-mcallee-super-interworking -mtp=เบŠเบทเปˆ -mtls-เบžเบฒเบชเบฒ =เบžเบฒเบชเบฒ -mword เบเบฒเบ™โ€‹เบเบปเบโ€‹เบเป‰เบฒเบโ€‹
-mfix-cortex-m3-ldrd -munaligned-เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹ -mneon-for-64bits -mslow-flash-data
- เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบกเบฑเบ™โ€‹

APR เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mmcu=mcu -maccumulate-args -mbranch-cost=เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบ -mcall-prologues - mint8
-mno-interrupts -mrelax -mstrict-X -mtiny-stack -Waddr-space-เปเบ›เบ‡

เบ”เบณ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mcpu=cpu[-sirevision] - เบŠเบดเบก -momit-leaf-frame-pointer
-mno-omit-leaf-frame-pointer -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-เบ‚เปเป‰เบกเบนเบ™ -mno-sep-data -mlong-เป‚เบ— -mno-long-calls
-mfast-fp -minline-plt - mmulticore - mcorea -mcoreb -msdram -micplb

C6X เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mbig-endian -mlittle-endian - เบกเบตเบ™เบฒ=cpu - เบŠเบดเบก -msdata=เบ›เบฐเป€เบžเบ” sdata

CRIS เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mcpu=cpu - เบกเบตเบ™เบฒ=cpu -mtune=cpu -mmax-stack-frame=n
-melinux-stacksize=n -metrax4 -metrax100 -mpdebug -mcc-init -mno-เบœเบปเบ™เบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡
-mstack-align -mdata-align -mconst-align -m32-เบšเบดเบ” -m16-เบšเบดเบ” -m8-เบšเบดเบ”
-mno-prologue-epilogue -mno-gotplt -melf - maout -melinux -mlinux -เบŠเบดเบก -sim2
-mmul-bug-เปเบเป‰เป„เบ‚ -mno-mul-bug-เปเบเป‰เป„เบ‚

CR16 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mmac -mcr16cplus -mcr16c - เบŠเบดเบก - mint32 -mbit-ops -mdata-model=เบฎเบนเบšเปเบšเบš

Darwin เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -all_load -allowable_client -เป‚เบ„เป‰เบ‡ -arch_errors_fatal -arch_only
-bind_at_load - เบกเบฑเบ” -bundle_loader -client_name -compatibility_version
- เบฎเบธเปˆเบ™_เบ›เบฐเบˆเบธเบšเบฑเบ™ -dead_strip -dependency-file -dylib_file -dylinker_install_name
- เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง -dynamiclib -exported_symbols_list - เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบเบฒเบ™โ€‹ -flat_namespace
-force_cpusubtype_ALL -force_flat_namespace -headerpad_max_install_names - เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹
-image_base -เปƒเบ™โ€‹เบกเบฑเบ™ -install_name -keep_private_externs -multi_module
-multiply_defined -multiply_defined_unused -noall_load
-no_dead_strip_inits_and_terms -nofixprebinding - เบ™เบฒเบกเบชเบฐเบเบธเบ™ - noprebind
-noseglinkedit -pagezero_size - prebind -prebind_all_twolevel_modules -private_bundle
-read_only_relocs -sectalign -sectobject เบชเบฑเบ™โ€‹เบเบฒโ€‹เบฅเบฑเบโ€‹ - เป€เบ›เบฑเบ™โ€‹เบซเบเบฑเบ‡โ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹ -seg1 addr -sectcreate
-sectobject เบชเบฑเบ™โ€‹เบเบฒโ€‹เบฅเบฑเบโ€‹ - เบ‚เบฐโ€‹เปเบซเบ™เบ‡โ€‹เบเบฒเบ™โ€‹ -segaddr -segs_read_only_addr -segs_read_write_addr
-seg_addr_table -seg_addr_table_filename -seglinkedit -segprot -segs_read_only_addr
-segs_read_write_addr -single_module -static -sub_library -sub_umbrella
- twolevel_namespace - เบ„เบฑเบ™เบฎเบปเปˆเบก - เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹ -unexported_symbols_list
-weak_reference_mismatch - whatsloaded -F -gused - gfull -mmacosx-version-min=เบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒ
- mkernel -mone-byte-bool

DEC Alpha เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mno-fp-regs -msoft-float -เบกเบตเปˆ -mieee-with-inexact
-mieee-เบชเบญเบ”เบ„เปˆเบญเบ‡ -mfp-trap-mode=เบฎเบนเบšเปเบšเบšเบเบฒเบ™ -mfp-rounding-mode=เบฎเบนเบšเปเบšเบšเบเบฒเบ™ -mtrap-precision=เบฎเบนเบšเปเบšเบšเบเบฒเบ™
-mbuild-เบ„เบปเบ‡เบ—เบตเปˆ -mcpu=cpu-type -mtune=cpu-type -mbwx -mmax -mfix -mcix
-mfloat-vax -mfloat-ieee -mexplicit-relocs -msmall-เบ‚เปเป‰เบกเบนเบ™ -mlarge-data -msmall-text
- เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปƒเบซเบเปˆโ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹ -mmemory-latency=เบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒ

FR30 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -msmall-เปเบšเบš -mno-lsim

LIF เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mgpr-32 -mgpr-64 -mfpr-32 -mfpr-64 -mhard-float -msoft-float
-malloc-cc -mfixed-cc -mdword -mno-dword -mdouble -mno-double - เบชเบทเปˆโ€‹เบกเบงเบ™โ€‹เบŠเบปเบ™ -mno-media
- เบกเบปเบงเบฅเบฑเบ” -mno-muladd -mfdpic -minline-plt -mgrel-ro -multilib-library-pic
-mlinked-fp -mlong-เป‚เบ— -malign-labels -mlibrary-pic -macc-4 -macc-8 -mpack
-mno-pack -mno-เบ—เบธเบ‡ -mcond-เบเป‰เบฒเบ -mno-cond-move -moptimize-membar
-mno-optimize-membar -mscc -mno-scc -mcond-exec -mno-cond-exec -mvliw-เบชเบฒเบ‚เบฒ
-mno-vliw-เบชเบฒเบ‚เบฒ -Mmulti-cond-exec-exec -mno-multi-cond-exec -mnested-cond-exec
-mno-nested-cond-exec -mtomcat-เบชเบฐเบ–เบดเบ•เบด -mTLS -mtls -mcpu=cpu

GNU / Linux เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mglibc - muclibc -mbionic -mandroid -tno-android-cc -tno-android-ld

H8 / 300 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mrelax -mh -เบ™เบฒเบ‡โ€‹เบชเบฒเบง - เบ™ -mexr -mno-exr - mint32 -malign-300

HPPA เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ - เบกเบตเบ™เบฒ=เบ›เบฐเป€เบžเบ”เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ -mdisable-fpregs -mdisable-indexing
-mfast-indirect-calls - เบกเบ -mgnu-ld -mhp-ld -mfixed-range=เป„เบฅเบเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™
-mjump-in-delay -mlinker-opt -mlong-เป‚เบ— -mlong-load-store -mno-disable-fpregs
-mno-disable-indexing -mno-fast-indirect-calls -mno-gas -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 -mportable-runtime
-mschedule=cpu-type -mspace-regs -msio -mwsio -muix=unix-std -nolibdld -static
- เบเบฐเบ—เบนเป‰

i386 เปเบฅเบฐ x86-64 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mtune=cpu-type - เบกเบตเบ™เบฒ=cpu-type -mtune-ctrl=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”
-mdump-tune-เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ” -mno-default -mfpmath=เบซเบ™เปˆเบงเบเบšเปเบฅเบดเบเบฒเบ™ -masm=เบžเบฒเบชเบฒ -mno-fancy-math-387
-mno-fp-ret-in-387 -msoft-float -mno-wide-เบ„เบนเบ™ -mrtd -malign-double
-mpreferred-stack-boundary=num -mincoming-stack-boundary=num -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 -msha - เปเบกเปˆ -mpclmul -mfsgsbase -mrdrnd -mf16c -mfma -mprefetchwt1 -msse4a
-m3dnow -mpopcnt - mabm -mbmi -mtbm -mfma4 -mxop -mlzcnt -mbmi2 -mfxsr -mxsave
-mxsaveopt -mrtm -mlwp -mthreads -mno-align-stringops -minline-all-stringops
-minline-stringops-เปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบ -mstringop-strategy=เบžเบถเบŠเบฐเบ„เบฐเบ™เบดเบ” -mmemcpy-strategy=เปเบœเบ™เบเบธเบ”เบ—เบฐเบชเบฒเบ”
-mmemset-strategy=เปเบœเบ™เบเบธเบ”เบ—เบฐเบชเบฒเบ” -mpush-args -maccumulate-outgoing-args
-m128bit-เบเบฒเบง-เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ -m96bit-เบเบฒเบง-เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ -mlong-double-64 -mlong-double-80
-mlong-double-128 -mregparm=num -msseregparm -mveclibabi=เบ›เบฐเป€เบžเบ” -mvect8-ret-in-mem
-mpc32 -mpc64 -mpc80 -mstackrealign -momit-leaf-frame-pointer -mno-red-zone
-mno-tls-direct-seg-refs -mcmodel=code-model -mabi=เบŠเบทเปˆ -maddress-mode=เบฎเบนเบšเปเบšเบšเบเบฒเบ™ -m32 -m64
-mx32 -m16 -mlarge-data-threshold=num -msse2avx -mfentry -m8bit-idiv
-mavx256-split-unaligned-load -mavx256-split-unaligned-store
-mstack-protector-guard=เบเบญเบ‡

i386 เปเบฅเบฐ x86-64 Windows เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mconsole -mcygwin -mno-cygwin -mdll
-mnop-fun-dllimport -mthread -municode -mwin32 - เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก -fno-set-stack-executable

IA-64 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mbig-endian -mlittle-endian -mgnu-as -mgnu-ld -mno-pic
-mvolatile-asm-stop -mregister-names -msdata -mno-sdata -mconstant-gp -mauto-pic
-mfused-madd -minline-float-divide-min-latency -minline-float-divide-max-throughput
-mno-inline-float-divide -minline-int-divide-min-latency
-minline-int-divide-max-throughput -mno-inline-int-divide -minline-sqrt-min-latency
-minline-sqrt-max-throughput -mno-inline-sqrt -mdwarf2-asm -mearly-stop-bits
-mfixed-range=เป„เบฅเบเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ -mtls-size=tls-size -mtune=cpu-type -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-enabled
-msign-extend-enabled -muser-enabled

M32R/D เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -m32r2 -m32rx -m32r -mdebug -malign-loops -mno-align-loops
-missue-rate=เบˆเปเบฒเบ™เบงเบ™ -mbranch-cost=เบˆเปเบฒเบ™เบงเบ™ -mmodel=code-size-model-type -msdata=เบ‚เปเป‰เบกเบนเบ™-
เบ›เบฐเป€เบžเบ” -mno-flush-func -mflush-func=เบŠเบทเปˆ -mno-flush-เบ”เบฑเบ -mflush-trap=เบˆเปเบฒเบ™เบงเบ™ -G num

M32C เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mcpu=cpu - เบŠเบดเบก -memregs=เบˆเปเบฒเบ™เบงเบ™

M680x0 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ - เบกเบตเบ™เบฒ=เป‚เบ„เป‰เบ‡ -mcpu=cpu -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
-mdiv -mno-div -mshort -mno-เบชเบฑเป‰เบ™ -mhard-float -m68881 -msoft-float -mpcrel
-malign-int -mstrict-align -msep-เบ‚เปเป‰เบกเบนเบ™ -mno-sep-data -mshared-library-id=n
- เบซเปเบชเบฐเปเบธเบ”เบเบฒเบ‡ -mno-id-shared-library -mxgot -mno-xgot

MCore เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mhardlit -mno-hardlit -mdiv -mno-div -mrelax เบ—เบฑเบ™เบ—เบต
-mno-เบœเปˆเบญเบ™เบ„เบฒเบ-เบ—เบฑเบ™เบ—เบต -mwide-bitfields -mno-wide-bitfields -m4byte functions
-mno-4byte-functions -mcallgraph-data -mno-callgraph-data -mslow-bytes
-mno-slow-bytes -mno-lsim -mlittle-endian -mbig-endian -m210 -m340
-mstack-increment

เป€เบกเบ› เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mabsdiff -mall-opts - เบชเบฐเป€เบฅเปˆเบ -mbased=n - เบšเบดเบ” -mc=n -mclip
-mconfig=เบŠเบทเปˆ -mcop -mcop32 -mcop64 -mivc2 -mdc -mdiv -เป€เบกเบš -mel -mio-volatile -ml
-mleaz -เบกเบก -mminmax - mmult -mno-opts -mrepeat -เบ™เบฒเบ‡โ€‹เบชเบฒเบง -msatur -msdram - เบŠเบดเบก -msimnovec
-mtf -mtiny=n

MicroBlaze เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -msoft-float -mhard-float -msmall-divides -mcpu=cpu -mmmcpy
-mxl-soft-mul -mxl-soft-div -mxl-barrel-shift -mxl-pattern-เบ›เบฝเบšเบ—เบฝเบš -mxl-stack-เบเบงเบ”
-mxl-gp-opt -mno-clearbss -mxl-เบ„เบนเบ™-เบชเบนเบ‡ -mxl-float-เปเบ›เบ‡ -mxl-float-sqrt
-mbig-endian -mlittle-endian -mxl-เบชเบฑเปˆเบ‡เบ„เบทเบ™เปƒเปเปˆ -mxl-mode-app-model

MIPS เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ - THE -EB - เบกเบตเบ™เบฒ=เป‚เบ„เป‰เบ‡ -mtune=เป‚เบ„เป‰เบ‡ -mips1 -mips2 -mips3 -mips4
-mips32 -mips32r2 -mips64 -mips64r2 -mips16 -mno-mips16 -mflip-mips16
-minterlink-เบšเบตเบšเบญเบฑเบ” -mno-interlink-compressed -minterlink-mips16
-mno-interlink-mips16 -mabi=เบŠเปˆเบงเบเป€เบซเบฅเบทเบญ - mabicalls -mno-abicalls -mshared -mno-เปเบšเปˆเบ‡เบ›เบฑเบ™
-mplt -mno-plt -mxgot -mno-xgot -mgp32 -mgp64 -mfp32 -mfp64 -mhard-float
-msoft-float -mno-float -msingle-float -mdouble-float -mabs=เบฎเบนเบšเปเบšเบšเบเบฒเบ™ -mnan=เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”
-mdsp -mno-dsp -MDSPR2 -mno-dspr2 -mmcu -mmno-mcu - เป€เบกเบงเบฒ -mno-eva -mvirt -mno-virt
-mmmicromips -mno-micromips -mfpu=fpu-type -msmartmips -mno-smartmips - เบ„เบนเปˆเบ”เบฝเบง
-mno-paired-single -mdmx -mno-mdmx -mips3d -mno-mips3d -mmt -mno-mt -mllsc
-mno-llsc -mlong64 -mlong32 -msym32 -mno-sym32 -Gnum -mlocal-sdata
-mno-local-sdata -mextern-sdata -mno-extern-sdata -mgpopt -mno-gopt -membedded-data
-mno-embedded-data -muninit-const-in-rodata -mno-uninit-const-in-rodata
-mcode-readable=เบ•เบฑเป‰เบ‡ -msplit-เบ—เบตเปˆเบขเบนเปˆ -mno-split-addresses -mexplicit-relocs
-mno-explicit-relocs -mcheck-เบชเบนเบ™-เบžเบฐเปเบ™เบ -mno-check-zero-division -mdivide-เบเบฑเบšเบ”เบฑเบ
-mdivide-breaks -mmmcpy -mno-memcpy -mlong-เป‚เบ— -mno-long-calls - เบšเป‰เบฒ -mno-mad
- mimadd -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=num - เบชเบฒเบ‚เบฒเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ -mno-เบชเบฒเบ‚เบฒ-เบญเบฒเบ”เบˆเบฐ -mfp-เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™
-mno-fp-เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™ -mvr4130-เบˆเบฑเบ”เบฎเบฝเบ‡ -mno-vr4130-align -msynci -mno-sync
-mrelax-pic-เป‚เบ— -mno-relax-pic-calls -mmcount-ra-เบ—เบตเปˆเบขเบนเปˆ

MMIX เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mlibfuncs -mno-libfuncs - mepsilon -mno-epsilon -mabi=gnu
-mabi=mmixware -mzero-extend -mknutdiv -mtoplevel - เบชเบฑเบ™โ€‹เบเบฒโ€‹เบฅเบฑเบโ€‹ -melf -mbranch-เบ„เบฒเบ”
-mno-branch-predict -mbase-เบ—เบตเปˆเบขเบนเปˆ -mno-base-dresses -msingle-เบญเบญเบ
-mno-single-เบญเบญเบ

MN10300 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ - เปเบกเบ‡เป„เบกเป‰เบซเบผเบฒเบ -mno-mult-bug -mno-am33 -เปเบกเปˆ33 -mam33-2 -เปเบกเปˆ34 -mtune=cpu-
เบ›เบฐเป€เบžเบ” -mreturn-pointer-on-d0 -mno-crt0 -mrelax - เบกเบฐเบฅเบต -msetlb

Moxie เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -เป€เบกเบš -mel -mno-crt0

MSP430 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ - เบŠเบดเบก -masm-hex -mmcu= -mcpu= - เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปƒเบซเบเปˆโ€‹ -msall -mrelax -mhwmult= - minrt

NDS32 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mbig-endian -mlittle-endian -mreduced-regs -mful-regs -mcmov -mno-cmov
-mperf-ext -mno-perf-ext -mv3push -mno-v3push -m16bit -mno-16bit -mgp-เป‚เบ”เบเบเบปเบ‡
-mno-gp-direct -misr-vector-size=num -mcache-block-size=num - เบกเบตเบ™เบฒ=เป‚เบ„เป‰เบ‡
-mforce-fp-as-gp -mforbid-fp-as-gp -mex9 -mctor-dtor -mrelax

Nios II เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -G num -mgpopt -mno-gpopt -mel -เป€เบกเบš -mno-bypass-cache -mbypass-cache
-mno-cache-volatile -mcache-volatile -mno-fast-sw-div -mfast-sw-div -mhw-mul
-mno-hw-mul -mhw-mulx -mno-hw-mulx -mno-hw-div -mhw-div -mcustom-insn=N
-mno- custom-insn -mcustom-fpu-cfg=เบŠเบทเปˆ - mhal -msmallc -msys-crt0=เบŠเบทเปˆ -msys-lib=เบŠเบทเปˆ

PDP-11 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10 -mbcopy
-mbcopy-builtin - mint32 -mno-int16 - mint16 -mno-int32 -mfloat32 -mno-float64
-mfloat64 -mno-float32 - mabshi -mno-abshi -เบชเบฒเบ‚เบฒ-เปเบžเบ‡ -เบชเบฒเบ‚เบฒ-เบฅเบฒเบ„เบฒเบ–เบทเบ
-munix-asm -mdec-asm

picoChip เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mae=ae_type -mvliw-lookahead=N -msymbol-as-address
-mno-inefficient-เป€เบ•เบทเบญเบ™

เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™ PC เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เป€เบšเบดเปˆเบ‡เบ•เบปเบงเป€เบฅเบทเบญเบ RS/6000 เปเบฅเบฐ PowerPC.

RL78 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ - เบŠเบดเบก -mmul=เบšเปเปˆเบกเบต -mmul=g13 -mmul=rl78

RS / 6000 เปเบฅเบฐ เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™ PC เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mcpu=cpu-type -mtune=cpu-type -mcmodel=code-model
-mpowerpc64 -maltivec -mno-altivec -mpowerpc-gpopt -mno-powerpc-gpopt
-mpowerpc-gfxopt -mno-powerpc-gfxopt -mmfcrf -mno-mfcrf -mpopcntb -mno-popcntb
-mpopcntd -mno-popcntd -mfprnd -mno-fprnd -mcmpb -mno-cmpb -mmfpgpr -mno-mfpgpr
-mhard-dfp -mno-hard-dfp -mful-toc -เปœเป‰เบญเบเบชเบธเบ”-toc -mno-fp-in-toc -mno-sum-in-toc
-m64 -m32 -mxl-compat -mno-xl-compat -mpe -malign-power -malign-natural
-msoft-float -mhard-float - เบซเบผเบฒเบ -mno-เบซเบผเบฒเบ -msingle-float -mdouble-float
-msimple-fpu -mstring -mno-string - เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹ -mno-เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹ -mavoid-indexed-addresses
-mno-avoid-indexed-addresses -mfused-madd -mno-fused-madd -mbit-align
-mno-bit-align -mstrict-align -mno-strict-align - เบชเบฒเบกเบฒเบ”เบเป‰เบฒเบเป„เบ”เป‰ -mno-relocateable
-mrelocatable-lib -mno-relocateable-lib -mtoc -mno-toc - เปœเป‰เบญเบ -mlittle-endian
- เปƒเบซเบเปˆ -mbig-endian -mdynamic-no-pic -maltivec -mswdiv -msingle-pic-base
-mprioritize-restricted-insns=เบšเบนเบฅเบดเบกเบฐเบชเบดเบ” -msched-costly-dep=dependence_type
-minsert-sched-nops=เป‚เบ„เบ‡เบเบฒเบ™ -mcall-sysv -mcall-netbsd -maix-struct-return
-msvr4-struct-return -mabi=เบ›เบฐเป€เบžเบ” Abi -msecure-plt -mbss-plt
-mblock-move-inline-limit=num -misel -mno-isel -misel=เปเบกเปˆเบ™ -misel=เบšเปเปˆ -mspe -mno-spe
-mspe=เปเบกเปˆเบ™ -mspe=เบšเปเปˆ - เบ„เบนเปˆ -mgen-cell-microcode -mwarn-cell-microcode -mvrsave
-mno-vrsave - mmulhw -mno-mulhw -mdlmzb -mno-dlmzb -mfloat-gprs=เปเบกเปˆเบ™ -mfloat-gprs=เบšเปเปˆ
-mfloat-gprs=เบ”เปˆเบฝเบง -mfloat-gprs=เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ -mprototype -mno-prototype - เบŠเบดเบก -mmvme
- เบšเป‰เบฒ - myellowknife - memb -msdata -msdata=เป€เบฅเบทเบญเบ -mvxworks -G num - เบเบฐเบ—เบนเป‰ -mrecip
-mrecip=เป€เบฅเบทเบญเบ -mno-recip -mrecip-precision -mno-recip-precision -mveclibabi=เบ›เบฐเป€เบžเบ” -mfriz
-mno-friz -mpointers-to-nested-functions -mno-pointers-to-nested-functions
-msave-toc-เบ—เบฒเบ‡เบญเป‰เบญเบก -mno-save-toc-indirect -mpower8-fusion -mno-mpower8-fusion
-mpower8-vector -mno-power8-vector -mcrypto -mno-crypto -mdirect-เบเป‰เบฒเบ -mno-direct-เบเป‰เบฒเบ
-mquad เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹ -mno-quad-memory -mquad-memory-atomic -mno-quad-memory-atomic
-mcompat-align-parm -mno-compat-align-parm

RX เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -m64bit-เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ -m32bit-เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ -fpu -nofpu -mcpu= -mbig-endian-data
-mlittle-endian-data -msmall-เบ‚เปเป‰เบกเบนเบ™ - เบŠเบดเบก -mno-sim -mas100- syntax -mno-as100-syntax
-mrelax -mmax-constant-size= -mint-register= - mpid -mno-warn-multiple-fast-interrupts
-msave-acc-in-interrupts

S / 390 เปเบฅเบฐ zSeries เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mtune=cpu-type - เบกเบตเบ™เบฒ=cpu-type -mhard-float -msoft-float
-mhard-dfp -mno-hard-dfp -mlong-double-64 -mlong-double-128 -mbackchain
-mno-backchain -mpacked-stack -mno-packed-stack -msmall-exec -mno-small-exec
-mmvcle -mno-mvcle -m64 -m31 -mdebug -mno-debug -เป€เบกเบŠเบฒ -mzarch -mtpf-trace
-mno-tpf-trace -mfused-madd -mno-fused-madd -mwarn-framesize -mwar-dynamicstack
-mstack เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹ -mstack-เบเบญเบ‡ -mhotpatch=เบ„เปเบฒเป€เบ„เบดเปˆเบ‡,เบ„เปเบฒเป€เบ„เบดเปˆเบ‡

เบœเบฐเบฅเบดเบ”เปเบ™เบ™ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -เป€เบกเบš -mel -mnhwloop -muls -mmac - เบ„เบฐโ€‹เปเบ™เบ™ 5 - เบ„เบฐเปเบ™เบ™ 5u - เบ„เบฐโ€‹เปเบ™เบ™ 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-compact-nofpu -mb -ml -mdalign -mrelax -migtable -mfmovd -mhitachi -mrenesas
-mno-renesas -mnomacsave -เบกเบตเปˆ -mno-ieee - เบšเบดเบ” - misize -minline-ic_invalidate
- เบ‚เบปเบง -mspace - เบกเบฑเบ -musermode -multcost=เบˆเปเบฒเบ™เบงเบ™ -mdiv=เปเบœเบ™เบเบธเบ”เบ—เบฐเบชเบฒเบ”
-mdivsi3_libfunc=เบŠเบทเปˆ -mfixed-range=เป„เบฅเบเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ -mindexed-addressing
-mgettrcost=เบˆเปเบฒเบ™เบงเบ™ -mpt-เปเบเป‰เป„เบ‚ -maccumulate-outgoing-args -minvalid-เบชเบฑเบ™เบเบฒเบฅเบฑเบ
-matomic-model=เบฎเบนเบšเปเบšเบšเบ›เบฐเบฅเปเบฒเบกเบฐเบ™เบน -mbranch-cost=num -mzdcbranch -mno-zdcbranch -mfused-madd
-mno-fused-madd -mfsca -mno-fsca -mfsrra -mno-fsrra -mpretend-cmove -mtas

เปเบชเบ‡เบญเบฒเบ—เบดเบ” 2 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mclear-hwcap -mno-clear-hwcap - เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบšเปเปˆเบชเบฐเบญเบฒเบ” -mno- impure-text
- เบเบฐเบ—เบนเป‰ - เบเบฐเบ—เบนเป‰

SPARC เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mcpu=cpu-type -mtune=cpu-type -mcmodel=code-model -mmemory-model=mem-
เบฎเบนเบšเปเบšเบš -m32 -m64 -mapp-regs -mno-app-regs -mfaster-structs -mno-เป„เบง-เป‚เบ„เบ‡เบชเป‰เบฒเบ‡
-mflat -mno-เปเบ› -mfpu -mno-fpu -mhard-float -msoft-float -mhard-quad-float
-msoft-quad-float -mstack-เบญเบฐเบ„เบฐเบ•เบด -mno-stack-bias -munaligned-เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ
-mno-unaligned-doubles -muser-mode -mno-user-mode -mv8plus -mno-v8plus -mvis
-mno-vis -mvis2 -mno-vis2 -mvis3 -mno-vis3 -mcbcond -mno-cbcond -mfmaf -mno-fmaf
-mpopc -mno-popc -mfix-at697f -mfix-ut699

SPU เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mwar-reloc -merror-reloc -msafe-dma -munsafe-dma -branch - เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹
-msmall-mem -mlarge-mem -mstdmain -mfixed-range=เป„เบฅเบเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ -mea32 -mea64
-maddress-space-เปเบ›เบ‡ -mno-address-space-เบเบฒเบ™เปเบ›เบ‡ -mcache-size=เบ‚เบฐเบซเบ™เบฒเบ” cache
- เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡ matomicโ€‹ -mno-atomic-เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”

เบฅเบฐเบšเบปเบš V เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ - เบ–เบฒเบก -Qn -YP,เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ -Ym,dir

TILE-Gx เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mcpu=CPU -m32 -m64 -mbig-endian -mlittle-endian -mcmodel=code-model

TILEPro เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mcpu=cpu -m32

V850 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mlong-เป‚เบ— -mno-long-calls -mep -mno-ep -mprolog-function
-mno-prolog-function -mspace -mtda=n -msda=n -mzda=n -mapp-regs -mno-app-regs
-mdisable-callt -mno-disable-callt -mv850e2v3 -mv850e2 -mv850e1 -mv850es -mv850e
-mv850 -mv850e3v5 - เบกเบปเบง -mrelax -mlong-เป‚เบ”เบ” -msoft-float -mhard-float -mgcc-abi
-mrh850-abi -mbig-เบชเบฐเบซเบผเบฑเบš

Vax เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ - เบกเบ -mgnu - munix

เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ VMS เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mvms-return-codes -mdebug-main=เบ„เบณ เบ™เบณ เปœเป‰เบฒ - mmalloc64 -mpointer-size=เบ‚เบฐเบซเบ™เบฒเบ”

VxWorks เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mrtp - เบšเปเปˆเบชเบฐเบ–เบดเบ” -Bstatic -Bdynamic -Xbind-lazy -Xbind-เบ”เบฝเบงเบ™เบตเป‰

x86-64 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เป€เบšเบดเปˆเบ‡ i386 เปเบฅเบฐ x86-64 เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

Xstormy16 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ - เบŠเบดเบก

Xtensa เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ -mconst16 -mno-const16 -mfused-madd -mno-fused-madd -mforce-no-pic
-mserialize-volatile -mno-serialize-volatile -mtext-section-literals
-mno-text-section-literals -mtarget-align -mno-target-align -mlongcalls
-mno-longcalls

zSeries เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เป€เบšเบดเปˆเบ‡เบ•เบปเบงเป€เบฅเบทเบญเบ S/390 เปเบฅเบฐ zSeries.

เบฅเบฐเบซเบฑเบ” เบเบฒเบ™เบœเบฐเบฅเบดเบ” เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-fcall-เบšเบฑเบ™เบ—เบถเบ-reg -fcall-เปƒเบŠเป‰-reg - เบ„เบปเบ‡โ€‹เบ—เบตเปˆ -reg - เบ‚เปเป‰โ€‹เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹ -fnon-call-exceptions
-fdelete-dead-exceptions -funwind-เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ -fasynchronous-unwind-เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ -fno-gnu-เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ
-finhibit-size-directive - finstrument - เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹
-finstrument-functions-exclude-function-list=เบŠเบดเบก,เบŠเบดเบก...
-finstrument-functions-exclude-file-list=เป€เบญเบเบฐเบชเบฒเบ™,เป€เบญเบเบฐเบชเบฒเบ™... -fno-เบ—เบปเปˆเบงเป„เบ› -fno-ident
-fpcc-struct-return -fpic -fPIC -fpie -fPIE -fno-jump-tables -frecord-gcc-เบชเบฐเบซเบผเบฑเบš
-freg-struct-return -fshort-enums -fshort-double -fshort-wchar -fverbose-asm
-fpack-struct[=n] -fstack-เบเบงเบ”โ€‹เบชเบญเบšโ€‹ -fstack-limit-register=reg -fstack-limit-symbol=เบŠเบดเบก
-fno-stack-เบˆเบณเบเบฑเบ” -fsplit-stack -fleading-underscore -ftls-model=เบฎเบนเบšเปเบšเบš
-fstack-reuse=reuse_level -ftrapv -fwrapv -fbounds-เบเบงเบ”โ€‹เบชเบญเบšโ€‹ - เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™
-fstrict-volatile-bitfields -fsync-libcalls

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก เป„เบ”เป‰ เบ›เบฐเป€เบžเบ” of เบœเบปเบ™เบœเบฐเบฅเบดเบ”
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบชเบฒเบกเบฒเบ”เบกเบตเป€เบ–เบดเบ‡เบชเบตเปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™: preprocessing, compilation เป€เบซเบกเบฒเบฐเบชเบปเบก, เบ›เบฐเบเบญเบšเปเบฅเบฐ
เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡, เบชเบฐเป€เบซเบกเบตเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบฑเป‰เบ™. GCC เบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบฅเบฐเบฅเบงเบšเบฅเบงเบกเบซเบผเบฒเบเป†เบขเปˆเบฒเบ‡
เป„เบŸเบฅโ€‹เปŒโ€‹เบšเปเปˆโ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ›เป‰เบญเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบงโ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹, เบซเบผเบทโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบ›เป‰เบญเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™ assemblerโ€‹; เปเบฅเป‰เบง
เปเบ•เปˆเบฅเบฐเป€เบญเบเบฐเบชเบฒเบ™เบ›เบฐเบเบญเบšเบ›เบฐเบเบญเบšเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ, เปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบงเบฑเบ”เบ–เบธเบ—เบฑเบ‡เบซเบกเบปเบ”
เป„เบŸเบฅเปŒ (เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเปƒเบซเบกเปˆ, เปเบฅเบฐเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป€เบ›เบฑเบ™ input) เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰.

เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ”เบ™เบถเปˆเบ‡, เบ™เบฒเบกเบชเบฐเบเบธเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบˆเบฐเบเปเบฒเบ™เบปเบ”เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™
เป€เบฎเบฑเบ”เปเบฅเป‰เบง:

เป€เบญเบเบฐเบชเบฒเบ™.c
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ C เบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™.

เป€เบญเบเบฐเบชเบฒเบ™.i
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ C เบ—เบตเปˆเบšเปเปˆเบ„เบงเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™.

เป€เบญเบเบฐเบชเบฒเบ™.ii
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ C++ เบ—เบตเปˆเบšเปเปˆเบ„เบงเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™.

เป€เบญเบเบฐเบชเบฒเบ™.m
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Objective-C. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš libobjc เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ›เบฑเบ™
เบงเบฝเบเป‚เบ„เบ‡เบเบฒเบ™ Objective-C.

เป€เบญเบเบฐเบชเบฒเบ™.เป„เบก
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Objective-C เบ—เบตเปˆเบšเปเปˆเบ„เบงเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™.

เป€เบญเบเบฐเบชเบฒเบ™mm
เป€เบญเบเบฐเบชเบฒเบ™.M
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Objective-C++. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš libobjc เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰
เป‚เบ›เบฃเปเบเบฃเบก Objective-C++ เป€เบฎเบฑเบ”เบงเบฝเบ. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ .M เบซเบกเบฒเบเป€เบ–เบดเบ‡เบ•เบปเบงเบซเบ™เบฑเบ‡เบชเบท M.

เป€เบญเบเบฐเบชเบฒเบ™.mii
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Objective-C++ เบ—เบตเปˆเบšเปเปˆเบ„เบงเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™.

เป€เบญเบเบฐเบชเบฒเบ™.h
C, C++, Objective-C เบซเบผเบท Objective-C++ header file เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ precompiled
header (เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™), เบซเบผเบท C, C++ header เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ Ada spec (เบœเปˆเบฒเบ™
-fdump-ada-spec เบชเบฐเบซเบผเบฑเบš).

เป€เบญเบเบฐเบชเบฒเบ™cc
เป€เบญเบเบฐเบชเบฒเบ™.cp
เป€เบญเบเบฐเบชเบฒเบ™.cxx
เป€เบญเบเบฐเบชเบฒเบ™.cpp
เป€เบญเบเบฐเบชเบฒเบ™.CPP
เป€เบญเบเบฐเบชเบฒเบ™.c++
เป€เบญเบเบฐเบชเบฒเบ™.C
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ C++ เบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเปƒเบ™ .cxx, เบชเบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบ
เบ—เบฑเบ‡เบชเบญเบ‡เบˆเบฐเบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เบ•เบปเบงเบซเบ™เบฑเบ‡เบชเบท x. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, .C เปเบฒเบเป€เบ–เบดเบ‡เบ•เบปเบงเปœเบฑเบ‡เบชเบท C.

เป€เบญเบเบฐเบชเบฒเบ™mm
เป€เบญเบเบฐเบชเบฒเบ™.M
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Objective-C++ เบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™.

เป€เบญเบเบฐเบชเบฒเบ™.mii
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Objective-C++ เบ—เบตเปˆเบšเปเปˆเบ„เบงเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™.

เป€เบญเบเบฐเบชเบฒเบ™.เบŠเบก
เป€เบญเบเบฐเบชเบฒเบ™.H
เป€เบญเบเบฐเบชเบฒเบ™.hp
เป€เบญเบเบฐเบชเบฒเบ™.hxx
เป€เบญเบเบฐเบชเบฒเบ™.hp
เป€เบญเบเบฐเบชเบฒเบ™.HPP
เป€เบญเบเบฐเบชเบฒเบ™.h++
เป€เบญเบเบฐเบชเบฒเบ™.tcc
เป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบง C++ เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเป„เบงเป‰เบเปˆเบญเบ™ เบซเบผเบท Ada spec.

เป€เบญเบเบฐเบชเบฒเบ™.f
เป€เบญเบเบฐเบชเบฒเบ™.เบชเปเบฒเบฅเบฑเบš
เป€เบญเบเบฐเบชเบฒเบ™.ftn
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Fortran เบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบšเปเปˆเบ„เบงเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™.

เป€เบญเบเบฐเบชเบฒเบ™.F
เป€เบญเบเบฐเบชเบฒเบ™.FOR
เป€เบญเบเบฐเบชเบฒเบ™.fpp
เป€เบญเบเบฐเบชเบฒเบ™.FPP
เป€เบญเบเบฐเบชเบฒเบ™.FTN
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Fortran เบ„เบปเบ‡เบ—เบตเปˆเบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™ (เบเบฑเบšเปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก
preprocessor).

เป€เบญเบเบฐเบชเบฒเบ™.f90
เป€เบญเบเบฐเบชเบฒเบ™.f95
เป€เบญเบเบฐเบชเบฒเบ™.f03
เป€เบญเบเบฐเบชเบฒเบ™.f08
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Fortran เบŸเบฃเบตเบ—เบตเปˆเบšเปเปˆเบ„เบงเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™.

เป€เบญเบเบฐเบชเบฒเบ™.F90
เป€เบญเบเบฐเบชเบฒเบ™.F95
เป€เบญเบเบฐเบชเบฒเบ™.F03
เป€เบญเบเบฐเบชเบฒเบ™.F08
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Fortran เบŸเบฃเบตเบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™ (เบเบฑเบšเปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก
preprocessor).

เป€เบญเบเบฐเบชเบฒเบ™.เป„เบ›
เป„เบ›เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡.

เป€เบญเบเบฐเบชเบฒเบ™.เป‚เบ„เบชเบฐเบ™เบฒ
เป„เบŸเบฅเปŒเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Ada เบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบซเบปเบงเปœเปˆเบงเบเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” (เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ‚เบญเบ‡ a
package, subprogram, or generic, or a generic instantiation), เบซเบผเบท เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”
เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เบŠเบทเปˆโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ” (เบŠเบธเบ”โ€‹, เบ—เบปเปˆเบงโ€‹เป„เบ›โ€‹, เบซเบผเบทโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เบŠเบทเปˆโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบเปˆเบญเบโ€‹)โ€‹. เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง
เป„เบŸเบฅเปŒเบเบฑเบ‡เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ เบ‚เปเป‰เบเปเบฒเบซเบ™เบปเบ”.

เป€เบญเบเบฐเบชเบฒเบ™.adb
เป„เบŸเบฅเปŒเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Ada เบ—เบตเปˆเบกเบตเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” (เป‚เบ„เบ‡เบเบฒเบ™เบเปˆเบญเบ เบซเบผเบทเป€เบ™เบทเป‰เบญเปƒเบ™เบŠเบธเบ”).
เป„เบŸเบฅเปŒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบฑเบ‡เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ เบฎเปˆเบฒเบ‡เบเบฒเบ.

เป€เบญเบเบฐเบชเบฒเบ™.d
D เป„เบŸเบฅเปŒเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡.

เป€เบญเบเบฐเบชเบฒเบ™.เบ”เบต
D เป„เบŸเบฅเปŒเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš.

เป€เบญเบเบฐเบชเบฒเบ™.dd
D เป€เบญเบเบฐเบชเบฒเบ™เบฅเบฐเบซเบฑเบ”เป€เบญเบเบฐเบชเบฒเบ™.

เป€เบญเบเบฐเบชเบฒเบ™.s
เบฅเบฐเบซเบฑเบ”เบ›เบฐเบเบญเบš.

เป€เบญเบเบฐเบชเบฒเบ™.S
เป€เบญเบเบฐเบชเบฒเบ™sx
เบฅเบฐเบซเบฑเบ” Assembler เบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™.

เบญเบทเปˆเบ™เป†
เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบˆเบฐเบ›เป‰เบญเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡. เบŠเบทเปˆเป„เบŸเบฅเปŒเปƒเบ”เบ™เบถเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰
suffix เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธเบžเบฒเบชเบฒเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบ”เป‰เบงเบ -x เบ•เบปเบงเป€เบฅเบทเบญเบ:

-x เบžเบฒเบชเบฒ
เบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡ เบžเบฒเบชเบฒ เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰ (เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ›เปˆเบญเบเปƒเบซเป‰
compiler เป€เบฅเบทเบญเบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบŠเบทเปˆเป„เบŸเบฅเปŒ suffix). เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบšเบ—เบธเบเบ„เบปเบ™
เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป„เบŸเบฅเปŒเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบปเบ™เบเปˆเบงเบฒเบ•เปเปˆเป„เบ› -x เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบ„เปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบš เบžเบฒเบชเบฒ เปเบกเปˆเบ™:

c c-header cpp-output
c++ c++-header c++-cpp-output
objective-c objective-c-header objective-c-cpp-output
objective-c++ objective-c++-header objective-c++-cpp-output
assembler-with-cpp
ada
d
f77 f77-cpp-input f95 f95-cpp-input
go
java

-x none
เบ›เบดเบ”เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบžเบฒเบชเบฒเปƒเบ”เบ™เบถเปˆเบ‡, เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบŸเบฅเปŒเบ•เปเปˆเบกเบฒเบ–เบทเบเบˆเบฑเบ”เบเบฒเบ™
เบญเบตเบ‡โ€‹เบ•เบฒเบกโ€‹เบเบฒเบ™โ€‹เบ•เปเปˆโ€‹เบ—เป‰เบฒเบโ€‹เบŠเบทเปˆโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒ (เบ”เบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบกเปˆเบ™โ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹ -x เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”).

-pass-exit-codes
เบ—เบณ เบกเบฐเบ”เบฒ gcc เป‚เบ›เบฅเปเบเบฅเบกเบญเบญเบเบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ” 1 เบ–เป‰เบฒเป„เบฅเบเบฐเปƒเบ”เบ™เบถเปˆเบ‡เบ‚เบญเบ‡ compiler เบเบฑเบšเบ„เบทเบ™เบกเบฒ
เบฅเบฐเบซเบฑเบ”เบเบฑเบšเบ„เบทเบ™เบกเบฒเบ—เบตเปˆเบšเปเปˆเบชเปเบฒเป€เบฅเบฑเบ”. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธ -pass-exit-codes, เบเบฒเบ™ gcc เป‚เบ„เบ‡เบเบฒเบ™เปเบ—เบ™
เบ•เบญเบšเบเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบชเบนเบ‡เบ—เบตเปˆเบชเบธเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบœเบฐเบฅเบดเบ”เป‚เบ”เบเป„เบฅเบเบฐเปƒเบ”เป†เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”
เบ•เบปเบงเบŠเบตเป‰เบšเบญเบ. เบ”เป‰เบฒเบ™เปœเป‰เบฒเบ‚เบญเบ‡ C, C++, เปเบฅเบฐ Fortran เบเบฑเบšเบ„เบทเบ™เบกเบฒ 4 เบ–เป‰เบฒเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเปƒเบ™
เปเบกเปˆเบ™เบžเบปเบš.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบšเบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ -x (เบซเบผเบทเบŠเบทเปˆเป„เบŸเบฅเปŒเบ•เปเปˆเบ—เป‰เบฒเบ)
เบšเบญเบ gcc เบšเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบฅเบฐเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -c, -S, เบซเบผเบท -E เป€เบงเบปเป‰เบฒเบขเบนเปˆเปƒเบช gcc เปเบกเปˆเบ™เป€เบžเบทเปˆเบญ
เบขเบธเบ”. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบšเบฒเบ‡เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, -x cpp-output -E) เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹ gcc to do
เบšเปเปˆโ€‹เบกเบตโ€‹เบซเบเบฑเบ‡โ€‹เป€เบฅเบตเบ.

-c เบฅเบงเบšเบฅเบงเบกเบซเบผเบทเบ›เบฐเบเบญเบšเป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš, เปเบ•เปˆเบšเปเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ
เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบŠเบทเปˆเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ—เบ™เบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบ .c,
.i, .s, เปเบฅเบฐเบญเบทเปˆเบ™เป†, เบเบฑเบš .o.

เป„เบŸเบฅเปŒเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบ, เบšเปเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™ เบซเบผเบทเบเบฒเบ™เบ›เบฐเบเบญเบš, เปเบกเปˆเบ™เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ.

-S เบขเบธเบ”เป€เบŠเบปเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก; เบขเปˆเบฒโ€‹เป€เบ•เบปเป‰เบฒโ€‹เป‚เบฎเบก. เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™
เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบฅเบฐโ€‹เบซเบฑเบ” assembler เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ›เป‰เบญเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เบชเบฐโ€‹เบกเบฒโ€‹เบŠเบดเบโ€‹เป„เบ”เป‰โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹.

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบŠเบทเปˆเป„เบŸเบฅเปŒ assembler เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ—เบ™เบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบ
.c, .i, เปเบฅเบฐเบญเบทเปˆเบ™เป†, เบเบฑเบš .s.

เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบกเปˆเบ™เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ.

-E เบขเบธเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™; เบšเปเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ compiler เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก. เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™
เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ preprocessed, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.

เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™เบˆเบฐเบ–เบทเบเบฅเบฐเป€เบฅเบตเบ.

-o เป€เบญเบเบฐเบชเบฒเบ™
เบงเบฒเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปƒเบ™เป„เบŸเบฅเปŒ เป€เบญเบเบฐเบชเบฒเบ™. เบ™เบตเป‰เปƒเบŠเป‰เบเบฑเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ›เบฐเป€เบžเบ”เปƒเบ”เบเปเปˆเบ•เบฒเบก,
เบšเปเปˆโ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เป„เบ”เป‰โ€‹, เป„เบŸเบฅโ€‹เปŒโ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹, เป„เบŸเบฅโ€‹เปŒ assembler เบซเบผเบท preprocessed C
เบฅเบฐเบซเบฑเบ”.

If -o เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบเบฒเบ™เปƒเบชเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰ เบ, เบงเบฑเบ”เบ–เบธ
file for source.suffix in เปเบซเบผเปˆเบ‡.o, เป€เบญเบเบฐเบชเบฒเบ™เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบ•เบปเบ™เปƒเบ™ source.s, เป€เบ›เบฑเบ™ precompiled
เป„เบŸเบฅเปŒเบซเบปเบงเปƒเบ™ source.suffix.gch, เปเบฅเบฐเปเบซเบผเปˆเบ‡ C preprocessed เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.

-v เบžเบดเบก (เบ•เบฒเบกเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบญเบญเบ) เบ„เปเบฒเบชเบฑเปˆเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบดเบกเบˆเปเบฒเบ™เบงเบ™เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เป‚เบ›เบฅเปเบเบฅเบกเป„เบ”เป€เบงเบต compiler เปเบฅเบฐเบ‚เบญเบ‡
preprocessor เปเบฅเบฐ compiler เป€เบซเบกเบฒเบฐเบชเบปเบก.

-###
เบ„เบท -v เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ–เบฝเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เปเบ•เปˆโ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹
เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบ เบซเบผเบท "./-_". เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบš shell scripts
เบˆเบฑเบšเบšเบฑเบ™เบ—เบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเป‰เบฒเบ‡เป‚เบ”เบเบ„เบปเบ™เบ‚เบฑเบš.

- เบ›เบธเบš
เปƒเบŠเป‰เบ—เปเปˆเบซเบผเบฒเบเบเบงเปˆเบฒเป„เบŸเบฅเปŒเบŠเบปเปˆเบงเบ„เบฒเบงเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบญเบฑเบ™เบ™เบตเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบšเบฒเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ•เบปเบงเบ›เบฐเบเบญเบšเบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰
เบˆเบฒเบเบ—เปเปˆ; เปเบ•เปˆเบœเบนเป‰เบ›เบฐเบเบญเบš GNU เบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒ.

- เบŠเปˆเบงเบ
เบžเบดเบก (เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”) เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเป‚เบ”เบ
gccเบ—เบตเปˆเบขเบนเปˆ เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ -v เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบเบฑเบ‡โ€‹เป„เบ”เป‰โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹ - เบŠเปˆเบงเบ เบเบฑเบ‡โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบชเบปเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เบเบฑเบšโ€‹เบ•เปˆเบฒเบ‡เป†โ€‹
เบ‚เบฐโ€‹เบšเบงเบ™โ€‹เบเบฒเบ™โ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เป‚เบ”เบโ€‹ gcc, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ
เบเบญเบกโ€‹เบฎเบฑเบš. เบ–เป‰เบฒ -Wextra เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบเบฑเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰ (เบเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹ - เบŠเปˆเบงเบ เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹)
เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบžเบงเบเบกเบฑเบ™เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™
เบชเบฐเปเบ”เบ‡.

--เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบเบฒเบ™โ€‹เบŠเปˆเบงเบโ€‹เป€เบซเบผเบทเบญโ€‹
เบžเบดเบก (เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”) เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบฐเป€เบžเบฒเบฐเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ
เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบกเบท. เบชเบณเบฅเบฑเบšเบšเบฒเบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบ เบ‚เปเป‰เบกเบนเบ™เบชเบฐเป€เบžเบฒเบฐเป€เบ›เบปเป‰เบฒเปเบฒเบเบžเบดเป€เบชเบ”เบญเบฒเบ”เป€เบ›เบฑเบ™
เบžเบดเบกเบญเบญเบ.

--help={เบฅเบฐเบ”เบฑเบš|[^]เบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”}[...]
เบžเบดเบก (เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”) เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเป‚เบ”เบ
compiler เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™
เบซเป‰เบญเบ‡โ€‹เบฎเบฝเบ™โ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹:

เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
เบชเบฐเปเบ”เบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเป‚เบ”เบ compiler.

เบ„เปเบฒเป€เบ•เบทเบญเบ™
เบชเบฐเปเบ”เบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบ„เบงเบšเบ„เบธเบกเบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™เบ—เบตเปˆเบœเบฐเบฅเบดเบ”เป‚เบ”เบเบ„เบญเบกเบžเบตเบงเป€เบ•เบต.

เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบ
เบชเบฐเปเบ”เบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเบชเบฐเป€เบžเบฒเบฐเป€เบ›เบปเป‰เบฒเปเบฒเบ. เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบš --เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบเบฒเบ™โ€‹เบŠเปˆเบงเบโ€‹เป€เบซเบผเบทเบญโ€‹ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ
เบ•เบปเบงเป€เบฅเบทเบญเบเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ เปเบฅเบฐเบ•เบปเบงเบ›เบฐเบเบญเบšเบšเปเปˆเป„เบ”เป‰เบชเบฐเปเบ”เบ‡. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบเป‰เบญเบ™โ€‹เบงเปˆเบฒ
เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ --help= syntax

params
เบชเบฐเปเบ”เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบฎเบฑเบšเบฎเบนเป‰เป‚เบ”เบ --param เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เบžเบฒเบชเบฒ
เบชเบฐเปเบ”เบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบš เบžเบฒเบชเบฒ, เบšเปˆเบญเบ™เบ—เบตเปˆ เบžเบฒเบชเบฒ เปเบกเปˆเบ™โ€‹เบŠเบทเปˆโ€‹เบ‚เบญเบ‡โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เปƒเบ™โ€‹
เบžเบฒเบชเบฒเบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเปƒเบ™ GCC เบฅเบธเป‰เบ™เบ™เบตเป‰.

เบ—เบปเปˆเบงเป„เบ›
เบชเบฐโ€‹เปเบ”เบ‡โ€‹เบ•เบปเบงโ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ—เบปเปˆเบงโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เบ—เบธเบโ€‹เบžเบฒโ€‹เบชเบฒโ€‹.

เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบš:

เบšเปเปˆเบกเบตเบซเบผเบฑเบเบ–เบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™
เบชเบฐเปเบ”เบ‡เบžเบฝเบ‡เปเบ•เปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™.

เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก
เบ•เบปเบงเป€เบฅเบทเบญเบเบชเบฐเปเบ”เบ‡เบเบฒเบ™เป‚เบ•เป‰เปเบเป‰เบ‡เบ—เบตเปˆเบ›เบฐเบเบปเบ”เบ‚เบถเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบฑเบ™เบเบฒเบ™เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เปƒเบ™เบญเบฑเบ™เบ”เบฝเบงเบเบฑเบ™
เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เป€เบŠเบฑเปˆเบ™: --help=เป€เบ›เบปเป‰เบฒเปเบฒเบ.

เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ
เบ•เบปเบงเป€เบฅเบทเบญเบเบชเบฐเปเบ”เบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบ›เบฒเบเบปเบ”เป€เบ›เบฑเบ™เบ„เปเบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš, เป€เบŠเบฑเปˆเบ™: -o output-file.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เบ—เบธเบเบชเบฐเบซเบผเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบธเบ™เป‚เบ”เบ
compiler เป„เบ”เป‰, เปƒเบŠเป‰:

--help=เป€เบ›เบปเป‰เบฒเปเบฒเบ,เบšเปเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™

เบ„เบงเบฒเบกโ€‹เบฎเบนเป‰โ€‹เบชเบถเบโ€‹เบ‚เบญเบ‡โ€‹เบ„เบธเบ™โ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบชเบฒโ€‹เบกเบฒเบ” inverted เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เบซเบ™เป‰เบฒโ€‹เบกเบฑเบ™โ€‹เบเบฑเบšโ€‹ ^ เบฅเบฑเบเบชเบฐเบ™เบฐ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เบชเบญเบ‡โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” (เป€เบŠเบฑเปˆเบ™โ€‹, เบซเบ™เบถเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ—เบฑเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบ›เบตเบ”โ€‹เบซเบผเบทโ€‹เบ›เบดเบ”โ€‹
เปเบฅเบฐเบšเปเปˆเป€เบญเบปเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡) เบ—เบตเปˆเบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบ, เปƒเบŠเป‰:

--help=warnings,^เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก,^เบšเปเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™

เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบš --help= เบšเปเปˆเบ„เบงเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

เบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบซเป‰เบญเบ‡เบฎเบฝเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบตเป‰เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบˆเปเบฒเบเบฑเบ”เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบซเบผเบฒเบเบ—เบตเปˆเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡. เบเปเบฅเบฐเบ™เบตเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เปเบกเปˆเบ™เป€เบงเบฅเบฒ
เบซเบ™เบถเปˆเบ‡เปƒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™เปเบกเปˆเบ™ เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เบ—เบธเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเบฐเป€เบžเบฒเบฐ
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เปƒเบŠเป‰:

--help=เป€เบ›เบปเป‰เบฒเปเบฒเบ,เบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš

เป„เบ”เป‰ --help= เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบฒเบกเบฒเบ”เบ–เบทเบเบŠเป‰เปเบฒเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. เปเบ•เปˆเบฅเบฐเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡
เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™, เบ‚เป‰เบฒเบกเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเบชเบฐเปเบ”เบ‡เปเบฅเป‰เบง.

เบ–เป‰เบฒ -Q เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบเปˆเบญเบ™ --help= เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹
เบ‚เปเป‰เบ„เบงเบฒเบกเบญเบฐเบ—เบดเบšเบฒเบเบชเบฐเปเบ”เบ‡เป‚เบ”เบ --help= เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹, เบเบฒเบ™โ€‹เบŠเบตเป‰โ€‹เบšเบญเบโ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบงเปˆเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เป€เบ›เบตเบ”โ€‹เปƒเบซเป‰โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹, เบ›เบดเบ”โ€‹เบซเบผเบทโ€‹เบ•เบฑเป‰เบ‡โ€‹
เบเบฑเบšเบ„เปˆเบฒเบชเบฐเป€เบžเบฒเบฐ (เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ compiler เบฎเบนเป‰เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบˆเบธเบ”เบ—เบตเปˆ
--help= เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹)โ€‹.

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ–เบทเบเบ•เบฑเบ”เบญเบญเบเบˆเบฒเบเบžเบญเบ” ARM เบ‚เบญเบ‡ gcc:

% gcc -Q -mabi=2 --help=target -c
เบ•เบปเบงเป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบปเป‰เบฒเปเบฒเบเบชเบฐเป€เบžเบฒเบฐ:
-mabi=2
-mabort-on-noreturn [เบ„เบปเบ™เบžเบดเบเบฒเบ™]
- เปเบœเบ™เบ—เบตเปˆ [เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™]

เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบญเปˆเบญเบ™เป„เบซเบงเบ•เปเปˆเบเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ”เบ—เบตเปˆเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบขเบนเปˆ -O2 เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹:

-Q -O2 --help=optimizers

เบญเบตเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบปเป‰เบ™เบžเบปเบšเบงเปˆเบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš binary เปƒเบ”เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ -O3 เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹:

gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
diff /tmp/O2-opts /tmp/O3-opts | grep เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™

-no-canonical-prefixes
เบšเปเปˆเบ‚เบฐเบซเบเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบฑเบ™เบเบฒเบฅเบฑเบเปƒเบ”เป†, เปเบเป‰เป„เบ‚เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡ /../ or /./, เบซเบผเบทเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡
เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡.

- เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡
เบชเบฐเปเบ”เบ‡เปเบฒเบเป€เบฅเบเป€เบงเบตเบŠเบฑเบ™ เปเบฅเบฐเบฅเบดเบ‚เบฐเบชเบดเบ”เบ‚เบญเบ‡ GCC เบ—เบตเปˆเบ–เบทเบเบฎเบฝเบเบฎเป‰เบญเบ‡.

- เบซเปเปˆ
เป€เบญเบตเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบเปˆเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบžเบฒเบเปƒเบ•เป‰เป‚เบ„เบ‡เบเบฒเบ™ wrapper. เบŠเบทเปˆเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ wrapper เปเบฅเบฐ
เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เป€เบ›เบฑเบ™เบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเปเบเบเบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”.

gcc -c tc -wrapper gdb,--args

เบ™เบตเป‰เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เป‚เบ„เบ‡เบเบฒเบ™เบเปˆเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ gcc เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™ gdb --args, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เบ‚เบญเบ‡ cc1 is
gdb --args cc1 ....

-fplugin=เบŠเบทเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™,
เป‚เบซเบฅเบ”เบฅเบฐเบซเบฑเบ” plugin เปƒเบ™เป„เบŸเบฅเปŒ เบŠเบทเปˆ.so, เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป€เบ›เบฑเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เป€เบžเบทเปˆเบญ dlopen'd เป‚เบ”เบ
compiler เป„เบ”เป‰. เบŠเบทเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเบ•เบปเบงเบ›เบฅเบฑเบเบญเบดเบ™
เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ (เป€เบšเบดเปˆเบ‡ -fplugin-arg-เบŠเบทเปˆ-เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™=เบกเบนเบ™เบ„เปˆเบฒ เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰). เปเบ•เปˆเบฅเบฐ
plugin เบ„เบงเบ™เบเปเบฒเบ™เบปเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆ callback เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ Plugins API.

-fplugin-arg-เบŠเบทเปˆ-เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™=เบกเบนเบ™เบ„เปˆเบฒ
เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™ เบ”เป‰เบงเบเบกเบนเบ™เบ„เปˆเบฒ เบกเบนเบ™เบ„เปˆเบฒ เบชเปเบฒเบฅเบฑเบš plugin เป€เบญเบตเป‰เบ™เบงเปˆเบฒ เบŠเบทเปˆ.

-fdump-ada-spec[-เบšเบฒเบ‡]
เบชเปเบฒเบฅเบฑเบšเปเบซเบผเปˆเบ‡ C เปเบฅเบฐ C ++ เปเบฅเบฐเบ›เบฐเบเบญเบšเบกเบตเป„เบŸเบฅเปŒ, เบชเป‰เบฒเบ‡ specs Ada เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™.

-fada-spec-parent=เบซเบ™เปˆเบงเบเบšเปเบฅเบดเบเบฒเบ™
เบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบš -fdump-ada-spec[-เบšเบฒเบ‡] เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบชเป‰เบฒเบ‡ Ada specs เป€เบ›เบฑเบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบฅเบนเบเบ‚เบญเบ‡
เบžเปเปˆเปเบกเปˆ เบซเบ™เปˆเบงเบเบšเปเบฅเบดเบเบฒเบ™.

-fdump-go-spec=เป€เบญเบเบฐเบชเบฒเบ™
เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เป‰เบญเบ™เป„เบŸเบฅเปŒเปƒเบ™เบžเบฒเบชเบฒเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบชเป‰เบฒเบ‡เบเบฒเบ™เบ›เบฐเบเบฒเบ” Go เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เปƒเบ™ เป€เบญเบเบฐเบชเบฒเบ™. เบ™เบตเป‰
เบชเป‰เบฒเบ‡เบเบฒเบ™เบ›เบฐเบเบฒเบ” Go "const", "type", "var", เปเบฅเบฐ "func" เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบงเบดเบ—เบตเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”.
เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ‚เบฝเบ™เบชเปˆเบงเบ™เบ•เบดเบ”เบ•เปเปˆ Go เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ‚เบฝเบ™เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบญเบทเปˆเบ™.

@เป€เบญเบเบฐเบชเบฒเบ™
เบญเปˆเบฒเบ™เบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฒเบ เป€เบญเบเบฐเบชเบฒเบ™. เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบญเปˆเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เปƒเบชเปˆโ€‹เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบ‚เบญเบ‡โ€‹
เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš @เป€เบญเบเบฐเบชเบฒเบ™ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบ–เป‰เบฒ เป€เบญเบเบฐเบชเบฒเบ™ เบšเปเปˆเบกเบต, เบซเบผเบทเบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ
เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบดเปˆเบ™โ€‹เบ›เบปเบงโ€‹เบ—เบตเปˆโ€‹เบฎเบนเป‰โ€‹เบซเบ™เบฑเบ‡โ€‹เบชเบทโ€‹, เปเบฅเบฐโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เป‚เบเบโ€‹เบเป‰เบฒเบโ€‹เบญเบญเบโ€‹.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ•เปˆเบฒเบ‡เป†เปƒเบ™ เป€เบญเบเบฐเบชเบฒเบ™ เบ–เบทเบเปเบเบเบญเบญเบเป‚เบ”เบเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡. เบญเบฒเบ”เบกเบตเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เปƒเบชเปˆเบ™เบณ
เปƒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป‚เบ”เบเบเบฒเบ™เบญเป‰เบญเบกเบฎเบญเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบงเบปเบ‡เบขเบทเบกเบ”เบฝเบงเบซเบผเบทเบ„เบนเปˆ. เปƒเบ”
เบ•เบปเบงเบญเบฑเบเบชเบญเบ™ (เบฅเบงเบกเบ—เบฑเบ‡ backslash) เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป‚เบ”เบเบเบฒเบ™เบ™เปเบฒเบซเบ™เป‰เบฒเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™
เบฅเบงเบกเป„เบ›เบ”เป‰เบงเบ backslash. เป„เบ”เป‰ เป€เบญเบเบฐเบชเบฒเบ™ เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบญเบฒเบ”เบˆเบฐเบกเบต @ เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบญเบเบฐเบชเบฒเบ™ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ; เปƒเบ”
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปเบšเบš recursively.

เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก C ++ เป‚เบ„เบ‡เบเบฒเบ™
เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡ C++ เบ•เบฒเบกเบ—เบณเบกเบฐเบ”เบฒเปƒเบŠเป‰เปœเบถเปˆเบ‡เปƒเบ™เบ„เบณเบ•เปเปˆเบ—เป‰เบฒเบ .C, cc, .cpp, .CPP, .c++, .cp, เบซเบผเบท
.cxx; เป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบง C++ เบกเบฑเบเบˆเบฐเปƒเบŠเป‰ .เบŠเบก, .hp, .H, เบซเบผเบท (เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”เปเบกเปˆเปเบšเบšเบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™) .tcc; เปเบฅเบฐ
เป„เบŸเบฅเปŒ C++ preprocessed เปƒเบŠเป‰เบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบ .ii. GCC เบฎเบฑเบšเบฎเบนเป‰เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบŠเบทเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰ เปเบฅเบฐ
เบฅเบงเบšเบฅเบงเบกเบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™เป‚เบ›เปเบเบก C ++ เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเป‚เบ—เบซเบฒ compiler เปเบšเบšเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก
เป‚เบ›เบฃเปเบเบฃเบก C (เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบกเบตเบŠเบทเปˆ gcc).

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ gcc เบšเปเปˆเป„เบ”เป‰เป€เบžเบตเปˆเบกเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” C++. g ++ เปเบกเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ GCC เปเบฅเบฐ
เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” C ++. เบกเบฑเบ™เบ›เบดเปˆเบ™เบ›เบปเบง .c, .h เปเบฅเบฐ .i เป„เบŸเบฅเปŒเป€เบ›เบฑเบ™
เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡ C++ เปเบ—เบ™เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡ C เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆ -x เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹เบเบฑเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบ›เบฐโ€‹เป‚เบซเบเบ”โ€‹
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ precompiling เป„เบŸเบฅเปŒเบซเบปเบง C เบเบฑเบš a .h เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเป€เบžเบทเปˆเบญเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™ C++. เบชเบธเบ”
เบซเบผเบฒเบโ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹, g ++ เบเบฑเบ‡เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ”เป‰เบงเบเบŠเบทเปˆ c ++.

เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป‚เบ›เปเบเบผเบก C ++, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบฅเบฐเบšเบธเบ•เบปเบงเป€เบฅเบทเบญเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™เบซเบผเบฒเบเบญเบฑเบ™
เบ—เปˆเบฒเบ™เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™เบžเบฒเบชเบฒเปƒเบ”เบเปเปˆเบ•เบฒเบก; เบซเบผเบทเบ•เบปเบงเป€เบฅเบทเบญเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบš C
เปเบฅเบฐเบžเบฒเบชเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡; เบซเบผเบทเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ C ++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก C เบžเบฒเบชเบฒ
เบ•เบปเบงเป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ„เบงเบšเบ„เบธเบกเบžเบฒเบชเบฒเบ‚เบญเบ‡ C (เบซเบผเบทเบžเบฒเบชเบฒเบ—เบตเปˆเบกเบฒเบˆเบฒเบ C, เป€เบŠเบฑเปˆเบ™ C++,
Objective-C เปเบฅเบฐ Objective-C++) เบ—เบตเปˆ compiler เบเบญเบกเบฎเบฑเบš:

-ansi
เปƒเบ™เป‚เบซเบกเบ” C, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš -std=c90. เปƒเบ™เป‚เบซเบกเบ” C ++, เบกเบฑเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบเบฑเบš
-std=c++98.

เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบดเบ”เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ‚เบญเบ‡ GCC เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš ISO C90 (เป€เบกเบทเปˆเบญ
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ” C), เบซเบผเบทเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++ (เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ” C ++), เป€เบŠเบฑเปˆเบ™ "asm" เปเบฅเบฐ
"typeof" เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™, เปเบฅเบฐ macros เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒเป€เบŠเบฑเปˆเบ™ "unix" เปเบฅเบฐ "vax" เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”.
เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰. เบกเบฑเบ™เบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰ ISO เบ—เบตเปˆเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ เปเบฅเบฐเบšเปเปˆเบ„เปˆเบญเบเป„เบ”เป‰เปƒเบŠเป‰
เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ” trigraphโ€‹. เบชเปเบฒเบฅเบฑเบš C compiler, เบกเบฑเบ™เบ›เบดเบ”เบเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰เบ‚เบญเบ‡ C++ style //
เบ„เปเบฒเบ„เบดเบ”เบ„เปเบฒเป€เบซเบฑเบ™เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™ "inline".

เบ„เบณเบชเบฑเบšเบชเบณเบฎเบญเบ‡ "__asm__", "__extension__", "__inline__" เปเบฅเบฐ "__typeof__"
เบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ -ansi. เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ ISO C,
เปเบ™เปˆเบ™เบญเบ™, เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเบžเบงเบเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒ header เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป€เบฎเบฑเบ”เบ”เป‰เบงเบ -ansi. เบชเบฐเบซเบผเบฑเบšเบกเบฒเป‚เบ„เบฃเบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒเป€เบŠเบฑเปˆเบ™ "__unix__" เปเบฅเบฐ
"__vax__" เบเบฑเบ‡เบกเบตเบขเบนเปˆ, เบกเบตเบซเบผเบทเบšเปเปˆเบกเบต -ansi.

เป„เบ”เป‰ -ansi เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ ISO เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”เป‚เบ”เบเบšเปเปˆเป€เบชเบเบ„เปˆเบฒ. เบชเปเบฒเบฅเบฑเบš
เบงเปˆเบฒ, -Wpedantic เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบ -ansi.

เบกเบฐเบซเบฒเบžเบฒเบ "__STRICT_ANSI__" เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒเป€เบกเบทเปˆเบญ -ansi เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบšเบฒเบ‡เบชเปˆเบงเบ™เบซเบปเบง
เป„เบŸโ€‹เบฅเปŒโ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เป€เบซเบฑเบ™โ€‹เบกเบฐโ€‹เบซเบฒโ€‹เบžเบฒเบโ€‹เบ™เบตเป‰โ€‹เปเบฅเบฐโ€‹เบฅเบฐโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹เบšเบฒเบ‡โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบซเบผเบทโ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹
เบกเบฐเบซเบฒเบžเบฒเบเบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO เบšเปเปˆเป„เบ”เป‰เบฎเบฝเบเบฎเป‰เบญเบ‡; เบ™เบตเป‰เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เปเบŠเบเปเบŠเบ‡
เบเบฑเบšเบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเปƒเบŠเป‰เบŠเบทเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†.

เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบ›เบปเบเบเบฐเบ•เบดเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เปเบ•เปˆเบšเปเปˆเบกเบต semantics เบเปเบฒเบ™เบปเบ”เป‚เบ”เบ ISO C (เป€เบŠเบฑเปˆเบ™
เป€เบ›เบฑเบ™ "alloca" เปเบฅเบฐ "ffs") เบšเปเปˆเปเบกเปˆเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เปƒเบ™เป€เบกเบทเปˆเบญ -ansi เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

-std=
เบเปเบฒเบ™เบปเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบžเบฒเบชเบฒ. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
เบฅเบงเบšเบฅเบงเบก C เบซเบผเบท C++.

compiler เบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡, เป€เบŠเบฑเปˆเบ™: c90 or c++98, เปเบฅเบฐเบžเบฒเบชเบฒ GNU
เบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™, เป€เบŠเบฑเปˆเบ™: gnu90 or gnu++98. เป€เบกเบทเปˆเบญเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ–เบทเบเบฅเบฐเบšเบธ, the
compiler เบเบญเบกเบฎเบฑเบšเบ—เบธเบเป‚เบ„เบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ™เบฑเป‰เบ™เบšเบงเบเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GNU
เบงเปˆเบฒเบšเปเปˆเบ‚เบฑเบ”เบกเบฑเบ™. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡, -std=c90 เบ›เบดเบ”เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ‚เบญเบ‡ GCC
เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš ISO C90, เป€เบŠเบฑเปˆเบ™เบงเปˆเบฒ "asm" เปเบฅเบฐ "typeof" เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™.
เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GNU เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเปƒเบ™ ISO C90, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบฅเบฐเป€เบงเบฑเป‰เบ™
เบ„เปเบฒเบชเบฑเบšเบเบฒเบ‡เบ‚เบญเบ‡ "?:" เบชเบฐเปเบ”เบ‡เบญเบญเบ. เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เป€เบกเบทเปˆเบญเบžเบฒเบชเบฒ GNU เบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™
เป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰, เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ compiler เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
เบฅเบฑเบเบชเบฐเบ™เบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เบงเบฒเบกเบซเบกเบฒเบเบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเบฒเบ‡เบญเบฑเบ™เบ—เบตเปˆเป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”
เป‚เบ„เบ‡เบเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”. เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบ -Wpedantic เบเบฒเบ™เบฅเบฐเบšเบธ
เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบ”เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GNU เบ—เบตเปˆเปƒเบซเป‰เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเบฐเบšเบฑเบšเบ™เบฑเป‰เบ™. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡
-std=gnu90 -Wpedantic เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบฎเบนเบšเปเบšเบš C++ // เบ„เปเบฒเป€เบซเบฑเบ™, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ -std=gnu99 -Wpedantic
เบšเปเปˆ.

เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰; เบ„เปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปเบกเปˆเบ™

c90
c89
iso9899:1990
เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบธเบเป‚เบ„เบ‡เบเบฒเบ™ ISO C90 (เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GNU เบ—เบตเปˆเบ‚เบฑเบ”เบเบฑเบš ISO C90
เบ–เบทเบเบ›เบดเบ”). เบ„เบทโ€‹เบเบฑเบ™โ€‹เบเบฑเบš -ansi เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ” C.

iso9899:199409
ISO C90 เบ•เบฒเบกโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚ 1.

c99
c9x
iso9899:1999
iso9899:199x
ISO C99. เบกเบฒเบ”โ€‹เบ•เบฐโ€‹เบ–เบฒเบ™โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบขเปˆเบฒเบ‡โ€‹เบซเบผเบงเบ‡โ€‹เบซเบผเบฒเบโ€‹, เปเบกเบ‡โ€‹เป„เบกเป‰ moduloโ€‹,
เบ•เบปเบงเบฅเบฐเบšเบธเบ•เบปเบงเบ‚เบฐเบซเบเบฒเบ (เบฎเบญเบ‡เบฎเบฑเบšเบเบปเบเป€เบงเบฑเป‰เบ™เบเปเบฅเบฐเบ™เบตเปเบˆเป€เบกเบทเปˆเบญ
-fextended-identifiers เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰) เปเบฅเบฐเบšเบฑเบ™เบซเบฒเบˆเบธเบ”เบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ™เป„เบ”เป‰ (เบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”
เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบ C99 เบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™เบŠเป‰เบญเบ™เบ—เป‰เบฒเบ F เปเบฅเบฐ G). เป€เบšเบดเปˆเบ‡
<http://gcc.gnu.org/c99status.html> เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบŠเบทเปˆ c9x เปเบฅเบฐ
iso9899:199x เบ–เบทเบเบ„เบฑเบ”เบ„เป‰เบฒเบ™.

c11
c1x
iso9899:2011
ISO C11, เบเบฒเบ™เปเบเป‰เป„เบ‚เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO C เบ›เบต 2011. เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ
เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบขเปˆเบฒเบ‡โ€‹เบชเบปเบกโ€‹เบšเบนเบ™โ€‹, เปเบกเบ‡โ€‹เป„เบกเป‰ moduloโ€‹, เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹เบฅเบฐโ€‹เบšเบธ (เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹
เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เปเบˆโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹ -fextended-identifiers เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰), เบšเบฑเบ™เบซเบฒเบˆเบธเบ”เบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ™เป„เบ”เป‰ (เบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™
เปเบ•เปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐ C11 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™เบ„เบฑเบ”เบ•เบดเบ” F เปเบฅเบฐ G) เปเบฅเบฐ
เป€เบญเบเบฐเบชเบฒเบ™เบŠเป‰เบญเบ™เบ—เป‰เบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ K (เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบญเบšเป€เบ‚เบ”) เปเบฅเบฐ L (เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ). เบŠเบทเปˆ
c1x เบ–เบทเบเบ„เบฑเบ”เบ„เป‰เบฒเบ™.

gnu90
gnu89
เบžเบฒเบชเบฒ GNU เบ‚เบญเบ‡ ISO C90 (เบฅเบงเบกเบ—เบฑเบ‡เบšเบฒเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐ C99). เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ C
เบฅเบฐเบซเบฑเบ”.

gnu99
gnu9x
เบžเบฒเบชเบฒ GNU เบ‚เบญเบ‡ ISO C99. เบŠเบทเปˆ gnu9x เบ–เบทเบเบ„เบฑเบ”เบ„เป‰เบฒเบ™.

gnu11
gnu1x
เบžเบฒเบชเบฒ GNU เบ‚เบญเบ‡ ISO C11. เบญเบฑเบ™เบ™เบตเป‰เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเบเบฒเบเป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”
เบเบฒเบ™เบ›เปˆเบญเบ GCC. เบŠเบทเปˆ gnu1x เบ–เบทเบเบ„เบฑเบ”เบ„เป‰เบฒเบ™.

c++98
c++03
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO C++ เบ›เบต 1998 เบšเบงเบเบเบฑเบš corrigendum เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™ 2003 เปเบฅเบฐ เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบšเบฒเบ‡เบญเบฑเบ™
เบšเบปเบ”โ€‹เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹เบ‚เปเป‰โ€‹เบšเบปเบโ€‹เบœเปˆเบญเบ‡โ€‹. เบ„เบทโ€‹เบเบฑเบ™โ€‹เบเบฑเบš -ansi เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ” C++.

gnu++98
gnu++03
เบžเบฒเบชเบฒ GNU เบ‚เบญเบ‡ -std=c++98. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” C++.

c++11
c++0x
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO C++ เบ›เบต 2011 เบšเบงเบเบเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚. เบŠเบทเปˆ c++0x เบ–เบทเบเบ„เบฑเบ”เบ„เป‰เบฒเบ™.

gnu++11
gnu++0x
เบžเบฒเบชเบฒ GNU เบ‚เบญเบ‡ -std=c++11เบ—เบตเปˆเบขเบนเปˆ เบŠเบทเปˆ gnu++0x เบ–เบทเบเบ„เบฑเบ”เบ„เป‰เบฒเบ™.

c++1y
เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO C++ เบ•เปเปˆเป„เบ›, เบงเบฒเบ‡เปเบœเบ™เป„เบงเป‰เบขเปˆเบฒเบ‡เบšเปเปˆเบขเบธเบ”เบขเบฑเป‰เบ‡เบชเบณเบฅเบฑเบšเบ›เบต 2014. เบชเบฐเปœเบฑเบšเบชเบฐเปœเบนเบ™
เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบฅเบญเบ‡โ€‹เบชเบนเบ‡, เปเบฅเบฐโ€‹เป€เบเบทเบญเบšโ€‹เปเบ™เปˆโ€‹เบ™เบญเบ™โ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เปƒเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เปƒเบ™
เบเบฒเบ™เบ›เปˆเบญเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

gnu++1y
เบžเบฒเบชเบฒ GNU เบ‚เบญเบ‡ -std=c++1y. เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบกเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบชเบนเบ‡, เปเบฅเบฐเป€เบเบทเบญเบšเบˆเบฐ
เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

-fgnu89-inline
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -fgnu89-inline เบšเบญเบ GCC เปƒเบซเป‰เปƒเบŠเป‰เบ„เปเบฒเบชเบฑเบš GNU เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบชเปเบฒเบฅเบฑเบš "inline"
เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ” C99.
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบเบญเบกเบฎเบฑเบš เปเบฅเบฐเบ–เบทเบเบฅเบฐเป€เบฅเบตเบเป‚เบ”เบ GCC เป€เบงเบตเบŠเบฑเบ™ 4.1.3 เป€เบ–เบดเบ‡เปเบ•เปˆเบšเปเปˆเบฅเบงเบกเป€เบญเบปเบฒ
4.3. เปƒเบ™ GCC เบฎเบธเปˆเบ™ 4.3 เปเบฅเบฐเบ•เปเปˆเบกเบฒเบกเบฑเบ™เบ›เปˆเบฝเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡ GCC เปƒเบ™เป‚เบซเบกเบ” C99. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ "gnu_inline" เปƒเบซเป‰เบเบฑเบšเบ—เบธเบเบ„เบปเบ™
เบŸเบฑเบ‡เบŠเบฑเบ™ inline.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -fno-gnu89-inline เบšเบญเบ GCC เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เปƒเบซเป‰เปƒเบŠเป‰ C99 semantics เบชเปเบฒเบฅเบฑเบš
"inline" เป€เบกเบทเปˆเบญเบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ” C99 เบซเบผเบท gnu99 (ie, เบกเบฑเบ™เบเปเบฒเบ™เบปเบ”เบžเบถเบ”เบ•เบดเบเปเบฒเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™). เบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เปเบฒเบญเบดเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปƒเบ™ GCC 4.3. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเบ–เบทเบเบฎเบญเบ‡เบฎเบฑเบšเปƒเบ™ -std=c90 or
-std=gnu90 mode

เบกเบฒเป‚เบ„เบฃเป‚เบ›เบฃเป€เบŠเบชเป€เบŠเบตเบเปˆเบญเบ™ "__GNUC_GNU_INLINE__" เปเบฅเบฐ "__GNUC_STDC_INLINE__" เบญเบฒเบ”เบˆเบฐเบ–เบทเบเปƒเบŠเป‰
เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ„เบงเบฒเบกเบซเบกเบฒเบเปƒเบ”เบ—เบตเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ "inline".

- เบ‚เปเป‰เบกเบนเบ™ aux เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™
เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ•เบปเป‰เบ™เปเบšเบšเบ‚เบญเบ‡เบŠเบทเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเปƒเบซเป‰เป„เบงเป‰เบชเบณเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบ›เบฐเบเบฒเบ” เปเบฅเบฐ/เบซเบผเบท
เบเปเบฒเบ™เบปเบ”เบขเบนเปˆเปƒเบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบเบฒเบ™เปเบ›, เบฅเบงเบกเบ—เบฑเบ‡เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ header. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™
เบšเปเปˆเบชเบปเบ™เปƒเบˆเบขเปˆเบฒเบ‡เบ‡เบฝเบšเป†เปƒเบ™เบžเบฒเบชเบฒเบญเบทเปˆเบ™เบ™เบญเบเป€เปœเบทเบญเป„เบ›เบˆเบฒเบ C.

เบ™เบญเบโ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹, เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™โ€‹เบŠเบตเป‰โ€‹เบšเบญเบโ€‹, เปƒเบ™โ€‹เบ„เปเบฒโ€‹เบ„เบดเบ”โ€‹เป€เบซเบฑเบ™โ€‹, เบ•เบปเป‰เบ™โ€‹เบเปเบฒโ€‹เป€เบ™เบตเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เบ„เบปเบ™โ€‹
(เปเบซเบผเปˆเบ‡เป„เบŸเบฅเปŒเปเบฅเบฐเปเบ–เบง), เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบเบฒเบ” implicit, prototyped เบซเบผเบท
เบšเปเปˆเบกเบตเบ•เบปเป‰เบ™เปเบšเบš (I, N เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เปƒเบซเบกเปˆโ€‹เบซเบผเบทโ€‹ O เบชเปเบฒเบฅเบฑเบšเบญเบฒเบเบธ, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš, เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เปเบฒเบญเบดเบ”เบซเบผเบฑเบ‡เบˆเบฒเบ
เบ•เบปเบงเป€เบฅเบเป€เบชเบฑเป‰เบ™ เปเบฅเบฐเบˆเปเป‰เบฒเบชเบญเบ‡เป€เบกเบฑเบ”), เปเบฅเบฐเบšเปเปˆเบงเปˆเบฒเบˆเบฐเบกเบฒเบˆเบฒเบเบ„เปเบฒเบ›เบฐเบเบฒเบ” เบซเบผเบทเบ„เปเบฒเบ™เบดเบเบฒเบก
(C or F, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš, เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰). เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ
เบ„เปเบฒเบ™เบดเบเบฒเบก, เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเปเบšเบš K&R เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบ•เบดเบ”เบ•เบฒเบกเบ”เป‰เบงเบเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบกเปˆเบ™เป€เบŠเบฑเปˆเบ™เบเบฑเบ™
เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰, เบžเบฒเบเปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบเบฒเบ”.

-fallow-parameterless-variadic-functions
เบเบญเบกเบฎเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™ varidic เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบŠเบทเปˆ.

เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบเบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™
เบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เป„เบ”เป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆ C เบเป‰เบญเบ™เบงเปˆเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ™เบตเป‰เปเบกเปˆเบ™
เบญเบฐเบ™เบธเบเบฒเบ”เป‚เบ”เบ C++.

-fno-asm
เบขเปˆเบฒเบฎเบฑเบšเบฎเบนเป‰ "asm", "inline" เบซเบผเบท "typeof" เป€เบ›เบฑเบ™เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เป€เบ›เบฑเบ™เบ•เบปเบงเบฅเบฐเบšเบธ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™ "__asm__", "__inline__" เปเบฅเบฐ
"__typeof__" เปเบ—เบ™. -ansi implies -fno-asm.

เปƒเบ™ C ++, เบชเบฐเบซเบผเบฑเบšเบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆ "เบ›เบฐเป€เบžเบ”" เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ "asm" เปเบฅเบฐ "inline" เปเบกเปˆเบ™.
เบ„เปเบฒเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ -fno-gnu-keywords เบ—เบธเบ‡เปเบ—เบ™, เบ—เบตเปˆเบกเบต
เบœเบปเบ™เบเบฐเบ—เบปเบšเบ”เบฝเบงเบเบฑเบ™. เปƒเบ™เป‚เบซเบกเบ” C99 (-std=c99 or -std=gnu99), เบชเบฐเบซเบผเบฑเบšเบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆเป„เบ”เป‰
"asm" เปเบฅเบฐ "typeof" เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ "inline" เป€เบ›เบฑเบ™เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบ™ ISO C99.

-fno-builtin
-fno-builtin-เบซเบ™เป‰เบฒเบ—เบตเปˆ
เบšเปเปˆเบฎเบฑเบšเบฎเบนเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เบ•เบปเบงเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ __เบเปเปˆเบชเป‰เบฒเบ‡_ เป€เบ›เบฑเบ™เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ.

เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด GCC เบˆเบฐเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบžเบดเป€เบชเบ”เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เบ•เบปเบงเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบซเบผเบฒเบเบ‚เบถเป‰เบ™
เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš; เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เป‚เบ—เบซเบฒ "alloca" เบญเบฒเบ”เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ”เบฝเบง
เบ›เบฑเบš stack เป‚เบ”เบเบเบปเบ‡, เปเบฅเบฐเบเบฒเบ™เป‚เบ—เบซเบฒ "memcpy" เบญเบฒเบ”เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™ inline copy loops. เป„เบ”เป‰
เบฅเบฐเบซเบฑเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบกเบฑเบเบˆเบฐเบกเบตเบ—เบฑเบ‡เบ™เป‰เบญเบเบเบงเปˆเบฒ เปเบฅเบฐเป„เบงเบเบงเปˆเบฒ, เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบŸเบฑเบ‡เบŠเบฑเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบšเปเปˆเบกเบต
เบ”เบปเบ™เบเบงเปˆเบฒเบ™เบฑเป‰เบ™เบ›เบฐเบเบปเบ”เบ‚เบถเป‰เบ™, เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบˆเบธเบ”เบขเบธเบ”เปƒเบ™เบเบฒเบ™เป‚เบ—เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™, เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เป„เบ”เป‰
เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเป‚เบ”เบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบกเบทเปˆเบญ
เบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เปƒเบ™, GCC เบญเบฒเบ”เบˆเบฐเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบฑเป‰เบ™
เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบžเบทเปˆเบญเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบเบฑเบšเบเบฒเบ™เป‚เบ—เป„เบ›เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบฑเป‰เบ™, เบซเบผเบทเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ›เบฐโ€‹เบชเบดเบ”โ€‹เบ—เบดโ€‹เบžเบฒเบšโ€‹, เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฑเบ‡โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เป‚เบ—โ€‹เบซเบฒโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ™เบฑเป‰เบ™โ€‹. เบชเปเบฒเบฅเบฑเบš
เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹, เบ„เปเบฒโ€‹เป€เบ•เบทเบญเบ™โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เปƒเบซเป‰โ€‹เบเบฑเบšโ€‹ -Wformat เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบซเบฒเบ—เบตเปˆเบšเปเปˆเบ”เบตเบเบฑเบš "printf" เป€เบกเบทเปˆเบญ "printf" เปเบกเปˆเบ™
เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เปเบฅเบฐ "strlen" เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบšเปเปˆเบ”เบฑเบ”เปเบ›เบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบปเปˆเบงเป‚เบฅเบ.

เบกเบต -fno-builtin-เบซเบ™เป‰เบฒเบ—เบตเปˆ เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เปƒเบ™โ€‹เบ•เบปเบงโ€‹ เบซเบ™เป‰เบฒเบ—เบตเปˆ เป€เบ›เบฑเบ™เบ„เบปเบ™เบžเบดเบเบฒเบ™.
เบซเบ™เป‰เบฒเบ—เบตเปˆ เบšเปเปˆเบ„เบงเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ __เบเปเปˆเบชเป‰เบฒเบ‡_. เบ–เป‰เบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเบ•เบฑเป‰เบ‡เบŠเบทเปˆเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™เบ•เบปเบง
เปƒเบ™ GCC เบฅเบธเป‰เบ™เบ™เบตเป‰, เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ. เบšเปเปˆเบกเบตเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™
-fbuiltin-เบซเบ™เป‰เบฒเบ—เบตเปˆ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ; เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบกเบทเปˆเบญเปƒเบ”
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ -fno-builtin or - freestanding, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบเปเบฒเบ™เบปเบ” macro เป€เบŠเบฑเปˆเบ™:

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

-fhosted
เบขเบทเบ™เบขเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบกเปˆเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบš. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ -fbuiltin. A
เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบšเปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบกเบตเบขเบนเปˆ, เปเบฅเบฐเปƒเบ™
เป€เบŠเบดเปˆเบ‡ "เบ•เบปเป‰เบ™เบ•เป" เบกเบตเบ›เบฐเป€เบžเบ”เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™เบ‚เบญเบ‡ "int". เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เป€เบเบทเบญเบšเบ—เบธเบเบขเปˆเบฒเบ‡เบเบปเบเป€เบงเบฑเป‰เบ™ a
เปเบเปˆเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš -fno-freestanding.

- freestanding
เบขเบทเบ™เบขเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบชเบฑเบ‡เบฅเบงเบกเปเบกเปˆเบ™เปเบ™เปƒเบชเปˆเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ
-fno-builtin. เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆ
เบกเบตเบขเบนเปˆ, เปเบฅเบฐเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ„เบ‡เบเบฒเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆ "เบ•เบปเป‰เบ™เบ•เป". เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡เบ—เบตเปˆเบชเบธเบ”
เป€เบ›เบฑเบ™ OS kernel. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš -fno-hosted.

-fopenmp
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ OpenMP "#pragma omp" เปƒเบ™ C/C++ เปเบฅเบฐ "!$omp" เปƒเบ™ Fortran.
เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹ -fopenmp เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰, compiler เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ™เบ•เบฒเบก
OpenMP Application Program Interface v4.0http://www.openmp.org/>. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰
implies - เบเบฐเบ—เบนเป‰, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบเปˆเบฝเบงเบเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™
- เบเบฐเบ—เบนเป‰. -fopenmp implies -fopenmp-simd.

-fopenmp-simd
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เบณเบชเบฑเปˆเบ‡ SIMD เบ‚เบญเบ‡ OpenMP เบ”เป‰เบงเบ "#pragma omp" เปƒเบ™ C/C++ เปเบฅเบฐ "!$omp" เปƒเบ™
เบŸเปเบฃเบฑเบ™. เบ„เบณเบชเบฑเปˆเบ‡ OpenMP เบญเบทเปˆเบ™เป†เปเบกเปˆเบ™เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ.

-fcilkplus
เป€เบ›เบตเบ”เปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฒเบชเบฒ Cilk Plus เบชเปเบฒเบฅเบฑเบš C/C++. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบ
-fcilkplus เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰, เป€เบ›เบตเบ”เปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฒเบชเบฒ Cilk Plus
เบชเปเบฒเบฅเบฑเบš C/C++. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก ABI เบฎเบธเปˆเบ™ 1.2. เบ™เบตเป‰เปเบกเปˆเบ™
เบฅเบฑเบเบชเบฐเบ™เบฐเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบšเบฒเบ‡เบชเปˆเบงเบ™, เปเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡
เปƒเบ™ GCC เบฎเบธเปˆเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเป€เบžเบฒเบฐเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ—เบฑเบ‡เบซเบกเบปเบ”
เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เปเบ•เปˆ "_Cilk_for" เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”.

-fgnu-tm
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบ -fgnu-tm เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰, compiler เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบš Linux
เบ•เบปเบงเปเบ›เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบชเบฐเป€เบžเบฒเบฐ Transactional Memory ABI เบ‚เบญเบ‡ Intel (เบชเบฐเบšเบฑเบšเบ›เบฑเบšเบ›เบธเบ‡
1.1, 6 เบžเบถเบ”เบชเบฐเบžเบฒ 2009). เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบ„เบธเบ™โ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบฅเบญเบ‡โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹เบ—เบตเปˆโ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เปƒเบ™โ€‹
เบฅเบธเป‰เบ™ GCC เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เบชเบฐเป€เบžเบฒเบฐเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™. เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™
เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰.

เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡ GCC เบชเปเบฒเบฅเบฑเบšเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ,

เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเบณเปเบกเปˆเบ™เบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเบ”เป‰เบงเบเบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เป‚เบ—
(-fnon-call-exceptions).

-fms-เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ
เบเบญเบกเบฎเบฑเบšเบšเบฒเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡ Microsoft.

เปƒเบ™เบฅเบฐเบซเบฑเบ” C ++, เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบŠเบทเปˆเบชเบฐเบกเบฒเบŠเบดเบเปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ
เบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™.

typedef int UOW;
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ ABC {
UOW UOW;
};

เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ—เบปเปˆเบ‡เบ™เบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบŠเบทเปˆเปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปเบฅเบฐเบชเบฐเบซเบฐเบžเบฑเบ™เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบšเบžเบฝเบ‡เปเบ•เปˆเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบ›เบดเบ”เป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบ•เปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ i?86 เปเบฅเบฐ x86_64 เป‚เบ”เบเปƒเบŠเป‰ ms-abi.

-fplan9-เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ
เบเบญเบกเบฎเบฑเบšเบšเบฒเบ‡เบชเบดเปˆเบ‡เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”เปเบœเบ™ 9.

เบญเบฑเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ -fms-เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเบปเปˆเบ‡เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆ
เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก, เปเบฅเบฐ
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เป‚เบ”เบโ€‹เบญเป‰เบฒเบ‡โ€‹เบญเบตเบ‡โ€‹เปƒเบชเปˆโ€‹เบŠเปˆเบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบŠเบทเปˆโ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹เป‚เบ”เบโ€‹เปƒเบŠเป‰ typedefโ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆ
เบฎเบญเบ‡เบฎเบฑเบš C, เบšเปเปˆเปเบกเปˆเบ™ C ++.

-trigraphs
เบฎเบญเบ‡เบฎเบฑเบš ISO C trigraphs. เป„เบ”เป‰ -ansi เบ—เบฒเบ‡เป€เบฅเบทเบญเบ (เปเบฅเบฐ -std เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบš ISO C เบ—เบตเปˆเป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”
เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡) เปเบฒเบเป€เบ–เบดเบ‡ -trigraphs.

- เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก
-cpp
เปƒเบ™เป€เบกเบทเปˆเบญเบเปˆเบญเบ™, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ GCC เบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C compiler เบเปˆเบญเบ™.
เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบเบฑเบš -E เบชเบฐเบซเบผเบฑเบš. preprocessor เบชเบทเบšเบ•เปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™
เป‚เปเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบเปˆเบญเบ™. เป€เบšเบดเปˆเบ‡เบ„เบนเปˆเบกเบท GNU CPP เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”.

-fcond-เบšเปเปˆเบเบปเบ‡เบเบฑเบ™
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เบญเบญเบโ€‹เป€เบ‡เบทเปˆเบญเบ™โ€‹เป„เบ‚โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบเบปเบ‡โ€‹เบเบฑเบ™โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ–เบฝเบ‡โ€‹เบ—เบตโ€‹เบชเบญเบ‡โ€‹เปเบฅเบฐโ€‹เบ—เบตโ€‹เบชเบฒเบกโ€‹.
เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ›เบฑเบ™เป‚เบกเบ„เบฐ. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบš C++.

-flax-vector-เปเบ›เบ‡
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡ implicit เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡ vectors เบกเบตโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เปเบฅเบฐ / เบซเบผเบทโ€‹
เบ›เบฐเป€เบžเบ”เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเบ„เบงเบ™เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”เปƒเบซเบกเปˆ.

-funsigned-char
เปƒเบซเป‰เบ›เบฐเป€เบžเบ” "char" เบšเปเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™, เป€เบŠเบฑเปˆเบ™ "unsigned char".

เปเบ•เปˆเบฅเบฐเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบกเบตเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆ "char" เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™. เบกเบฑเบ™เบ„เบทเบเบฑเบ™
"unsigned char" เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เบซเบผเบทเบ„เป‰เบฒเบเบ„เบท "signed char" เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เป‚เบ”เบเบซเบฅเบฑเบเบเบฒเบ™เปเบฅเป‰เบง, เป‚เบ›เบฃเปเบเบฃเบกเป€เบ„เบทเปˆเบญเบ™เบ—เบตเปˆเบ„เบงเบ™เปƒเบŠเป‰ "signed char" เบซเบผเบท "unsigned char" เป€เบกเบทเปˆเบญเบกเบฑเบ™
เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เป€เบŠเบฑเบ™เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ. เปเบ•เปˆเป‚เบ„เบ‡เบเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰
เบ—เปเบฒเบกเบฐเบ”เบฒ "char" เปเบฅเบฐเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ™เบฒเบก, เบซเบผเบทเบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐ unsigned, เบ‚เบถเป‰เบ™เบเบฑเบš
เป€เบ„เบทเปˆเบญเบ‡เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เบชเปเบฒเบฅเบฑเบš. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰, เปเบฅเบฐเบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™, เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เป€เบŠเบฑเปˆเบ™เบ™เบฑเป‰เบ™
เป‚เบ„เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก.

เบ›เบฐเป€เบžเบ” "char" เปเบกเปˆเบ™เบชเบฐเป€เบซเบกเบตเป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเปเบ•เปˆเบฅเบฐ "char signed char" เบซเบผเบท "unsigned
char ", เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบกเบฑเบ™เบชเบฐเป€เบซเบกเบตเบ„เบทเบเบฑเบ™เบเบฑเบšเบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบญเบ‡เบ™เบฑเป‰เบ™.

-fsigned-char
เปƒเบซเป‰เบ›เบฐเป€เบžเบ” "char" เบ–เบทเบเป€เบŠเบฑเบ™, เป€เบŠเบฑเปˆเบ™ "เป€เบŠเบฑเบ™ char".

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ™เบตเป‰เป€เบ—เบปเปˆเบฒเบเบฑเบš -fno-unsigned-char, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เบฎเบนเบšเปเบšเบšเบฅเบปเบšเบ‚เบญเบ‡
-funsigned-char. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -fno-signed-char เป€เบ—เบปเปˆเบฒเบเบฑเบš
-funsigned-char.

-fsigned-bitfields
-funsigned-bitfields
-fno-signed-bitfields
-fno-unsigned-bitfields
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบšเปเปˆโ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™ bit-field เบ–เบทเบโ€‹เป€เบŠเบฑเบ™โ€‹เบซเบผเบทโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เป€เบŠเบฑเบ™โ€‹, เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹
เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰ "เป€เบŠเบฑเบ™" เบซเบผเบท "เบšเปเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™". เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ–เบทเบเป€เบŠเบฑเบ™,
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบชเบญเบ”เบ„เปˆเบญเบ‡: เบ›เบฐเป€เบžเบ”เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบŠเบฑเปˆเบ™ "int" เปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เป€เบŠเบฑเบ™.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก C ++ เบžเบฒเบชเบฒ
เบžเบฒเบเบ™เบตเป‰เบญเบฐเบ—เบดเบšเบฒเบเบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.
เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก GNU เบชเปˆเบงเบ™เปƒเบซเบเปˆเป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบžเบฒเบชเบฒเปƒเบ”เบเปเปˆเบ•เบฒเบกเบ‚เบญเบ‡เป‚เบ›เบผเปเบเบผเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™
เบขเบนเปˆเปƒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒ "firstClass.C" เปเบšเบšเบ™เบตเป‰:

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

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰, เบžเบฝเบ‡เปเบ•เปˆ -frepo เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ C ++; เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป„เบ”เป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เบ—เบตเปˆเบกเบตเบžเบฒเบชเบฒเปƒเบ”เบเปเป„เบ”เป‰เบ—เบตเปˆ GCC เบฎเบญเบ‡เบฎเบฑเบš.

เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบ›เบฑเบ™ เบžเบฝเบ‡เปเบ•เปˆ เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบฑเบ‡โ€‹เบฅเบงเบกโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™ C++โ€‹:

-fabi-version=n
เปƒเบŠเป‰เบชเบฐเบšเบฑเบš n เบ‚เบญเบ‡ C++ ABI. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบฅเบธเป‰เบ™ 2.

เป€เบงเบตเบŠเบฑเปˆเบ™ 0 เบซเบกเบฒเบเป€เบ–เบดเบ‡เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบชเบฐเป€เบžเบฒเบฐ C++ ABI.
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, ABI เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเปƒเบŠเป‰เป€เบงเบตเบŠเบฑเบ™ 0 เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบฅเบธเป‰เบ™เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡ G++
เบเป‰เบญเบ™เบงเปˆเบฒเปเบกเบ‡เป„เบกเป‰ ABI เบ–เบทเบเปเบเป‰เป„เบ‚.

เป€เบงเบตเบŠเบฑเปˆเบ™ 1 เปเบกเปˆเบ™เบฅเบธเป‰เบ™เบ‚เบญเบ‡ C++ ABI เบ—เบตเปˆเบ›เบฐเบเบปเบ”เบ•เบปเบงเบ—เบณเบญเบดเบ”เปƒเบ™ G++ 3.2.

เป€เบงเบตเบŠเบฑเปˆเบ™ 2 เปเบกเปˆเบ™เบฅเบธเป‰เบ™เบ‚เบญเบ‡ C++ ABI เบ—เบตเปˆเบ›เบฐเบเบปเบ”เบ•เบปเบงเบ—เบณเบญเบดเบ”เปƒเบ™ G++ 3.4.

เป€เบงเบตเบŠเบฑเบ™ 3 เปเบเป‰เป„เบ‚เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบขเบนเปˆเบ„เบปเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เปเบกเปˆเปเบšเบš.

เป€เบงเบตเบŠเบฑเปˆเบ™ 4, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบปเบ”เปƒเบ™ G++ 4.5 เบ—เบณเบญเบดเบ”, เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเบณเบฅเบฑเบš vector
เบ›เบฐเป€เบžเบ”

เป€เบงเบตเบŠเบฑเปˆเบ™ 5, เป€เบŠเบดเปˆเบ‡เบ›เบฒเบเบปเบ”เปƒเบ™ G++ 4.6 เบ—เบณเบญเบดเบ”, เปเบเป‰เป„เบ‚เบเบฒเบ™เบซเบผเบญเบเบฅเบงเบ‡เบ‚เบญเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”
const/volatile เปƒเบ™เบ›เบฐเป€เบžเบ”เบ•เบปเบงเบŠเบตเป‰เบŸเบฑเบ‡เบŠเบฑเบ™, decltype เบ‚เบญเบ‡ decl เบ—เปเบฒเบกเบฐเบ”เบฒ, เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ a
เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบตเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบตเบญเบทเปˆเบ™.

เป€เบงเบตเบŠเบฑเปˆเบ™ 6, เป€เบŠเบดเปˆเบ‡เบ›เบฒเบเบปเบ”เปƒเบ™ G++ 4.7 เบ—เบณเบญเบดเบ”, เปเบเป‰เป„เบ‚เบžเบถเบ”เบ•เบดเบเบณเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเบ‚เบญเบ‡ C++11
enums เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ‚เบญเบšโ€‹เป€เบ‚เบ”โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบ‚เบญเบ‡โ€‹เบŠเบญเบ‡ argument เปเบกเปˆโ€‹เปเบšเบšโ€‹, const/static_castโ€‹, เบ„เปเบฒโ€‹เบ™เปเบฒโ€‹เบซเบ™เป‰เบฒ ++
เปเบฅเบฐ --, เปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบ‚เบญเบšเป€เบ‚เบ”เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ—เบตเปˆเปƒเบŠเป‰เป€เบ›เบฑเบ™เบญเบฒเบเบดเบงเป€เบกเบฑเบ™เปเบกเปˆเปเบšเบš.

เป€เบšเบดเปˆเบ‡ - เบงเบฒเบšเบต.

-fno-access-control
เบ›เบดเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบฑเบ‡เปเบปเบ”. เบชเบฐเบงเบดเบ”เบ™เบตเป‰เบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ›เบฐเบกเบฒเบ™เปเบกเบ‡เป„เบกเป‰เปƒเบ™
เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹.

-fcheck-เปƒเปเปˆ
เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ•เบปเบงเบŠเบตเป‰เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เป‚เบ”เบ "operator new" เบšเปเปˆเปเบกเปˆเบ™ null เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบžเบฐเบเบฒเบเบฒเบก
เปเบเป‰เป„เบ‚เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ™เบตเป‰เปเบกเปˆเบ™เบ›เบปเบเบเบฐเบ•เบดเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒ C ++
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒ "operator เปƒเบซเบกเปˆ" เบžเบฝเบ‡เปเบ•เปˆเบชเบปเปˆเบ‡เบ„เบทเบ™ 0 เบ–เป‰เบฒเบกเบฑเบ™เบ–เบทเบเบ›เบฐเบเบฒเบ” เบ–เบดเป‰เบก(), เปƒเบ™
เบเปเบฅเบฐเบ™เบตเปƒเบ”เบ—เบตเปˆเบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบ„เปˆเบฒเบเบฑเบšเบ„เบทเบ™เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰. เปƒเบ™
เบเปเบฅเบฐเบ™เบตเบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เบซเบกเบปเบ”, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ "operator เปƒเบซเบกเปˆ" เบกเบตเบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™เบšเปเปˆเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ
เบ„เบงเบฒเบกเบญเบดเบ”เป€เบกเบทเปˆเบญเบเปเบกเปˆเบ™เบชเบฑเบ™เบเบฒเบ™เป‚เบ”เบเบเบฒเบ™เบ–เบดเป‰เบก "std::bad_alloc". เป€เบšเบดเปˆเบ‡เบ™เบณ เปƒเบซเบกเปˆ (เป‚เบ™เบ™เป‚เบ—เบฃ).

-fconstexpr-depth=n
เบเบณเบ™เบปเบ”เบ„เบงเบฒเบกเป€เบฅเบดเบเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบ—เบตเปˆเบŠเป‰เบญเบ™เบเบฑเบ™เบชเบนเบ‡เบชเบธเบ”เบชเบณเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™ C++11 constexpr เป€เบ›เบฑเบ™ n. เบ‚เบตเบ”เบˆเบณเบเบฑเบ”
เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบเบงเบ”เบžเบปเบšเบเบฒเบ™เป€เบญเบตเป‰เบ™เบ„เบทเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบตเปˆเบชเบดเป‰เบ™เบชเบธเบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบœเบปเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เป„เบ”เป‰
เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบกเปˆเบ™ 512.

-fdeduce-init-list
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบซเบฑเบเบ„เปˆเบฒเบžเบฒเบฃเบฒเบกเบตเป€เบ•เบตเบ›เบฐเป€เบžเบ”เปเบกเปˆเปเบšเบšเป€เบ›เบฑเบ™ "std::initializer_list" เบˆเบฒเบเบงเบปเบ‡เป€เบฅเบฑเบš-
enclosed เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, ie

เปเบกเปˆเปเบšเบš auto forward(T t) -> decltype (realfn (t))
{
เบเบฑเบšเบ„เบทเบ™ realfn (t);
}

void f()
{
forward({1,2}); // เป‚เบ—โ€‹เป„เบ›โ€‹เบ‚เป‰เบฒเบ‡โ€‹เบซเบ™เป‰เบฒโ€‹ >
}

เบเบฒเบ™เบซเบฑเบเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบเบฑเบšเบเบฒเบ™เบชเบฐเป€เบซเบ™เบตเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™
semantics เบชเปเบฒเบฅเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++11, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเบธเบ”เบ—เป‰เบฒเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เปเบกเปˆเบ™
เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”, เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบฅเบถเบšเบญเบญเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”
เบฅเบธเป‰เบ™ G++.

-ffriend-เบชเบฑเบเบขเบฒ
เบชเบฑเบเบขเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ‚เบญเบ‡เปเบนเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŠเปˆเบญเบ‡เบŠเบทเปˆเบ—เบตเปˆเบ›เบดเบ”เบฅเป‰เบญเบก, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เป„เบ”เป‰เบžเบฒเบเบ™เบญเบ
เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบฒเบ”. เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบžเบทเปˆเบญเบ™เป„เบ”เป‰เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰
เป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบ„เบนเปˆเบกเบทเบญเป‰เบฒเบ‡เบญเบตเบ‡ C++ เปเบšเบšเป€เบเบปเปˆเบฒ, เปเบฅเบฐเป€เบงเบตเบŠเบฑเบ™เบ‚เบญเบ‡ G++ เบเปˆเบญเบ™
4.1 เป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบ™เบฑเป‰เบ™เบชเบฐเป€เปเบต. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เปƒเบ™ ISO C ++ เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบžเบทเปˆเบญเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™
เบ›เบฐเบเบฒเบ”เบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบ›เบดเบ”เบšเบฑเบ‡เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เบŠเบญเบเบซเบฒเบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบซเบกเบนเปˆเป€เบžเบทเปˆเบญเบ™เบ–เบทเบเบชเบฑเบเบขเบฒเบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰, เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบญเบญเบเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบ G++ เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

-fno-elide-constructors
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++ เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบทเปˆเบญเบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเบปเปˆเบงเบ„เบฒเบงเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบงเบฑเบ”เบ–เบธเบญเบทเปˆเบ™เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ”เบฝเบงเบเบฑเบ™. เบเบฒเบ™เบฅเบฐเบšเบธเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบฑเป‰เบ™, เปเบฅเบฐเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰ G ++ เป‚เบ—เบซเบฒเบ•เบปเบงเบชเป‰เบฒเบ‡เบชเปเบฒเป€เบ™เบปเบฒเปƒเบ™เบ—เบธเบเบเปเบฅเบฐเบ™เบต.

-fno-enforce-eh-specs
เบขเปˆเบฒเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบฅเบฐเป€เบกเบตเบ”เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบชเบฐเป€เบžเบฒเบฐเปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™.
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบฅเบฐเป€เบกเบตเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++, เปเบ•เปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”เปƒเบ™
เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบเปเปˆเบชเป‰เบฒเบ‡, เบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ” NDEBUG. เบญเบฑเบ™เบ™เบตเป‰เบšเปเปˆเปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบœเบนเป‰เปƒเบŠเป‰เบญเบฐเบ™เบธเบเบฒเบ”
เบ–เบดเป‰เบกเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เปƒเบ™เบเบฒเบ™เบฅเบฐเป€เบกเบตเบ”เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™; compiler เบเบฑเบ‡
optimizes เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบšเปเปˆเบ„เบฒเบ”เบ„เบดเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™.

-fextern-tls-init
-fno-extern-tls-init
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++11 เปเบฅเบฐ OpenMP เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ thread_ เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ เปเบฅเบฐ เบเบฐเบ—เบนเป‰เบชเปˆเบงเบ™เบ•เบปเบง เบ•เบปเบงเปเบ›เบ—เบตเปˆเบˆเบฐเบกเบต
เป„เบ”เบ™เบฒเบกเบดเบ (เปเบฅเปˆเบ™) เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ™เบตเป‰, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ›เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ›
เป‚เบ”เบเบœเปˆเบฒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™ wrapper เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰
เปเบฅเบฐเบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบซเบ™เปˆเบงเบเปเบ›เบ”เบฝเบงเบเบฑเบ™, overhead เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™
optimized เป„เบ›, เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบกเบต
เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™ overhead เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ•เบปเบงเปเบ›เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง
เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ–เป‰เบฒเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบชเบฒเบกเบฒเบ”เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ›เปƒเบ™ non-
เบเบฒเบ™เบเปเบฒเบ™เบปเบ” TU เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฐเบ•เบธเป‰เบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง (เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ›เปเบกเปˆเบ™
เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบฒเบ‡เบชเบฐเบ–เบดเบ•เบด, เบซเบผเบทเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ›เปƒเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ” TU เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”
เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เปƒเบ™ TU เบญเบทเปˆเบ™), เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบซเบผเบตเบเบฅเป‰เบฝเบ‡เบเบฒเบ™ overhead เบ™เบตเป‰เบเบฑเบš
-fno-extern-tls-init เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เบเปˆเบฝเบงเบเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเบฑเบ™เบเบฒเบฅเบฑเบเบ™เบฒเบกเปเบเบ‡, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fextern-tls-init. เป€เบ›เบปเป‰เบฒเปเบฒเบ
เบ—เบตเปˆเบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเบชเบฑเบ™เบเบฒเบฅเบฑเบเบ™เบฒเบกเปเบเบ‡, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fno-extern-tls-init.

-ffor-scope
-fno-for-scope
If -ffor-scope เบ–เบทเบเบเปเบฒเบ™เบปเบ”, เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเบ›เบฐเบเบฒเบ”เปƒเบ™ a for-init-statement
เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เบเบฑเบš เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ loop เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เบ•เบฒเบกเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++. เบ–เป‰เบฒ
-fno-for-scope เบ–เบทเบเบเปเบฒเบ™เบปเบ”, เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเบ›เบฐเบเบฒเบ”เปƒเบ™ a for-init-statement
เบ‚เบฐเบซเบเบฒเบเป„เบ›เป€เบ–เบดเบ‡เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡เบ‚เบญเบšเป€เบ‚เบ”เบเบฒเบ™เบ›เบดเบ”, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ G++ เบฅเบธเป‰เบ™เป€เบเบปเปˆเบฒ, เปเบฅเบฐ
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบญเบทเปˆเบ™เป† (เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก) เบ‚เบญเบ‡ C++.

เบ–เป‰เบฒเบšเปเปˆเป„เบ”เป‰เปƒเบซเป‰เบ—เบธเบ‡เบ—เบฑเบ‡เบชเบญเบ‡, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เปเบ•เปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปเบฅเบฐเปƒเบซเป‰
เบ„เปเบฒเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”เปเบšเบšเป€เบเบปเปˆเบฒเบ—เบตเปˆเบˆเบฐเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบซเบผเบทเบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™
เบžเบถเบ”เบ•เบด เบเบณ.

-fno-gnu-keywords
เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบฎเบนเป‰ "typeof" เป€เบ›เบฑเบ™เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบ™เบตเป‰เป€เบ›เบฑเบ™
เบ•เบปเบงเบฅเบฐเบšเบธ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™ "__typeof__" เปเบ—เบ™. -ansi implies
-fno-gnu-keywords.

-fno-implicit-templates
เบšเปเปˆเป€เบ„เบตเบเบ›เปˆเบญเบเบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเปเบกเปˆเปเบšเบšเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เปเบ–เบงเบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เบญเบญเบเบ—เบฑเบ™เบ—เบตเป‚เบ”เบ implicitly (เป€เบŠเบฑเปˆเบ™: เป‚เบ”เบ
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰); เบžเบฝเบ‡เปเบ•เปˆเบ›เปˆเบญเบเบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบš instantiations เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™.

-fno-implicit-inline-templates
เบขเปˆเบฒเบ›เปˆเบญเบเบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบฑเบ™เบ—เบตเป‚เบ”เบเบซเบเปเป‰เบ‚เบญเบ‡เปเบกเปˆเปเบšเบšเปƒเบ™เปเบ–เบง, เบ„เบทเบเบฑเบ™. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เปเบกเปˆเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบš inlines เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบฅเบงเบšเบฅเบงเบกเป‚เบ”เบเปเบฅเบฐเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
เบŠเบธเบ”เบ”เบฝเบงเบเบฑเบ™เบ‚เบญเบ‡ instantiations เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™.

-fno-implement-inlines
เป€เบžเบทเปˆเบญเบ›เบฐเบขเบฑเบ”เบžเบทเป‰เบ™เบ—เบตเปˆ, เบขเปˆเบฒเบ›เปˆเบญเบเบชเบณเป€เบ™เบปเบฒเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เปเบ–เบงเบ—เบตเปˆเบ„เบงเบšเบ„เบธเบกเป‚เบ”เบ
#pragma เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ–เป‰เบฒเบŸเบฑเบ‡เบŠเบฑเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™เปเบ–เบง
เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบญเบตเป‰เบ™เบงเปˆเบฒ.

-fms-เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ
เบ›เบดเบ”เบเบฒเบ™เป€เบ•เบทเบญเบ™ Wpedantic เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ MFC, เป€เบŠเบฑเปˆเบ™ implicit int เปเบฅเบฐ
เป„เบ”เป‰เบฎเบฑเบšเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบฐเบกเบฒเบŠเบดเบเป‚เบ”เบเบœเปˆเบฒเบ™ syntax เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.

-fno-nonansi-builtins
เบ›เบดเบ”โ€‹เบเบฒเบ™โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹เปƒเบ™โ€‹เบ•เบปเบงโ€‹เบ‚เบญเบ‡โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบกเบญเบšโ€‹เบซเบกเบฒเบโ€‹เป‚เบ”เบ ANSI/ISO C. เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰
เบ›เบฐเบเบญเบšเบกเบต "ffs", "alloca", "_exit", "index", "bzero", "conjf", เปเบฅเบฐเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡
เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒ.

-fnotrow-opt
เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™ "เบ–เบดเป‰เบก()" เบ„เบทเบเบฑเบšเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™ "เบšเปเปˆเบกเบตเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™" เบชเบฐเป€เบžเบฒเบฐ
เบซเบผเบธเบ” เบซเบผเบทเบฅเบปเบšเบฅเป‰เบฒเบ‡เบ‚เบฐเปœเบฒเบ”เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบขเบนเปˆเป€เบ—เบดเบ‡เบซเบปเบงเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™
เบชเบฐเป€เบžเบฒเบฐ. เบ–เป‰เบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบกเบตเบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เป€เบฅเบฑเบเป†เบ™เป‰เบญเบเป†
destructors, เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เปƒเบ™เบ•เบปเบงเบˆเบดเบ‡เปเบกเปˆเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เป‰เบญเบเบฅเบปเบ‡เป€เบžเบฒเบฐเบงเปˆเบฒ
เบเบฒเบ™เบญเบฐเบ™เบฒเป„เบก EH เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบ›เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฑเบšเปƒเบซเป‰เป€เปเบฒเบฐเบชเบปเบกเป„เบ”เป‰เบ—เบฑเบ™เบ—เบต. เบœเบปเบ™เบเบฐเบ—เบปเบš semantic เปเบกเปˆเบ™
เบงเปˆเบฒเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบ–เบทเบเบ–เบดเป‰เบกเบญเบญเบเบˆเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง
เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบกเบตเบเบฒเบ™เป‚เบ—เบซเบฒ "เบขเบธเบ”" เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ "เบšเปเปˆเบ„เบฒเบ”เบ„เบดเบ”".

-fno-operator-names
เบขเปˆเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฑเบšเบ„เปเบฒเบ—เบตเปˆเปƒเบŠเป‰เบŠเบทเปˆเบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™ "เปเบฅเบฐ", "bitand", "bitor", "compl", "not", "เบซเบผเบท"
เปเบฅเบฐ "xor" เป€เบ›เบฑเบ™เบ„เปเบฒเบชเบฑเบšเบ„เป‰เบฒเบเบ„เบทเบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™.

-fno-optional-diags
เบ›เบดเบ”เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบšเบญเบเบงเปˆเบฒเบ„เบญเบกเบžเบตเบงเป€เบŠเบตเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบญเบญเบ.
เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ”เบฝเบงเบ—เบตเปˆเบญเบญเบเป‚เบ”เบ G ++ เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบกเบตเบŠเบทเปˆ
เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบซเบผเบฒเบโ€‹เปƒเบ™โ€‹เบซเป‰เบญเบ‡โ€‹เบฎเบฝเบ™โ€‹.

-fpermissive
เบ”เบฒเบงเป€เบเบฃเบ”เบเบฒเบ™เบงเบดเบ™เบดเป„เบชเบšเบฒเบ‡เบญเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบ™เบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบ•เบทเบญเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™,
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ -fpermissive เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡.

-fno-pretty-templates
เป€เบกเบทเปˆเบญเบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบซเบกเบฒเบเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบŠเปˆเบฝเบงเบŠเบฒเบ™เบ‚เบญเบ‡เปเบกเปˆเปเบšเบšเบŸเบฑเบ‡เบŠเบฑเบ™, compiler
เบ›เบปเบเบเบฐเบ•เบดเบžเบดเบกเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เปเบกเปˆเปเบšเบšเบ•เบฒเบกเบ”เป‰เบงเบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เปเบกเปˆเปเบšเบš เปเบฅเบฐ
typedefs เบซเบผเบท typenames เปƒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™ (เป€เบŠเบฑเปˆเบ™: "void f(T) [with T = int]" เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ.
เบเปˆเบงเบฒ "void f (int)") เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเปเบกเปˆเปเบšเบšเปƒเบ”เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบก. เป€เบกเบทเปˆเบญโ€‹เป€เบเบตเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹
เบ‚เปเป‰เบ„เบงเบฒเบกเบซเบกเบฒเบเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบŠเปˆเบฝเบงเบŠเบฒเบ™เบ‚เบญเบ‡เปเบกเปˆเปเบšเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™, compiler เบเบปเบเป€เบงเบฑเป‰เบ™เปƒเบ”เป†
เบญเบฒเบเบดเบงเป€เบกเบฑเบ™เปเบกเปˆเปเบšเบšเบ—เบตเปˆเบเบปเบ‡เบเบฑเบšเบญเบฒเบเบดเบงเป€เบกเบฑเบ™เปเบกเปˆเปเบšเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเปเบกเปˆเปเบšเบšเบ™เบฑเป‰เบ™. เบ–เป‰เบฒ
เบžเบถเบ”เบ•เบดเบเปเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ‚เปเป‰เบ„เบงเบฒเบกเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™
เบ‡เปˆเบฒเบโ€‹เบ‚เบถเป‰เบ™โ€‹, เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ -fno-pretty-templates เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

-frepo
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบเบฐเบ•เบธเป‰เบ™เปเบกเปˆเปเบšเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบเบฑเบ‡เบซเบกเบฒเบเป€เบ–เบดเบ‡
-fno-implicit-templates.

-fno-rtti
เบ›เบดเบ”เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ—เบธเบเบซเป‰เบญเบ‡เบฎเบฝเบ™เบ—เบตเปˆเบกเบตเบŸเบฑเบ‡เบŠเบฑเบ™ virtual เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบ
เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบเบฒเบ™เบเบณเบ™เบปเบ”เบ›เบฐเป€เบžเบ” C++ run-time (dynamic_cast เปเบฅเบฐ เบ›เบฐเป€เบžเบ”). เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบšเปเปˆ
เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบžเบฒโ€‹เบชเบฒโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบฑเป‰เบ™โ€‹, เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบŠเปˆเบงเบโ€‹เบ›เบฐโ€‹เบขเบฑเบ”โ€‹เบšเบฒเบ‡โ€‹เบžเบทเป‰เบ™โ€‹เบ—เบตเปˆโ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ—เบธเบ‡โ€‹เบ™เบตเป‰โ€‹. เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹
เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ™เบฑเป‰เบ™เปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบงเบเบฑเบ™, เปเบ•เปˆ G++ เบชเป‰เบฒเบ‡เบกเบฑเบ™เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™. เป„เบ”เป‰
dynamic_cast เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฐเป€เบžเบ”เป€เบงเบฅเบฒเปเบฅเปˆเบ™
เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹, เป€เบŠเบฑเปˆเบ™โ€‹: เป‚เบเบ™โ€‹เป„เบ› "void *โ€‹" เบซเบผเบทโ€‹เบ‚เบฑเป‰เบ™โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™ unambiguousโ€‹.

-fstats
เบ›เปˆเบญเบเบชเบฐเบ–เบดเบ•เบดเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ™เบตเป‰
เป‚เบ”เบโ€‹เบ—เบปเปˆเบงโ€‹เป„เบ›โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ›เบฐโ€‹เป‚เบซเบเบ”โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบเบฑเบšโ€‹เบ—เบตเบกโ€‹เบ‡เบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒ G++ .

-fstrict-enums
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ compiler เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเปƒเบŠเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” enumerated
เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เปœเบถเปˆเบ‡เปƒเบ™เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡ enumeration (เบ•เบฒเบกเบ—เบตเปˆเป„เบ”เป‰เบเบณเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++;
เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบ„เปˆเบฒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบ‡ bits เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™
เป€เบ›เบฑเบ™โ€‹เบ•เบปเบงโ€‹เปเบ—เบ™โ€‹เบ‚เบญเบ‡โ€‹เบœเบนเป‰โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹)โ€‹. เบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ–เป‰เบฒเป‚เบ„เบ‡เบเบฒเบ™เปƒเบŠเป‰
เบ„เบฒเบชเบ—เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบ„เปˆเบฒเบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบเบณเบ™เบปเบ”เป€เบญเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบ™เบฑเบšเบˆเบณเบ™เบงเบ™.

-ftemplate-backtrace-limit=n
เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบเบฐเบ•เบธเป‰เบ™เปเบกเปˆเปเบšเบšเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเป€เบ•เบทเบญเบ™เบ”เบฝเบงเบซเบผเบทเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”
to n. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10.

-ftemplate-depth=n
เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเป€เบฅเบดเบ instantiation เบชเบนเบ‡เบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™เปเบกเปˆเปเบšเบš n. เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบเปˆเบฝเบงเบเบฑเบš
เบ„เบงเบฒเบกเป€เบฅเบดเบ instantiation เบ‚เบญเบ‡เปเบกเปˆเปเบšเบšเปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบเบงเบ”เบžเบปเบš recursions เบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบตเปˆเบชเบดเป‰เบ™เบชเบธเบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เปเบกเปˆเปเบšเบš
เบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”เบŠเบฑเป‰เบ™. เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบš ANSI/ISO C++ เบˆเบฐเบ•เป‰เบญเบ‡เบšเปเปˆเบญเบตเบ‡เปƒเบชเปˆเบชเบนเบ‡เบชเบธเบ”
เบ„เบงเบฒเบกเป€เบฅเบดเบเบซเบผเบฒเบเบเบงเปˆเบฒ 17 (เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ 1024 เปƒเบ™ C++11). เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 900, เป€เบ›เบฑเบ™
compiler เบชเบฒเบกเบฒเบ”เบซเบกเบปเบ”เบžเบทเป‰เบ™เบ—เบตเปˆ stack เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ•เบต 1024 เปƒเบ™เบšเบฒเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™.

-fno-threadsafe-statics
เบขเปˆเบฒเบ›เปˆเบญเบเบฅเบฐเบซเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบžเบทเปˆเบญเปƒเบŠเป‰เบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ C++ ABI เบชเปเบฒเบฅเบฑเบš thread-
เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบชเบฐเบ–เบดเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”
เป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบญเบ”เป„เบž thread.

-fuse-cxa-atexit
เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ destructors เบชเปเบฒเบฅเบฑเบšเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบตเป„เบฅเบเบฐเป€เบงเบฅเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ”เป‰เบงเบ "__cxa_atexit"
เป€เบฎเบฑเบ”เบงเบฝเบเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ "atexit". เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™
เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ•เบฒเบกโ€‹เบกเบฒเบ”โ€‹เบ•เบฐโ€‹เบ–เบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบฅเบฒเบโ€‹เบชเบฐโ€‹เบ–เบดเบ”โ€‹, เปเบ•เปˆโ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ” C เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹
เบฎเบญเบ‡เบฎเบฑเบš "__cxa_atexit".

-fno-use-cxa-get-exception-ptr
เบขเปˆเบฒเปƒเบŠเป‰ "__cxa_get_exception_ptr" เบ›เบฐเบˆเบณเป€เบงเบฅเบฒเปเบฅเปˆเบ™. เบชเบฒเป€เบซเบ”เบ™เบตเป‰
"std::uncaught_exception" เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เปเบ•เปˆเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ–เป‰เบฒ runtime routine เปเบกเปˆเบ™.
เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปƒเบŠเป‰โ€‹เป„เบ”เป‰.

-fvisibility-inlines-hidden
เบชเบฐเบงเบดเบ”เบ™เบตเป‰เบ›เบฐเบเบฒเบ”เบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบšเปเปˆเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบ›เบฝเบšเบ—เบฝเบšเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเปƒเบ™เปเบ–เบง
เบซเบ™เป‰เบฒเบ—เบตเปˆเบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบชเบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™
เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™.

เบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡เบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒ GCC เบญเบฒเบ”เบˆเบฐ, เบ›เบฐเบชเบดเบ”เบ—เบดเบœเบปเบ™, เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เปƒเบ™เปเบ–เบง
"__attribute__ ((เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™ ("เป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰")))" เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ.
เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡ DSO เปเบฅเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ PLT indirection เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบžเบฒเบเปƒเบ™ DSO.
เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ•เปเปˆเป€เบงเบฅเบฒเป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบญเบ‡ DSO เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™
เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเบปเปˆเบ‡เบญเบญเบเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบซเบ™เบฑเบ
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปเบกเปˆเปเบšเบš.

เบžเบถเบ”เบ•เบดเบเบณเบ‚เบญเบ‡เบชเบฐเบงเบดเบ”เบ™เบตเป‰เบšเปเปˆเบ„เบทเบเบฑเบšเบเบฒเบ™เปเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰
เป‚เบ”เบเบเบปเบ‡, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ•เบปเบงเปเบ› static เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ•เปเปˆเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบซเบผเบทเบชเบฒเป€เบซเบ”
compiler เป€เบžเบทเปˆเบญ deduce เบงเปˆเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบขเบนเปˆเปƒเบ™เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™.

เบ—เปˆเบฒเบ™โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบซเบกเบฒเบโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เป€เบซเบฑเบ™โ€‹เบขเปˆเบฒเบ‡โ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เบฅเบปเบšโ€‹เบฅเป‰เบฒเบ‡โ€‹เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบšโ€‹เบ‚เบญเบ‡โ€‹
เบชเบฐเบซเบผเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ™เบฑเป‰เบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒ a
เบงเบดเบ—เบตเบเบฒเบ™เปƒเบ™เปเบ–เบงเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบซเบกเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™. เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ
เบเบฒเบ™เบ›เบดเบ”เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ”เป‰เบงเบเบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบšเปเปˆเบกเบตเบœเบปเบ™เบซเบเบฑเบ‡เป€เบฅเบตเบ.

เบงเบดเบ—เบตเบเบฒเบ™ inline เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ
เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบญเบฒเบ”เบˆเบฐเบ‚เป‰เบฒเบกเบ‚เบญเบšเป€เบ‚เบ”เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบฎเปˆเบงเบกเบเบฑเบ™.

-fvisibility-ms-compat
เบ—เบธเบ‡เบ™เบตเป‰เบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ C++ เบ‚เบญเบ‡ GCC
เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš Microsoft Visual Studio.

เบ—เบธเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ•เปเปˆเบเบฑเบšเบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ‚เบญเบ‡ GCC:

1. เบกเบฑเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เป€เบ›เบฑเบ™ "เป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰", เบ„เบท -fvisibility=hidden.

2. เบ›เบฐเป€เบžเบ”, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบชเบฐเบกเบฒเบŠเบดเบเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

3. เบเบปเบ”เบฅเบฐเบšเบฝเบšเบซเบ™เบถเปˆเบ‡เบ„เปเบฒเบ™เบดเบเบฒเบกเปเบกเปˆเบ™เบœเปˆเบญเบ™เบ„เบฒเบเบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™
เบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเปœเบถเปˆเบ‡เบญเบฑเบ™: เบเบฒเบ™เบ›เบฐเบเบฒเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™
เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ–เป‰เบฒเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เป€เบกเบทเปˆเบญเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰.

เปƒเบ™เบฅเบฐเบซเบฑเบ”เปƒเบซเบกเปˆเบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ -fvisibility=hidden เปเบฅเบฐเบชเบปเปˆเบ‡เบญเบญเบเบซเป‰เบญเบ‡เบฎเบฝเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™
เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบžเบฒเบเบ™เบญเบ. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบˆเบฐเบญเบตเบ‡เปƒเบชเปˆ,
เบšเบฒเบ‡เบ—เบตเบญเบฒเบ”เบกเบตเป‚เบ”เบเบšเบฑเบ‡เป€เบญเบตเบ™, เบเปˆเบฝเบงเบเบฑเบšเบžเบถเบ”เบ•เบดเบเปเบฒ Visual Studio.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบœเบปเบ™เบชเบฐเบ—เป‰เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒเบชเบฐเบกเบฒเบŠเบดเบเบ‚เปเป‰เบกเบนเบ™เบชเบฐเบ–เบดเบ”เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ”เบฝเบงเบเบฑเบ™
เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เปเบ•เปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡
เบซเบ™เบถเปˆเบ‡เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡; เปเบฅเบฐเบ—เบตเปˆเบŠเบตเป‰เป„เบ›เบซเบฒเบชเบฐเบกเบฒเบŠเบดเบเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เปƒเบ™
เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบชเบปเบกเบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบเบฑเบ™. เป€เบกเบทเปˆเบญเบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเบกเบญเบšเปƒเบซเป‰, เบกเบฑเบ™เปเบกเปˆเบ™ เบ
เบเบฒเบ™เบฅเบฐเป€เบกเบตเบ” ODR เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

-fvtable-verify=std|preinit|เบšเปเปˆเบกเบต
เป€เบ›เบตเบ” (เบซเบผเบทเบ›เบดเบ”, เบ–เป‰เบฒเปƒเบŠเป‰ -fvtable-verify=เบšเปเปˆเบกเบต) เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹เบ—เบตเปˆโ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ—เบตเปˆโ€‹
runtime, เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เบเบฒเบ™เป‚เบ— virtual เบ—เบตเปˆเป€เบฎเบฑเบ”, เบงเปˆเบฒเบ•เบปเบงเบŠเบตเป‰ vtable เบœเปˆเบฒเบ™เบ™เบฑเป‰เบ™
เบเบฒเบ™เป‚เบ—เบซเบฒเปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ, เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบชเบเบซเบฒเบเบซเบผเบท
เบ‚เบฝเบ™เบ—เบฑเบš. เบ–เป‰เบฒเบ•เบปเบงเบŠเบตเป‰ vtable เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ–เบทเบเบเบงเบ”เบžเบปเบš (เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™), เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบกเปˆเบ™
เบฅเบฒเบเบ‡เบฒเบ™ เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบขเบธเบ”เป€เบŠเบปเบฒเปƒเบ™เบ—เบฑเบ™เบ—เบต.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™ runtime เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™, เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ„เบ‡เบเบฒเบ™, เบชเปเบฒเบฅเบฑเบš
เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ•เบปเบงเบŠเบตเป‰ vtable. เบ•เบปเบงเป€เบฅเบทเบญเบ "std" เปเบฅเบฐ "preinit" เบ„เบงเบšเบ„เบธเบกเป€เบงเบฅเบฒเบ‚เบญเบ‡
เป€เบกเบทเปˆเบญเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™. เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบเปเบฅเบฐเบ™เบต, เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™
เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ–เบดเบ‡ 'เบ•เบปเป‰เบ™เบ•เป'. เป„เบ”เป‰ -fvtable-verify=std เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบฎเปˆเบงเบกเบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเป‚เบซเบฅเบ”เปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.
-fvtable-verify=preinit เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบกเบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบฎเปˆเบงเบกเบเบฑเบ™
เป‚เบซเบฅเบ”โ€‹เปเบฅเบฐโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹.

เบ–เป‰เบฒเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ›เบฒเบเบปเบ”เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เปƒเบ™เปเบ–เบง compiler, เบกเบตเบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™
เบฅเบฐเบšเบธเป„เบงเป‰, 'none' เบˆเบฐเป€เบ›เบฑเบ™เบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เบชเบนเบ‡เบชเบธเบ”เบซเบผเบฒเบเบเบงเปˆเบฒเบ—เบฑเบ‡ 'std' เปเบฅเบฐ 'preinit'; 'เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™'
เบˆเบฐเป€เบ›เบฑเบ™เบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เบซเบผเบฒเบเบเบงเปˆเบฒ 'std'.

-fvtv-debug
เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เปเบเป‰เบšเบฑเบ™เบซเบฒเป€เบงเบตเบŠเบฑเบ™เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ runtime เบชเปเบฒเบฅเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™ vtable เบเบฑเบš
เบ–เบทเบเป€เบญเบตเป‰เบ™. เบ™เบตเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ -fvtable-verify=std or -fvtable-verify=preinit เป„เบ”เป‰
เปƒเบŠเป‰. เบ—เบธเบ‡เบ™เบตเป‰เบเบฑเบ‡เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบ•เบดเบ”เบ•เบฒเบกเบงเปˆเบฒเบ•เบปเบงเบŠเบตเป‰ vtable เปƒเบ”
เบกเบฑเบ™เบžเบปเบšเป€เบซเบฑเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบซเป‰เบญเบ‡เบฎเบฝเบ™, เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เบ™เบฑเป‰เบ™เบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ
"vtv_set_ptr_data.log", เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป„เบŸเบฅเปŒ dump เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹: เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบ™เบตเป‰โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเบฑเบšโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป„เบŸเบฅเปŒเบšเบฑเบ™เบ—เบถเบเบชเบปเบ”, เป€เบ›เบฑเบ™
เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบˆเบฐเบฅเบถเบšเบญเบฑเบ™เปƒเบ”เบ™เบถเปˆเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบญเบญเบ.

-fvtv-เบ™เบฑเบš
เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบธเบ‡เบ”เบตเบšเบฑเบ. เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบš -fvtable-verify=std or
-fvtable-verify=preinit, เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบ•เบดเบ”เบ•เบฒเบกเบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡
เบเบฒเบ™เป‚เบ— virtual เบ—เบตเปˆเบกเบฑเบ™เบžเบปเบšเปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เบ—เบตเปˆเบกเบฑเบ™เปƒเบชเปˆ. เบกเบฑเบ™เบเบฑเบ‡
เบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป‚เบ—เป„เบ›เบซเบฒเบšเบฒเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” runtime เบ—เบตเปˆเบกเบฑเบ™เปƒเบชเปˆ. เบ™เบตเป‰
เบ‚เปเป‰เบกเบนเบ™, เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบ–เบทเบเบ‚เบฝเบ™เปƒเบชเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบŠเบทเปˆ
"vtv_count_data.log", เปƒเบ™เบฅเบฐเบšเบปเบš dump_file เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰. เบกเบฑเบ™เบเบฑเบ‡
เบ™เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบŠเบธเบ”เบ•เบปเบงเบŠเบตเป‰ vtable เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบซเป‰เบญเบ‡เบฎเบฝเบ™, เปเบฅเบฐเบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰
เบเบฑเบš "vtv_class_set_sizes.log" เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเบเบฑเบ™.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹: เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบ™เบตเป‰โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเบฑเบšโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹. เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเป„เบŸเบฅเปŒเบšเบฑเบ™เบ—เบถเบเบชเบปเบ”, เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒ
เป€เบžเบทเปˆเบญเบฅเบถเบšเบญเบฑเบ™เปƒเบ”เบ™เบถเปˆเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง.

-fno-เบญเปˆเบญเบ™เปเบญ
เบขเปˆเบฒเปƒเบŠเป‰เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบตเปˆเบญเปˆเบญเบ™เปเบญ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เป‚เบ”เบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, G++
เปƒเบŠเป‰เบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบตเปˆเบญเปˆเบญเบ™เปเบญเบ–เป‰เบฒเบžเบงเบเบกเบฑเบ™เบกเบตเบขเบนเปˆ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เปเบฅเบฐ
เบšเปเปˆเบ„เบงเบ™เปƒเบŠเป‰เป‚เบ”เบเบœเบนเป‰เปƒเบŠเป‰เบชเบธเบ”เบ—เป‰เบฒเบ; เบกเบฑเบ™เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบฅเบฐเบซเบฑเบ” inferior เปเบฅเบฐเบšเปเปˆเบกเบตเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”.
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบญเบญเบเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบ G++ เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

-nostdinc++
เบขเปˆเบฒเบŠเบญเบเบซเบฒเป„เบŸเบฅเปŒ header เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเบฐเป€เบžเบฒเบฐเบเบฑเบš C ++, เปเบ•เปˆเป€เบฎเบฑเบ”
เบเบฑเบ‡เบŠเบญเบเบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบญเบทเปˆเบ™เป†. (เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบชเป‰เบฒเบ‡
เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” C++.)

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž, เปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™ C++โ€‹:

- เบงเบฒเบšเบต (C, Objective-C, C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญ G++ เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบœเบนเป‰เบ‚เบฒเบเบ—เบตเปˆเป€เบ›เบฑเบ™เบเบฒเบ‡
C++ ABI. เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹เป„เบ”เป‰โ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เป€เบžเบทเปˆเบญโ€‹เป€เบ•เบทเบญเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹, เบกเบตโ€‹
เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ G ++ เบเปเบฒเบฅเบฑเบ‡เบชเป‰เบฒเบ‡
เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰. เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบเบฑเบ‡เบกเบตเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ
เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰.

เบ—เปˆเบฒเบ™เบ„เบงเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบเบฑเบ‡เบงเบปเบ™เบเปˆเบฝเบงเบเบฑเบš
เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบ G ++ เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ„เบนเปˆเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบ
compilers เบญเบทเปˆเบ™เป†.

เบ„เบงเบฒเบกเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเปƒเบ™ -fabi-version=2 (เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™) เบฅเบงเบกเบกเบต:

ยทเปเบกเปˆเปเบšเบšเบ—เบตเปˆเบกเบตเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เปเบกเปˆเปเบšเบšเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เปเบกเปˆเบ™ mangled
เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡:

extern int N;
เปเบกเปˆเปเบšเบš เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ S {};
void n (เบช ) {2}

เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบ™ -fabi-version=3.

ยท เบ›เบฐโ€‹เป€เบžเบ” vector SIMD เบ›เบฐโ€‹เบเบฒเบ”โ€‹เป‚เบ”เบโ€‹เปƒเบŠเป‰ "__attribute ((vector_size))" เปเบกเปˆเบ™ mangled เปƒเบ™
เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ overloading เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบเบดเบ™ vectors
เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

mangling เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เปƒเบ™โ€‹ -fabi-version=4.

เบ„เบงเบฒเบกเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเปƒเบ™ -fabi-version=1 เบ›เบฐเบเบญเบšเบกเบต:

ยท เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบซเบฒเบ‡ padding เบชเปเบฒโ€‹เบฅเบฑเบš bit-fields. G++ เบญเบฒเบ”เบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบšเบฑเบ™เบˆเบธเบ‚เปเป‰เบกเบนเบ™
เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ byte เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ A { virtual void f(); int f1: 1; } ;
struct B : public A { int f2 : 1 ; } ;

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, G++ เบงเบฒเบ‡ "B::f2" เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ byte เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš "A::f1"; compilers เบญเบทเปˆเบ™เป†เป€เบฎเบฑเบ”
เบšเปเปˆ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เปƒเบชเปˆ "A" เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™ a
เบ„เบงเบฒเบกเบซเบผเบฒเบเบซเบผเบฒเบเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” byte เปƒเบ™เป€เบงเบ—เบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™; เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰ G ++ เปเบฅเบฐ compilers เบญเบทเปˆเบ™เป†
เบˆเบฑเบ”เบงเบฒเบ‡ "B" เบ„เบทเบเบฑเบ™.

ยทเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบซเบฒเบ‡ padding เบชเปเบฒเบฅเบฑเบšเบ–เบฒเบ™ virtual. G++ เบšเปเปˆเปƒเบŠเป‰เบซเบฒเบ‡
padding เป€เบกเบทเปˆเบญเบงเบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™ virtual. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ A { virtual void f(); char c1; } ;
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ B { B(); char c2; } ;
struct C : public A, public virtual B {};

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, G ++ เบšเปเปˆเป„เบ”เป‰เบงเบฒเบ‡ "B" เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเบฒเบ‡เบชเปเบฒเบฅเบฑเบš "A"; เบญเบทเปˆเบ™เป†
compilers เป€เบฎเบฑเบ”. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เปƒเบชเปˆ "A" เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปเบกเปˆเบ™โ€‹เบซเบผเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™ (เบฅเบฐโ€‹เป€เบฅเบตเบโ€‹เบซเป‰เบญเบ‡โ€‹เบฎเบฝเบ™โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™ virtualโ€‹)โ€‹; เบชเบฒเป€เบซเบ”เบ™เบฑเป‰เบ™
G++ เปเบฅเบฐ compilers เบญเบทเปˆเบ™เป†เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบงเบฒเบ‡ "C" เบ„เบทเบเบฑเบ™.

ยท เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบšเปเปˆโ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹เบ‚เบญเบ‡ bit-fields เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ” width เบซเบผเบฒเบโ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เบ‚เบญเบ‡โ€‹เบกเบฑเบ™โ€‹
เบ›เบฐเป€เบžเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ bit-fields เบ›เบฐเบเบปเบ”เบขเบนเปˆเปƒเบ™เบชเบฐเบซเบฐเบžเบฒเบš. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

union U { int i : 4096; } ;

เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ "int" เบšเปเปˆเบกเบต 4096 bits, G ++ เป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบฐเบซเบฐเบžเบฑเบ™เบ™เป‰เบญเบเป€เบเบตเบ™เป„เบ›เป‚เบ”เบ
เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบšเบดเบ”เปƒเบ™ "int".

ยท เบซเป‰เบญเบ‡เบฎเบฝเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบงเบฒเบ‡เป„เบงเป‰เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ A {};

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ B {
A a ;
virtual void f();
};

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ C : public B, public A {};

G++ เบงเบฒเบ‡เบŠเบฑเป‰เบ™เบ–เบฒเบ™ "A" เบ‚เบญเบ‡ "C" เบขเบนเปˆเบ—เบตเปˆเบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบชเบนเบ™; เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบงเบฒเบ‡เป„เบงเป‰เบขเบนเปˆ
เบŠเบปเบ”เป€เบŠเบตเบเบชเบนเบ™. G++ เป€เบŠเบทเปˆเบญเบœเบดเบ”เบงเปˆเบฒเบชเบฐเบกเบฒเบŠเบดเบเบ‚เปเป‰เบกเบนเบ™ "A" เบ‚เบญเบ‡ "B" เปเบกเปˆเบ™เปเบฅเป‰เบง
เบขเบนเปˆเบ—เบตเปˆเบชเบนเบ™เบŠเบปเบ”เป€เบŠเบตเบ.

ยท เบŠเบทเปˆโ€‹เบ‚เบญเบ‡โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ‚เบญเบ‡โ€‹เปเบกเปˆโ€‹เปเบšเบšโ€‹เบ—เบตเปˆโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบ—เบตเปˆโ€‹เบเปˆเบฝเบงโ€‹เบ‚เป‰เบญเบ‡โ€‹เบเบฑเบš "typenameโ€‹" เบซเบผเบทโ€‹เปเบกเปˆโ€‹เปเบšเบšโ€‹
เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบชเบฒเบกเบฒเบ” mangled เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

เปเบกเปˆเปเบšเบš
void f(typename Q::X) {}

เปเบกเปˆเปเบšเบš เบŠเบฑเป‰เบ™ Q >
void f(typename Q ::X) {}

เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เบ‚เบญเบ‡เปเบกเปˆเปเบšเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบˆเบฑเบ”เบเบฒเบ™เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

เบกเบฑเบ™เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš psABI. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ psABI เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเปƒเบ™เบˆเบธเบ”เบ™เบตเป‰
เบ›เบฐเบเบญเบšเบกเบต:

ยท เบชเปเบฒเบฅเบฑเบš SysV/x86-64, เบชเบฐเบซเบฐเบžเบฑเบ™เบ—เบตเปˆเบกเบตเบชเบฐเบกเบฒเบŠเบดเบ "เบ„เบนเปˆเบเบฒเบง" เปเบกเปˆเบ™เบœเปˆเบฒเบ™เปƒเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ
เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ psABI. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

เบชเบฐเบซเบฐเบžเบฑเบ™ U {
long double ld;
int i;
};

"เบชเบฐเบซเบฐเบžเบฑเบ™ U" เปเบกเปˆเบ™เบœเปˆเบฒเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบชเบฐเป€เบซเบกเบต.

-Wctor-dtor-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ•เบปเบง (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบซเป‰เบญเบ‡เบฎเบฝเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเปƒเบŠเป‰เบšเปเปˆเป„เบ”เป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบœเบนเป‰เบเปเปˆเบชเป‰เบฒเบ‡เบซเบผเบทเบ•เบปเบงเบ—เปเบฒเบฅเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบ™เบฑเป‰เบ™
เบŠเบฑเป‰เบ™เบฎเบฝเบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ•เบปเบง, เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเบกเบตเบ—เบฑเบ‡เป€เบžเบทเปˆเบญเบ™เบซเบผเบทเบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฐเบกเบฒเบŠเบดเบเบชเบฐเบ–เบดเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ.
เป€เบ•เบทเบญเบ™เบญเบตเบเบงเปˆเบฒเบšเปเปˆเบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบชเปˆเบงเบ™เบ•เบปเบง, เปเบฅเบฐเบกเบตเบชเบฐเบกเบฒเบŠเบดเบเบชเปˆเบงเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เปœเป‰เบญเบเปœเบถเปˆเบ‡เบ„เบปเบ™
เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ constructor เบซเบผเบท destructor.

-Wdelete-เบšเปเปˆเปเบกเปˆเบ™ virtual-dtor (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญ เบฅเบถเบš เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ—เปเบฒเบฅเบฒเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ—เบตเปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆ virtual
เปเบฅเบฐเบœเบนเป‰เบ—เปเบฒเบฅเบฒเบเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ virtual. เบกเบฑเบ™เบšเปเปˆเบ›เบญเบ”เป„เบžเบ—เบตเปˆเบˆเบฐเบฅเบถเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ—เบตเปˆเบกเบฒเบˆเบฒเบ
เบœเปˆเบฒเบ™เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบซเป‰เบญเบ‡เบฎเบฝเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™ เบ–เป‰เบฒเบŠเบฑเป‰เบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบšเปเปˆเบกเบต virtual
เบœเบนเป‰เบ—เบณเบฅเบฒเบ. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wliteral-suffix (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบชเบฐเบ•เบฃเบดเบ‡ เบซเบผเบทเบ•เบปเบงเปœเบฑเบ‡เบชเบทเบ–เบทเบเบ•เบฒเบกเบ”เป‰เบงเบ ud-suffix เป€เบŠเบดเปˆเบ‡เบšเปเปˆเปเบกเปˆเบ™
เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ‚เบตเบ”เบเป‰เบญเบ‡. เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡, GCC เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เปเปˆเบ—เป‰เบฒเบเป€เบŠเบฑเปˆเบ™:
tokens preprocessing เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เปƒเบ™เบ”เป‰เบฒเบ™เบซเบฅเบฑเบ‡เบเบฑเบšเบฅเบฐเบซเบฑเบ”
เบ—เบตเปˆเปƒเบŠเป‰เบฎเบนเบšเปเบšเบš macro เบˆเบฒเบ " ". เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

#define __STDC_FORMAT_MACROS
#เบฅเบงเบกเบ—เบฑเบ‡
#เบฅเบงเบก

int เบ•เบปเป‰เบ™เบ•เป () {
int64_t i64 = 123;
printf("int64 เบ‚เบญเบ‡เบ‚เป‰เบญเบ: %"PRId64"\n", i64);
}

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, "PRId64" เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™ token preprocessing เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

- เบเบฒเบ™โ€‹เบ‚เบฑเบ”โ€‹เบ‚เบงเบฒเบ‡โ€‹ (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เปเบ„เบšเบ—เบตเปˆเบซเป‰เบฒเบกเป‚เบ”เบ C++11 เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบžเบฒเบเปƒเบ™ { }, เบ•เบปเบงเบขเปˆเบฒเบ‡

int i = { 2.2 }; // error: เปเบ„เบšเบˆเบฒเบ double เบเบฑเบš int

เบ—เบธเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ - เบเบฒ เปเบฅเบฐ -Wc++11-compat.

เบเบฑเบš -std=c++11, -Wno-เปเบ„เบš เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.
เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ™เบตเป‰เบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ„เบงเบฒเบกเบซเบกเบฒเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบ”เบต; เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบ—เบตเปˆโ€‹เปเบ„เบšโ€‹เบฅเบปเบ‡โ€‹
เบเบฑเบ‡เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเบšเปเปˆเบ”เบตเบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™ SFINAE.

- เบเบปเบเป€เบงเบฑเป‰เบ™ (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ noexcept-expression เบ›เบฐเป€เบกเบตเบ™เป€เบ›เบฑเบ™เบœเบดเบ”เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เป‚เบ—เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™
เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ‚เปเป‰โ€‹เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบเบฒเบ™โ€‹เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบเบฒเบ™โ€‹เบšเปเปˆโ€‹เบ–เบดเป‰เบก (ie เบ–เบดเป‰เบก() or เบšเปเปˆเบกเบตเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™)
เปเบ•เปˆเป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเป‚เบ”เบเบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเบฐเบšเปเปˆเป€เบ„เบตเบเบ–เบดเป‰เบกเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™.

-Wnon-virtual-dtor (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบซเป‰เบญเบ‡เบฎเบฝเบ™เบกเบตเบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฐเป€เปเบทเบญเบ™ เปเบฅเบฐเบ•เบปเบงเบ—เบณเบฅเบฒเบเบ—เบตเปˆเบšเปเปˆเบชเบฐเป€เปเบทเบญเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰
เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบซเบผเบทเปƒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™ polymorphic เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปเบ•เปˆ
เบšเปเปˆเบ›เบญเบ”เป„เบžเบ—เบตเปˆเบˆเบฐเบฅเบถเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ—เบตเปˆเป„เบ”เป‰เบกเบฒเบˆเบฒเบเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ™เบฑเป‰เบ™เป€เบญเบ‡
เบซเบผเบทเบŠเบฑเป‰เบ™เบžเบทเป‰เบ™เบ–เบฒเบ™. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ–เป‰เบฒ -Weffc++ เบ–เบทเบเบเปเบฒเบ™เบปเบ”.

- เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹ (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบชเบฐเบกเบฒเบŠเบดเบเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”เบšเปเปˆเบเบปเบ‡เบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡
เปƒเบ™โ€‹เบ—เบตเปˆโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹. เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ A {
int i;
int j ;
A(): j (0), i (1) { }
};

compiler เบˆเบฑเบ”เบฅเบฝเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเบฐเบกเบฒเบŠเบดเบเบชเปเบฒเบฅเบฑเบš i เปเบฅเบฐ j เป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบปเบ‡เบเบฑเบšเบ„เปเบฒเบ›เบฐเบเบฒเบ”
เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบชเบฐโ€‹เบกเบฒโ€‹เบŠเบดเบโ€‹, emitting เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบšโ€‹เบ™เบฑเป‰เบ™โ€‹. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
- เบเบฒ.

-fext-เบ•เบปเบงเป€เบฅเบ-เบ•เบปเบงเปœเบฑเบ‡เบชเบท (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบเบญเบกเบฎเบฑเบšเบ•เบปเบงเปœเบฑเบ‡เบชเบทเบ•เบฒเบกเบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™, เบˆเบธเบ”เบ„เบปเบ‡เบ—เบตเปˆ, เบซเบผเบทเบ•เบปเบงเปœเบฑเบ‡เบชเบทเบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เป‚เบ”เบเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเป€เบ›เบฑเบ™ GNU
เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ. เป€เบกเบทเปˆเบญเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบ›เบดเบ”เบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฐเบ–เบทเบเบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบŠเป‰ C++11-
เบเบณเบ™เบปเบ”เบ„เบณเบ•เปเปˆเบ—เป‰เบฒเบเบ•เบปเบงเป€เบฅเบเบ•เบฒเบกเบ•เบปเบงเปœเบฑเบ‡เบชเบท. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเบณเบฅเบฑเบšเบ—เบธเบเบžเบฒเบชเบฒเบเปˆเบญเบ™ C++11
เปเบฅเบฐเบžเบฒเบชเบฒ GNU เบ—เบฑเบ‡เปเบปเบ”: -std=c++98, -std=gnu++98, -std=gnu++11, -std=gnu++1y. เบ™เบตเป‰
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปเบกเปˆเบ™โ€‹เบ›เบดเบ”โ€‹เป€เบ›เบฑเบ™โ€‹เบ„เปˆเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบš ISO C++ 11 เป€เบ›เบฑเบ™โ€‹เบ•เบปเป‰เบ™โ€‹เป„เบ› (-std=c++11, ...).

เบ•เปเปˆเป„เบ›เบ™เบตเป‰ -เบง... เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบšโ€‹เป‚เบ”เบโ€‹ - เบเบฒ.

-Weffc++ (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฅเบฐเป€เบกเบตเบ”เบ‚เปเป‰เปเบ™เบฐเบ™เบณเบฎเบนเบšเปเบšเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฒเบ Scott Meyers' เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
C ++ เบŠเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ›เบถเป‰เบกโ€‹:

ยท เบเบณ เบ™เบปเบ”เบ•เบปเบงเบชเป‰เบฒเบ‡ เบชเบณ เป€เบ™เบปเบฒเปเบฅเบฐเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบกเบญเบš เปเบฒเบ เบชเบณ เบฅเบฑเบšเบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ”เป‰เบงเบเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง-
เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบˆเบฑเบ”เบชเบฑเบ™.

ยทเบกเบฑเบเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเปƒเบ™เบœเบนเป‰เบเปเปˆเบชเป‰เบฒเบ‡.

ยท เปƒเบซเป‰ "operator=" เบชเบปเปˆเบ‡เบ„เบทเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡ * เบญเบฑเบ™เบ™เบตเป‰.

ยท เบขเปˆเบฒเบžเบฐเบเบฒเบเบฒเบกเบชเบปเปˆเบ‡เบ„เบทเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบกเบทเปˆเบญเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบชเบปเปˆเบ‡เบ„เบทเบ™เบงเบฑเบ”เบ–เบธ.

ยท เปเบเบเปเบเบฐเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ•เบปเบงเบ›เบฐเบเบญเบšเบเบฒเบ™เบ™เบณเปœเป‰เบฒ เปเบฅเบฐ postfix เบ‚เบญเบ‡ increment เปเบฅเบฐ decrement.

ยท เบขเปˆเบฒเป‚เบซเบผเบ” "&&", "||", เบซเบผเบท ",".

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบเบฑเบ‡เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ -Wnon-virtual-dtor, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™ C ++ เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
เบ„เบณเปเบ™เบฐเบ™เบณ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบกเปˆเบ™เบ‚เบฐเบซเบเบฒเบเบญเบญเบเป„เบ›เป€เบžเบทเปˆเบญเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ‚เบฒเบ” virtual
destructor เปƒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ polymorphic เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เบ„เบทเบเบฑเบ™.

เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเบญเบโ€‹เป€เบญเบปเบฒโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹, เบฎเบฑเบšโ€‹เบฎเบนเป‰โ€‹เบงเปˆเบฒโ€‹เบซเบปเบงโ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹เบกเบฒเบ”โ€‹เบ•เบฐโ€‹เบ–เบฒเบ™โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เป€เบŠเบทเปˆเบญโ€‹เบŸเบฑเบ‡โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹
เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰; เปƒเบŠเป‰ grep -v เป€เบžเบทเปˆเบญเบเบฑเปˆเบ™เบ•เบญเบ‡เบ„เบณเป€เบ•เบทเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบญเบญเบ.

-Wstrict-null-sentinel (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ "NULL" เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆเป€เบ›เบฑเบ™ sentinel. เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบžเบฝเบ‡เปเบ•เปˆเบเบฑเบš GCC
เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบชเบปเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบเป‰เบญเบ™เบงเปˆเบฒ "NULL" เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™ "__null". เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™ null
เบ•เบปเบงเบŠเบตเป‰เบ„เบปเบ‡เบ—เบตเปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเบŠเบตเป‰ null, เบกเบฑเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ”เบฝเบงเบเบฑเบ™
เป€เบ›เบฑเบ™เบ•เบปเบงเบŠเบตเป‰. เปเบ•เปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ„เบทเปˆเบญเบ™เบ—เบตเปˆเปƒเบ™เบ—เบปเปˆเบง compilers เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

-Wno-เบšเปเปˆเปเบกเปˆเบ™เปเบกเปˆเปเบšเบš-เป€เบžเบทเปˆเบญเบ™ (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบ›เบดเบ”เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเป€เบกเบทเปˆเบญเบŸเบฑเบ‡เบŠเบฑเบ™เป€เบžเบทเปˆเบญเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เปเบกเปˆเปเบšเบšเบ–เบทเบเบ›เบฐเบเบฒเบ”เบžเบฒเบเปƒเบ™เปเบกเปˆเปเบšเบš.
เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบกเบฒเป€เบ–เบดเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเบฐเป€เบžเบฒเบฐเปเบกเปˆเปเบšเบšเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เปƒเบ™ G++, เบ–เป‰เบฒเบŠเบทเปˆเบ‚เบญเบ‡
เปเบนเปˆเปเบกเปˆเบ™ ID เบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚ (เป€เบŠเบฑเปˆเบ™: เบซเบกเบนเปˆเป€เบžเบทเปˆเบญเบ™ foo(int)), เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบžเบฒเบชเบฒ C++
เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เป€เบžเบทเปˆเบญเบ™เบ›เบฐเบเบฒเบ”เบซเบผเบทเบเปเบฒเบ™เบปเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เปเบฒเบกเบฐเบ”เบฒ, nontemplate. (เบžเบฒเบ
14.5.3). เบเปˆเบญเบ™เบ—เบตเปˆ G++ เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™, ids เบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™
เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเบงเปˆเบฒเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบŠเปˆเบฝเบงเบŠเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ templatized. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰
เบžเบถเบ”เบ•เบดเบเบณเบ—เบตเปˆเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบšเปเปˆเปเบกเปˆเบ™เบžเบถเบ”เบ•เบดเบเบณเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเบณเบฅเบฑเบš G++,
-Wnon-เปเบกเปˆเปเบšเบš-เป€เบžเบทเปˆเบญเบ™ เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ compiler เบเบงเบ”เบชเบญเบšเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰
เบˆเบธเบ”เป† เปเบฅเบฐเป€เบ›เบตเบ”เบขเบนเปˆเบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบžเบถเบ”เบ•เบดเบเปเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปƒเบซเบกเปˆเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบดเบ”เบ”เป‰เบงเบ
-Wno-เบšเปเปˆเปเบกเปˆเบ™เปเบกเปˆเปเบšเบš-เป€เบžเบทเปˆเบญเบ™, เป€เบŠเบดเปˆเบ‡เบฎเบฑเบเบชเบฒเบฅเบฐเบซเบฑเบ” compiler เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เปเบ•เปˆเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™
เป€เบ•เบทเบญเบ™เป„เบžเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”.

-Wold-style-cast (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบฎเบนเบšเปเบšเบšเป€เบเบปเปˆเบฒ (C-style) cast เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ void เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบžเบฒเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ C++.
เบ™เบฑเบเบชเบฐเปเบ”เบ‡เบฎเบนเบšเปเบšเบšเปƒเปเปˆ (dynamic_cast, เบชเบฐเบ–เบดเบ•เบด _cast, เปเบ›เบ„เบงเบฒเบกเบฒเบเบ„เบทเบ™เปƒเปˆ, เปเบฅเบฐ const_cast) เปเบกเปˆเบ™
เบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เปœเป‰เบญเบเบ•เปเปˆเบเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ•เบฑเป‰เบ‡เปƒเบˆ เปเบฅเบฐเบŠเบญเบเบซเบฒเป„เบ”เป‰เบ‡เปˆเบฒเบเบเบงเปˆเบฒ.

-Woverloaded-virtual (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบŠเบทเปˆเบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฐเป€เปเบทเบญเบ™เบˆเบฒเบเบŠเบฑเป‰เบ™เบžเบทเป‰เบ™เบ–เบฒเบ™. เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™:

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ A {
virtual void f();
};

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ B: เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ A {
void f(int);
};

เบฎเบธเปˆเบ™ "A" เบ‚เบญเบ‡ "f" เบ–เบทเบเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เปƒเบ™ "B", เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เป€เบŠเบฑเปˆเบ™:

เบ‚* เบ‚;
b->f();

เบฅเบปเป‰เบกเป€เบซเบฅเบงเปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.

-Wno-pmf-เปเบ›เบ‡ (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบงเบดเบ™เบดเป„เบชเบชเบณเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เบ•เบปเบงเบŠเบตเป‰เบ—เบตเปˆเบœเบนเบเบกเบฑเบ”เป€เบ›เบฑเบ™เปœเป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบชเบฐเบกเบฒเบŠเบดเบเปƒเบซเป‰เป€เบ›เบฑเบ™เปเบšเบšเบ—เบณเบกเบฐเบ”เบฒ
เบ•เบปเบงเบŠเบตเป‰.

-Wsign-promo (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เปเบเป‰เป„เบ‚ overload เป€เบฅเบทเบญเบเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเบเบฒเบ™เบˆเบฒเบเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™เบซเบผเบท enumerated เบเบฑเบš
เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™, เบซเบผเบฒเบเบเบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ”เบฝเบงเบเบฑเบ™. เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ
เบฅเบธเป‰เบ™ G ++ เบžเบฐเบเบฒเบเบฒเบกเบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเบšเปเปˆเบฅเบปเบ‡เบ™เบฒเบก, เปเบ•เปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™
เบžเบถเบ”เบ•เบด เบเบณ.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก Objective-C เปเบฅเบฐ เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡-C++ เบžเบฒเบชเบฒเบžเบฒเบชเบฒ
(เปเบฒเบเป€เบซเบ”: เบ„เบนเปˆเบกเบทเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบžเบฒเบชเบฒ Objective-C เปเบฅเบฐ Objective-C++
เบ•เบปเบงเป€เบญเบ‡

เบžเบฒเบเบ™เบตเป‰เบญเบฐเบ—เบดเบšเบฒเบเบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบš Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เปเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™ Objective-C++. เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ GNU เบ—เบตเปˆเบšเปเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบžเบฒเบชเบฒเบชเปˆเบงเบ™เปƒเบซเบเปˆ
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒ "some_class.m" เปเบšเบšเบ™เบตเป‰:

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

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰, -fgnu-runtime เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบš Objective-C เปเบฅเบฐ Objective-C ++
เป‚เบ„เบ‡เบเบฒเบ™; เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เบเบฑเบšเบžเบฒเบชเบฒเปƒเบ”เป†เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ GCC.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ Objective-C เป€เบ›เบฑเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡เบžเบฒเบชเบฒ C, Objective-C compilations
เบญเบฒเบ”เบˆเบฐเปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบชเบฐเป€เบžเบฒเบฐเบเบฑเบš C front-end (เป€เบŠเบฑเปˆเบ™: - เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก). เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™,
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก Objective-C++ เบญเบฒเบ”เบˆเบฐเปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบชเบฐเป€เบžเบฒเบฐ C++ (เป€เบŠเบฑเปˆเบ™: - เบงเบฒเบšเบต).

เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบ›เบฑเบ™ เบžเบฝเบ‡เปเบ•เปˆ เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก Objective-C เปเบฅเบฐ Objective-C++
เป‚เบ„เบ‡เบเบฒเบ™:

-fconstant-string-class=เบŠเบทเปˆโ€‹เบซเป‰เบญเบ‡โ€‹
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เบŠเบทเปˆโ€‹เบซเป‰เบญเบ‡โ€‹ เป€เบ›เบฑเบ™เบŠเบทเปˆเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™เป€เบžเบทเปˆเบญ instantiate เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบชเบฒเบเบญเบฑเบเบชเบญเบ™
เบฅเบฐเบšเบธเบ”เป‰เบงเบ syntax "@"..."". เบŠเบทเปˆเบซเป‰เบญเบ‡เบฎเบฝเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ "NXConstantString" เบ–เป‰เบฒ
เป€เบงเบฅเบฒเปเบฅเปˆเบ™ GNU เบ–เบทเบเปƒเบŠเป‰, เปเบฅเบฐ "NSConstantString" เบ–เป‰เบฒเป€เบงเบฅเบฒเปเบฅเปˆเบ™ NeXT เบเปเบฒเบฅเบฑเบ‡เบ–เบทเบ
เปƒเบŠเป‰ (เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰). เป„เบ”เป‰ -fconstant-cfstrings เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบ, เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ›เบฐโ€‹เบˆเบธโ€‹เบšเบฑเบ™, overrides เป„เบ”เป‰
-fconstant-string-class เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ” "@"..."" เบ•เบปเบงเบซเบ™เบฑเบ‡เบชเบทเบ–เบทเบเบงเบฒเบ‡เป„เบงเป‰เป€เบ›เบฑเบ™เบ„เบปเบ‡เบ—เบตเปˆ
CoreFoundation strings.

-fgnu-runtime
เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเป€เบงเบฅเบฒเปเบฅเปˆเบ™ GNU Objective-C เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบชเปˆเบงเบ™เปƒเบซเบเปˆ.

-fnext-runtime
เบชเป‰เบฒเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเป€เบงเบฅเบฒเปเบฅเปˆเบ™ NeXT. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบš NeXT-based
เบฅเบฐเบšเบปเบš, เบฅเบงเบกเบ—เบฑเบ‡ Darwin เปเบฅเบฐ Mac OS X. เบกเบฐเบซเบฒเบžเบฒเบ "__NEXT_RUNTIME__" เปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒเบ–เป‰เบฒ
(เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒ) เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

-fno-nil-receivers
เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ‚เปเป‰เบ„เบงเบฒเบก Objective-C เบ—เบฑเบ‡เปเบปเบ”เบชเบปเปˆเบ‡เป„เบ› ("[เบ‚เปเป‰เบ„เบงเบฒเบกเบœเบนเป‰เบฎเบฑเบš: arg]") เปƒเบ™เบ™เบตเป‰
เบซเบ™เปˆเบงเบเบšเปเบฅเบดเบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบœเบนเป‰เบฎเบฑเบšเบšเปเปˆเปเบกเปˆเบ™ "nil". เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบˆเบธเบ”เป€เบ‚เบปเป‰เบฒเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ runtime เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™
เบชเบปเบกเบ—เบปเบšเบเบฑเบš NeXT runtime เปเบฅเบฐ ABI เบฎเบธเปˆเบ™ 0 เบซเบผเบท 1.

-fobjc-abi-version=n
เปƒเบŠเป‰เบชเบฐเบšเบฑเบš n เบ‚เบญเบ‡ Objective-C ABI เบชเปเบฒเบฅเบฑเบš runtime เบ—เบตเปˆเป€เบฅเบทเบญเบ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™
เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™ NeXT. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบชเบฐเบšเบฑเบš 0 เปเบกเปˆเบ™
ABI เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก (32-เบšเบดเบ”) เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” เปเบฅเบฐเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡-C 2.0 เบญเบทเปˆเบ™เป†
เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบฎเบธเปˆเบ™ 1 เปเบกเปˆเบ™ ABI เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก (32-เบšเบดเบ”) เบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปเบฅเบฐ
เป€เบžเบตเปˆเบกเป€เบ•เบตเบก Objective-C 2.0 เบญเบทเปˆเบ™เป†. เบฎเบธเปˆเบ™ 2 เปเบกเปˆเบ™ ABI เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก (64-bit). เบ–เป‰เบฒเบšเปเปˆเบกเบตเบซเบเบฑเบ‡
เบฅเบฐเบšเบธเป„เบงเป‰, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เป€เบงเบตเบŠเบฑเบ™ 0 เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบ 32-เบšเบดเบ”, เปเบฅเบฐเป€เบงเบตเบŠเบฑเบ™ 2 เปƒเบ™ 64-เบšเบดเบ”.
เป€เบ„เบทเปˆเบญเบ‡โ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹.

-fobjc-call-cxx-cdtors
เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบซเป‰เบญเบ‡เบฎเบฝเบ™ Objective-C, เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ•เบปเบงเปเบ›เบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ”เบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™ C++ object
เบเบฑเบš constructor เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ trivial. เบ–เป‰เบฒเป€เบ›เบฑเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเบฑเบ‡เป€เบ„เบฒเบฐเบžเบดเป€เบชเบ” "- (id)
.cxx_construct" instance method เบ—เบตเปˆเป€เบญเบตเป‰เบ™เปƒเบŠเป‰เบ•เบปเบงเบชเป‰เบฒเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบซเบเปเป‰เป†
เบ•เบปเบงเปเบ›เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฑเบšเบ„เบทเบ™ "เบ•เบปเบ™เป€เบญเบ‡". เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบต
เบ•เบปเบงเปเบ› instance เปเบกเปˆเบ™เบงเบฑเบ”เบ–เบธ C ++ เบ—เบตเปˆเบกเบตเบ•เบปเบงเบ—เปเบฒเบฅเบฒเบเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เป€เบฅเบฑเบเป†เบ™เป‰เบญเบเป†, เปเบฅเบฐเบ–เป‰เบฒเป€เบ›เบฑเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเบฑเบ‡เป€เบ„เบฒเบฐ.
เบžเบดเป€เบชเบ” "- (void).cxx_destruct" เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ destructors เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ—เบฑเบ‡เบซเบกเบปเบ”, เปƒเบ™
เบ„เปเบฒเบชเบฑเปˆเบ‡เบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™.

เบงเบดเบ—เบตเบเบฒเบ™ "- (id).cxx_construct" เปเบฅเบฐ "- (void).cxx_destruct" เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบชเป‰เบฒเบ‡เบžเบฝเบ‡เปเบ•เปˆ
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเปเบ› instance เบ—เบตเปˆเบ›เบฐเบเบฒเบ”เปƒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™ Objective-C เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™, เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™เบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™
เบชเบทเบšเบ—เบญเบ”เบกเบฒเบˆเบฒเบ superclasses. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ‚เบญเบ‡เป€เบงเบฅเบฒเปเบฅเปˆเบ™ Objective-C เป€เบžเบทเปˆเบญ
เบฎเบฝเบเบฎเป‰เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบฅเบณเบ”เบฑเบšเบเบฒเบ™เบชเบทเบšเบ—เบญเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ. The "- (id)
เบงเบดเบ—เบตเบเบฒเบ™ .cxx_construct" เบ–เบทเบเป€เบญเบตเป‰เบ™เป‚เบ”เบ runtime เบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบงเบฑเบ”เบ–เบธเปƒเบซเบกเปˆ
เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบˆเบฑเบ”เบชเบฑเบ™; เบงเบดเบ—เบตเบเบฒเบ™ "- (void).cxx_destruct" เบ–เบทเบเป€เบญเบตเป‰เบ™เปƒเบ™เบ—เบฑเบ™เบ—เบต
เบเปˆเบญเบ™เบ—เบตเปˆ runtime เบˆเบฐ deallocate a object instance.

เปƒเบ™โ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบฅเบฒเบโ€‹เบฅเบฑเบโ€‹เบญเบฑเบโ€‹เบชเบญเบ™โ€‹เบ™เบตเป‰โ€‹, เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เปเบฅเปˆเบ™ NeXT เปƒเบ™ Mac OS X 10.4 เปเบฅเบฐโ€‹เบ•เปเปˆโ€‹เบกเบฒโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹
เป€เบญเบตเป‰เบ™เบงเบดเบ—เบตเบเบฒเบ™ "- (id).cxx_construct" เปเบฅเบฐ "- (void).cxx_destruct".

-fobjc-เบชเบปเปˆเบ‡เป‚เบ”เบเบเบปเบ‡
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบฐเป‚เบ”เบ”เป„เบงเป„เบ›เบซเบฒเบ•เบปเบงเบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก. เบเปˆเบฝเบงเบเบฑเบš Darwin เบ™เบตเป‰เปเบกเปˆเบ™เบชเปเบฒเป€เบฅเบฑเบ”เป‚เบ”เบเบœเปˆเบฒเบ™
com เบซเบ™เป‰เบฒ.

-fobjc-เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš syntactic เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปƒเบ™ Objective-C, เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš
เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเป‚เบ”เบ C ++ เปเบฅเบฐ Java. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ Objective-C
เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™ @try, @throw, @catch, @finally เปเบฅเบฐ @synchronized. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰
เบเบฑเบšเบ—เบฑเบ‡เป€เบงเบฅเบฒเปเบฅเปˆเบ™ GNU เปเบฅเบฐเป€เบงเบฅเบฒเปเบฅเปˆเบ™ NeXT (เปเบ•เปˆเบšเปเปˆเบกเบตเปƒเบซเป‰เบฎเปˆเบงเบกเบเบฑเบš
เป€เบงเบฅเบฒเปเบฅเปˆเบ™ NeXT เปƒเบ™ Mac OS X 10.2 เปเบฅเบฐเบเปˆเบญเบ™เปœเป‰เบฒเบ™เบฑเป‰เบ™).

-fobjc-gc
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญ (GC) เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ Objective-C เปเบฅเบฐ Objective-C++. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰
เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบš NeXT runtime เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™; GNU runtime เบกเบตเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบเบฑเบšเบเปเบฒเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบ—เบธเบ‡ compiler เบžเบดเป€เบชเบ”.

-fobjc-nilcheck
เบชเปเบฒเบฅเบฑเบšเป€เบงเบฅเบฒเปเบฅเปˆเบ™ NeXT เบเบฑเบšเบฅเบธเป‰เบ™ 2 เบ‚เบญเบ‡ ABI, เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบฎเบฑเบš nil
invocations เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ—เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ•เบปเบงเบˆเบดเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™
เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ -fno-objc-nilcheck. เบงเบดเบ—เบตเบเบฒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™ เปเบฅเบฐเบเบฒเบ™เป‚เบ— super เปเบกเปˆเบ™เบšเปเปˆเป€เบ„เบตเบเบ–เบทเบเบเบงเบ”เบชเบญเบš
เบชเปเบฒเบฅเบฑเบš nil เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบšเปเปˆเบงเปˆเบฒเบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบธเบ‡เบ™เบตเป‰เป€เบฎเบฑเบ”
เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเปเบฅเปˆเบ™ GNU, เบซเบผเบทเบฅเบธเป‰เบ™เป€เบเบปเปˆเบฒเบ‚เบญเบ‡ NeXT runtime ABI, เบ–เบทเบเปƒเบŠเป‰.

-fobjc-std=objc1
เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเป„เบงเบเบฐเบเบญเบ™เบžเบฒเบชเบฒเบ‚เบญเบ‡ Objective-C 1.0, เบžเบฒเบชเบฒเบ—เบตเปˆเบฎเบฑเบšเบฎเบนเป‰เป‚เบ”เบ GCC 4.0.
เบญเบฑเบ™เบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เป€เบžเบตเปˆเบก Objective-C เบเบฑเบšเบžเบฒเบชเบฒ C/C++; เบกเบฑเบ™เบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบš
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C/C++, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ„เบงเบšเบ„เบธเบกเป‚เบ”เบเบžเบฒเบชเบฒ C/C++ เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ
เบ—เบธเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เป€เบกเบทเปˆเบญเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเปƒเบŠเป‰เบเบฑเบš Objective-C เบซเบผเบท Objective-C++
compiler, เบ—เบธเบ syntax Objective-C เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰เป‚เบ”เบ GCC 4.0 เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”. เบ™เบตเป‰
เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบฅเบฐเบซเบฑเบ” Objective-C เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบ”เป‰เบงเบ
GCC เบฅเบธเป‰เบ™เป€เบเบปเปˆเบฒ.

-freplace-objc-classes
เบ›เปˆเบญเบเบ•เบปเบงเบŠเบตเป‰เบšเบญเบเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบžเบดเป€เบชเบ” ld(1โ€‹) เบšเปเปˆเปƒเบซเป‰เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบชเบฐเบ–เบดเบ”เบขเบนเปˆเปƒเบ™เบงเบฑเบ”เบ–เบธเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
เป„เบŸเบฅเปŒ, เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ เบเป‰เบญเบก(1โ€‹) เป€เบžเบทเปˆเบญเป‚เบซเบผเบ”เบกเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™เปเบ—เบ™. เบ™เบตเป‰เปเบกเปˆเบ™เปƒเบŠเป‰เปƒเบ™
เบชเบปเบกเบ—เบปเบšเบเบฑเบš Fix-and-Continue debugging mode, เบšเปˆเบญเบ™เบ—เบตเปˆเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบขเบนเปˆเปƒเบ™
เบ„เปเบฒเบ–เบฒเบกเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบ„เบทเบ™เปƒเบซเบกเปˆเปเบฅเบฐเป‚เบซเบผเบ”เปƒเบซเบกเปˆเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปƒเบ™เป„เบฅเบเบฐเป‚เบ„เบ‡เบเบฒเบ™
เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹, เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡ restart เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบปเบงโ€‹เบ‚เบญเบ‡โ€‹เบกเบฑเบ™โ€‹เป€เบญเบ‡โ€‹. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เปเบเป‰เป„เบ‚เปเบฅเบฐ
เบชเบทเบšเบ•เปเปˆเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เป‚เบ”เบเบชเบปเบกเบ—เบปเบšเบเบฑเบš NeXT runtime เปƒเบ™ Mac เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
OS X 10.3 เปเบฅเบฐเบ•เปเปˆเบกเบฒ.

-fzero-link
เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเป€เบงเบฅเบฒเปเบฅเปˆเบ™ NeXT, เบ„เบญเบกเบžเบตเบงเป€เบ•เบตเบ›เบปเบเบเบฐเบ•เบดเปเบ—เบ™เบเบฒเบ™เป‚เบ—เบซเบฒ
"objc_getClass("...")" (เป€เบกเบทเปˆเบญเบŠเบทเปˆเบ‚เบญเบ‡เบŠเบฑเป‰เบ™เปเบกเปˆเบ™เบฎเบนเป‰เบˆเบฑเบเปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก) เบเบฑเบš
เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบŠเบฑเป‰เบ™เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเป‚เบซเบผเบ”, เป€เบŠเบดเปˆเบ‡เบ›เบฑเบšเบ›เบธเบ‡เป€เบงเบฅเบฒเปเบฅเปˆเบ™
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบเบฒเบ™โ€‹เบฅเบฐโ€‹เบšเบธ -fzero-link เบ—เบธเบ‡เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบžเบถเบ”เบ•เบดเบเปเบฒเปเบฅเบฐเบชเบฒเป€เบซเบ”เบ™เบตเป‰
เป‚เบ—เบซเบฒ "objc_getClass("...")" เบ—เบตเปˆเบˆเบฐเบฎเบฑเบเบชเบฒเป„เบงเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™ Zero-Link
เป‚เบซเบกเบ” debugging, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบŠเบฑเป‰เบ™เบฎเบฝเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ”เบฑเบ”เปเบเป‰
เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹. เบ›เบฐเบˆเบธเบšเบฑเบ™ GNU runtime เบฎเบฑเบเบชเบฒเบเบฒเบ™เป‚เบ—เป„เบ›เบซเบฒ
"objc_get_class("...")" เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡.

-gen-decls
Dump เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ—เบตเปˆเป€เบซเบฑเบ™เปƒเบ™เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เป„เบ›เบซเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบŠเบทเปˆ
sourcename.decl.

-Wassign-intercept (Objective-C เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบเบฒเบ™เบกเบญเบšเปเบฒเบ Objective-C เบ–เบทเบเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เป‚เบ”เบเบœเบนเป‰เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญ.

-Wno-protocol (Objective-C เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบ–เป‰เบฒเบซเป‰เบญเบ‡เบฎเบฝเบ™เบ–เบทเบเบ›เบฐเบเบฒเบ”เปƒเบซเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ›เป‚เบ•เบ„เบญเบ™, เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเปเบกเปˆเบ™เบญเบญเบเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เบงเบดเบ—เบตเบเบฒเบ™
เปƒเบ™เป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบซเป‰เบญเบ‡เบฎเบฝเบ™. เบžเบถเบ”เบ•เบดเบเปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เป€เบžเบทเปˆเบญ
เบญเบญเบเบ„เปเบฒเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เปƒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ a
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบดเบ—เบตเบเบฒเบ™เปเบกเปˆเบ™เบชเบทเบšเบ—เบญเบ”เบกเบฒเบˆเบฒเบ superclass. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ -Wno-protocol
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบชเบทเบšเบ—เบญเบ”เบกเบฒเบˆเบฒเบ superclass เปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”,
เปเบฅเบฐเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

- เบœเบนเป‰โ€‹เป€เบฅเบทเบญเบโ€‹ (Objective-C เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบฒเบเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบฅเบทเบญเบเบ”เบฝเบงเบเบฑเบ™เบžเบปเบšเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ•เบปเบงเป€เบฅเบทเบญเบเบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ a
"@selector(...)" เบชเบฐเปเบ”เบ‡เบญเบญเบ, เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบฑเป‰เบ™เปเบกเปˆเบ™
เบžเบปเบšเป€เบซเบฑเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฐเปเบเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡
เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบ„เปเบฒเป€เบ•เบทเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบœเบฐเบฅเบดเบ”เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบกเปˆเบ™
เบšเปเปˆเบšเบฑเบ™เบฅเบธเป„เบ”เป‰, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบซเบผเบทเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ
-fsyntax เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

-Wstrict-select-match (Objective-C เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบซเบผเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบฅเบฐ / เบซเบผเบทเบ›เบฐเป€เบžเบ”เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™เปเบกเปˆเบ™เบžเบปเบšเป€เบซเบฑเบ™เบชเปเบฒเบฅเบฑเบš a
เบ•เบปเบงเป€เบฅเบทเบญเบเบ—เบตเปˆเปƒเบซเป‰เปƒเบ™เป€เบงเบฅเบฒเบžเบฐเบเบฒเบเบฒเบกเบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป„เบ›เบซเบฒเบœเบนเป‰เบฎเบฑเบš
เบžเบดเบก "id" เบซเบผเบท "Class". เป€เบกเบทเปˆเบญเบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเบ›เบดเบ” (เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™), the
compiler เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เป€เบ•เบทเบญเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปƒเบ”เป†เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™เปเบกเปˆเบ™เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เบขเบนเปˆเปƒเบ™เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™
เบ‚เบฐเบซเบ™เบฒเบ”เบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเบชเบญเบ”เบ„เปˆเบญเบ‡.

-Wunddeclared-เป€เบฅเบทเบญเบ (Objective-C เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ "@selector(...)" เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเบ—เบตเปˆเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบเบฒเบ”. เบ
เป‚เบ•เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเบšเปเปˆเบ–เบทเบเบ›เบฐเบเบฒเบ” เบ–เป‰เบฒเบšเปเปˆเบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ™เบฑเป‰เบ™เบ–เบทเบเบ›เบฐเบเบฒเบ”เบกเบฒเบเปˆเบญเบ™
เบชเบฐเปเบ”เบ‡เบญเบญเบ "@selector(...)" เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบขเบนเปˆเปƒเบ™ @interface เบซเบผเบท @protocol
เบ›เบฐเบเบฒเบ”, เบซเบผเบท implicitly เปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™ @implementation. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฐเป€เบซเบกเบต
เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบญเบ‡เบกเบฑเบ™เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆ "@selector(...)" เบชเบฐเปเบ”เบ‡เบญเบญเบ, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ - เบœเบนเป‰โ€‹เป€เบฅเบทเบญเบโ€‹ เบžเบฝเบ‡เปเบ•เปˆ
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบญเบ‡เบ•เบปเบ™เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ™เบตเป‰เบเบฑเบ‡เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”
เบชเบปเบ™เบ—เบดเบชเบฑเบ™เบเบฒเบชเบฐเป„เบ•เบฅเปŒเบ—เบตเปˆเบงเบดเบ—เบตเบเบฒเบ™เปเบฅเบฐเบ•เบปเบงเป€เบฅเบทเบญเบเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

-print-objc-runtime-info
เบชเป‰เบฒเบ‡เบชเปˆเบงเบ™เบซเบปเบง C เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบœเปˆเบฒเบ™เป‚เบ”เบเบกเบนเบ™เบ„เปˆเบฒ, เบ–เป‰เบฒเบกเบต.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ to เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบช เบ‚เปเป‰เบ„เบงเบฒเบก เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเปเบšเบš
เบ•เบฒเบกเบ›เบฐเป€เบžเบ™เบต, เบ‚เปเป‰เบ„เบงเบฒเบกเบงเบดเบ™เบดเบ”เป„เบชเป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”
เบฅเบฑเบเบชเบฐเบ™เบฐ (เป€เบŠเบฑเปˆเบ™: เบ„เบงเบฒเบกเบเบงเป‰เบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™, ...). เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบ‚เป‰เบฒเบ‡โ€‹เบฅเบธเปˆเบกโ€‹เบ™เบตเป‰โ€‹เป€เบžเบทเปˆเบญโ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹
เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบช, เป€เบŠเบฑเปˆเบ™: เบˆเปเบฒเบ™เบงเบ™เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ•เปเปˆเปเบ–เบง, เป€เบฅเบทเป‰เบญเบเป†เป€เบ—เบปเปˆเบฒเปƒเบ”
เบ‚เปเป‰เบกเบนเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปเบซเบผเปˆเบ‡เบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบฒเบเบ‡เบฒเบ™. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบšเบฒเบ‡เบžเบฒเบชเบฒเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒเบญเบฒเบ”เบˆเบฐ
เบšเปเปˆเปƒเบซเป‰เบเบฝเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

-fmessage-length=n
เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบˆเบฑเบ”โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เป€เบžเบทเปˆเบญโ€‹เปƒเบซเป‰โ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบซเบกเบฒเบฐโ€‹เบเบฑเบšโ€‹เป€เบชเบฑเป‰เบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹ n เบ•เบปเบงเบฅเบฐเบ„เบญเบ™. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 72 เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบชเบณเบฅเบฑเบš g ++ เปเบฅเบฐ 0 เบชเปเบฒเบฅเบฑเบšเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ
GCC. เบ–เป‰เบฒ n เปเบกเปˆเบ™เบชเบนเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบกเบตเบเบฒเบ™เบซเปเปˆเป€เบชเบฑเป‰เบ™เปเบกเปˆเบ™เป€เบฎเบฑเบ”; เปเบ•เปˆโ€‹เบฅเบฐโ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบ›เบฒโ€‹เบเบปเบ”โ€‹เบขเบนเปˆโ€‹เปƒเบ™ a
เป€เบชเบฑเป‰เบ™เบ”เบฝเบง.

-fdiagnostics-show-location=เบ„เบฑเป‰เบ‡เบ”เบฝเบง
เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบซเปเปˆโ€‹เป€เบชเบฑเป‰เบ™โ€‹. เปเบ™เบฐเบ™เบณเปƒเบซเป‰เบ™เบฑเบเบ‚เปˆเบฒเบงเบเบงเบ”เบซเบฒเบ‚เปเป‰เบ„เบงเบฒเบก
เบ›เปˆเบญเบเบ‚เปเป‰เบกเบนเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปเบซเบผเปˆเบ‡ เบ„เบฑเป‰เบ‡เบซเบ™เบถเปˆเบ‡; เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ‚เปเป‰เบ„เบงเบฒเบกเบเบฒเบงเป€เบเบตเบ™เป„เบ›เบ—เบตเปˆเบˆเบฐเป€เบซเบกเบฒเบฐ
เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ”เบฝเบงเปเบฅเบฐเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบซเปเปˆ, เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปเบซเบผเปˆเบ‡เบˆเบฐเบšเปเปˆเบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒ
(เป€เบ›เบฑเบ™เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ) เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบซเบผเบฒเบเบเบงเปˆเบฒเปเบฅเบฐเบซเบผเบฒเบเบเบงเปˆเบฒ, เปƒเบ™เบชเบฒเบเบ•เปเปˆเป†เบกเบฒ. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เบžเบถเบ”เบ•เบดเบเปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-fdiagnostics-show-location=เบ—เบธเบเปเบ–เบง
เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบซเปเปˆโ€‹เป€เบชเบฑเป‰เบ™โ€‹. เปเบ™เบฐเบ™เบณเปƒเบซเป‰เบ™เบฑเบเบ‚เปˆเบฒเบงเบเบงเบ”เบซเบฒเบ‚เปเป‰เบ„เบงเบฒเบก
เบ›เปˆเบญเบเบ‚เปเป‰เบกเบนเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปเบซเบผเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™ (เป€เบ›เบฑเบ™เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ) เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบ•เบปเบงเบˆเบดเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบœเบปเบ™
เบˆเบฒเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เปเบฒเบฅเบฒเบเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบเบฒเบงเป€เบเบตเบ™เป„เบ›เบ—เบตเปˆเบˆเบฐเป€เบซเบกเบฒเบฐเปƒเบ™เปเบ–เบงเบ”เบฝเบง.

-fdiagnostics-color[=เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹]
-fno-diagnostics-เบชเบต
เปƒเบŠเป‰เบชเบตเปƒเบ™เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบช. เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹ is เบšเปเปˆเป€เบ„เบตเบ, เบชเบฐเป€เบซเบกเบตเป„เบ›, เบซเบผเบท เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ เบšเปเปˆเป€เบ„เบตเบ if
GCC_COLORS เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปเบกเปˆเบ™เบšเปเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, เปเบฅเบฐ เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™.
เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบˆเบฐเปƒเบŠเป‰เบชเบตเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป€เบ›เบฑเบ™เบˆเบธเบ”. เบฎเบนเบšเปเบšเบšเบ•เปˆเบฒเบ‡เป†
-fdiagnostics-เบชเบต เปเบฅเบฐ -fno-diagnostics-เบชเบต เปเบกเปˆเบ™เบ™เบฒเบกเปเบเบ‡เบชเปเบฒเบฅเบฑเบš
-fdiagnostics-color=เบชเบฐเป€เปเบต เปเบฅเบฐ -fdiagnostics-color=เบšเปเปˆเป€เบ„เบตเบ, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš.

เบชเบตเปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก GCC_COLORS. เบกเบนเบ™โ€‹เบ„เปˆเบฒโ€‹เบ‚เบญเบ‡โ€‹เบกเบฑเบ™โ€‹เปเบกเปˆเบ™โ€‹เบฅเปเบฒโ€‹เป„เบชเป‰
เบฅเบฒเบเบŠเบทเปˆเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ—เบตเปˆเปเบเบเบญเบญเบ เปเบฅเบฐเป€เบฅเบทเบญเบเบชเบฒเบเบเปˆเบญเบเบ‚เบญเบ‡ Graphic Rendition (SGR). SGR
เบ„เปเบฒเบชเบฑเปˆเบ‡เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเบซเบกเบฒเบเป‚เบ”เบ terminal เบซเบผเบท terminal emulator. (เป€เบšเบดเปˆเบ‡เบžเบฒเบเปƒเบ™
เป€เบญ เบเบฐ เบชเบฒเบ™ เบ‚เบญเบ‡ terminal เบ‚เปเป‰ เบ„เบงเบฒเบก เบ‚เบญเบ‡ เบ—เปˆเบฒเบ™ เบชเปเบฒ เบฅเบฑเบš เบ„เบธเบ™ เบ„เปˆเบฒ เบ—เบตเปˆ เบญเบฐ เบ™เบธ เบเบฒเบ” เปเบฅเบฐ เบ„เบงเบฒเบก เบซเบกเบฒเบ เบ‚เบญเบ‡ เป€เบ‚เบปเบฒ เป€เบˆเบปเป‰เบฒ เป€เบ›เบฑเบ™
เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบงโ€‹เบญเบฑเบโ€‹เบชเบญเบ™โ€‹
เปเบฅเบฐเบชเบฒเบกเบฒเบ” concatenated เบเบฑเบš semicolons. เบ„เปˆเบฒเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบˆเบฐเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบฅเบงเบกเบกเบต 1 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™
เบเป‰เบฒเบซเบฒเบ™, 4 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ underline, 5 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบฐเบžเบดเบš, 7 เบชเปเบฒเบฅเบฑเบšเบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™, 39 เบชเปเบฒเบฅเบฑเบšเบชเบตเบžเบทเป‰เบ™เบซเบฅเบฑเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, 30
to 37 เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบชเบตโ€‹เบžเบทเป‰เบ™โ€‹เบซเบ™เป‰เบฒโ€‹, 90 to 97 เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™ 16 เบชเบตโ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบชเบตโ€‹เบ—เบฒเบ‡โ€‹เบซเบ™เป‰เบฒโ€‹, 38 5 0 to
38 5 255 เบชเปเบฒเบฅเบฑเบš 88 เบชเบตเปเบฅเบฐ 256 เป‚เบซเบกเบ”เบชเบตเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒ, 49 เบชเปเบฒเบฅเบฑเบšเบžเบทเป‰เบ™เบซเบฅเบฑเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบชเบต, 40 to 47 เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบชเบตโ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹, 100 to 107 เบชเปเบฒเบฅเบฑเบšเบชเบตเบžเบทเป‰เบ™เบซเบผเบฑเบ‡เบ‚เบญเบ‡เป‚เปเบ” 16 เบชเบต,
เปเบฅเบฐ 48 5 0 to 48 5 255 เบชเปเบฒเบฅเบฑเบš 88-color เปเบฅเบฐ 256-color modes เบชเบตเบžเบทเป‰เบ™เบซเบฅเบฑเบ‡.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ 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 substring เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”: เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ.

"เบ„เบณเป€เบ•เบทเบญเบ™="
SGR substring เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž: เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ.

"เบซเบกเบฒเบเป€เบซเบ”="
SGR substring เบชเปเบฒเบฅเบฑเบšเบซเบกเบฒเบเป€เบซเบ”: เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ.

"caret="
SGR substring เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™ cart.

"locus="
SGR substring เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ, file:line or file:line:column เปเบฅเบฐเบญเบทเปˆเบ™เป†

"quote="
SGR substring เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบžเบดเบกเบขเบนเปˆเปƒเบ™เบงเบปเบ‡เบขเบทเบก.

-fno-diagnostics-show-option
เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ•เปˆเบฅเบฐเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบ›เปˆเบญเบเบญเบญเบเบกเบฒเบ›เบฐเบเบญเบšเบกเบตเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบŠเบตเป‰เบšเบญเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡
เบ—เบตเปˆเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเป‚เบ”เบเบเบปเบ‡ (เบ–เป‰เบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบเบฑเบšเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบช
เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ). เบเบฒเบ™โ€‹เบฅเบฐโ€‹เบšเบธ -fno-diagnostics-show-option เบ—เบธเบ‡โ€‹เบชเบฐโ€‹เบเบฑเบ”โ€‹เบเบฑเป‰เบ™โ€‹เบ™เบฑเป‰เบ™
เบžเบถเบ”เบ•เบด เบเบณ.

-fno-diagnostics-show-caret
เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ•เปˆเบฅเบฐเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบ›เปˆเบญเบเบญเบญเบเบกเบฒเบฅเบงเบกเบกเบตเบชเบฒเบเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš เปเบฅเบฐ เบ„เบฒเบš '^'
เบŠเบตเป‰เบšเบญเบเบ–เบฑเบ™. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ to เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป or เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™ เบ„เปเบฒเป€เบ•เบทเบญเบ™
เบ„เปเบฒเป€เบ•เบทเบญเบ™เปเบกเปˆเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบฅเบฒเบเบ‡เบฒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ›เบฐเบเบปเบ”เบ•เบปเบง
เบœเบดเบ”เบžเบฒเบ”เปเบ•เปˆเบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบซเบผเบทเปเบ™เบฐเบ™เปเบฒเบงเปˆเบฒเบญเบฒเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ—เบตเปˆเบšเปเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบžเบฒเบชเบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เป€เบ•เบทเบญเบ™เบชเบฐเป€เบžเบฒเบฐเปเบ•เปˆเบ„เบงเบšเบ„เบธเบก
เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบœเบฐเบฅเบดเบ”เป‚เบ”เบ GCC.

-fsyntax เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบเบงเบ”เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบš syntax เบœเบดเบ”เบžเบฒเบ”, เปเบ•เปˆเบขเปˆเบฒเป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบ™เบฑเป‰เบ™.

-fmax-errors=n
เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เป€เบžเบทเปˆเบญโ€‹ n, เปƒเบ™เบˆเบธเบ”เบ™เบฑเป‰เบ™ GCC เบ›เบฐเบ•เบดเป€เบชเบ”เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ
เบซเบผเบฒเบเบเบงเปˆเบฒเบเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบชเบทเบšเบ•เปเปˆเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡. เบ–เป‰เบฒ n เปเบกเปˆเบ™ 0 (เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™),
เบšเปเปˆเบกเบตเบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบเปˆเบฝเบงเบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบœเบฐเบฅเบดเบ”. เบ–เป‰เบฒ - เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ” Wfatalโ€‹ เปเบกเปˆเบ™เบเบฑเบ‡
เบฅเบฐเบšเบธ, เบˆเบฒเบเบ™เบฑเป‰เบ™ - เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ” Wfatalโ€‹ เบกเบตเบ„เบงเบฒเบกเบชเบณเบ„เบฑเบ™เบเบงเปˆเบฒเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰.

-w เบเบฑเบšเบเบฑเป‰เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

- เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹
เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

- เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ” =โ€‹
เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. เบ•เบปเบงเบฅเบฐเบšเบธเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ–เบทเบเบ•เปเปˆเบ—เป‰เบฒเบ;
เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡ -Wrror=เบ›เปˆเบฝเบ™ เบ›เปˆเบฝเบ™โ€‹เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เบ—เบตเปˆโ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เป‚เบ”เบโ€‹ - เบชเบฐเบซเบงเบดเบ” เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹.
เบชเบฐเบซเบผเบฑเบšเบ™เบตเป‰เปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบฅเบปเบš, เป€เบžเบทเปˆเบญเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเป€เบชเบ” - เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹ เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบชเบฐเป€เบžเบฒเบฐ;
เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡ -Wno-error=เบชเบฐเบซเบผเบฑเบš เป€เบฎเบฑเบ”เปƒเบซเป‰ - เบชเบฐเบซเบงเบดเบ” เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ - เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹
เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบœเบปเบ™เบเบฐเบ—เบปเบš.

เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเป„เบ”เป‰เบ›เบฐเบเบญเบšเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ„เบงเบšเบ„เบธเบก
เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบฑเป‰เบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบš - เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ” =โ€‹ เปเบฅเบฐ -Wno-error= เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰
เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. (เบเบฒเบ™เบžเบดเบกเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™
-fno-diagnostics-show-option เบ—เบธเบ‡.)

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบเบฒเบ™เบเปเบฒเบ™เบปเบ” - เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ” =โ€‹เบŸเบน เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบซเบกเบฒเบเป€เบ–เบดเบ‡ -WเบŸเบนเบ—เบตเปˆเบขเบนเปˆ เป€เบ–เบดเบ‡เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, -Wno-error=เบŸเบน
เบšเปเปˆเป„เบ”เป‰เบซเบกเบฒเบเป€เบ–เบดเบ‡เบซเบเบฑเบ‡.

- เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ” Wfatalโ€‹
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™
เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบชเบทเบšเบ•เปเปˆเปเบฅเบฐเบžเบดเบกเบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ•เบทเปˆเบกเบญเบตเบ.

เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบฎเป‰เบญเบ‡โ€‹เบ‚เปโ€‹เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบฒเบโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบ”เป‰เบงเบโ€‹ -W, เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡
- Wimplicit เป€เบžเบทเปˆเบญเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบเบฒเบ” implicit. เปเบ•เปˆเบฅเบฐเบ„เปเบฒเป€เบ•เบทเบญเบ™เบชเบฐเป€เบžเบฒเบฐเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฑเบ‡เบกเบตเบฎเบนเบšเปเบšเบšเบฅเบปเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ -Wno- เบ›เบดเบ”โ€‹เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹; เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡,
-Wno - implicit. เบ„เบนเปˆเบกเบทเบ™เบตเป‰เบชเบฐเปเบ”เบ‡เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบญเบ‡เบฎเบนเบšเปเบšเบš, เบญเบฑเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบกเบšเปเปˆเปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.
เบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบžเบฒเบชเบฒเบชเบฐเป€เบžเบฒเบฐเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเบฑเบ‡เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡ C ++ เบžเบฒเบชเบฒ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เปเบฅเบฐ Objective-C
เปเบฅเบฐ เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡-C++ เบžเบฒเบชเบฒ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™.

เป€เบกเบทเปˆเบญเบกเบตเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบ•เบทเบญเบ™เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡: - เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เบšเปเปˆโ€‹เบฎเบนเป‰โ€‹เบˆเบฑเบโ€‹), GCC emits a
เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบฅเบฐเบšเบธเบงเปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบšเปเปˆเบ–เบทเบเบฎเบฑเบšเบฎเบนเป‰. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ -Wno- เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹,
เบžเบถเบ”เบ•เบดเบเปเบฒเปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ: เบšเปเปˆเบกเบตเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเปเบกเปˆเบ™เบœเบฐเบฅเบดเบ”เบชเปเบฒเบฅเบฑเบš -Wno-unknown-เป€เบ•เบทเบญเบ™
เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบญเบทเปˆเบ™เป†เบเปเบฒเบฅเบฑเบ‡เบ–เบทเบเบœเบฐเบฅเบดเบ”. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ™เปเบฒเปƒเบŠเป‰เปƒเบซเบกเปˆ -Wno- เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
เบเบฑเบš compilers เป€เบเบปเปˆเบฒ, เปเบ•เปˆเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบœเบดเบ”เบžเบฒเบ”, compiler เป€เบ•เบทเบญเบ™เบงเปˆเบฒ unrecognized
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™.

-Wpedantic
- pedantic
เบญเบญเบเบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบ ISO C เปเบฅเบฐ ISO C++ เบ—เบตเปˆเป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”; เบ›เบฐเบ•เบดเป€เบชเบ”เป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”
เปƒเบŠเป‰เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆเบ–เบทเบเบซเป‰เบฒเบก, เปเบฅเบฐเบšเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบšเปเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก ISO C เปเบฅเบฐ ISO
C++. เบชเปเบฒเบฅเบฑเบš ISO C, เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO C เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบเปƒเบ”เป† -std
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹.

เป‚เบ›เบฃเปเบเบฃเบก ISO C เปเบฅเบฐ ISO C++ เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ„เบงเบ™เบฅเบงเบšเบฅเบงเบกเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เป‚เบ”เบเบกเบต เบซเบผเบทเบšเปเปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰
(เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบซเบฒเบเบฒเบเบ•เป‰เบญเบ‡เบเบฒเบ™ -ansi เบซเบผเบท -std เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบเบฒเบ™โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ—เบตเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹
ISO C). เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป‚เบ”เบเบšเปเปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰, เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GNU เปเบฅเบฐ C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเปเบฅเบฐ
เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ” C ++ เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™. เบ”เป‰เบงเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰, เบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”.

-Wpedantic เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเปเบฒเบฎเบญเบ‡เบ—เบตเปˆเบกเบต
เบŠเบทเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบฅเบปเบ‡เบ—เป‰เบฒเบเบ”เป‰เบงเบ __. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž Pedantic เบเบฑเบ‡เบ–เบทเบเบ›เบดเบ”เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™
เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก "__extension__". เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ„เบงเบ™เปƒเบŠเป‰เบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบซเบ™เบต; เป‚เบ„เบ‡เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ„เบงเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบžเบงเบเบกเบฑเบ™.

เบœเบนเป‰เปƒเบŠเป‰เบšเบฒเบ‡เบ„เบปเบ™เบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰ -Wpedantic เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบšเบฑเบ™โ€‹เบ”เบฒโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบญเบ”โ€‹เบ„เปˆเบญเบ‡ ISO C เบขเปˆเบฒเบ‡โ€‹เป€เบ‚เบฑเป‰เบกโ€‹เบ‡เบงเบ”โ€‹. เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ
เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบžเบปเบšเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™: เบกเบฑเบ™เบžเบปเบšเป€เบซเบฑเบ™เบšเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ ISO,
เปเบ•เปˆโ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” --- เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ—เบตเปˆ ISO C เบ•เป‰เบญเบ‡เบเบฒเบ™ เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบช, เปเบฅเบฐเบšเบฒเบ‡เบญเบฑเบ™เบญเบทเปˆเบ™เป†เบชเปเบฒเบฅเบฑเบš
เป€เบŠเบดเปˆเบ‡เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก.

เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป€เบžเบทเปˆเบญเบฅเบฒเบเบ‡เบฒเบ™เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก ISO C เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบต,
เปเบ•เปˆเบˆเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบงเบฝเบเบ‡เบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปเบฅเบฐเบˆเบฐเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบ
-Wpedantic. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเปเบœเบ™เบ—เบตเปˆเบˆเบฐเบฎเบญเบ‡เบฎเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบญเบฑเบ™เปƒเบเป‰เบ™เบตเป‰.

เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบเบฑเบš -std เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบžเบฒเบชเบฒ GNU เบ‚เบฐเบซเบเบฒเบ C, เป€เบŠเบฑเปˆเบ™:
gnu90 or gnu99, เบกเบตเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™ เบ–เบฒเบ™ เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡ ISO C เบ—เบตเปˆ
เบžเบฒเบชเบฒ GNU เบ‚เบฐเบซเบเบฒเบเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆ. เบ„เบณเป€เบ•เบทเบญเบ™เบˆเบฒเบ -Wpedantic เป„เบ”เป‰เบ–เบทเบเบกเบญเบšเปƒเบซเป‰เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆ
เบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™. (เบกเบฑเบ™เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง
เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบžเบฒโ€‹เบชเบฒ GNU C เบ—เบตเปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป„เบงเป‰โ€‹, เบ™เบฑเบšโ€‹เบ•เบฑเป‰เบ‡โ€‹เปเบ•เปˆโ€‹เป‚เบ”เบโ€‹เบ„เปเบฒโ€‹เบ™เบดโ€‹เบเบฒเบก GNUโ€‹
เบžเบฒเบชเบฒเบ‚เบญเบ‡ C เบ›เบฐเบเบญเบšเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆ compiler เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเปƒเบซเป‰, เปเบฅเบฐ
เบˆเบฐโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบซเบเบฑเบ‡โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบ•เบทเบญเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹.)

-pedantic เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹
เบ„เบท -Wpedantic, เบเบปเบเป€เบงเบฑเป‰เบ™เบงเปˆเบฒเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบกเปˆเบ™เบœเบฐเบฅเบดเบ”เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™.

- เบเบฒ
เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ—เบฑเบ‡เบซเบกเบปเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบšเบฒเบ‡เบ„เบปเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ
เบ„เปเบฒเบ–เบฒเบก, เปเบฅเบฐเบ—เบตเปˆเบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™ (เบซเบผเบทเบ”เบฑเบ”เปเบ›เบ‡เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™), เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบขเบนเปˆเปƒเบ™
เบชเบปเบกเบ—เบปเบšเบเบฑเบšเบกเบฐเบซเบฒเบžเบฒเบ. เบญเบฑเบ™เบ™เบตเป‰เบเบฑเบ‡เป€เบ›เบตเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ„เบณเป€เบ•เบทเบญเบ™เบชเบฐเป€เบžเบฒเบฐเบžเบฒเบชเบฒเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰
in C ++ เบžเบฒเบชเบฒ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เปเบฅเบฐ Objective-C เปเบฅเบฐ เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡-C++ เบžเบฒเบชเบฒ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™.

- เบเบฒ เป€เบ›เบตเบ”เบ—เบธเบ‡เป€เบ•เบทเบญเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

-waddress - Warray-bounds (เบžเบฝเบ‡เปเบ•เปˆเบเบฑเบš -O2) -Wc++11-compat -Wchar-subscripts
-Wenum เบ›เบฝเบšเบ—เบฝเบš (เปƒเบ™ C/ObjC; เบญเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบตเบ”เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ C++) -Wimplicit-int (เบ„ เปเบฅเบฐ
Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™) -Wimplicit-function-เบ›เบฐเบเบฒเบ” (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™) - เบ„เปเบฒเป€เบซเบฑเบ™
-Wformat - เบœเบนเป‰เบเบดเบ‡ (เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบš C/ObjC เปเบฅเบฐเป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆ - freestanding) -Wmaybe-unitialized
-Wmissing-braces (เบชเบฐเป€เบžเบฒเบฐ C/ObjC) -Wnonnull -Wopenmp-simd -Wparentheses
-Wpointer-เป€เบŠเบฑเบ™โ€‹ - เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹ - เบ›เบฐโ€‹เป€เบžเบ” Wreturnโ€‹ - เบฅเปเบฒเบ”เบฑเบšเบˆเบธเบ” -Wsign-เบ›เบฝเบšเบ—เบฝเบš (เบชเบฐเป€เบžเบฒเบฐเปƒเบ™ C++)
- เป€เบ›เบฑเบ™เบเบฒเบ™เบฅเป‰เบฒเบชเบธเบ” -Wstrict-overflow=1 - เบชเบฐเบซเบงเบดเบ” -Wtrigraphs - เบ›เบฐเบเบฒเบ”
-Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Wunused-variable
-Wvolatile-register-var

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ—เบธเบ‡เป€เบ•เบทเบญเบ™เป„เบžเบšเบฒเบ‡เบญเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบซเบกเบฒเบเป€เบ–เบดเบ‡ - เบเบฒ. เบšเบฒเบ‡เบ„เบปเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบšเปเปˆเป„เบ”เป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™เบ„เปเบฒเบ–เบฒเบก, เปเบ•เปˆเบงเปˆเบฒ
เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบงเบ”เป€เบšเบดเปˆเบ‡; เบ„เบปเบ™เบญเบทเปˆเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™
เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบซเบผเบทเบเบฒเบเบ—เบตเปˆเบˆเบฐเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบต, เปเบฅเบฐเบšเปเปˆเบกเบตเบงเบดเบ—เบตเบ‡เปˆเบฒเบเป†เบ—เบตเปˆเบˆเบฐเบ”เบฑเบ”เปเบ›เบ‡
เบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™. เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ -Wextra เปเบ•เปˆเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ
เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™.

-Wextra
เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบšเบฒเบ‡เบ—เบธเบ‡เป€เบ•เบทเบญเบ™เป„เบžเบžเบดเป€เบชเบ”เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ. (เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปƒเบŠเป‰
เบˆเบฐเบ–เบทเบเป€เบญเบตเป‰เบ™ -W. เบŠเบทเปˆเป€เบเบปเปˆเบฒเปเบกเปˆเบ™เบเบฑเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™, เปเบ•เปˆเบŠเบทเปˆเปƒเบซเบกเปˆเปเบกเปˆเบ™เบซเบผเบฒเบ
เบญเบฐเบ—เบดเบšเบฒเบ.)

- Wclobbered - เบฎเปˆเบฒเบ‡เบเบฒเบเบญเปˆเบญเบ™เป€เบžเบ -Wignored-qualifiers -Wmissing-field-initializers
-Wmissing-parameter-type (C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™) -Wold-style-เบ›เบฐเบเบฒเบ” (C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™) -Woverride-init
-Wsign-เบ›เบฝเบšเบ—เบฝเบš -Wtype- limits - เบ›เบฐเบเบฒเบ” -Wunused-เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต (เบžเบฝเบ‡เปเบ•เปˆเบเบฑเบš - เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ or
- เบเบฒ) -Wunused-but-set-parameter (เบžเบฝเบ‡เปเบ•เปˆเบเบฑเบš - เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ or - เบเบฒ)

เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -Wextra เบเบฑเบ‡เบžเบดเบกเบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

ยท เบ•เบปเบงเบŠเบตเป‰เบ–เบทเบเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเป€เบฅเบเบชเบนเบ™ <, <=, >, เบซเบผเบท >=.

ยท (C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™) เบ•เบปเบงเบ™เบฑเบšเบˆเบณ เบ™เบงเบ™ เปเบฅเบฐ เบœเบนเป‰เบšเปเปˆเบˆเบณเปเบ™เบเบ—เบฑเบ‡เบชเบญเบ‡เบ›เบฐเบเบปเบ”เบขเบนเปˆเปƒเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ.

ยท (C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™) เบžเบทเป‰เบ™เบ–เบฒเบ™ virtual เบ—เบตเปˆเบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™.

ยท (C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™) เบเบฒเบ™เบชเบฑเปˆเบ‡เบˆเบญเบ‡เบญเบฒเป€เบฃเบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบฒเบ”เปเบฅเป‰เบง เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™.

ยท (C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™) เป€เบญเบปเบฒเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบเบฒเบ” เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™.

ยท (C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™) เบซเป‰เบญเบ‡เบฎเบฝเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบ•เบปเบงเบชเป‰เบฒเบ‡เบชเบณเป€เบ™เบปเบฒเบ‚เบญเบ‡เบŠเบฑเป‰เบ™เบ—เบตเปˆเบกเบฒเบˆเบฒเบ.

-Wchar-subscripts
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ subscript array เบกเบตเบ›เบฐเป€เบžเบ” "char". เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฒเป€เบซเบ”เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เป€เบ›เบฑเบ™
เบœเบนเป‰เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบกเบฑเบเบˆเบฐเบฅเบทเบกเบงเปˆเบฒเบ›เบฐเป€เบžเบ”เบ™เบตเป‰เบ–เบทเบเป€เบŠเบฑเบ™เปƒเบ™เบšเบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

- เบ„เปเบฒเป€เบซเบฑเบ™
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบฅเบณเบ”เบฑเบšเบ„เบณเป€เบซเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ /* เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ a /* เบ„เปเบฒเป€เบซเบฑเบ™, เบซเบผเบทเบ—เบธเบเบ„เบฑเป‰เบ‡ a
Backslash-Newline เบ›เบฐเบเบปเบ”เบขเบนเปˆเปƒเบ™ a // เบ„เปเบฒเป€เบซเบฑเบ™. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wno- coverage-mismatch
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเป‚เบ›เบฃเป„เบŸเบฅเปŒเบ„เปเบฒเบ„เบถเบ”เบ„เปเบฒเป€เบซเบฑเบ™เบšเปเปˆเบเบปเบ‡เบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ -fprofile-เปƒเบŠเป‰ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบ–เป‰เบฒ เบ
เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เปเบกเปˆเบ™เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฑเบš -fprofile-gen เปเบฅเบฐเบกเบต -fprofile-เปƒเบŠเป‰,
เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบ„เปเบฒเบ•เบดเบŠเบปเบกเป‚เบ›เบฃเป„เบŸเบฅเปŒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบปเบ‡เบเบฑเบšเป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป„เบ”เป‰ เปเบฅเบฐ GCC เบšเปเปˆเบชเบฒเบกเบฒเบ”
เปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ•เบดเบŠเบปเบกเป‚เบ›เบฃเป„เบŸเบฅเปŒ. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ เปเบฅเบฐเป€เบ›เบฑเบ™
เบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. -Wno- coverage-mismatch เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบซเบผเบท
-Wno-error= coverage-mismatch เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เป„เบ”เป‰. เบเบฒเบ™เบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”
เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบฅเบฐเบซเบฑเบ” optimized เบšเปเปˆเบ”เบตเปเบฅเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡
เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹เบซเบผเบฒเบโ€‹เป€เบŠเบฑเปˆเบ™โ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚ bug เบเบฑเบšโ€‹เบ–เบฒเบ™โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบขเบนเปˆโ€‹เปเบฅเป‰เบงโ€‹. เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™
เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเปเบกเปˆเบ™เบšเปเปˆเปเบ™เบฐเบ™เปเบฒ.

-Wno-cpp
(C, Objective-C, C++, Objective-C++ เปเบฅเบฐ Fortran เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)

เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™เบ—เบตเปˆเบ›เปˆเบญเบเบญเบญเบเบกเบฒเป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡ "#warning".

- เบเบฒเบ™โ€‹เบชเบปเปˆเบ‡โ€‹เป€เบชเบตเบกโ€‹เบชเบญเบ‡โ€‹เบ„เบฑเป‰เบ‡โ€‹ (C, C++, Objective-C เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เปƒเบซเป‰เบ„เปเบฒเป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” "เป€เบฅเบทเปˆเบญเบ™" เบ–เบทเบเบชเบปเปˆเบ‡เป€เบชเบตเบกเป€เบ›เบฑเบ™ "เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ". CPUs
เบ”เป‰เบงเบ 32-bit "single-precision" เบซเบ™เปˆเบงเบเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ”เบฅเบญเบเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ” "float" เปƒเบ™เบฎเบฒเบ”เปเบง,
เปเบ•เปˆเป€เบฎเบฑเบ”เบ•เบฒเบก "เบชเบญเบ‡" เปƒเบ™เบŠเบญเบšเปเบง. เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เป€เบฎเบฑเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰
เบ„เปˆเบฒ "เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ" เปเบกเปˆเบ™เบฅเบฒเบ„เบฒเปเบžเบ‡เบเบงเปˆเบฒเบซเบผเบฒเบเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเป€เบเบตเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบŠเบญเบšเปเบง
emulation.

เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเบšเบฑเบ‡เป€เบญเบตเบ™เบ”เป‰เบงเบ "เบชเบญเบ‡" เป€เบžเบฒเบฐเบงเปˆเบฒเบˆเบธเบ”เบฅเบญเบ
เบ•เบปเบงเบซเบ™เบฑเบ‡เบชเบทเปเบกเปˆเบ™ implicitly เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” "double". เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™:

เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ™ (เบฅเบฑเบ”เบชเบฐเปเบตเบฅเบญเบ)
{
เบเบฑเบšเบ„เบทเบ™ 3.14159 * radius * radius;
}

compiler เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบ”เป‰เบงเบ "double" เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบˆเบธเบ”เบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ™เป„เบ”เป‰
เบ•เบปเบงเบซเบ™เบฑเบ‡เบชเบทเปเบกเปˆเบ™ "เบชเบญเบ‡".

-Wformat
-Wformat=n
เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เป‚เบ—เบซเบฒ "printf" เปเบฅเบฐ "scanf", เปเบฅเบฐเบญเบทเปˆเบ™เป†, เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡.
เบกเบตโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบเบฑเบšโ€‹เบชเบฐโ€‹เบ•โ€‹เบฃเบดเบ‡โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ—เบตเปˆโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹, เปเบฅเบฐโ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹
เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบชเบฐเบ•เบฃเบดเบ‡เบฎเบนเบšเปเบšเบšเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบ. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เปเบฅเบฐ
เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบฎเบนเบšเปเบšเบš, เปƒเบ™ "printf", "scanf", "strftime" เปเบฅเบฐ
"strfmon" (เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ X/Open, เบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C) เบ„เบญเบšเบ„เบปเบง (เบซเบผเบทเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบญเบทเปˆเบ™เป†-
เบ„เบญเบšเบ„เบปเบงเบชเบฐเป€เบžเบฒเบฐ). เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ”เบ–เบทเบเบเบงเบ”เบชเบญเบšเป‚เบ”เบเบšเปเปˆเบกเบตเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบฎเบนเบšเปเบšเบš
เบเปเบฒเบ™เบปเบ”เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบชเบฐเบšเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเป€เบฅเบทเบญเบ, เปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง
เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ„เบธเบ™โ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เปเบกเปˆเบ™โ€‹เบ›เบดเบ”โ€‹เบเบฒเบ™โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹เป‚เบ”เบโ€‹ - freestanding or -fno-builtin.

เบฎเบนเบšเปเบšเบšเบ•เปˆเบฒเบ‡เป†เป„เบ”เป‰เบ–เบทเบเบเบงเบ”เบชเบญเบšเบ•เปเปˆเบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเป‚เบ”เบ GNU libc เป€เบงเบตเบŠเบฑเบ™ 2.2.
เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบฅเบงเบกเบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” ISO C90 เปเบฅเบฐ C99 เบ—เบฑเบ‡เปเบปเบ”, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบˆเบฒเบ Single Unix
เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเป€เบžเบฒเบฐเปเบฅเบฐเบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ BSD เปเบฅเบฐ GNU. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบญเบทเปˆเบ™เป†เบญเบฒเบ”เบˆเบฐเบšเปเปˆ
เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”; GCC เบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเป€เบเบตเบ™เบเบงเปˆเบฒ
เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบชเบฐเป€เบžเบฒเบฐ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒ -Wpedantic เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบš -Wformat,
เบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบšเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเป€เบฅเบทเบญเบ (เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™
เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเปเบšเบš "strfmon", เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ™เบฑเป‰เบ™เบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C).

-Wformat=1
-Wformat
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -Wformat เป€เบ—เบปเปˆเบฒเบเบฑเบš -Wformat=1, เปเบฅเบฐ -Wno เบฎเบนเบšโ€‹เปเบšเบšโ€‹ เป€เบ—เบปเปˆเบฒเบเบฑเบš
-Wformat=0เบ—เบตเปˆเบขเบนเปˆ เบ•เบฑเป‰เบ‡เปเบ•เปˆ -Wformat เบเบฑเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบฎเบนเบšเปเบšเบš null เบชเปเบฒเบฅเบฑเบšเบซเบผเบฒเบเป†เบญเบฑเบ™
เปœเป‰เบฒ เบ—เบตเปˆ, -Wformat เบเบฑเบ‡เปเบฒเบเป€เบ–เบดเบ‡ -Wnonnull. เบšเบฒเบ‡เบ”เป‰เบฒเบ™เบ‚เบญเบ‡เบฎเบนเบšเปเบšเบšเบฅเบฐเบ”เบฑเบšเบ™เบตเป‰
เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบฒเบกเบฒเบ”เบ›เบดเบ”เป„เบ”เป‰เป‚เบ”เบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ: -Wno-format-contains-nul,
-Wno-format-extra-args, เปเบฅเบฐ -Wno-format-zero-length. -Wformat เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
- เบเบฒ.

-Wno-format-contains-nul
If -Wformat เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰, เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบฎเบนเบšเปเบšเบšเบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเบกเบต NUL bytes.

-Wno-format-extra-args
If -Wformat เปเบกเปˆเบ™เบฅเบฐเบšเบธเป„เบงเป‰, เบšเปเปˆเป„เบ”เป‰เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เป€เบเบตเบ™เป€เบ›เบฑเบ™ "printf" เบซเบผเบท
เบŸเบฑเบ‡เบŠเบฑเบ™เบฎเบนเบšเปเบšเบš "scanf". เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™
เบšเปเปˆเบชเบปเบ™เปƒเบˆ.

เบšเปˆเบญเบ™เบ—เบตเปˆเบญเบฒเบเบดเบงเป€เบกเบฑเบ™เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เปเบกเปˆเบ™เบขเบนเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบญเบฒเบเบดเบงเป€เบกเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เปเบฅเป‰เบงเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบเบฑเบš $
เบ•เบปเบงเป€เบฅเบ operand เบชเบฐเป€เบžเบฒเบฐ, เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเปเบกเปˆเบ™เบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบš, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบšเปเปˆเบชเบฒเบกเบฒเบ”เบฎเบนเป‰เบงเปˆเบฒเบ›เบฐเป€เบžเบ”เปƒเบ”เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ "va_arg" เป€เบžเบทเปˆเบญเบ‚เป‰เบฒเบกเบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบฎเบนเบšเปเบšเบš "scanf", เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เปเบกเปˆเบ™เบ•เบปเบงเบŠเบตเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ Unix เบ”เบฝเบง
เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเป€เบžเบฒเบฐเบเปˆเบฒเบงเบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”.

-Wno-format-zero-length
If -Wformat เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰, เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบฎเบนเบšเปเบšเบšเบ„เบงเบฒเบกเบเบฒเบงเบชเบนเบ™. เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C
เบฅเบฐเบšเบธเบงเปˆเบฒเบฎเบนเบšเปเบšเบšเบ„เบงเบฒเบกเบเบฒเบงเบชเบนเบ™เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”.

-Wformat=2
เป€เบ›เบตเบ”เบ™เปเบฒเปƒเบŠเป‰ -Wformat เบšเบงเบเบเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบฎเบนเบšเปเบšเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš -Wformat
-Wformat-nonliteral -Wformat เบ„เบงเบฒเบกโ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹ -Wformat-y2k.

-Wformat-nonliteral
If -Wformat เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰, เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบฎเบนเบšเปเบšเบšเบชเบฐเบ•เบฃเบดเบ‡เบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเปœเบฑเบ‡เบชเบทเบชเบฐเบ•เบฃเบดเบ‡
เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเป„เบ”เป‰, เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบฎเบนเบšเปเบšเบšเบˆเบฐเปƒเบŠเป‰ arguments เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบกเบฑเบ™
เป€เบ›เบฑเบ™ "va_list".

-Wformat เบ„เบงเบฒเบกโ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹
If -Wformat เป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰, เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™
เบšเบฑเบ™เบซเบฒเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ™เบตเป‰เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป‚เบ—เบซเบฒ "printf" เปเบฅเบฐ
"scanf" เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบชเบฐเบ•เบฃเบดเบ‡เบฎเบนเบšเปเบšเบšเบšเปเปˆเปเบกเปˆเบ™เบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเบฎเบนเป‰เบซเบ™เบฑเบ‡เบชเบทเปเบฅเบฐเบšเปเปˆเบกเบต
เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบš "printf (foo);". เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ‚เบธเบกเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ
เบฎเบนเบšเปเบšเบšเบชเบฐเบ•เบฃเบดเบ‡เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบšเปเปˆเป€เบŠเบทเปˆเบญเบ–เบท เปเบฅเบฐเบ›เบฐเบเบญเบšเบ”เป‰เบงเบ %n. (เบ›เบฐเบˆเบธเบšเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™
เบŠเบธเบ”เบเปˆเบญเบเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆ -Wformat-nonliteral เป€เบ•เบทเบญเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹, เปเบ•เปˆโ€‹เบงเปˆเบฒโ€‹เปƒเบ™โ€‹เบญเบฐโ€‹เบ™เบฒโ€‹เบ„เบปเบ”โ€‹เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹
เป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒ -Wformat เบ„เบงเบฒเบกโ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹ เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฅเบงเบกเบขเบนเปˆเปƒเบ™ -Wformat-nonliteral.)

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹: เปƒเบ™ Ubuntu 8.10 เปเบฅเบฐโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ•เปเปˆโ€‹เบกเบฒโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เป€เบ›เบตเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป‚เบ”เบโ€‹เบ„เปˆเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบš Cโ€‹,
C++, ObjC, ObjC++. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™, เปƒเบŠเป‰ -Wno-format-เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž, เบซเบผเบทเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบฎเบนเบšเปเบšเบšเบ—เบฑเบ‡เบซเบกเบปเบ”
เบ„เปเบฒโ€‹เป€เบ•เบทเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹ -Wformat=0. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบฎเบนเบšเปเบšเบšเบ•เบฒเบ, เปƒเบซเป‰เบฅเบฐเบšเบธ
-Werror=format-security.

-Wformat-y2k
If -Wformat เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰, เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบฎเบนเบšเปเบšเบš "strftime" เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบžเบฝเบ‡เปเบ•เปˆ a
เบ›เบตเบชเบญเบ‡เบ•เบปเบงเป€เบฅเบ.

-Wnonnull
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบ•เบปเบงเบŠเบตเป‰ null เบชเปเบฒเบฅเบฑเบšเบญเบฒเบเบดเบงเป€เบกเบฑเบ™เบ—เบตเปˆเปเบฒเบเบงเปˆเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เปˆเบฒเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ null
เป‚เบ”เบเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ "nonnull".

-Wnonnull เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ - เบเบฒ เปเบฅเบฐ -Wformat. เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบดเบเบฒเบ™เบ”เป‰เบงเบ -Wno-nonnull
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

- เบงเบดเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹ (C, C++, Objective-C เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเปเบ› uninitialized เบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡. เบซเบกเบฒเบเป€เบซเบ”เบ™เบตเป‰
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบเบฑเบšโ€‹ - เบ›เบฐเบเบฒเบ” เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เบ•เบปเบงเบขเปˆเบฒเบ‡, GCC เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš "i" เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ - เบงเบดเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹ เป„เบ”เป‰โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹:

int f()
{
int i = i;
เบเบฑเบšเบ„เบทเบ™ i;
}

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ เปƒเบ™ C++.

-Wimplicit-int (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเบ›เบฐเป€เบžเบ”. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wimplicit-function-เบ›เบฐเบเบฒเบ” (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เปƒเบซเป‰เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเปƒเบŠเป‰เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ›เบฐเบเบฒเบ”. เปƒเบ™เป‚เบซเบกเบ” C99
(-std=c99 or -std=gnu99), เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบกเบฑเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™
เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เป‚เบ”เบ -pedantic เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

- Wimplicit (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบ„เบทโ€‹เบเบฑเบ™โ€‹เบเบฑเบš -Wimplicit-int เปเบฅเบฐ -Wimplicit-function-เบ›เบฐเบเบฒเบ”. เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰
by - เบเบฒ.

-Wignored-qualifiers (C เปเบฅเบฐ C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ›เบฐเป€เบžเบ”เบเบฑเบšเบ„เบทเบ™เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ›เบฐเป€เบžเบ”เป€เบŠเบฑเปˆเบ™ "const". เบชเปเบฒเบฅเบฑเบš ISO C
เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ›เบฐเป€เบžเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบšเปเปˆเบกเบตเบœเบปเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบ„เปˆเบฒเบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เป‚เบ”เบเบŸเบฑเบ‡เบŠเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™
เบกเบนเบ™เบ„เปˆเบฒ. เบชเปเบฒเบฅเบฑเบš C ++, เบเบฒเบ™เป€เบ•เบทเบญเบ™เปเบกเปˆเบ™เบ›เปˆเบญเบเบญเบญเบเบกเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ” scalar เบซเบผเบท "void". ISO C
เบซเป‰เบฒเบกเบ›เบฐเป€เบžเบ”เบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™ "void" เบ—เบตเปˆเบกเบตเบ„เบธเบ™เบงเบธเบ”เบ—เบดเปƒเบ™เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบเบฑเบšเบ„เบทเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง
เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™เบชเบฐเป€เบซเบกเบตเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰.

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ -Wextra.

- เบœเบนเป‰เบเบดเบ‡
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ เบ•เบปเป‰เบ™เบ•เป เบชเบปเบ‡เปƒเบช. เบ•เบปเป‰เบ™เบ•เป เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบเบฑเบšเบžเบฒเบเบ™เบญเบ
linkage, เบเบฑเบšเบ„เบทเบ™ int, เป€เบญเบปเบฒเบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบชเบนเบ™ arguments, เบชเบญเบ‡, เบซเบผเบทเบชเบฒเบก arguments เบ‚เบญเบ‡
เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก. เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ C++ เปเบฅเบฐเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ—เบฑเบ‡เบชเบญเบ‡
- เบเบฒ or -Wpedantic.

-Wmissing-braces
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบซเบผเบทเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบชเบฐเบซเบฐเบžเบฑเบ™เปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบšเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™. เปƒเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰
เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ•เบปเบงเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบš a เบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบšเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™, เปเบ•เปˆเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบš b เปเบกเปˆเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™
เบงเบปเบ‡เป€เบฅเบฑเบš. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ เปƒเบ™ C.

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

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wmissing-include-dirs (C, C++, Objective-C เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™ เบ–เป‰เบฒ เบซเบฒเบ เบงเปˆเบฒ เบœเบนเป‰ เปƒเบŠเป‰ เบชเบฐ เบซเบ™เบญเบ‡ เปƒเบซเป‰ เบ›เบฐ เบเบญเบš เบกเบต directory เบšเปเปˆ เบกเบต.

-Wparentheses
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบงเบปเบ‡เป€เบฅเบฑเบšเบ–เบทเบเบฅเบฐเป€เบงเบฑเป‰เบ™เปƒเบ™เบšเบฒเบ‡เบชเบฐเบžเบฒเบšเบเบฒเบ™, เป€เบŠเบฑเปˆเบ™: เป€เบกเบทเปˆเบญเบกเบต
เบเบฒเบ™เบกเบญเบšเปเบฒเบเปƒเบ™เบšเปเบฅเบดเบšเบปเบ”เบ—เบตเปˆเบ„เบฒเบ”เบเบฒเบ™เบ„เปˆเบฒเบ„เบงเบฒเบกเบˆเบดเบ‡, เบซเบผเบทเป€เบกเบทเปˆเบญเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ–เบทเบเบงเบฒเบ‡เป„เบงเป‰
เบ„เบปเบ™เบเปˆเบญเบ™เปœเป‰เบฒเบ™เบฑเป‰เบ™เบกเบฑเบเบชเบฑเบšเบชเบปเบ™.

เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเป€เบŠเบฑเปˆเบ™: x<=y<=z เบ›เบฐเบเบปเบ”; เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš (x<=y ? 1 : 0)
<= z, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบเบฒเบ™เบ•เบตเบ„เบงเบฒเบกเปเบฒเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบเบฒเบ™เปเบฒเบเป€เบฅเบเบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เบ—เบณเบกเบฐเบ”เบฒ.

เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบชเบฑเบšเบชเบปเบ™เบเบฑเบšเบ„เปเบฒเบงเปˆเบฒ "เบ–เป‰เบฒ" เป€เบ›เบฑเบ™
เบชเบฒเบ‚เบฒ "เบญเบทเปˆเบ™" เป€เบ›เบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง:

{
เบ–เป‰เบฒ (เบ)
เบ–เป‰เบฒ (เบ‚)
foo();
เบญเบทเปˆเบ™
เบšเบฒ ();
}

เปƒเบ™ C/C ++, เบ—เบธเบเป†เบชเบฒเบ‚เบฒ "เบญเบทเปˆเบ™" เป€เบ›เบฑเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก "เบ–เป‰เบฒ" เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เป€เบŠเบดเปˆเบ‡
เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เปเบกเปˆเบ™ "เบ–เป‰เบฒ (b)". เบ™เบตเป‰เบกเบฑเบเบˆเบฐเบšเปเปˆเปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ„เบฒเบ”เป„เบงเป‰, เป€เบ›เบฑเบ™
เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เป‚เบ”เบเบเบฒเบ™เบซเบเปเป‰เบซเบ™เป‰เบฒเป‚เบ›เบฅเปเบเบฅเบกเป€เบฅเบทเบญเบ. เป€เบกเบทเปˆเบญเบกเบต
เบ—เปˆเบฒเปเบฎเบ‡เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ™เบตเป‰, GCC เบญเบญเบเบ„เปเบฒเป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”.
เป€เบžเบทเปˆเบญเบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž, เปƒเบซเป‰เป€เบžเบตเปˆเบกเบงเบปเบ‡เป€เบฅเบฑเบšเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบ›เบฐเบกเบฒเบ™เบ‚เปเป‰เบ„เบงเบฒเบก "เบ–เป‰เบฒ" เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบชเบธเบ”
เบšเปเปˆเบกเบตเบ—เบฒเบ‡เบ—เบตเปˆ "เบญเบทเปˆเบ™" เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ‚เบญเบ‡ "เบ–เป‰เบฒ". เบฅเบฐเบซเบฑเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบšเบดเปˆเบ‡
เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

{
เบ–เป‰เบฒ (เบ)
{
เบ–เป‰เบฒ (เบ‚)
foo();
เบญเบทเปˆเบ™
เบšเบฒ ();
}
}

เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ GNU เบเบฑเบš "?:" เบ—เบตเปˆเบกเบต operand เบเบฒเบ‡เบ—เบตเปˆเบ–เบทเบเบฅเบฐเป€เบงเบฑเป‰เบ™.
เป€เบกเบทเปˆเบญเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เปƒเบ™ "?": operator เปเบกเปˆเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ boolean, เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบ–เบทเบเบเบปเบเป€เบฅเบตเบเปเบกเปˆเบ™
1. เป€เบฅเบทเป‰เบญเบเป†เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เปˆเบฒเบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆเบžเบฒเบเปƒเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเปเบ—เบ™.

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

- เบฅเปเบฒเบ”เบฑเบšเบˆเบธเบ”
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบญเบฒเบ”เบกเบต semantics เบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบฅเบฐเป€เบกเบตเบ”เบฅเปเบฒเบ”เบฑเบš
เบเบปเบ”เบฅเบฐเบšเบฝเบšเบˆเบธเบ”เปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C เปเบฅเบฐ C ++.

เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C เปเบฅเบฐ C ++ เบเปเบฒเบ™เบปเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบญเบญเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ C / C ++
เบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡ เบฅเปเบฒเบ”เบฑเบš เบˆเบธเบ”, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบšเบฒเบ‡เบชเปˆเบงเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡
เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ‚เบญเบ‡โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹: เบœเบนเป‰โ€‹เบ—เบตเปˆโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบธเบ”โ€‹เบฅเปเบฒโ€‹เบ”เบฑเบšโ€‹, เปเบฅเบฐโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบฑเป‰เบ™โ€‹
เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆ (เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆ
เบšเปเปˆเปเบกเปˆเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒ), เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบœเบปเบ™เบ‚เบญเบ‡ operand เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ a
"&&", "||", "? :" เบซเบผเบท "," (เป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”), เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ”เปœเบถเปˆเบ‡ (เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบ
เบเบฒเบ™โ€‹เบ›เบฐโ€‹เป€เบกเบตเบ™โ€‹เบœเบปเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ–เบฝเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เบญเบญเบโ€‹เบ—เบตเปˆโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เป€เบญเบตเป‰เบ™โ€‹เบงเปˆเบฒโ€‹)โ€‹, เปเบฅเบฐโ€‹เปƒเบ™โ€‹
เบšเบฒเบ‡เบšเปˆเบญเบ™. เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป‚เบ”เบเบเบปเบ”เบฅเบฐเบšเบฝเบšเบˆเบธเบ”เบฅเปเบฒเบ”เบฑเบš, เบ„เปเบฒเบชเบฑเปˆเบ‡
เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™ subexpressions เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰. เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เบญเบฐเบ—เบดเบšเบฒเบเบžเบฝเบ‡เปเบ•เปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบšเบฒเบ‡เบชเปˆเบงเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบชเบญเบ‡
เบซเบ™เป‰เบฒเบ—เบตเปˆเบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบžเบฒเบเปƒเบ™เบซเบ™เบถเปˆเบ‡เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบšเปเปˆเบกเบตเบˆเบธเบ”เบฅเปเบฒเบ”เบฑเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™, the
เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™
เบ„เบฐเบ™เบฐเบเปเบฒเบกเบฐเบเบฒเบ™เป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เบงเปˆเบฒเบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบšเปเปˆเบŠเป‰เปเบฒเบเบฑเบ™.

เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เบˆเบธเบ”เบฅเปเบฒเบ”เบฑเบšเบเบฑเบšเบ„เปˆเบฒเบ‚เบญเบ‡
เบงเบฑเบ”เบ–เบธเบกเบตเบœเบปเบ™. เบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบถเป‰เบ™เบเบฑเบšเบ™เบตเป‰ เบกเบตเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”;
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C เปเบฅเบฐ C ++ เบฅเบฐเบšเบธเบงเปˆเบฒ "เบฅเบฐเบซเบงเปˆเบฒเบ‡เบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเปเบฅเบฐเบ•เปเปˆเป„เบ›เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡
เบงเบฑเบ”โ€‹เบ–เบธโ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบกเบนเบ™โ€‹เบ„เปˆเบฒโ€‹เบ—เบตเปˆโ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เป„เบงเป‰โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เปƒเบ™โ€‹เบซเบผเบฒเบโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ”เบฝเบงโ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เป€เบกเบตเบ™โ€‹เบœเบปเบ™โ€‹เบ‚เบญเบ‡โ€‹
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบนเบ™เบ„เปˆเบฒเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบˆเบฐเบ–เบทเบเบญเปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐ
เบˆเบฐเบ–เบทเบเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰.". เบ–เป‰เบฒเป‚เบ„เบ‡เบเบฒเบ™เปƒเบ”เบ™เบถเปˆเบ‡เบฅเบฐเป€เบกเบตเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เปเบกเปˆเบ™ "a = a++;", "a[n] = b[n++]" เปเบฅเบฐ "a[i++] =
i;". เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบงเบดเบ™เบดเบ”เป„เบชเป‚เบ”เบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰, เปเบฅเบฐเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเปƒเบซเป‰
เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบ—เบฒเบ‡เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เปเบ•เปˆเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบตเบœเบปเบ™เบ”เบตเบขเบนเปˆ
เบเบงเบ”เบžเบปเบšเบšเบฑเบ™เบซเบฒเปเบšเบšเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™.

เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเบšเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบกเบตเบเบฒเบ™เป‚เบ•เป‰เบงเบฒเบ—เบตเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™
เบ„เบงเบฒเบกเบซเบกเบฒเบเบ‚เบญเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเบˆเบธเบ”เบฅเปเบฒเบ”เบฑเบšเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ subtle. เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบปเบ™โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบ‚เบญเบ‡โ€‹
เบšเบฑเบ™เบซเบฒ, เบฅเบงเบกเบ—เบฑเบ‡เบ„เปเบฒเบ™เบดเบเบฒเบกเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบต, เบญเบฒเบ”เบˆเบฐเบžเบปเบšเบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบญเปˆเบฒเบ™ GCC,
เบขเบนเปˆhttp://gcc.gnu.org/readings.html>.

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ เบชเปเบฒเบฅเบฑเบš C เปเบฅเบฐ C ++.

-Wno-return-local-addr
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเบฑเบšเบ„เบทเบ™เบ•เบปเบงเบŠเบตเป‰ (เบซเบผเบทเปƒเบ™ C ++, เป€เบญเบเบฐเบชเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡) เป„เบ›เบซเบฒเบ•เบปเบงเปเบ›เบ—เบตเปˆเป„เบ›
เบญเบญเบเบˆเบฒเบเบ‚เบญเบšเป€เบ‚เบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบŸเบฑเบ‡เบŠเบฑเบ™เบเบฑเบšเบ„เบทเบ™เบกเบฒ.

- เบ›เบฐโ€‹เป€เบžเบ” Wreturnโ€‹
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเบเบณเบ™เบปเบ”เบ”เป‰เบงเบเบ›เบฐเป€เบžเบ”เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบ›เบฑเบ™ "int". เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆ "เบเบฑเบšเบ„เบทเบ™" เปƒเบ”เป†เบ—เบตเปˆเบšเปเปˆเบกเบตเบ„เปˆเบฒเบเบฑเบšเบ„เบทเบ™เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเป€เบžเบ”เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™
เบšเปเปˆเปเบกเปˆเบ™ "void" (เบเบฒเบ™เบซเบผเบธเบ”เบฅเบปเบ‡เบญเบญเบเบˆเบฒเบเบเบฒเบ™เบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡เบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเบเบฑเบšเบ„เบทเบ™เบกเบฒ
เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เปˆเบฒ), เปเบฅเบฐเบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡ "เบเบฑเบšเบ„เบทเบ™" เบ”เป‰เบงเบเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ
เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเบฑเบšเบ„เบทเบ™เบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™ "void".

เบชเปเบฒเบฅเบฑเบš C ++, เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ›เบฐเป€เบžเบ”เบเบฑเบšเบ„เบทเบ™เบชเบฐเป€เบซเบกเบตเบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบ„เบงเบฒเบกเบงเบดเบ™เบดเบ”เป„เบช, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ -Wno-return-type เบ–เบทเบเบเปเบฒเบ™เบปเบ”. เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆ เบ•เบปเป‰เบ™เบ•เป เปเบฅเบฐ เปœเป‰เบฒ เบ—เบตเปˆ
เบเปเบฒเบ™เบปเบ”เบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

- เบชเบฐเบซเบงเบดเบ”
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™ "เบชเบฐเบซเบผเบฑเบš" เบกเบตเบ”เบฑเบ”เบŠเบฐเบ™เบตเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบ™เบฑเบš เปเบฅเบฐเบ‚เบฒเบ” "เบเปเบฅเบฐเบ™เบต"
เบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ™เบฑเป‰เบ™. (เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡ "เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™"
เบ›เป‰เบฒเบเบŠเบทเปˆเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ™เบตเป‰.) "เบเปเบฅเบฐเบ™เบต" เบ›เป‰เบฒเบเบŠเบทเปˆเบขเบนเปˆเบ™เบญเบเบ‚เบญเบšเป€เบ‚เบ”เบเบฒเบ™เบ™เบฑเบš
เบเบฐเบ•เบธเป‰เบ™เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ (เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบ›เป‰เบฒเบเบŠเบทเปˆ "เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™"). เบ™เบตเป‰
เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wswitch-default
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ‚เปเป‰เบ„เบงเบฒเบก "เบชเบฐเบซเบผเบฑเบš" เบšเปเปˆเบกเบตเบเปเบฅเบฐเบ™เบต "เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™".

-Wwwitch-enum
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™ "เบชเบฐเบซเบผเบฑเบš" เบกเบตเบ”เบฑเบ”เบŠเบฐเบ™เบตเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบ™เบฑเบš เปเบฅเบฐเบ‚เบฒเบ” "เบเปเบฅเบฐเบ™เบต"
เบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ™เบฑเป‰เบ™. เบ›เป‰เบฒเบ "เบเปเบฅเบฐเบ™เบต" เบขเบนเปˆเบ™เบญเบ
เบŠเปˆเบงเบ‡เบเบฒเบ™เบ™เบฑเบšเป€เบฅเบเบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเปƒเบŠเป‰. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบžเบฝเบ‡เปเบ•เปˆ
เบฅเบฐเบซเบงเปˆเบฒเบ‡ - เบชเบฐเบซเบงเบดเบ” เปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปƒเบซเป‰เบ„เปเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฅเบฐเป€เบงเบฑเป‰เบ™
เบฅเบฐเบซเบฑเบ” enumeration เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฐเบกเบตเบ›เป‰เบฒเบ "เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™".

-Wsync-nand (C เปเบฅเบฐ C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เบ•เบปเบง "__sync_fetch_and_nand" เปเบฅเบฐ "__sync_nand_and_fetch"
เปƒเบŠเป‰. เปœเป‰เบฒเบ—เบตเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบ›เปˆเบฝเบ™เบ„เบงเบฒเบกเปเบฒเบเปƒเบ™ GCC 4.4.

-Wtrigraphs
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบžเบปเบš trigraphs เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบ›เปˆเบฝเบ™เบ„เบงเบฒเบกเบซเบกเบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™
(trigraphs เบžเบฒเบเปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš). เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wunused-but-set-parameter
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบžเบฒเบฃเบฒเบกเบดเป€เบ•เบตเบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเบกเบญเบšเปเบฒเบเปƒเบซเป‰, เปเบ•เปˆเบšเปเปˆเบ–เบทเบเปƒเบŠเป‰ (เบ™เบญเบเป€เปœเบทเบญเป„เบ›เบˆเบฒเบ
เบ–เบฐโ€‹เปเบซเบผเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™).

เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰, เปƒเบซเป‰เปƒเบŠเป‰ เบšเปเปˆเปƒเบŠเป‰ attribute

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ เบžเป‰เบญเบกเบ”เป‰เบงเบ -Wextra.

-Wunused-but-set-variable
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ–เบทเบเบกเบญเบšเปเบฒเบเปƒเบซเป‰, เปเบ•เปˆเบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰ (เบ™เบญเบเบˆเบฒเบเบกเบฑเบ™
เบ›เบฐเบเบฒเบ”). เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰, เปƒเบซเป‰เปƒเบŠเป‰ เบšเปเปˆเปƒเบŠเป‰ attribute

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wunused-function
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฐเบ–เบดเบ”เบ–เบทเบเบ›เบฐเบเบฒเบ”เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เบเบณเบ™เบปเบ” เบซเบผเบทเป€เบ›เบฑเบ™เบชเบฐเบ–เบดเบ”เบ—เบตเปˆเบšเปเปˆเบขเบนเปˆเปƒเบ™เปเบ–เบง
เบŸเบฑเบ‡เบŠเบฑเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wunused-label
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ›เป‰เบฒเบเบ–เบทเบเบ›เบฐเบเบฒเบ”เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰, เปƒเบซเป‰เปƒเบŠเป‰ เบšเปเปˆเปƒเบŠเป‰ attribute

-Wunused-local-typedefs (C, Objective-C, C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ typedef เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบขเบนเปˆเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบšเปเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wunused-เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบžเบฒเบฃเบฒเบกเบดเป€เบ•เบตเบŸเบฑเบ‡เบŠเบฑเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบ™เบญเบเบˆเบฒเบเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ‚เบญเบ‡เบกเบฑเบ™.

เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰, เปƒเบซเป‰เปƒเบŠเป‰ เบšเปเปˆเปƒเบŠเป‰ attribute

-Wno-unused-เบœเบปเบ™
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบœเบนเป‰เป‚เบ—เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบ–เบทเบเบซเบกเบฒเบเบ”เป‰เบงเบเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "warn_unused_result" เป€เบฎเบฑเบ”.
เบšเปเปˆเปƒเบŠเป‰เบกเบนเบ™เบ„เปˆเบฒเบเบฑเบšเบ„เบทเบ™เบ‚เบญเบ‡เบกเบฑเบ™. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -Wunused เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹.

-Wunused-variable
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ เบซเบผเบทเบ•เบปเบงเปเบ›เบชเบฐเบ–เบดเบ”เบ—เบตเปˆเบšเปเปˆเบ„เบปเบ‡เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบ–เบทเบเปƒเบŠเป‰เบ™เบญเบเป€เปœเบทเบญเป„เบ›เบˆเบฒเบ
เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰, เปƒเบซเป‰เปƒเบŠเป‰ เบšเปเปˆเปƒเบŠเป‰ attribute

-Wunused-value
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ„เบณเบ–เบฐเปเบซเบผเบ‡เบ„เบณเบ™เบงเบ™เบœเบปเบ™เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡. เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™
เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ™เบตเป‰เป‚เบเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เป„เบ› void. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ
เบซเบผเบทเบ”เป‰เบฒเบ™เบŠเป‰เบฒเบเบกเบทเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบœเบปเบ™เบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡. เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบŠเบฑเปˆเบ™ x[i,j] เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ x[(void)i,j] เบšเปเปˆ.

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

- เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹
เบ—เบฑเบ‡ เปเบปเบ” เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡ - เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบฅเบงเบกโ€‹.

เป€เบžเบทเปˆเบญโ€‹เปƒเบซเป‰โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ„เปเบฒโ€‹เป€เบ•เบทเบญเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบ•เบปเบงโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹, เบ—เปˆเบฒเบ™โ€‹เบˆเบฐโ€‹เบ•เป‰เบญเบ‡โ€‹เบฅเบฐโ€‹เบšเบธโ€‹
-Wextra - เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ (เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ - เบเบฒ implies - เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹), เบซเบผเบทเบฅเบฐเบšเบธเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ
-Wunused-เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต.

- เบ›เบฐเบเบฒเบ”
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ•เบปเบงเปเบ›เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ–เบทเบเปƒเบŠเป‰เป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเปˆเบญเบ™ เบซเบผเบทเบ–เป‰เบฒเบ•เบปเบงเปเบ›
เบญเบฒเบ”เบˆเบฐเบ–เบทเบ clobbed เป‚เบ”เบเบเบฒเบ™เป‚เบ— "setjmp". เปƒเบ™ C ++, เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบชเบฐเบ–เบดเบ” เบซเบผเบท เบšเปเปˆเปเบกเปˆเบ™.
เป„เบŸเบŸเป‰เบฒเบชเบฐเบ–เบดเบ” const เบชเบฐเบกเบฒเบŠเบดเบเบ›เบฐเบเบปเบ”เบขเบนเปˆเปƒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบชเป‰เบฒเบ‡.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปƒเบŠเป‰เบ„เปˆเบฒ uninitialized เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เปƒเบ™
initializer เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ - เบงเบดเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป€เบญเบ‡เบซเบผเบท clobbered เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™,
union เบซเบผเบท array variables เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ•เบปเบงเปเบ›เบ—เบตเปˆ uninitialized เบซเบผเบท clobbered
เป‚เบ”เบเบฅเบงเบก. เบžเบงเบเบกเบฑเบ™เบšเปเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบ›เบซเบผเบทเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบ›เบฐเบเบฒเบ”เบงเปˆเบฒ "เบเบฒเบ™เป€เบซเบ™เบฑเบ‡เบ•เบตเบ‡". เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ
เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เบ•เบปเบงเปเบ›เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบซเบผเบทเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบกเบต
เบ„เปเบฒเป€เบ•เบทเบญเบ™เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เปเบฅเบฐเบชเบฐเบšเบฑเบšเบ‚เบญเบ‡ GCC เบ—เบตเปˆเปƒเบŠเป‰.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบกเบตเบ„เปเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเปเบ›เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ„เบดเบ”เป„เบฅเปˆ a
เบ„เปˆเบฒเบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบšเปเปˆเป€เบ„เบตเบเบ–เบทเบเปƒเบŠเป‰, เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบฅเบถเบšเป‚เบ”เบเบเบฒเบ™เป„เบซเบผเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™
เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบžเบดเบกเบ„เปเบฒเป€เบ•เบทเบญเบ™.

-Wmaybe-unitialized
เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบ›เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบ–เป‰เบฒเบกเบตเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบˆเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เบซเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰
เบ•เบปเบงโ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹, เปเบ•เปˆโ€‹เบงเปˆเบฒโ€‹เบกเบตโ€‹เบšเบฒเบ‡โ€‹เป€เบชเบฑเป‰เบ™โ€‹เบ—เบฒเบ‡โ€‹เบญเบทเปˆเบ™เป†โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹
เบ•เบปเบงเปเบ›เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, compiler เบ›เปˆเบญเบเบ„เปเบฒเป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบžเบดเบชเบนเบ”เป„เบ”เป‰
เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ GCC เบšเปเปˆเบชเบฐเบซเบฅเบฒเบ”เบžเปเบ—เบตเปˆเบˆเบฐเป€เบซเบฑเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบฅเบฐเบซเบฑเบ”เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ•เป‰เบญเบ‡
เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ›เบฐเบเบปเบ”เบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป„เบ”เป‰:

{
intx;
เบชเบฐเบซเบผเบฑเบš (y)
{
เบเปเบฅเบฐเบ™เบต 1: x = 1;
เบ—เปเบฒเบฅเบฒเบ;
เบเปเบฅเบฐเบ™เบต 2: x = 4;
เบ—เปเบฒเบฅเบฒเบ;
เบเปเบฅเบฐเบ™เบต 3: x = 5;
}
foo(x);
}

เบ–เป‰เบฒเบ„เปˆเบฒเบ‚เบญเบ‡ "y" เปเบกเปˆเบ™เบชเบฐเป€เบซเบกเบต 1, 2 เบซเบผเบท 3, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ "x" เบˆเบฐเบ–เบทเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเบฐเป€เบซเบกเบต, เปเบ•เปˆ GCC.
เบšเปเปˆเบฎเบนเป‰เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰. เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบซเป‰เบเปเบฅเบฐเบ™เบตเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบกเบต
เบขเบทเบ™เบขเบฑเบ™(0) เบซเบผเบทเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™.

เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เบเบฑเบ‡โ€‹เป€เบ•เบทเบญเบ™โ€‹เบงเปˆเบฒโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบ•เบปเบงโ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบฅเบฐโ€‹เป€เบซเบตเบโ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เป‚เบ”เบ a
เป‚เบ—เบซเบฒ "longjmp". เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.

compiler เป€เบซเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เป‚เบ—เบซเบฒ "setjmp". เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบฎเบนเป‰เบงเปˆเบฒ "longjmp" เบˆเบฐเบขเบนเปˆเปƒเบช
เป€เบญเบตเป‰เบ™เบงเปˆเบฒ; เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ•เบปเบงเบˆเบฑเบšเบชเบฑเบ™เบเบฒเบ™เบชเบฒเบกเบฒเบ”เป‚เบ—เบซเบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบˆเบธเบ”เปƒเบ”เบซเบ™เบถเปˆเบ‡เปƒเบ™เบฅเบฐเบซเบฑเบ”. เป€เบ›เบฑเบ™
เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒเป€เบžเบฒเบฐเบงเปˆเบฒ "longjmp"
เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบญเบตเป‰เบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒ.

เบšเบฒเบ‡เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบตเปˆเบ‚เบตเป‰เบฎเป‰เบฒเบเบชเบฒเบกเบฒเบ”เบซเบผเบตเบเบฅเปˆเบฝเบ‡เป„เบ”เป‰เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ›เบฐเบเบฒเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเปƒเบŠเป‰เบ™เบฑเป‰เบ™
เบšเปเปˆเป€เบ„เบตเบเบเบฑเบšเบ„เบทเบ™เบกเบฒเป€เบ›เบฑเบ™ "noreturn".

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ or -Wextra.

-Wunknown-pragmas
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบžเบปเบšเบ„เบณเบชเบฑเปˆเบ‡ "#pragma" เบ—เบตเปˆ GCC เบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆ. เบ–เป‰เบฒเบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเปเบกเปˆเบ™เบเบฑเบ‡เบญเบญเบเบชเปเบฒเบฅเบฑเบš pragmas เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบเปƒเบ™เบฅเบฐเบšเบปเบš
เป„เบŸเบฅเปŒเบซเบปเบง. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบตเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ„เปเบฒเป€เบ•เบทเบญเบ™เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเป‚เบ”เบ - เบเบฒ
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡.

-Wno-pragmas
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰ pragmas เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เป€เบŠเบฑเปˆเบ™: เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, syntax เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบซเบผเบท
เบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ pragmas. เป€เบšเบดเปˆเบ‡เบ™เบณ -Wunknown-pragmas.

- เป€เบ›เบฑเบ™เบเบฒเบ™เบฅเป‰เบฒเบชเบธเบ”
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญ -fstrict-aliasing เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบกเบฑเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”เบงเปˆเบฒ
เบญเบฒเบ”เบˆเบฐเบ—เปเบฒเบฅเบฒเบเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ™เบฒเบกเปเบเบ‡เบ—เบตเปˆเป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”เบ—เบตเปˆ compiler เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.
เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบˆเบฑเบšโ€‹เบ—เบธเบโ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹, เปเบ•เปˆโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบˆเบฑเบšโ€‹เบซเบผเบฒเบโ€‹เบ—เบปเปˆเบงโ€‹เป„เบ›โ€‹
เบ‚เบธเบก. เบกเบฑเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ - เบเบฒ. เบกเบฑเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš -Wstrict-aliasing=3

-Wstrict-aliasing=n
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญ -fstrict-aliasing เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบกเบฑเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”เบงเปˆเบฒ
เบญเบฒเบ”เบˆเบฐเบ—เปเบฒเบฅเบฒเบเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ™เบฒเบกเปเบเบ‡เบ—เบตเปˆเป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”เบ—เบตเปˆ compiler เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.
เบฅเบฐเบ”เบฑเบšเบ—เบตเปˆเบชเบนเบ‡เบ‚เบถเป‰เบ™เบเบปเบ‡เบเบฑเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ—เบตเปˆเบชเบนเบ‡เบ‚เบถเป‰เบ™ (เบœเบปเบ™เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบ™เป‰เบญเบเบฅเบปเบ‡). เบฅเบฐเบ”เบฑเบšเบ—เบตเปˆเบชเบนเบ‡เบ‚เบถเป‰เบ™
เบเบฑเบ‡เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบซเบผเบฒเบ, เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™ -O เบงเบฝเบเบ‡เบฒเบ™. - เป€เบ›เบฑเบ™เบเบฒเบ™เบฅเป‰เบฒเบชเบธเบ” is
เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบเบฑเบš -Wstrict-aliasing=3.

เบฅเบฐเบ”เบฑเบš 1: เบฎเบธเบเบฎเบฒเบ™เบ—เบตเปˆเบชเบธเบ”, เป„เบง, เบ–เบทเบเบ•เป‰เบญเบ‡เปœเป‰เบญเบเบ—เบตเปˆเบชเบธเบ”. เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบกเบทเปˆเบญเบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบ‚เบถเป‰เบ™
เบšเปเปˆเป„เบ”เป‰เป€เบ•เบทเบญเบ™เปเบ•เปˆ -fstrict-aliasing เบเบฑเบ‡เบ—เปเบฒเบฅเบฒเบเบฅเบฐเบซเบฑเบ”, เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบกเบตเบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบซเบผเบฒเบ
เบฅเบปเบš. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เบกเบตเบ‚เปเป‰เบ”เบตเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ. เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เบ•เบปเบงเบŠเบตเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”
เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเป€เบ„เบตเบเบญเป‰เบฒเบ‡เบญเบตเบ‡. เปเบฅเปˆเบ™เบขเบนเปˆเบ—เบฒเบ‡เบซเบ™เป‰เบฒ
เบชเบดเป‰เบ™เบชเบธเบ”เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

เบฅเบฐเบ”เบฑเบš 2: เบฎเบธเบเบฎเบฒเบ™, เป„เบง, เบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เป€เบเบตเบ™เป„เบ›. เบญเบฒเบ”เบˆเบฐเบเบฑเบ‡เบกเบตเบœเบปเบ™เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบฒเบ (เบšเปเปˆ
เป€เบ–เบดเบ‡เบงเปˆเบฒเบฅเบฐเบ”เบฑเบš 1), เปเบฅเบฐเบ‚เปเป‰เป€เบชเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปœเป‰เบญเบเปœเบถเปˆเบ‡ (เปเบ•เปˆเบญเบฒเบ”เบˆเบฐเบซเบผเบฒเบเบเบงเปˆเบฒเบฅเบฐเบ”เบฑเบš 1).
เบšเปเปˆเบ„เบทเบเบฑเบšเบฅเบฐเบ”เบฑเบš 1, เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบ—เบตเปˆเบขเบนเปˆเบ–เบทเบเป€เบญเบปเบฒ. เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเบ„เบปเบšเบ–เป‰เบงเบ™.
เปเบฅเปˆเบ™เบขเบนเปˆเบ”เป‰เบฒเบ™เปœเป‰เบฒเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

เบฅเบฐเบ”เบฑเบš 3 (เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบš - เป€เบ›เบฑเบ™เบเบฒเบ™เบฅเป‰เบฒเบชเบธเบ”): เบ„เบงเบ™เบกเบตเบ‚เปเป‰เบ”เบตเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบฒเบ เปเบฅเบฐเปœเป‰เบญเบเบซเบผเบฒเบ
เบ—เบฒเบ‡เบฅเบปเบšเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบŠเป‰เบฒเบเบงเปˆเบฒเบฅเบฐเบ”เบฑเบš 1 เบซเบผเบท 2 เป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบกเบทเปˆเบญเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰.
เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฎเบนเบšเปเบšเบšเบเบฒเบ™ pun + dereference เบ—เบปเปˆเบงเป„เบ›เปƒเบ™เบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒ:
"*(int*)&some_float". เบ–เป‰เบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰, เบกเบฑเบ™เบเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบˆเบธเบ”เบซเบฅเบฑเบ‡, เบšเปˆเบญเบ™เบ—เบตเปˆ
เบกเบฑเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบซเบผเบฒเบเป‚เบ”เบเปƒเบŠเป‰เบˆเบธเบ”เบ—เบตเปˆเบฅเบฐเบญเบฝเบ”เบญเปˆเบญเบ™เบ•เปเปˆเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเป„เบ›เบซเบฒเบ‚เปเป‰เบกเบนเบ™.
เป€เบ•เบทเบญเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญเบ•เบปเบงเบŠเบตเป‰เบ—เบตเปˆเปเบ›เบ‡เปเบฅเป‰เบงเบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”. เบšเปเปˆเป„เบ”เป‰เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบšเปเปˆเบ„เบปเบšเบ–เป‰เบงเบ™
เบ›เบฐเป€เบžเบ”

-Wstrict-เบฅเบปเป‰เบ™
-Wstrict-overflow=n
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญ -fstrict-เบฅเบปเป‰เบ™ เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบกเบฑเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเปเบฅเบฐเบ™เบต
เบšเปˆเบญเบ™เบ—เบตเปˆ compiler optimize เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เบ—เบตเปˆเบฅเบปเบ‡เบ™เบฒเบก overflow เบšเปเปˆ
เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ—เบธเบเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบฅเบฐเบซเบฑเบ”เบญเบฒเบ”เบˆเบฐเบฅเบปเป‰เบ™: เบกเบฑเบ™
เบžเบฝเบ‡เปเบ•เปˆเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆ compiler เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบšเบฒเบ‡เบขเปˆเบฒเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ™เบตเป‰
เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบเบฒเบ™เบฅเบปเบ‡เบ™เบฒเบก overflow เบšเปเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปเบกเปˆเบ™เบ›เบญเบ”เป„เบžเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบ–เป‰เบฒ
เบ„เบธเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปเบกเปˆเบ™เปเบšเบšเบ—เบตเปˆ overflow เบšเปเปˆเป€เบ„เบตเบเป€เบฎเบฑเบ”, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡,
เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปƒเบซเป‰เบœเบปเบ™เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ: เบเบฒเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”
เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบšเปเปˆเปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒ. เป€เบžเบทเปˆเบญเบŠเปˆเบงเบเบชเบธเบกเปƒเบชเปˆเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™, เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡
เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹. เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เบญเบญเบโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบเบตเบ™โ€‹เบฅเบปเบ‡โ€‹เบ™เบฒเบกโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹
เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบ„เบฒเบ”โ€‹เบ„เบฐโ€‹เป€เบ™โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบฒเบโ€‹เบเบฒเบ™โ€‹เบŠโ€‹เป‰โ€‹เปโ€‹เบฒ loop เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹, เป‚เบ”เบโ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เปเบกเปˆเบ™โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹
เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™ loop เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”.

-Wstrict-overflow=1
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบ—เบฑเบ‡เบ„เปเบฒเบ–เบฒเบกเปเบฅเบฐเบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบซเบผเบตเบเป€เบงเบฑเป‰เบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฑเบš
-fstrict-เบฅเบปเป‰เบ™, compiler simplifies "x + 1 > x" เป€เบ›เบฑเบ™ 1. เบฅเบฐเบ”เบฑเบšเบ™เบตเป‰
-Wstrict-เบฅเบปเป‰เบ™ เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ; เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบšเปเปˆเปเบกเปˆเบ™, เปเบฅเบฐเบˆเบฐเบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™
เบฎเบฝเบเบฎเป‰เบญเบ‡เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡.

-Wstrict-overflow=2
เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเปเบกเปˆเบ™เบ‡เปˆเบฒเบเป€เบ›เบฑเบ™เบ„เบปเบ‡เบ—เบตเปˆ. เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡: "abs (x) >= 0". เบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบ‡เปˆเบฒเบเบ”เบฒเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ -fstrict-เบฅเบปเป‰เบ™ เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™
เบœเบปเบ™เบเบฐเบ—เบปเบš, เป€เบžเบฒเบฐเบงเปˆเบฒ "abs (INT_MIN)" overflows เบเบฑเบš "INT_MIN", เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบชเบนเบ™.
-Wstrict-เบฅเบปเป‰เบ™ (เบšเปเปˆเบกเบตเบฅเบฐเบ”เบฑเบš) เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบš -Wstrict-overflow=2.

-Wstrict-overflow=3
เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เบ•เบปเบงเบขเปˆเบฒเบ‡: "x + 1
> 1" เบ–เบทเบเปเบ›เป€เบ›เบฑเบ™ "x > 0".

-Wstrict-overflow=4
เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเบงเบกเป€เบญเบปเบฒเป‚เบ”เบเบเปเบฅเบฐเบ™เบตเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡: "(x * 10) / 5" เปเบกเปˆเบ™ simplified เบเบฑเบš "x * 2".

-Wstrict-overflow=5
เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆ compiler เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ„เบปเบ‡เบ—เบตเปˆ
เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš. เบ•เบปเบงเบขเปˆเบฒเบ‡: "x + 2 > y" เบ–เบทเบเปเบ›เป€เบ›เบฑเบ™ "x + 1 >= y".
เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฒเบเบ‡เบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเป€เบ•เบทเบญเบ™เป„เบžเบชเบนเบ‡เบชเบธเบ”เป€เบžเบฒเบฐเบงเปˆเบฒเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบ™เบตเป‰
เปƒเบŠเป‰เบเบฑเบšเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบซเบผเบฒเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ
เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

-Wsuggest-attribute=[เบšเปเบฅเบดเบชเบธเบ”|const|noreturn|เบฎเบนเบšเปเบšเบš]
เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”. เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹
เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เปเบกเปˆเบ™โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เบ‚เป‰เบฒเบ‡โ€‹เบฅเบธเปˆเบกโ€‹เบ™เบตเป‰โ€‹.

-Wsuggest-attribute=เบšเปเบฅเบดเบชเบธเบ”
-Wsuggest-attribute=const
-Wsuggest-attribute=noreturn
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบšเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "เบšเปเบฅเบดเบชเบธเบ”", "const" เบซเบผเบท
"noreturn". compiler เบžเบฝเบ‡เปเบ•เปˆเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เป†
เบซเบ™เปˆเบงเบเบซเบผเบท (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ "เบšเปเบฅเบดเบชเบธเบ”" เปเบฅเบฐ "const") เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบžเบดเบชเบนเบ”เป„เบ”เป‰เบงเปˆเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ
เบเบฑเบšเบ„เบทเบ™เบกเบฒเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด. เบŸเบฑเบ‡เบŠเบฑเบ™เบˆเบฐเบเบฑเบšเบ„เบทเบ™เบกเบฒเบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบดเบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเบกเบตเบญเบฑเบ™เป€เบ›เบฑเบ™เบ™เบดเบ”
loop เบซเบผเบทเบเบฑเบšเบ„เบทเบ™เบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเป‚เบ”เบเบเบฒเบ™เบ–เบดเป‰เบก, เป€เบญเบตเป‰เบ™เบงเปˆเบฒ "abort()" เบซเบผเบทเปƒเบชเปˆเบเบฑเบšเบ”เบฑเบ. เบ™เบตเป‰
เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบ -fipa-pure-const, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐ
เบชเบนเบ‡เบเบงเปˆเบฒ. เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบนเบ‡เบ‚เบถเป‰เบ™เบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ.

-Wsuggest-attribute=เบฎเบนเบšเปเบšเบš
-Wmissing-format-attribute
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเบŠเบตเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบšเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "เบฎเบนเบšเปเบšเบš".
เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบšเปเปˆเปเบกเปˆเบ™เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡. GCC เป€เบ”เบปเบฒเบงเปˆเบฒ
เบ•เบปเบงเบŠเบตเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "เบฎเบนเบšเปเบšเบš" เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบ,
เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบซเบผเบทเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™เบเบฑเบšเบ„เบทเบ™เบ„เบงเบ™เบกเบตเบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡
"format" attribute เปƒเบ™เบ›เบฐเป€เบžเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. เป€เบŠเบฑเปˆเบ™: เบŠเป‰เบฒเบเบกเบทเบ‚เบญเบ‡
เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบซเบผเบทเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ•เบปเบงเปเบ›, เบซเบผเบทเบœเบปเบ™เบ•เบญเบšเปเบ—เบ™
เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเบฑเบ™เบˆเบธเบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเบ„เบงเบ™เบกเบตเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "เบฎเบนเบšเปเบšเบš".
เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™.

GCC เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบ™เบดเบเบฒเบกเบซเบ™เป‰เบฒเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบš "เบฎเบนเบšเปเบšเบš"
เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ. เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. GCC เป€เบ”เบปเบฒเบงเปˆเบฒ "เบฎเบนเบšเปเบšเบš"
เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เป€เบญเบตเป‰เบ™โ€‹เบงเปˆเบฒโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เป€เบŠเบฑเปˆเบ™โ€‹
"vprintf" เบซเบผเบท "vscanf", เปเบ•เปˆเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบชเบฐเป€เบซเบกเบตเป„เบ›, เปเบฅเบฐเบšเบฒเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ
เบชเปเบฒเบฅเบฑเบšเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "เบฎเบนเบšเปเบšเบš" เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเบเบงเบ”เบžเบปเบš.

- Warray-bounds
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญ -ftree-vrp เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง (เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบš -O2 เปเบฅเบฐเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡). เบกเบฑเบ™
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš subscripts เบเบฑเบš arrays เบชเบฐเป€เบซเบกเบตเบขเบนเปˆเบ™เบญเบเบ‚เบญเบšเป€เบ‚เบ”. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wno-div-by-zero
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป€เบงเบฅเบฒเบเบฒเบ™เบซเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเป‚เบ”เบเบชเบนเบ™. เบเบฒเบ™เปเบšเปˆเบ‡เบˆเบธเบ”เบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ™เป„เบ”เป‰เป‚เบ”เบ
เบชเบนเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš, เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบš infinities เปเบฅเบฐ
NaNs.

-Wsystem-headers
เบžเบดเบกเบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš. เบ„เบณเป€เบ•เบทเบญเบ™เบˆเบฒเบ
เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบกเปˆเบ™เบ–เบทเบเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบด, เป‚เบ”เบเบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบกเบฑเบเบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”
เบŠเบตเป‰เบšเบญเบเป€เบ–เบดเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡ เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบปเบ™เบญเบญเบเบ‚เบญเบ‡ compiler เบเบฒเบเบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™เป„เบ”เป‰. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰
เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบšเบญเบ GCC เปƒเบซเป‰เบญเบญเบเบ„เปเบฒเป€เบ•เบทเบญเบ™เบˆเบฒเบเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ„เบทเบเบฑเบšเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒ
เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”เบœเบนเป‰เปƒเบŠเป‰. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ - เบเบฒ เบชเบปเบกเบ—เบปเบšเบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰
เบšเปเปˆ เบšเปเปˆ เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš pragmas เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบเปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš --- เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบฑเป‰เบ™, -Wunknown-pragmas
เบเบฑเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เปƒเบŠเป‰.

-Wtrampoline
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš trampolines เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบŠเป‰เบญเบ™เบเบฑเบ™.

trampoline เปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบซเบผเบทเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™
เป€เบงเบฅเบฒเบขเบนเปˆเปƒเบ™ stack เป€เบกเบทเปˆเบญเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบŠเป‰เบญเบ™เบเบฑเบ™เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เปเบฅเบฐ
เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ nested เป‚เบ”เบเบ—เบฒเบ‡เบญเป‰เบญเบก. เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เบกเบฑเบ™
เปเบกเปˆเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ‚เปเป‰เบกเบนเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบ›เบดเปˆเบ™เบ›เบปเบงเบžเบดเป€เบชเบ”. เปเบ•เปˆ,
เบชเปเบฒเบฅเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบกเบฑเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบต stack
เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบ„เบ‡เบเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

-Wfloat-เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ„เปˆเบฒเบˆเบธเบ”เบฅเบญเบเบ–เบทเบเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ„เบงเบฒเบกเบชเบฐเป€เปเบตเบžเบฒเบš.

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบฅเบฑเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบกเบฑเบ™เบเปเปˆเบชเบฐเบ”เบงเบ (เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก) เป€เบžเบทเปˆเบญ
เบžเบดโ€‹เบˆเบฒโ€‹เบฅเบฐโ€‹เบ™เบฒโ€‹เบ„เปˆเบฒโ€‹เบˆเบธเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเปˆเบญเบ™โ€‹เป„เบ”เป‰โ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบกเบฒเบ™โ€‹เบเบฑเบšโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เปเบ—เป‰โ€‹เบˆเบดเบ‡โ€‹เบ—เบตเปˆโ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™ infinitely.
เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบ™เบตเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบดเบ”เป„เบฅเปˆ (เป‚เบ”เบเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”, เบซเบผเบทเบšเบฒเบ‡
เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบญเบทเปˆเบ™เป†โ€‹) เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบซเบผเบทโ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ—เบตเปˆโ€‹เบ„เปเบฒโ€‹เบ™เบงเบ™โ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹, เปเบฅเบฐโ€‹
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบกเบฑเบ™โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ›เบฝเบšโ€‹เบ—เบฝเบš (เปเบฅเบฐโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹, เปเบ•เปˆโ€‹เบงเปˆเบฒโ€‹เป€เบ›เบฑเบ™โ€‹
เบšเบฑเบ™โ€‹เบซเบฒโ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹)โ€‹. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ—เบปเบ”เบชเบญเบšเบ„เบงเบฒเบกเบชเบฐเป€เบซเบกเบตเบžเบฒเบš, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบเบงเบ”เป€เบšเบดเปˆเบ‡
เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ—เบฑเบ‡เบชเบญเบ‡เบ„เปˆเบฒเบกเบตเป„เบฅเบเบฐเบ—เบตเปˆเบ—เบฑเบšเบŠเป‰เบญเบ™เบเบฑเบ™; เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เบเบฑเบš
เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ„เบงเบฒเบกเบชเบฐเป€เบซเบกเบตเบžเบฒเบšเปเบกเปˆเบ™เบญเบฒเบ”เบˆเบฐเบœเบดเบ”เบžเบฒเบ”.

- เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบเปเปˆเบชเป‰เบฒเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก เปเบฅเบฐ ISO C. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ ISO C เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒ C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก, เปเบฅเบฐ/เบซเบผเบทเบกเบตเบšเบฑเบ™เบซเบฒ
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบ„เบงเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™.

ยท เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบกเบฐเบซเบฒเบžเบฒเบเบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบ•เบปเบงเปœเบฑเบ‡เบชเบทเบชเบฐเบ•เบฃเบดเบ‡เบขเบนเปˆเปƒเบ™เบ•เบปเบงเปœเบฑเบ‡เบชเบทเบกเบฐเบซเบฒเบžเบฒเบ. เปƒเบ™
เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบกเบฐเบซเบฒเบžเบฒเบ C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบžเบฒเบเปƒเบ™เบ•เบปเบงเปœเบฑเบ‡เบชเบทเบชเบฐเบ•เบฃเบดเบ‡, เปเบ•เปˆเปƒเบ™ ISO C
เบกเบฑเบ™เบšเปเปˆ.

ยท เปƒเบ™ C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก, เบšเบฒเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ preprocessor เบšเปเปˆเบกเบต. เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก
preprocessors เบžเบฝเบ‡เปเบ•เปˆเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบชเบฑเป‰เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ # เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบ–เบฑเบ™
1 เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™ - เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก เป€เบ•เบทเบญเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบ”เบฑเป‰เบ‡โ€‹เป€เบ”เบตเบก C
เป€เบ‚เบปเป‰เบฒเปƒเบˆเปเบ•เปˆเบšเปเปˆเบชเบปเบ™เปƒเบˆเป€เบžเบฒเบฐเบงเปˆเบฒ # เบšเปเปˆเบ›เบฒเบเบปเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เปเบฒเบญเบดเบ”
เป€เบชเบฑเป‰เบ™. เบกเบฑเบ™เบเบฑเบ‡เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบŠเบทเปˆเบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบฑเปˆเบ™ #pragma เบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเป‚เบ”เบ
C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเป‚เบ”เบเบเบฒเบ™เบซเบเปเป‰เบซเบ™เป‰เบฒเบžเบงเบเบกเบฑเบ™. เบšเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”
เบฎเบฑเบšเบฎเบนเป‰ #เป€เบญเบฅเบตเบŸ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

ยทเบกเบฐเบซเบฒเบžเบฒเบเบ„เป‰เบฒเบเบ„เบทเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบ›เบฒเบเบปเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡.

ยท เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ unary plus.

ยทเบ— U integer constant suffix, เบซเบผเบท F or L เบ„เบณเบ•เปเปˆเบ—เป‰เบฒเบเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบˆเบธเบ”เบฅเบญเบ.
(C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ L suffix เบชเบธเบ” integer constants.) เบซเบกเบฒเบเป€เบซเบ”, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
suffixes เบ›เบฐเบเบปเบ”เบขเบนเปˆเปƒเบ™ macros เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”,
เบ•เบปเบงเบขเปˆเบฒเบ‡ _MIN/_MAX เบกเบฐเบซเบฒเบžเบฒเบเปƒเบ™ " ". เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ macro เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ”เบœเบนเป‰เปƒเบŠเป‰เบญเบฒเบ”เบˆเบฐ
เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž spurious, เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก preprocessor เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ GCC เบกเบต
เบชเบฐเบžเบฒเบšเบเบฒเบ™เบžเบฝเบ‡เบžเปเป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

ยทเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบ›เบฐเบเบฒเบ”เบžเบฒเบเบ™เบญเบเปƒเบ™เบซเบ™เบถเปˆเบ‡เบ•เบฑเบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡
block.

ยท เบ„เบณ เบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™ "เบชเบฐเบซเบผเบฑเบš" เบกเบต operand เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” "เบเบฒเบง".

ยท เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ "static" เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก "static" เบซเบ™เบถเปˆเบ‡. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™
เบเบญเบกเบฎเบฑเบšเป‚เบ”เบเบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™ C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡.

ยท เบ›เบฐเป€เบžเบ” ISO เบ‚เบญเบ‡เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบกเบตเบ„เบงเบฒเบกเบเบงเป‰เบฒเบ‡ เบซเบผเบท signedness เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™
เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบžเบทเป‰เบ™โ€‹เป€เบกเบทเบญเบ‡โ€‹. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เปเบกเปˆเบ™เบญเบญเบเบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเปเบกเปˆเบ™เบชเบดเบš.
เป€เบŠเบฑเปˆเบ™: เบ„เปˆเบฒเป€เบฅเบเบ–เบฒเบ™เบชเบดเบšเบซเบปเบ เบซเบผเบทเบ„เปˆเบฒเป€เบฅเบเปเบ›เบ”, เป€เบŠเบดเปˆเบ‡เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบชเบฐเปเบ”เบ‡เป€เบ–เบดเบ‡เบฎเบนเบšเปเบšเบšเบšเบดเบ”, เบšเปเปˆเปเบกเปˆเบ™
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš.

ยท เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ‚เบญเบ‡ ISO string concatenation เบ–เบทเบโ€‹เบเบงเบ”โ€‹เบžเบปเบšโ€‹.

ยท เบเบฒเบ™โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบฅเบงเบกโ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹.

ยทเบ•เบปเบงเบฅเบฐเบšเบธเบ‚เบฑเบ”เบเบฑเบšเบ›เป‰เบฒเบเบเบณเบเบฑเบš. เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก C เบ‚เบฒเบ” namespace เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบš
เบ›เป‰เบฒเบ เบเบณ เบเบฑเบš.

ยท เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบชเบฐเบซเบฐเบžเบฑเบ™. เบ–เป‰เบฒเบ•เบปเบงเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบชเบนเบ™, เบเบฒเบ™เป€เบ•เบทเบญเบ™เบˆเบฐเบ–เบทเบเบฅเบฐเป€เบงเบฑเป‰เบ™.
เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบชเบนเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”เบœเบนเป‰เปƒเบŠเป‰เบ›เบฒเบเบปเบ”
เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ "__STDC__" เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ„เปเบฒเป€เบ•เบทเบญเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›เปเบฅเบฐเบญเบตเบ‡เปƒเบชเปˆ
เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบ›เบฑเบ™เบชเบนเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบต C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก.

ยท เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เป‚เบ”เบโ€‹เบ•เบปเป‰เบ™โ€‹เปเบšเบšโ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบ„เปˆเบฒโ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆ / floating -เบˆเบธเบ”โ€‹เปเบฅเบฐโ€‹เบเบปเบ‡โ€‹เบเบฑเบ™โ€‹เบ‚เป‰เบฒเบกโ€‹. เป„เบ”เป‰
เบเบฒเบ™เบ‚เบฒเบ”เบ•เบปเบงเปเบšเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบเบฑเบš C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเป€เบฎเบฑเบ”เปƒเบซเป‰เบฎเป‰เบฒเบเปเบฎเบ‡
เบšเบฑเบ™เบซเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบธเบ”เบเปˆเบญเบเบ‚เบญเบ‡เบ„เปเบฒเป€เบ•เบทเบญเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰; เบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เป€เบ•เบฑเบก
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ - เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เปเบšเบšโ€‹เบ”เบฑเป‰เบ‡โ€‹เป€เบ”เบตเบกโ€‹.

ยท เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ„เปเบฒโ€‹เบ™เบดโ€‹เบเบฒเบกโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบš ISO Cโ€‹. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบฑเป‰เบ‡เปƒเบˆ เบšเปเปˆ เบญเบญเบเบกเบฒ
เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹เบ•เบปเป‰เบ™โ€‹เปเบšเบšโ€‹เบซเบผเบทโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ„เบธเบ™โ€‹เบชเบปเบกโ€‹เบšเบฑเบ” ISO C เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹
เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบกเบทเปˆเบญเปƒเบŠเป‰ macro เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰ C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบ‚เบญเบ‡ libiberty,
"PARAMS" เปเบฅเบฐ "VPARAMS". เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเบ‚เป‰เบฒเบกเบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบงเบฒเบ‡เป„เบงเป‰
เป€เบžเบฒเบฐเบงเปˆเบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GCC เปเบฅเป‰เบง เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš
เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ‚เบญเบ‡ C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก.

- เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เปเบšเบšโ€‹เบ”เบฑเป‰เบ‡โ€‹เป€เบ”เบตเบกโ€‹ (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ•เบปเป‰เบ™เปเบšเบšเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เปเบ›เบ‡เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™
เบเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเปเบšเบš. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เปเบ›เบ‡เบ‚เบญเบ‡
เบˆเบธเบ”เบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบˆเบฐเป€เบฅเบทเปˆเบญเบ™เปเบฅเบฐเปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เปเบฅเบฐเบเบฒเบ™เปเบ›เบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เบงเบฒเบกเบเบงเป‰เบฒเบ‡เบซเบผเบท
เบเบฒเบ™เบฅเบปเบ‡เบ™เบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เปเบเป‰เบ‡เบˆเบธเบ”เบ„เบปเบ‡เบ—เบตเปˆเบเบปเบเป€เบงเบฑเป‰เบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™.

-Wdeclaration เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ–เบฐโ€‹เปเบซเบผเบ‡โ€‹เบเบฒเบ™โ€‹ (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เปƒเบ™เบšเบฅเบฑเบญเบ. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ™เบตเป‰, เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบ
เบˆเบฒเบ C ++, เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ”เป‰เบงเบ ISO C99 เปเบฅเบฐเบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ GCC. เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™
เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ ISO C90 เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ GCC เบฎเบธเปˆเบ™เบเปˆเบญเบ™ GCC 3.0.

-Wundef
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ•เบปเบงเบฅเบฐเบšเบธเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบ–เบทเบเบ›เบฐเป€เบกเบตเบ™เบขเบนเปˆเปƒเบ™ # เบ–เป‰เบฒ เบ—เบดเบ”เบ—เบฒเบ‡.

-wno-endif-labels
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆ #เบญเบทเปˆเบ™ or an #เบชเบธเบ”เบ—เป‰เบฒเบ เบ•เบดเบ”เบ•เบฒเบกเบ”เป‰เบงเบเบ‚เปเป‰เบ„เบงเบฒเบก.

- เป€เบ‡เบปเบฒ
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ เบซเบผเบทเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ›เบฐเป€เบžเบ”เป€เบ›เบฑเบ™เป€เบ‡เบปเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบญเบทเปˆเบ™,
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต, เบ›เบฐเป€เบžเบ”, เบซเบผเบทเบชเบฐเบกเบฒเบŠเบดเบเบŠเบฑเป‰เบ™เบฎเบฝเบ™ (เปƒเบ™ C ++), เบซเบผเบทเบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบกเบตเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เบ•เบปเบง
เป€เบ›เบฑเบ™เป€เบ‡เบปเบฒ. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเปƒเบ™ C ++, compiler เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ‡เบปเบฒเบˆเบฐเปเบˆเป‰เบ‡
typedef, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบ–เป‰เบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ‡เบปเบฒ struct/class/enum.

-Wlarger-than=len
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบงเบฑเบ”เบ–เบธเปƒเบซเบเปˆเบเบงเปˆเบฒ len bytes เบ–เบทเบเบเปเบฒเบ™เบปเบ”.

-Wframe-larger-than=len
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบญเบšเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบซเบเปˆเบเบงเปˆเบฒ len เป„เบšเบ•เปŒ. เบเบฒเบ™โ€‹เบ„เบดเบ”โ€‹เป„เบฅเปˆโ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹
เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบเบญเบš stack เปเบกเปˆเบ™เป‚เบ”เบเบ›เบฐเบกเบฒเบ™เปเบฅเบฐเบšเปเปˆเบญเบฐเบ™เบธเบฅเบฑเบ. เบ•เบปเบงเบˆเบดเบ‡
เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบฒเบ”เบˆเบฐเบซเบผเบฒเบเบเบงเปˆเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡ len เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™. เปƒเบ™
เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบทเป‰เบ™เบ—เบตเปˆเปƒเบ”เบเปเป„เบ”เป‰เบˆเบฑเบ”เบชเบฑเบ™เบœเปˆเบฒเบ™ "alloca", arrays เบ„เบงเบฒเบกเบเบฒเบงเบ•เบปเบงเปเบ›, เบซเบผเบทเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡
constructs เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป‚เบ”เบ compiler เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบˆเบฐเบญเบญเบเบซเบผเบทเบšเปเปˆ
เบ„เบณ เป€เบ•เบทเบญเบ™.

-Wno-free-nonheap-object
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเบ›เบปเบ”เบ›เปˆเบญเบเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบˆเบฑเบ”เบชเบฑเบ™เบขเบนเปˆเปƒเบ™ heap.

-Wstack-usage=len
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบเบฒเบ™เปƒเบŠเป‰ stack เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบญเบฒเบ”เบˆเบฐเปƒเบซเบเปˆเบเบงเปˆเบฒ len เป„เบšเบ•เปŒ. เบเบฒเบ™โ€‹เบ„เบดเบ”โ€‹เป„เบฅเปˆโ€‹
เป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ stack เปเบกเปˆเบ™เบญเบฐเบ™เบธเบฅเบฑเบ. เบžเบทเป‰เบ™เบ—เบตเปˆเปƒเบ”เบเปเป„เบ”เป‰เบˆเบฑเบ”เบชเบฑเบ™เบœเปˆเบฒเบ™ "alloca",
variable-length arrays, เบซเบผเบท constructs เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปเบกเปˆเบ™เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป‚เบ”เบ compiler เป€เบกเบทเปˆเบญ
เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบˆเบฐเบญเบญเบเบ„เปเบฒเป€เบ•เบทเบญเบ™เบซเบผเบทเบšเปเปˆ.

เบ‚เปเป‰เบ„เบงเบฒเบกเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบฎเบฑเบเบชเบฒเบเบฑเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡ -fstack เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹.

ยท เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ stack เปเบกเปˆเบ™โ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆโ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบ•เบฑเบกโ€‹เบ—เบตเปˆโ€‹เปเบ•เปˆโ€‹เป€เบเบตเบ™โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ—เบตเปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป„เบงเป‰โ€‹, เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹:

เบ„เปเบฒเป€เบ•เบทเบญเบ™: เบเบฒเบ™เปƒเบŠเป‰ stack เปเบกเปˆเบ™ 1120 bytes

ยท เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ stack เปเบกเปˆเบ™ (เบšเบฒเบ‡โ€‹เบชเปˆเบงเบ™โ€‹) dynamic เปเบ•เปˆโ€‹เบกเบตโ€‹เบ‚เบญเบšโ€‹เป€เบ‚เบ”โ€‹, เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹:

เบ„เปเบฒเป€เบ•เบทเบญเบ™: เบเบฒเบ™เปƒเบŠเป‰ stack เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™ 1648 bytes

ยท เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ stack เปเบกเปˆเบ™ (เบšเบฒเบ‡โ€‹เบชเปˆเบงเบ™โ€‹) dynamic เปเบฅเบฐโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ‚เบญเบšโ€‹เป€เบ‚เบ”โ€‹, เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹:

เบ„เปเบฒเป€เบ•เบทเบญเบ™: เบเบฒเบ™เปƒเบŠเป‰ stack เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบกเบตเบ‚เบญเบšเป€เบ‚เบ”

-Wunsafe-loop-optimizations
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ loop เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เบฑเบšเป„เบ”เป‰เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ compiler เบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบกเบตเบซเบเบฑเบ‡เบขเบนเปˆเปƒเบ™
เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ” loop. เบเบฑเบš -funsafe-loop-optimizations เป€เบ•เบทเบญเบ™เบ–เป‰เบฒ compiler
เป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

-Wno-pedantic-ms-format (เป€เบ›เบปเป‰เบฒเปเบฒเบ MinGW เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš -Wformat เปเบฅเบฐ - pedantic เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ GNU, เบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ›เบดเบ”เบเบฒเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ ISO "printf" / "scanf" เบ•เบปเบงเบฅเบฐเบšเบธเบ„เบงเบฒเบกเบเบงเป‰เบฒเบ‡เบ‚เบญเบ‡เบฎเบนเบšเปเบšเบš
"I32", "I64", เปเบฅเบฐ "I" เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ Windows, เป€เบŠเบดเปˆเบ‡เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบงเบฅเบฒเปเบฅเปˆเบ™ MS.

-Wpointer-arith
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เปƒเบ”เปเบ”เปˆเบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบš "เบ‚เบฐเบซเบ™เบฒเบ”" เบ›เบฐเป€เบžเบ”เบŸเบฑเบ‡เบŠเบฑเบ™ เบซเบผเบท "เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ". GNU C
เบเปเบฒเบ™เบปเบ”เบ›เบฐเป€เบžเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ 1, เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ”เป‰เบงเบ "void *"
เบ•เบปเบงเบŠเบตเป‰เปเบฅเบฐเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ. เปƒเบ™ C ++, เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เบ”เบณเป€เบ™เบตเบ™เบเบฒเบ™เป€เบฅเบเป€เบฅเบ
เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš "NULL". เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ -Wpedantic.

-Wtype- limits
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบชเบฐเป€เปเบต เบซเบผเบทเบœเบดเบ”เบชเบฐเป€เปเบตเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เบญเบšเป€เบ‚เบ”เบˆเบณเบเบฑเบ”เบ‚เบญเบ‡
เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™, เปเบ•เปˆเบšเปเปˆเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ„เบปเบ‡เบ—เบตเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบšเปเปˆเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™
เบ•เบปเบงเปเบ›เปเบกเปˆเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบชเบนเบ™เบเบฑเบš < or >=. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
-Wextra.

-Wbad-function-cast (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบเบฒเบ™เป‚เบ—เบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเบเบปเบ‡เบเบฑเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบ•เบทเบญเบ™เบ–เป‰เบฒ
"int malloc()" เบ–เบทเบเป‚เบเบ™เป€เบ›เบฑเบ™ "เบญเบฑเบ™เปƒเบ”เบญเบฑเบ™เปœเบถเปˆเบ‡ *".

-Wc++-compat (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ ISO C เบ—เบตเปˆเบขเบนเปˆเบ™เบญเบเบŠเบธเบ”เบเปˆเบญเบเบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡ ISO C เปเบฅเบฐ ISO
C++, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ›เปˆเบฝเบ™ implicit เบˆเบฒเบ "void *" เป„เบ›เบซเบฒ pointer เป€เบ›เบฑเบ™ non- "void"
เบ›เบฐเป€เบžเบ”

-Wc++11-compat (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ C++ เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเปเบฒเบเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ ISO C++ 1998 เปเบฅเบฐ ISO C++ 2011,
เบ•เบปเบงเบขเปˆเบฒเบ‡: เบ•เบปเบงเบฅเบฐเบšเบธเปƒเบ™ ISO C++ 1998 เบ—เบตเปˆเป€เบ›เบฑเบ™เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™เปƒเบ™ ISO C++ 2011. เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ™เบตเป‰
เป€เบ›เบตเบ” - เบเบฒเบ™โ€‹เบ‚เบฑเบ”โ€‹เบ‚เบงเบฒเบ‡โ€‹ เปเบฅเบฐเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wcast-qual
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ•เบปเบงเบŠเบตเป‰เบ–เบทเบเบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบ•เบปเบงเบŠเบตเป‰เบšเบญเบเบ›เบฐเป€เบžเบ”เปƒเบ”เปœเบถเปˆเบ‡เบญเบญเบเบˆเบฒเบเบ›เบฐเป€เบžเบ”เป€เบ›เบปเป‰เบฒเปเบฒเบ.
เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบ•เบทเบญเบ™เบ–เป‰เบฒ "const char *" เบ–เบทเบเป‚เบเบ™เป„เบ›เบซเบฒ "char *".

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบ•เบทเบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบชเป‰เบฒเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบ—เบตเปˆเปเบ™เบฐเบ™เปเบฒเบ›เบฐเป€เบžเบ”เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบ™เบ—เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเบ›เบญเบ”เป„เบž. เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เป‚เบเบ™ "char **" เป€เบ›เบฑเบ™ "const char **" เปเบกเปˆเบ™เบšเปเปˆเบ›เบญเบ”เป„เบž, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰:

/* p เปเบกเปˆเบ™ char ** เบ„เปˆเบฒ. */
const char **q = (const char **) p;
/* เบเบฒเบ™เบกเบญเบšเปเบฒเบเบ‚เบญเบ‡ readonly string เปƒเบซเป‰เบเบฑเบš const char * เปเบกเปˆเบ™ OK. */
*q = "string";
/* Now char** pointer pointer to read-only memory. */
**p = 'เบ‚';

-Wcast-align
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ•เบปเบงเบŠเบตเป‰เบ–เบทเบเป‚เบเบ™เบฅเบปเบ‡เป„เบ›เป€เบŠเบฑเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เบ•เบฒเบกเป€เบ›เบปเป‰เบฒเปเบฒเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™
เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบ•เบทเบญเบ™เบ–เป‰เบฒ "char *" เบ–เบทเบเป‚เบเบ™เป€เบ›เบฑเบ™ "int *" เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เบตเปˆ
เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบŠเบฒเบเปเบ”เบ™เบชเบญเบ‡เบซเบผเบทเบชเบตเปˆเป„เบš.

-Write-strings
เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบก C, เปƒเบซเป‰ string constants เบ›เบฐเป€เบžเบ” "const char[เบ„เบงเบฒเบกเบเบฒเบง]" เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบชเปเบฒเป€เบ™เบปเบฒ
เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบซเบ™เบถเปˆเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบปเบงเบŠเบตเป‰เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ "const" "char *" เบœเบฐเบฅเบดเบ”เบ„เปเบฒเป€เบ•เบทเบญเบ™. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบŠเบญเบเบซเบฒเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบžเบฐเบเบฒเบเบฒเบกเบ‚เบฝเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบ•เบฃเบดเบ‡
เบ„เบปเบ‡เบ—เบตเปˆ, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ "const" เปƒเบ™เบเบฒเบ™เบ›เบฐเบเบฒเบ”
เปเบฅเบฐเบ•เบปเป‰เบ™เปเบšเบš. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบ„เบงเบฒเบกเบฅเบปเบšเบเบงเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ” - เบเบฒ
เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เป€เบ•เบทเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบชเบฑเบ‡โ€‹เบฅเบงเบก C ++, เป€เบ•เบทเบญเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบ—เบตเปˆโ€‹เบ–เบทเบโ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบˆเบฒเบโ€‹เบ•เบปเบงโ€‹เบซเบ™เบฑเบ‡โ€‹เบชเบทโ€‹เบชเบฐโ€‹เบ•โ€‹เบฃเบดเบ‡โ€‹เป€เบ›เบฑเบ™ "char
*". เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ C++.

- Wclobbered
เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบ›เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบ longjmp or vfork. เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เบ™เบตเป‰โ€‹เบเบฑเบ‡โ€‹
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ -Wextra.

- เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบ•เบฒเบกโ€‹เป€เบ‡เบทเปˆเบญเบ™โ€‹เป„เบ‚โ€‹ (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบš (C++11 [intro.defs]).

- เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹
เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบ›เบ‡ implicit เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบกเบนเบ™เบ„เปˆเบฒ. เบ™เบตเป‰เบฅเบงเบกเบกเบตเบเบฒเบ™เปเบ›เบ‡
เบฅเบฐเบซเบงเปˆเบฒเบ‡เบˆเบดเบ‡ เปเบฅเบฐเบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบก, เป€เบŠเบฑเปˆเบ™ "abs (x)" เป€เบกเบทเปˆเบญ "x" เปเบกเปˆเบ™ "เบ„เบนเบ™"; เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡
เป€เบŠเบฑเบ™เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™, เป€เบŠเบฑเปˆเบ™ "unsigned ui = -1"; เปเบฅเบฐเบเบฒเบ™เปเบ›เบ‡เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เป€เบŠเบฑเปˆเบ™:
"sqrtf (M_PI)". เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฝเบ‡เป‚เบซเบงเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เป€เบŠเบฑเปˆเบ™ "abs ((int) x)" เปเบฅเบฐ "ui =
(unsigned) -1", เบซเบผเบทเบ–เป‰เบฒเบ„เปˆเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเบเบฒเบ™เปเบ›เบ‡เป€เบŠเบฑเปˆเบ™เปƒเบ™ "abs (2.0)".
เบ„เบณเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบ›เบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบˆเบณเบ™เบงเบ™เบ—เบตเปˆเบฅเบปเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™ เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เป„เบ”เป‰เป‚เบ”เบ
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ -Wno-sign-เปเบ›เบ‡.

เบชเปเบฒเบฅเบฑเบš C++, เบเบฑเบ‡เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚ overload เบชเบฑเบšเบชเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบœเบนเป‰เปƒเบŠเป‰; เปเบฅเบฐ
เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ„เบตเบเปƒเบŠเป‰เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบ›เบ‡เบ›เบฐเป€เบžเบ”: เบเบฒเบ™เปเบ›เบ‡เป€เบ›เบฑเบ™ "void", เบ”เบฝเบงเบเบฑเบ™
เบ›เบฐเป€เบžเบ”, เบซเป‰เบญเบ‡เบฎเบฝเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบซเบผเบทเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบžเบงเบเบกเบฑเบ™. เบ„เปเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบ›เบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบŠเบฑเบ™
เปเบฅเบฐเบˆเบณเบ™เบงเบ™เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™เปเบกเปˆเบ™เบ–เบทเบเบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ C++ เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆ -Wsign เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹ is
เป€เบ›เบตเบ”เปƒเบŠเป‰เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡.

-Wno-conversion-null (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบ›เบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ "NULL" เปเบฅเบฐเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเบŠเบตเป‰. -Wconversion-null is
เป€เบ›เบตเบ”เปƒเบŠเป‰เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-Wzero-as-null-pointer-constant (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบ•เบปเบงเปœเบฑเบ‡เบชเบท '0' เบ–เบทเบเปƒเบŠเป‰เป€เบ›เบฑเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ•เบปเบงเบŠเบตเป‰ null. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบเบฑเบš
เบญเบณเบ™เบงเบเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ "nullptr" เปƒเบ™ C++11.

-Wdate-time
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบžเบปเบšเบกเบฒเป‚เบ„เบฃ "__TIME__", "__DATE__" เบซเบผเบท "__TIMESTAMP__" เบเป‰เบญเบ™เบžเบงเบเบกเบฑเบ™
เบญเบฒเบ”เบˆเบฐเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เปเบœเปˆเบžเบฑเบ™เบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ.

-Wdelete-เบšเปเปˆเบชเบปเบกเบšเบนเบ™ (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบฅเบถเบšเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเบ„เบปเบšเบ–เป‰เบงเบ™, เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบขเบนเปˆ
เป€เบงเบฅเบฒเปเบฅเปˆเบ™. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-Wuseless-cast (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.

- เบฎเปˆเบฒเบ‡เบเบฒเบเบญเปˆเบญเบ™เป€เบžเบ
เป€เบ•เบทเบญเบ™ เบ–เป‰เบฒ เบซเบฒเบ เบงเปˆเบฒ เบฎเปˆเบฒเบ‡ เบเบฒเบ เป€เบ›เบปเปˆเบฒ เป€เบเบตเบ” เบ‚เบถเป‰เบ™ เปƒเบ™ if, เบญเบทเปˆเบ™ or do เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ เบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เปเบกเปˆเบ™
เบเบฑเบ‡เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบ -Wextra.

-Wenum เบ›เบฝเบšเบ—เบฝเบš
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เปƒเบ™ C++ enumeral
เบšเปเปˆเบเบปเบ‡เบเบฑเบ™เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบเบฑเบ‡เบ–เบทเบเบงเบดเบ™เบดเบ”เป„เบชเปเบฅเบฐเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เปƒเบ™ C เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wjump-misses-init (C, Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ„เบณเบ–เบฐเปเบซเบผเบ‡ โ€œgotoโ€ เบซเบผเบท เบ„เบณเบ–เบฐเปเบซเบผเบ‡ โ€œเบชเบฐเบซเบผเบฑเบšโ€ เป‚เบ”เบ”เป„เบ›เบ‚เป‰เบฒเบ‡เปœเป‰เบฒ
เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ•เบปเบงเปเบ›, เบซเบผเบทเป‚เบ”เบ”เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบ›เป‰เบฒเบเบŠเบทเปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ•เบปเบงเปเบ›เป„เบ”เป‰
เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเปเบ›เบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆ
เบ›เบฐเบเบฒเบ”. เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆ C เปเบฅเบฐ Objective-C; เปƒเบ™ C++ เบ›เบฐเป€เบžเบ”เบ™เบตเป‰
เบชเบฒเบ‚เบฒเปเบกเปˆเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก.

-Wjump-misses-init เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ -Wc++-compat. เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบดเบเบฒเบ™เบ”เป‰เบงเบ
-Wno-jump-misses-init เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

-Wsign-เบ›เบฝเบšเบ—เบฝเบš
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ„เปˆเบฒเบ—เบตเปˆเบฅเบปเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™ เปเบฅเบฐ เบšเปเปˆเป„เบ”เป‰เบฅเบปเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป„เบ”เป‰
เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบกเบทเปˆเบญเบ„เปˆเบฒเบ—เบตเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ unsigned. เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™
by -Wextra; เป€เบžเบทเปˆเบญโ€‹เปƒเบซเป‰โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ„เปเบฒโ€‹เป€เบ•เบทเบญเบ™โ€‹เบญเบทเปˆเบ™เป†โ€‹เบ‚เบญเบ‡โ€‹ -Wextra เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™เบ™เบตเป‰, เปƒเบŠเป‰ -Wextra
-Wno-sign-เบ›เบฝเบšเบ—เบฝเบš.

-Wsign เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹
เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบ›เบ‡ implicit เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบ‚เบญเบ‡เบ„เปˆเบฒ integer, เป€เบŠเบฑเปˆเบ™:
เบเบฒเบ™เบกเบญเบšเปเบฒเบเบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบญเบญเบเปƒเบซเป‰เบเบฑเบšเบ•เบปเบงเปเบ›เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™. เบˆเบฐเปเบˆเป‰เบ‡
เป‚เบเบ™เบชเบฝเบ‡เป€เบ•เบทเบญเบ™เปƒเบซเป‰เบกเบดเบ”เบ‡เบฝเบš. เปƒเบ™ C, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹.

- เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡ Wfloatโ€‹
เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบ›เบ‡ implicit เบ—เบตเปˆเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบ‚เบญเบ‡เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เบ™เบตเป‰
เบฎเบงเบกเป€เบ–เบดเบ‡เบเบฒเบ™เปเบ›เบ‡เบˆเบฒเบเบˆเบดเบ‡เป€เบ›เบฑเบ™เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบก, เปเบฅเบฐเบˆเบฒเบเบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบชเบนเบ‡เบเบงเปˆเบฒเบˆเบดเบ‡เบซเบฒเบ•เปเปˆเบฒเบเบงเปˆเบฒ
เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹.

-Wsizeof-pointer-memaccess
เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ„เบงเบฒเบกเบเบฒเบงเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ‡เป„เบชเบ•เปเปˆเบเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฐเบ•เบฃเบดเบ‡เปเบฅเบฐเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™
เบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เปƒเบŠเป‰ "sizeof". เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ™เบตเป‰เป€เบ•เบทเบญเบ™ eg เบเปˆเบฝเบงเบเบฑเบš "memset (ptr, 0, sizeof
(ptr));" เบ–เป‰เบฒ "ptr" เบšเปเปˆเปเบกเปˆเบ™ array, เปเบ•เปˆเป€เบ›เบฑเบ™เบ•เบปเบงเบŠเบตเป‰, เปเบฅเบฐเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบซเบผเบท.
เบเปˆเบฝเบงเบเบฑเบš "memcpy (&foo, ptr, sizeof (&foo));". เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wmemset-transposed-args
เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ‡เป„เบชเบเบฑเบš "memset" เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เบ•เบปเบง, เบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™.
เบšเปเปˆเปเบกเปˆเบ™เบชเบนเบ™ เปเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเบชเบฒเบกเปเบกเปˆเบ™เบชเบนเบ™. เบ™เบตเป‰เป€เบ•เบทเบญเบ™ eg@ เบเปˆเบฝเบงเบเบฑเบš "memset (buf, sizeof
buf, 0)" เป€เบŠเบดเปˆเบ‡เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™ "memset (buf, 0, sizeof buf)" เปเบ—เบ™.
เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเปเบกเปˆเบ™เบ›เปˆเบญเบเบญเบญเบเบกเบฒเบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเบชเบฒเบกเปเบกเปˆเบ™เบชเบนเบ™เบ•เบปเบงเบซเบ™เบฑเบ‡เบชเบท, เบ–เป‰เบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบšเบฒเบ‡
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบ–เบทเบเบžเบฑเบšเป€เบ›เบฑเบ™เบชเบนเบ™, เบซเบผเบทเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบชเบนเบ™เป„เบ›เบซเบฒเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เปเบฅเบฐเบญเบทเปˆเบ™เป†, เบกเบฑเบ™เป„เบ.
เบซเบ™เป‰เบญเบเบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เป„เบ”เป‰เปเบฅเบเบ›เปˆเบฝเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž
เบ›เปˆเบญเบเบญเบญเบเบกเบฒ. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-waddress
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ—เบตเปˆเบขเบนเปˆเบ„เบงเบฒเบกเบˆเบณเบ—เบตเปˆเปœเป‰เบฒเบชเบปเบ‡เป„เบช. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบฅเบงเบกเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡ a
เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚, เป€เบŠเบฑเปˆเบ™ "void func(void); if (func)", เปเบฅเบฐ
เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบ—เบตเปˆเบขเบนเปˆเปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบ‚เบญเบ‡เบ•เบปเบงเปœเบฑเบ‡เบชเบทเบชเบฐเบ•เบฃเบดเบ‡ เป€เบŠเบฑเปˆเบ™ "เบ–เป‰เบฒ (x == "abc")".
เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เป‚เบ”เบโ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹เบŠเบตเป‰โ€‹เบšเบญเบโ€‹เป€เบ–เบดเบ‡โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹: เบ—เบตเปˆโ€‹เบขเบนเปˆโ€‹เบ‚เบญเบ‡โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบชเบฐโ€‹เป€เบซเบกเบตโ€‹เป„เบ›โ€‹
เบ›เบฐเป€เบกเบตเบ™เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบกเบฑเบเบˆเบฐเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก
เบฅเบทเบกเบงเบปเบ‡เป€เบฅเบฑเบšเปƒเบ™เบเบฒเบ™เป‚เบ—เบŸเบฑเบ‡เบŠเบฑเบ™; เปเบฅเบฐเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบ•เบปเบงเปœเบฑเบ‡เบชเบทเบชเบฐเบ•เบฃเบดเบ‡
เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เป€เบเบตเบ”เบžเบถเบ”เบ•เบดเบเบณเบ—เบตเปˆเบšเปเปˆเบฅเบฐเบšเบธ เปเบฅเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ„เบทเปˆเบญเบ™เบ—เบตเปˆเปƒเบ™ C, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเบกเบฑเบ™เบกเบฑเบเบˆเบฐเบŠเบตเป‰เบšเบญเบ
เบ—เบตเปˆเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ•เบฑเป‰เบ‡เปƒเบˆเปƒเบŠเป‰ "strcmp". เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wlogical-op
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบขเปˆเบฒเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰
เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบขเปˆเบฒเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ—เบตเปˆเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบชเบฐเบซเบฅเบฒเบ”เป€เบฅเบฑเบเบ™เป‰เบญเบเปเบกเปˆเบ™เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบ–เบทเบเบ„เบฒเบ”เบซเบงเบฑเบ‡.

-Waggregate-เบเบฑเบšเบ„เบทเบ™
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบ”เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบซเบผเบทเบชเบฐเบซเบฐเบžเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบซเบผเบทเป€เบญเบตเป‰เบ™เบงเปˆเบฒ. (เปƒเบ™
เบžเบฒโ€‹เบชเบฒโ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบเบฑเบšโ€‹เบ„เบทเบ™ array เป„เบ”เป‰โ€‹, เบ™เบตเป‰โ€‹เบเบฑเบ‡ elicits เบ„เปเบฒโ€‹เป€เบ•เบทเบญเบ™โ€‹.

-Wno-aggressive-loop-optimizations
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบขเบนเปˆเปƒเบ™ loop เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡ reterations, compiler เบเบงเบ”เบžเบปเบšเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”
เบžเบถเบ”เบ•เบดเบเบณเปƒเบ™เบšเบฒเบ‡เบ„เบณเบ–เบฐเปเบซเบผเบ‡เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบŠเป‰เบณเปœเบถเปˆเบ‡ เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™.

- เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ Wnoโ€‹
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบ–เป‰เบฒ "__attribute__" เบ—เบตเปˆเบšเปเปˆเบ„เบฒเบ”เบ„เบดเบ”เบ–เบทเบเปƒเบŠเป‰, เป€เบŠเบฑเปˆเบ™: เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบ,
เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบเบฑเบšโ€‹เบ•เบปเบงโ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹, เปเบฅเบฐโ€‹เบญเบทเปˆเบ™เป†โ€‹. เบ™เบตเป‰โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบขเบธเบ”โ€‹เป€เบŠเบปเบฒโ€‹เบเบฒเบ™โ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™.

-Wno-builtin-macro-redefined
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบงเปˆเบฒเบกเบฒเป‚เบ„เปƒเบ™เบ•เบปเบงเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ–เบทเบเบเบณเบ™เบปเบ”เบ„เบทเบ™เปƒเปเปˆ. เบ™เบตเป‰เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบชเปเบฒเบฅเบฑเบš
เบ™เบดเบเบฒเบกเปƒเปเปˆเบ‚เบญเบ‡ "__TIMESTAMP__", "__TIME__", "__DATE__", "__FILE__", เปเบฅเบฐ
"__BASE_FILE__".

-Wstrict-prototypes (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ”เปœเบถเปˆเบ‡เบ–เบทเบเบ›เบฐเบเบฒเบ” เบซเบผเบทเบเบณเบ™เบปเบ”เป‚เบ”เบเบšเปเปˆเบฅเบฐเบšเบธเบ›เบฐเป€เบžเบ”เบญเบฒเบเบดเบงเป€เบกเบฑเบ™. (เบญเบฑเบ™
เบ„เปเบฒเบ™เบดเบเบฒเบกเบŸเบฑเบ‡เบŠเบฑเบ™เปเบšเบšเป€เบเบปเปˆเบฒเปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ™เปเบฒเบซเบ™เป‰เบฒเบ”เป‰เบงเบ a
เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡.)

-Wold-style-เบ›เบฐเบเบฒเบ” (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบฅเป‰เบฒเบชเบฐเป„เบซเบก, เบญเบตเบ‡เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C, เปƒเบ™เบเบฒเบ™เบ›เบฐเบเบฒเบ”. เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ•เบปเบงเบฅเบฐเบšเบธเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป€เบŠเบฑเปˆเบ™ "static" เบšเปเปˆเปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เปƒเบ™ a
เบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ -Wextra.

-Wold-style-เบ™เบดเบเบฒเบก (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเปƒเบŠเป‰เบ™เบดเบเบฒเบกเบŸเบฑเบ‡เบŠเบฑเบ™เปเบšเบšเป€เบเบปเปˆเบฒ. เบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฐเบกเบต
เบ•เบปเป‰เบ™เปเบšเบšเบเปˆเบญเบ™เปœเป‰เบฒเบ™เบตเป‰.

-Wmissing-parameter-type (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบตเบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเบ›เบฐเบเบฒเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบ•เบปเบงเบฅเบฐเบšเบธเบ›เบฐเป€เบžเบ”เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เปเบšเบš K&R:

void foo(bar) { }

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ -Wextra.

-Wmissing-prototypes (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบปเปˆเบงเป‚เบฅเบเบ–เบทเบเบเบณเบ™เบปเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ•เบปเป‰เบ™เปเบšเบšเบเปˆเบญเบ™เปœเป‰เบฒ. เบ™เบตเป‰
เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเปเบกเปˆเบ™เบญเบญเบเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ„เปเบฒเบ™เบดเบเบฒเบกเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบชเบฐเบซเบ™เบญเบ‡เบ•เบปเบงเปเบšเบš. เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰
เป€เบžเบทเปˆเบญเบเบงเบ”เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบปเปˆเบงเป‚เบฅเบเบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ•เบปเป‰เบ™เปเบšเบšเบ—เบตเปˆเบเบปเบ‡เบเบฑเบ™เปƒเบ™ a
เป„เบŸเบฅเปŒเบซเบปเบง. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบš C++ เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบฑเบ‡เปเบปเบ”
เปƒเบซเป‰ prototypes เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ—เบตเปˆเบšเปเปˆเบเบปเบ‡เบเบฑเบ™เบˆเบฐเบ›เบฐเบเบฒเบ” overload เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ
เบ‚เบฑเบ”เบเบฑเบšเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบเปˆเบญเบ™เปœเป‰เบฒเบ™เบตเป‰. เปƒเบŠเป‰ -Wmissing เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹ เป€เบžเบทเปˆเบญโ€‹เบŠเบญเบโ€‹เบซเบฒโ€‹เบ—เบตเปˆโ€‹เบ‚เบฒเบ”โ€‹เบซเบฒเบโ€‹เป„เบ›โ€‹
เบ›เบฐเบเบฒเบ”เปƒเบ™ C++.

-Wmissing เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบปเปˆเบงเป‚เบฅเบเบ–เบทเบเบเบณเบ™เบปเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบเปˆเบญเบ™เปœเป‰เบฒ. เป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ
เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบชเบฐเบซเบ™เบญเบ‡เบ•เบปเป‰เบ™เปเบšเบš. เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบžเบทเปˆเบญเบเบงเบ”เบซเบฒเบ—เบปเปˆเบงเป‚เบฅเบ
เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบฒเบ”เปƒเบ™เป„เบŸเบฅเปŒ header. เปƒเบ™ C, เบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบญเบญเบเบชเปเบฒเบฅเบฑเบš
เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบเบฑเบšเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเปเบšเบšเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ; เปƒเบŠเป‰ -Wmissing-เบ•เบปเป‰เบ™เปเบšเบš เบเบฒเบ™เบเบงเบ”เบชเบญเบš
เบ•เบปเป‰เบ™เปเบšเบšเบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›. เปƒเบ™ C ++, เบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบชเปเบฒเบฅเบฑเบšเปเบกเปˆเปเบšเบšเบŸเบฑเบ‡เบŠเบฑเบ™, เบซเบผเบทเบชเปเบฒเบฅเบฑเบš
เบŸเบฑเบ‡เบŠเบฑเบ™ inline, เบซเบผเบทเบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™ namespaces เบ—เบตเปˆเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆ.

-Wmissing-field-initializers
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ•เบปเบงเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบกเบตเบšเบฒเบ‡เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบซเบฒเบเป„เบ›. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ•เปเปˆเป„เบ›เบ™เบตเป‰
เบฅเบฐเบซเบฑเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เป€เบžเบฒเบฐเบงเปˆเบฒ "xh" เปเบกเปˆเบ™เบชเบนเบ™ implicitly:

struct s { int f, g, h; } ;
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ sx = { 3, 4 };

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เบ•เปเปˆเป„เบ›เบ™เบตเป‰
เบšเปเปˆเบเบฐเบ•เบธเป‰เบ™เป€เบ•เบทเบญเบ™:

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

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ -Wextra. เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบญเบทเปˆเบ™เป† -Wextra เบ„เปเบฒโ€‹เป€เบ•เบทเบญเบ™โ€‹เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹,
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ -Wextra -Wno-missing-field-initializers.

-Wno-multichar
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบ–เป‰เบฒ multicharacter เบ„เบปเบ‡เบ—เบตเปˆ ('FOOF') เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบžเบงเบเป€เบ‚เบปเบฒเบŠเบตเป‰เบšเบญเบ a
typo เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบกเบนเบ™เบ„เปˆเบฒเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เปเบฅเบฐเบšเปเปˆเบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™
เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”เปเบšเบšเบžเบปเบเบžเบฒ.

-Wnormalized=
เปƒเบ™ ISO C เปเบฅเบฐ ISO C ++, เบชเบญเบ‡เบ•เบปเบงเบฅเบฐเบšเบธเบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™เบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡
เบ•เบปเบงเบฅเบฐเบ„เบญเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เป€เบกเบทเปˆเบญเบ•เบปเบงเบฅเบฐเบ„เบญเบ™เบขเบนเปˆเบ™เบญเบเบŠเบธเบ”เบ•เบปเบงเบญเบฑเบเบชเบญเบ™ ASCII เบžเบทเป‰เบ™เบ–เบฒเบ™
เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบกเบตเบชเบญเบ‡เบฅเปเบฒเบ”เบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™. เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™
เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™, เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO 10646 เบเปเบฒเบ™เบปเบ”เบšเบฒเบ‡เบญเบฑเบ™ เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด เบเบปเบ”เบฅเบฐเบšเบฝเบš เป€เบŠเบดเปˆเบ‡เป€เบกเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เปเบฅเป‰เบง
เปƒเบซเป‰โ€‹เปเบ™เปˆโ€‹เปƒเบˆเบงเปˆโ€‹เบฒโ€‹เบงเปˆเบฒโ€‹เบชเบญเบ‡โ€‹เบฅเปเบฒโ€‹เบ”เบฑเบšโ€‹เบ—เบตเปˆโ€‹เบ„เป‰เบฒเบโ€‹เบ„เบทโ€‹เบเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบเบฒเบโ€‹เป€เบ›เบฑเบ™โ€‹เบฅเปเบฒโ€‹เบ”เบฑเบšโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹. GCC
เบชเบฒเบกเบฒเบ”เป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เบ•เบปเบงเบฅเบฐเบšเบธเบ—เบตเปˆเบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบ›เบปเบเบเบฐเบ•เบด; เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰
เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบฑเป‰เบ™.

เบกเบตเบชเบตเปˆเบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ GCC. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -Wnormalized=nfc,
เป€เบŠเบดเปˆเบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเบฅเบฐเบšเบธเปƒเบ”เป†เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบ›เบปเบเบเบฐเบ•เบด ISO 10646 "C",
NFC. NFC เปเบกเปˆเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเปˆเบงเบ™เปƒเบซเบเปˆ.

เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบกเบตเบšเบฒเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบฅเบฐเบšเบธเป‚เบ”เบ ISO C เปเบฅเบฐ ISO C++
เบงเปˆเบฒ, เป€เบกเบทเปˆเบญเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ NFC, เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบฅเบฐเบšเบธ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบšเปเปˆเบกเบตเบ—เบฒเบ‡
เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบชเบฑเบ™เบเบฒเบฅเบฑเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™ ISO C เบซเบผเบท C++ เปเบšเบšเบžเบปเบเบžเบฒ เปเบฅเบฐเบกเบตเบ•เบปเบงเบฅเบฐเบšเบธเบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™ NFC.
-Wnormalized=id เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบชเปเบฒเบฅเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบซเบงเบฑเบ‡เบงเปˆเบฒเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”
เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบˆเบฐเปเบเป‰เป„เบ‚เบญเบฑเบ™เบ™เบตเป‰, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบงเปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบดเบ”เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเบเบฒเบ™เบ‚เบฝเบ™ -Wnormalized=noneเบ—เบตเปˆเบขเบนเปˆ เบ—เปˆเบฒเบ™
เบ„เบงเบ™เป€เบฎเบฑเบ”เปเบ™เบงเบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบšเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเบญเบทเปˆเบ™เป† (เป€เบŠเบฑเปˆเบ™ "D"),
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เปเบกเบ‡เป„เบกเป‰เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™.

เบšเบฒเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เปƒเบ™ ISO 10646 เบกเบตเบ„เบงเบฒเบกเปเบฒเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡ เปเบ•เปˆเป€เบšเบดเปˆเบ‡เบ„เบทเบเบฑเบ™เปƒเบ™เบšเบฒเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™
เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™เบชเบฐเปเบ”เบ‡, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเป€เบกเบทเปˆเบญเบเบฒเบ™เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡
"\u207F", "SUPERSCRIPT Latin LETTER N", เบชเบฐเปเบ”เบ‡เบ„เบทเบเบฑเบ™เบเบฑเบš "n" เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆ
เป„เบ”เป‰เบ–เบทเบเบงเบฒเบ‡เป„เบงเป‰เปƒเบ™เบ•เบปเบงเบซเบเปเป‰. ISO 10646 เบเปเบฒเบ™เบปเบ” NFKC เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹
เบ›เปˆเบฝเบ™เบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบ›เบฑเบ™เบฎเบนเบšเปเบšเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เปเบฅเบฐ GCC เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบšเปเปˆเบขเบนเปˆเปƒเบ™
NFKC เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ -Wnormalized=nfkc. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เปเบกเปˆเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ—เบธเบเป†
เบ•เบปเบงเบฅเบฐเบšเบธเบ—เบตเปˆเบกเบตเบ•เบปเบงเบญเบฑเบเบชเบญเบ™ O เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบชเบฑเบšเบชเบปเบ™เบเบฑเบšเบ•เบปเบงเป€เบฅเบ 0,
เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเปเปˆเปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ•เปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบ›เบฑเบ™เบชเบปเบ™เบ—เบดเบชเบฑเบ™เบเบฒเบฅเบฐเบซเบฑเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ
เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเปเบเป‰เป„เบ‚เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เบ•เบปเบงเบฅเบฐเบ„เบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™.

-Wno-deprecated
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ™เบณเปƒเบŠเป‰.

-Wno-deprecated-เบ›เบฐเบเบฒเบ”
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™, เบ•เบปเบงเปเบ›, เปเบฅเบฐเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบ–เบทเบเปเบฒเบเบงเปˆเบฒเบ–เบทเบเบเบปเบเป€เบฅเบตเบเป‚เบ”เบ
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” "เบ›เบฐเบ•เบดเป€เบชเบ”".

-Wno-เบฅเบปเป‰เบ™
เบขเปˆเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป€เบงเบฅเบฒ overflow เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ„เบปเบ‡เบ—เบตเปˆ.

-Wopenmp-simd
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ•เบปเบงเปเบšเบšเบฅเบฒเบ„เบฒ vectorizer overrides เบ„เปเบฒเบชเบฑเปˆเบ‡ OpenMP เบซเบผเบท Cilk Plus simd
เบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบœเบนเป‰เปƒเบŠเป‰. เป„เบ”เป‰ -fsimd-cost-model=เบšเปเปˆเบˆเบณเบเบฑเบ” เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบœเปˆเบญเบ™เบ„เบฒเบเบฎเบนเบšเปเบšเบšเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบ.

-Woverride-init (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡เบˆเบฐเบ–เบทเบ overridden เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”
เบ•เบปเบงเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ -Wextra. เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบญเบทเปˆเบ™เป† -Wextra เบ„เปเบฒโ€‹เป€เบ•เบทเบญเบ™โ€‹เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹,
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ -Wextra -Wno-override-init.

- เบซเปเปˆ
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปเบกเปˆเบ™เปƒเบซเป‰เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบšเบฑเบ™เบˆเบธ, เปเบ•เปˆเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบšเบฑเบ™เบˆเบธเบšเปเปˆเบกเบต
เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบฎเบนเบšเปเบšเบšเบซเบผเบทเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเบœเบดเบ”
เบœเบปเบ™โ€‹เบ›เบฐโ€‹เป‚เบซเบเบ”โ€‹เบžเบฝเบ‡โ€‹เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰, เบ•เบปเบงเปเบ› "fx" เปƒเบ™ "struct bar" เปเบกเปˆเบ™
misaligned เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ "เปเบ–เบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡" เบšเปเปˆเบกเบตเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบกเบตเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบšเบฑเบ™เบˆเบธ:

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ foo {
intx;
char a,b,c,d;
} __attribute __ ((เบšเบฑเบ™เบˆเบธ));
เปเบ–เบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ {
char z ;
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ foo f;
};

-Wpacked-bitfield-compat
เบŠเบธเบ” 4.1, 4.2 เปเบฅเบฐ 4.3 เบ‚เบญเบ‡ GCC เบšเปเปˆเบชเบปเบ™เปƒเบˆเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” "packed" เปƒเบ™ bit-fields เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”.
"char". เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚เปƒเบ™ GCC 4.4 เปเบ•เปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปƒเบ™
เบฎเบนเบšโ€‹เปเบšเบšโ€‹เป‚เบ„เบ‡โ€‹เบชเป‰เบฒเบ‡โ€‹. GCC เปเบˆเป‰เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฎเบนเป‰เป€เบกเบทเปˆเบญเบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™ GCC
4.4. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบšเปเปˆเบกเบตเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡ 4-bit เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก "a" เปเบฅเบฐ "b" เปƒเบ™เบ™เบตเป‰
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡:

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ foo
{
char a:4;
char b:8;
} __attribute__ ((เบšเบฑเบ™เบˆเบธ));

เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เปƒเบŠเป‰ -Wno-packed-bitfield-compat เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ™เบตเป‰
เบ„เบณ เป€เบ•เบทเบญเบ™.

- เปเบœเปˆเบ™เปเบž
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ padding เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบˆเบฑเบ”เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบซเบผเบทเบเบฒเบ™เบˆเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เป€เบกเบทเปˆเบญเบชเบดเปˆเบ‡เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบกเบฑเบ™เบเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰
เป€เบžเบทเปˆเบญ rearrange เบ—เบปเปˆเบ‡เบ™เบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™ padding เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ.

-Wredundant-decls
เป€เบ•เบทเบญเบ™เบงเปˆเบฒเบกเบตเบญเบฑเบ™เปƒเบ”เบ–เบทเบเบ›เบฐเบเบฒเบ”เบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ”เบฝเบงเบเบฑเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบต
เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบซเบผเบฒเบเบญเบฑเบ™เบ–เบทเบเบ•เป‰เบญเบ‡ เปเบฅเบฐเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡.

-Wnested-externs (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบกเบตเบเบฒเบ™เบ›เบฐเบเบฒเบ” "extern" เบขเบนเปˆเปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™.

-Wno-inherited-variadic-ctor
เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰ C++11 เบชเบทเบšเบ—เบญเบ”เบ•เบปเบงเบชเป‰เบฒเบ‡เป€เบกเบทเปˆเบญเบซเป‰เบญเบ‡เบฎเบฝเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™
เบชเบทเบšเบ—เบญเบ”เบกเบฒเบˆเบฒเบเบกเบตเบ•เบปเบงเบชเป‰เบฒเบ‡ C variadic; เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเปเบกเปˆเบ™เป€เบ›เบตเบ”เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบžเบฒเบฐเบงเปˆเบฒ
ellipsis เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบชเบทเบšเบ—เบญเบ”.

- Winline
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบเบฒเบ”เบงเปˆเบฒเป€เบ›เบฑเบ™ inline เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบชเปˆเปƒเบ™เปเบ–เบงเป„เบ”เป‰. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, compiler เบšเปเปˆเป„เบ”เป‰เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ inline เบ›เบฐเบเบฒเบ”เปƒเบ™
เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.

compiler เปƒเบŠเป‰เบ„เบงเบฒเบกเบซเบฅเบฒเบเบซเบฅเบฒเบเบ‚เบญเบ‡ heuristics เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบˆเบฐ inline a เบซเบผเบทเบšเปเปˆ
เบซเบ™เป‰เบฒเบ—เบตเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, compiler เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™
inlined เปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ inlining เบ—เบตเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปเบฅเป‰เบงเปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบฐเบˆเบธเบšเบฑเบ™.
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เปเบซเบผเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”
เบ„เปเบฒโ€‹เป€เบ•เบทเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป‚เบ”เบโ€‹ - Winline เบ›เบฒเบเบปเบ” เบซเบผเบทเบซเบฒเบเป„เบ›.

-Wno-invalid-offsetof (C++ เปเบฅเบฐ Objective-C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เบŠเบปเบ”เป€เบŠเบตเบเบ‚เบญเบ‡ เบกเบฐเบซเบฒเบžเบฒเบเป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ POD. เบญเบตเบ‡โ€‹เบ•เบฒเบก
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO C++ เบ›เบต 1998, เบ™เบณเปƒเบŠเป‰ เบŠเบปเบ”เป€เบŠเบตเบเบ‚เบญเบ‡ เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ POD เปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”. เปƒเบ™
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” C++ เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบŠเบปเบ”เป€เบŠเบตเบเบ‚เบญเบ‡ เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบ
เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ POD (เป€เบŠเบฑเปˆเบ™: เบ‡เปˆเบฒเบเบ”เบฒเบ เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ เบ—เบตเปˆ
เบฅเบปเป‰เบกเป€เบซเบฅเบงเบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ” POD เบžเบฝเบ‡เปเบ•เปˆเบเป‰เบญเบ™เบกเบตเบœเบนเป‰เบเปเปˆเบชเป‰เบฒเบ‡). เบ—เบธเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบš
เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบฎเบนเป‰เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ” nonportable เปเบฅเบฐเบœเบนเป‰เบ—เบตเปˆเบกเบตเป€เบˆเบ”เบ•เบฐเบ™เบฒ
เป€เบฅเบทเบญเบเบ—เบตเปˆเบˆเบฐเบšเปเปˆเบชเบปเบ™เปƒเบˆเบ„เปเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™.

เบ‚เปเป‰โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹ เบŠเบปเบ”เป€เบŠเบตเบเบ‚เบญเบ‡ เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบœเปˆเบญเบ™เบ„เบฒเบเปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++ เบฎเบธเปˆเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

-Wno-int-to-pointer-cast
เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เบˆเบฒเบเบ„เบฒเบชเบ—เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ•เบปเบงเบŠเบตเป‰เบ‚เบญเบ‡เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบ‚เบฐเปœเบฒเบ”เบ•เปˆเบฒเบ‡เบเบฑเบ™. เปƒเบ™
C++, เบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ•เบปเบงเบŠเบตเป‰เบ‚เบญเบ‡เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. Wint-to-pointer-cast is
เป€เบ›เบตเบ”เปƒเบŠเป‰เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-Wno-pointer-to-int-cast (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบˆเบฒเบเบเบฒเบ™เบ„เบฒเบชเบ—เบˆเบฒเบเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

-Winvalid-pch
เป€เบ•เบทเบญเบ™ เบ–เป‰เบฒเบžเบปเบšเป€เบซเบฑเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒเบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ„เบปเป‰เบ™เบซเบฒ เปเบ•เปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ™เบณเปƒเบŠเป‰เป„เบ”เป‰.

- เบเบฒเบง - เบเบฒเบง
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒ เบเบฒเบง เบเบฒเบง เบ›เบฐเป€เบžเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ—เบฑเบ‡เบชเบญเบ‡ -Wpedantic or - เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก
เปƒเบ™เป‚เปเบ” ISO C90 เปเบฅเบฐ C++ 98. เป€เบžเบทเปˆเบญเบเบฑเบšเบเบฑเป‰เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™, เปƒเบŠเป‰ -Wno-เบเบฒเบง-เบเบฒเบง.

-Wvariadic-macros
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒ macro variadic เบ–เบทเบเปƒเบŠเป‰เปƒเบ™เป‚เบซเบกเบ” ISO C90 pedantic, เบซเบผเบท syntax เบชเบณเบฎเบญเบ‡ GNU
เป€เบกเบทเปˆเบญเบขเบนเปˆเปƒเบ™เป‚เปเบ” ISO C99 pedantic. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เป€เบžเบทเปˆเบญเบเบฑเบšเบเบฑเป‰เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™, เปƒเบŠเป‰
-Wno-variadic-macros.

-Wvarargs
เป€เบ•เบทเบญเบ™เป€เบกเบทเปˆเบญเบกเบตเบ„เปเบฒเบ–เบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ macros เบ—เบตเปˆเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ•เบปเบงเปเบ›เป€เบŠเบฑเปˆเบ™
va_start. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เป€เบžเบทเปˆเบญเบเบฑเบšเบเบฑเป‰เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™, เปƒเบŠเป‰ -Wno-varargs.

-Wvector-เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™-เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” vector เบšเปเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ” SIMD เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐ.
เบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” vector เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰
"piecewise", เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ scalar เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™เบ—เบธเบ vector
เบญเบปเบ‡เบ›เบฐเบเบญเบš; "เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™", เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ vector เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰
เป€เบเบฑเบ”เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบเบงเป‰เบฒเบ‡, เป€เบŠเบดเปˆเบ‡เบ›เบปเบเบเบฐเบ•เบดเปเบกเปˆเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบ; เปเบฅเบฐ "เป€เบ›เบฑเบ™เป‚เบชเบ”
scalar", เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ vector เป€เบซเบกเบฒเบฐเบเบฑเบšเบ›เบฐเป€เบžเบ” scalar.

-Wno-virtual-move-assign
เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบทเบšเบ—เบญเบ”เบˆเบฒเบเบ–เบฒเบ™เบชเบฐเป€เปเบทเบญเบ™เบˆเบดเบ‡เบ”เป‰เบงเบเบเบฒเบ™เบเป‰เบฒเบ C++11 เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เป€เบฅเบฑเบเป†เบ™เป‰เบญเบเป†
เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒเบ–เป‰เบฒเบžเบทเป‰เบ™เบ–เบฒเบ™ virtual เปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเป„เบ”เป‰
เบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบเป‰เบฒเบเบซเบผเบฒเบเบ„เบฑเป‰เบ‡, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบงเบฑเบ”เบ–เบธเบ—เบฑเบ‡เบชเบญเบ‡เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡
เบ‚เบถเป‰เบ™โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบเป‰เบฒเบโ€‹เบญเบญเบโ€‹เบˆเบฒเบโ€‹เบฅเบฑเบ”โ€‹. เบ–เป‰เบฒเบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบเป‰เบฒเบเบ–เบทเบเบ‚เบฝเบ™เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™
เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบˆเบฒเบเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบเป‰เบฒเบเบกเบฒเบˆเบฒเบ, เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™.

-Wvla
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒ array เบ„เบงเบฒเบกเบเบฒเบงเบ•เบปเบงเปเบ›เบ–เบทเบเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”. -Wno-vla เบ›เป‰เบญเบ‡เบเบฑเบ™เป„เบ”เป‰ -Wpedantic
เป€เบ•เบทเบญเบ™เบ‚เบญเบ‡เบญเบฒเป€เบฃเบ„เบงเบฒเบกเบเบฒเบงเบ•เบปเบงเปเบ›.

-Wvolatile-register-var
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบ•เบปเบงเปเบ›เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ–เบทเบเบ›เบฐเบเบฒเบ”เบงเปˆเบฒเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบ•เบปเบงเปเบเป‰เป„เบ‚เบเบฒเบ™เบฅเบฐเป€เบซเบตเบเบšเปเปˆเป„เบ”เป‰
เบเบฑเบšเบเบฑเป‰เบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เบญเปˆเบฒเบ™เปเบฅเบฐ / เบซเบผเบทเบเบฒเบ™เบ‚เบฝเบ™เป€เบžเบทเปˆเบญเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™
เบ•เบปเบงเปเบ›. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ - เบเบฒ.

-Wdisabled-optimization
เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เปเบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›
เบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเบกเบตเบญเบฑเบ™เปƒเบ”เบœเบดเบ”เบžเบฒเบ”เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ; เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ GCC เบ‚เบญเบ‡
optimizers เบšเปเปˆเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ›เบฐเบชเบดเบ”เบ—เบดเบœเบปเบ™. เป€เบฅเบทเป‰เบญเบเป†, เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ
เบฅเบฐเบซเบฑเบ”เปƒเบซเบเปˆเป€เบเบตเบ™เป„เบ› เบซเบผเบทเบชเบฑเบšเบชเบปเบ™เป€เบเบตเบ™เป„เบ›; GCC เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบกเบตเปเบ™เบงเป‚เบ™เป‰เบกเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒ inordinate.

-Wpointer-เป€เบŠเบฑเบ™โ€‹ (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ•เบปเบงเบŠเบตเป‰เบœเปˆเบฒเบ™เบซเบผเบทเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เบฅเบปเบ‡เบ™เบฒเบกเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบš C เปเบฅเบฐ Objective-C. เบกเบฑเบ™เบซเบกเบฒเบเป€เบ–เบดเบ‡ - เบเบฒ เปเบฅเบฐเป‚เบ”เบ
-Wpedantic, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบดเบเบฒเบ™เบเบฑเบš -Wno-pointer-sign.

-Wstack-protector
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญ -stack-protector เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบกเบฑเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ
เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบต stack.

-Woverlength-strings
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเบเบฒเบงเบเบงเปˆเบฒเบ„เบงเบฒเบกเบเบฒเบง "เบชเบนเบ‡เบชเบธเบ”เบ•เปเปˆเบฒเบชเบธเบ”".
เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบง compilers เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ string เบ„เบปเบ‡เบ—เบตเปˆ
เบเบฒเบงเบเบงเปˆเบฒเบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ‚เบฑเป‰เบ™เบ•เปเปˆเบฒเบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เปเบ•เปˆเบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เปเบšเบšเบžเบปเบเบžเบฒเบซเบผเบฒเบเบ„เบงเบ™
เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เปƒเบŠเป‰เบชเบฒเบเบเบฒเบง.

เบ‚เบตเบ”เบˆเบณเบเบฑเบ”เบ™เบณเปƒเบŠเป‰ เบซเบผเบฑเบ‡เบˆเบฒเบ string concatenation เบ„เบปเบ‡เบ—เบตเปˆ, เปเบฅเบฐเบšเปเปˆเบ™เบฑเบš trailing
NUL. เปƒเบ™ C90, เบ‚เบตเบ”เบˆเปเบฒเบเบฑเบ”เปเบกเปˆเบ™ 509 เบ•เบปเบงเบญเบฑเบเบชเบญเบ™; เปƒเบ™ C99, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบเบปเบเบ‚เบถเป‰เบ™เบกเบฒเป€เบ›เบฑเบ™ 4095. C ++ 98 เบšเปเปˆ
เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเบ„เปˆเบฒเบชเบนเบ‡เบชเบธเบ”เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เบšเปเปˆเป„เบ”เป‰เบงเบดเบ™เบดเบ”เป„เบชเบชเบฒเบเป€เบŠเบทเบญเบเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบฒเบงเป€เบเบตเบ™
C++.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เป‚เบ”เบ -Wpedantic, เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบดเบเบฒเบ™เบเบฑเบš
-Wno-overlength-strings.

-Wunsuffixed-float-constants (C เปเบฅเบฐ Objective-C เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบญเบญเบเบ„เบณเป€เบ•เบทเบญเบ™เบชเบณเบฅเบฑเบšเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบฅเบญเบเบ•เบปเบงเบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เปเปˆเบ—เป‰เบฒเบ. เป€เบกเบทเปˆเบญเปƒเบŠเป‰
เบžเป‰เบญเบกเบ”เป‰เบงเบ -Wsystem-headers เบกเบฑเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.
เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เป€เบงเบฅเบฒเบเบฐเบเบฝเบกเบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบเบฑเบš "FLOAT_CONST_DECIMAL64" pragma
เบˆเบฒเบเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบˆเบธเบ”เป€เบฅเบทเปˆเบญเบ™เป€เบฅเบเบ–เบฒเบ™เบชเบดเบšเบซเบฒ C99.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ Debugging เบ‚เบญเบ‡เบ—เปˆเบฒเบ™ เป‚เบ„เบ‡เบเบฒเบ™ or GCC
GCC เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบžเบดเป€เบชเบ”เบ•เปˆเบฒเบ‡เป†เบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เบตเบšเบฑเบเบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™เบซเบผเบท GCC เบ‚เบญเบ‡เบ—เปˆเบฒเบ™:

-g เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™ debugging เปƒเบ™เบฎเบนเบšเปเบšเบšเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ (stabs, COFF,
XCOFF, เบซเบผเบท DWARF 2). GDB เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเบ™เบตเป‰.

เปƒเบ™เบฅเบฐเบšเบปเบšเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ—เบตเปˆเปƒเบŠเป‰เบฎเบนเบšเปเบšเบš stabs, -g เป€เบ›เบตเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆ GDB เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰; เบ‚เปเป‰เบกเบนเบ™เบžเบดเป€เบชเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ”เบตเบšเบฑเบเป€เบฎเบฑเบ”เบงเบฝเบเบ”เบตเบ‚เบถเป‰เบ™เปƒเบ™ GDB เปเบ•เปˆ
เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ debuggers เบญเบทเปˆเบ™เป†เบ‚เบฑเบ”เบ‚เป‰เบญเบ‡เบซเบผเบทเบ›เบฐเบ•เบดเป€เบชเบ”เบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™
เบเบฒเบ™โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เปเบ™เปˆโ€‹เบ™เบญเบ™โ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เบชเป‰เบฒเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹, เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ -gstabs+, -gstabs,
-gxcoff+, -gxcoff, เบซเบผเบท -gvms (เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบก).

GCC เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เปƒเบŠเป‰ -g เบเบฑเบš -O. เบ—เบฒเบ‡เบฅเบฑเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบญเบฒเบ”เบˆเบฐ
เป€เบ›เบฑเบ™เบšเบฒเบ‡เป‚เบญเบเบฒเบ”เบชเป‰เบฒเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบซเบ™เป‰เบฒเบ›เบฐเบซเบฅเบฒเบ”เปƒเบˆ: เบšเบฒเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ›เบฐเบเบฒเบ”เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบกเบตเบขเบนเปˆ
เบ—เบฑเบ‡เปเบปเบ”; เบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบญเบฒเบ”เบˆเบฐเป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป„เบฅเบเบฐเบชเบฑเป‰เบ™เป†เบ—เบตเปˆเบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เบ„เบฒเบ”เบซเบงเบฑเบ‡; เบšเบฒเบ‡เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบญเบฒเบ”เบˆเบฐ
เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ„เบดเบ”เป„เบฅเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ„เบปเบ‡เบ—เบตเปˆเบซเบผเบทเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆเบ—เบตเปˆเปเบฅเป‰เบง
เบกเบท; เบšเบฒเบ‡เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ•เปˆเบฒเบ‡เป†เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบเป‰เบฒเบเบญเบญเบเป„เบ›
เบ‚เบญเบ‡ loops.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เบžเบดเบชเบนเบ”เป„เบ”เป‰เบงเปˆเบฒเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐ debug เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™
เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบกเบตเบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบกเบทเปˆเบญ GCC เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบซเบผเบฒเบเบเปˆเบงเบฒเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ”เบตเบšเบฑเบ.

-gsplit-dwarf
เปเบเบเบ‚เปเป‰เบกเบนเบ™ debugging dwarf เบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ
เบ”เป‰เบงเบเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ .dwo. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบŸเบฅเปŒ
เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ”เบตเบšเบฑเบ. เป€เบžเบทเปˆเบญเปƒเบซเป‰เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”, เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบปเบงเบ”เบตเบšเบฑเบเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”
เบญเปˆเบฒเบ™เป„เบŸเบฅเปŒ .dwo.

-ggdb
เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเป€เบžเบทเปˆเบญเปƒเบŠเป‰เป‚เบ”เบ GDB. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบชเบธเบ”
เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบกเบตเบขเบนเปˆ (DWARF 2, stabs, เบซเบผเบทเบฎเบนเบšเปเบšเบšเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบ–เป‰เบฒเบšเปเปˆเบกเบตเบ—เบฑเบ‡เบชเบญเบ‡เบญเบฑเบ™
เบฎเบญเบ‡เบฎเบฑเบš), เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ GDB เบ–เป‰เบฒเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰.

-gpubnames
เบชเป‰เบฒเบ‡เบžเบฒเบเบชเปˆเบงเบ™ .debug_pubnames dwarf เปเบฅเบฐ .debug_pubtypes.

-ggnu-pubnames
เบชเป‰เบฒเบ‡เบžเบฒเบเบชเปˆเบงเบ™ .debug_pubnames เปเบฅเบฐ .debug_pubtypes เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเป€เปเบฒเบฐเบชเบปเบกเบเบฑเบš
เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ”เบฑเบ”เบŠเบฐเบ™เบต GDB. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบกเบตเบ›เบฐเป‚เบซเบเบ”เบžเบฝเบ‡เปเบ•เปˆเบเบฑเบšเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบชเบฒเบกเบฒเบ”
เบœเบฐเบฅเบดเบ”เบ”เบฑเบ”เบŠเบฐเบ™เบต GDB เบฎเบธเปˆเบ™ 7.

-gstabs
เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™ debugging เปƒเบ™เบฎเบนเบšเปเบšเบš stabs (เบ–เป‰เบฒเบกเบฑเบ™เบ–เบทเบเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™), เป‚เบ”เบเบšเปเปˆเบกเบต GDB
เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบ DBX เปƒเบ™เบฅเบฐเบšเบปเบš BSD เบชเปˆเบงเบ™เปƒเบซเบเปˆ. เปƒเบ™ MIPS, Alpha เปเบฅเบฐ
System V Release 4 เบฅเบฐเบšเบปเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบœเบฐเบฅเบดเบ” stabs debugging output เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™
เป€เบ‚เบปเป‰เบฒเปƒเบˆเป‚เบ”เบ DBX เบซเบผเบท SDB. เปƒเบ™ System V Release 4 เบฅเบฐเบšเบปเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™ GNU
เบœเบนเป‰เบ›เบฐเบเบญเบš.

-feliminate-unused-debug-เบชเบฑเบ™เบเบฒเบฅเบฑเบ
เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™ debugging เปƒเบ™เบฎเบนเบšเปเบšเบš stabs (เบ–เป‰เบฒเบ™เบฑเป‰เบ™เบ–เบทเบเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™), เบชเปเบฒเบฅเบฑเบšเบชเบฑเบ™เบเบฒเบฅเบฑเบเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบˆเบดเบ‡.

-femit-class-debug-เบชเบฐเป€เปเบต
เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ›เปˆเบญเบโ€‹เบญเบญเบโ€‹เบกเบฒโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบซเป‰เบญเบ‡ C ++ เปƒเบ™โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹,
เบ›เปˆเบญเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบฑเบ‡เปเบปเบ”เป‚เบ”เบเปƒเบŠเป‰เบซเป‰เบญเบ‡เบฎเบฝเบ™. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบเบฑเบš
debugger เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™ GCC เบ›เบปเบเบเบฐเบ•เบดเบ›เปˆเบญเบเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ
เบชเปเบฒเบฅเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบžเบตเปˆเบกเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เปเบเป‰เบšเบฑเบ™เบซเบฒเป‚เบ”เบ
เบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฑเบ”เป„เบˆเบ‚เบญเบ‡เบชเบญเบ‡.

-fdebug-types-section
เป€เบกเบทเปˆเบญเปƒเบŠเป‰ DWARF เบฎเบธเปˆเบ™ 4 เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ, เบ›เบฐเป€เบžเบ” DIEs เบชเบฒเบกเบฒเบ”เบ–เบทเบเปƒเบชเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡
เบžเบฒเบเบชเปˆเบงเบ™ ".debug_types" เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบžเบฒเบ ".debug_info". เบกเบฑเบ™
เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ‚เบถเป‰เบ™เปƒเบ™เบเบฒเบ™เบงเบฒเบ‡เบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™ comdat เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบฒเบกเบฒเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™
เป€เบญเบปเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบŠเปเป‰เบฒเบเบฑเบ™. เปเบ•เปˆเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ DWARF เบ—เบฑเบ‡เปเบปเบ”เบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเบžเบฒเบเบชเปˆเบงเบ™ ".debug_types" เป€เบ—เบทเปˆเบญ
เปเบฅเบฐเปƒเบ™เบšเบฒเบ‡เบงเบฑเบ”เบ–เบธ ".debug_types" เบœเบฐเบฅเบดเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ
เบ‚เปเป‰เบกเบนเบ™เบ‚เปˆเบฒเบงเบชเบฒเบ™.

-gstabs+
เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™ debugging เปƒเบ™เบฎเบนเบšเปเบšเบš stabs (เบ–เป‰เบฒเบกเบฑเบ™เบ–เบทเบเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™), เป‚เบ”เบเปƒเบŠเป‰ GNU
เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบžเบฝเบ‡เปเบ•เปˆเป‚เบ”เบ GNU debugger (GDB). เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™
เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ debugger เบญเบทเปˆเบ™เป†เบ‚เบฑเบ”เบ‚เป‰เบญเบ‡ เบซเบผเบทเบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบญเปˆเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™.

-gcoff
เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™ debugging เปƒเบ™เบฎเบนเบšเปเบšเบš COFF (เบ–เป‰เบฒเบงเปˆเบฒเบ™เบฑเป‰เบ™เบ–เบทเบเบฎเบญเบ‡เบฎเบฑเบš). เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบ SDB เปƒเบ™เบฅเบฐเบšเบปเบš V เบชเปˆเบงเบ™เปƒเบซเบเปˆเบเปˆเบญเบ™ System V Release 4.

-gxcoff
เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™ debugging เปƒเบ™เบฎเบนเบšเปเบšเบš XCOFF (เบ–เป‰เบฒเบงเปˆเบฒเบ™เบฑเป‰เบ™เบ–เบทเบเบฎเบญเบ‡เบฎเบฑเบš). เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบ DBX debugger เปƒเบ™เบฅเบฐเบšเบปเบš IBM RS/6000.

-gxcoff+
เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™ debugging เปƒเบ™เบฎเบนเบšเปเบšเบš XCOFF (เบ–เป‰เบฒเบงเปˆเบฒเบ™เบฑเป‰เบ™เบ–เบทเบเบฎเบญเบ‡เบฎเบฑเบš), เป‚เบ”เบเปƒเบŠเป‰ GNU
เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบžเบฝเบ‡เปเบ•เปˆเป‚เบ”เบ GNU debugger (GDB). เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™
เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ debugger เบญเบทเปˆเบ™เบ‚เบฑเบ”เบ‚เป‰เบญเบ‡ เบซเบผเบทเบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบญเปˆเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™, เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”
เป€เบ„เบทเปˆเบญเบ‡เบ›เบฐเบเบญเบšเบญเบทเปˆเบ™เบ™เบญเบเป€เปœเบทเบญเป„เบ›เบˆเบฒเบเบ•เบปเบงเบ›เบฐเบเบญเบš GNU (GAS) เบฅเบปเป‰เบกเป€เบซเบฅเบงเบ”เป‰เบงเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

-gdwarf-เบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒ
เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเปƒเบ™เบฎเบนเบšเปเบšเบš DWARF (เบ–เป‰เบฒเบญเบฑเบ™เบ™เบฑเป‰เบ™เบ–เบทเบเบฎเบญเบ‡เบฎเบฑเบš). เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡
เบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒ เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™ 2, 3 เบซเบผเบท 4; เบชเบฐเบšเบฑเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™ 4.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ”เป‰เบงเบ DWARF เป€เบงเบตเบŠเบฑเปˆเบ™ 2, เบšเบฒเบ‡เบžเบญเบ”เบ•เป‰เบญเบ‡เบเบฒเบ™ เปเบฅเบฐเปƒเบŠเป‰เบšเบฒเบ‡เบญเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบ‚เบฑเบ”เบเบฑเบ™เบชเบฐเป€เปเบต
เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ DWARF 3 เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ unwind.

เป€เบงเบตเบŠเบฑเปˆเบ™ 4 เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™ GDB 7.0 เปเบฅเบฐ -fvar-tracking-assignments เป€เบžเบทเปˆเบญเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบชเบนเบ‡เบชเบธเบ”.

-grecord-gcc-เบชเบฐเบซเบผเบฑเบš
เบชเบฐเบงเบดเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบญเบตเป‰เบ™ compiler เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐ
เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบˆเบฐเปƒเบชเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบšเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ DW_AT_producer เปƒเบ™ DWARF
เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™ concatenated เบเบฑเบšเบŠเปˆเบญเบ‡เบ—เบตเปˆเปเบเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบญเบญเบเบˆเบฒเบ
เป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เปเบฅเบฐเบˆเบฒเบเบชเบฐเบšเบฑเบš compiler. เป€เบšเบดเปˆเบ‡เบ™เบณ -frecord-gcc-เบชเบฐเบซเบผเบฑเบš เบชเปเบฒเบฅเบฑเบšเบ„เบปเบ™เบญเบทเปˆเบ™
เบงเบดเบ—เบตเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ•เบปเบงเป€เบฅเบทเบญเบ compiler เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-gno-record-gcc-switches
เบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบžเบตเปˆเบกเบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เบณเบชเบฑเปˆเบ‡เปƒเบชเปˆเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ DW_AT_producer เปƒเบ™ DWARF
เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ.

-gstrict-dwarf
เบšเปเปˆโ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบชเปˆเบงเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบกเบฒเบ”โ€‹เบ•เบฐโ€‹เบ–เบฒเบ™ DWARF เบ•เปเปˆโ€‹เบกเบฒโ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเบญเบโ€‹เบ”เป‰เบงเบ
-gdwarf-เบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒ. เปƒเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเปˆเบงเบ™เปƒเบซเบเปˆเป‚เบ”เบเปƒเบŠเป‰เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ DWARF เบ—เบตเปˆเบšเปเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡เบˆเบฒเบเบ•เปเปˆเบกเบฒ
เบชเบฐเบšเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”.

-gno-strict-dwarf
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบชเปˆเบงเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบกเบฒเบ”โ€‹เบ•เบฐโ€‹เบ–เบฒเบ™ DWARF เบ•เปเปˆโ€‹เบกเบฒโ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเบญเบโ€‹เบ”เป‰เบงเบ
-gdwarf-เบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒ.

-gvms
เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ”เบตเบšเบฑเบ Alpha/VMS (เบ–เป‰เบฒเบญเบฑเบ™เบ™เบฑเป‰เบ™เบ–เบทเบเบฎเบญเบ‡เบฎเบฑเบš). เบ™เบตเป‰
เปเบกเปˆเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบ DEBUG เปƒเบ™เบฅเบฐเบšเบปเบš Alpha/VMS.

-gเบฅเบฐเบ”เบฑเบš
-ggdbเบฅเบฐเบ”เบฑเบš
-gstabsเบฅเบฐเบ”เบฑเบš
-gcoffเบฅเบฐเบ”เบฑเบš
-gxcoffเบฅเบฐเบ”เบฑเบš
-gvmsเบฅเบฐเบ”เบฑเบš
เบ‚เปเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ เปเบฅเบฐเบเบฑเบ‡เปƒเบŠเป‰ เบฅเบฐเบ”เบฑเบš เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”. เป„เบ”เป‰
เบฅเบฐเบ”เบฑเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 2.

เบฅเบฐเบ”เบฑเบš 0 เบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ”เบตเบšเบฑเปŠเบเป€เบฅเบตเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, -g0 เบ›เบฐเบ•เบดเป€เบชเบ” -g.

เบฅเบฐเบ”เบฑเบš 1 เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™เบซเบ™เป‰เบญเบ, เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰ backtraces เปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡
เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐ debug. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐ
เบ•เบปเบงเปเบ›เบžเบฒเบเบ™เบญเบ, เปเบฅเบฐเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ•เบปเบงเป€เบฅเบ, เปเบ•เปˆเบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™.

เบฅเบฐเบ”เบฑเบš 3 เบ›เบฐเบเบญเบšเบกเบตเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เป€เบŠเบฑเปˆเบ™: เบ™เบดเบเบฒเบกเบกเบฐเบซเบฒเบžเบฒเบเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™
เป‚เบ„เบ‡เบเบฒเบ™. เบšเบฒเบ‡เบ•เบปเบงเบ”เบตเบšเบฑเบเบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบกเบฐเบซเบฒเบžเบฒเบเป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เปƒเบŠเป‰ -g3.

-gdwarf-2 เบšเปเปˆเบเบญเบกเบฎเบฑเบšเบฅเบฐเบ”เบฑเบšเบ”เบตเบšเบฑเปŠเบเบ—เบตเปˆเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ GCC เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -gdwarf เบ™เบฑเป‰เบ™เปเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ”เบตเบšเบฑเบเปƒเบ™เป€เบงเบตเบŠเบฑเบ™ 1 เบ‚เบญเบ‡ DWARF
เบฎเบนเบšเปเบšเบš (เป€เบŠเบดเปˆเบ‡เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเบˆเบฒเบเบฎเบธเปˆเบ™ 2), เปเบฅเบฐเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบชเบฑเบšเบชเบปเบ™เป€เบเบตเบ™เป„เบ›.
เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ”เบตโ€‹เบšเบฑเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบฅเป‰เบฒโ€‹เบชเบฐโ€‹เป„เปโ€‹เบ”เบปเบ™โ€‹เบ™เบฒเบ™, เปเบ•เปˆโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ›เปˆเบฝเบ™โ€‹เป„เบ”เป‰โ€‹เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰
เป€เบžเบตเปˆเบกเป€เบ•เบตเบก -gเบฅเบฐเบ”เบฑเบš เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เบฅเบฐเบ”เบฑเบšเบ”เบตเบšเบฑเบเบชเปเบฒเบฅเบฑเบš DWARF.

-gtoggle
เบ›เบดเบ”เบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ”เบตเบšเบฑเปŠเบ, เบ–เป‰เบฒเบญเบญเบเบˆเบฒเบเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบˆเบฐเบชเป‰เบฒเบ‡เบกเบฑเบ™, เบซเบผเบทเป€เบ›เบตเบ”เบกเบฑเบ™
เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš 2 เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™. เบ•เปเบฒเปเบซเบ™เปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบšเปเปˆเป„เบ”เป‰
เป€เบฅเบทเปˆเบญเบ‡; เบกเบฑเบ™โ€‹เบกเบตโ€‹เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบšโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบญเบทเปˆเบ™เป†โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹, เปเบฅเบฐโ€‹เบกเบฑเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เป„เบ”เป‰โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹
เบ„เบฑเป‰เบ‡เบ”เบฝเบง, เบšเปเปˆเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเปƒเบซเป‰เบˆเบฑเบเป€เบ—เบทเปˆเบญ. เบ™เบตเป‰เปเบกเปˆเบ™เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ•เบปเป‰เบ™เบ•เปเป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบš
-fcompare-debug.

-fsanitize=เบ—เบตเปˆเบขเบนเปˆ
เป€เบ›เบตเบ”เปƒเบŠเป‰ AddressSanitizer, เป€เบ„เบทเปˆเบญเบ‡เบเบงเบ”เบˆเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ„เบงเบฒเบกเบˆเบณเป„เบง. เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ
เบˆเบฐเบ–เบทเบเบ™เบณเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเบงเบ”เบซเบฒเบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เบ—เบตเปˆเบขเบนเปˆเบ™เบญเบเบ‚เบญเบšเป€เบ‚เบ” เปเบฅเบฐเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบžเบฒเบเบซเบผเบฑเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡. เป€เบšเบดเปˆเบ‡
<http://code.google.com/p/address-sanitizer/> เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบžเบถเบ”เบ•เบดเบเบณเป€เบงเบฅเบฒเปเบฅเปˆเบ™
เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบญเบดเบ”เบ—เบดเบžเบปเบ™เป‚เบ”เบเปƒเบŠเป‰ ASAN_OPTIONS เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ›เปˆเบฝเบ™เปเบ›เบ‡; เป€เบšเบดเปˆเบ‡
<https://code.google.com/p/address-sanitizer/wiki/Flags#Run-time_flags> เบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹.

-fsanitize=kernel-address
เป€เบ›เบตเบ”เปƒเบŠเป‰ AddressSanitizer เบชเปเบฒเบฅเบฑเบš Linux kernel. เป€เบšเบดเปˆเบ‡
<http://code.google.com/p/address-sanitizer/wiki/AddressSanitizerForKernel> เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบฅเบฒเบเบฅเบฐเบญเบฝเบ”.

-fsanitize=เบเบฐเบ—เบนเป‰
เป€เบ›เบตเบ”เปƒเบŠเป‰ ThreadSanitizer, เป€เบ„เบทเปˆเบญเบ‡เบเบงเบ”เบˆเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบŠเบทเป‰เบญเบŠเบฒเบ”เป„เบง. เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบˆเบฐเป€เบ›เบฑเบ™
เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹เป€เบžเบทเปˆเบญโ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป€เบŠเบทเป‰เบญโ€‹เบŠเบฒเบ”โ€‹เปเบกเบ‡โ€‹เป„เบกเป‰โ€‹. เป€เบšเบดเปˆเบ‡
<http://code.google.com/p/thread-sanitizer/> เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบžเบถเบ”เบ•เบดเบเบณเป€เบงเบฅเบฒเปเบฅเปˆเบ™
เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบญเบดเบ”เบ—เบดเบžเบปเบ™เป‚เบ”เบเปƒเบŠเป‰ TSAN_OPTIONS เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ›เปˆเบฝเบ™เปเบ›เบ‡; เป€เบšเบดเปˆเบ‡
<https://code.google.com/p/thread-sanitizer/wiki/Flags> เบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™
เบ•เบปเบงเป€เบฅเบทเบญเบ

-fsanitize=เบฎเบปเปˆเบง
เป€เบ›เบตเบ”เปƒเบŠเป‰ LeakSanitizer, เป€เบ„เบทเปˆเบญเบ‡เบเบงเบ”เบˆเบฑเบšเบ„เบงเบฒเบกเบˆเบณเบฎเบปเปˆเบง. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบญเบ‡
เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰ เปเบฅเบฐเบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™ -fsanitize=เบ—เบตเปˆเบขเบนเปˆ neither -fsanitize=เบเบฐเบ—เบนเป‰ เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เปƒเบ™โ€‹เบ™เบฑเป‰เบ™
เบเปเบฅเบฐเบ™เบตเบกเบฑเบ™เบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆ overrides "malloc" เปเบฅเบฐเบญเบทเปˆเบ™เป†
เบซเบ™เป‰เบฒเบ—เบตเปˆเบœเบนเป‰เบˆเบฑเบ”เบชเบฑเบ™. เป€เบšเบดเปˆเบ‡
<https://code.google.com/p/address-sanitizer/wiki/LeakSanitizer> เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.
เบžเบถเบ”เบ•เบดเบเปเบฒเบเบฒเบ™เปเบฅเปˆเบ™เป€เบงเบฅเบฒเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบญเบดเบ”เบ—เบดเบžเบปเบ™เป‚เบ”เบเปƒเบŠเป‰ LSAN_OPTIONS environment variable

-fsanitize=เบšเปเปˆเป„เบ”เป‰เบเบณเบ™เบปเบ”
เป€เบ›เบตเบ”เปƒเบŠเป‰ UndefinedBehaviorSanitizer, เป€เบ„เบทเปˆเบญเบ‡เบเบงเบ”เบˆเบฑเบšเบžเบถเบ”เบ•เบดเบเบณเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเบณเบ™เบปเบ”เป„เบง. เบ•เปˆเบฒเบ‡เป†
เบเบฒเบ™โ€‹เบ„เบดเบ”โ€‹เป„เบฅเปˆโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹เป€เบžเบทเปˆเบญโ€‹เบเบงเบ”โ€‹เบžเบปเบšโ€‹เบžเบถเบ”โ€‹เบ•เบดโ€‹เบเปเบฒโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบขเบนเปˆโ€‹เปƒเบ™ runtimeโ€‹. เบ›เบฐเบˆเบธเบšเบฑเบ™
เบ•เบปเบงเป€เบฅเบทเบญเบเบเปˆเบญเบเปเบกเปˆเบ™:

-fsanitize=shift
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบงเปˆเบฒโ€‹เบœเบปเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เปเบกเปˆเบ™โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹
เบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™เปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ
เบฅเบฐเบซเบงเปˆเบฒเบ‡ C เปเบฅเบฐ C ++, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡ ISO C90 เปเบฅเบฐ C99, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

-fsanitize=integer-divide-by-zero
เบเบงเบ”เบžเบปเบšเบเบฒเบ™เบซเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบ”เป‰เบงเบเบชเบนเบ™เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบซเบฒเบ™ "INT_MIN / -1".

-fsanitize=เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰
เบ”เป‰เบงเบเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰, เบ•เบปเบงเบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบ›เปˆเบฝเบ™เบเบฒเบ™เป‚เบ— "__builtin_unreachable" เปƒเบซเป‰เป€เบ›เบฑเบ™
เป‚เบ—เบซเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเปเบ—เบ™. เป€เบกเบทเปˆเบญเป€เบ–เบดเบ‡เบเบฒเบ™เป‚เบ— "__builtin_unreachable",
เบžเบถเบ”เบ•เบดเบเปเบฒเปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”.

-fsanitize=vla-bound
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบฑเปˆเบ‡เปƒเบซเป‰ compiler เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบเบฒเบงเบ•เบปเบงเปเบ›
array เป€เบ›เบฑเบ™เบšเบงเบ. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเบกเบตเบœเบปเบ™เปƒเบ”เป†เปƒเบ™ -std=c++1y เบฎเบนเบšเปเบšเบš, เป€เบ›เบฑเบ™
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ–เบทเบเบ–เบดเป‰เบกเปเบ—เบ™.

-fsanitize=null
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ•เบปเบงเบŠเบตเป‰. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบ”เป‰เบงเบ
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เป€เบ›เบตเบ”โ€‹เบˆเบฐโ€‹เบญเบญเบโ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบกเบฑเบ™โ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐ dereference a
เบ•เบปเบงเบŠเบตเป‰ NULL, เบซเบผเบทเบ–เป‰เบฒเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡ (เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡ rvalue) เบ–เบทเบเบœเบนเบเบกเบฑเบ”เบเบฑเบš NULL
เบ•เบปเบงเบŠเบตเป‰.

-fsanitize=เบเบฑเบšเบ„เบทเบ™
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเบšเปเบˆเป‰เบ‡เบเบญเบ”เบเบฑเบšเบ„เบทเบ™. เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบ”เป‰เบงเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰
เป€เบ›เบตเบ”เบˆเบฐเบญเบญเบเบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ void เปเบกเปˆเบ™
เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เบชเบปเปˆเบ‡เบ„เบทเบ™เบ„เปˆเบฒเบ•เบปเบงเบˆเบดเบ‡. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ C ++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

-fsanitize=signed-integer-overflow
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบฅเบปเป‰เบ™เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเป€เบŠเบฑเบ™เปเบฅเป‰เบง. เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡
"+", "*", เปเบฅเบฐเบ—เบฑเบ‡ unary เปเบฅเบฐ binary "-" เบšเปเปˆ overflow เปƒเบ™เป€เบŠเบฑเบ™
เป€เบฅเบเบ„เบฐเบ™เบดเบ”เบชเบฒเบ”. เปเบฒเบเป€เบซเบ”, เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ. เบ™เบฑเป‰เบ™โ€‹เปเบกเปˆเบ™,
เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™ overflow:

เป€เบŠเบฑเบ™ char a = SCHAR_MAX;
a++;

เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ -ftrapv เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฑเบšโ€‹เบ”เบฑเบโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™ overflows เป„เบ”เป‰โ€‹เบฅเบปเบ‡โ€‹เบ™เบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ–เบทเบโ€‹เบ›เปˆเบญเบโ€‹เบญเบญเบโ€‹เบกเบฒโ€‹, -fsanitize=เบšเปเปˆเป„เบ”เป‰เบเบณเบ™เบปเบ”
เปƒเบซเป‰เบ‚เปเป‰เบ„เบงเบฒเบกเบงเบดเบ™เบดเบ”เป„เบช. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ™เบตเป‰เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบšเบžเบฒเบชเบฒ C เบ„เบญเบšเบ„เบปเบงเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

-fdump-final-insns[=เป€เบญเบเบฐเบชเบฒเบ™]
เบ–เบดเป‰เบกเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบžเบฒเบเปƒเบ™เบชเบธเบ”เบ—เป‰เบฒเบ (RTL) เป„เบ› เป€เบญเบเบฐเบชเบฒเบ™. เบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™
เบ–เบทเบเบฅเบฐเป€เบงเบฑเป‰เบ™ (เบซเบผเบทเบ–เป‰เบฒ เป€เบญเบเบฐเบชเบฒเบ™ เปเบกเปˆเบ™ "."), เบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒ dump เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
".gkd" เปƒเบชเปˆเบŠเบทเปˆเป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.

-fcompare-debug[=เป€เบฅเบทเบญเบ]
เบ–เป‰เบฒเบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เป€เบ›เบฑเบ™เบ„เบฑเป‰เบ‡เบ—เบตเบชเบญเบ‡, เป€เบžเบตเปˆเบก เป€เบฅเบทเบญเบ เปเบฅเบฐ
-fcompare-debug-เบงเบดเบ™เบฒเบ—เบต เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เป„เบ›เบซเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ—เบตเบชเบญเบ‡. เบ–เบดเป‰เบก
เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบžเบฒเบเปƒเบ™เบชเบธเบ”เบ—เป‰เบฒเบเปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ—เบฑเบ‡เบชเบญเบ‡, เปเบฅเบฐเบžเบดเบกเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบ–เป‰เบฒเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เบ–เบทเบเบฅเบฐเป€เบงเบฑเป‰เบ™, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ -gtoggle เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰ GCC_COMPARE_DEBUG, เบ–เป‰เบฒเบเปเบฒเบ™เบปเบ”, เบšเปเปˆเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเปเบฅเบฐเบšเปเปˆเบชเบนเบ™,
implicitly เป€เบ›เบตเบ”เปƒเบŠเป‰ -fcompare-debugเบ—เบตเปˆเบขเบนเปˆ เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ GCC_COMPARE_DEBUG เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™เบชเบฐเบ•เบฃเบดเบ‡
เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ dash, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš เป€เบฅเบทเบญเบ, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ -gtoggle is
เปƒเบŠเป‰เปเบฅเป‰เบง.

-fcompare-debug=, เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เปเบ•เปˆเบšเปเปˆเบกเบต เป€เบฅเบทเบญเบ, เป€เบ—เบปเปˆเบฒเบเบฑเบš
-fno-compare-debug, เป€เบŠเบดเปˆเบ‡เบ›เบดเบ”เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ‚เบญเบ‡เบ•เบปเบงเปเบ—เบ™เบชเบธเบ”เบ—เป‰เบฒเบเปเบฅเบฐ
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ—เบตเบชเบญเบ‡, เบ›เป‰เบญเบ‡เบเบฑเบ™เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ GCC_COMPARE_DEBUG เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบกเบตโ€‹เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบšโ€‹.

เป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ -fcompare-debug เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹, เบเปเบฒโ€‹เบ™เบปเบ”โ€‹ GCC_COMPARE_DEBUG เป€เบงเบปเป‰เบฒ
-fcompare-debug-not-overridden, เป€เบŠเบดเปˆเบ‡ GCC เบ›เบฐเบ•เบดเป€เบชเบ”เบงเปˆเบฒเป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™เบ•เบปเบงเบˆเบดเบ‡เปƒเบ”เป†
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก (เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบเปˆเบงเบฒเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™, เบเบฒเบ™เบ›เบฐเบเบญเบšเบซเบผเบทเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡). เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž,
เบ•เบฑเป‰เบ‡ GCC_COMPARE_DEBUG to -w%n-fcompare-debug เบšเปเปˆ เบ–เบทเบเบเบปเบเป€เบฅเบตเบ เบˆเบฐโ€‹เป€เบฎเบฑเบ”.

-fcompare-debug-เบงเบดเบ™เบฒเบ—เบต
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™ implicitly เบเบฑเบš compiler เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ—เบตเบชเบญเบ‡เบฎเป‰เบญเบ‡เบ‚เป
by -fcompare-debug, เบžเป‰เบญเบกเบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบ›เบดเบ”เบชเบฝเบ‡เบเบฒเบ™เป€เบ•เบทเบญเบ™, เปเบฅเบฐเบเบฒเบ™เบฅเบฐเป€เบงเบฑเป‰เบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™
เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบœเบปเบ™เบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡เบ‚เบญเบ‡ compiler outputs เบเบฑเบšเป„เบŸเบฅเปŒเบซเบผเบทเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.
เป„เบŸเบฅเปŒ Dump เปเบฅเบฐเป„เบŸเบฅเปŒเบŠเบปเปˆเบงเบ„เบฒเบงเบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เบŠเบทเปˆเป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบต ".gk"
เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ—เบตเบชเบญเบ‡, เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ‚เบฝเบ™เบ—เบฑเบšเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™
เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”.

เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบปเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เบเบฑเบšโ€‹เป„เบ”โ€‹เป€เบงเบต compilerโ€‹, เบกเบฑเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เป€เบเบตเบ”โ€‹เบเบฒเบ™โ€‹ เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ” เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฑเบš
เบ‚เป‰เบฒเบกเป„เบ›, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบทเปˆเบ™เบ™เบญเบเบˆเบฒเบเบเบฒเบ™ debugging compiler เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก.

-feliminate-dwarf2-dups
เบšเบตเบšเบญเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ DWARF 2 เป‚เบ”เบเบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบŠเปเป‰เบฒเบเบฑเบ™เบเปˆเบฝเบงเบเบฑเบš
เปเบ•เปˆเบฅเบฐเบชเบฑเบ™เบเบฒเบฅเบฑเบ. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบเบฒเบ™เบ”เบตเบšเบฑเบ DWARF 2
เบ‚เปเป‰เบกเบนเบ™เบเบฑเบš -gdwarf-2.

-femit-struct-debug-baseonly
เบ›เปˆเบญเบเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเปŠเบเบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเป€เบกเบทเปˆเบญเบŠเบทเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡
เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบปเบ‡เบเบฑเบšเบŠเบทเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ–เบทเบเบเปเบฒเบ™เบปเบ”.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบซเบผเบธเบ”เบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™ debugging, เปเบ•เปˆเบงเปˆเบฒเบขเบนเปˆเบ—เบตเปˆ
เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ—เบตเปˆเบญเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปƒเบ™เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเป€เบžเบ”เบ•เปเปˆเบเบฑเบšเบ•เบปเบงเบ”เบตเบšเบฑเบ. เป€เบšเบดเปˆเบ‡
-femit-struct-debug-เบซเบผเบธเบ”เบฅเบปเบ‡ เบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เบซเบ™เป‰เบญเบ. เป€เบšเบดเปˆเบ‡
-femit-struct-debug-เบฅเบฒเบเบฅเบฐเบญเบฝเบ” เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบš DWARF 2 เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

-femit-struct-debug-เบซเบผเบธเบ”เบฅเบปเบ‡
เบ›เปˆเบญเบเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเปŠเบเบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเป€เบกเบทเปˆเบญเบŠเบทเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡
เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบปเบ‡เบเบฑเบšเบŠเบทเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบ›เบฐเป€เบžเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”,
เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปเบกเปˆเบ™เปเบกเปˆเปเบšเบšเบซเบผเบทเบเปเบฒเบ™เบปเบ”เบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบซเบผเบธเบ”เบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™ debugging, เบกเบตเบšเบฒเบ‡
เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเป€เบžเบ”เบ•เปเปˆเบเบฑเบšเบ•เบปเบงเบ”เบตเบšเบฑเบ. เป€เบšเบดเปˆเบ‡ -femit-struct-debug-baseonly
เบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบ. เป€เบšเบดเปˆเบ‡ -femit-struct-debug-เบฅเบฒเบเบฅเบฐเบญเบฝเบ” เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบ„เบงเบšเบ„เบธเบก.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบš DWARF 2 เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

-femit-struct-debug-เบฅเบฒเบเบฅเบฐเบญเบฝเบ”[=เบฅเบฒเบเบŠเบทเปˆเบชเบฐเป€เบžเบฒเบฐ]
เบฅเบฐเบšเบธเบ›เบฐเป€เบžเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆ compiler เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ”เบตเบšเบฑเบ. เป„เบ”เป‰
เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบŠเป‰เปเบฒเบเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™
เบžเบฒเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบšเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡ -femit-struct-debug-เบซเบผเบธเบ”เบฅเบปเบ‡ เปเบฅเบฐ
-femit-struct-debug-baseonly, เป€เบŠเบดเปˆเบ‡เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”.

เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเป€เบžเบฒเบฐเบกเบต syntax [เปเบกเปˆเบ™:|ind:][เบ„เปเบฒเบชเบฑเปˆเบ‡:|gen:](เปƒเบ”|sys|เบ–เบฒเบ™|none)

เบ„เปเบฒเบ—เปเบฒเบญเบดเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบชเบฐเป€เบžเบฒเบฐเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบเบปเบ‡
(เปเบกเปˆเบ™:) เบซเบผเบทโ€‹เปƒเบŠเป‰โ€‹เป‚เบ”เบโ€‹เบ—เบฒเบ‡โ€‹เบญเป‰เบญเบก (ind:). เบ›เบฐเป€เบžเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปเบกเปˆเบ™เปƒเบŠเป‰เป‚เบ”เบเบเบปเบ‡เป€เบกเบทเปˆเบญเบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”
เบ‚เบญเบ‡เบ•เบปเบงเปเบ›, เบชเบฐเบกเบฒเบŠเบดเบ. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เบญเป‰เบญเบกเป€เบเบตเบ”เบ‚เบทเป‰เบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡. เบ™เบฑเป‰เบ™โ€‹เปเบกเปˆเบ™,
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเบ„เบปเบšเบ–เป‰เบงเบ™เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปเบกเปˆเบ™เบ—เบฒเบ‡เบญเป‰เบญเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™ เป‚เบ„เบ‡เบชเป‰เบฒเบ‡
เบซเบ™เบถเปˆเบ‡ เป‚เบ”เบเบเบปเบ‡; เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ เบชเบญเบ‡ * เบ—เบฒเบ‡เบญเป‰เบญเบก;.

เบ„เปเบฒเบ—เบตเปˆเบชเบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบชเบฐเป€เบžเบฒเบฐเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เปเบฒเบกเบฐเบ”เบฒ (เบ„เปเบฒเบชเบฑเปˆเบ‡:) เบซเบผเบท
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบปเปˆเบงเป„เบ› (gen:). เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบชเบฑเบšเบชเบปเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบ. เบชเปเบฒเบฅเบฑเบš C++,
เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบŠเปˆเบฝเบงเบŠเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™เปเบกเปˆเปเบšเบš, เบซเบผเบทเบซเป‰เบญเบ‡เบฎเบฝเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เปเบกเปˆเปเบšเบš
เบžเบฒเบเปƒเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบญเบทเปˆเบ™เบกเบต generics, เปเบ•เปˆ
-femit-struct-debug-เบฅเบฒเบเบฅเบฐเบญเบฝเบ” เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

เบ„เปเบฒเบ—เบตเบชเบฒเบกเบเปเบฒเบ™เบปเบ”เป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆ compiler
เบ„เบงเบ™เบ›เปˆเบญเบเบ‚เปเป‰เบกเบนเบ™เบ”เบตเบšเบฑเบ. เบ„เบธเบ™เบ„เปˆเบฒ none เปเบฅเบฐ เปƒเบ” เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹. เป„เบ”เป‰
เบกเบนเบ™เบ„เปˆเบฒ เบ–เบฒเบ™ เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเปƒเบ™เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ›เบฐเป€เบžเบ”
เบ›เบฒเบเบปเบ”เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบšเบ–เบฒเบ™เบ‚เบญเบ‡เบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ•เบปเป‰เบ™เบ•เป. เปƒเบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”,
เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบก foo.c, เบ‚เปเป‰เบกเบนเบ™ debug เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”
เบ›เบฐเบเบฒเบ”เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ™เบฑเป‰เบ™เปเบฅเบฐ foo.h, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เป„เบŸเบฅเปŒเบซเบปเบงเบญเบทเปˆเบ™. เบกเบนเบ™เบ„เปˆเบฒ sys เบงเบดเบ—เบตเบเบฒเบ™
เบ›เบฐเป€เบžเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบžเปเปƒเบˆ เบ–เบฒเบ™ เบซเบผเบทเบ›เบฐเบเบฒเบ”เปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš เบซเบผเบท compiler.

เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ—เบปเบ”เบฅเบญเบ‡เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -femit-struct-debug-detailed=เบ—เบฑเบ‡เปเบปเบ”.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบš DWARF 2 เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

-fno-merge-debug-strings
เบŠเบตเป‰เบšเบญเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบชเบฒเบเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เปƒเบ™เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเบ—เบตเปˆเป€เบ›เบฑเบ™
เบ„เบทเบเบฑเบ™เปƒเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบเบฒเบ™เบœเบฐเบชเบปเบกเบœเบฐเบชเบฒเบ™เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบเบœเบนเป‰เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบซเบผเบท
เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเบซเบผเบธเบ”เบฅเบปเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™ debug เปƒเบ™เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบขเบนเปˆเบ—เบตเปˆ
เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบงเบฅเบฒเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบเบฒเบ™เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เปเบกเปˆเบ™เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-fdebug-prefix-map=เบญเบฒเบเบธ=เปƒเบซเบกเปˆ
เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต เบญเบฒเบเบธ, เบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™ debugging เบญเบฐเบ—เบดเบšเบฒเบเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™
in เปƒเบซเบกเปˆ เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™.

-fno-dwarf2-cfi-asm
เบ›เปˆเบญเบเบ‚เปเป‰เบกเบนเบ™ DWARF 2 unwind เป€เบ›เบฑเบ™ compiler เบชเป‰เบฒเบ‡เบžเบฒเบเบชเปˆเบงเบ™ ".eh_frame" เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰
GAS ".cfi_*" เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ.

-p เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบžเบทเปˆเบญเบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ
prof. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™,
เปเบฅเบฐเบ—เปˆเบฒเบ™เบเบฑเบ‡เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบกเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

- เปœเป‰เบฒ เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบžเบทเปˆเบญเบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ
เบเบ›. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™,
เปเบฅเบฐเบ—เปˆเบฒเบ™เบเบฑเบ‡เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบกเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

-Q เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบžเบดเบกเบญเบญเบเปเบ•เปˆเบฅเบฐเบŠเบทเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบฅเบงเบšเบฅเบงเบก, เปเบฅเบฐเบžเบดเบกเบšเบฒเบ‡
เบชเบฐเบ–เบดเบ•เบดเบเปˆเบฝเบงเบเบฑเบšเปเบ•เปˆเบฅเบฐ pass เป€เบกเบทเปˆเบญเบกเบฑเบ™เบชเปเบฒเป€เบฅเบฑเบ”.

-ftime เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹
เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบžเบดเบกเบชเบฐเบ–เบดเบ•เบดเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเบฅเบดเป‚เบžเบเป‚เบ”เบเปเบ•เปˆเบฅเบฐ pass เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™
เบชเบณ เป€เบฅเบฑเบ”เบฎเบนเบš.

-fmem เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™
เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบžเบดเบกเบชเบฐเบ–เบดเบ•เบดเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ–เบฒเบงเบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™
เบชเบณ เป€เบฅเบฑเบ”เบฎเบนเบš.

-fmem-report-wpa
เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบžเบดเบกเบชเบฐเบ–เบดเบ•เบดเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ–เบฒเบงเบญเบ™เบชเปเบฒเบฅเบฑเบš WPA
เป„เบฅเบเบฐเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

-fpre-ipa-mem-เบฅเบฒเบเบ‡เบฒเบ™
-fpost-ipa-mem-report
เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบžเบดเบกเบชเบฐเบ–เบดเบ•เบดเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ–เบฒเบงเบญเบ™เบเปˆเบญเบ™เบซเบผเบท
เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš interprocedural.

-fprofile-report
เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบžเบดเบกเบชเบฐเบ–เบดเบ•เบดเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบ‚เบญเบ‡ profile (เบ„เบฒเบ”เบ„เบฐเป€เบ™).
เปเบฅเบฐเบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡ passes เบšเบธเบเบ„เบปเบ™.

-fstack เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹
เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler output เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ stack เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™, เบ•เบฒเบกเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™
เบžเบทเป‰เบ™เบ–เบฒเบ™. เบŠเบทเปˆเป„เบŸเบฅเปŒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ dump เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ เบŠเบน เบเบฒเบ™ เบŠเบทเปˆเปเบ—เบ™. เบŠเบทเปˆเปเบ—เบ™ is
เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบˆเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”, เบ–เป‰เบฒเบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™
เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เป€เบ›เบฑเบ™เบŠเบทเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡. เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปเบกเปˆเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ
เบชเบฒเบกโ€‹เบžเบฒเบโ€‹เบชเบฐโ€‹เบซเบ™เบฒเบกโ€‹:

ยทเบŠเบทเปˆเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ.

ยทเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ bytes.

ยทเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”: "static", "dynamic", "bounded".

เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” "เบชเบฐเบ–เบดเบ”" เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบˆเบฑเบ”เบเบฒเบ™ stack เบ„เบปเบ‡เบ—เบตเปˆ: a
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆโ€‹เบ‚เบญเบ‡โ€‹เป„เบšโ€‹เบ•โ€‹เปŒโ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบญเบšโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เปเบฅเบฐโ€‹เบ›เปˆเบญเบโ€‹เบญเบญเบโ€‹เบกเบฒโ€‹เป€เบกเบทเปˆเบญโ€‹
function เบญเบญเบ; เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เบฑเบš stack เปเบกเปˆเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เป„เบ”เป‰โ€‹เบ–เป‰เบฒโ€‹เบšเปเปˆโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เปƒเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹. เบ—เบตเปˆโ€‹เบชเบญเบ‡
เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบ•เบปเบงเป€เบฅเบเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เป„เบšเบ•เปŒเบ™เบตเป‰.

เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” "dynamic" เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบˆเบฑเบ”เบเบฒเบ™ stack เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง: เปƒเบ™
เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™ static เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบเบฒเบ™เบ›เบฑเบš stack เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบขเบนเปˆเปƒเบ™
เบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเบเบนเป‰/เบ›เปŠเบญเบšเบญเบฒเบเบดเบงเป€เบกเบฑเบ™เบฎเบญเบšเบเบฒเบ™เป‚เบ—เบŸเบฑเบ‡เบŠเบฑเบ™. เบ–เป‰เบฒ
เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ” "boundedโ€‹" เปเบกเปˆเบ™โ€‹เบเบฑเบ‡โ€‹เบ›เบฐโ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹, เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ„เปˆเบฒโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™ bounded เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹
เบฅเบงเบšเบฅเบงเบกเป€เบงเบฅเบฒเปเบฅเบฐเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบ‚เบญเบšเป€เบ‚เบ”เป€เบ—เบดเบ‡เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ stack เบ—เบตเปˆเปƒเบŠเป‰
เป‚เบ”เบเบซเบ™เป‰เบฒเบ—เบตเปˆ. เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเบกเบต, เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบ›เบฑเบšเบ•เบปเบงเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเบกเบตเบ‚เบญเบšเป€เบ‚เบ”
เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ—เบตเบชเบญเบ‡เบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบ–เบทเบเบœเบนเบเบกเบฑเบ”.

-fprofile-arcs
เป€เบžเบตเปˆเบกเบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เป‚เบ›เบฃเปเบเบกเป„เบซเบฅเป„เบ› arcs เปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบท. เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹
เบšเบฑเบ™เบ—เบถเบเบˆเปเบฒเบ™เบงเบ™เบ„เบฑเป‰เบ‡เบ—เบตเปˆเปเบ•เปˆเบฅเบฐเบชเบฒเบ‚เบฒเปเบฅเบฐเบเบฒเบ™เป‚เบ—เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ„เบฑเป‰เบ‡เบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”
เบซเบผเบทเบเบฑเบšเบ„เบทเบ™. เป€เบกเบทเปˆเบญเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบญเบญเบเบกเบฒ, เบกเบฑเบ™เบˆเบฐเบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เป„เบงเป‰เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ
auxname.gcda เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡. เบ‚เปเป‰เบกเบนเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบญเบฒเบ”เบˆเบฐเบ–เบทเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเปเบ™เปƒเบชเปˆเป‚เบ›เบฃเป„เบŸเบฅเปŒ
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš (-fbranch-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰), เบซเบผเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš
(-ftest-เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹). เปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ เบŠเบทเปˆเปเบ—เบ™ เปเบกเปˆเบ™เบœเบฐเบฅเบดเบ”เบˆเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡
เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”, เบ–เป‰เบฒเบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบธเบ”เบ—เป‰เบฒเบ, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™
เปเบกเปˆเบ™เบŠเบทเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡. เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบเปเบฅเบฐเบ™เบต, เบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบเปƒเบ”เป†เบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบญเบญเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡
foo.gcda เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เป‰เบญเบ™เป„เบŸเบฅเปŒ dir/foo.c, เบซเบผเบท dir/foo.gcda เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เป€เบ›เบฑเบ™โ€‹ -o
dir/foo.o).

-- เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡. เป„เบ”เป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเบšเบ„เป‰เบฒเบเบ„เบท -fprofile-arcs -ftest-เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹ (เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบก) เปเบฅเบฐ -lgcov
(เป€เบกเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ). เป€เบšเบดเปˆเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

ยทเบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบกเบต -fprofile-arcs เบšเบงเบเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เปƒเบŠเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบก -ftest-เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.
เบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡ profile เบ—เบธเบเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™.

ยทเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเบฑเบš -lgcov or -fprofile-arcs (เบญเบฑเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบซเบกเบฒเบเป€เบ–เบดเบ‡
เบญเบฐเบ”เบตเบ”).

ยท เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™เบงเบฝเบเบ‡เบฒเบ™เบ•เบปเบงเปเบ—เบ™เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒ arc
เบ‚เปเป‰เบกเบนเบ™. เบญเบฑเบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบ–เบทเบเป€เบฎเบฑเบ”เบŠเป‰เบณเบซเบผเบฒเบเบ„เบฑเป‰เบ‡. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบžเป‰เบญเบกเบเบฑเบ™
เบ•เบปเบง เบขเปˆเบฒเบ‡ เบ‚เบญเบ‡ เป‚เบ„เบ‡ เบเบฒเบ™ เบ‚เบญเบ‡ เบ—เปˆเบฒเบ™, เปเบฅเบฐ เบชเบฐ เบซเบ™เบญเบ‡ เปƒเบซเป‰ เบฅเบฐ เบšเบปเบš เป„เบŸเบฅ เปŒ เบชเบฐ เบซเบ™เบฑเบš เบชเบฐ เบซเบ™เบนเบ™ เบเบฒเบ™ locking, เป„เบ”เป‰
เป„เบŸเบฅเปŒเบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰ "เบชเป‰เบญเบก" เป‚เบ—เบ–เบทเบเบเบงเบ”เบžเบปเบšเปเบฅเบฐ
เบˆเบฑเบ”เบเบฒเบ™เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡ (เบเบฒเบ™เบ™เบฑเบšเบชเบญเบ‡เป€เบ—เบปเปˆเบฒเบˆเบฐเบšเปเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™).

ยท เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ profile-directed, เบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบ”เป‰เบงเบเบญเบฑเบ™เบ”เบฝเบงเบเบฑเบ™
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบฅเบฐเบซเบฑเบ”เบšเบงเบ -fbranch-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰.

ยทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ gcov เป€เบžเบทเปˆเบญเบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰เบ‚เบญเบ‡เบกเบฐเบ™เบธเบ”เบˆเบฒเบ
เป„เบ”เป‰ .gcno เปเบฅเบฐ .gcda เป„เบŸเบฅเปŒ. เบญเป‰เบฒเบ‡เป€เบ–เบดเบ‡ gcov เป€เบญเบเบฐเบชเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบ‚เปเป‰เบกเบนเบ™เบ‚เปˆเบฒเบงเบชเบฒเบ™.

เบเบฑเบš -fprofile-arcs, เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เป‚เบ›เบผเปเบเบผเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™ GCC เบชเป‰เบฒเบ‡เบเบฒเบ™เป„เบซเบผเบ‚เบญเบ‡เป‚เบ›เบผเปเบเบผเบก
graph, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบŠเบญเบเบซเบฒเบ•เบปเป‰เบ™เป„เบกเป‰ spanning เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡. เบžเบฝเบ‡เปเบ•เปˆ arcs เบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเปƒเบ™
spanning tree เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบท: compiler เป€เบžเบตเปˆเบกเบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡
เป€เบง เบฅเบฒ เบ—เบตเปˆ arcs เป€เบซเบผเบปเปˆเบฒ เบ™เบตเป‰ เปเบกเปˆเบ™ เบ›เบฐ เบ•เบด เบšเบฑเบ”. เป€เบกเบทเปˆเบญเป€เบชเบฑเป‰เบ™เป‚เบ„เป‰เบ‡เปเบกเปˆเบ™เบ—เบฒเบ‡เบญเบญเบเบ”เบฝเบง เบซเบผเบทเบ—เบฒเบ‡เป€เบ‚เบปเป‰เบฒเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบ•เบฑเบ™, เบฅเบฐเบซเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆเบšเบฅเบฑเบญเบ; เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบซเบกเปˆ
เบšเบฅเบฑเบญเบเบ•เป‰เบญเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป€เบžเบทเปˆเบญเบ–เบทเบฅเบฐเบซเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท.

-ftest-เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹
เบœเบฐเบฅเบดเบ”เป€เบญเบเบฐเบชเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆ gcov code-coverage utility เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เป‚เบ›เบผเปเบเบผเบก
เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡. เป„เบŸเบฅเปŒเบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเปเบซเบผเปˆเบ‡เปเบกเปˆเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒ auxname.gcno. เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡
-fprofile-arcs เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบญเบ‡ เบŠเบทเปˆเปเบ—เบ™ เปเบฅเบฐเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™
เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš. เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹เบเบปเบ‡โ€‹เบเบฑเบšโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เปเบซเบผเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เปƒเบเป‰โ€‹เบŠเบดเบ”โ€‹เบซเบผเบฒเบโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹
เบ—เปˆเบฒเบ™เบšเปเปˆเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

-fdbg-cnt-list
เบžเบดเบกเบŠเบทเปˆ เปเบฅเบฐ Counter เบœเบนเบเบกเบฑเบ”เบ”เป‰เบฒเบ™เป€เบ—เบดเบ‡เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบ™เบฑเบšเบเบฒเบ™เบ”เบตเบšเบฑเบเบ—เบฑเบ‡เปเบปเบ”.

-fdbg-cnt=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบเบฒเบ™เบ•เป‰เบฒเบ™เบกเบนเบ™เบ„เปˆเบฒ
เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเบ•เป‰เบฒเบ™เบเบฒเบ™เบ”เบตเบšเบฑเปŠเบเบžเบฒเบเปƒเบ™เบ‚เบญเบšเป€เบ—เบดเบ‡. เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบเบฒเบ™เบ•เป‰เบฒเบ™เบกเบนเบ™เบ„เปˆเบฒ เปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”เบ—เบตเปˆเบ‚เบฑเป‰เบ™เบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”
เบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ เบŠเบทเปˆ:เบกเบนเบ™เบ„เปˆเบฒ เบ„เบนเปˆเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เป€เบ—เบดเบ‡เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ•เบปเบงเบ•เป‰เบฒเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ เบŠเบทเปˆ to
เบกเบนเบ™เบ„เปˆเบฒ. เบ•เบปเบงเบ™เบฑเบšเบเบฒเบ™เบ”เบตเบšเบฑเบเบ—เบฑเบ‡เปเบปเบ”เบกเบตเบ‚เบญเบšเป€เบ—เบดเบ‡เบ‚เบญเบ‡ "UINT_MAX"; เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
"dbg_cnt()" เบเบฑเบšเบ„เบทเบ™ true เบชเบฐเป€เปเบต เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบ‚เบญเบšเป€เบ‚เบ”เป€เบ—เบดเบ‡เบˆเบฐเบ–เบทเบเบ•เบฑเป‰เบ‡เป‚เบ”เบเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰. เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฑเบš -fdbg-cnt=dce:10,tail_call:0, "dbg_cnt(dce)" เบเบฑเบšเบ„เบทเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบžเบฝเบ‡เปเบ•เปˆเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”
10 เปƒเบšเป€เบŠเบตเบ™.

-fenable-เบ›เบฐเป€เบžเบ”-เบœเปˆเบฒเบ™
-fdisable-เบ›เบฐเป€เบžเบ”-เบœเปˆเบฒเบ™=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป„เบฅเบเบฐ
เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบŠเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป€เบžเบทเปˆเบญโ€‹เบขเปˆเบฒเบ‡โ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™โ€‹เบ›เบดเบ”โ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™ / เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹
เบœเปˆเบฒเบ™. เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เบตเบšเบฑเบ GCC. เบœเบนเป‰เปƒเบŠเป‰ Compiler เบ„เบงเบ™
เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ›เบปเบเบเบฐเบ•เบดเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”/เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบšเบฑเบ”เบœเปˆเบฒเบ™เปเบ—เบ™.

-fdisable-ipa-เบœเปˆเบฒเบ™
เบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเบฑเบ” IPA เบœเปˆเบฒเบ™. เบœเปˆเบฒเบ™ เปเบกเปˆเบ™เบŠเบทเปˆเบœเปˆเบฒเบ™. เบ–เป‰เบฒเบœเปˆเบฒเบ™เบ—เบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เปเบกเปˆเบ™เบชเบฐเบ–เบดเบ•เบด
invoked เปƒเบ™ compiler เบซเบผเบฒเบเบ„เบฑเป‰เบ‡, เบŠเบทเปˆ pass เบ„เบงเบ™เบ–เบทเบเบ•เปเปˆเบ—เป‰เบฒเบเบ”เป‰เบงเบ a
เป€เบฅเบเบฅเปเบฒเบ”เบฑเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบ 1.

-fdisable-rtl-เบœเปˆเบฒเบ™
-fdisable-rtl-เบœเปˆเบฒเบ™=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป„เบฅเบเบฐ
เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ RTL pass เบœเปˆเบฒเบ™. เบœเปˆเบฒเบ™ เปเบกเปˆเบ™เบŠเบทเปˆเบœเปˆเบฒเบ™. เบ–เป‰เบฒเบœเปˆเบฒเบ™เบ—เบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เปเบกเปˆเบ™เบชเบฐเบ–เบดเบ•เบด
invoked เปƒเบ™ compiler เบซเบผเบฒเบเบ„เบฑเป‰เบ‡, เบŠเบทเปˆ pass เบ„เบงเบ™เบ–เบทเบเบ•เปเปˆเบ—เป‰เบฒเบเบ”เป‰เบงเบ a
เป€เบฅเบเบฅเปเบฒเบ”เบฑเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบ 1. เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป„เบฅเบเบฐ เปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบ‚เบฑเป‰เบ™เบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”
เบŠเปˆเบงเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ เบซเบผเบทเบŠเบทเปˆเบ•เบปเบงเบ›เบฐเบเบญเบš. เปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐเปเบกเปˆเบ™เบ„เบนเปˆเบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเปเบเบเบญเบญเบเบ”เป‰เบงเบ a
เบˆเปเป‰เบฒเบชเบญเบ‡เป€เบกเบฑเบ”. เป„เบฅเบเบฐเปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบชเบปเป‰เบ™. เบ–เป‰เบฒเป„เบฅเบเบฐเปเบกเปˆเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบ•เบปเบงเป€เบฅเบ
เบ„เบนเปˆเบชเบฒเบกเบฒเบ”เบ‡เปˆเบฒเบเป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบเบ”เบฝเบง. เบ–เป‰เบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ‚เบญเบ‡ call graph node's
uid เบ•เบปเบเบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰, เป„เบ”เป‰ เบœเปˆเบฒเบ™ เปเบกเปˆเบ™เบžเบดเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบฑเป‰เบ™
เปœเป‰เบฒ เบ—เบตเปˆ. เบ— uid เปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบซเบปเบงเบ‚เปเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒ dump, เปเบฅเบฐ pass
เบŠเบทเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบ dumped เป‚เบ”เบเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -fdump-เบœเปˆเบฒเบ™.

-fdisable-tree-เบœเปˆเบฒเบ™
-fdisable-tree-เบœเปˆเบฒเบ™=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป„เบฅเบเบฐ
เบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ—เบฒเบ‡เบœเปˆเบฒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰ เบœเปˆเบฒเบ™, เบ—เบฐเป€เบฅเบชเบฒเบš -fdisable-rtl เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡.

-fenable-ipa-เบœเปˆเบฒเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰ IPA pass เบœเปˆเบฒเบ™. เบœเปˆเบฒเบ™ เปเบกเปˆเบ™เบŠเบทเปˆเบœเปˆเบฒเบ™. เบ–เป‰เบฒเบœเปˆเบฒเบ™เบ—เบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เปเบกเปˆเบ™เบชเบฐเบ–เบดเบ•เบด
invoked เปƒเบ™ compiler เบซเบผเบฒเบเบ„เบฑเป‰เบ‡, เบŠเบทเปˆ pass เบ„เบงเบ™เบ–เบทเบเบ•เปเปˆเบ—เป‰เบฒเบเบ”เป‰เบงเบ a
เป€เบฅเบเบฅเปเบฒเบ”เบฑเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบ 1.

-fenable-rtl-เบœเปˆเบฒเบ™
-fenable-rtl-เบœเปˆเบฒเบ™=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป„เบฅเบเบฐ
เป€เบ›เบตเบ”เปƒเบŠเป‰ RTL pass เบœเปˆเบฒเบ™, เบ—เบฐเป€เบฅเบชเบฒเบš -fdisable-rtl เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เปเบฅเบฐ
เบ•เบปเบงเบขเปˆเบฒเบ‡.

-fenable-เบ•เบปเป‰เบ™เป„เบกเป‰-เบœเปˆเบฒเบ™
-fenable-เบ•เบปเป‰เบ™เป„เบกเป‰-เบœเปˆเบฒเบ™=เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป„เบฅเบเบฐ
เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบšเบœเปˆเบฒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰ เบœเปˆเบฒเบ™, เบ—เบฐเป€เบฅเบชเบฒเบš -fdisable-rtl เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

# เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ ccp1 เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบŸเบฑเบ‡เบŠเบฑเบ™
-fdisable-tree-ccp1
# เบ›เบดเบ”เบเบฒเบ™เบ–เบญเบ”เบ–เบญเบ™เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆ cgraph node uid เปเบกเปˆเบ™ 1
-fenable-tree-cunroll=1
# เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ gcse2 เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰ [1,1],
# [300,400], เปเบฅเบฐ [400,1000]
# เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ gcse2 เบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™ foo เปเบฅเบฐ foo2
-fdisable-rtl-gcse2=foo,foo2
# เบ›เบดเบ”โ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™ inlining เบ•เบปเป‰เบ™โ€‹
-fdisable-tree-einline
# เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ ipa inlining
-fdisable-ipa-inline
# เป€เบ›เบตเบ”เบเบฒเบ™เบ–เบญเบ”เบ–เบญเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เป€เบ•เบฑเบก
-fenable-tree-unroll

-dเบ•เบปเบงเบญเบฑเบเบชเบญเบ™
-fdump-rtl-เบœเปˆเบฒเบ™
-fdump-rtl-เบœเปˆเบฒเบ™=เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™
เป€เบงเบปเป‰เบฒเบงเปˆเบฒเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰ debugging dumps เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป‚เบ”เบ เบ•เบปเบงเบญเบฑเบเบชเบญเบ™. เบ™เบตเป‰
เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ debugging เบœเปˆเบฒเบ™ RTL-based เบ‚เบญเบ‡ compiler. เบŠเบทเปˆเป„เบŸเบฅเปŒเบชเปˆเบงเบ™เปƒเบซเบเปˆ
เบ‚เบญเบ‡เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบ•เบทเปˆเบกเบ•เบปเบงเป€เบฅเบเบœเปˆเบฒเบ™เปเบฅเบฐเบ„เปเบฒเบชเบฑเบšเปƒเบชเปˆเบเบฑเบš dumpname, เปเบฅเบฐ
เป„เบŸเบฅเปŒเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ‚เบญเบ‡ =เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ,
dump เปเบกเปˆเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเปƒเบซเป‰เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ pass numbered dump เป„เบŸเบฅเปŒ. เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹
เบงเปˆเบฒเบ•เบปเบงเป€เบฅเบเบœเปˆเบฒเบ™เป„เบ”เป‰เบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเบขเปˆเบฒเบ‡เบชเบฐเบ–เบดเบ”เบเป‰เบญเบ™เบงเปˆเบฒเบšเบฑเบ”เบœเปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฑเบ”
เบœเบนเป‰โ€‹เบˆเบฑเบ”โ€‹เบเบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ•เบปเบงเป€เบฅเบเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”
เบœเปˆเบฒเบ™. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, pass เบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เป‚เบ”เบ plugin เบชเบฒเบกเบฒเบ”เบกเบตเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบเบงเปˆเบฒ 200 เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ
เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ‚เป‰เบญเบ™โ€‹เบ‚เป‰เบฒเบ‡โ€‹เป„เบงโ€‹. dumpname เบ–เบทเบโ€‹เบชเป‰เบฒเบ‡โ€‹เบ‚เบถเป‰เบ™โ€‹เบˆเบฒเบโ€‹เบŠเบทเปˆโ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป„เบ”เป‰โ€‹,
เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เบขเปˆเบฒเบ‡โ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™โ€‹เปเบฅเบฐโ€‹เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹, เบ–เป‰เบฒโ€‹เบšเปเปˆโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เบกเบฑเบ™โ€‹เปเบกเปˆเบ™โ€‹เบŠเบทเปˆโ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹
เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡. เบชเบฐเบซเบผเบฑเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ -E เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™
เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™.

Debug dumps เบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบ”เป‰เบงเบ a -fdump-rtl เบชเบฐเบซเบผเบฑเบšเบซเบผเบทเบšเบฒเบ‡ -d เบ—เบฒเบ‡เป€เบฅเบทเบญเบ เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบขเบนเปˆ เบ—เบตเปˆเบ™เบตเป‰
เปเบกเปˆเบ™เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ เบœเปˆเบฒเบ™ เปเบฅเบฐ เบ•เบปเบงเบญเบฑเบเบชเบญเบ™, เปเบฅเบฐโ€‹เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹:

-fdump-rtl-alignments
เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เบชเบฒเบ‚เบฒเป„เบ”เป‰เบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆ.

-fdump-rtl-asmcons
Dump เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เปเบเป‰เป„เบ‚เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆ rtl เบ—เบตเปˆเบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เปƒเบ™ / เบญเบญเบเบ—เบตเปˆเบšเปเปˆเบžเปเปƒเบˆ.

-fdump-rtl-auto_inc_dec
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบš auto-inc-dec. เปƒเบšเบœเปˆเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เปƒเบŠเป‰เปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบกเบต auto inc เบซเบผเบทเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” dec.

-fdump-rtl-เบชเบดเปˆเบ‡เบเบตเบ”เบ‚เบงเบฒเบ‡
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เปเบฒเบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบญเบธเบ›เบฐเบชเบฑเบ.

-fdump-rtl-bbpart
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเปเบšเปˆเบ‡เบ›เบฑเบ™เบ—เปˆเบญเบ™เป„เบกเป‰เบžเบทเป‰เบ™เบ–เบฒเบ™เบฎเป‰เบญเบ™เปเบฅเบฐเป€เบขเบฑเบ™.

-fdump-rtl-bbro
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบเบฒเบ™เบชเบฑเปˆเบ‡เบšเบฅเบฑเบญเบเบ„เบทเบ™เปƒเปเปˆ.

-fdump-rtl-btl1
-fdump-rtl-btl2
-fdump-rtl-btl1 เปเบฅเบฐ -fdump-rtl-btl2 เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบซเบผเบฑเบ‡เบˆเบฒเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเบญเบ‡เบชเบฒเบ‚เบฒ
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป‚เบซเบผเบ”เบœเปˆเบฒเบ™.

-fdump-rtl-bypass
เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบซเบผเบฑเบ‡เบˆเบฒเบเป‚เบ”เบ”เบ‚เป‰เบฒเบกเปเบฅเบฐเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป„เบซเบผ.

-fdump-rtl-combine
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเบŠเบธเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ RTL เบœเปˆเบฒเบ™.

-fdump-rtl-compgotos
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบ duplicating the computed gotos.

-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
Dump เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบปเบกเบ—เบปเบšเบเบฒเบ™เบ›เบฑเบš stack.

-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
Dump เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ EH.

-fdump-rtl-eh_ranges
เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบžเบฒเบเบžเบทเป‰เบ™เป„เบฅเบเบฐเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ EH.

-fdump-rtl-เบ‚เบฐเบซเบเบฒเบ
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบœเบฐเบฅเบดเบ” 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
เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ iterated.

-fdump-rtl-jump
Dump เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป‚เบ”เบ”เบ„เบฑเป‰เบ‡เบ—เบตเบชเบญเบ‡.

-fdump-rtl-loop2
-fdump-rtl-loop2 เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™ dumping เบซเบผเบฑเบ‡เบˆเบฒเบ rtl loop optimization เบœเปˆเบฒเบ™เป„เบ›.

-fdump-rtl-mach
เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ reorganization pass เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบœเปˆเบฒเบ™
เบฅเบฒเบ„เบฒ:.

-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-เบซเบเปเป‰
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบชเบฑเป‰เบ™เบฅเบปเบ‡.

-fdump-rtl-sibling
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป‚เบ—เบžเบตเปˆเบ™เป‰เบญเบ‡.

-fdump-rtl-split1
-fdump-rtl-split2
-fdump-rtl-split3
-fdump-rtl-split4
-fdump-rtl-split5
-fdump-rtl-split1, -fdump-rtl-split2, -fdump-rtl-split3, -fdump-rtl-split4 เปเบฅเบฐ
-fdump-rtl-split5 เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบซเบผเบฑเบ‡เบˆเบฒเบเบซเป‰เบฒเบฎเบญเบšเบ‚เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ.

-fdump-rtl-sms
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเบเบณเบ™เบปเบ”เป€เบงเบฅเบฒเปเบšเบšเป‚เบกเบ”เบนเป‚เบฅ. เบšเบฑเบ”เบ™เบตเป‰เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบšเบšเบฒเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

-fdump-rtl-stack
เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเบฒเบ "เป„เบŸเบฅเปŒเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปเบ›" เบ‚เบญเบ‡ GCC เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฑเบš x87's
เบ—เบฐเบšเบฝเบ™เปเบšเบš stack. เบšเบฑเบ”เบ™เบตเป‰เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบšเบ•เบปเบงเปเบ› x86 เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

-fdump-rtl-subreg1
-fdump-rtl-subreg2
-fdump-rtl-subreg1 เปเบฅเบฐ -fdump-rtl-subreg2 เป€เบ›เบตเบ”เปƒเบŠเป‰ dumping เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบญเบ‡ subreg
เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบœเปˆเบฒเบ™.

-fdump-rtl-unshare
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบ rtl เบ—เบฑเบ‡เปเบปเบ”เบ–เบทเบเบเบปเบเป€เบฅเบตเบเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™.

-fdump-rtl-vartrack
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ•เบปเบงเปเบ›.

-fdump-rtl-vregs
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเบ›เปˆเบฝเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบฐเป€เปเบทเบญเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบ.

-fdump-rtl-web
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเปเบเบเป„เบฅเบเบฐเบชเบปเบ”.

-fdump-rtl-regclass
-fdump-rtl-subregs_of_mode_init
-fdump-rtl-subregs_of_mode_finish
-fdump-rtl-dfinit
-fdump-rtl-dfinish
dumps เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เปเบ•เปˆเบœเบฐเบฅเบดเบ”เป„เบŸเบฅเปŒเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบชเบฐเป€เบซเบกเบต.

-in
-fdump-rtl-เบ—เบฑเบ‡เปเบปเบ”
เบœเบฐเบฅเบดเบ” dumps เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡.

-dA เบšเบฑเบ™เบ—เบถเบเบœเบปเบ™เบญเบญเบเบกเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเบญเบทเปˆเบ™เป†.

-dD เบ–เบดเป‰เบกเบ™เบดเบเบฒเบกเบกเบฐเบซเบฒเบžเบฒเบเบ—เบฑเบ‡เปเบปเบ”, เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™, เบ™เบญเบเป€เปœเบทเบญเป„เบ›เบˆเบฒเบเบ›เบปเบเบเบฐเบ•เบด
เบœเบปเบ™เบœเบฐเบฅเบดเบ”.

-dH เบœเบฐเบฅเบดเบ” dump เบซเบผเบฑเบเบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

-dp เบšเบฑเบ™เบ—เบถเบเบœเบปเบ™เบญเบญเบเบกเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ„เบณเป€เบซเบฑเบ™เบ—เบตเปˆเบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเบฎเบนเบšเปเบšเบšเปƒเบ” เปเบฅเบฐ
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฑเบ‡เบ–เบทเบเบžเบดเบกเบญเบญเบ.

-dP เบ–เบดเป‰เบก RTL เปƒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบ•เบปเบงเบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เบ„เปเบฒเบ„เบดเบ”เบ„เปเบฒเป€เบซเบฑเบ™เบเปˆเบญเบ™เปเบ•เปˆเบฅเบฐเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰
เป€เบ›เบตเบ” -dp เบ„เบณ เบญเบฐเบ—เบดเบšเบฒเบ.

-dx เบžเบฝเบ‡เปเบ•เปˆเบชเป‰เบฒเบ‡ RTL เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบฅเบงเบšเบฅเบงเบกเบกเบฑเบ™. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปƒเบŠเป‰เบเบฑเบš
-fdump-rtl-เบ‚เบฐเบซเบเบฒเบ.

-fdump-noaddr
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ debugging dumps, เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบขเบนเปˆ. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐ
เปƒเบŠเป‰ diff เปƒเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบญเบตเป‰เบ™ compiler เบเบฑเบš binaries compiler เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™
เปเบฅเบฐ / เบซเบผเบทเบ‚เปเป‰เบ„เบงเบฒเบก / bss / เบ‚เปเป‰เบกเบนเบ™ / heap / stack / dso เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

-fdump-เบšเปเปˆเบกเบตเบ•เบปเบงเป€เบฅเบ
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ debugging dumps, เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบ•เบปเบงเป€เบฅเบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปเบฅเบฐเบ—เบตเปˆเบขเบนเปˆเบญเบญเบ. เบ™เบตเป‰
เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ diff เปƒเบ™ debugging dumps เบชเปเบฒเบฅเบฑเบš compiler invocations เบเบฑเบš
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบเบฑเบšเปเบฅเบฐเบšเปเปˆเบกเบต -g.

-fdump-unnumbered-links
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ debugging dumps (เป€เบšเบดเปˆเบ‡ -d เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡), เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบ•เบปเบงเป€เบฅเบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบš
เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเปเบฅเบฐเบ•เปเปˆเป„เบ›เปƒเบ™เบฅเปเบฒเบ”เบฑเบš.

-fdump-translation-unit (C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
-fdump-translation-unit-เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ (C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบ–เบดเป‰เบกเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบชเปเบฒเบฅเบฑเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบเบฒเบ™เปเบ›เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ›เบซเบฒเป„เบŸเบฅเปŒ.
เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ .tu เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡, เปเบฅเบฐเป„เบŸเบฅเปŒเปเบกเปˆเบ™
เบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”. เบ–เป‰เบฒ -เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹,
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบ„เบงเบšเบ„เบธเบกเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡ dump เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ -fdump-เบ•เบปเป‰เบ™เป„เบกเป‰ เบ•เบปเบงเป€เบฅเบทเบญเบ

-fdump-class-hierarchy (C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
-fdump-class-hierarchy-เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ (C++ เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™)
เบ–เบดเป‰เบกเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบŠเบฑเป‰เบ™เบฎเบฝเบ™เปเบฅเบฐเบฎเบนเบšเปเบšเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ virtual เป„เบ›เบซเบฒ a
เป„เบŸเบฅเปŒ. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ .เบซเป‰เบญเบ‡เบฎเบฝเบ™ เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡, เปเบฅเบฐเป„เบŸเบฅเปŒ
เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”. เบ–เป‰เบฒ -เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹,
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบ„เบงเบšเบ„เบธเบกเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡ dump เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ -fdump-เบ•เบปเป‰เบ™เป„เบกเป‰ เบ•เบปเบงเป€เบฅเบทเบญเบ

-fdump-ipa-เบชเบฐเบซเบผเบฑเบš
เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบเบฒเบ™โ€‹เบ–เบดเป‰เบกโ€‹เบ‚เบตเป‰โ€‹เป€เบซเบเบทเป‰เบญโ€‹เปƒเบ™โ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ•เปˆเบฒเบ‡เป†โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบฅเบฐโ€‹เบšเบฝเบšโ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบžเบฒโ€‹เบชเบฒโ€‹เป€เบ›เบฑเบ™โ€‹
เป„เบŸเบฅเปŒ. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบเบชเบฐเบงเบดเบ”เบชเบฐเป€เบžเบฒเบฐเบเบฑเบšเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบกเบฒ
เบŠเบทเปˆเป„เบŸเบฅเปŒ, เปเบฅเบฐเป„เบŸเบฅเปŒเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”. เป„เบ”เป‰
เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰:

เบ—เบฑเบ‡เบซเบกเบปเบ” เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ–เบดเป‰เบกเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบฑเบ‡เปเบปเบ”.

เบ–เบฑเบ™
dumps เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ„เปˆเบฒโ€‹เบเบฒโ€‹เบŸโ€‹เป‚เบ—โ€‹, เบเบฒเบ™โ€‹เบฅเบปเบšโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹, เปเบฅเบฐโ€‹
เบเบฒเบ™โ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹เปƒเบˆ inliningโ€‹.

inline
เบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเบŸเบฑเบ‡เบŠเบฑเบ™ inlining.

-fdump-เบœเปˆเบฒเบ™
เบ–เบดเป‰เบกเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เบ—เบตเปˆเป€เบ›เบตเบ”เปเบฅเบฐเบ›เบดเบ”เป‚เบ”เบเบ›เบฐเบˆเบธเบšเบฑเบ™
เบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡.

-fdump-เบชเบฐเบ–เบดเบ•เบด-เบ—เบฒเบ‡เป€เบฅเบทเบญเบ
เป€เบ›เบตเบ”เปƒเบŠเป‰ เปเบฅเบฐเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ–เบดเป‰เบกเบชเบฐเบ–เบดเบ•เบดเบœเปˆเบฒเบ™เปƒเบ™เป„เบŸเบฅเปŒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™
เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบเบฒเบ™เปƒเบชเปˆเบ„เบณเบ•เปเปˆเบ—เป‰เบฒเบเบ—เบตเปˆเบฅเบปเบ‡เบ—เป‰เบฒเบเบ”เป‰เบงเบ .เบชเบฐเบ–เบดเบ•เบด เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡, เปเบฅเบฐ
เป„เบŸเบฅเปŒเบ–เบทเบเบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”. เบ–เป‰เบฒ -เบ—เบฒเบ‡เป€เบฅเบทเบญเบ เปเบšเบšเบŸเบญเบกเปเบกเปˆเบ™
เปƒเบŠเป‰เปเบฅเป‰เบง, - เบชเบฐโ€‹เบ–เบดโ€‹เบ•เบดโ€‹ เป€เบฎเบฑเบ” เปƒเบซเป‰ เบ•เบปเบง เบŠเบตเป‰ เบงเบฑเบ” เบ—เบตเปˆ เบˆเบฐ เป„เบ”เป‰ เบฎเบฑเบš เบเบฒเบ™ summed เบ—เบปเปˆเบง เบซเบ™เปˆเบงเบ เบšเป เบฅเบด เบเบฒเบ™ เบ—เบฑเบ‡ เบซเบกเบปเบ” เปƒเบ™ เบ‚เบฐ เบ™เบฐ เบ—เบตเปˆ
- เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹ dumps เบ—เบธเบเบเปเบฅเบฐเบ™เบตเป€เบ›เบฑเบ™ passes เบชเป‰เบฒเบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™
เป€เบžเบทเปˆเบญเบฅเบงเบกเบ•เบปเบงเบ™เบฑเบšเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบซเบ™เป‰เบฒเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบก.

-fdump-เบ•เบปเป‰เบ™เป„เบกเป‰-เบชเบฐเบซเบผเบฑเบš
-fdump-เบ•เบปเป‰เบ™เป„เบกเป‰-เบชเบฐเบซเบผเบฑเบš-เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
-fdump-เบ•เบปเป‰เบ™เป„เบกเป‰-เบชเบฐเบซเบผเบฑเบš-เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™=เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™
เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบชเบฒเบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เป€เบžเบทเปˆเบญ
เป„เบŸเบฅเปŒ. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบเบชเบฐเบงเบดเบ”เบชเบฐเป€เบžเบฒเบฐเบเบฑเบš
เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡, เปเบฅเบฐเป„เบŸเบฅเปŒเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”. เปƒเบ™
เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ =เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, dump เปเบกเปˆเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเปƒเบซเป‰เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
เป„เบŸเบฅเปŒเบ—เบตเปˆเบ•เบฑเป‰เบ‡เบŠเบทเปˆ dump. เบ–เป‰เบฒ -เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ - เปเบเบเบญเบญเบเบˆเบฒเบเบเบฑเบ™
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ„เบงเบšเบ„เบธเบกเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡ dump เป„เบ”เป‰. เบšเปเปˆเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบฑเบ‡เปเบปเบ”เปเบกเปˆเบ™เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบšเบ—เบธเบเบ„เบปเบ™
dumps; เบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเปเบกเปˆเบ™เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบขเบนเปˆ

เบ—เบตเปˆเบขเบนเปˆ
เบžเบดเบกเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐ node. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบ™เบตเป‰เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡
เบญเบตเบ‡เบ•เบฒเบกเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปเบฅเบฐเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡. เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ•เบปเป‰เบ™โ€‹เบ•เปโ€‹เบ‚เบญเบ‡โ€‹เบกเบฑเบ™โ€‹เปเบกเปˆเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เป€เบ›เบฑเบ™โ€‹
dump เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ”เบตเบšเบฑเบ.

asmname
เบ–เป‰เบฒ "DECL_ASSEMBLER_NAME" เป„เบ”เป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™ decl เบ—เบตเปˆเปƒเบซเป‰, เปƒเบŠเป‰เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ dump
เปเบ—เบ™ "DECL_NAME". เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ•เบปเป‰เบ™โ€‹เบ•เปโ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เปเบกเปˆเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบ‡เปˆเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™โ€‹เบˆเบฒเบโ€‹
mangled เบŠเบทเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ›เบฐเบเบญเบš.

เบเบฐเบ—เบฑเบ”เบฎเบฑเบ”
เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆ dumping front-end เบ•เบปเบงโ€‹เปเบ—เบ™โ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เบ›เบฒเบ™โ€‹เบเบฒเบ‡, inhibiting dumping เบ‚เบญเบ‡โ€‹เบชเบฐโ€‹เบกเบฒโ€‹เบŠเบดเบโ€‹เบ‚เบญเบ‡
เบ‚เบญเบšเป€เบ‚เบ”เบซเบผเบทเบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ‚เบญเบšเป€เบ‚เบ”เบ™เบฑเป‰เบ™เป„เบ”เป‰เบšเบฑเบ™เบฅเบธ. เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบ–เบดเป‰เบกเบฅเบฒเบเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบกเบทเปˆเบญเบžเบงเบเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบซเบฒเป„เบ”เป‰เป‚เบ”เบเบเบปเบ‡เป‚เบ”เบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบญเบทเปˆเบ™.

เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ dumping เบ•เบปเป‰เบ™เป„เบกเป‰ pretty-printed, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰ inhibits dumping เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡
เป‚เบ„เบ‡โ€‹เบชเป‰เบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹.

เป€เบกเบทเปˆเบญเบ–เบดเป‰เบก RTL, เบžเบดเบก RTL เปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฐเบ—เบฑเบ”เบฎเบฑเบ” (เบ‚เบปเป‰เบ™) เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡ LISP.

เบงเบฑเบ”เบ–เบธเบ”เบดเบš เบžเบดเบกเบ•เบปเบงเปเบ—เบ™เบงเบฑเบ”เบ–เบธเบ”เบดเบšเบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ•เบปเป‰เบ™เป„เบกเป‰เบ–เบทเบเบžเบดเบกเบญเบญเบเบขเปˆเบฒเบ‡เบชเบงเบเบ‡เบฒเบก
เบ•เบปเบงโ€‹เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบ„เป‰เบฒเบโ€‹เบ„เบท Cโ€‹.

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™ dumps เบ—เบตเปˆเบกเบตเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก (เบšเปเปˆเป€เบ›เบฑเบ™เบเบฝเบ”เป‚เบ”เบเบ—เบธเบเป†เบ—เบฒเบ‡เป€เบฅเบทเบญเบ dump). เบฅเบงเบกเบ—เบฑเบ‡
เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบœเปˆเบฒเบ™.

เบชเบฐเบ–เบดเบ•เบด
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ–เบดเป‰เบกเบชเบฐเบ–เบดเบ•เบดเบ•เปˆเบฒเบ‡เป†เบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ”เบœเปˆเบฒเบ™ (เบšเปเปˆเบ–เบทเบเบเบปเบเบเป‰เบญเบ‡เบˆเบฒเบเบ—เบธเบเป†เบเบฒเบ™เบ–เบดเป‰เบก
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบ).

เบ•เบฑเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ‚เบญเบšเป€เบ‚เบ”เบšเบฅเบฑเบญเบเบžเบทเป‰เบ™เบ–เบฒเบ™ (เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญ).

graph
เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒ dump เบŠเบตเป‰เบšเบญเบเบญเบทเปˆเบ™เป† (-fdump-rtl-เบœเปˆเบฒเบ™), dump เบ
เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบเบฒเบŸเบเบฒเบ™เป„เบซเบผเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบšเบดเปˆเบ‡เบเบฑเบš GraphViz เบเบฑเบš
file.passid.pass.dot. เปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เป„เบŸเบฅเปŒเปเบกเปˆเบ™เบžเบดเบกเบญเบญเบเป€เบ›เบฑเบ™เบฎเบนเบšเบเปˆเบญเบ,
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ GraphViz เบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบžเบงเบเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบ”เบดเบ™เบ•เบญเบ™เบ”เบฝเบง.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ›เบฐเบˆเบธเบšเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเปƒเบŠเป‰เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ dumps RTL, เปเบฅเบฐ RTL เป„เบ”เป‰เบ–เบทเบ dumped เบชเบฐเป€เบซเบกเบต
เบฎเบนเบšเปเบšเบšเบเบฐเบ—เบฑเบ”เบฎเบฑเบ”.

vops
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ virtual เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™.

lineno
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ•เบปเบงเป€เบฅเบเปเบ–เบงเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™.

uid เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡ ID เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ ("DECL_UID") เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ•เบปเบงเปเบ›.

เบ„เบณเป€เบงเบปเป‰เบฒ
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบเบฒเบ™เบ–เบดเป‰เบกเบ•เบปเป‰เบ™เป„เบกเป‰เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™.

eh เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ•เบปเบงเป€เบฅเบเบžเบฒเบเบžเบทเป‰เบ™ EH เบ–เบทเปเบ•เปˆเบฅเบฐเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™.

scev
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบงเบดเบงเบฑเบ–เบ™เบฒเบเบฒเบ™.

เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš (เบกเบตเบขเบนเปˆเปƒเบ™เบšเบฒเบ‡เบšเบฑเบ”เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™).

เบžเบฒเบ”เป‚เบญเบเบฒเบ”เบ™เบตเป‰
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบžเบฒเบ”เป„เบ› (เบกเบตเบขเบนเปˆเปƒเบ™เบšเบฒเบ‡เบšเบฑเบ”เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™).

เบญเปˆเบทเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฅเบฐเบญเบฝเบ”เบญเบทเปˆเบ™เป† (เบกเบตเบขเบนเปˆเปƒเบ™เบšเบฒเบ‡เบšเบฑเบ”เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™).

=เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™
เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เป„เบŸเบฅโ€‹เปŒ dump เบ—เบตเปˆโ€‹เบกเบตโ€‹เบŠเบทเปˆโ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹, เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เบŠเบทเปˆโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹. เป„เบŸเบฅเปŒ
เบŠเบทเปˆ stdout เปเบฅเบฐ stderr เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบžเบดเป€เบชเบ”เปเบฅเบฐเบ–เบทเบงเปˆเบฒเป€เบ›เบตเบ”เปเบฅเป‰เบง
เบเบฐเปเบชเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡,

gcc -O2 -ftree-vectorize -fdump-tree-vect-blocks=foo.dump
-fdump-tree-pre=stderr file.c

เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰ vectorizer dump เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ foo.dump, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ dump PRE เปเบกเปˆเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบชเบธเบ” stderr.
เบ–เป‰เบฒเบชเบญเบ‡เบŠเบทเปˆเป„เบŸเบฅเปŒ dump เบ—เบตเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡เบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบกเบญเบšเปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบœเปˆเบฒเบ™เบ”เบฝเบงเบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™ overrides เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

เบ—เบฑเบ‡เบซเบกเบปเบ” เป€เบ›เบตเบ”เบ•เบปเบงเป€เบฅเบทเบญเบเบ—เบฑเบ‡เปเบปเบ”, เบเบปเบเป€เบงเบฑเป‰เบ™ เบงเบฑเบ”เบ–เบธเบ”เบดเบš, เบเบฐเบ—เบฑเบ”เบฎเบฑเบ”, เบ„เบณเป€เบงเบปเป‰เบฒ เปเบฅเบฐ lineno.

optall
เป€เบ›เบตเบ”เบ•เบปเบงเป€เบฅเบทเบญเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบฑเบ‡เปเบปเบ”, เป€เบŠเบฑเปˆเบ™: เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”, เบžเบฒเบ”เป‚เบญเบเบฒเบ”เบ™เบตเป‰, เปเบฅเบฐ เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹.

เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ•เบปเป‰เบ™เป„เบกเป‰เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰:

เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš
เบ–เบดเป‰เบกเบเปˆเบญเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ•เบปเป‰เบ™เป„เบกเป‰, เป€เบžเบทเปˆเบญ file.original.

เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”
dump เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบ•เบปเป‰เบ™โ€‹เป„เบกเป‰โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹, เบเบฑเบšโ€‹ file.optimized.

gimple
เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบเปˆเบญเบ™ เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบ gimplification เบœเปˆเบฒเบ™เป„เบ›เบซเบฒเป„เบŸเบฅเปŒ. เป„เบŸเบฅเปŒ
เบŠเบทเปˆเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ .gimple เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

cfg เบ–เบดเป‰เบกเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบเบฒเบ™เป„เบซเบผเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบชเปˆเป„เบŸเบฅเปŒ. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบ
เป€เบžเบตเปˆเบกเป€เบ•เบตเบก .cfg เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

ch เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบฑเบ”เบฅเบญเบเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡ loop. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ
ch เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

ssa เบ–เบดเป‰เบกเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš SSA เปƒเบชเปˆเป„เบŸเบฅเปŒ. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ .เบชเบช
เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

alias
เบ–เบดเป‰เบกเบ‚เปเป‰เบกเบนเบ™เบ™เบฒเบกเปเบเบ‡เบชเบณเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ
.เบ™เบฒเบกเปเบเบ‡ เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

CCP เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบ CCP. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ .ccp เบเบฒเบ™
เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

storeccp
เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบ STORE-CCP. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ .storeccp
เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

pre เบ–เบดเป‰เบกเบ•เบปเป‰เบ™เป„เบกเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบ
เป€เบžเบตเปˆเบกเป€เบ•เบตเบก .เบเปˆเบญเบ™ เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

เบญเบดเบ”เบชเบฐเบฅเบฐ เบ–เบดเป‰เบกเบ•เบปเป‰เบ™เป„เบกเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆ. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ
.เบŸเบฃเบต เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

copyprop
เบ–เบดเป‰เบกเบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบซเบผเบฑเบ‡เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ .copyprop
เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

store_copyprop
เบ–เบดเป‰เบกเบ•เบปเป‰เบ™เป„เบกเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเปเบฒเป€เบ™เบปเบฒเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ
.store_copyprop เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

dce เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ•เบฒเบ. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบ
เป€เบžเบตเปˆเบกเป€เบ•เบตเบก .dce เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

เบ—เปˆเบฒเบ™ / เบ™เบฒเบ‡ เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™. เป„เบŸเบฅเปŒ
เบŠเบทเปˆเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ .sra เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

เบˆเบปเบกเบฅเบปเบ‡
เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบปเบกเบฅเบปเบ‡เบฅเบฐเบซเบฑเบ”. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบ
เป€เบžเบตเปˆเบกเป€เบ•เบตเบก .เบˆเบปเบก เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

dom เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เป€เบ”เบฑเปˆเบ™. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™
เป€เบฎเบฑเบ”โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ•เปเปˆโ€‹เป€เบ•เบตเบกโ€‹ .dom เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

เป€เบงเบปเป‰เบฒ เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเปƒเบŠเป‰เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบฎเป‰เบฒเบ™เบ„เป‰เบฒเบ—เบตเปˆเบ•เบฒเบเปเบฅเป‰เบง. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”
เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ•เปเปˆโ€‹เบ—เป‰เบฒเบโ€‹ .dse เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

phiopt
เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš PHI nodes เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบซเบฑเบ”เป€เบชเบฑเป‰เบ™เบเบปเบ‡. เป„เบŸเบฅเปŒ
เบŠเบทเปˆเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ .phiopt เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

forwprop
เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบปเปˆเบ‡เบ•เปเปˆเบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเปเบ›เบ—เบตเปˆเปƒเบŠเป‰เบ”เบฝเบง. เบŠเบทเปˆเป„เบŸเบฅเปŒ
เปเบกเปˆเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เป„เบ”เป‰โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ•เปเปˆโ€‹เบ—เป‰เบฒเบโ€‹ .forwprop เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

เบŠเบทเปˆเบชเบณเป€เบ™เบปเบฒ
เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เบŠเบทเปˆเบชเบณเป€เบ™เบปเบฒ. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™
เป€เบฎเบฑเบ”โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ•เปเปˆโ€‹เป€เบ•เบตเบกโ€‹ .copyrename เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

เบชเบฐเบšเบฑเบšเป€เบฅเบเบ—เบต เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เบ„เปˆเบฒเบชเบปเปˆเบ‡เบ„เบทเบ™เบ—เบตเปˆเบกเบตเบŠเบทเปˆเปƒเบ™เปเบšเบšเบ—เบปเปˆเบงเป„เบ›
เบ•เบปเป‰เบ™เป„เบกเป‰. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ .nrv เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

เบงเบตเบ—เบต
เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเปƒเบŠเป‰ vectorization เบ‚เบญเบ‡ loops. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”
เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ•เปเปˆโ€‹เบ—เป‰เบฒเบโ€‹ .vect เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

slp เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเปƒเบŠเป‰ vectorization เบ‚เบญเบ‡เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™. เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™
เป€เบฎเบฑเบ”โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ•เปเปˆโ€‹เป€เบ•เบตเบกโ€‹ .slp เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

vp เบ–เบดเป‰เบกเปเบ•เปˆเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบกเบนเบ™เบ„เปˆเบฒ (VRP). เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบ
เป€เบžเบตเปˆเบกเป€เบ•เบตเบก .vrp เบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

เบ—เบฑเบ‡เบซเบกเบปเบ” เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ–เบดเป‰เบกเบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบกเบตเบ—เบธเบ‡เบ—เบตเปˆเบกเบตเปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰.

-fopt-info
- fopt-เบ‚เปเป‰โ€‹เบกเบนเบ™-เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
- fopt-เบ‚เปเป‰โ€‹เบกเบนเบ™-เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™=เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™
เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ” dumps เบˆเบฒเบโ€‹เบœเปˆเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบ•เปˆเบฒเบ‡เป†โ€‹. เบ–เป‰เบฒ -เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เปเบšเบšเบŸเบญเบกเปเบกเปˆเบ™
เปƒเบŠเป‰เปเบฅเป‰เบง, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ - เปเบเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เป€เบฅเบทเบญเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ” dump เปเบฅเบฐ
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบ–เป‰เบฒ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰, เบกเบฑเบ™เบ•เบฑเป‰เบ‡เป„เบงเป‰เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™ เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ” เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹เปเบฅเบฐโ€‹
optall เบชเปเบฒเบฅเบฑเบšเบเบธเปˆเบกเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบ–เป‰เบฒ เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™ เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰, เบกเบฑเบ™เบ•เบฑเป‰เบ‡เป„เบงเป‰เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™
stderr. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบœเบปเบ™เบœเบฐเบฅเบดเบ” เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™ เบˆเบฐเบ–เบทเบเบ‚เบฝเบ™เบ—เบฑเบšเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบซเบผเบฒเบ
เบซเบ™เปˆเบงเบโ€‹เบ‡เบฒเบ™โ€‹เบเบฒเบ™โ€‹เปเบ›โ€‹เบžเบฒโ€‹เบชเบฒโ€‹. เบ–เป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบฅเบงเบกเบˆเบฒเบเบซเบผเบฒเบเบซเบ™เปˆเบงเบเบเบฒเบ™เปเบ›,
stderr เบ„เบงเบ™เปƒเบŠเป‰เปเบ—เบ™.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบชเบญเบ‡เบเบธเปˆเบก, 1) เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบ verbosity เบ‚เบญเบ‡
dump, เปเบฅเบฐ 2) เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบ—เบตเปˆโ€‹เบ„เบงเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบฅเบงเบกโ€‹. เบ—เบฒเบ‡เป€เบฅเบทเบญเบ
เบˆเบฒเบเบ—เบฑเบ‡เบชเบญเบ‡เบเบธเปˆเบกเบชเบฒเบกเบฒเบ”เบ›เบฐเบชเบปเบกเบเบฑเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เป€เบชเบฅเบตเบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบšเปเปˆเบ—เบฑเบšเบŠเป‰เบญเบ™เบเบฑเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เปƒเบ™เบเปเบฅเบฐเบ™เบต
เบ‚เบญเบ‡เบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡เปƒเบ”เป†, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบธเบ”เบ—เป‰เบฒเบ override เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡.
เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบซเบผเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ -fopt-info เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบš, เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบกเบต =เบŠเบทเปˆเป„เบŸเบฅเปŒ.
เบ–เป‰เบฒเบŠเบทเปˆเป„เบŸเบฅเปŒเบญเบทเปˆเบ™เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบ•เปˆเบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เบˆเบฐเบ–เบทเบเบฅเบฐเป€เบฅเบตเบ.

dump verbosity เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰

เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”
เบžเบดเบกเบ‚เปเป‰เบกเบนเบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ–เบทเบเบ™เบณเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบชเบณเป€เบฅเบฑเบ”เบœเบปเบ™. เบกเบฑเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบœเปˆเบฒเบ™
เป€เบžเบทเปˆเบญเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เปƒเบ”เบกเบตเบ„เบงเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, vectorizer เบœเปˆเบฒเบ™เบเบฒเบ™เบžเบดเบก
เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปเบซเบผเปˆเบ‡เบ‚เบญเบ‡ loops เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบš vectorized เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”.

เบžเบฒเบ”เป‚เบญเบเบฒเบ”เบ™เบตเป‰
เบžเบดเบกเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบžเบฒเบ”. เบšเบธเบเบ„เบปเบ™เบœเปˆเบฒเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆ
เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเบฐเบฅเบงเบกเบขเบนเปˆเปƒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡,

gcc -O2 -ftree-vectorize -fopt-info-vec-เบžเบฒเบ”

เบˆเบฐเบžเบดเบกเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบญเบเบฒเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบžเบฒเบ”เบˆเบฒเบ vectorization
เบœเปˆเบฒเบ™ stderr.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹
เบžเบดเบกเบ‚เปเป‰เบกเบนเบ™ verbose เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™,
เบ‚เปเป‰เบ„เบงเบฒเบกเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบ—เบฑเบ‡เบซเบกเบปเบ” เบžเบดเบกเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฅเบฐเบญเบฝเบ”. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบต เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”, เบžเบฒเบ”เป‚เบญเบเบฒเบ”เบ™เบตเป‰, เปเบฅเบฐ
เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹.

เบŠเบธเบ”เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบทเบญเบเบญเบฐเบ—เบดเบšเบฒเบเบเบธเปˆเบกเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบ›เบฐเบเบญเบšเบกเบตเบซเบ™เบถเปˆเบ‡เบซเบผเบท
เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰.

เบญเบตเบ™เป€เบ•เบตเป€เบ™เบฑเบ” เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

loop
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™ dumps เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš loop เบ—เบฑเบ‡เบซเบกเบปเบ”.

inline
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™ dumps เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš inlining เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบชเบดเปˆเบ‡เปœเบถเปˆเบ‡ เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš vectorization เบ—เบฑเบ‡เบซเบกเบปเบ”.

optall
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบฑเบ‡เบซเบกเบปเบ”. เบ™เบตเป‰เปเบกเปˆเบ™ superset เบ‚เบญเบ‡เบเบธเปˆเบกเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
เบฅเบฒเบเบŠเบทเปˆเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡.

เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡,

gcc -O3 -fopt-info-missed=missed.all

เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบžเบฒเบ”โ€‹เป‚เบญโ€‹เบเบฒเบ”โ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบšเบปเบ”โ€‹เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบœเปˆเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™ missed.เบ—เบฑเบ‡เปเบปเบ”.

เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™,

gcc -O3 -fopt-info-inline-optimized-missed=inline.txt

เบˆเบฐเบชเบปเปˆเบ‡เบญเบญเบเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบžเบฒเบ”เป„เบ›เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบˆเบฒเบ
inlining เบ—เบฑเบ‡เบซเบกเบปเบ”เบœเปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ inline.txt.

เบ–เป‰เบฒ เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™ เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ dumps เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™
concatenated เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ dump เปเบกเปˆเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปƒเบชเปˆ stderrเบ—เบตเปˆเบขเบนเปˆ เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™
เบ–เบทเบเบฅเบฐเป€เบงเบฑเป‰เบ™, เบกเบฑเบ™เบ•เบฑเป‰เบ‡เป„เบงเป‰เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™ All-optall, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ dump เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบกเบตเบขเบนเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”
เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบœเปˆเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰, เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
to stderr.

gcc -O3 -fopt-info

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ -fopt-info-vec-เบžเบฒเบ” เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบ„เบทเบเบฑเบ™เบเบฑเบš -fopt-info-missed-vec.

เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™, เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ

gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt

เบ—เบตเปˆเบ™เบตเป‰เบ—เบฑเบ‡เบชเบญเบ‡เบŠเบทเปˆเป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ” vec.mis เปเบฅเบฐ loop.opt เบกเบตเบ„เบงเบฒเบกเบ‚เบฑเบ”เปเบเป‰เบ‡เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡
เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบžเบฝเบ‡เปเบ•เปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเปเบฅเบฐ
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ•เปเปˆเบกเบฒเบ–เบทเบเบฅเบฐเป€เบฅเบตเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆ vec.mis เปเบกเปˆเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ—เบตเปˆโ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ”เป‰เบงเบโ€‹
dumps เบˆเบฒเบ vectorizer เบเปˆเบฝเบงเบเบฑเบšเป‚เบญเบเบฒเบ”เบžเบฒเบ”.

-frandom-seed=string
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบฐเบซเบ™เบญเบ‡เปเบ™เบงเบžเบฑเบ™เบ—เบตเปˆ GCC เปƒเบŠเป‰เปเบ—เบ™เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบกเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡
เบŠเบทเปˆเบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบ—เบธเบเป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบก. เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™
เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบงเบฒเบ‡เบชเบฐเปเบ•เบกเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเปƒเบ™เป„เบŸเบฅเปŒเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เปเบฅเบฐเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบœเบฐเบฅเบดเบ”
เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป„เบ”เป‰ - เป€เบกเบฑเบ”เบžเบฑเบ™ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบˆเบฐเบœเบฐเบฅเบดเบ”เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™
เป„เบŸเบฅเปŒ.

เป„เบ”เป‰ string เบ„เบงเบ™เบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เป„เบŸเบฅเปŒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบฅเบงเบšเบฅเบงเบก.

-fsched-verbose=n
เบเปˆเบฝเบงเบเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ„เบงเบšเบ„เบธเบกเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡
debugging output the scheduler prints . เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ‚เบฝเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบกเบฒเบ”โ€‹เบ•เบฐโ€‹เบ–เบฒเบ™โ€‹,
เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒ -fdump-rtl-sched1 or -fdump-rtl-sched2 เปเบกเปˆเบ™เบฅเบฐเบšเบธเป„เบงเป‰, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบกเบฑเบ™เปเบกเปˆเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”
เป„เบ›เบซเบฒเป„เบŸเบฅเปŒเบฅเบฒเบเบŠเบทเปˆ dump เบ›เบปเบเบเบฐเบ•เบด, .sched1 or .sched2 เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบกเบชเปเบฒเบฅเบฑเบš n
เบซเบผเบฒเบเบเปˆเบงเบฒเป€เบเบปเป‰เบฒ, เบœเบปเบ™เบœเบฐเบฅเบดเบ”เป„เบ”เป‰เบ–เบทเบเบžเบดเบกเบญเบญเบเบชเบฐเป€เบซเบกเบตเบเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ n เบซเบผเบฒเบโ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เบชเบนเบ™โ€‹, -fsched-verbose outputs เบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš
-fdump-rtl-sched1 เปเบฅเบฐ -fdump-rtl-sched2เบ—เบตเปˆเบขเบนเปˆ เบชเปเบฒเบฅเบฑเบš n เบซเบผเบฒเบเบเปˆเบงเบฒเบซเบ™เบถเปˆเบ‡, เบกเบฑเบ™เบเบฑเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™
เบ„เบงเบฒเบกโ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰ blockโ€‹, เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹เบ—เบตเปˆโ€‹เบเบฝเบกโ€‹เบžเป‰เบญเบกโ€‹เปเบฅเบฐโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบซเบ™เปˆเบงเบโ€‹เบ‡เบฒเบ™ / insnโ€‹. เบชเปเบฒเบฅเบฑเบš n
เบซเบผเบฒเบเบเบงเปˆเบฒเบชเบญเบ‡, เบกเบฑเบ™เบ›เบฐเบเบญเบšเบกเบต RTL เบขเบนเปˆเบˆเบธเบ”เบ—เบตเปˆเป€เบญเบปเบฒเบฅเบนเบเบญเบญเบ, เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเบžเบทเป‰เบ™. เปเบฅเบฐ
เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ n เบซเบผเบฒเบโ€‹เบเบงเปˆเบฒโ€‹เบชเบตเปˆโ€‹, -fsched-verbose เบฅเบงเบกเบ—เบฑเบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช.

- save-tempsโ€‹
-save-temps=cwd
เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบŸเบฅเปŒเบเบฒเบ‡ "เบŠเบปเปˆเบงเบ„เบฒเบง" เบ›เบปเบเบเบฐเบ•เบดเบขเปˆเบฒเบ‡เบ–เบฒเบงเบญเบ™; เบงเบฒเบ‡เบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบฅเบฐเบ•เบฑเป‰เบ‡เบŠเบทเปˆเบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก foo.c เบเบฑเบš -c
- save-tempsโ€‹ เบœเบฐเบฅเบดเบ”เป„เบŸเบฅเปŒ foo.i เปเบฅเบฐ foo.sเป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบš foo.o. เบ™เบตเป‰เบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™
เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™ foo.i เป„เบŸเบฅโ€‹เปŒโ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒ compiler เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ an
preprocessor เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™.

เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš -x เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡, - save-tempsโ€‹ เปเบกเปˆเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™
เบžเบฝเบ‡โ€‹เบžเปโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบซเบผเบตเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบเบฒเบ™โ€‹เบ‚เบฝเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เปเบซเบผเปˆเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบเบฑเบš an
เป„เบŸเบฅเปŒเบเบฒเบ‡. เป„เบŸเบฅเปŒเบเบฒเบ‡เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เบŠเบทเปˆ
เป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰ - save-tempsโ€‹.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบญเบตเป‰เบ™ GCC เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™, เบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™ a
เบŠเบทเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเปˆเบญเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบทเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบชเปเบฒเบฅเบฑเบš
เบˆเบธเบ”เบซเบกเบฒเบเบ›เบฒเบเบ—เบฒเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบซเบผเบฒเบ, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบงเปˆเบฒ compilers เบ‚เบฐเบซเบ™เบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบˆเบฐ
เปเบŠเบเปเบŠเบ‡เป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เปเบฅเบฐเบ‚เบฝเบ™เบ—เบฑเบšเป„เบŸเบฅเปŒเบŠเบปเปˆเบงเบ„เบฒเบง. เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

gcc -save-temps -o outdir1/foo.o indir1/foo.c&
gcc -save-temps -o outdir2/foo.o indir2/foo.c&

เบญเบฒเบ”เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบ™ foo.i เปเบฅเบฐ foo.o เบ–เบทเบเบ‚เบฝเบ™เป„เบ›เบžเป‰เบญเบกเป†เบเบฑเบ™เป‚เบ”เบ compilers เบ—เบฑเบ‡เบชเบญเบ‡.

-save-temps=obj
เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบŸเบฅเปŒเบเบฒเบ‡ "เบŠเบปเปˆเบงเบ„เบฒเบง" เบ›เบปเบเบเบฐเบ•เบดเบขเปˆเบฒเบ‡เบ–เบฒเบงเบญเบ™. เบ–เป‰เบฒ -o เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹,
เป„เบŸเบฅเปŒเบŠเบปเปˆเบงเบ„เบฒเบงเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ. เบ–เป‰เบฒ -o เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เป„เบ”เป‰
-save-temps=obj เบชเบฐเบซเบผเบฑเบšเป€เบฎเบฑเบ”เบ•เบปเบงเบ„เบท - save-tempsโ€‹.

เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

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.

เป€เบงเบฅเบฒ[=เป€เบญเบเบฐเบชเบฒเบ™]
เบฅเบฒเบเบ‡เบฒเบ™เป€เบงเบฅเบฒ CPU เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปเบ•เปˆเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเปˆเบญเบเปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบชเปเบฒเบฅเบฑเบš C
เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™ compiler เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปเบฅเบฐ assembler (เบšเบงเบเบเบฑเบš linker เบ–เป‰เบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบกเปˆเบ™
เบชเปเบฒเป€เบฅเบฑเบ”).

เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹, เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบ„เบทโ€‹เบ™เบตเป‰โ€‹:

#cc1 0.12 0.01
# เป€เบ›เบฑเบ™ 0.00 0.01

เบ•เบปเบงเป€เบฅเบเบ—เปเบฒเบญเบดเบ”เปƒเบ™เปเบ•เปˆเบฅเบฐเป€เบชเบฑเป‰เบ™เปเบกเปˆเบ™ "เป€เบงเบฅเบฒเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰", เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”
เป‚เบ„เบ‡เบเบฒเบ™เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡. เบ•เบปเบงเป€เบฅเบเบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™ "เป€เบงเบฅเบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš", เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™
เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปƒเบ™เบ™เบฒเบกเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™. เบ•เบปเบงเป€เบฅเบเบ—เบฑเบ‡เบชเบญเบ‡เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบงเบดเบ™เบฒเบ—เบต.

เบ”เป‰เบงเบโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป„เบ”เป‰โ€‹, เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ•เปเปˆโ€‹เบ—เป‰เบฒเบโ€‹เบเบฑเบšโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบŠเบทเปˆโ€‹,
เปเบฅเบฐเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

0.12 0.01 cc1
0.00 0.01 เป€เบ›เบฑเบ™

"เป€เบงเบฅเบฒเบœเบนเป‰เปƒเบŠเป‰" เปเบฅเบฐ "เป€เบงเบฅเบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš" เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบเปˆเบญเบ™เบŠเบทเปˆเป‚เบ„เบ‡เบเบฒเบ™, เปเบฅเบฐ
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบœเปˆเบฒเบ™โ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เปเบกเปˆเบ™โ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹, เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เปƒเบ™โ€‹เบ•เปเปˆโ€‹เบกเบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบšเบญเบโ€‹เป„เบ”เป‰โ€‹เบงเปˆเบฒโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เปเบกเปˆเบ™โ€‹
เบ–เบทเบเบฅเบงเบšเบฅเบงเบก, เปเบฅเบฐเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ”.

-fvar-เบ•เบดเบ”เบ•เบฒเบก
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ•เบปเบงเปเบ›. เบกเบฑเบ™เบ„เบดเบ”เป„เบฅเปˆเบšเปˆเบญเบ™เบ—เบตเปˆเบ•เบปเบงเปเบ›เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เปเบ•เปˆเบฅเบฐเบ•เปเบฒเปเบซเบ™เปˆเบ‡
เปƒเบ™เบฅเบฐเบซเบฑเบ”. เบ‚เปเป‰เบกเบนเบ™ debugging เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเปเบกเปˆเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™ (เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™ debugging
เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ™เบตเป‰โ€‹)โ€‹.

เบกเบฑเบ™เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš (-เบญเบช, -O, -O2, ... ),
เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ (-g) เปเบฅเบฐเบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™ debug เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบกเบฑเบ™.

-fvar-tracking-assignments
เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบกเบญเบšเปเบฒเบเปƒเบซเป‰เบเบฑเบšเบ•เบปเบงเปเบ›เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก เปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบ•เบดเบšเบฑเบ”
เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเปƒเบ™เป„เบฅเบเบฐเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ•เบฐเบซเบผเบญเบ”เป„เบ›เบˆเบปเบ™เป€เบ–เบดเบ‡เบ—เบตเปˆเบชเบธเบ”, เปƒเบ™เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบก
เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบ‚เปเป‰เบกเบนเบ™เบ”เบตเบšเบฑเบเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ -gdwarf-4 เปเบกเปˆเบ™เปเบ™เบฐเบ™เปเบฒเบžเป‰เบญเบก
เบเบฑเบšโ€‹เบกเบฑเบ™.

เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เปƒเบŠเป‰เป„เบ”เป‰เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก var เบˆเบฐเบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบ„เปเบฒเบšเบฑเบ™เบเบฒเบ
เบชเป‰เบฒเบ‡เปเบฅเบฐเบฎเบฑเบเบชเบฒ, เปเบ•เปˆเบ–เบทเบเบเบปเบเป€เบฅเบตเบเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบ.

-fvar-tracking-assignments-toggle
Toggle -fvar-tracking-assignments, เปƒเบ™เบ—เบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เบ™เบฑเป‰เบ™ -gtoggle เบชเบฐเบซเบผเบฑเบš -g.

-print-file-name=เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”
เบžเบดเบกเบŠเบทเปˆเป€เบ•เบฑเบกเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ--- เปเบฅเบฐเบขเปˆเบฒเป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบญเบตเบ. เบ”เป‰เบงเบเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰, GCC เบšเปเปˆเป„เบ”เป‰เบฅเบงเบšเบฅเบงเบกเบซเบผเบทเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
เบซเบเบฑเบ‡; เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบžเบดเบกเบŠเบทเปˆเป„เบŸเบฅเปŒ.

-print-multi-directory
เบžเบดเบกเบŠเบทเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบš multilib เบ—เบตเปˆเป€เบฅเบทเบญเบเป‚เบ”เบเบชเบฐเบงเบดเบ”เบญเบทเปˆเบ™
เบกเบตเบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบกเบตเบขเบนเปˆเปƒเบ™ GCC_EXEC_PREFIX.

-print-multi-lib
เบžเบดเบกเปเบœเบ™เบ—เบตเปˆเบˆเบฒเบเบŠเบทเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต multilib เป„เบ›เบซเบฒเบชเบฐเบซเบผเบฑเบš compiler เบ—เบตเปˆเป€เบ›เบตเบ”เปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™.
เบŠเบทเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ–เบทเบเปเบเบเบญเบญเบเบˆเบฒเบเบชเบฐเบซเบผเบฑเบšเป‚เบ”เบ ;, เปเบฅเบฐเปเบ•เปˆเบฅเบฐเบชเบฐเบซเบผเบฑเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ
@ เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ -, เป‚เบ”เบเบšเปเปˆเบกเบตเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบฐเบซเบผเบฑเบšเบซเบผเบฒเบ. เบ™เบตเป‰เปเบกเปˆเบ™ supposed
เบ‡เปˆเบฒเบเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบเบฐ.

-print-multi-os-directory
เบžเบดเบกเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” OS เบชเปเบฒเบฅเบฑเบš multilib เบ—เบตเปˆเป€เบฅเบทเบญเบ, เบ—เบฝเบšเบเบฑเบšเบšเบฒเบ‡เบญเบฑเบ™ lib
เบšเบฑเบ™เบŠเบตเบเปˆเบญเบ. เบ–เป‰เบฒเบกเบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” OS เบขเบนเปˆเปƒเบ™ lib subdirectory เปเบฅเบฐเบšเปเปˆเบกเบต multilibs
เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เบ™เบตเป‰เปเบกเปˆเบ™เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบžเบฝเบ‡เปเบ•เปˆ ., เบ–เป‰เบฒเบกเบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” OS เบขเบนเปˆเปƒเบ™ libsuffix เบญเป‰เบฒเบเป€เบญเบทเป‰เบญเบเบ™เป‰เบญเบ‡
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบตเป‰เบžเบดเบกเป€เบŠเบฑเปˆเบ™: ../lib64, ../ lib or ../lib32, เบซเบผเบทเบ–เป‰เบฒเบกเบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” OS
เบ›เบฐเบˆเบธเบšเบฑเบ™เปƒเบ™ lib/subdir subdirectories เบกเบฑเบ™เบžเบดเบกเป€เบŠเบฑเปˆเบ™: amd64, sparcv9 or เป€เบฎเบทเบญเบ™6.

-print-multiarch
เบžเบดเบกเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” OS เบชเปเบฒเบฅเบฑเบš multiarch เบ—เบตเปˆเป€เบฅเบทเบญเบ, เบ—เบฝเบšเบเบฑเบšเบšเบฒเบ‡เบญเบฑเบ™ lib
เป„เบ”เป€เบฃเบฑเบเบ—เปเบฃเบตเบเปˆเบญเบ

-print-prog-name=เป‚เบ„เบ‡เบเบฒเบ™
เบ„เบท -print-file-name, เปเบ•เปˆเบ„เบปเป‰เบ™เบซเบฒเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เป€เบŠเบฑเปˆเบ™: cpp.

-print-libgcc-file-name
เบ„เบทโ€‹เบเบฑเบ™โ€‹เบเบฑเบš -print-file-name=libgcc.a.

เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เปƒเบŠเป‰ -nostdlib or -nodefaultlibs เปเบ•เปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš
libgcc.a. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰:

gcc -nostdlib ... `gcc -print-libgcc-file-name`

-print-search-dirs
เบžเบดเบกเบŠเบทเปˆเบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปเบฅเบฐเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป‚เบ›เบฅเปเบเบฅเบกเปเบฅเบฐ
เบฅเบฒเบเบŠเบทเปˆเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” gcc เบ„เบปเป‰เบ™เบซเบฒ --- เปเบฅเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบญเบตเบ.

เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ gcc เบžเบดเบกโ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹ เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ เบ›เบฑเบ™เบซเบฒ, เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰ exec
cpp0: No เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง เป€เบญเบเบฐเบชเบฒเบ™ or เบฅเบฐเบšเบปเบš. เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบ—เปˆเบฒเบ™ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบชเปˆ cpp0 เปเบฅเบฐ
เบญเบปเบ‡เบ›เบฐเบเบญเบš compiler เบญเบทเปˆเบ™เป†เบ—เบตเปˆ gcc เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบŠเบญเบเบซเบฒเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เบซเบผเบทเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป„เบ”เป‰
เบ•เบปเบงเปเบ›เบชเบดเปˆเบ‡เปเบงเบ”เบฅเป‰เบญเบก GCC_EXEC_PREFIX เป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบžเบงเบเบกเบฑเบ™. เบขเปˆเบฒ
เบฅเบทเบกเบ•เบดเบ”เบ•เบฒเบก /.

-print-sysroot
เบžเบดเบกเป„เบ”เป€เบฃเบฑเบเบ—เปเบฃเบต sysroot เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
sysroot เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบ—เบตเปˆโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เบ—เบฑเบ‡โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป„เบงเป‰โ€‹เบซเบผเบทโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ --sysroot เบ—เบฒเบ‡เป€เบฅเบทเบญเบ,
เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ–เป‰เบฒเบšเปเปˆเบกเบตเป€เบ›เบปเป‰เบฒเปเบฒเบ
sysroot เบ–เบทเบเบฅเบฐเบšเบธ, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบžเบดเบกเบšเปเปˆเบกเบตเบซเบเบฑเบ‡.

-print-sysroot-headers-suffix
เบžเบดเบกเบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบเบ—เบตเปˆเป€เบžเบตเปˆเบกเปƒเบชเปˆ sysroot เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบŠเบญเบเบซเบฒ headers, เบซเบผเบทเปƒเบซเป‰ an
เบœเบดเบ”เบžเบฒเบ”เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ compiler เบšเปเปˆเป„เบ”เป‰ configured เบเบฑเบšเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง suffix --- เปเบฅเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบซเบเบฑเบ‡.
เบญเบทเปˆเบ™ เป†

- เป€เบ„เบทเปˆเบญเบ‡โ€‹เบ‚เบตเป‰โ€‹เบเบธเปˆเบ™
เบžเบดเบกเป€เบ„เบทเปˆเบญเบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบเบ‚เบญเบ‡เบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡: i686-pc-linux-gnu) --- เปเบฅเบฐเบขเปˆเบฒเป€เบฎเบฑเบ”
เบกเบตโ€‹เบซเบเบฑเบ‡โ€‹เบญเบตเบโ€‹เบšเปเปˆ.

- dumpversion
เบžเบดเบกเบชเบฐเบšเบฑเบš compiler (เบ•เบปเบงเบขเปˆเบฒเบ‡: 3.0)--- เปเบฅเบฐเบขเปˆเบฒเป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบญเบตเบ.

- dumpspecs
เบžเบดเบกเบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเป€เบžเบฒเบฐเปƒเบ™เบ•เบปเบงเบ‚เบญเบ‡ compiler-- เปเบฅเบฐเบขเปˆเบฒเป€เบฎเบฑเบ”เบญเบฑเบ™เบญเบทเปˆเบ™. (เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹
GCC เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบเปเบฒเบฅเบฑเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡.)

-fno-eliminate-unused-debug-types
เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, เป€เบกเบทเปˆเบญเบœเบฐเบฅเบดเบ”เบœเบปเบ™เบœเบฐเบฅเบดเบ” DWARF 2, GCC เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบชเบฑเบ™เบเบฒเบฅเบฑเบเบ”เบตเบšเบฑเบเบชเปเบฒเบฅเบฑเบš
เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบšเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เปเบซเบผเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบ–เบทเบโ€‹เบฅเบงเบšเบฅเบงเบกโ€‹. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”
เป€เบžเบทเปˆเบญเปƒเบซเป‰ GCC เบ›เปˆเบญเบเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบเบฒเบ”เบขเบนเปˆเปƒเบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบฅเบงเบšเบฅเบงเบก,
เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เปƒเบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡เบ–เป‰เบฒ, เปƒเบ™ debugger, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบ„เปˆเบฒเป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเบˆเบดเบ‡
เปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™ (เปเบ•เปˆเบ–เบทเบเบ›เบฐเบเบฒเบ”). เป€เบฅเบทเป‰เบญเบเป†, เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ™เบตเป‰เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰ a
เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบชเบเป€เบ‡เบดเบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบ—เบตเปˆ เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”
เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†.

เป‚เบ”เบเบšเปเปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ”เป†, เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก
เปเบฅเบฐเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰ debugging เบœเบฐเบฅเบดเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰. เบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™เปเบกเปˆเบ™เป€เบญเบเบฐเบฅเบฒเบ”: เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒ
เบขเบธเบ”เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบˆเบธเบ”เปเบšเปˆเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเปƒเบซเบกเปˆเปƒเบซเป‰เบเบฑเบš
เบ•เบปเบงเปเบ›เปƒเบ”เป†เบซเบผเบทเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ•เป‰เบฒเบ™เบเบฑเบšเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบญเบทเปˆเบ™เป†เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบš
เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ„เบฒเบ”เบซเบงเบฑเบ‡เบˆเบฒเบเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡.

เบเบฒเบ™เป€เบ›เบตเบ”เบ—เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบžเบฐเบเบฒเบเบฒเบกเบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš เปเบฅเบฐ/เบซเบผเบท
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบฅเบงเบšโ€‹เบฅเบงเบกโ€‹เปเบฅเบฐโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ—เบตเปˆโ€‹เบˆเบฐ debug เป„เบ”เป‰โ€‹
เป‚เบ„เบ‡เบเบฒเบ™.

compiler เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ„เบงเบฒเบกเบฎเบนเป‰เบ—เบตเปˆเบกเบฑเบ™เบกเบตเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™.
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเบซเบผเบฒเบเป„เบŸเบฅเปŒเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป‚เบซเบกเบ”เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ”เบฝเบงเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบ™เปเบฒเปƒเบŠเป‰
เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบˆเบฒเบโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบชเบฑเบ‡โ€‹เบฅเบงเบกโ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เบ„เบปเบ™โ€‹.

เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบฑเบ‡เปเบปเบ”เบ–เบทเบเบ„เบงเบšเบ„เบธเบกเป‚เบ”เบเบเบปเบ‡เป‚เบ”เบเบ—เบธเบ‡. เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบกเบต a
เบ—เบธเบ‡เปเบกเปˆเบ™เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบžเบฒเบเบ™เบตเป‰.

เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบกเบต -O เบฅเบฐเบ”เบฑเบšเปเบกเปˆเบ™เบเปเบฒเบ™เบปเบ”เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฐเบฅเบฐเบšเบธเบ—เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™.

เบญเบตเบ‡เบ•เบฒเบกเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™ GCC เป„เบ”เป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบŠเบธเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบ‚เบญเบ‡
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบญเบฒเบ”เบˆเบฐเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เปเบ•เปˆเบฅเบฐเบ„เบฑเป‰เบ‡ -O เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เบ—เบตเปˆโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™ GCC เป„เบ”เป‰
เบเบฑเบš -Q --help=optimizers เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบŠเบธเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ—เบตเปˆเป€เบ›เบตเบ”เปƒเบŠเป‰เบขเบนเปˆ
เปเบ•เปˆเบฅเบฐเบ‚เบฑเป‰เบ™.

-O
-O1 เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบเบงเปˆเบฒ, เปเบฅเบฐเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบซเบผเบฒเบเบเบงเปˆเบฒเป€เบเบปเปˆเบฒ
เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ.

เบเบฑเบš -O, compiler เบžเบฐเบเบฒเบเบฒเบกเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ”เป†เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ.

-O เป€เบ›เบตเบ”เบ—เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

-fauto-inc, เบ„เบฐ -fcompare-elim -fcprop-เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ -fdce -fdefer-pop -fdelayed-เบชเบฒเบ‚เบฒ
-fdse -fguess-เบชเบฒเบ‚เบฒ-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ -fif เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡ 2โ€‹ -fif เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹ -fipa-pure-const
-fipa-profile -fipa เบญเป‰เบฒเบ‡โ€‹เบญเบตเบ‡โ€‹ -fmerge-เบ„เบปเบ‡เบ—เบตเปˆ -fsplit-wide-types -ftree-bit-ccp
-ftree-builtin-call-dce -ftree-ccp -ftre-ch -free-copyrename -ftree-dce
-ftree-dominator-opts -ftree-dse -ftree-forwprop - เบŸเบฃเบตโ€‹เบŸเบฃเบตโ€‹ -ftree-phiprop -ftree-slsr
-ftree-sra -ftree-pta - เบซเป‰เบฒโ€‹เบ›เบตโ€‹ -funit-at-a-time

-O เบเบฑเบ‡เป€เบ›เบตเบ”เบขเบนเปˆ -fomit-frame-pointer เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™เบšเปเปˆเปเบŠเบเปเบŠเบ‡
เบเบฑเบš debugging.

-O2 เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบเบงเปˆเบฒเป€เบเบปเปˆเบฒ. GCC เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบเบทเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบšเปเปˆเบกเบต
เบกเบตโ€‹เบชเปˆเบงเบ™โ€‹เบฎเปˆเบงเบกโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เปเบฅเบโ€‹เบ›เปˆเบฝเบ™โ€‹เบ„เบงเบฒเบกโ€‹เป„เบงโ€‹เบญเบฐโ€‹เบงเบฐโ€‹เบเบฒเบ”โ€‹. เป€เบกเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบš -O, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ—เบฑเบ‡เบชเบญเบ‡
เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™.

-O2 เป€เบ›เบตเบ”เบ—เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบ -O. เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบตเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰
เบ—เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš: -fthread-jumps -falign-functions -falign-jumps -falign-loops
-falign-เบ›เป‰เบฒเบ -fcaller-เบ›เบฐเบซเบเบฑเบ” -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks
-fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively
-fexpensive-optimizations -fgcse -fgcse-lm -fhoist-adjacent-loads
-finline-small-functions -findirect-inlining -fipa-sra
-fisolate-erroneous-paths-dereference -foptimize-sibling-calls -fpartial-inlining
-fpeephole2 -freorder-เบ•เบฑเบ™ -freorder - เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹ -frerun-cse-after-loop
-fsched-interblock -fsched-spec -fschedule-insns -fschedule-insns2 -fstrict-aliasing
-fstrict-เบฅเบปเป‰เบ™ -ftre-switch-เปเบ›เบ‡ -ftree-tail-merge -ftre-pre -ftree-vrp

เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบ„เปเบฒเป€เบ•เบทเบญเบ™เบžเบฒเบเปƒเบ•เป‰ -fgcse เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡ -O2 เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰
เป‚เบเป‚เบ•.

เบซเบกเบฒเบเป€เบซเบ”: เปƒเบ™ Ubuntu 8.10 เปเบฅเบฐเบฎเบธเปˆเบ™เบ•เปเปˆเบกเบฒ, -D_FORTIFY_SOURCE=2 เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบฅเบฐเปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป€เบกเบทเปˆเบญ -O เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™ 2 เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป€เบงเบฅเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐ
เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบงเบฅเบฒเปเบฅเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ libc เบซเบผเบฒเบ. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™, เปƒเบซเป‰เบฅเบฐเบšเบธเบญเบฑเบ™เปƒเบ”เบ™เบถเปˆเบ‡
-U_FORTIFY_SOURCE or -D_FORTIFY_SOURCE=0.

-O3 เบ›เบฑเบšโ€‹เปƒเบซเป‰โ€‹เบ”เบตโ€‹เบซเบผเบฒเบโ€‹. -O3 เป€เบ›เบตเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป‚เบ”เบ -O2 เปเบฅเบฐเบเบฑเบ‡เป€เบ›เบตเบ”
เป„เบ”เป‰ -finline-functions, -funswitch-loops, -fpredictive-commoning, -fgcse-after-reload,
-ftree-loop-vectorize, -ftree-slp-vectorize, -fvect-cost-model, -ftree-partial-pre เปเบฅเบฐ
-fipa-cp-clone เบ•เบปเบงเป€เบฅเบทเบญเบ

-O0 เบซเบผเบธเบ”เบœเปˆเบญเบ™เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ”เบตเบšเบฑเบเบชเป‰เบฒเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
Default

-เบญเบช เบ›เบฑเบšเปเบ•เปˆเบ‡เบ‚เบฐเปœเบฒเบ”. -เบญเบช เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบฑเบ‡เบซเบกเบปเบ” -O2 เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบšเปเปˆเบ›เบปเบเบเบฐเบ•เบดเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™
เบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”. เบกเบฑเบ™เบเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”.

-เบญเบช เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบ—เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰: -falign-functions -falign-jumps
-falign-loops -falign-เบ›เป‰เบฒเบ -freorder-เบ•เบฑเบ™ -freorder-blocks-and-partition
-fprefetch-loop-arrays

- เป„เบง
เบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”. - เป„เบง เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบฑเบ‡เบซเบกเบปเบ” -O3 เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบกเบฑเบ™เบเบฑเบ‡
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เบกเบฑเบ™
เป€เบ›เบตเบ” -fast เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹ เปเบฅเบฐ Fortran เบชเบฐเป€เบžเบฒเบฐ -fno-protect-parens เปเบฅเบฐ -fstack-arrays.

- เบญเบˆ เบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ. - เบญเบˆ เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบšเปเปˆเปเบŠเบเปเบŠเบ‡
เบเบฒเบ™เบ”เบตเบšเบฑเบ. เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.
compile-debug cycle, เบชเบฐเป€เบซเบ™เบตเบฅเบฐเบ”เบฑเบšเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบฑเบเบชเบฒ
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป„เบงเปเบฅเบฐเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ”เบตเบšเบฑเบเบ—เบตเปˆเบ”เบต.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบซเบผเบฒเบ -O เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบกเบตเบซเบผเบทเบšเปเปˆเบกเบตเบ•เบปเบงเป€เบฅเบเบฅเบฐเบ”เบฑเบš, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™
เบญเบฑเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบœเบปเบ™.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เปเบšเบšเบŸเบญเบก -fเบ—เบธเบ‡ เบฅเบฐเบšเบธเบ—เบธเบ‡เป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ. เบ—เบธเบ‡เบชเปˆเบงเบ™เปƒเบซเบเปˆเบกเบตเบ—เบฑเบ‡เบชเบญเบ‡
เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ—เบฒเบ‡โ€‹เบšเบงเบโ€‹เปเบฅเบฐโ€‹เบ—เบฒเบ‡โ€‹เบฅเบปเบšโ€‹; เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ—เบฒเบ‡โ€‹เบฅเบปเบšโ€‹เบ‚เบญเบ‡โ€‹ -ffoo is -fno-foo. เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰,
เบกเบตเบžเบฝเบ‡เปเบ•เปˆเปเบšเบšเบŸเบญเบกเบ”เบฝเบงเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰ --- เปเบšเบšเบŸเบญเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เปƒเบŠเป‰เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบดเบ”เบญเบญเบเบญเบทเปˆเบ™เป†
เปเบšเบšเบŸเบญเบกเป‚เบ”เบเบเบฒเบ™เบ–เบญเบ™เบญเบญเบ เบšเปเปˆ- เบซเบผเบทเป€เบžเบตเปˆเบกเบกเบฑเบ™.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบฐเป€เบžเบฒเบฐ. เบžเบงเบเบกเบฑเบ™เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ -O
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบซเบผเบทโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ—เบธเบ‡เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปƒเบ™เบ—เบตเปˆเบซเบฒเบเบฒเบ
เบเปเบฅเบฐเบ™เบตเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ "เบ›เบฑเบšเบฅเบฐเบญเบฝเบ”" เบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

-fno-defer-pop
เบ›เบฐเบเบปเบ”เบเบฒเบ™เป‚เบ•เป‰เปเบเป‰เบ‡เปƒเบซเป‰เบเบฑเบšเปเบ•เปˆเบฅเบฐเบเบฒเบ™เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบฑเป‰เบ™เบเบฑเบšเบ„เบทเบ™เบกเบฒ. เบชเปเบฒเบฅเบฑเบš
เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เบ›เบฐเบเบปเบ”เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป‚เบ—เบŸเบฑเบ‡เบŠเบฑเบ™, เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง compiler เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰
arguments เบชเบฐเบชเบปเบกเบขเบนเปˆเปƒเบ™ stack เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบซเบผเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐ pops เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบขเบนเปˆเบ—เบตเปˆ
เบ„เบฑเป‰เบ‡เบซเบ™เบถเปˆเบ‡.

เบ„เบปเบ™เบžเบดเบเบฒเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบš -O, -O2, -O3, -เบญเบช.

-fforward-เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เปƒเบ™ RTL. เบœเปˆเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบชเบปเบกเบ—เบปเบšเบชเบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ
เปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเบฒเบกเบฒเบ”เบ‡เปˆเบฒเบเบ”เบฒเบ. เบ–เป‰เบฒเบเบฒเบ™เบ–เบญเบ” looping เป€เบฎเบฑเบ”เบงเบฝเบ, เบชเบญเบ‡ passes
เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบ„เบฑเป‰เบ‡เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบซเบผเบฑเบ‡เบˆเบฒเบ loop unrolling.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš -O, -O2, -O3, -เบญเบช.

-ffp-เบชเบฑเบ™เบเบฒ=เปเบšเบš
-ffp-contract=เบ›เบดเบ” เบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฒเบ™เบซเบปเบ”เบ•เบปเบงเบชเบฐเปเบ”เบ‡เบˆเบธเบ”เบฅเบญเบ. -ffp-contract=เป„เบง
เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบซเบปเบ”โ€‹เบ•เบปเบงโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เบญเบญเบโ€‹เบˆเบธเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเปˆเบญเบ™โ€‹เป„เบ”เป‰โ€‹เป€เบŠเบฑเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เป€เบ›เบฑเบ™ fused multiply-addโ€‹
เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ. -ffp-contract=on เป€เบฎเบฑเบ”เปƒเบซเป‰
เบเบฒเบ™เบซเบปเบ”เบ•เบปเบงเบชเบฐเปเบ”เบ‡เบˆเบธเบ”เบฅเบญเบเบ–เป‰เบฒเบญเบฐเบ™เบธเบเบฒเบ”เป‚เบ”เบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบžเบฒเบชเบฒ. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ—เบปเปˆเบฒเบเบฑเบš -ffp-contract=เบ›เบดเบ”.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -ffp-contract=เป„เบง.

-fomit-frame-pointer
เบขเปˆเบฒเป€เบเบฑเบšเบ•เบปเบงเบŠเบตเป‰เบเบญเบšเบขเบนเปˆเปƒเบ™เบ—เบฐเบšเบฝเบ™เบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบ™เบถเปˆเบ‡. เบ™เบตเป‰
เบซเบผเบตเบโ€‹เบฅเป‰เบฝเบ‡โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เป€เบžเบทเปˆเบญโ€‹เบŠเปˆเบงเบโ€‹เบ›เบฐโ€‹เบขเบฑเบ”โ€‹, เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบŸเบทเป‰เบ™โ€‹เบŸเบนโ€‹เบ•เบปเบงโ€‹เบŠเบตเป‰โ€‹เบเบญเบšโ€‹; เบกเบฑเบ™เบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ›เบฑเบ™
เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบžเบดเป€เบชเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบซเบผเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆ. It เบเบฑเบ‡ เป€เบฎเบฑเบ”เปƒเบซเป‰ debugging เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰ on
เบšเบฒเบ‡ เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ.

เปƒเบ™เบšเบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ, เป€เบŠเบฑเปˆเบ™ VAX, เบ—เบธเบ‡เบ™เบตเป‰เบšเปเปˆเบกเบตเบœเบปเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™
เบฅเปเบฒเบ”เบฑเบšเบเบฒเบ™เป‚เบ—เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบˆเบฑเบ”เบเบฒเบ™เบ•เบปเบงเบŠเบตเป‰เบเบญเบšเปเบฅเบฐเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เป‚เบ”เบ
เบ—เบณเบ—เปˆเบฒเบงเปˆเบฒเบšเปเปˆเบกเบตเบขเบนเปˆ. เบกเบฐเบซเบฒเบžเบฒเบเบ„เบณเบญเบฐเบ—เบดเบšเบฒเบเป€เบ„เบทเปˆเบญเบ‡ "FRAME_POINTER_REQUIRED"
เบ„เบงเบšเบ„เบธเบกเบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเป€เบ›เบปเป‰เบฒเปเบฒเบเบฎเบญเบ‡เบฎเบฑเบšเบ—เบธเบ‡เบ™เบตเป‰เบซเบผเบทเบšเปเปˆ.

เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ GCC เบฎเบธเปˆเบ™ 4.6, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ (เป€เบกเบทเปˆเบญเบšเปเปˆเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบฐเบซเบ™เบฒเบ”) เบชเปเบฒเบฅเบฑเบš
เป€เบ›เบปเป‰เบฒเปเบฒเบ 32-bit GNU/Linux x86 เปเบฅเบฐ 32-bit Darwin x86 เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™
-fomit-frame-pointer. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเบฒเบกเบฒเบ”เบเบฑเบšเบ„เบทเบ™เป„เบ›เป€เบ›เบฑเบ™ -fno-omit-frame-pointer by
เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ GCC เบเบฑเบš --enable-frame-pointer เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O, -O2, -O3, -เบญเบช.

-foptimize-sibling-calls
เบ›เบฑเบšเปเบ•เปˆเบ‡เบเบฒเบ™เป‚เบ—เบซเบฒเบญเป‰เบฒเบเป€เบญเบทเป‰เบญเบเบ™เป‰เบญเบ‡ เปเบฅเบฐเบซเบฒเบ‡เบชเบฝเบ‡เบŠเป‰เบณ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fno-inline
เบขเปˆเบฒเบ‚เบฐเบซเบเบฒเบเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ”เบ™เบถเปˆเบ‡เปƒเบ™เปเบ–เบง เบ™เบญเบเบˆเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเปเบฒเบเป„เบงเป‰เบ”เป‰เบงเบ "always_inline"
เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเบšเปเปˆเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เบŸเบฑเบ‡เบŠเบฑเบ™เบ”เบฝเบงเบชเบฒเบกเบฒเบ”เบ–เบทเบเบเบปเบเป€เบงเบฑเป‰เบ™เบˆเบฒเบ inlining เป‚เบ”เบเบเบฒเบ™เบซเบกเบฒเบเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบ”เป‰เบงเบ "noinline"
attribute

-finline-small-functions
เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบœเบนเป‰เป‚เบ—เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบกเบทเปˆเบญเบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒเบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰
เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เป‚เบ—เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™ (เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เบฐเบซเบ™เบฒเบ”เบฅเบงเบกเบ‚เบญเบ‡เป‚เบ›เบฅเปเบเบฅเบกเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ). เบœเบนเป‰เบชเบฑเบ‡เบฅเบงเบก
heuristically เบ•เบฑเบ” เบชเบดเบ™ เปƒเบˆ เบ—เบตเปˆ เบซเบ™เป‰เบฒ เบ—เบตเปˆ เปเบกเปˆเบ™ เบ‡เปˆเบฒเบ เบ”เบฒเบ เบžเบฝเบ‡ เบžเป เบ—เบตเปˆ เบˆเบฐ เบ•เบปเบ เป€เบ›เบฑเบ™ เบกเบนเบ™ เบ„เปˆเบฒ เบฅเบงเบก เป€เบ‚เบปเป‰เบฒ เปƒเบ™
เบงเบดเบ—เบตเบ™เบตเป‰. inlining เบ™เบตเป‰เปƒเบŠเป‰เบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเป„เบ”เป‰เบ›เบฐเบเบฒเบ”เปƒเบ™เปเบ–เบง.

เป€เบ›เบตเบ”เปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš -O2.

-findirect-inlining
Inline เบเบฑเบ‡เป‚เบ—เบซเบฒเบ—เบฒเบ‡เบญเป‰เบญเบกเบ—เบตเปˆเบ–เบทเบเบ„เบปเป‰เบ™เบžเบปเบšเบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเบ‚เบญเบšเปƒเบˆ
inlining เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญ inlining เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เป€เบ›เบตเบ”
เป‚เบ”เบ -finline-functions or -finline-small-functions เบ•เบปเบงเป€เบฅเบทเบญเบ

เป€เบ›เบตเบ”เปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš -O2.

-finline-functions
เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ inlining, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบฒเบ”เปƒเบ™เปเบ–เบง. เป„เบ”เป‰
compiler heuristically เบ•เบฑเบ” เบชเบดเบ™ เปƒเบˆ เบ—เบตเปˆ เบซเบ™เป‰เบฒ เบ—เบตเปˆ เบกเบต เบกเบนเบ™ เบ„เปˆเบฒ เบเบฒเบ™ เป€เบŠเบทเปˆเบญเบก เป‚เบเบ‡ เปƒเบ™ เบงเบด เบ—เบต เบเบฒเบ™ เบ™เบตเป‰.

เบ–เป‰เบฒเบเบฒเบ™เป‚เบ—เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ›เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเปƒเบซเป‰เบ–เบทเบเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™, เปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเบ›เบฐเบเบฒเบ”
"static", เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบŸเบฑเบ‡เบŠเบฑเบ™เปเบกเปˆเบ™เบ›เบปเบเบเบฐเบ•เบดเบšเปเปˆเป„เบ”เป‰เบญเบญเบเป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ” assembler เปƒเบ™เบชเบดเบ”เบ—เบดเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.

เป€เบ›เบตเบ”เปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš -O3.

-finline-functions-called-one เบ”เบฝเบง
เบžเบดโ€‹เบˆเบฒโ€‹เบฅเบฐโ€‹เบ™เบฒโ€‹เบ—เบธเบโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆ "staticโ€‹" เป€เบญเบตเป‰เบ™โ€‹เบงเปˆเบฒโ€‹เบ„เบฑเป‰เบ‡โ€‹เบ”เบฝเบงโ€‹เบชเปเบฒโ€‹เบฅเบฑเบš inlining เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป‚เบ—โ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹
เบžเบงเบเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเปเบฒเบเบงเปˆเบฒ "เปƒเบ™เปเบ–เบง". เบ–เป‰เบฒเบเบฒเบ™เป‚เบ—เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบซเป‰เบ–เบทเบเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™
เบŸเบฑเบ‡เบŠเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™ output เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ” assembler เปƒเบ™เบชเบดเบ”เบ—เบดเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O1, -O2, -O3 เปเบฅเบฐ -เบญเบช.

- เบ„เบงเบฒเบกโ€‹เบขเป‰เบฒเบ™โ€‹เบเบปเบงโ€‹, inliningโ€‹
เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เปเบ–เบงเปเบฒเบเป‚เบ”เบ "always_inline" เปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบฎเปˆเบฒเบ‡เบเบฒเบเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เป‰เบญเบเบเบงเปˆเบฒ
เบŸเบฑเบ‡เบŠเบฑเบ™เป‚เบ— overhead เบ•เบปเป‰เบ™เบเปˆเบญเบ™เป€เบฎเบฑเบ” -fprofile-generate เป€เบ„เบทเปˆเบญเบ‡เบกเบทเปเบฅเบฐ
เบœเปˆเบฒเบ™ inlining เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เบเบฒเบ™เป€เบฎเบฑเบ”เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบฎเบฑเบ”เปƒเบซเป‰ profileing เบฅเบฒเบ„เบฒเบ–เบทเบเบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปเบฅเบฐเบ›เบปเบเบเบฐเบ•เบด
inlining เป„เบงเบ‚เบถเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบ•เปˆเบญเบ‡เป‚เบชเป‰เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ wrapper เบฎเบฑเบ‡.

เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-fipa-sra
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™ scalar interprocedural เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰
เปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เป‚เบ”เบเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป‚เบ”เบเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เป‚เบ”เบเบกเบนเบ™เบ„เปˆเบฒ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3 เปเบฅเบฐ -เบญเบช.

-finline-limit=n
เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, GCC เบˆเบณเบเบฑเบ”เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เปƒเบชเปˆเปƒเบ™เปเบ–เบงเป„เบ”เป‰. เบ—เบธเบ‡เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰
เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบซเบเบฒเบšเบ‚เบญเบ‡เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ™เบตเป‰. n เปเบกเปˆเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบฒเบกเบฒเบ” inlined เปƒเบ™
เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ pseudo.

Inlining เบ•เบปเบงเบˆเบดเบ‡เปเบกเปˆเบ™เบ„เบงเบšเบ„เบธเบกเป‚เบ”เบเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡, เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบเปเบฒเบ™เบปเบ”
เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เป‚เบ”เบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ --param เบŠเบทเปˆ=เบกเบนเบ™เบ„เปˆเบฒ. เป„เบ”เป‰ -finline-limit=n เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบšเบฒเบ‡โ€‹เบชเปˆเบงเบ™โ€‹เบ‚เบญเบ‡โ€‹
เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

max-inline-insns-single
เบ–เบทเบเบเปเบฒเบ™เบปเบ”เปƒเบซเป‰ n/ 2

max-inline-insns-auto
เบ–เบทเบเบเปเบฒเบ™เบปเบ”เปƒเบซเป‰ n/ 2

เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเป€เบญเบเบฐเบชเบฒเบ™เบ‚เบญเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เบ„เบงเบšเบ„เบธเบก inlining เปเบฅเบฐ
เบชเปเบฒเบฅเบฑเบšเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹: เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบกเบตเบกเบนเบ™เบ„เปˆเบฒ -finline-เบˆเบณเบเบฑเบ” เบ—เบตเปˆเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบกเบตเบžเบถเบ”เบ•เบดเบเปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹: เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ pseudo เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™, เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเบ™เบตเป‰, เป€เบ›เบฑเบ™เบšเบปเบ”เบ„เบฑเบ”เบซเบเปเป‰
เบเบฒเบ™เบงเบฑเบ”เปเบ—เบเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ. เปƒเบ™เบ—เบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบกเบฑเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเบธเบกเบ™เบธเบก
เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เบงเบฒเบกเบซเบกเบฒเบเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ›เปˆเบฝเบ™เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบญเบเบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบซเบ™เบถเปˆเบ‡
เบญเบตเบเบ„เบปเบ™เบซเบ™เบถเปˆเบ‡.

-fno-keep-inline-dllexport
เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบฅเบฐเบญเบฝเบ”เบเบงเปˆเบฒเบ‚เบญเบ‡ -fkeep-inline-เบŸเบฑเบ‡เบŠเบฑเบ™, เป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบเบฑเบš
เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบเบฒเบ”เป‚เบ”เบเปƒเบŠเป‰เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "dllexport" เบซเบผเบท declspec

-fkeep-inline-เบŸเบฑเบ‡เบŠเบฑเบ™
เปƒเบ™ C, เบ›เปˆเบญเบเบŸเบฑเบ‡เบŠเบฑเบ™ "static" เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบเบฒเบ”เบงเปˆเบฒ "inline" เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ.
เบŸเบฑเบ‡เบŠเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบšเบฑเบ™เบˆเบธเป€เบ‚เบปเป‰เบฒเปƒเบ™เบœเบนเป‰เป‚เบ—เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบกเบฑเบ™. เบชเบฐเบงเบดเบ”เบ™เบตเป‰เบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบš
เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเป‚เบ”เบเปƒเบŠเป‰เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ "extern inline" เปƒเบ™ GNU C90. เปƒเบ™ C ++, เบ›เปˆเบญเบเบญเบฑเบ™เปƒเบ”เบเปเป„เบ”เป‰
inline functions เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ.

-fkeep-static-consts
เบ›เปˆเบญเบเบ•เบปเบงเปเบ›เบ—เบตเปˆเบ›เบฐเบเบฒเบ”เบงเปˆเบฒ "static const" เป€เบกเบทเปˆเบญเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ
เบ•เบปเบงเปเบ›เบšเปเปˆเป„เบ”เป‰เบญเป‰เบฒเบ‡เบญเบตเบ‡.

GCC เป€เบ›เบตเบ”เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰ compiler เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ a
เบ•เบปเบงเปเบ›เปเบกเปˆเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡, เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบทเบšเปเปˆเป€เบ›เบตเบ”, เปƒเบซเป‰เปƒเบŠเป‰
เป„เบ”เป‰ -fno-keep-static-consts เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

-fmerge-เบ„เบปเบ‡เบ—เบตเปˆ
เบžเบฐเบเบฒเบเบฒเบกเบฎเบงเบกเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบ„เบทเบเบฑเบ™ (เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบชเบฐเบ•เบฃเบดเบ‡ เปเบฅเบฐเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบˆเบธเบ”เบฅเบญเบ)
เปƒเบ™เบ—เบปเปˆเบงเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบฅเบงเบšเบฅเบงเบก.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ–เป‰เบฒเบ•เบปเบงเบ›เบฐเบเบญเบšเปเบฅเบฐเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบกเบฑเบ™. เปƒเบŠเป‰ -fno-merge-เบ„เบปเบ‡เบ—เบตเปˆ เป€เบžเบทเปˆเบญเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O, -O2, -O3, -เบญเบช.

-fmerge-เบ—เบฑเบ‡เปเบปเบ”-เบ„เบปเบ‡เบ—เบตเปˆ
เบžเบฐเบเบฒเบเบฒเบกเบฅเบงเบกเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบ„เบทเบเบฑเบ™ เปเบฅเบฐเบ•เบปเบงเปเบ›เบ—เบตเปˆเบ„เบทเบเบฑเบ™.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบซเบกเบฒเบเป€เบ–เบดเบ‡ -fmerge-เบ„เบปเบ‡เบ—เบตเปˆ. เบ™เบญเบโ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™ -fmerge-เบ„เบปเบ‡เบ—เบตเปˆ เบ™เบตเป‰
เบžเบดโ€‹เบˆเบฒโ€‹เบฅเบฐโ€‹เบ™เบฒโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒ arrays เป€เบšเบทเป‰เบญเบ‡โ€‹เบ•เบปเป‰เบ™โ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆโ€‹เบซเบผเบทโ€‹เบ•เบปเบงโ€‹เปเบ›โ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบšเบทเป‰เบญเบ‡โ€‹เบ•เบปเป‰เบ™โ€‹เบ—เบตเปˆโ€‹เบกเบต
เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบ›เบฐโ€‹เบชเบปเบกโ€‹เบซเบผเบทโ€‹เบˆเบธเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเปˆเบญเบ™โ€‹เป„เบ”เป‰โ€‹. เบžเบฒเบชเบฒเป€เบŠเบฑเปˆเบ™ C เบซเบผเบท C ++ เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบ•เปˆเบฅเบฐเบ•เบปเบงเปเบ›,
เบฅเบงเบกเบ—เบฑเบ‡เบซเบผเบฒเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบเบฒเบ™เป‚เบ— recursive, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™
เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡.

-fmodulo-sched
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ swing modulo เบ—เบฑเบ™เบ—เบตเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เปเบฒเบญเบดเบ”เบœเปˆเบฒเบ™. เบ™เบตเป‰
pass เป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™ loops เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐ reorders เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป‚เบ”เบเบเบฒเบ™ overlapping เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™
เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™.

-fmodulo-sched-allow-regmoves
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบณเบ™เบปเบ”เป€เบงเบฅเบฒเป‚เบกเบ”เบนเป‚เบฅเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ SMS เบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เบเป‰เบฒเบเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”. เป‚เบ”เบ
เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ—เบธเบ‡เบ™เบตเป‰ เบ‚เบญเบšเบ•เป‰เบฒเบ™เบเบฒเบ™เป€เบญเบทเปˆเบญเบเบญเบตเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบˆเบฐเบ–เบทเบเบฅเบถเบš, เป€เบŠเบดเปˆเบ‡เบเปเปˆเปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™
เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง reg เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป„เบฅเบเบฐเบŠเบตเบงเบดเบ”. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
เบžเบฝเบ‡เปเบ•เปˆเบกเบต -fmodulo-sched enabled

-fno-branch-count-reg
เบขเปˆเบฒเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "เบซเบผเบธเบ”เบฅเบปเบ‡เปเบฅเบฐเบชเบฒเบ‚เบฒ" เปƒเบ™เบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบ™เบฑเบš, เปเบ•เปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐ
เบชเป‰เบฒเบ‡เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบซเบผเบธเบ”เบฅเบปเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบš
เบชเบนเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฒเบ‚เบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบžเบฝเบ‡เปเบ•เปˆเบเปˆเบฝเบงเบเบฑเบš
เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบกเบต x86, PowerPC, IA-64 เปเบฅเบฐ
S / 390.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fbranch-count-reg.

-fno-function-cse
เบขเปˆเบฒเปƒเบชเปˆเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบ—เบฐเบšเบฝเบ™; เป€เบฎเบฑเบ”เปเบ•เปˆเบฅเบฐเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเป‚เบ—เบซเบฒ a
เบŸเบฑเบ‡เบŠเบฑเบ™เบ„เบปเบ‡เบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบ™เป‰เบญเบ, เปเบ•เปˆเบšเบฒเบ‡ hacks strange เบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰
เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡ assembler เบญเบฒเบ”เบˆเบฐเบชเบฑเบšเบชเบปเบ™เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™
เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -function-cse

-fno-zero-initialized-in-bss
เบ–เป‰เบฒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฒเบเบชเปˆเบงเบ™ BSS, GCC เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฐเบงเบฒเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเป€เบ›เบฑเบ™
เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบ›เบฑเบ™เบชเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ BSS. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ›เบฐเบซเบเบฑเบ”เบžเบทเป‰เบ™เบ—เบตเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ›เบดเบ”เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบšเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบญเบตเบ‡เปƒเบชเปˆเบ•เบปเบงเปเบ›เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™
เป„เบ›โ€‹เบ—เบตเปˆโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™ --- เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹, เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบŠเบญเบโ€‹เบซเบฒโ€‹เป„เบ”เป‰โ€‹
เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบžเบฒเบเบ™เบฑเป‰เบ™เปเบฅเบฐ / เบซเบผเบทเป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ™เบฑเป‰เบ™.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fzero-initialized-in-bss.

-fthread-jumps
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบตเบชเบฒเบ‚เบฒเป‚เบ”เบ”เป„เบ›เบซเบฒเบšเปˆเบญเบ™เบญเบทเปˆเบ™เบซเบผเบทเบšเปเปˆ
เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ—เบตเปˆเป€เบญเบปเบฒเบกเบฒเป‚เบ”เบเบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบžเบปเบšเป€เบซเบฑเบ™. เบ–เป‰เบฒเป€เบ›เบฑเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเบฒเบ‚เบฒเบ—เปเบฒเบญเบดเบ”เบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒ
เบšเปเปˆเบงเปˆเบฒเบˆเบธเบ”เบซเบกเบฒเบเบ›เบฒเบเบ—เบฒเบ‡เบ‚เบญเบ‡เบชเบฒเบ‚เบฒเบ—เบตเบชเบญเบ‡เบซเบผเบทเบˆเบธเบ”เบ—เบตเปˆเบ•เบดเบ”เบ•เบฒเบกเบกเบฑเบ™เบ—เบฑเบ™เบ—เบต,
เบ‚เบถเป‰เบ™เบเบฑเบšเบงเปˆเบฒเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเบฎเบนเป‰เบงเปˆเบฒเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡ เบซเบผเบทเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fsplit-wide-types
เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบ„เบญเบšเบ„เบญเบ‡เบซเบผเบฒเบเบ—เบฐเบšเบฝเบ™, เป€เบŠเบฑเปˆเบ™ "เบเบฒเบงเบเบฒเบง" เปƒเบ™ 32-bit
เบฅเบฐโ€‹เบšเบปเบšโ€‹, เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เปเบเบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบซเบฒเบโ€‹เปเบฅเบฐโ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹เปƒเบซเป‰โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป€เบ›เบฑเบ™โ€‹เป€เบญโ€‹เบเบฐโ€‹เบฅเบฒเบ”โ€‹. เบ™เบตเป‰เบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบด
เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™, เปเบ•เปˆเบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ”เบตเบšเบฑเบเบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O, -O2, -O3, -เบญเบช.

-fcse-follow-jumps
เปƒเบ™เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡ subexpression เบ—เบปเปˆเบงเป„เบ› (CSE), เบชเบฐเปเบเบ™เบœเปˆเบฒเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฐเป‚เบ”เบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
เป€เบ›เบปเป‰เบฒเปเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบเบฐเป‚เบ”เบ”เบšเปเปˆเบšเบฑเบ™เบฅเบธเป„เบ”เป‰เป‚เบ”เบเบ—เบฒเบ‡เบญเบทเปˆเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญ CSE เบžเบปเบš
เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡ "เบ–เป‰เบฒ" เบ—เบตเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ "เบญเบทเปˆเบ™", CSE เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบฒเบ™เบเบฐเป‚เบ”เบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚
เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fcse-skip-blocks
เบ™เบตเป‰เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš -fcse-follow-jumps, เปเบ•เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰ CSE เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบฒเบ™เบเบฐเป‚เบ”เบ”
เบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เปƒเบซเป‰เบ‚เป‰เบฒเบกเบ—เปˆเบญเบ™เป„เบกเป‰. เป€เบกเบทเปˆเบญ CSE เบžเบปเบšเบเบฑเบšเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ "เบ–เป‰เบฒ" เบ—เบตเปˆเบšเปเปˆเบกเบต
เบ‚เปเป‰โ€‹เบญเบทเปˆเบ™โ€‹, -fcse-skip-blocks เป€เบฎเบฑเบ”เปƒเบซเป‰ CSE เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบฒเบ™เบเบฐเป‚เบ”เบ”เบ›เบฐเบกเบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡
"เบ–เป‰เบฒ".

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-frerun-cse-after-loop
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡ subexpression เบ—เบปเปˆเบงเป„เบ›เบ„เบทเบ™เปƒเบซเบกเปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš loop เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fgcse
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบœเปˆเบฒเบ™เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡ subexpression เบ—เบปเปˆเบงเป„เบ›เบ—เบปเปˆเบงเป‚เบฅเบ. เบœเปˆเบฒเบ™เบ™เบตเป‰เบเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”
เบ„เบปเบ‡เบ—เบตเปˆเปƒเบ™เบ—เบปเปˆเบงเป‚เบฅเบเปเบฅเบฐเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบชเปเบฒเป€เบ™เบปเบฒ.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹: เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเป‚เบ„เบ‡เบเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ computed gotos, เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ GCC, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบš
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบงเบฅเบฒเปเบฅเปˆเบ™เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ›เบดเบ”เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡ subexpression เบ—เบปเปˆเบงเป„เบ›เบ—เบปเปˆเบงเป‚เบฅเบ
เบœเปˆเบฒเบ™เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบก -fno-gcse เป„เบ›เบซเบฒเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fgcse-lm
เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹ -fgcse-lm เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰, เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡ subexpression เบ—เบปเปˆเบงเป„เบ›เบ—เบปเปˆเบงเป‚เบฅเบเบžเบฐเบเบฒเบเบฒเบกเบเป‰เบฒเบ
เบเบฒเบ™เป‚เบซเบผเบ”เบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆเบ–เบทเบเบ‚เป‰เบฒเป‚เบ”เบเบฎเป‰เบฒเบ™เบ„เป‰เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ loop เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ a
เบฅเบณเบ”เบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”/เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบซเบผเบ”เบขเบนเปˆเบ™เบญเบเบงเบปเบ‡เบเบฒเบ™, เปเบฅเบฐเบชเบณเป€เบ™เบปเบฒ/เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบžเบฒเบเปƒเบ™
the loop

เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญ -fgcse เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™.

-fgcse-sm
เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹ -fgcse-sm เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™, store motion pass เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบปเปˆเบงเป„เบ›เบ—เบปเปˆเบงเป‚เบฅเบ
เบเบฒเบ™โ€‹เบฅเบปเบšโ€‹เบฅเป‰เบฒเบ‡ subexpressionโ€‹. เบšเบฑเบ”เบ™เบตเป‰เบžเบฐเบเบฒเบเบฒเบกเบเป‰เบฒเบเบฎเป‰เบฒเบ™เบ„เป‰เบฒเบญเบญเบเบˆเบฒเบ loops. เป€เบกเบทเปˆเบญเปƒเบŠเป‰
เบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบš -fgcse-lm, loops เบ—เบตเปˆเบกเบตเบฅเปเบฒเบ”เบฑเบšเบเบฒเบ™เป‚เบซเบผเบ” / เบฎเป‰เบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰
เบเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เบเปˆเบญเบ™ loop เปเบฅเบฐเบฎเป‰เบฒเบ™เบซเบผเบฑเบ‡เบˆเบฒเบ loop.

เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ”เป†.

-fgcse-las
เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹ -fgcse-las เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™, เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡ subexpression เบ—เบปเปˆเบงเป„เบ›เบ—เบปเปˆเบงเป‚เบฅเบ
เบเปเบฒเบˆเบฑเบ”เบเบฒเบ™เป‚เบซเบผเบ”เบ—เบตเปˆเบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบ—เบตเปˆเบกเบฒเบˆเบฒเบเบฎเป‰เบฒเบ™เบ„เป‰เบฒเป„เบ›เบซเบฒเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ”เบฝเบงเบเบฑเบ™ (เบ—เบฑเบ‡เบชเบญเบ‡
เบŠเป‰เบณเบŠเป‰เบญเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™ เปเบฅเบฐเป€เบ•เบฑเบก).

เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ”เป†.

-fgcse-after-reload
เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹ -fgcse-after-reload เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปเบฅเป‰เบง, เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบเบฒเบ™เป‚เบซเบผเบ”เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™
เบซเบผเบฑเบ‡เบˆเบฒเบเป‚เบซเบผเบ”เปƒเปเปˆ. เบˆเบธเบ”โ€‹เบ›เบฐโ€‹เบชเบปเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบœเปˆเบฒเบ™โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เบ—เปเบฒโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฐโ€‹เบญเบฒเบ”โ€‹เบเบฒเบ™โ€‹เบฎเบปเปˆเบงโ€‹เป„เบซเบฅโ€‹เบŠเป‰เบณโ€‹เบŠเป‰เบญเบ™.

-faggressive-loop-optimizations
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเบญเบเบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ loop เปƒเบซเป‰เปƒเบŠเป‰เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบžเบฒเบชเบฒเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบชเปเบฒเบฅเบฑเบš
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบŠโ€‹เป‰โ€‹เปเบฒโ€‹เบ‚เบญเบ‡ loop เป„เบ”เป‰โ€‹. เบ™เบตเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบฅเบฐเบซเบฑเบ” loop เบšเปเปˆเป„เบ”เป‰เบฎเบฝเบเบฎเป‰เบญเบ‡
เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบฅเบปเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™ overflows เบซเบผเบท out-of-bound
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ array. เบ‚เบญเบšเป€เบ‚เบ”เบชเปเบฒเบฅเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบ‚เบญเบ‡ loop เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ™เปเบฒเบžเบฒ
loop unrolling เปเบฅเบฐเบเบฒเบ™เบ›เบญเบเป€เบ›เบทเบญเบเปเบฅเบฐ loop exit เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰
เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™

-funsafe-loop-optimizations
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเบญเบเบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš loop เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ”เบฑเบ”เบŠเบฐเบ™เบต loop เบšเปเปˆ overflow, เปเบฅเบฐ
เบงเปˆเบฒ loops เบ—เบตเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบฒเบ‡เบญเบญเบ nontrivial เปเบกเปˆเบ™เบšเปเปˆเป€เบ›เบฑเบ™เบ™เบดเบ”. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบงเป‰เบฒเบ‡เบ‚เบถเป‰เบ™
เบŠเปˆเบงเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ loop เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš loop เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบžเบดเบชเบนเบ”เป„เบ”เป‰เบงเปˆเบฒเบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เบ–เบทเบเบ•เป‰เบญเบ‡. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ -Wunsafe-loop-optimizations, compiler เป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™
เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบžเบปเบšเป€เบซเบฑเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ loop เบ™เบตเป‰.

-fcrossjumping
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ‚เป‰เบฒเบกเป‚เบ”เบ”. เบเบฒเบ™เบซเบฑเบ™เป€เบ›เบฑเบ™เบ™เบตเป‰ unifies เบฅเบฐเบซเบฑเบ”เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเปเบฅเบฐ
เบšเบฑเบ™เบ—เบถเบเบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”. เบฅเบฐเบซเบฑเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบญเบฒเบ”เบˆเบฐเบซเบผเบทเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ”เบตเบเปˆเบงเบฒเบšเปเปˆเบกเบต cross-
เป‚เบ”เบ”.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fauto-inc, เบ„เบฐ
เบชเบปเบกเบ—เบปเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบซเบผเบทเบซเบผเบธเบ”เบฅเบปเบ‡เบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ. เบœเปˆเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™
เบชเบฐเป€เบซเบกเบตเบ‚เป‰เบฒเบกเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเบดเปˆเบ‡เบ™เบตเป‰.
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ™เบตเป‰.

-fdce
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ•เบฒเบ (DCE) เปƒเบ™ RTL. เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-fdse
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบฎเป‰เบฒเบ™เบ•เบฒเบ (DSE) เปƒเบ™ RTL. เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-fif เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹
เบžเบฐเบเบฒเบเบฒเบกเบซเบฑเบ™เบ›เปˆเบฝเบ™เบเบฒเบ™เป‚เบ”เบ”เบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เป„เบ›เบชเบนเปˆเบเบฒเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบชเบฒเบ‚เบฒ-เปœเป‰เบญเบ. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบต
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚, min, เบชเบนเบ‡เบชเบธเบ”, เบเปเบฒเบ™เบปเบ”เบ—เบธเบ‡เปเบฅเบฐเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ abs, เปเบฅเบฐเบšเบฒเบ‡ tricks
เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเป€เบฅเบเป€เบฅเบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เปƒเบ™เบŠเบดเบšเบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบขเบนเปˆ
เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบกเปˆเบ™เบ„เบงเบšเบ„เบธเบกเป‚เบ”เบ "if-conversion2".

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O, -O2, -O3, -เบญเบช.

-fif เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡ 2โ€‹
เปƒเบŠเป‰เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚ (เบšเปˆเบญเบ™เบกเบต) เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบเบฒเบ™เบเบฐเป‚เบ”เบ”เบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚
เบชเบฒเบ‚เบฒ-เปœเป‰เบญเบเบ—เบฝเบšเป€เบ—เบปเปˆเบฒ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O, -O2, -O3, -เบญเบช.

-fdeclone-ctor-dtor
C ++ ABI เบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเบธเบ”เป€เบ‚เบปเป‰เบฒเบซเบผเบฒเบเบˆเบธเบ”เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบเปเปˆเบชเป‰เบฒเบ‡ เปเบฅเบฐเบ•เบปเบงเบ—เปเบฒเบฅเบฒเบ: เบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบš a
subobject เบžเบทเป‰เบ™เบ–เบฒเบ™, เบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™, เปเบฅเบฐเบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ destructor virtual เบ—เบตเปˆเป‚เบ—เบซเบฒ
เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบฅเบถเบšเบญเบญเบเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™. เบชเปเบฒเบฅเบฑเบšเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ—เบตเปˆเบกเบตเบ–เบฒเบ™ virtual, เบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเบฐเบชเบปเบกเบšเบนเบ™
variants เปเบกเปˆเบ™ clones, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบชเบญเบ‡เบชเปเบฒเป€เบ™เบปเบฒเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ. เบ”เป‰เบงเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰, เป„เบ”เป‰
เบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเบฐเบ•เบปเบงเปเบ›เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ‚เบญเบšเปƒเบˆเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบปเปˆเบงเป„เบ›.

เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ -เบญเบช.

-fdelete-null-pointer-checks
เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ•เบปเบงเบŠเบตเป‰ null เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ›เบญเบ”เป„เบž, เปเบฅเบฐเบšเปเปˆเบกเบตเบฅเบฐเบซเบฑเบ” เบซเบผเบทเบ‚เปเป‰เบกเบนเบ™
เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบญเบฒโ€‹เปƒเบชโ€‹เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹เบ™เบฑเป‰เบ™โ€‹. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบžเบฑเบšเบ„เบปเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบขเบนเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”
เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบญเบทเปˆเบ™เป†เปƒเบ™ GCC เปƒเบŠเป‰เบ—เบธเบ‡เบ™เบตเป‰เป€เบžเบทเปˆเบญ
เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฐเปเบชเบ‚เปเป‰เบกเบนเบ™เบ—เบปเปˆเบงเป‚เบฅเบเบ—เบตเปˆเบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบŠเบตเป‰ null;
เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ–เป‰เบฒเบ•เบปเบงเบŠเบตเป‰เบ–เบทเบเบเบงเบ”เบชเบญเบšเบซเบผเบฑเบ‡เบˆเบฒเบเบกเบฑเบ™เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”เปเบฅเป‰เบง, เบกเบฑเบ™
เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™ null.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เปƒเบ™เบšเบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, เบเบฒเบ™เบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡. เปƒเบŠเป‰
-fno-delete-null-pointer-checks เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบš
เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบžเบถเบ”เบ•เบดโ€‹เบเบณโ€‹เบ™เบฑเป‰เบ™.

เบšเบฒเบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบญเบฑเบ™เบ—เบตเปˆเบเบฑเบ‡เป„เบงเป‰, เบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปƒเบ™เบ—เบธเบเบฅเบฐเบ”เบฑเบš. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบกเบฑเบ™เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบ—เบธเบเบฅเบฐเบ”เบฑเบš: -O0, -O1, -O2, -O3, -เบญเบช. เบœเปˆเบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™
เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เปƒเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

-fdevirtualize
เบžเบฐเบเบฒเบเบฒเบกเบ›เปˆเบฝเบ™เบเบฒเบ™เป‚เบ—เป€เบ›เบฑเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฐเป€เปเบทเบญเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ—เป‚เบ”เบเบเบปเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบ—เบฑเบ‡เบชเบญเบ‡
เบžเบฒเบเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เปเบฅเบฐ interprocedurally เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ inlining เบ—เบฒเบ‡เบญเป‰เบญเบก
("-findirect-inlining") เปเบฅเบฐเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ„เบปเบ‡เบ—เบตเปˆ interprocedural (-fipa-cp). เป€เบ›เบตเบ”เปƒเบŠเป‰เปเบฅเป‰เบง
เปƒเบ™โ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹ -O2, -O3, -เบญเบช.

-fdevirtualize-speculatively
เบžเบฐเบเบฒเบเบฒเบกเบ›เปˆเบฝเบ™เบเบฒเบ™เป‚เบ—เป„เบ›เป€เบ›เบฑเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฐเป€เปเบทเบญเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ—เป‚เบ”เบเบเบปเบ‡เปเบšเบšเบ„เบฒเบ”เป€เบ”เบปเบฒ. เบญเบตเบ‡เปƒเบชเปˆ
เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบฎเบนเบšโ€‹เบเบฒเบ™โ€‹เบชเบทเบšโ€‹เบ—เบญเบ”โ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹, เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบญเบตเป‰เบ™โ€‹เบ—เบตเปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป„เบงเป‰โ€‹เบ‚เบญเบ‡โ€‹
เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹. เบ–เป‰เบฒเบŠเบธเบ”เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบ”เบตเบเบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ” 1, เบ›เปˆเบฝเบ™เบเบฒเบ™เป‚เบ—เป€เบ›เบฑเบ™
เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป‚เบ—เบซเบฒเป‚เบ”เบเบเบปเบ‡เปเบฅเบฐเบ—เบฒเบ‡เบญเป‰เบญเบก. เบเบฒเบ™เป‚เบ—เบ—เบตเปˆเบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เบซเบผเบฒเบ
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เป€เบŠเบฑเปˆเบ™ inlining. เป€เบกเบทเปˆเบญเบžเบงเบเป€เบ‚เบปเบฒเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เบทเปˆเบกเบญเบตเบ,
เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบฎเบนเบšเปเบšเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš.

-fexpensive-optimizations
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบฅเบฑเบเบ™เป‰เบญเบเบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เปเบžเบ‡.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

เบŸเบฃเบต
เบžเบฐเบเบฒเบเบฒเบกเป€เบญเบปเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆเบŠเปเป‰เบฒเบŠเป‰เบญเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบš
เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ x86-64, เป€เบŠเบดเปˆเบ‡ implicitly zero-extens เปƒเบ™ 64-bit registers เบซเบผเบฑเบ‡เบˆเบฒเบ.
เบ‚เบฝเบ™เปƒเบชเปˆเป€เบ„เบดเปˆเบ‡ 32-bit เบ•เปˆเปเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš Alpha, AArch64 เปเบฅเบฐ x86 เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fno-lifetime-dse
เปƒเบ™ C ++ เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบžเบฒเบเปƒเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบกเบฑเบ™: เป€เบกเบทเปˆเบญ
constructor เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบงเบฑเบ”เบ–เบธเบกเบตเบ„เปˆเบฒ indeterminate, เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ”เป†เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡
เบญเบฒเบเบธเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเปเบกเปˆเบ™เบ•เบฒเบเป€เบกเบทเปˆเบญเบงเบฑเบ”เบ–เบธเบ–เบทเบเบ—เปเบฒเบฅเบฒเบ. เบ›เบปเบเบเบฐเบ•เบดเบฎเป‰เบฒเบ™เบ•เบฒเบ
เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบˆเบฐเปƒเบŠเป‰เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบเบชเบดเปˆเบ‡เบ™เบตเป‰; เบ–เป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบญเบตเบ‡เปƒเบชเปˆเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡
เบเบฒเบ™โ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹เบ—เบตเปˆโ€‹เบเบฑเบ‡โ€‹เบ„เบปเบ‡โ€‹เบขเบนเปˆโ€‹เป€เบเบตเบ™โ€‹เบŠเบตโ€‹เบงเบดเบ”โ€‹เบ‚เบญเบ‡โ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹, เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ—เบธเบ‡โ€‹เบ™เบตเป‰โ€‹เป€เบžเบทเปˆเบญโ€‹
เบ›เบดเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰.

-flive-range-shrinkage
เบžเบฐเบเบฒเบเบฒเบกเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบซเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบฅเบฐเบ”เบฑเบšเบŠเบตเบงเบดเบ”เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเป„เบงเบ—เบตเปˆเบกเบตเบŠเบธเบ”เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบซเบผเบทเบ›เบฒเบ™เบเบฒเบ‡.

-fira-algorithm=เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบงเบดเบ—เบต
เปƒเบŠเป‰เบชเบนเบ”เบเบฒเบ™เปƒเบชเปˆเบชเบตเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™. เป„เบ”เป‰
เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบงเบดเบ—เบต เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™ เบšเบนเบฅเบดเบกเบฐเบชเบดเบ”, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบชเบตเบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เบ‚เบญเบ‡ Chow, เบซเบผเบท CB,
เป€เบŠเบดเปˆเบ‡เบฅเบฐเบšเบธเบเบฒเบ™เปƒเบชเปˆเบชเบต Chaitin-Briggs. เบเบฒเบ™เปƒเบชเปˆเบชเบต Chaitin-Briggs เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”
เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบกเบฑเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒ.

-fira-region=เบžเบนเบกเบดเบžเบฒเบ
เปƒเบŠเป‰เบžเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™. เป„เบ”เป‰ เบžเบนเบกเบดเบžเบฒเบ เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡
เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบ—เบฑเบ‡เบซเบกเบปเบ” เปƒเบŠเป‰ loops เบ—เบฑเบ‡เปเบปเบ”เป€เบ›เบฑเบ™เป€เบ‚เบ”เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบš
เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆเบกเบตเบŠเบธเบ”เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปเบฅเบฐ / เบซเบผเบทเบชเบฐเบซเบกเปเปˆเบฒเบชเบฐเป€เบซเบกเบต.

เบ›เบฐเบชเบปเบก
เปƒเบŠเป‰ loops เบ—เบฑเบ‡เบซเบกเบปเบ”เบเบปเบเป€เบงเบฑเป‰เบ™ loops เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเป€เบ›เบฑเบ™เบžเบฒเบเบžเบทเป‰เบ™. เบ™เบตเป‰
เบ„เปˆเบฒเบ›เบปเบเบเบฐเบ•เบดเบˆเบฐเปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเปเบฅเบฐเบ™เบตเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบชเปˆเบงเบ™เปƒเบซเบเปˆ, เปเบฅเบฐ
เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเป„เบง (-O, -O2, ...).

เบซเบ™เบถเปˆเบ‡ เปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบฑเบ‡เปเบปเบ”เป€เบ›เบฑเบ™เบžเบฒเบเบžเบทเป‰เบ™เบ”เบฝเบง. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”
เบ‚เบฐเบซเบ™เบฒเบ”, เปเบฅเบฐเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบš -เบญเบช or -O0.

-fira-hoist-pressure
เปƒเบŠเป‰ IRA เป€เบžเบทเปˆเบญเบ›เบฐเป€เบกเบตเบ™เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ” hoisting pass เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐ hoist
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบกเบฑเบเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ, เปเบ•เปˆเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบŠเป‰เบฒเบฅเบปเบ‡
compiler เบฅเบปเบ‡.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -เบญเบช เบชเปเบฒเบฅเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”.

-fira-loop-pressure
เปƒเบŠเป‰ IRA เป€เบžเบทเปˆเบญเบ›เบฐเป€เบกเบตเบ™เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปƒเบ™ loops เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเป‰เบฒเบ loop invariants.
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เป‚เบ”เบโ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ‚เบญเบ‡โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เป„เบงโ€‹เปเบฅเบฐโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เป‰เบญเบโ€‹เปƒเบ™โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบˆเบฑเบโ€‹เบ—เบตเปˆโ€‹เบกเบต
เป„เบŸเบฅเปŒเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ (>= 32 เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™), เปเบ•เปˆเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบŠเป‰เบฒเบฅเบปเบ‡.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O3 เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบ.

-fno-ira-share-save-slots
เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡เบ—เบตเปˆเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป‚เบ—เบ—เบตเปˆเปƒเบŠเป‰เบเบฒเบเปƒเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™
เป‚เบ—. เปเบ•เปˆเบฅเบฐเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบเป„เบ”เป‰เบฎเบฑเบšเบŠเปˆเบญเบ‡ stack เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปเบฅเบฐเป€เบ›เบฑเบ™ stack เบซเบ™เป‰เบฒเบ—เบตเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
เบเบญเบšเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒ.

-fno-ira-share-spill-slots
เบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡เบ—เบตเปˆเบˆเบฑเบ”เบชเบฑเบ™เป„เบงเป‰เบชเบณเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ pseudo. เปเบ•เปˆเบฅเบฐ pseudo-เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™
เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบเป„เบ”เป‰เบฎเบฑเบšเบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡ stack เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปเบฅเบฐเป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
stack frames เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒ.

-fira-verbose=n
เบ„เบงเบšเบ„เบธเบก verbosity เบ‚เบญเบ‡เป„เบŸเบฅเปŒ dump เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 5. เบ–เป‰เบฒเบ„เปˆเบฒ n เปเบกเปˆเบ™เปƒเบซเบเปˆเบเบงเปˆเบฒเบซเบผเบทเป€เบ—เบปเปˆเบฒเบเบฑเบš 10, เบœเบปเบ™เบœเบฐเบฅเบดเบ” dump เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›
to stderr เป‚เบ”เบเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš n เบฅเบปเบš 10.

-fdelayed-เบชเบฒเบ‚เบฒ
เบ–เป‰เบฒเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เบžเบฐเบเบฒเบเบฒเบกเบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ„เบทเบ™เปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเบ‚เบธเบ”เบ„เบปเป‰เบ™
เบŠเปˆเบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบกเบตเบขเบนเปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเบฒเบ‚เบฒเบ—เบตเปˆเบŠเบฑเบเบŠเป‰เบฒ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O, -O2, -O3, -เบญเบช.

-fschedule-insns
เบ–เป‰เบฒเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เบžเบฐเบเบฒเบเบฒเบกเบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ„เบทเบ™เปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเบฅเบปเบšเบฅเป‰เบฒเบ‡
เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบขเบธเบ”โ€‹เป€เบŠเบปเบฒโ€‹เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบšเปเปˆโ€‹เบกเบตโ€‹. เบ™เบตเป‰เบŠเปˆเบงเบเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆ
เบกเบตเบˆเบธเบ”เป€เบฅเบทเปˆเบญเบ™เบŠเป‰เบฒเบซเบผเบทเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เป‚เบซเบผเบ”เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป‚เบ”เบเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบญเบทเปˆเบ™เป†
เบˆเบฐเบ–เบทเบเบญเบญเบเบˆเบปเบ™เบเปˆเบงเบฒเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบซเบผเบทเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ™เป„เบ”เป‰เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3.

-fschedule-insns2
เบ„เป‰เบฒเบโ€‹เบ„เบทโ€‹เบเบฑเบš -fschedule-insns, เปเบ•เปˆเบ‚เปเปƒเบซเป‰เบกเบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเบฒเบ™เบชเบญเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹เบเบฒเบ™โ€‹เบฅเบปเบ‡โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เป„เบ”เป‰โ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆเบกเบต a
เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบญเบเปเบฅเบฐเบšเปˆเบญเบ™เบ—เบตเปˆเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เป‚เบซเบผเบ”เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบเปˆเบงเบฒ
เบซเบ™เบถเปˆเบ‡เบฎเบญเบš.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fno-sched-interblock
เบขเปˆเบฒเบˆเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปƒเบ™เบ—เบปเปˆเบงเบšเบฅเบฑเบญเบเบžเบทเป‰เบ™เบ–เบฒเบ™. เบ›เบปเบเบเบฐเบ•เบดเบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™, ie เบเบฑเบš -fschedule-insns เบซเบผเบทเบขเบนเปˆ -O2 or
เบชเบนเบ‡เบ‚เบถเป‰เบ™.

-fno-sched-spec
เบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปเบšเบšเบ„เบฒเบ”เป€เบ”เบปเบฒเบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เป‚เบซเบผเบ”. เบ›เบปเบเบเบฐเบ•เบดเบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
default เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™, ie เบเบฑเบš -fschedule-insns เบซเบผเบทเบขเบนเปˆ
-O2 เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ.

-fsched-เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ insn เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™เบ—เบตเปˆเบฅเบฐเบญเบฝเบ”เบญเปˆเบญเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™. เบ™เบตเป‰
เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเปˆเบญเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰, ie
-fschedule-insns เบซเบผเบทเบขเบนเปˆ -O2 เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ. เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป„เบ”เป‰โ€‹
เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เปเบฅเบฐโ€‹เบซเบผเบธเบ”โ€‹เบฅเบปเบ‡โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ›เป‰เบญเบ‡โ€‹เบเบฑเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบเบปเบ”โ€‹เบ”เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เบ‚เบถเป‰เบ™โ€‹เบ‚เป‰เบฒเบ‡โ€‹เป€เบ—เบดเบ‡โ€‹เบ•เบปเบงโ€‹เป€เบฅเบโ€‹เป„เบ”เป‰โ€‹
เบ‚เบญเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปเบ‚เบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเบฐเบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบผเบ•เปเปˆเบกเบฒเปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™.

-fsched-spec-load
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เป€เบ„เบทเปˆเบญเบ™โ€‹เป„เบซเบงโ€‹เบ„เบฒเบ”โ€‹เบ„เบฐโ€‹เป€เบ™โ€‹เบ‚เบญเบ‡โ€‹เบšเบฒเบ‡โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹. เบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™, ie เบเบฑเบš -fschedule-insns เบซเบผเบทเบขเบนเปˆ -O2 เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ.

-fsched-spec-load-เบญเบฑเบ™เบ•เบฐเบฅเบฒเบ
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปเบšเบšเบ„เบฒเบ”เป€เบ”เบปเบฒเบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เป‚เบซเบผเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™, ie เบเบฑเบš -fschedule-insns เบซเบผเบทเบขเบนเปˆ -O2 เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ.

-fsched-stalled-insns
-fsched-stalled-insns=n
เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™ insns (เบ–เป‰เบฒเบกเบต) เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเป‰เบฒเบเบเปˆเบญเบ™เป„เบงเบญเบฑเบ™เบ„เบงเบ™เบˆเบฒเบเปเบ–เบงเบ‚เบญเบ‡เบเบฒเบ™เบขเบธเบ”เป€เบŠเบปเบฒ
insns เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เบตเบชเบญเบ‡. -fno-sched-stalled-insns
เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบเป‰เบฒเบ insns เบเปˆเบญเบ™เป„เบงเบญเบฑเบ™เบ„เบงเบ™, -fsched-stalled-insns=0 เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบšเปเปˆเบกเบต
เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™ insns เบ„เบดเบงโ€‹เบ—เบตเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ–เบทเบโ€‹เบเป‰เบฒเบโ€‹เบเปˆเบญเบ™โ€‹เป„เบงโ€‹เบญเบฑเบ™โ€‹เบ„เบงเบ™โ€‹. -fsched-stalled-insns
เบšเปเปˆเบกเบตเบ„เปˆเบฒเป€เบ—เบปเปˆเบฒเบเบฑเบš -fsched-stalled-insns=1.

-fsched-stalled-insns-dep
-fsched-stalled-insns-dep=n
เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบเบธเปˆเบก insn (เบฎเบญเบšเบงเบฝเบ™) เบ–เบทเบเบเบงเบ”เบชเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบš insn เบ—เบตเปˆเบขเบธเบ”เป€เบŠเบปเบฒ.
เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบเบเบเป‰เบฒเบเบเปˆเบญเบ™เป„เบงเบญเบฑเบ™เบ„เบงเบ™เบˆเบฒเบเปเบ–เบงเบ‚เบญเบ‡ insns เบ—เบตเปˆเบขเบธเบ”เป€เบŠเบปเบฒ. เบ™เบตเป‰เบกเบต
เบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เบตเบชเบญเบ‡, เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒ -fsched-stalled-insns is
เปƒเบŠเป‰เปเบฅเป‰เบง. -fno-sched-stalled-insns-dep เป€เบ—เบปเปˆเบฒเบเบฑเบš -fsched-stalled-insns-dep=0.
-fsched-stalled-insns-dep เบšเปเปˆเบกเบตเบ„เปˆเบฒเป€เบ—เบปเปˆเบฒเบเบฑเบš
-fsched-stalled-insns-dep=1.

-fsched2-use-superblocks
เป€เบกเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, เปƒเบŠเป‰เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ superblock. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰
เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เป‰เบฒเบกเบ‚เบญเบšเป€เบ‚เบ”เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™, เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป„เบงเบ‚เบถเป‰เบ™. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™
เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡, เบเป‰เบญเบ™เบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบ GCC เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡ CPU เบขเปˆเบฒเบ‡เปƒเบเป‰เบŠเบดเบ”เบžเบฝเบ‡เบžเป
เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบšเปเปˆเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบˆเบฒเบ algorithm.

เบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, ie เบเบฑเบš
-fschedule-insns2 เบซเบผเบทเบขเบนเปˆ -O2 เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ.

-fsched-group-heuristic
เป€เบ›เบตเบ”เปƒเบŠเป‰ heuristic เบเบธเปˆเบกเปƒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ. heuristic เบ™เบตเป‰เบกเบฑเบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ
เบ—เบตเปˆเป€เบ›เบฑเบ™เบ‚เบญเบ‡เบเบธเปˆเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเบเบณเบ™เบปเบ”เป€เบงเบฅเบฒ
เป€เบ›เบตเบ”เปƒเบŠเป‰, ie เบเบฑเบš -fschedule-insns or -fschedule-insns2 เบซเบผเบทเบขเบนเปˆ -O2 เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ.

-fsched-critical-path-heuristic
เป€เบ›เบตเบ”เปƒเบŠเป‰ heuristic เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ. เบ™เบตเป‰เบกเบฑเบ heuristic
เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเบเบณเบ™เบปเบ”เป€เบงเบฅเบฒ
เป€เบ›เบตเบ”เปƒเบŠเป‰, ie เบเบฑเบš -fschedule-insns or -fschedule-insns2 เบซเบผเบทเบขเบนเปˆ -O2 เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ.

-fsched-spec-insn-heuristic
เป€เบ›เบตเบ”เปƒเบŠเป‰ heuristic เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเปƒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ. เบ™เบตเป‰เบกเบฑเบ heuristic
เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบญเปˆเบญเบ™เป€เบžเบเบซเบผเบฒเบเบ‚เบทเป‰เบ™. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบตเบ”โ€‹เปƒเบซเป‰โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹, เป€เบŠเบฑเปˆเบ™โ€‹: เบกเบตโ€‹ -fschedule-insns or -fschedule-insns2 เบซเบผเบทเบขเบนเปˆ -O2
เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ.

-fsched-rank-heuristic
เป€เบ›เบตเบ”เปƒเบŠเป‰ heuristic เบญเบฑเบ™เบ”เบฑเบšเปƒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ. heuristic เบ™เบตเป‰เบกเบฑเบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ
เป€เบ›เบฑเบ™เบ‚เบญเบ‡เบšเบฅเบฑเบญเบเบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบกเบตเบ‚เบฐเปœเบฒเบ” เบซเบผเบทเบ„เบงเบฒเบกเบ–เบตเปˆเบซเบผเบฒเบเบเบงเปˆเบฒ. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบตเบ”โ€‹เปƒเบซเป‰โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹, เป€เบŠเบฑเปˆเบ™โ€‹: เบกเบตโ€‹ -fschedule-insns or -fschedule-insns2 เบซเบผเบทเบขเบนเปˆ -O2
เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ.

-fsched-last-insn-heuristic
เป€เบ›เบตเบ”เปƒเบŠเป‰ heuristic เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเบธเบ”เบ—เป‰เบฒเบเปƒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ. heuristic เบ™เบตเป‰ favors เป„เบ”เป‰
เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบซเบ™เป‰เบญเบเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเบธเบ”เบ—เป‰เบฒเบเบ—เบตเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป„เบงเป‰. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰
เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰, ie เบเบฑเบš -fschedule-insns or -fschedule-insns2
เบซเบผเบทเบขเบนเปˆ -O2 เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ.

-fsched-dep-count-heuristic
เป€เบ›เบตเบ”เปƒเบŠเป‰ heuristic เบเบฒเบ™เบ™เบฑเบšเบ‚เบถเป‰เบ™เบเบฑเบšเบขเบนเปˆเปƒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ. heuristic เบ™เบตเป‰ favors เป„เบ”เป‰
เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบซเบผเบฒเบเบ‚เบทเป‰เบ™เบเบฑเบšเบกเบฑเบ™. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบตเบ”โ€‹เปƒเบซเป‰โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹, เป€เบŠเบฑเปˆเบ™โ€‹: เบกเบตโ€‹ -fschedule-insns or -fschedule-insns2 เบซเบผเบทเบขเบนเปˆ -O2
เบซเบผเบทเบชเบนเบ‡เบเบงเปˆเบฒ.

-freschedule-modulo-schedule-loops
เบเบฒเบ™เบเบณเบ™เบปเบ”เป€เบงเบฅเบฒเบ‚เบญเบ‡เป‚เบกเบ”เบนเป‚เบฅเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเปˆเบญเบ™เบเบฒเบ™เบเบณเบ™เบปเบ”เป€เบงเบฅเบฒเปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก. เบ–เป‰เบฒ loop เป€เบ›เบฑเบ™ modulo
เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ, เบ•เปเปˆเบกเบฒเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบœเปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™. เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบžเบทเปˆเบญ
เบ„เบงเบšเบ„เบธเบกเบžเบถเบ”เบ•เบดเบเบณเบ™เบฑเป‰เบ™.

-fselective-เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒโ€‹
เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป‚เบ”เบเปƒเบŠเป‰เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบเบฒเบ™เป€เบฅเบทเบญเบ. เบเบฒเบ™เป€เบฅเบทเบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เปเบฅเปˆเบ™
เปเบ—เบ™เบเบฒเบ™เบœเปˆเบฒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เปเบฒเบญเบดเบ”.

-fselective-เบเบณเบ™เบปเบ”โ€‹เป€เบงเบฅเบฒ2
เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป‚เบ”เบเปƒเบŠเป‰เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบเบฒเบ™เป€เบฅเบทเบญเบ. เบเบฒเบ™เป€เบฅเบทเบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เปเบฅเปˆเบ™
เปเบ—เบ™เบเบฒเบ™เบœเปˆเบฒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเบชเบญเบ‡.

-fsel-sched-pipelining
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบงเบฒเบ‡เบ—เปเปˆเบŠเบญเบšเปเบงเบ‚เบญเบ‡ loops เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเบฒเบ™เป€เบฅเบทเบญเบ. เบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™ -fselective-เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒโ€‹ or -fselective-เบเบณเบ™เบปเบ”โ€‹เป€เบงเบฅเบฒ2
เปเบกเปˆเบ™เป„เบ”เป‰เบซเบฑเบ™เบชเบธเบ”.

-fsel-sched-pipelining-outer-loops
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปเปˆ loops เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเบฒเบ™เบ„เบฑเบ”เป€เบฅเบทเบญเบ, เบเบฑเบ‡เบ—เปเปˆ loops เบžเบฒเบเบ™เบญเบ. เบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆ -fsel-sched-pipelining เปเบกเปˆเบ™เป„เบ”เป‰เบซเบฑเบ™เบชเบธเบ”.

-fshrink-wrap
เบ›เปˆเบญเบ prologues เบŸเบฑเบ‡เบŠเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบเปˆเบญเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบขเบนเปˆ
เป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-fcaller-เบ›เบฐเบซเบเบฑเบ”
เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ„เบธเบ™โ€‹เบ„เปˆเบฒโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบฅเบปเบ‡โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เบ—เบตเปˆ clobbered เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เป‚เบ—โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹, เป‚เบ”เบโ€‹
เบ›เปˆเบญเบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบžเบทเปˆเบญเบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เปเบฅเบฐเบŸเบทเป‰เบ™เบŸเบนเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ›เบฐเบกเบฒเบ™เบเบฒเบ™เป‚เบ—เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง
เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒ.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบชเบฐ เป€เปเบต เปƒเบ™เบšเบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡, เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เบตเปˆเบกเบต
เบšเปเปˆเบกเบตเบเบฒเบ™เป‚เบ—เบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เป€เบžเบทเปˆเบญเปƒเบŠเป‰เปเบ—เบ™.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fcombine-stack-เบ›เบฑเบš
เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เบฑเบšเบ•เบปเบง stack (pushes เปเบฅเบฐ pops) เปเบฅเบฐ stack เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบฐเบเบฒเบเบฒเบก
เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบชเบปเบกเบ—เบปเบšเบžเบงเบเบกเบฑเบ™.

เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O1 เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-fconserve-stack
เบžเบฐเบเบฒเบเบฒเบกเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เปƒเบŠเป‰ stack. compiler เบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰เบžเบทเป‰เบ™เบ—เบตเปˆ stack เบซเบ™เป‰เบญเบ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ
เบ–เป‰เบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบ„เบ‡เบเบฒเบ™เบŠเป‰เบฒเบฅเบปเบ‡. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ” เปƒเบซเบเปˆ stack-frame
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป€เบ–เบดเบ‡ 100 เปเบฅเบฐ large-stack-frame-growth เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป€เบ–เบดเบ‡ 400.

-ftree-reassoc
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰เบ„เบทเบ™เปƒเปเปˆ. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-ftre-pre
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™ (PRE) เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆ -O2 เปเบฅเบฐ -O3.

-ftree-partial-pre
เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™ (PRE) เบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆ -O3.

-ftree-forwprop
เบชเบทเบšเบ•เปเปˆเบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ•เบปเป‰เบ™เป„เบกเป‰. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐ
เบชเบนเบ‡เบ‚เบถเป‰เบ™.

- เบŸเบฃเบตโ€‹เบŸเบฃเบตโ€‹
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆ (FRE) เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ FRE เปเบฅเบฐ
PRE เปเบกเปˆเบ™เบงเปˆเบฒ FRE เบžเบฝเบ‡เปเบ•เปˆเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเบขเบนเปˆเปƒเบ™เบ—เบธเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆ
เบเบฒเบ™โ€‹เบ„เบดเบ”โ€‹เป„เบฅเปˆโ€‹เบ—เบตเปˆโ€‹เบŠเปเป‰เบฒโ€‹เบŠเป‰เบญเบ™โ€‹. เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ™เบตเป‰เปเบกเปˆเบ™เป„เบงเบเบงเปˆเบฒ PRE, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบตเบ”เป€เบœเบตเบเบซเบ™เป‰เบญเบเบฅเบปเบ‡
เบŠเปเป‰เบฒเบŠเป‰เบญเบ™. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-ftree-phiprop
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบปเบเบเบฒเบ™เป‚เบซเบผเบ”เบˆเบฒเบเบ•เบปเบงเบŠเบตเป‰เบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เปƒเบชเปˆเบ•เบปเป‰เบ™เป„เบกเป‰. เบšเบฑเบ”เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-fhoist-adjacent-loads
เป‚เบ”เบเบ„เบฒเบ”เบเบฒเบ™เบงเปˆเบฒ hoist loads เบˆเบฒเบเบ—เบฑเบ‡เบชเบญเบ‡เบชเบฒเบ‚เบฒเบ‚เบญเบ‡ if-then-else เบ–เป‰เบฒเบเบฒเบ™เป‚เบซเบผเบ”เบกเบฒเบˆเบฒเบ
เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปƒเบเป‰เบ„เบฝเบ‡เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚
เบเบฒเบ™โ€‹เป€เบ„เบทเปˆเบญเบ™โ€‹เป„เบซเบงโ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O2 เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-ftree-copy-prop
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ•เบปเป‰เบ™เป„เบกเป‰. เบšเบฑเบ”เบ™เบตเป‰เบเปเบฒเบˆเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเปเบฒเป€เบ™เบปเบฒเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™.
เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-fipa-pure-const
เบ„เบปเป‰เบ™เบžเบปเบšเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ”เบ—เบตเปˆเบšเปเบฅเบดเบชเบธเบ” เบซเบผเบทเบ„เบปเบ‡เบ—เบตเปˆ. เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-fipa เบญเป‰เบฒเบ‡โ€‹เบญเบตเบ‡โ€‹
เบ„เบปเป‰เบ™เบžเบปเบšเบ•เบปเบงเปเบ›เบชเบฐเบ–เบดเบ”เปƒเบ”เบ—เบตเปˆเบšเปเปˆเปœเบตเบˆเบฒเบเปœเปˆเบงเบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™. เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-fipa-pta
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ•เบปเบงเบŠเบตเป‰ interprocedural เปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚ interprocedural เปเบฅเบฐ
เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบญเป‰เบฒเบ‡เบญเบตเบ‡. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบซเบผเบฒเบเป€เบเบตเบ™เป„เบ› เปเบฅเบฐเบเบฒเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเบขเบนเปˆเปƒเบ™
เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ. เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ”เป†.

-fipa-profile
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเป‚เบ›เบผเป„เบŸเบฅเปŒเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™. เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบˆเบฒเบเป€เบขเบฑเบ™
เบซเบ™เป‰เบฒเบ—เบตเปˆเบ–เบทเบเบซเบกเบฒเบเป€เบ›เบฑเบ™เป€เบขเบฑเบ™. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰เบเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡ (เป€เบŠเบฑเปˆเบ™: "เป€เบขเบฑเบ™",
"noreturn", constructors static เบซเบผเบท destructors) เบ–เบทเบเบเปเบฒเบ™เบปเบ”. เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบขเบฑเบ™เปเบฅเบฐ
loop เบžเบฒเบเบชเปˆเบงเบ™เบซเบ™เป‰เบญเบเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบˆเบฐเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”. เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-fipa-cp
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ„เบปเบ‡เบ—เบตเปˆ interprocedural. เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰เบงเบดเป€เบ„เบฒเบฐเป‚เบ„เบ‡เบเบฒเบ™
เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบ„เปˆเบฒเบ—เบตเปˆเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ„เบปเบ‡เบ—เบตเปˆเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ optimizes
เบ•เบฒเบกเบ™เบฑเป‰เบ™. เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ
เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบกเบตโ€‹เบ„เปˆเบฒโ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆโ€‹เบ—เบตเปˆโ€‹เบœเปˆเบฒเบ™โ€‹เป„เบ›โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ
-O2, -เบญเบช เปเบฅเบฐ -O3.

-fipa-cp-clone
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ cloning เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ„เบปเบ‡เบ—เบตเปˆ interprocedural เป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡. เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹
เป€เบ›เบตเบ”เปƒเบŠเป‰, เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ„เบปเบ‡เบ—เบตเปˆ interprocedural เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆ cloning เป€เบกเบทเปˆเบญ
เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบžเบฒเบเบ™เบญเบเบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบญเบตเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ„เบปเบ‡เบ—เบตเปˆ. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบชเปเบฒเป€เบ™เบปเบฒเบซเบผเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆ, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ
เบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ” (เป€เบšเบดเปˆเบ‡ --param ipcp-unit-growth=เบกเบนเบ™เบ„เปˆเบฒ). เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ
-O3.

-fisolate-erroneous-paths-dereference
เบเบงเบ”เบžเบปเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ” เบซเบผเบทเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡ a
เบ•เบปเบงเบŠเบตเป‰ NULL. เปเบเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบญเบญเบเบˆเบฒเบเบเบฐเปเบชเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ•เบปเป‰เบ™เบ•เปเปเบฅเบฐเบซเบฑเบ™เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™
เบ”เป‰เบงเบเบžเบถเบ”เบ•เบดเบเบณเบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ” เบซเบผเบทเบšเปเปˆเป„เบ”เป‰เบเบณเบ™เบปเบ”เปƒเบซเป‰เป€เบ›เบฑเบ™เบˆเบฑเปˆเบ™เบˆเบฑเบš.

-fisolate-erroneous-paths-attribute
เบเบงเบ”เบžเบปเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบ›เบฐเบžเบถเบ”เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ” เบซเบผเบทเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เปˆเบฒ NULL เป€เบ›เบฑเบ™
เปƒเบŠเป‰เปƒเบ™เบ—เบฒเบ‡เบ—เบตเปˆเบ–เบทเบเบซเป‰เบฒเบกเป‚เบ”เบเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "returns_nonnull" เบซเบผเบท "nonnull".
เปเบเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบญเบญเบเบˆเบฒเบเบเบฐเปเบชเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบซเบผเบฑเบ เปเบฅเบฐเบ›เปˆเบฝเบ™เบ„เบณเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”
เบซเบผเบทเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบˆเบฑเปˆเบ™เบˆเบฑเบš. เบญเบฑเบ™เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบ‚เบฐเบ™เบฐเบ™เบตเป‰, เปเบ•เปˆเบญเบฒเบ”เบˆเบฐเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰
เป‚เบ”เบ "-O2" เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

- เบญเปˆเบฒเบ‡เบฅเป‰เบฒเบ‡เบกเบท
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบ›เบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐ
เบชเบนเบ‡เบ‚เบถเป‰เบ™.

-ftree-bit-ccp
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเป€เบฅเบฑเบเบ™เป‰เบญเบเบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚ เปเบฅเบฐ เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบงเบŠเบตเป‰
เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹. pass เบ™เบตเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบ•เบปเบงเปเบ› scalar เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปเบฅเบฐเปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ. เบกเบฑเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ™เบฑเป‰เบ™ -ftree-ccp เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™.

-ftree-ccp
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚ (CCP) เบขเบนเปˆเป€เบ—เบดเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰. เบœเปˆเบฒเบ™เบ™เบตเป‰เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบ•เบปเบงเปเบ› scalar เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปเบฅเบฐเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-ftre-switch-เปเบ›เบ‡
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบเปƒเบ™เบเบฒเบ™เบชเบฐเบซเบผเบฑเบšเบเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบ a
array scalar. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O2 เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-ftree-tail-merge
เบŠเบญเบเบซเบฒเบฅเปเบฒเบ”เบฑเบšเบฅเบฐเบซเบฑเบ”เบ”เบฝเบงเบเบฑเบ™. เป€เบกเบทเปˆเบญเบžเบปเบš, เปเบ—เบ™เบญเบฑเบ™เปœเบถเปˆเบ‡เบ”เป‰เบงเบเบเบฒเบ™เป‚เบ”เบ”เป„เบ›เบซเบฒเบญเบตเบเบญเบฑเบ™เปœเบถเปˆเบ‡.
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เบฅเบงเบกเบซเบฒเบ‡เบซเบผเบทเบเบฒเบ™เป‚เบ”เบ”เบ‚เป‰เบฒเบก. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆ -O2 เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ. เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบขเบนเปˆเปƒเบ™เบšเบฑเบ”เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰
max-tail-merge-เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบฅเบฐ max-tail-merge-iterations เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต.

-ftree-dce
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ•เบฒเบ (DCE) เปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O
เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-ftree-builtin-call-dce
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ•เบฒเบเบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚ (DCE) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เปƒเบ™
เบญเบฒเบ”เบˆเบฐเบ•เบฑเป‰เบ‡ "errno" เปเบ•เปˆเบšเปเปˆเบกเบตเบœเบปเบ™เบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡เปƒเบ”เป†. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
at -O2 เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒเบ–เป‰เบฒ -เบญเบช เบเบฑเบ‡โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹.

-ftree-dominator-opts
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เปเบฒเบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เบชเบฐเป€เบเบฑเบ”เป€เบ‡เบดเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเบŠเบฐเบ™เบดเบ” (เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ / เบชเปเบฒเป€เบ™เบปเบฒ, เบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™.
เบเบฒเบ™โ€‹เบฅเบปเบšโ€‹เบฅเป‰เบฒเบ‡โ€‹, เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบžเบฑเบ™โ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เบญเบญเบโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹) เป‚เบ”เบโ€‹เบญเบตเบ‡โ€‹เปƒเบชเปˆโ€‹เบเบฒเบ™โ€‹เป€เบ”เบฑเปˆเบ™โ€‹
เบ—เบฒเบ‡เบœเปˆเบฒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰. เบ™เบตเป‰เบเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบฐเบ—เบนเป‰เบเบฐเป‚เบ”เบ” (เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เป‚เบ”เบ”เป„เบ›เบซเบฒเบเบฐเป‚เบ”เบ”). เบ™เบตเป‰
เบ—เบธเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-ftree-dse
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบฎเป‰เบฒเบ™เบ•เบฒเบ (DSE) เปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰. เบฎเป‰เบฒเบ™เบ—เบตเปˆเบ•เบฒเบเปเบฅเป‰เบงเปเบกเปˆเบ™เบฎเป‰เบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ
เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบ•เปเปˆเบกเบฒเบ–เบทเบเบ‚เบฝเบ™เบ—เบฑเบšเป‚เบ”เบเบฎเป‰เบฒเบ™เบญเบทเปˆเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เปเบŠเบเปเบŠเบ‡เปƒเบ”เป†. เปƒเบ™
เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบฎเป‰เบฒเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบถเบšเบ–เบดเป‰เบก. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐ
เบชเบนเบ‡เบ‚เบถเป‰เบ™.

-ftre-ch
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡ loop เปƒเบชเปˆเบ•เบปเป‰เบ™เป„เบกเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบกเบฑเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™
เบ›เบฐเบชเบดเบ”เบ—เบดเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบฅเบฐเบซเบฑเบ”. เบกเบฑเบ™เบเบฑเบ‡เบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เบซเบ™เบถเปˆเบ‡เบเบฐเป‚เบ”เบ”. เบ—เบธเบ‡เบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ. เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš -เบญเบช, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง
เป€เบžเบตเปˆเบกเบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”.

-ftree-loop-optimize
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš loop เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐ
เบชเบนเบ‡เบ‚เบถเป‰เบ™.

-ftree-loop-linear
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™ loop interchange เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰. เบ„เบทโ€‹เบเบฑเบ™โ€‹เบเบฑเบš -floop-interchange. เบเบฒเบ™ เบ™เบณ เปƒเบŠเป‰
เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰, GCC เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ configured เบเบฑเบš --with-ppl เปเบฅเบฐ --with-cloog to
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™ Graphite loop.

-floop-interchange
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™ loop interchange เปƒเบ™ loops. เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบชเบญเบ‡ loops เบŠเป‰เบญเบ™เบเบฑเบ™
เบชเบฐเบซเบผเบฑเบš loops เบžเบฒเบเปƒเบ™เปเบฅเบฐเบ™เบญเบ. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบซเป‰ loop เป€เบŠเบฑเปˆเบ™:

DO J = 1, เบก
DO I = 1, N
A(J,I) = A(J, I) * C
เบชเบดเป‰เบ™เบชเบธเบ”
เบชเบดเป‰เบ™เบชเบธเบ”

loop interchange เบ›เปˆเบฝเบ™ loop เบ„เบทเบเบฑเบšเบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰:

DO I = 1, N
DO J = 1, เบก
A(J,I) = A(J, I) * C
เบชเบดเป‰เบ™เบชเบธเบ”
เบชเบดเป‰เบ™เบชเบธเบ”

เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบกเบทเปˆเบญ "N" เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ, เป€เบžเบฒเบฐเบงเปˆเบฒเปƒเบ™ Fortran, the
เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ array เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ•เบดเบ”เบ•เปเปˆเบเบฑเบ™เป‚เบ”เบเบ–เบฑเบ™, เปเบฅเบฐเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš
loop iterates เปƒเบ™เป„เบฅเบเบฐเปเบ–เบง, เบญเบฒเบ”เบˆเบฐเบชเป‰เบฒเบ‡เปƒเบ™เปเบ•เปˆเบฅเบฐเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ cache miss. เบ™เบตเป‰
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบŠเป‰เบเบฑเบšเบ—เบธเบเบžเบฒเบชเบฒเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ GCC เปเบฅเบฐเบšเปเปˆเบˆเปเบฒเบเบฑเบ”
เบŸเปเบฃเบฑเบ™. เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰, GCC เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ”เป‰เบงเบ --with-ppl
เปเบฅเบฐ --with-cloog เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™ Graphite loop.

-floop-strip-mine
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบฑเบ™เป€เบ›เบฑเบ™ loop strip mining เปƒเบ™ loops. เบเบฒเบ™เบ‚เบธเบ”เบ„เบปเป‰เบ™เบšเปเปˆเปเบฎเปˆเปเบเบเป€เบ›เบฑเบ™ loops เป€เบ›เบฑเบ™
เบชเบญเบ‡ loops เบฎเบฑเบ‡. เบงเบปเบ‡เบ™เบญเบเบกเบตเบ‚เบฑเป‰เบ™เป„เบ”เป€เบ—เบปเปˆเบฒเบเบฑเบšเบ‚เบฐเปœเบฒเบ”เปเบ–เบš เปเบฅเบฐเบ”เป‰เบฒเบ™เปƒเบ™
loop เบกเบต strides เบ‚เบญเบ‡ loop เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบžเบฒเบเปƒเบ™เป€เบชเบฑเป‰เบ™เบ”เปˆเบฒเบ‡. เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เปเบ–เบšเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ loop-block-tile-size เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบซเป‰ loop เป€เบŠเบฑเปˆเบ™:

DO I = 1, N
A(I) = A(I) + C
เบชเบดเป‰เบ™เบชเบธเบ”

loop strip mining เบ›เปˆเบฝเบ™ loop เบ„เบทเบเบฑเบšเบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบ‚เบฝเบ™เบงเปˆเบฒ:

DO II = 1, N, 51
DO I = II, min (II + 50, N)
A(I) = A(I) + C
เบชเบดเป‰เบ™เบชเบธเบ”
เบชเบดเป‰เบ™เบชเบธเบ”

เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰เปƒเบŠเป‰เบเบฑเบšเบ—เบธเบเบžเบฒเบชเบฒเบ—เบตเปˆ GCC เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบฅเบฐเบšเปเปˆเบˆเปเบฒเบเบฑเบ”
เบŸเปเบฃเบฑเบ™. เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰, GCC เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ”เป‰เบงเบ --with-ppl
เปเบฅเบฐ --with-cloog เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™ Graphite loop.

-floop-block
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™ blocking loop เปƒเบ™ loops. เบชเบฐเบเบฑเบ”เบฅเบฐเป€เบšเบตเบ”เบเบฑเบ‡เบ”เบดเบ™เปเบ•เปˆเบฅเบฐ loop เปƒเบ™
loop เบฎเบฑเบ‡เป€เบŠเบฑเปˆเบ™เบงเปˆเบฒเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เบญเบ‡ loops เบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบซเบกเบฒเบฐเบžเบฒเบเปƒเบ™ cache. เป„เบ”เป‰
เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เปเบ–เบšเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰ loop-block-tile-size เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡,
เปƒเบซเป‰ loop เบ„เบท:

DO I = 1, N
DO J = 1, เบก
A(J,I) = B(I) + C(J)
เบชเบดเป‰เบ™เบชเบธเบ”
เบชเบดเป‰เบ™เบชเบธเบ”

loop blocking เบ›เปˆเบฝเบ™ loop เบ„เบทเบเบฑเบšเบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰:

DO II = 1, N, 51
DO JJ = 1, M, 51
DO I = II, min (II + 50, N)
DO J = JJ, เบ™เบฒเบ—เบต (JJ + 50, M)
A(J,I) = B(I) + C(J)
เบชเบดเป‰เบ™เบชเบธเบ”
เบชเบดเป‰เบ™เบชเบธเบ”
เบชเบดเป‰เบ™เบชเบธเบ”
เบชเบดเป‰เบ™เบชเบธเบ”

เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบกเบทเปˆเบญ "M" เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ, เป€เบžเบฒเบฐเบงเปˆเบฒ loop เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบชเบธเบ”
iterates เบซเบผเบฒเบเบเบงเปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ. เบ™เบตเป‰
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบŠเป‰เบเบฑเบšเบ—เบธเบเบžเบฒเบชเบฒเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ GCC เปเบฅเบฐเบšเปเปˆเบˆเปเบฒเบเบฑเบ”
เบŸเปเบฃเบฑเบ™. เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰, GCC เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ”เป‰เบงเบ --with-ppl
เปเบฅเบฐ --with-cloog เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™ Graphite loop.

-fgraphite-เบ•เบปเบงเบ•เบปเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ•เบปเบงเบ•เบปเบ™เบชเปเบฒเบฅเบฑเบš graphite. เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป† SCoP เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡
เบเบฒเบ™เบชเบฐเปเบ”เบ‡ polyhedral เปเบฅเบฐเบ›เปˆเบฝเบ™เบกเบฑเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™ gimple. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ -fgraphite-เบ•เบปเบงเบ•เบปเบ™
เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบซเบผเบทเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡ GIMPLE -> GRAPHITE -> เบเบฒเบ™เบซเบฑเบ™เป€เบ›เบฑเบ™ GIMPLE.
เบšเบฒเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบ™เป‰เบญเบเบเปเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบ•เบปเบงเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ” CLooG เป€เบŠเบฑเปˆเบ™: เบ”เบฑเบ”เบชเบฐเบ™เบต
เบเบฒเบ™เปเบเบเปเบฅเบฐเบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ•เบฒเบเปƒเบ™ loops.

-floop-nest-optimize
เป€เบ›เบตเบ”เปƒเบŠเป‰เบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ loop nest เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ ISL. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ loop เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ
เบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ Pluto. เบกเบฑเบ™เบ„เบดเบ”เป„เบฅเปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ loop เป€เบซเบกเบฒเบฐเบชเปเบฒเบฅเบฑเบš
data-locality เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ™. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡.

-floop-parallelize-เบ—เบฑเบ‡เปเบปเบ”
เปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ‚เปเป‰เบกเบนเบ™ Graphite เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ” loops เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบ™เบฒเบ™เป„เบ”เป‰.
เบ‚เบฐเบซเบ™เบฒเบ™เบ—เบธเบ loops เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบงเบดเป€เบ„เบฒเบฐเป„เบ”เป‰เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบกเบต loop เบ›เบฐเบ•เบดเบšเบฑเบ”
เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เบกเบตเบเปเบฒเป„เบฅเปƒเบ™เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™ loops.

-fcheck-data-deps
เบ›เบฝเบšเบ—เบฝเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš
debugging เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เปเป‰เบกเบนเบ™.

-ftree-loop-if-convert
เบžเบฐเบเบฒเบเบฒเบกเบซเบฑเบ™เบ›เปˆเบฝเบ™เบเบฒเบ™เบเบฐเป‚เบ”เบ”เปเบšเบšเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เปƒเบ™เบงเบปเบ‡เปเบซเบงเบ™เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เป„เบ›เบชเบนเปˆเบ‡เปˆเบฒ-เปœเป‰เบญเบ
เบ—เบฝเบšเป€เบ—เบปเปˆเบฒ. เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป„เบซเบผเบญเบญเบเบˆเบฒเบ loops เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš
เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡ vectorization pass เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™ loops เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ–เป‰เบฒ vectorization เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰.

-ftree-loop-if-convert-stores
เบžเบฐเบเบฒเบเบฒเบกเป€เบžเบตเปˆเบกเบเบฒเบ™เบเบฐเป‚เบ”เบ”เบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเบšเบฑเบ™เบˆเบธเบšเบฑเบ™เบ—เบถเบเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ. เบ™เบตเป‰
เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบชเบฒเบกเบฒเบ”เบšเปเปˆเบ›เบญเบ”เป„เบžเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบซเบผเบฒเบเบเบฐเบ—เบนเป‰เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚
เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ writes into unconditional memory writes. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡,

เบชเปเบฒเบฅเบฑเบš (i = 0; i < N; i++)
เบ–เป‰เบฒ (cond)
A[i] = expr;

เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™

เบชเปเบฒเบฅเบฑเบš (i = 0; i < N; i++)
A[i] = cond ? expr : A[i];

เบ—เปˆเบฒเปเบฎเบ‡เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™เป€เบŠเบทเป‰เบญเบŠเบฒเบ”.

-ftree-loop-เบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบ
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบˆเบเบขเบฒเบ loop. เบ—เบธเบ‡เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš cache เปƒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ loop เปƒเบซเบเปˆ
เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš loop เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เป€เบŠเบฑเปˆเบ™: เบ‚เบฐเบซเบ™เบฒเบ™เบซเบผเบท vectorization, เปƒเบŠเป‰เป€เบงเบฅเบฒ
เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, loop เป„เบ”เป‰

DO I = 1, N
A(I) = B(I) + C
D(I) = E(I) * F
เบชเบดเป‰เบ™เบชเบธเบ”

เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™

DO I = 1, N
A(I) = B(I) + C
เบชเบดเป‰เบ™เบชเบธเบ”
DO I = 1, N
D(I) = E(I) * F
เบชเบดเป‰เบ™เบชเบธเบ”

-ftree-loop-distribute-patterns
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบˆเบเบขเบฒเบเปเบšเบš loop เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ”เป‰เบงเบเบเบฒเบ™เป‚เบ—เบซเบฒ a
เบซเปเบชเบฐเปเบธเบ”. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O3.

เบšเบฑเบ”เบ™เบตเป‰เปเบˆเบเบขเบฒเบเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ loops เปเบฅเบฐเบชเป‰เบฒเบ‡เบเบฒเบ™เป‚เบ—เบซเบฒ memset zero.
เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, loop เป„เบ”เป‰

DO I = 1, N
A(I) = 0
B(I) = A(I) + I
เบชเบดเป‰เบ™เบชเบธเบ”

เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™

DO I = 1, N
A(I) = 0
เบชเบดเป‰เบ™เบชเบธเบ”
DO I = 1, N
B(I) = A(I) + I
เบชเบดเป‰เบ™เบชเบธเบ”

เปเบฅเบฐ loop เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ—เบซเบฒ memset zero.

-ftree-loop-im
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปเบšเบšเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบšเบš loop เบขเบนเปˆเป€เบ—เบดเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰. เบœเปˆเบฒเบ™เบ™เบตเป‰เบเป‰เบฒเบเบžเบฝเบ‡เปเบ•เปˆ invarians เบ—เบตเปˆเปเบ‚เบ‡
เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบš RTL (เบเบฒเบ™เป‚เบ—เบŸเบฑเบ‡เบŠเบฑเบ™, เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบ‚เบฐเบซเบเบฒเบเป„เบ›เบชเบนเปˆเบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบซเบเปเป‰
เบ‚เบญเบ‡ insns). เบเบฑเบš -funswitch-loops เบกเบฑเบ™เบเบฑเบ‡เบเป‰เบฒเบ operands เบ‚เบญเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเป€เบ›เบฑเบ™
invariant เบญเบญเบเบˆเบฒเบ loop, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆ invariantness trivial เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปƒเบ™
loop unswitching. เบ›เบตเป‰เบเบฑเบ‡เบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เบฎเป‰เบฒเบ™.

-ftree-loop-ivcanon
เบชเป‰เบฒเบ‡เบ•เบปเบงเบ™เบฑเบš canonical เบชเปเบฒเบฅเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เปƒเบ™ loops เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”
เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™. เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เปเปˆเบกเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบญเบฒเบ”เบˆเบฐ
เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเป€เบฅเบเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ. เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš unrolling.

-fivopts
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เบปเบงเปเบ› induction (เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡, เบ•เบปเบงเปเบ› induction
merging and induction variable elimination) เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰.

-ftree-parallelize-loops=เบ™
Parallelize loops, ie, เปเบšเปˆเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆ iteration เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™ n threads. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบš loops เบ—เบตเปˆเบกเบต iterations เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เปเบฅเบฐเบชเบฒเบกเบฒเบ” arbitrarily
เบˆเบฑเบ”เบฎเบฝเบ‡เปƒเปเปˆ. เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบกเปˆเบ™เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบเปเบฒเป„เบฅเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ multiprocessor, เบชเปเบฒเบฅเบฑเบš loops
เบ—เบตเปˆเบกเบต CPU เบซเบผเบฒเบ, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบˆเปเบฒเบเบฑเบ” e.g. เป‚เบ”เบเปเบšเบ™เบงเบดเบ”เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰
implies - เบเบฐเบ—เบนเป‰, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบเปˆเบฝเบงเบเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™
- เบเบฐเบ—เบนเป‰.

-ftree-pta
เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆ - เบˆเบธเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ - เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
at -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-ftree-sra
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™ scalar เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบšเบฑเบ”เบ™เบตเป‰เปเบ—เบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡
เบ”เป‰เบงเบเป€เบเบฑเบ”เป€เบเบฑเบ”เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเป„เบงเป€เบเบตเบ™เป„เบ›. เบ—เบธเบ‡เบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-free-copyrename
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเปเบฒเป€เบ™เบปเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เบŠเบทเปˆเปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰. pass เบ™เบตเป‰เบžเบฐเบเบฒเบเบฒเบกเบ›เปˆเบฝเบ™เบŠเบทเปˆ compiler temporaries เป€เบ›เบฑเบ™
เบ•เบปเบงเปเบ›เบญเบทเปˆเบ™เบขเบนเปˆเบšเปˆเบญเบ™เบชเบณเป€เบ™เบปเบฒ, เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบกเบตเบŠเบทเปˆเบ•เบปเบงเปเบ›เบ—เบตเปˆเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™
เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ•เบปเบงเปเบ›เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐ
เบชเบนเบ‡เบ‚เบถเป‰เบ™.

-ftree-coalesce-inlined-vars
เบšเบญเบเบŠเบทเปˆ copyrename pass (เป€เบšเบดเปˆเบ‡ -free-copyrename) เป€เบžเบทเปˆเบญโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบฅเบงเบกโ€‹เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เป‰เบญเบ -
เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เบ„เบทเบเบฑเบ™, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบ inlined เบˆเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเบญเบทเปˆเบ™เป†. เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹
เบฎเบนเบšเปเบšเบšเบˆเปเบฒเบเบฑเบ”เบซเบผเบฒเบ -ftree-coalesce-vars. เบญเบฑเบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบ•เปเปˆเบ‚เปเป‰เบกเบนเบ™เบ”เบตเบšเบฑเบเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง
เบ•เบปเบงเปเบ› inlined, เปเบ•เปˆเบกเบฑเบ™เบˆเบฐเบฎเบฑเบเบชเบฒเบ•เบปเบงเปเบ›เบ‚เบญเบ‡ inlined-into function เบ™เบญเบเบˆเบฒเบ.
เป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เป€เบŠเบฑเปˆเบ™เบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบกเบตเปเบ™เบงเป‚เบ™เป‰เบกเบ—เบตเปˆเบˆเบฐเบกเบตเบ„เปˆเบฒเบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰เบขเบนเปˆเปƒเบ™ a
เป€เบŠเบ”เบŠเบฑเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ GCC เบฅเบธเป‰เบ™เป€เบเบปเปˆเบฒเบเบงเปˆเบฒ 4.7.

-ftree-coalesce-vars
เบšเบญเบเบŠเบทเปˆ copyrename pass (เป€เบšเบดเปˆเบ‡ -free-copyrename) เป€เบžเบทเปˆเบญโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบฅเบงเบกโ€‹เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เป‰เบญเบ -
เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบžเบฝเบ‡เปเบ•เปˆ compiler temporaries. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบˆเปเบฒเบเบฑเบ”เบขเปˆเบฒเบ‡เบฎเป‰เบฒเบเปเบฎเบ‡
เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบ—เบตเปˆโ€‹เบชเบฑเบ‡โ€‹เบฅเบงเบกโ€‹เบเบฑเบšโ€‹ -fno-var-tracking-assignments.
เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”, เบ—เบธเบ‡เบ™เบตเป‰เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰ SSA coalescing เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เบฅเบงเบกเบ—เบฑเบ‡
เบขเบนเปˆเปƒเบ™เปเบ–เบง. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

- เบซเป‰เบฒโ€‹เบ›เบตโ€‹
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบŠเบปเปˆเบงเบ„เบฒเบงเปƒเบ™เป„เบฅเบเบฐ SSA->เป„เบฅเบเบฐเบ›เบปเบเบเบฐเบ•เบด. เป‚เบชเบ”
use/single def temporaries เปเบกเปˆเบ™เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ”เป‰เบงเบเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ. เบ™เบตเป‰เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ GIMPLE, เปเบ•เปˆเปƒเบซเป‰เบ•เบปเบงเบ‚เบฐเบซเบเบฒเบเบซเบผเบฒเบ
เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบœเบฐเบฅเบดเบ” RTL เบ”เบตเบ‚เบถเป‰เบ™. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-ftree-slsr
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เป€เบชเบฑเป‰เบ™เบŠเบทเปˆเปƒเบชเปˆเบ•เบปเป‰เบ™เป„เบกเป‰. เบ™เบตเป‰เบฎเบฑเบšเบฎเบนเป‰เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ„เบนเบ™ เปเบฅเบฐเปเบ—เบ™เบ—เบตเปˆเบžเบงเบเบกเบฑเบ™เบ”เป‰เบงเบเบเบฒเบ™เบ„เบณเบ™เบงเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบเบงเปˆเบฒ
เป€เบกเบทเปˆเบญเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ.

-ftree-vectorize
เบ›เบฐเบ•เบดเบšเบฑเบ” vectorization เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰. เบ—เบธเบ‡เบ™เบตเป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ -ftree-loop-vectorize เปเบฅเบฐ
-ftree-slp-vectorize เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบขเปˆเบฒเบ‡โ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™โ€‹.

-ftree-loop-vectorize
เบ›เบฐเบ•เบดเบšเบฑเบ” vectorization loop เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O3 เปเบฅเบฐเป€เบงเบฅเบฒเปƒเบ”
-ftree-vectorize เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™.

-ftree-slp-vectorize
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเป‰เบฒเบ‡ vectorization เบžเบทเป‰เบ™เบ–เบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰. เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O3 เปเบฅเบฐ
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ -ftree-vectorize เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™.

-fvect-cost-model=เบฎเบนเบšเปเบšเบš
เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฎเบนเบšเปเบšเบšเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš vectorization. เป„เบ”เป‰ เบฎเบนเบšเปเบšเบš เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™
"เบšเปเปˆเบˆเปเบฒเบเบฑเบ”", "เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง" เบซเบผเบท "เบฅเบฒเบ„เบฒเบ–เบทเบ". เบ”เป‰เบงเบเบฎเบนเบšเปเบšเบš "เบšเปเปˆเบˆเปเบฒเบเบฑเบ”" เบฅเบฐเบซเบฑเบ” vectorized-
เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเบกเบตเบเปเบฒเป„เบฅเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบนเบšเปเบšเบš "dynamic" เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบงเบฅเบฒเปเบฅเปˆเบ™เบˆเบฐ
เบ›เบปเบเบ›เป‰เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบฅเบฐเบซเบฑเบ” vectorized เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบฑเบšเบŠเปเป‰เบฒเบ„เบทเบ™เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰
เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบงเบเปˆเบงเบฒเป€เบกเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ loop scalar เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš. เบฎเบนเบšเปเบšเบš "เบฅเบฒเบ„เบฒเบ–เบทเบ" เบˆเบฐ
เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ vectorization เบ‚เบญเบ‡ loops เบšเปˆเบญเบ™เบ—เบตเปˆเบเบฒเบ™เป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบซเป‰เบฒเบกเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡
เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบš runtime เบ—เบตเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบญเบตเบ‡โ€‹เปƒเบชเปˆโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบซเบผเบทโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบ•เปเบฒโ€‹เปเบซเบ™เปˆเบ‡โ€‹เปเบ•เปˆโ€‹เบšเปเปˆโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เปเบกเปˆเบ™โ€‹เป€เบ—เบปเปˆเบฒโ€‹เบ—เบฝเบกโ€‹เบเบฑเบ™โ€‹
เบเบฑเบšเบฎเบนเบšเปเบšเบš "dynamic". เบฎเบนเบšเปเบšเบšเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ—เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบญเบทเปˆเบ™เป†
เปเบฅเบฐเป€เบ›เบฑเบ™ "เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง" เบซเบผเบท "เบฅเบฒเบ„เบฒเบ–เบทเบ".

-fsimd-cost-model=เบฎเบนเบšเปเบšเบš
เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฎเบนเบšเปเบšเบšเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš vectorization เบ‚เบญเบ‡ loops เบซเบกเบฒเบเบ”เป‰เบงเบ OpenMP เบซเบผเบท Cilk
เบšเบงเบเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡ simd. เป„เบ”เป‰ เบฎเบนเบšเปเบšเบš เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™ "เบšเปเปˆเบˆเปเบฒเบเบฑเบ”", "เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง",
"เบฅเบฒเบ„เบฒเบ–เบทเบ". เบ„เบธเบ™โ€‹เบ„เปˆเบฒโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ‚เบญเบ‡โ€‹ เบฎเบนเบšเปเบšเบš เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เปƒเบ™โ€‹ -fvect-cost-model
เปเบฅเบฐเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบฎเบนเบšเปเบšเบšเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบ”เป‰เบงเบ -fvect-cost-model เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

-ftree-vrp
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ‚เบญเบ‡เบกเบนเบ™เบ„เปˆเบฒเบ•เบฒเบกเบ•เบปเป‰เบ™เป„เบกเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡
pass, เปเบ•เปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เปˆเบฒ, เป„เบฅเบเบฐเบ‚เบญเบ‡เบ„เปˆเบฒเบˆเบฐเบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰
optimizers เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบญเบšเป€เบ‚เบ” array เปเบฅเบฐเบ•เบปเบงเบŠเบตเป‰ null
เบเบงเบ”เบเบฒ. เบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ -O2 เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒ. เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ•เบปเบงเบŠเบตเป‰ null
เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ -fdelete-null-pointer-checks เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™.

-ftracer
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบซเบฒเบ‡เป€เบžเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเบ‚เบฐเบซเบ™เบฒเบ” superblock. เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบเบ”เบฒเบ
เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบญเบทเปˆเบ™เป†เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒ.

-funroll-loops
เบ–เบญเบ” loops เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเบซเบผเบทเบ•เบฒเบก
เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ loop เป„เบ”เป‰. -funroll-loops implies -frerun-cse-after-loop. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰
เบฅเบฐเบซเบฑเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒ, เปเบฅเบฐเบญเบฒเบ”เบˆเบฐ เบซเบผเบทเบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เปเบฅเปˆเบ™เป„เบงเบ‚เบถเป‰เบ™.

-funroll-all-loops
เบ–เบญเบ” loops เบ—เบฑเบ‡เบซเบกเบปเบ”, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบšเปเปˆเปเบ™เปˆเบ™เบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ loop เปเบกเปˆเบ™
เป€เบ‚เบปเป‰เบฒ. เบ™เบตเป‰เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบ„เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบŠเป‰เบฒเบซเบผเบฒเบ. -funroll-all-loops เบซเบกเบฒเบเป€เบ–เบดเบ‡
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบเบฑเบšโ€‹ -funroll-loops,

-fsplit-ivs-in-unroller
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ‚เบญเบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ› induction เปƒเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบ•เปเปˆเบกเบฒเบ‚เบญเบ‡
unrolled loop เป‚เบ”เบเปƒเบŠเป‰เบ„เปˆเบฒเปƒเบ™ iteration เบ—เปเบฒเบญเบดเบ”. เบ™เบตเป‰เบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบเบฒเบง
เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบœเปˆเบฒเบ™.

เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ -fweb เปเบฅเบฐ CSE เบกเบฑเบเบˆเบฐเบžเบฝเบ‡เบžเปเป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบœเบปเบ™เบ”เบฝเบงเบเบฑเบ™.
เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ™เบฑเป‰เบ™เบšเปเปˆเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡ loop เปเบกเปˆเบ™เบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบเปˆเบงเบฒ a
เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ”เบฝเบง. เบกเบฑเบ™เบเบฑเบ‡เบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ
เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เปƒเบ™ CSE pass.

เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-fvariable-expansion-in-unroller
เบ”เป‰เบงเบเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰, เบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบชเป‰เบฒเบ‡เบซเบผเบฒเบเบชเปเบฒเป€เบ™เบปเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบกเบทเปˆเบญ
unrolling loop, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ”เบตเบเบงเปˆเบฒ.

-fpartial-inlining
เบžเบฒเบเบชเปˆเบงเบ™เปƒเบ™เปเบ–เบงเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ inlining เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡
เป€เบ›เบตเบ”เป‚เบ”เบ -finline-functions or -finline-small-functions เบ•เบปเบงเป€เบฅเบทเบญเบ

เป€เบ›เบตเบ”เปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš -O2.

-fpredictive-commoning
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบ„เบฒเบ”เบ„เบฐเป€เบ™, ie, เบเบฒเบ™เปƒเบŠเป‰เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบ„เบทเบ™เปƒเบซเบกเปˆ (เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ
เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ) เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบฎเบญเบšเบงเบฝเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O3.

-fprefetch-loop-arrays
เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹, เบชเป‰เบฒเบ‡โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เป€เบžเบทเปˆเบญ prefetch เบ„เบงเบฒเบกโ€‹เบŠเบปเบ‡โ€‹เบˆเปเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹
เบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ loops เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ array เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเบซเบผเบทเบฎเป‰เบฒเบเปเบฎเบ‡เบเบงเปˆเบฒเป€เบเบปเปˆเบฒ; เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบซเบผเบฒเบ
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡ loops เบžเบฒเบเปƒเบ™เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡.

เบ„เบปเบ™เบžเบดเบเบฒเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบš -เบญเบช.

-fno-peephole
-fno-peephole2
เบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš pephole เบชเบฐเป€เบžเบฒเบฐเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡
-fno-peephole เปเบฅเบฐ -fno-peephole2 เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™ compiler; เบšเบฒเบ‡
เป€เบ›เบปเป‰เบฒเปเบฒเบเปƒเบŠเป‰เบญเบฑเบ™เปœเบถเปˆเบ‡, เบšเบฒเบ‡เบ„เบปเบ™เปƒเบŠเป‰เบญเบตเบเบญเบฑเบ™เปœเบถเปˆเบ‡, เบšเบฒเบ‡เบญเบฑเบ™เปƒเบŠเป‰เบ—เบฑเบ‡เบชเบญเบ‡เบขเปˆเบฒเบ‡.

-fpeephole เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. -fpeephole2 เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fno-guess-branch-probability
เบขเปˆเบฒเบ„เบฒเบ”เป€เบ”เบปเบฒเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบชเบฒเบ‚เบฒเป‚เบ”เบเปƒเบŠเป‰ heuristics.

GCC เปƒเบŠเป‰ heuristics เป€เบžเบทเปˆเบญเบ„เบฒเบ”เป€เบ”เบปเบฒเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบชเบฒเบ‚เบฒเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบชเบฐเบซเบ™เบญเบ‡เป‚เบ”เบ
เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบ›เบฃเป„เบŸเบฅเปŒ (-fprofile-arcs). heuristics เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เป„เบซเบผเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก
เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡. เบ–เป‰เบฒเบšเบฒเบ‡เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเบฒเบ‚เบฒเบ–เบทเบเบฅเบฐเบšเบธเป‚เบ”เบ __builtin_เบ„เบฒเบ”เบซเบงเบฑเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™
heuristics เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ„เบฒเบ”เป€เบ”เบปเบฒเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบชเบฒเบ‚เบฒเบชเปเบฒเบฅเบฑเบšเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบเบฒเบ™เป„เบซเบผเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก
เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡, เบเบฒเบ™เบเบดเบ™ __builtin_เบ„เบฒเบ”เบซเบงเบฑเบ‡ เบ‚เปเป‰เบกเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฑเบ™เบŠเบต. เบเบฒเบ™โ€‹เบžเบปเบงโ€‹เบžเบฑเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹
heuristics เปเบฅเบฐ __builtin_เบ„เบฒเบ”เบซเบงเบฑเบ‡ เบชเบฒเบกเบฒเบ”เบชเบฑเบšเบชเบปเบ™, เปเบฅเบฐเปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบต, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”
เบ›เบดเบ”เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™ heuristics เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡ __builtin_เบ„เบฒเบ”เบซเบงเบฑเบ‡ เบ‡เปˆเบฒเบเบเบงเปˆเบฒ
เป€เบ‚เบปเป‰เบฒเปƒเบˆ

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fguess-เบชเบฒเบ‚เบฒ-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ เปƒเบ™โ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹ -O, -O2, -O3, -เบญเบช.

-freorder-เบ•เบฑเบ™
Reorder blocks เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบฅเบงเบšเบฅเบงเบกเป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบญเบปเบฒ
เบชเบฒเบ‚เบฒ เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบฅเบฐเบซเบฑเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3.

-freorder-blocks-and-partition
เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบ reordering เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบก, เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบชเบฒโ€‹เบ‚เบฒโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹, เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบ—เปˆเบญเบ™โ€‹เป„เบกเป‰โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เบฎเป‰เบญเบ™โ€‹เปเบฅเบฐโ€‹เป€เบขเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เปเบเบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบซเบฒเบโ€‹
เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เปเบฅเบฐโ€‹เป„เบŸเบฅโ€‹เปŒ .oโ€‹, เป€เบžเบทเปˆเบญโ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ—เป‰เบญเบ‡โ€‹เบ–เบดเปˆเบ™โ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹.

เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰เบˆเบฐเบ–เบทเบเบ›เบดเบ”เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™,
เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™ linkonceโ€‹, เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบžเบฒเบโ€‹เบ—เบตเปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป‚เบ”เบโ€‹เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เปเบฅเบฐโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เปƒเบ”เป†โ€‹
เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบกเบตเบŠเบทเปˆ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš x86 เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3.

-freorder - เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹
เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบฅเบฐเบซเบฑเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบเบฒเบ™เปƒเบŠเป‰เบชเปˆเบงเบ™เบเปˆเบญเบเบžเบดเป€เบชเบ” ".text.hot" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบฅเบทเป‰เบญเบเป†เบ—เบตเปˆเบชเบธเบ”
เบŸเบฑเบ‡เบŠเบฑเบ™ เปเบฅเบฐ ".text.unlikely" เบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. Reordering เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบ
เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฎเบนเบšเปเบšเบšเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ•เป‰เบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบกเบตเบŠเบทเปˆเปเบฅเบฐเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ•เป‰เบญเบ‡เบงเบฒเบ‡
เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ„เปเบฒเบ•เบดเบŠเบปเบกเป‚เบ›เบฃเป„เบŸเบฅเปŒเบ•เป‰เบญเบ‡เบกเบตเบขเบนเปˆเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เป€เบšเบดเปˆเบ‡
-fprofile-arcs เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3, -เบญเบช.

-fstrict-aliasing
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ compiler เบชเบปเบกเบกเบธเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบ™เบฒเบกเปเบเบ‡เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเปƒเบŠเป‰เบเบฑเบšเบžเบฒเบชเบฒ
เบ–เบทเบเบฅเบงเบšเบฅเบงเบก. เบชเปเบฒเบฅเบฑเบš C (เปเบฅเบฐ C ++), เบ™เบตเป‰เบˆเบฐเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบšเปเปˆเป€เบ„เบตเบเบญเบฒเป„เบชเบขเบนเปˆ
เบ—เบตเปˆเบขเบนเปˆเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบ›เบฐเป€เบžเบ”เป€เบเบทเบญเบšเบ„เบทเบเบฑเบ™.
เบ•เบปเบงเบขเปˆเบฒเบ‡, "unsigned int" เบชเบฒเบกเบฒเบ” alias เป€เบ›เบฑเบ™ "int", เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™ "void*" เบซเบผเบท "double". เบ
เบ›เบฐเป€เบžเบ”เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบญเบฒเบ”เบ™เบฒเบกเปเบเบ‡เบ›เบฐเป€เบžเบ”เบญเบทเปˆเบ™.

เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเป€เบ›เบฑเบ™เบžเบดเป€เบชเบ”เบ•เปเปˆเบฅเบฐเบซเบฑเบ”เปเบšเบšเบ™เบตเป‰:

เบชเบฐเบซเบฐเบžเบฑเบ™ a_union {
int i;
double d;
};

int f() {
เบชเบฐเบซเบฐเบžเบฑเบ™ a_union t;
td = 3.0;
ti เบเบฑเบšเบ„เบทเบ™;
}

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบเบชเบฐเบกเบฒเบŠเบดเบเบชเบฐเบซเบฐเบžเบฑเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบเปˆเบงเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰
เบฅเบฒเบโ€‹เบฅเบฑเบโ€‹เบญเบฑเบโ€‹เบชเบญเบ™โ€‹เป€เบžเบทเปˆเบญ (เป€เบญเบตเป‰เบ™โ€‹เบงเปˆเบฒ "เบ›เบฐโ€‹เป€เบžเบ”โ€‹-punningโ€‹"โ€‹) เปเบกเปˆเบ™โ€‹เบ—เบปเปˆเบงโ€‹เป„เบ›โ€‹. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบต -fstrict-aliasing, เบ›เบฐโ€‹เป€เบžเบ”-
punning เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰, เบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบœเปˆเบฒเบ™เบ›เบฐเป€เบžเบ”เบชเบฐเบซเบฐเบžเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป„เบ”เป‰
เบฅเบฐเบซเบฑเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบšเปเปˆ:

int f() {
เบชเบฐเบซเบฐเบžเบฑเบ™ a_union t;
int* ip;
td = 3.0;
ip = &t.i;
เบเบฑเบšเบ„เบทเบ™ *ip;
}

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบเบฒเบ™เป€เบญเบปเบฒเบ—เบตเปˆเบขเบนเปˆ, เบเบฒเบ™เป‚เบเบ™เบ•เบปเบงเบŠเบตเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบฅเบฐ
เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบกเบตเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบฑเบเบชเบฐเปเบ”เบ‡เบˆเบฐเปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบชเบฐเบซเบฐเบžเบฑเบ™,
เบ•เบปเบงเบขเปˆเบฒเบ‡:

int f() {
double d = 3.0;
เบเบฑเบšเบ„เบทเบ™ ((เบชเบฐเบซเบฐเบžเบฑเบ™ a_union *) &d)->i;
}

เป„เบ”เป‰ -fstrict-aliasing เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบตเบ”โ€‹เปƒเบซเป‰โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹ -O2, -O3, -เบญเบช.

-fstrict-เบฅเบปเป‰เบ™
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ compiler เบ–เบทเบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™ overflow เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”, เบ‚เบถเป‰เบ™เบเบฑเบšเบžเบฒเบชเบฒ
เบ–เบทเบเบฅเบงเบšเบฅเบงเบก. เบชเปเบฒเบฅเบฑเบš C (เปเบฅเบฐ C ++) เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ overflow เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เป€เบฅเบเป€เบฅเบเบเบฑเบš
เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบฅเบปเบ‡เบ™เบฒเบกเปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบญเบฒเบ”เบˆเบฐเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰
เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เปˆเบฒเบ‡เป†. เบ•เบปเบงเบขเปˆเบฒเบ‡, compiler เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบŠเบฑเปˆเบ™ "i + 10 > i" เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบชเบฐเป€เบซเบกเบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบฑเบ™ "i". เบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™
เบ–เบทเบเบ•เป‰เบญเบ‡เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบเบฒเบ™เบฅเบปเบ‡เบ™เบฒเบก overflow เปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเปเบกเปˆเบ™เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ–เป‰เบฒ "i + 10"
overflows เป€เบกเบทเปˆเบญเปƒเบŠเป‰ twos complement เป€เบฅเบเบ„เบฐเบ™เบดเบ”เบชเบฒเบ”. เป€เบกเบทเปˆเบญเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเปƒเบ”เป†
เบžเบฐเบเบฒเบเบฒเบกเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™ overflows เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบฅเบปเบ‡เบ™เบฒเบกเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™
เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบกเบตเบชเปˆเบงเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡.

เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เบเบฑเบ‡โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบœเบนเป‰โ€‹เบชเบฑเบ‡โ€‹เบฅเบงเบกโ€‹เบชเบปเบกโ€‹เบกเบธเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบ•เบปเบงโ€‹เบŠเบตเป‰โ€‹เบ—เบตเปˆโ€‹เป€เบ‚เบฑเป‰เบกโ€‹เบ‡เบงเบ”โ€‹: เปƒเบซเป‰ a
เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบงเบฑเบ”เบ–เบธ, เบ–เป‰เบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เปˆเบฒเบŠเบปเบ”เป€เบŠเบตเบเปƒเบชเปˆเบ•เบปเบงเบŠเบตเป‰เบ™เบฑเป‰เบ™เบˆเบฐเบšเปเปˆเบชเป‰เบฒเบ‡เบ•เบปเบงเบŠเบตเป‰
เบเบฑเบšเบงเบฑเบ”เบ–เบธเบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ compiler เบชเบฐเบซเบผเบธเบš
เบงเปˆเบฒ "p + u > p" เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบชเบฐเป€เปเบตเบชเบณเบฅเบฑเบšเบ•เบปเบงเบŠเบตเป‰ "p" เปเบฅเบฐเบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™ "u". เบ™เบตเป‰
เบเบฒเบ™เบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เบซเปเปˆเบ•เบปเบงเบŠเบตเป‰เบšเปเปˆเป„เบ”เป‰เบ–เบทเบ เบเบณ เบ™เบปเบ”, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบญเบญเบ
false เบ–เป‰เบฒ "p + u" overflows เป‚เบ”เบเปƒเบŠเป‰ twos complement arithmetic.

เป€เบšเบดเปˆเบ‡เบญเบตเบ -fwrapv เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ -fwrapv เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ integer signed overflow เปเบกเปˆเบ™
เบเปเบฒเบ™เบปเบ”เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™: เบกเบฑเบ™เบซเปเปˆ. เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹ -fwrapv เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡
-fstrict-เบฅเบปเป‰เบ™ เปเบฅเบฐ -fno-strict-overflow เบชเปเบฒเบฅเบฑเบšเบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก. เบเบฑเบš -fwrapv เบšเบฒเบ‡โ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹
เบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡ overflow. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒ compiler เป„เบ”เป‰เบฎเบฑเบš overflow เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”
เป€เบฅเบเป€เบฅเบเปƒเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ, เบ„เปˆเบฒ overflowed เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบš -fwrapv, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™
เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™.

เป„เบ”เป‰ -fstrict-เบฅเบปเป‰เบ™ เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบตเบ”โ€‹เปƒเบซเป‰โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹ -O2, -O3, -เบญเบช.

-falign-functions
-falign-functions=n
เบˆเบฑเบ”เบฅเบฝเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ•เปเปˆเบเบฑเบšเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ•เปเปˆเป„เบ›เบ‚เบญเบ‡เบชเบญเบ‡เบญเบฑเบ™เปƒเบซเบเปˆเบเบงเปˆเบฒ n, เบ‚เป‰เบฒเบกเป€เบ–เบดเบ‡ n
เป„เบšเบ•เปŒ. เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡, -falign-functions=32 เบˆเบฑเบ”เบฎเบฝเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เป„เบ›เบซเบฒ 32-byte เบ–เบฑเบ”เป„เบ›
เบŠเบฒเบเปเบ”เบ™, เปเบ•เปˆ -falign-functions=24 เบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบšเบ‚เบญเบšเป€เบ‚เบ” 32-byte เบ–เบฑเบ”เป„เบ›เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบงเปˆเบฒเบ™เบตเป‰
เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบ‚เป‰เบฒเบก 23 bytes เบซเบผเบทเบซเบ™เป‰เบญเบเบเบงเปˆเบฒ.

-fno-align-functions เปเบฅเบฐ -falign-functions=1 เปเบกเปˆเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเปเบฅเบฐเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ
เบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡.

เบœเบนเป‰เบ›เบฐเบเบญเบšเบšเบฒเบ‡เบชเปˆเบงเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบธเบ‡เบ™เบตเป‰เป€เบกเบทเปˆเบญ n เป€เบ›เบฑเบ™เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ‚เบญเบ‡เบชเบญเบ‡; เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบกเบฑเบ™เปเบกเปˆเบ™
เบกเบปเบ™เบ‚เบถเป‰เบ™.

If n เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธ เบซเบผเบทเป€เบ›เบฑเบ™เบชเบนเบ™, เปƒเบซเป‰เปƒเบŠเป‰เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3.

-falign-เบ›เป‰เบฒเบ
-falign-labels=n
เบˆเบฑเบ”เบงเบฒเบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบเบชเบฒเบ‚เบฒเบ—เบฑเบ‡เปเบปเบ”เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบ‚เบ”เปเบ”เบ™เบ—เบตเปˆเบกเบตเบญเบณเบ™เบฒเบ”เบ‚เบญเบ‡เบชเบญเบ‡, เบ‚เป‰เบฒเบกเป„เบ›เป€เบ–เบดเบ‡ n bytes เบ„เบท
-falign-functions. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบŠเป‰เบฒเบฅเบปเบ‡เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบ•เป‰เบญเบ‡เปƒเบชเปˆ
เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ dummy เบชเปเบฒเบฅเบฑเบšเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเบฒเบ‚เบฒเปเบกเปˆเบ™เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เปƒเบ™เบเบฒเบ™เป„เบซเบผเบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”.

-fno-align-labels เปเบฅเบฐ -falign-labels=1 เปเบกเปˆเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเปเบฅเบฐเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ›เป‰เบฒเบเบšเปเปˆเปเบกเปˆเบ™
เบชเบญเบ”เบ„เปˆเบญเบ‡.

If -falign-loops or -falign-jumps เปเบกเปˆเบ™เปƒเบŠเป‰เป„เบ”เป‰ เปเบฅเบฐเบซเบผเบฒเบเบเบงเปˆเบฒเบ„เปˆเบฒเบ™เบตเป‰, เบˆเบฒเบเบ™เบฑเป‰เบ™
เบ„เปˆเบฒเบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เบ–เบทเบเปƒเบŠเป‰เปเบ—เบ™.

If n เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธ เบซเบผเบทเป€เบ›เบฑเบ™เบชเบนเบ™, เปƒเบซเป‰เปƒเบŠเป‰เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบผเบฒเบ
เบˆเบฐ 1, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบญเบ”เบ„เปˆเบญเบ‡.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3.

-falign-loops
-falign-loops=n
เบˆเบฑเบ”เบฎเบฝเบ‡ loops เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบ‚เบ”เปเบ”เบ™เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ‚เบญเบ‡เบชเบญเบ‡, เบ‚เป‰เบฒเบกเป€เบ–เบดเบ‡ n bytes เบ„เบท -falign-functions.
เบ–เป‰เบฒ loops เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฒเบเบ„เบฑเป‰เบ‡, เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ–เบดเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ”เป†เบ‚เบญเบ‡ dummy
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™.

-fno-align-loops เปเบฅเบฐ -falign-loops=1 เปเบกเปˆเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเปเบฅเบฐเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ loops เบšเปเปˆเปเบกเปˆเบ™
เบชเบญเบ”เบ„เปˆเบญเบ‡.

If n เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธ เบซเบผเบทเป€เบ›เบฑเบ™เบชเบนเบ™, เปƒเบซเป‰เปƒเบŠเป‰เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3.

-falign-jumps
-falign-jumps=n
เบˆเบฑเบ”เบงเบฒเบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบเบชเบฒเบ‚เบฒเปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบ‚เบ”เปเบ”เบ™เบ—เบตเปˆเบกเบตเบญเบณเบ™เบฒเบ”เบ‚เบญเบ‡เบชเบญเบ‡, เบชเบณเบฅเบฑเบšเป€เบ›เบปเป‰เบฒเปเบฒเบเบชเบฒเบ‚เบฒเบ—เบตเปˆเป€เบ›เบปเป‰เบฒเปเบฒเบ
เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เป‚เบ”เบ”, เบ‚เป‰เบฒเบกเป€เบ–เบดเบ‡ n bytes เบ„เบท -falign-functions. เปƒเบ™
เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ dummy.

-fno-align-jumps เปเบฅเบฐ -falign-jumps=1 เปเบกเปˆเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเปเบฅเบฐเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ loops เบšเปเปˆเปเบกเปˆเบ™
เบชเบญเบ”เบ„เปˆเบญเบ‡.

If n เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธ เบซเบผเบทเป€เบ›เบฑเบ™เบชเบนเบ™, เปƒเบซเป‰เปƒเบŠเป‰เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O2, -O3.

-funit-at-a-time
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบ›เบฐเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰. -funit-at-a-time เบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบš, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ
-fno-unit-at-a-time implies -fno-toplevel-reorder เปเบฅเบฐ -fno-section-anchors.

เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-fno-toplevel-reorder
เบขเปˆเบฒเบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”, เบ•เบปเบงเปเบ›, เปเบฅเบฐเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡ "asm". เบชเบปเปˆเบ‡เบญเบญเบเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™
เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™. เป€เบกเบทเปˆเบญเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเปƒเบŠเป‰,
เบ•เบปเบงเปเบ›เบชเบฐเบ–เบดเบ”เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบญเป‰เบฒเบ‡เบญเบตเบ‡เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป‚เบเบเบเป‰เบฒเบ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™
เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ. เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”เปƒเบซเบกเปˆ, เบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰
เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป€เบกเบทเปˆเบญเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰.

เป€เบ›เบตเบ”เปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš -O0. เป€เบกเบทเปˆเบญเบžเบดเบเบฒเบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™, เบกเบฑเบ™เบเบฑเบ‡เบซเบกเบฒเบเป€เบ–เบดเบ‡ -fno-section-anchors,
เป€เบŠเบดเปˆเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป€เบ›เบฑเบ™เบขเปˆเบฒเบ‡เบญเบทเปˆเบ™เบขเบนเปˆเบ—เบตเปˆ -O0 เปƒเบ™เบšเบฒเบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบ.

-fweb
เบเปเปˆเบชเป‰เบฒเบ‡เป€เบงเบฑเบšเบ•เบฒเบกเบ—เบตเปˆเปƒเบŠเป‰เบ—เบปเปˆเบงเป„เบ›เป€เบžเบทเปˆเบญเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ เปเบฅเบฐเบกเบญเบšเปเบฒเบเปเบ•เปˆเบฅเบฐเป€เบงเบฑเบš
เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ pseudo เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™. เบญเบฑเบ™เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปƒเบšเบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰
pseudos เป‚เบ”เบเบเบปเบ‡, เปเบ•เปˆเบเบฑเบ‡เป€เบชเบตเบกเบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบญเบทเปˆเบ™เป†เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เป€เบŠเบฑเปˆเบ™ CSE,
loop optimizer เปเบฅเบฐเบ•เบปเบงเบฅเบถเบšเบฅเบฐเบซเบฑเบ”เบ•เบฒเบเบ—เบตเปˆเบšเปเปˆเบชเปเบฒเบ„เบฑเบ™. เบกเบฑเบ™เบชเบฒเบกเบฒเบ”, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบฎเบฑเบ”เปƒเบซเป‰ debugging
เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰, เป€เบžเบฒเบฐเบงเปˆเบฒเบ•เบปเบงเปเบ›เบšเปเปˆเบขเบนเปˆเปƒเบ™ "เบ—เบฐเบšเบฝเบ™เป€เบฎเบทเบญเบ™".

เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ -funroll-loops.

- เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹
เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ›เบฐเบˆเบธเบšเบฑเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เป‚เบ›เบผเปเบเบผเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ–เบทเบเบฅเบงเบšเบฅเบงเบก.
เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบ•เบปเบงเปเบ›เบเบปเบเป€เบงเบฑเป‰เบ™ "เบ•เบปเป‰เบ™เบ•เป" เปเบฅเบฐเบœเบนเป‰เบ—เบตเปˆเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป‚เบ”เบ
attribute "externally_visible" เบเบฒเบเป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ„เบปเบ‡เบ—เบตเปˆเปเบฅเบฐเปƒเบ™เบœเบปเบ™เบเบฐเบ—เบปเบšเปเบกเปˆเบ™ optimized
เบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™เป‚เบ”เบเบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเบ„เบงเบ™เปƒเบŠเป‰เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš "-flto". เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบญเบตเบ‡เปƒเบชเปˆ เบ
linker plugin เบ„เบงเบ™เปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ›เบญเบ”เป„เบžเบเบงเปˆเบฒ เปเบฅเบฐเบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒ.

-flto[=n]
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปƒเบŠเป‰เบ•เบปเบงเบ›เบฑเบšเบ›เบธเบ‡เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เป€เบกเบทเปˆเบญเบ–เบทเบเป€เบญเบตเป‰เบ™เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡, เบกเบฑเบ™
เบชเป‰เบฒเบ‡ GIMPLE (เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบปเบงเปเบ—เบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ GCC) เปเบฅเบฐเบ‚เบฝเบ™เบกเบฑเบ™เปƒเบซเป‰เบเบฑเบš ELF เบžเบดเป€เบชเบ”
เบžเบฒเบเบชเปˆเบงเบ™เปƒเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ. เป€เบกเบทเปˆเบญเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบ™, เบ—เบฑเบ‡เบซเบกเบปเบ”
เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เปเบกเปˆเบ™เบญเปˆเบฒเบ™เบˆเบฒเบเบžเบฒเบเบชเปˆเบงเบ™ ELF เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบฐเบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”เป€เบ›เบฑเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰
เบชเปˆเบงเบ™เปœเบถเปˆเบ‡เบ‚เบญเบ‡เปœเปˆเบงเบเปเบ›เบžเบฒเบชเบฒเบ”เบฝเบงเบเบฑเบ™.

เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบ•เบปเบงเบ›เบฑเบšเปเบ•เปˆเบ‡เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, -flto เปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ„เบงเบ™เบˆเบฐเบ–เบทเบเบฅเบฐเบšเบธเบขเบนเปˆเบ—เบตเปˆ
เบฅเบงเบšเบฅเบงเบกเป€เบงเบฅเบฒเปเบฅเบฐเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบธเบ”เบ—เป‰เบฒเบ. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

gcc -c -O2 -flto foo.c
gcc -c -O2 -flto bar.c
gcc -o myprog -flto -O2 foo.o bar.o

เบชเบญเบ‡เบ„เบณเบฎเบฝเบเบฎเป‰เบญเบ‡เบ—เบณเบญเบดเบ”เปƒเบซเป‰เบเบฑเบš GCC เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡ bytecode เบ‚เบญเบ‡ GIMPLE เป€เบ›เบฑเบ™เบžเบดเป€เบชเบ”
เบžเบฒเบเบชเปˆเบงเบ™ ELF เบžเบฒเบเปƒเบ™ foo.o เปเบฅเบฐ bar.o. เบ„เบณเบฎเบฝเบเบฎเป‰เบญเบ‡เบชเบธเบ”เบ—เป‰เบฒเบเบˆเบฐเบญเปˆเบฒเบ™ GIMPLE bytecode
เบˆเบฒเบ foo.o เปเบฅเบฐ bar.o, เบฅเบงเบกเบ—เบฑเบ‡เบชเบญเบ‡เป„เบŸเบฅเปŒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเบžเบฒเบšเบžเบฒเบเปƒเบ™เบ”เบฝเบง, เปเบฅเบฐเบฅเบงเบšเบฅเบงเบก
เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบด. เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ—เบฑเบ‡เบชเบญเบ‡ foo.o เปเบฅเบฐ bar.o เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป€เบ›เบฑเบ™เบฎเบนเบšเบ”เบฝเบง, เบ™เบตเป‰
เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ GCC เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบ—เบปเปˆเบง
เบชเบญเบ‡เป„เบŸเบฅเปŒเบ„เบทเบเบฑเบšเบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™เบญเบฑเบ™เบ”เบฝเบง. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบงเปˆเบฒ inliner เปเบกเปˆเบ™
เบชเบฒเบกเบฒเบ” inline เบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™ bar.o เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เปƒเบ™โ€‹ foo.o เปเบฅเบฐเปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™.

เบญเบตเบเบงเบดเบ—เบตเปœเบถเปˆเบ‡ (เบ‡เปˆเบฒเบเบเบงเปˆเบฒ) เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบกเปˆเบ™:

gcc -o myprog -flto -O2 foo.c bar.c

เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบชเป‰เบฒเบ‡ bytecode เบชเปเบฒเบฅเบฑเบš foo.c เปเบฅเบฐ bar.c, เบœเบฐเบชเบปเบกเบœเบฐเบชเบฒเบ™เบžเบงเบเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป€เบ›เบฑเบ™เบญเบฑเบ™เบ”เบฝเบง
เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™ GIMPLE เปเบฅเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเป€เบžเบทเปˆเบญเบœเบฐเบฅเบดเบ” myprog.

เบชเบดเปˆเบ‡เบ”เบฝเบงเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบขเบนเปˆเปƒเบ™เปƒเบˆเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบงเบฅเบฒ
เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เป„เบ”เป€เบงเบต GCC เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™. GCC เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
link-time optimization เบ–เป‰เบฒเบกเบตเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบ”เป‰เบงเบ -flto.
เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบ—เปˆเบฒเบ™เบ„เบงเบ™เบฅเบฐเบšเบธเบ•เบปเบงเป€เบฅเบทเบญเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ GCC เบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบชเบฐเบซเบฅเบฒเบ”เปƒเบ™เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰
เบˆเบฒเบเบ•เบปเบงเป€เบฅเบทเบญเบเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบฅเบฐเบšเบธเบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เป€เบˆเบปเป‰เบฒ
เบชเบฐเป€เบซเบกเบตเบชเบฒเบกเบฒเบ” override เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ” link-time optimization เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
เป‚เบ”เบเบเบฒเบ™เบœเปˆเบฒเบ™ -fno-lto เบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เปเบ™เปˆเบ™เบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”
เบชเบปเบกโ€‹เบกเบธเบ”โ€‹เบ•เบดโ€‹เบ–เบฒเบ™โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹. compiler เบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบนเป‰เบงเปˆเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐเบ•เบปเบงเปเบ›เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”
เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปเบฅเบฐ runtime เบขเบนเปˆเบ™เบญเบเบซเบ™เปˆเบงเบเบ‡เบฒเบ™ link-time optimized. เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹
เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ linker, plugin linker (เป€เบšเบดเปˆเบ‡ -fuse-linker-plugin) เบœเปˆเบฒเบ™
เบ‚เปเป‰เบกเบนเบ™เบเบฑเบšเบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบตเปˆเปƒเบŠเป‰เปเบฅเป‰เบงเปเบฅเบฐเบžเบฒเบเบ™เบญเบเบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™. เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆ
linker plugin เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰, - เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹ เบ„เบงเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™
เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™.

เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹ -fuse-linker-plugin เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบกเบทเปˆเบญเป„เบŸเบฅเปŒเบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบ”เป‰เบงเบ -flto, เบเบฒเบ™
เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ›เบปเบเบเบฐเบ•เบดเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบกเบต GIMPLE
bytecodes เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบชเบธเบ”เบ—เป‰เบฒเบเบ›เบปเบเบเบฐเบ•เบด (เป€เบšเบดเปˆเบ‡ -ffat-lto-เบงเบฑเบ”เบ–เบธ. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบงเบฑเบ”เบ–เบธเบ™เบฑเป‰เบ™
เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™ LTO เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ›เบปเบเบเบฐเบ•เบด; เบ–เป‰เบฒ -fno-lto เปเบกเปˆเบ™เบœเปˆเบฒเบ™
เบเบฑเบšเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบšเปเปˆเบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš interprocedural เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเป€เบกเบทเปˆเบญ
-fno-fat-lto-objects เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ compile-stage เปเบกเปˆเบ™เป„เบงเบ‚เบถเป‰เบ™ เปเบ•เปˆเบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰
เบ›เบปเบเบเบฐเบ•เบด, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ LTO เบเปˆเบฝเบงเบเบฑเบšเบžเบงเบเบกเบฑเบ™.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เบšเปเปˆเปเบกเปˆเบ™
เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡,

gcc -c -O0 -ffat-lto-objects -flto foo.c
gcc -c -O0 -ffat-lto-objects -flto bar.c
gcc -o myprog -O3 foo.o bar.o

เบ™เบตเป‰เบœเบฐเบฅเบดเบ”เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ” assembler unoptimized, เปเบ•เปˆ
binary เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš myprog เปเบกเปˆเบ™ optimized เบขเบนเปˆ -O3. เบ–เป‰เบฒ, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบ„เบนเปˆเบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™
เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบ”เป‰เบงเบ -fno-lto, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ myprog เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เป€เปเบฒเบฐเบชเบปเบก.

เป€เบกเบทเปˆเบญเบœเบฐเบฅเบดเบ”เบ„เบนเปˆเบชเบธเบ”เบ—เป‰เบฒเบ, GCC เบžเบฝเบ‡เปเบ•เปˆเปƒเบŠเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™
เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบต bytecode. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบชเบปเบกเปเบฅเบฐเบเบปเบ‡เบเบฑเบšเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเปเบฅเบฐ
เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบกเบต GIMPLE bytecodes เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบงเบฑเบ”เบ–เบธเบชเบธเบ”เบ—เป‰เบฒเบ. GCC เป€เบฅเบทเบญเบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
เป„เบŸเบฅเปŒเปƒเบ”เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เป‚เบซเบกเบ” LTO เปเบฅเบฐเป„เบŸเบฅเปŒเปƒเบ”เบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡.

เบกเบตเบšเบฒเบ‡เบ—เบธเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ–เบทเบเบฎเบฑเบเบชเบฒเป„เบงเป‰เป‚เบ”เบ GCC เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡ bytecodes, เป€เบ›เบฑเบ™
เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป„เบฅเบเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบธเบ”เบ—เป‰เบฒเบ. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบขเบนเปˆเบ—เบตเปˆ
link-time override เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบฅเบฐเบšเบธเบ•เบปเบงเป€เบฅเบทเบญเบเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš -O เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ GCC เบˆเบฐ
เบ„เบดเบ”เป„เบฅเปˆเบซเบ™เบถเปˆเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ.
เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เบชเบธเบ”เบˆเบฐเบŠเบฐเบ™เบฐเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบกเปˆเบ™เป€เบญเบปเบฒเบกเบฒเบˆเบฒเบเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เปเบฒเบญเบดเบ”
เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบขเปˆเบฒเบ‡โ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™โ€‹เบงเปˆเบฒโ€‹: -fPIC, -fpic, -fpie, -fcommon, - เบ‚เปเป‰โ€‹เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹,
-fnon-call-exceptions, -fgnu-tm เปเบฅเบฐเบ—เบฑเบ‡ เปเบปเบ” -m เบ—เบธเบ‡โ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹.

เบ—เบธเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ ABI เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบเบปเบ‡เบเบฑเบ™เปƒเบ™เบ—เบธเบเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบก
เป€เบžเบทเปˆเบญ override เบ™เบตเป‰เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบกเบตเบ„เปˆเบฒเบ—เบตเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡เปเบกเปˆเบ™เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบต
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เป€เบŠเบฑเปˆเบ™โ€‹: -freg-struct-return เปเบฅเบฐ -fpcc-struct-return.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เป€เบŠเบฑเปˆเบ™: -ffp-เบชเบฑเบ™เบเบฒ, -fno-strict-overflow, -fwrapv, -fno-trapv or
-fno-strict-aliasing เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เป„เบ›เบชเบนเปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบฅเบฐเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เปเบšเบšเบญเบฐเบ™เบธเบฅเบฑเบ
เบชเปเบฒเบฅเบฑเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบเบฒเบ™เปเบ›เบ—เบตเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡เบเบฑเบ™. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ -fno-strict-overflow, -fwrapv เปเบฅเบฐ
-fno-trapv เป€เบญเบปเบฒเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เปเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡ -ffp-contract=เบ›เบดเบ” เบกเบตเบ„เบงเบฒเบกเบชเบณเบ„เบฑเบ™เบเบงเปˆเบฒ
-ffp-contract=เป„เบง. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” override เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เบกเบฑเบ™เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเบเบฑเบ‡เบฅเบฐเบšเบธเบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เบ–เป‰เบฒ LTO เบžเบปเบšเบเบฑเบšเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ C เบ—เบตเปˆเบ›เบฐเบเบฒเบ”เบเบฑเบšเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ
เปœเปˆเบงเบโ€‹เบเบฒเบ™โ€‹เปเบ›โ€‹เบžเบฒโ€‹เบชเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เป‚เบเบ‡โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบเบฑเบ™ (เบžเบถเบ”โ€‹เบ•เบดโ€‹เบเบณโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบเบณโ€‹เบ™เบปเบ”โ€‹เบ•เบฒเบก ISO C99
6.2.7), เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบšเปเปˆเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบญเบญเบ. เบžเบถเบ”เบ•เบดเบเบณเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบฑเบ‡เบšเปเปˆเบ–เบทเบเบเบณเบ™เบปเบ”เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™
เป€เบงเบฅเบฒ. เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบเบปเบเบ‚เบถเป‰เบ™เบกเบฒเป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบญเบทเปˆเบ™.

เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ LTO เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™
เบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบ‚เบฝเบ™เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบ•เปˆเบฒเบ‡เป†:

gcc -c -flto foo.c
g++ -c -flto bar.cc
gfortran -c -flto baz.f90
g++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™เป€เบฎเบฑเบ”เบ”เป‰เบงเบ g ++ เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบš C++ runtime libraries เปเบฅเบฐ
-lgfortran เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” Fortran runtime. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ›เบฐเบชเบปเบก
เบžเบฒเบชเบฒเปƒเบ™เป‚เบซเบกเบ” LTO, เบ—เปˆเบฒเบ™เบ„เบงเบ™เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป€เบงเบฅเบฒเบ›เบฐเบชเบปเบก
เบžเบฒโ€‹เบชเบฒโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบฅเบงเบšโ€‹เบฅเบงเบกโ€‹เป€เบ›เบฑเบ™โ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบด (เบšเปเปˆโ€‹เปเบกเปˆเบ™ LTOโ€‹)โ€‹.

เบ–เป‰เบฒเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบต GIMPLE bytecode เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ„เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™, เป€เบงเบปเป‰เบฒ
libfoo.a, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเบฐเบเบฑเบ”เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ LTO เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰ a
linker เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ plugin. เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ„เบปเบ‡เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบš LTO, เปƒเบŠเป‰ gcc-ar
เปเบฅเบฐ gcc-ranlib เปเบ—เบ™โ€‹เบ—เบตเปˆ ar เปเบฅเบฐ "ranlib"; เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เบชเบฑเบ™เบเบฒเบฅเบฑเบเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบต
GIMPLE bytecode, เปƒเบŠเป‰ gcc-nm. เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบฑเป‰เบ™ ar, ranlib เปเบฅเบฐ nm เป„เบ”เป‰
เบฅเบงเบšเบฅเบงเบกเบ”เป‰เบงเบเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ plugin. เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เปƒเบŠเป‰เบ—เบธเบ‡ -fuse-linker-plugin to
เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš LTO:

gcc -o myprog -O2 -flto -fuse-linker-plugin ao bo -lfoo

เบ”เป‰เบงเบเบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰ plugin เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบฐเบเบฑเบ”เป„เบŸเบฅเปŒ GIMPLE เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบˆเบฒเบ
libfoo.a เปเบฅเบฐเบชเบปเปˆเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป„เบ›เบชเบนเปˆ GCC เปเบฅเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก
เบฎเบนเบšเบžเบฒเบš GIMPLE เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ plugin เปเบฅเบฐ / เบซเบผเบทเบšเปเปˆเป€เบ›เบตเบ”เปƒเบŠเป‰เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
plugin, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบงเบฑเบ”เบ–เบธเบžเบฒเบเปƒเบ™ libfoo.a เบ–เบทเบเบชเบฐเบเบฑเบ”เปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบด, เปเบ•เปˆเบžเบงเบเบกเบฑเบ™
เบšเปเปˆเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš LTO. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบชเบฐเบ–เบดเบ”
เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบ—เบฑเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš LTO เปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบšเบšเบ›เบปเบเบเบฐเบ•เบด, เบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบกเบฑเบ™เบ”เป‰เบงเบ
-flto "-ffat-lto-objects".

เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเป‚เบ›เบผเปเบเบผเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™.
เบ–เป‰เบฒเป‚เบ„เบ‡เบเบฒเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบฑเบ™เบเบฒเบฅเบฑเบเปƒเบ”เป†เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบญเบญเบ, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเบปเบกเบ—เบปเบš
-flto เปเบฅเบฐ - เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹ เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš interprocedural เปƒเบŠเป‰เป„เบ”เป‰เบซเบผเบฒเบเบ‚เบถเป‰เบ™
เบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป‚เบญเบเบฒเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰
- เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹ เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบกเบทเปˆเบญ plugin เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ (เป€เบšเบดเปˆเบ‡ -fuse-linker-plugin).

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡ LTO เป€เบฎเบฑเบ”เปƒเบซเป‰เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡ bytecode เบ—เบตเปˆเป€เบ›เบฑเบ™
เป€เบ„เบทเปˆเบญเบ™เบ—เบตเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบˆเบปเป‰เบฒเบžเบฒเบšเบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†. เป„เบŸเบฅเปŒ bytecode เปเบกเปˆเบ™เบชเบฐเบšเบฑเบšเปเบฅเบฐเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™
เปเบกเปˆเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบฐเบšเบฑเบšเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป„เบŸเบฅเปŒ bytecode เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบชเบฐเบšเบฑเบšเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ GCC เบˆเบฐเบšเปเปˆ
เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš GCC เบฅเบธเป‰เบ™เป€เบเบปเปˆเบฒ เบซเบผเบทเปƒเปเปˆเบเบงเปˆเบฒ.

เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบšเปเปˆเป„เบ”เป‰เบœเบปเบ™เบ”เบตเบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ.
เบเบฒเบ™เบชเบปเบกเบ—เบปเบš -flto เบเบฑเบš -g เบ›เบฐเบˆเบธเบšเบฑเบ™เบเปเบฒเบฅเบฑเบ‡เบ—เบปเบ”เบฅเบญเบ‡เปเบฅเบฐเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบœเบฐเบฅเบดเบ”เบšเปเปˆเป„เบ”เป‰เบ„เบฒเบ”เบซเบงเบฑเบ‡
เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบ—เบฒเบ‡เป€เบฅเบทเบญเบ n, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ n เบงเบฝเบเบ‚เบฐเบซเบ™เบฒเบ™เป‚เบ”เบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ เป€เบฎเบฑเบ”เปƒเบซเป‰ เป‚เบ„เบ‡เบเบฒเบ™.
เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰ เป€เบฎเบฑเบ” เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญ override เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบกเบนเบ™เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบš n เปเบกเปˆเบ™ 1.

เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ” -flto=เบงเบฝเบเป€เบŠเบตเบšเป€เบงเบต เปƒเบŠเป‰ GNU make's job server mode เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”
เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบงเบฝเบเบ‚เบฐเบซเบ™เบฒเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ Makefile เป‚เบ—เบซเบฒ GCC เปเบฅเป‰เบง
เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เปƒเบ™โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ™โ€‹. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡ prepend a + เบเบฑเบšเบชเบนเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™เบžเปเปˆเปเบกเปˆ
Makefile เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒ เป€เบฎเบฑเบ” เปเบกเปˆเบ™ GNU เป€เบฎเบฑเบ”.

-flto-partition=เบžเบถเบŠเบฐเบ„เบฐเบ™เบดเบ”
เบฅเบฐเบšเบธเบชเบนเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบเบ•เบปเบงเบ›เบฑเบšเบ›เบธเบ‡เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบกเบนเบ™เบ„เปˆเบฒเปเบกเปˆเบ™
เบ—เบฑเบ‡ "1to1" เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบ—เบตเปˆเบชเบฐเบ—เป‰เบญเบ™เป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš เบซเบผเบท
"เบชเบปเบกเบ”เบนเบ™" เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™ (เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰) เบซเบผเบท
"เบชเบนเบ‡เบชเบธเบ”" เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบเบฒเบ™เบฅเบฐเบšเบธ "none" เป€เบ›เบฑเบ™
เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ›เบดเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™ เปเบฅเบฐเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™
"เบชเบปเบกเบ”เบธเบ™". เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ "1to1" เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฑเปˆเบ‡เบฅเบฐเบซเบฑเบ”เบ•เปˆเบฒเบ‡เป†
เบšเบฑเบ™เบซเบฒ, เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™ "เบชเบนเบ‡เบชเบธเบ”" เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบžเบฒเบเปƒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

-flto-compression-level=n
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบเปเบฒเบ™เบปเบ”เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒเบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เบ—เบตเปˆเบ‚เบฝเบ™
เบเบฑเบšเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ LTO, เปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบžเบฝเบ‡เปเบ•เปˆเบชเบปเบกเบ—เบปเบšเบเบฑเบšเป‚เบซเบกเบ” LTO (-flto).
เบ„เปˆเบฒเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปเบกเปˆเบ™ 0 (เบšเปเปˆเบกเบตเบเบฒเบ™เบšเบตเบšเบญเบฑเบ”) เบซเบฒ 9 (เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบชเบนเบ‡เบชเบธเบ”). เบ„เบธเบ™เบ„เปˆเบฒเบ™เบญเบเบ™เบตเป‰
เบŠเปˆเบงเบ‡เปเบกเปˆเบ™เบ–เบทเบเบเบถเบ”เป€เบ›เบฑเบ™ 0 เบซเบผเบท 9. เบ–เป‰เบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบกเบญเบšเปƒเบซเป‰, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฐเบชเบปเบกเบ”เบนเบ™
เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

flto-เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™
เบžเบดเบกเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ—เบตเปˆเบกเบตเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบžเบฒเบเปƒเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ link-time optimizer. เป„เบ”เป‰
เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ™เบตเป‰เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป„เบ›เปเบ•เปˆเบฅเบฐเบชเบฐเบšเบฑเบš. เบกเบฑเบ™เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ•เปเปˆ GCC
เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เป€เบงเบฅเบฒเบ›เบฐเบกเบงเบ™เบœเบปเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ” LTO (เบœเปˆเบฒเบ™ -flto).

เบžเบดเบเบฒเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-flto-report-wpa
เบ„เบท flto-เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™, เปเบ•เปˆเบžเบฝเบ‡เปเบ•เปˆเบžเบดเบกเบชเปเบฒเบฅเบฑเบšเป„เบฅเบเบฐ WPA เบ‚เบญเบ‡ Link Time Optimization.

-fuse-linker-plugin
เป€เบ›เบตเบ”เบ™เบณเปƒเบŠเป‰เบเบฒเบ™เปƒเบŠเป‰เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบญเบตเบ‡เปƒเบชเปˆ
เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ plugin เปƒเบ™เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบ„เปเบฒเบซเบผเบทเปƒเบ™ GNU ld 2.21 เบซเบผเบท
เปƒเปเปˆเบเบงเปˆเบฒ.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบฒเบกเบฒเบ”เบชเบฐเบเบฑเบ”เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ”เป‰เบงเบ GIMPLE bytecode เบญเบญเบเบˆเบฒเบเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”
เบฎเบงเบšเบฎเบงเบก. เบ™เบตเป‰เบ›เบฑเบšเบ›เบธเบ‡เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบเบฒเบ™เป€เบ›เบตเบ”เป€เบœเบตเบเบฅเบฐเบซเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ•เปเปˆเบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ -
เบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบงเบฅเบฒ. เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบฅเบฐเบšเบธเบงเปˆเบฒเบชเบฑเบ™เบเบฒเบฅเบฑเบเปƒเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบฒเบเบ™เบญเบเป„เบ”เป‰
(เป‚เบ”เบเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ LTO เบซเบผเบทเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง). เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบฅเบฐเบซเบฑเบ”เปƒเบ™
binary (เปเบฅเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰) เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš
"-fwhole-เป‚เบ„เบ‡เบเบฒเบ™". เป€เบšเบดเปˆเบ‡ -flto เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡เบ—เบธเบ‡เบ™เบตเป‰เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™
เปƒเบŠเป‰โ€‹เบกเบฑเบ™.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš LTO เปƒเบ™ GCC เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰ เปเบฅเบฐ GCC เปเบกเปˆเบ™
เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบžเบทเปˆเบญเปƒเบŠเป‰เบเบฑเบšเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบš plugins (GNU ld 2.21 เบซเบผเบทเปƒเปเปˆเบเบงเปˆเบฒ เบซเบผเบทเบ„เบณ).

-ffat-lto-เบงเบฑเบ”เบ–เบธ
เบงเบฑเบ”เบ–เบธ LTO เป„เบ‚เบกเบฑเบ™เปเบกเปˆเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบตเบ—เบฑเบ‡เบžเบฒเบชเบฒเบเบฒเบ‡เปเบฅเบฐเบžเบฒเบชเบฒ
เบฅเบฐเบซเบฑเบ”เบงเบฑเบ”เบ–เบธ. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ LTO เปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบšเบšเบ›เบปเบเบเบฐเบ•เบด. เบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบเบฑเบš -flto เปเบฅเบฐเบ–เบทเบเบฅเบฐเป€เบฅเบตเบเปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

-fno-fat-lto-objects เบ›เบฑเบšเบ›เบธเบ‡เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบซเบผเบฒเบเบเบงเปˆเบฒ LTO เบ—เปเบฒเบกเบฐเบ”เบฒ, เปเบ•เปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบต
เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เบ—เบตเปˆเบˆเบฐเบฎเบนเป‰ LTO. เบกเบฑเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ plugin linker
เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, nm, ar เปเบฅเบฐ ranlib เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ linker
plugins เป€เบžเบทเปˆเบญเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบšเบšเป€เบ•เบฑเบกเบฎเบนเบšเปเบšเบš (เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบชเบฐเบ–เบดเบ”
เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปเบฅเบฐเบญเบทเปˆเบ™เป†). GCC เบชเบฐเบซเบ™เบญเบ‡ gcc-ar, gcc-nm, gcc-ranlib wrappers เบœเปˆเบฒเบ™
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบกเบต makefiles เบ—เบตเปˆเบšเปเปˆเบกเบตเป„เบ‚เบกเบฑเบ™ LTO เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰
เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fno-fat-lto-objects เปƒเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ plugin linker.

-fcompare-elim
เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบฅเบปเบ‡โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹เปเบฅเบฐโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบฅเบปเบ‡โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹, เบเปเบฒโ€‹เบ™เบปเบ”โ€‹
เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบฒเบ‡เป€เบฅเบเบ„เบฐเบ™เบดเบ”เบ—เบตเปˆเบ„เปเบฒเบ™เบงเบ™เบ—เบธเบ‡เบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš
เบญเบตเบ‡เปƒเบชเปˆเป€เบฅเบเบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เบ™เบฑเป‰เบ™. เบ–เป‰เบฒเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™.

เบœเปˆเบฒเบ™เบ™เบตเป‰เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบšเบšเบฒเบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™
เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ›เบฝเบšโ€‹เบ—เบฝเบšโ€‹เบเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹เบเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O, -O2, -O3, -เบญเบช.

-fuse-ld=bfd
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ bfd linker เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-fuse-ld=เบ—เบญเบ‡
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เบ„เปเบฒ linker เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-fcprop-เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™
เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบฅเบปเบ‡โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹เปเบฅเบฐโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบฅเบปเบ‡โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹, เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹
copy-propagation pass เป€เบžเบทเปˆเบญเบžเบฐเบเบฒเบเบฒเบกเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบเบณเบ™เบปเบ”เป€เบงเบฅเบฒ เปเบฅเบฐเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ„เบฒเบง
เบฅเบปเบšเบฅเป‰เบฒเบ‡เบชเปเบฒเป€เบ™เบปเบฒ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš -O, -O2, -O3, -เบญเบช.

-fprofile-เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹
เป‚เบ›เบผเป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒเป‚เบ”เบเปƒเบŠเป‰ binary เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบซเบผเบฒเบเบเบฐเบ—เบนเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™
เบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบฒเบ”เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เป‚เบ•เป‰เบ•เบญเบš. เป€เบกเบทเปˆเบญเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบฅเบฐเบšเบธ, GCC เปƒเบŠเป‰
heuristics เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบซเบผเบทเปเบเป‰เป„เบ‚เบ„เบงเบฒเบกเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, GCC เบ›เปˆเบญเบเบญเบญเบเบกเบฒ
เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบชเบญเบ”โ€‹เบ„เปˆเบญเบ‡โ€‹เบ–เบทเบโ€‹เบเบงเบ”โ€‹เบžเบปเบšโ€‹.

-fprofile-dir=เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡
เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเป„เบŸเบฅเปŒเบ‚เปเป‰เบกเบนเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒเบขเบนเปˆเปƒเบ™ เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰
เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆเบ‚เปเป‰เบกเบนเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบ -fprofile-generate, -ftest-เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹,
-fprofile-arcs เปเบฅเบฐเปƒเบŠเป‰เป‚เบ”เบ -fprofile-เปƒเบŠเป‰ เปเบฅเบฐ -fbranch-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ เปเบฅเบฐเบกเบฑเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบ—เบฑเบ‡เบชเบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เปเบฅเบฐเบžเบตเปˆเบ™เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, GCC เปƒเบŠเป‰
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™เป€เบ›เบฑเบ™ เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป„เบŸเบฅเปŒเบ‚เปเป‰เบกเบนเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒเบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš
เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ.

-fprofile-generate
-fprofile-generate=เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡
เป€เบ›เบตเบ”เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเบ—เบตเปˆเบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบžเบทเปˆเบญเบœเบฐเบฅเบดเบ”เป‚เบ›เบฃเป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”
เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบชเบปเบกโ€‹เปƒเบ™โ€‹เบžเบฒเบโ€‹เบซเบผเบฑเบ‡โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ„เปเบฒโ€‹เบ„เบถเบ”โ€‹เบ„เปเบฒโ€‹เป€เบซเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เปเบ•เปˆเบ‡โ€‹เป‚เบ”เบโ€‹เบญเบตเบ‡โ€‹เปƒเบชเปˆ profileโ€‹. เป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เปƒเบŠเป‰
-fprofile-generate เบ—เบฑเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰: "-fprofile-arcs", "-fprofile-values", "-fvpt".

If เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ เบ–เบทเบเบเปเบฒเบ™เบปเบ”, GCC เป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™ เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเป„เบŸเบฅเปŒเบ‚เปเป‰เบกเบนเบ™เบ„เปเบฒเบ•เบดเบŠเบปเบกเบ‚เบญเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒ.
เป€เบšเบดเปˆเบ‡ -fprofile-dir.

-fprofile-เปƒเบŠเป‰
-fprofile-use=เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบ„เปเบฒเบ•เบดเบŠเบปเบกเบ‚เบญเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒ, เปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบกเบตเบเปเบฒเป„เบฅ
เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบกเบตโ€‹เบ„เปเบฒโ€‹เบ„เบถเบ”โ€‹เบ„เปเบฒโ€‹เป€เบซเบฑเบ™ profile เบ—เบตเปˆโ€‹เบกเบตโ€‹เบขเบนเปˆโ€‹.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰: "-fbrnch-probabilities", "-fvpt",
"-funroll-loops", "-fpeel-loops", "-ftracer", "-ftree-vectorize",
"free-loop-distribute-patterns"

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, GCC เบ›เปˆเบญเบเบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ–เป‰เบฒเป‚เบ›เบฃเป„เบŸเบฅเปŒเบ„เปเบฒเบ•เบดเบŠเบปเบกเบšเปเปˆเบเบปเบ‡เบเบฑเบš
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡. เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบ™เบตเป‰โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ›เปˆเบฝเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ -Wcoverage-mismatch.
เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเบญเบฑเบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ›เบฑเบšเบ›เบธเบ‡เบšเปเปˆเบ”เบต.

If เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ เบ–เบทเบเบเปเบฒเบ™เบปเบ”, GCC เป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™ เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเป„เบŸเบฅเปŒเบ‚เปเป‰เบกเบนเบ™เบ„เปเบฒเบ•เบดเบŠเบปเบกเบ‚เบญเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒ.
เป€เบšเบดเปˆเบ‡ -fprofile-dir.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ„เบงเบšเบ„เบธเบกเบžเบถเบ”เบ•เบดเบเปเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบเป€เบฅเบเบ„เบฐเบ™เบดเบ”เบ—เบตเปˆเบฅเบญเบเบ•เบปเบง.
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบเบ›เปˆเบฝเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ„เบงเบฒเบกเป„เบงเปเบฅเบฐเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡. เบ—เบฑเบ‡เปเบปเบ”เบ•เป‰เบญเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ.

- เบฎเป‰เบฒเบ™เบ‚เบฒเบเป€เบ„เบทเปˆเบญเบ‡เบเปˆเบญเบ
เบขเปˆเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ•เบปเบงเปเบ›เบˆเบธเบ”เบฅเบญเบเบขเบนเปˆเปƒเบ™เบ—เบฐเบšเบฝเบ™, เปเบฅเบฐเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™
เบญเบฒเบ”เบˆเบฐเบ›เปˆเบฝเบ™เบงเปˆเบฒเบ„เปˆเบฒเบˆเบธเบ”เบฅเบญเบเปเบกเปˆเบ™เป€เบญเบปเบฒเบกเบฒเบˆเบฒเบเบ—เบฐเบšเบฝเบ™ เบซเบผเบท เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณ.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ›เป‰เบญเบ‡เบเบฑเบ™เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเป€เบเบตเบ™เบ—เบตเปˆเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเป€เบŠเบฑเปˆเบ™ 68000 เบšเปˆเบญเบ™เบ—เบตเปˆ
เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ™เป„เบ”เป‰ (เบ‚เบญเบ‡ 68881) เบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบซเบผเบฒเบเบเปˆเบงเบฒ "เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ" เบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰.
เบกเบต. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐ x86. เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเป€เบเบตเบ™
เป€เบฎเบฑเบ”เป„เบ”เป‰เบ”เบตเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™, เปเบ•เปˆเบšเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบญเบตเบ‡เปƒเบชเปˆเบ„เปเบฒเบ™เบดเบเบฒเบกเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบ‚เบญเบ‡ IEEE เบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ™เป„เบ”เป‰
เบˆเบธเบ”. เปƒเบŠเป‰ - เบฎเป‰เบฒเบ™เบ‚เบฒเบเป€เบ„เบทเปˆเบญเบ‡เบเปˆเบญเบ เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ”เบฑเบ”เปเบ›เบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”
เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบปเบงเปเบ›.

-fexcess-precision=เปเบšเบš
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบ„เบงเบฒเบกโ€‹เปเบกเปˆเบ™โ€‹เบเปเบฒโ€‹เป€เบเบตเบ™โ€‹เบ‚เบญเบ‡โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบˆเบฑเบโ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเปˆเบญเบ™โ€‹เป„เบ”เป‰โ€‹.
เบ—เบฐเบšเบฝเบ™เบˆเบธเบ”เบกเบตเบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบซเบผเบฒเบเบเปˆเบงเบฒ IEEE "เป€เบฅเบทเปˆเบญเบ™" เปเบฅเบฐ "เบชเบญเบ‡" เบ›เบฐเป€เบžเบ”เปเบฅเบฐ
เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเบญเบšเบเบฑเบšเบ›เบฐเป€เบžเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™,
-fexcess-precision=เป„เบง เบกเบตเบœเบปเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰; เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™
เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบ‚เบญเบ‡เบ—เบฐเบšเบฝเบ™เปเบฅเบฐเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฎเบญเบšเป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†
เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบก C, เบ–เป‰เบฒ
-fexcess-precision=เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™เป€เบเบตเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš
เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ ISO C99; เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบ—เบฑเบ‡เบเบฒเบ™เป‚เบเบ™เปเบฅเบฐเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบธเบ™เบ„เปˆเบฒเป€เบ›เบฑเบ™
เบกเบปเบ™เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ” semantic เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ (เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ - เบฎเป‰เบฒเบ™เบ‚เบฒเบเป€เบ„เบทเปˆเบญเบ‡เบเปˆเบญเบ เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบ).
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบš C เบ–เป‰เบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เป€เบŠเบฑเปˆเบ™:
-std=c99 เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

-fexcess-precision=เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒเบญเบทเปˆเบ™เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบ C, เปเบฅเบฐเบšเปเปˆเบกเบต
เบœเบปเบ™เบเบฐเบ—เบปเบšเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ -funsafe-math-optimizations or -fast เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹ เบ–เบทเบเบเปเบฒเบ™เบปเบ”. เปƒเบ™ x86, เบกเบฑเบ™
เบเบฑเบ‡โ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบšโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹ -mfpmath=sse or -mfpmath=sse+387 เบ–เบทเบเบเปเบฒเบ™เบปเบ”; เปƒเบ™เบญเบฐเบ”เบตเบ”
เบเปเบฅเบฐเบ™เบต, IEEE semantics เบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเป€เบเบตเบ™, เปเบฅเบฐเปƒเบ™เบชเบธเบ”เบ—เป‰เบฒเบ, เบฎเบญเบšเปเบกเปˆเบ™
เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰.

-fast เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹
เบŠเบธเบ” -fno-math-errno, -funsafe-math-optimizations, -ffinite-math-เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™,
-fno-rounding-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”, -fno-signaling-nans เปเบฅเบฐ -fcx-limited-range.

เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบกเบฒโ€‹เป‚เบ„ preprocessor "__FAST_MATH__" เบ–เบทเบโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เป‚เบ”เบเปƒเบ”เป† -O เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบญเบโ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹ - เป„เบง เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰
เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡ IEEE เบซเบผเบท ISO
เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบš / เบ‚เปเป‰โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เป„เบงเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบš
เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบฎเบฑเบšโ€‹เบ›เบฐโ€‹เบเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹.

-fno-math-errno
เบขเปˆเบฒเบ•เบฑเป‰เบ‡ "errno" เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เป‰เบงเบเบญเบฑเบ™เบ”เบฝเบง
เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ, เบ•เบปเบงเบขเปˆเบฒเบ‡, "sqrt". เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™ IEEE เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบฒเบ‡เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”
เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰เบ—เบธเบ‡เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบฑเบเบชเบฒเป€เบฅเบเป€เบฅเบ IEEE
เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เป‚เบ”เบเปƒเบ”เป† -O เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹
เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡ IEEE เบซเบผเบท ISO
เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบš / เบ‚เปเป‰โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เป„เบงเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบš
เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบฎเบฑเบšโ€‹เบ›เบฐโ€‹เบเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fmath-errno.

เปƒเบ™เบฅเบฐเบšเบปเบš Darwin, เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เบšเปเปˆเป€เบ„เบตเบเบ•เบฑเป‰เบ‡ "errno". เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบšเปเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™
เบชเปเบฒเบฅเบฑเบš compiler เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐ, เปเบฅเบฐ -fno-math-errno เป€เบ›เบฑเบ™
Default

-funsafe-math-optimizations
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบฅเบโ€‹เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹เบˆเบธเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเปˆเบญเบ™โ€‹เป„เบ”เป‰โ€‹เบ—เบตเปˆ (aโ€‹) เบชเบปเบกโ€‹เบกเบธเบ”โ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ–เบฝเบ‡โ€‹เปเบฅเบฐโ€‹
เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐ (b) เบญเบฒเบ”เบˆเบฐเบฅเบฐเป€เบกเบตเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ IEEE เบซเบผเบท ANSI. เป€เบกเบทเปˆเบญเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ,
เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ›เบฐเบเบญเบšเบกเบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบซเบผเบทเป„เบŸเบฅเปŒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบ›เปˆเบฝเบ™เบ„เปเบฒเบ„เบงเบšเบ„เบธเบก FPU เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบซเบผเบท
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบญเบทเปˆเบ™เป†.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เป‚เบ”เบเปƒเบ”เป† -O เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹
เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡ IEEE เบซเบผเบท ISO
เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบš / เบ‚เปเป‰โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เป„เบงเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบš
เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบฎเบฑเบšโ€‹เบ›เบฐโ€‹เบเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹. เป€เบ›เบตเบ”เปƒเบŠเป‰
-fno-เป€เบŠเบฑเบ™เบŠเบทเปˆ-เบชเบนเบ™, -fno-traping-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”, -fassociative-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ” เปเบฅเบฐ -freciprocal-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fno-unsafe-math-optimizations.

-fassociative-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เป‚เบเบ‡โ€‹เปƒเบซเบกเปˆโ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบงโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เปƒเบ™โ€‹เป„เบฅโ€‹เบเบฐโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เบˆเบธเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเปˆเบญเบ™โ€‹เป„เบ”เป‰โ€‹. เบ™เบตเป‰
เบฅเบฐเป€เบกเบตเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบžเบฒเบชเบฒ ISO C เปเบฅเบฐ C++ เป‚เบ”เบเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบœเบปเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ.
เบซเบกเบฒเบเป€เบซเบ”: เบเบฒเบ™เบชเบฑเปˆเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™เบ‚เบญเบ‡เบชเบนเบ™เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบšเปเปˆเบชเบปเบ™เปƒเบˆ NaNs เปเบฅเบฐ inhibit เบซเบผเบท
เบชเป‰เบฒเบ‡ underflow เบซเบผเบท overflow (เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบฎเบญเบš
เบžเบถเบ”เบ•เบดเบเปเบฒเป€เบŠเบฑเปˆเบ™ "(x + 2**52) - 2**52". เบญเบฒเบ”เบˆเบฐเบˆเบฑเบ”เบฎเบฝเบ‡เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบˆเบธเบ”เบฅเบญเบเบ„เบทเบ™เปƒเปเปˆ เปเบฅเบฐ
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบฑเป‰เบ™
เบ—เบฑเบ‡เบชเบญเบ‡ -fno-เป€เบŠเบฑเบ™เบŠเบทเปˆ-เบชเบนเบ™ เปเบฅเบฐ -fno-traping-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ” เบกเบตเบœเบปเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰
เบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบซเบผเบฒเบเบเบฑเบš - เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹. เบชเปเบฒเบฅเบฑเบš Fortran เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เป€เบ›เบตเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบกเบทเปˆเบญ
เบ—เบฑเบ‡เบชเบญเบ‡ -fno-เป€เบŠเบฑเบ™เบŠเบทเปˆ-เบชเบนเบ™ เปเบฅเบฐ -fno-traping-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ” เบกเบตเบœเบปเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fno-associative-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”.

-freciprocal-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบœเบปเบ™โ€‹เบ•เบญเบšโ€‹เปเบ—เบ™โ€‹เบ‚เบญเบ‡โ€‹เบ„เปˆเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบเบฑเบšโ€‹เบกเบนเบ™โ€‹เบ„เปˆเบฒโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ™เบตเป‰โ€‹
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบ•เบปเบงเบขเปˆเบฒเบ‡ "x / y" เบชเบฒเบกเบฒเบ”เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบ "x * (1 / y)", เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™
เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ–เป‰เบฒ "(1/y)" เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบปเปˆเบงเป„เบ›. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ™เบตเป‰
เบชเบนเบ™เป€เบชเบเบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเปเบฅเบฐเป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ flops เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบกเบนเบ™เบ„เปˆเบฒ.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fno-reciprocal-math.

-ffinite-math-เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบฅเบโ€‹เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบˆเบธเบ”โ€‹เป€เบฅเบทเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบชเบปเบกโ€‹เบกเบธเบ”โ€‹เบงเปˆเบฒ arguments เปเบฅเบฐโ€‹
เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบšเปเปˆเปเบกเปˆเบ™ NaNs เบซเบผเบท +-Infs.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เป‚เบ”เบเปƒเบ”เป† -O เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹
เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡ IEEE เบซเบผเบท ISO
เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบš / เบ‚เปเป‰โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เป„เบงเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบš
เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบฎเบฑเบšโ€‹เบ›เบฐโ€‹เบเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fno-finite-math-เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

-fno-เป€เบŠเบฑเบ™เบŠเบทเปˆ-เบชเบนเบ™
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เปเบ•เปˆเบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบฅเบโ€‹เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบˆเบธเบ”โ€‹เป€เบฅเบทเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบชเบปเบ™โ€‹เปƒเบˆโ€‹เบเบฒเบ™โ€‹เป€เบŠเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบชเบนเบ™โ€‹.
IEEE เป€เบฅเบเบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เบเปเบฒเบ™เบปเบ”เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบ„เปˆเบฒ +0.0 เปเบฅเบฐ -0.0 เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป€เบŠเบดเปˆเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™.
เบซเป‰เบฒเบกเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบŠเบฑเปˆเบ™ x+0.0 เบซเบผเบท 0.0*x (เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบต
-ffinite-math-เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™). เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบชเบฑเบ™เบเบฒเบ™เบ‚เบญเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเบนเบ™เบšเปเปˆเปเบกเปˆเบ™
เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fsigned-เบชเบนเบ™.

-fno-traping-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”
เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบˆเบธเบ”เบฅเบญเบเบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰
เบเบฑเบšเบ”เบฑเบ. เบเบฑเบšเบ”เบฑเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เปเบšเปˆเบ‡เบญเบญเบเป‚เบ”เบเบชเบนเบ™, overflow, underflow, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš inexact เปเบฅเบฐ
เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบฑเป‰เบ™ -fno-signaling-nans เบกเบตเบœเบปเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰.
เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เป„เบงโ€‹เบ‚เบถเป‰เบ™โ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบญเบตเบ‡โ€‹เปƒเบชเปˆ "เบšเปเปˆโ€‹เบขเบธเบ”โ€‹เป€เบŠเบปเบฒโ€‹" เป€เบฅเบโ€‹เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ” IEEEโ€‹,
เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเบ„เบงเบ™เป€เบ›เบตเบ”เป‚เบ”เบเบœเบนเป‰เปƒเบ”เบเปเปˆเบ•เบฒเบก -O เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบชเบปเปˆเบ‡โ€‹เบœเบปเบ™โ€‹เปƒเบ™โ€‹
เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡ IEEE เบซเบผเบท ISO
เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบš / เบ‚เปเป‰โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -ftrapping-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”.

- เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹
เบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฒเบ™เบซเบฑเบ™เป€เบ›เบฑเบ™ เปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบปเบกเบกเบธเบ”เบเบฒเบ™เบฎเบญเบšเบ•เบปเบงเบˆเบธเบ”เป€เบฅเบทเปˆเบญเบ™
เบžเบถเบ”เบ•เบดเบเบณ. เบ™เบตเป‰เปเบกเปˆเบ™เบฎเบญเบšเบซเบฒเบชเบนเบ™เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เบˆเบธเบ”เบฅเบญเบเป€เบ›เบฑเบ™เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบก, เปเบฅเบฐ
เบฎเบญเบšเบซเบฒเปƒเบเป‰เบ—เบตเปˆเบชเบธเบ”เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเบ”เป€เบฅเบเป€เบฅเบเบ„เบฐเบ™เบดเบ”เบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เปเบปเบ”. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™
เบเปเบฒเบ™เบปเบ”เบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ›เปˆเบฝเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบฎเบญเบš FP เปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบ, เบซเบผเบทเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™
เบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เป‰เบงเบเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบฎเบญเบšเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ›เบดเบ”เบเบฒเบ™เบžเบฑเบšเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบˆเบธเบ”เบฅเบญเบเปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก (เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเป‚เบซเบกเบ”เบกเบปเบ™)
เปเบฅเบฐเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เป€เบฅเบเป€เบฅเบเบ—เบตเปˆเบšเปเปˆเบ›เบญเบ”เป„เบžเปƒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบ
เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบกเบปเบ™โ€‹.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fno-rounding-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡ เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ—เบตเปˆเบˆเบฐเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ GCC เบ—เบฑเบ‡เปเบปเบ”
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบฎเบญเบš. เบฎเบธเปˆเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบ‚เบญเบ‡ GCC เบญเบฒเบ”เบˆเบฐเบชเบฐเบซเบ™เบญเบ‡
เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเบฅเบฐเบญเบฝเบ”เบเบงเปˆเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰ "FENV_ACCESS" pragma เบ‚เบญเบ‡ C99. เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบˆเบฐเบ–เบทเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเบชเบฐเบ–เบฒเบ™เบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ "FENV_ACCESS".

-fsignaling-nans
เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ IEEE signaling NaNs เบญเบฒเบ”เบˆเบฐเบชเป‰เบฒเบ‡เปƒเบชเปˆเบเบฑเบšเบ”เบฑเบเบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡
เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบˆเบธเบ”เบฅเบญเบ. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ›เบดเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡
เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™ NaNs. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบซเบกเบฒเบเป€เบ–เบดเบ‡
-ftrapping-เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบกเป‚เบ„เบฃเป‚เบ›เบฃเป€เบŠเบชเป€เบŠเบตเบเปˆเบญเบ™ "__SUPPORT_SNAN__" เบ–เบทเบเบเบณเบ™เบปเบ”.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fno-signaling-nans.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡ เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ—เบตเปˆเบˆเบฐเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ GCC เบ—เบฑเบ‡เปเบปเบ”
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบžเบถเบ”เบ•เบดเบเปเบฒ NaN.

-fsingle-precision-constant
เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบˆเบธเบ”เบ—เบตเปˆเบฅเบญเบเบ•เบปเบงเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบญเบฑเบ™เบ”เบฝเบง เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เปเบ›เบ‡เปเบšเบš implicitly
เบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบชเบญเบ‡เป€เบ—เบปเปˆเบฒ.

-fcx-limited-range
เป€เบกเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™, เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบฅเบฐเบšเบธเบงเปˆเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบซเบผเบธเบ”เป„เบฅเบเบฐเปเบกเปˆเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบกเบทเปˆเบญเปƒเบ”
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, เบเบฑเบ‡เบšเปเปˆเบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบงเปˆเบฒเบœเบปเบ™เบ‚เบญเบ‡ a
เบเบฒเบ™เบ„เบนเบ™เบŠเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบทเบเบฒเบ™เบซเบฒเบ™เปเบกเปˆเบ™ "NaN + I*NaN", เบ”เป‰เบงเบเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเบเบนเป‰
เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบฑเป‰เบ™. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fno-cx-limited-range, เปเบ•เปˆเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
-fast เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ pragma ISO C99 "CX_LIMITED_RANGE".
เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เปƒเบŠเป‰เบเบฑเบšเบ—เบธเบเบžเบฒเบชเบฒ.

-fcx-fortran-เบเบปเบ”เบฅเบฐเบšเบฝเบš
เบเบฒเบ™เบ„เบนเบ™เปเบฅเบฐเบเบฒเบ™เปเบšเปˆเบ‡เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš Fortran. เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบญเบšเป€เบ‚เบ”เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป€เบ›เบฑเบ™
เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบงเปˆเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™
เบเบฒเบ™เบ„เบนเบ™เบซเบผเบทเบเบฒเบ™เปเบšเปˆเบ‡เปเบกเปˆเบ™ "NaN + I*NaN", เบ”เป‰เบงเบเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบŠเปˆเบญเบเบเบนเป‰เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™
เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบฑเป‰เบ™.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ -fno-cx-fortran-เบเบปเบ”เบฅเบฐเบšเบฝเบš.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเปƒเบ”เป† -O เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบžเบฒเบเบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบœเบฐเบฅเบดเบ”
เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบซเบฑเบโ€‹.

-fbranch-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰
เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบชเบฑเบ‡โ€‹เบฅเบงเบกโ€‹เบเบฑเบšโ€‹ -fprofile-arcs, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบงเบšเบฅเบงเบกเบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เบฑเป‰เบ‡เบ—เบตเบชเบญเบ‡
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ -fbranch-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบˆเปเบฒเบ™เบงเบ™เป€เบงเบฅเบฒ
เปเบ•เปˆเบฅเบฐเบชเบฒเบ‚เบฒเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป‚เบ„เบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฑเบš -fprofile-arcs เบญเบญเบเบˆเบฒเบ, เบกเบฑเบ™เบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” arc เบ™เบฑเบšเป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ sourcename.gcda เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡. เป„เบ”เป‰
เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป„เบŸเบฅเปŒเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™
เบฅเบฐเบซเบฑเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบฑเบ‡เบชเบญเบ‡
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.

เบเบฑเบš -fbranch-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, GCC puts a REG_BR_PROB เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹เปƒเบ™โ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹ JUMP_INSN เปเบฅเบฐ
CALL_INSN. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆ
เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ”เบฝเบง: เปƒเบ™ reorg.c, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ„เบฒเบ”เป€เบ”เบปเบฒเบงเปˆเบฒเบชเบฒเบ‚เบฒเปƒเบ”เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”
เป€เบญเบปเบฒ, เป„เบ”เป‰ REG_BR_PROB เบ„เปˆเบฒเปเบกเปˆเบ™เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปƒเบ”เบ–เบทเบเบ™เปเบฒเป„เบ›เบซเบผเบฒเบเบเบงเปˆเบฒ
เป€เบฅเบทเป‰เบญเบเป†.

-fprofile-เบ„เปˆเบฒ
เบ–เป‰เบฒเบฅเบงเบกเบเบฑเบš -fprofile-arcs, เบกเบฑเบ™เป€เบžเบตเปˆเบกเบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบ„เปˆเบฒเบ‚เบญเบ‡
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบฅเบงเบšเบฅเบงเบก.

เบเบฑเบš -fbranch-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบกเบฑเบ™เบญเปˆเบฒเบ™เบ„เบทเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒเบˆเบฒเบเบ„เปˆเบฒ profileing เบ‚เบญเบ‡
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เป€เบ›เบตเบ”เปƒเบŠเป‰เบ”เป‰เบงเบ -fprofile-generate เปเบฅเบฐ -fprofile-เปƒเบŠเป‰.

-fprofile-reorder-functions
เบเบฒเบ™เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ„เบทเบ™เปƒเปเปˆเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป‚เบ›เบฃเป„เบŸเบฅเปŒเบˆเบฐเป€เบเบฑเบšเบเบณเบ„เบฑเป‰เบ‡เบ—เบณเบญเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”
เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ”เบ™เบถเปˆเบ‡ เปเบฅเบฐเบชเบฑเปˆเบ‡เปƒเบซเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบ•เบฑเป‰เบ‡เบŠเบฑเบ™เบ‚เบถเป‰เบ™.

เป€เบ›เบตเบ”เปƒเบŠเป‰เบ”เป‰เบงเบ -fprofile-เปƒเบŠเป‰.

-fvpt
เบ–เป‰เบฒเบฅเบงเบกเบเบฑเบš -fprofile-arcs, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบชเบฑเปˆเบ‡เปƒเบซเป‰ compiler เป€เบžเบตเปˆเบกเบฅเบฐเบซเบฑเบ”เปƒเบชเปˆ
เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบธเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ.

เบเบฑเบš -fbranch-เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบกเบฑเบ™เบญเปˆเบฒเบ™เบ„เบทเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒเปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบˆเบดเบ‡
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบžเบงเบเบกเบฑเบ™. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบžเบดเป€เบชเบ”เบ‚เบญเบ‡
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เป‚เบ”เบเปƒเบŠเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเบซเบฒเบ™.

-frename-เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™
เบžเบฐเบเบฒเบเบฒเบกเบซเบผเบตเบเบฅเป‰เบฝเบ‡เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เป‚เบ”เบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เป„เบงเป‰
เบซเบผเบฒเบเบเบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™. เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰เปƒเบซเป‰เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เบเบฑเบšเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ
เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹. เบญเบตเบ‡เบ•เบฒเบกเบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™ debug เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบฎเบญเบ‡เป€เบญเบปเบฒเป‚เบ”เบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ,
เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰ debugging เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ•เบปเบงเปเบ›เบšเปเปˆเบขเบนเปˆเปƒเบ™ "เป€เบฎเบทเบญเบ™
เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™".

เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ -funroll-loops เปเบฅเบฐ -fpeel-loops.

-ftracer
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบซเบฒเบ‡เป€เบžเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเบ‚เบฐเบซเบ™เบฒเบ” superblock. เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบเบ”เบฒเบ
เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบญเบทเปˆเบ™เป†เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒ.

เป€เบ›เบตเบ”เปƒเบŠเป‰เบ”เป‰เบงเบ -fprofile-เปƒเบŠเป‰.

-funroll-loops
เบ–เบญเบ” loops เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเบซเบผเบทเบ•เบฒเบก
เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ loop เป„เบ”เป‰. -funroll-loops implies -frerun-cse-after-loop, -fweb เปเบฅเบฐ
-frename-เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™. เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบตเบ”เบเบฒเบ™เบ›เบญเบเป€เบ›เบทเบญเบ loop เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™ (เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เป‚เบเบเบเป‰เบฒเบเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡
loops เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ„เบปเบ‡เบ—เบตเปˆเป€เบฅเบฑเบเบ™เป‰เบญเบ). เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เปเบฅเบฐ
เบญเบฒเบ”เบˆเบฐ เบซเบผเบทเบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เปเบฅเปˆเบ™เป„เบงเบ‚เบถเป‰เบ™.

เป€เบ›เบตเบ”เปƒเบŠเป‰เบ”เป‰เบงเบ -fprofile-เปƒเบŠเป‰.

-funroll-all-loops
เบ–เบญเบ” loops เบ—เบฑเบ‡เบซเบกเบปเบ”, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบšเปเปˆเปเบ™เปˆเบ™เบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ loop เปเบกเปˆเบ™
เป€เบ‚เบปเป‰เบฒ. เบ™เบตเป‰เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบ„เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบŠเป‰เบฒเบซเบผเบฒเบ. -funroll-all-loops เบซเบกเบฒเบเป€เบ–เบดเบ‡
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบเบฑเบšโ€‹ -funroll-loops.

-fpeel-loops
Peels loops เบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบกเป‰เบงเบ™เบซเบผเบฒเบ (เบˆเบฒเบ
เบ•เปเบฒเบ™เบดเบ•เบดเบŠเบปเบกเป‚เบ›เบฃเป„เบŸเบฅเปŒ). เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบตเบ”เบเบฒเบ™เบ›เบญเบเป€เบ›เบทเบญเบ loop เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™ (เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เป‚เบเบเบเป‰เบฒเบเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡
loops เบกเบตเบˆเปเบฒเบ™เบงเบ™เบ„เบปเบ‡เบ—เบตเปˆเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ‚เบญเบ‡ iterations).

เป€เบ›เบตเบ”เปƒเบŠเป‰เบ”เป‰เบงเบ -fprofile-เปƒเบŠเป‰.

-fmove-loop-invariants
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปเบšเบšเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡ loop เปƒเบ™ RTL loop optimizer. เป€เบ›เบตเบ”เปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš
-O1

-funswitch-loops
เบเป‰เบฒเบเบชเบฒเบ‚เบฒเบ—เบตเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ‚เบญเบ‡ loop invariant เบญเบญเบเบˆเบฒเบ loop, เบกเบตเบเบฒเบ™เบŠเปเป‰เบฒเบเบฑเบ™เบ‚เบญเบ‡
loop เบ—เบฑเบ‡เบชเบญเบ‡เบชเบฒเบ‚เบฒ (เบ”เบฑเบ”เปเบเป‰เบ•เบฒเบกเบœเบปเบ™เบ‚เบญเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚).

-function-sections
-fdata-sections
เบงเบฒเบ‡เปเบ•เปˆเบฅเบฐเบซเบ™เป‰เบฒเบ—เบตเปˆเบซเบผเบทเบฅเบฒเบเบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เปƒเบ™เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ–เป‰เบฒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ
เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบกเบฑเบ. เบŠเบทเปˆเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบทเบŠเบทเปˆเบ‚เบญเบ‡เบฅเบฒเบเบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™
เบเปเบฒเบ™เบปเบ”เบŠเบทเปˆเบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เปƒเบ™เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”.

เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡
เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ. เบฅเบฐเบšเบปเบšเบชเปˆเบงเบ™เปƒเบซเบเปˆเปƒเบŠเป‰เบงเบฑเบ”เบ–เบธ ELF
เบฎเบนเบšเปเบšเบšเปเบฅเบฐเป‚เบ›เป€เบŠเบ”เป€เบŠเบต SPARC เปเบฅเปˆเบ™ Solaris 2 เบกเบตเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.
AIX เบญเบฒเบ”เบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

เบžเบฝเบ‡เปเบ•เปˆเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบกเบทเปˆเบญเบกเบตเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบˆเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เป€เบŠเบฑเปˆเบ™เบ™เบฑเป‰เบ™. เป€เบกเบทเปˆเบญโ€‹เป€เบˆเบปเป‰เบฒ
เบฅเบฐเบšเบธเบ•เบปเบงเป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ•เบปเบงเบ›เบฐเบเบญเบšเปเบฅเบฐเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเป‰เบฒเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒเปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰
เป„เบŸเบฅเปŒเปเบฅเบฐเบเบฑเบ‡เบŠเป‰เบฒเบเบงเปˆเบฒ. เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ "gprof" เปƒเบ™เบ—เบธเบเบฅเบฐเบšเบปเบšเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบชเบดเปˆเบ‡เบ™เบตเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เปเบฅเบฐเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบš debugging เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบ—เบฑเบ‡เบชเบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบฅเบฐ
-g.

-fbranch-target-load-optimize
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป‚เบซเบผเบ”เบ‚เบญเบ‡เบชเบฒเบ‚เบฒเบเปˆเบญเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบเบฐเบ—เบนเป‰ prologue / epilogue.
เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบฅเบปเบ‡โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เป‚เบ”เบโ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบ›เบตเบ”โ€‹เป€เบœเบตเบโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹, เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™ hoistingโ€‹
loads เบญเบญเบเบˆเบฒเบ loops เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ inter-block เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ
เบœเปˆเบฒเบ™.

-fbranch-target-load-optimize2
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป‚เบซเบผเบ”เบ‚เบญเบ‡เบชเบฒเบ‚เบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบซเบปเบงเบ‚เปเป‰ prologue / epilogue.

-fbtr-bb-เบชเบฐเป€เบžเบฒเบฐ
เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เบ›เบฐโ€‹เบชเบดเบ”โ€‹เบ—เบดโ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹เบ‚เบญเบ‡โ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบชเบฒโ€‹เบ‚เบฒโ€‹, เบขเปˆเบฒโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบซเบกเปˆโ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบชเบฒโ€‹เบ‚เบฒโ€‹
เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบžเบฒเบเปƒเบ™เบšเบฅเบฑเบญเบเบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ”เป†.

-stack-protector
เบ›เปˆเบญเบเบฅเบฐเบซเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบฅเบปเป‰เบ™เบ‚เบญเบ‡เบšเบฑเบšเป€เบŸเบต, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เป‚เบˆเบกเบ•เบตเบชเบฐเป€เบ•เบเบ•เบต. เบ™เบตเป‰
เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ•เบปเบงเปเบ›เบเบญเบ‡เปƒเบซเป‰เบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบกเบตเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡. เบ™เบตเป‰
เบ›เบฐเบเบญเบšเบกเบตเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเป‚เบ—เบซเบฒ "alloca", เปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบกเบต buffers เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒ 8 bytes.
เบเบญเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเปƒเบชเปˆเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบงเบ”เป€เบšเบดเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
เบŸเบฑเบ‡เบŠเบฑเบ™เบญเบญเบ. เบ–เป‰เบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง, เบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบˆเบฐเบ–เบทเบเบžเบดเบกเบญเบญเบเปเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™
เบญเบญเบ.

-fstack-protector-เบ—เบฑเบ‡เปเบปเบ”
เบ„เบท -stack-protector เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เปเบ•เปˆโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เป‰เบญเบ‡โ€‹เบเบฑเบ™โ€‹.

-fstack-protector-strong
เบ„เบท -stack-protector เปเบ•เปˆเบ›เบฐเบเบญเบšเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ --- เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™
เบ—เบตเปˆเบกเบตเบ„เปเบฒเบ™เบดเบเบฒเบก array เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เบซเบผเบทเบกเบตเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบ—เบตเปˆเบขเบนเปˆเบเบญเบšเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™.

เบซเบกเบฒเบเป€เบซเบ”: เปƒเบ™ Ubuntu 14.10 เปเบฅเบฐเบฎเบธเปˆเบ™เบ•เปเปˆเบกเบฒ, -fstack-protector-strong เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบš C, C ++, ObjC, ObjC ++, เบ–เป‰เบฒเบšเปเปˆเบกเบต -fno-stack-protector, -nostdlib, เปเบฅเบฐ
- freestanding เบžเบปเบšเป€เบซเบฑเบ™.

-fsection-anchors
เบžเบฐเบเบฒเบเบฒเบกเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบขเบนเปˆเบชเบฑเบ™เบเบฒเบฅเบฑเบเป‚เบ”เบเปƒเบŠเป‰ "เบชเบฐเบกเป" เบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™.
เบชเบฑเบ™เบเบฒเบฅเบฑเบเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบงเบฑเบ”เบ–เบธเปƒเบเป‰เบ„เบฝเบ‡. เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเบซเบผเบธเบ”เบœเปˆเบญเบ™เบˆเปเบฒเบ™เบงเบ™
เบ‚เบญเบ‡ GOT entries เปเบฅเบฐ GOT เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปƒเบ™เบšเบฒเบ‡เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ.

เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆ "foo" เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

static int a, b, c;
int foo (void) { เบเบฑเบšเบ„เบทเบ™ a + b + c; }

เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เบฑเบ‡เบชเบฒเบก, เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบกเบฑเบ™เบ”เป‰เบงเบ
-fsection-anchors, เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ•เบปเบงเปเบ›เบˆเบฒเบเบˆเบธเบ”เบชเบฐเบกเปเบ—เบปเปˆเบงเป„เบ›เปเบ—เบ™. เป„เบ”เป‰
เบœเบปเบ™เบเบฐเบ—เบปเบšเปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš pseudocode เบ•เปเปˆเป„เบ›เบ™เบตเป‰ (เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ C):

int foo (void)
{
เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ int *xr = &x;
เบเบฑเบšเบ„เบทเบ™ xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
}

เบšเปเปˆเปเบกเปˆเบ™เป€เบ›เบปเป‰เบฒเปเบฒเบเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰.

--param เบŠเบทเปˆ=เบกเบนเบ™เบ„เปˆเบฒ
เปƒเบ™เบšเบฒเบ‡เบšเปˆเบญเบ™, GCC เปƒเบŠเป‰เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ•เปˆเบฒเบ‡เป†เป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบฑเป‰เบ™
เปเบกเปˆเบ™เปเบฅเป‰เบง. เบ•เบปเบงเบขเปˆเบฒเบ‡, GCC เบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™เปเบ–เบงเบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบผเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™
เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบšเบฒเบ‡เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ --param เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เบŠเบทเปˆเบ‚เบญเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐ, เปเบฅเบฐเบ„เบงเบฒเบกเบซเบกเบฒเบเบ‚เบญเบ‡เบ„เปˆเบฒ, เปเบกเปˆเบ™ tied เบเบฑเบš
เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ compiler, เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เปเบˆเป‰เบ‡เบเบฒเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”
เบ›เปˆเบญเบเบญเบญเบเบกเบฒ.

เปƒเบ™เปเบ•เปˆเบฅเบฐเบเปเบฅเบฐเบ™เบต, เป„เบ”เป‰ เบกเบนเบ™เบ„เปˆเบฒ เป€เบ›เบฑเบ™เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบก. เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹ เบŠเบทเปˆ เปเบกเปˆเบ™:

เบ„เบฒเบ”เบ„เบฐเป€เบ™-เบชเบฒเบ‚เบฒ-เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
เป€เบกเบทเปˆเบญเบชเบฒเบ‚เบฒเบ–เบทเบเบ„เบฒเบ”เบ„เบฐเป€เบ™เบงเปˆเบฒเบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฑเบšเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ•เปˆเปเบฒเบเบงเปˆเบฒเบ‚เบญเบšเป€เบ‚เบ”เบ™เบตเป‰
(เป€เบ›เบฑเบ™เป€เบ›เบตเป€เบŠเบฑเบ™), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ”เบต. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10.

เบชเบนเบ‡เบชเบธเบ”-crossjump-edges
เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบšเบ‚เบฒเป€เบ‚เบปเป‰เบฒเบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ”เบ”เบ‚เป‰เบฒเบก. เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ
เปƒเบŠเป‰เป‚เบ”เบ -fcrossjumping เปเบกเปˆเบ™ O(N^2) เปƒเบ™เบˆเบณเบ™เบงเบ™เบ‚เบญเบšเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเปเบ•เปˆเบฅเบฐเบ—เปˆเบญเบ™เป„เบกเป‰.
เบเบฒเบ™เป€เบžเบตเปˆเบกเบกเบนเบ™เบ„เปˆเบฒเบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบ, เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก
เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป‚เบ”เบเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰.

min-crossjump-insns
เบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบˆเบฑเบšเบ„เบนเปˆเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบชเบญเบ‡เบ•เบฑเบ™
เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป‚เบ”เบ”เบ‚เป‰เบฒเบกเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบ„เปˆเบฒเบ™เบตเป‰เบ–เบทเบเบฅเบฐเป€เบฅเบตเบเปƒเบ™เบเปเบฅเบฐเบ™เบต
เบšเปˆเบญเบ™เบ—เบตเปˆเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบšเบฅเบฑเบญเบเบ—เบตเปˆเบ–เบทเบเบ‚เป‰เบฒเบกเบ‚เป‰เบฒเบกเบˆเบฒเบเปเบกเปˆเบ™เบเบปเบ‡เบเบฑเบ™. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 5.

max-grow-copy-bb-insns
เบ›เบฑเบ”เป„เบˆเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”เบชเบนเบ‡เบชเบธเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ„เบฑเบ”เบฅเบญเบเบšเบฅเบฑเบญเบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™
เป‚เบ”เบ”. เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเปเบกเปˆเบ™เบ—เบฝเบšเบเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปเบšเบšเป‚เบ”เบ”. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™
8.

max-goto-duplication-insns
เบˆเบณเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เบณเปเบ™เบฐเบ™เบณเบ—เบตเปˆเบˆเบฐเบŠเป‰เบณเบเบฑเบšเบšเบฅเบฑเบญเบเบ—เบตเปˆเป‚เบ”เบ”เป„เบ›เบซเบฒ a
Goto เบ„เบดเบ”เป„เบฅเปˆ. เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบžเบถเบ”เบ•เบดเบเปเบฒ O(N^2) เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบœเปˆเบฒเบ™, เบ›เบฑเบ”เปƒเบˆ GCC
เบ„เบดเบ”เป„เบฅเปˆ gotos เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เปเบฅเบฐ unfactors เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™เบŠเป‰เบฒ
เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบเบฐเป‚เบ”เบ”เบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ—เปˆเบญเบ™เป„เบกเป‰เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบกเบตเบšเปเปˆเป€เบเบตเบ™ max-
goto-duplication-insns เปเบกเปˆเบ™ unfactored. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 8.

max-delay-slot-insn-search
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบŠเบญเบเบซเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบˆเบฐ
เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเบŠเปˆเบญเบ‡เบŠเบฑเบเบŠเป‰เบฒ. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบซเบผเบฒเบโ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เป‚เบ”เบโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เปเบกเปˆเบ™โ€‹
เบ„เบปเป‰เบ™เบซเบฒ, เบเบฒเบ™เบ›เบฐเบซเบเบฑเบ”เป€เบงเบฅเบฒเบˆเบฒเบเบเบฒเบ™เบ•เบทเปˆเบกเบŠเปˆเบญเบ‡เปƒเบชเปˆเบเบฒเบ™เบŠเบฑเบเบŠเป‰เบฒเปเบกเปˆเบ™เบซเบ™เป‰เบญเบ, เบชเบฐเบ™เบฑเป‰เบ™เบขเบธเบ”
เบเบณเบฅเบฑเบ‡เบŠเบญเบเบซเบฒ. เบเบฒเบ™เป€เบžเบตเปˆเบกเบกเบนเบ™เบ„เปˆเบฒเบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบ, เป€เบฎเบฑเบ”เปƒเบซเป‰
เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”.

max-delay-slot-live-search
เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ•เบทเปˆเบกโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เปƒเบชเปˆโ€‹เบเบฒเบ™โ€‹เบŠเบฑเบโ€‹เบŠเป‰เบฒโ€‹, เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบžเบดโ€‹เบˆเบฒโ€‹เบฅเบฐโ€‹เบ™เบฒโ€‹
เป€เบกเบทเปˆเบญเบŠเบญเบเบซเบฒเบšเบฅเบฑเบญเบเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบปเบ”เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ™เบตเป‰
เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเป€เบฅเบทเบญเบ arbitrarily เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบ, เป€เบžเบตเปˆเบกเบ—เบฐเบงเบตเบเบฒเบ™
เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก. เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบญเบญเบเป€เบกเบทเปˆเบญเบฅเบฐเบซเบฑเบ”เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡เบŠเบฑเบเบŠเป‰เบฒ
เบ‚เบฝเบ™เบ„เบทเบ™เปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ„เบงเบšเบ„เบธเบก.

max-gcse-memory
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เป‚เบ”เบเบ›เบฐเบกเบฒเบ™เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡ subexpression เบ—เบปเปˆเบงเป„เบ›เบ—เบปเปˆเบงเป‚เบฅเบ. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เบซเบผเบฒเบโ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹
เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”.

max-gcse-insertion-ratio
เบ–เป‰เบฒเบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เปƒเบชเปˆเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ•เปเปˆเบเบฒเบ™เบฅเบถเบšเปเบกเปˆเบ™เปƒเบซเบเปˆเบเบงเปˆเบฒเบ„เปˆเบฒเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบš
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเปƒเบ”เป†, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ RTL PRE เปเบŠเบเบซเบผเบทเป€เบญเบปเบฒเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบญเบญเบ
เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบŠเป‰เบณเบŠเป‰เบญเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เปƒเบ™เบเบฐเปเบชเบ„เบณเปเบ™เบฐเบ™เบณ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™
20โ€‹.

max-pending-list-length
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฑเบ‡โ€‹เบ„เป‰เบฒเบ‡โ€‹เบขเบนเปˆโ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบฅเป‰เบฒเบ‡โ€‹
เบชเบฐเบ–เบฒเบ™เบฐเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ เปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเปเปˆ. เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ—เบตเปˆเบกเบตเบชเบฒเบ‚เบฒเบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบซเบผเบทเบเบฒเบ™เป‚เบ—เบชเบฒเบกเบฒเบ”
เบชเป‰เบฒเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป€เบเบตเบ™เป„เบ›เบ—เบตเปˆเบšเปเบฅเบดเป‚เบžเบเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡.

max-modulo-backtrack-attempts
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบก backtrack เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ„เบงเบ™เบˆเบฐเป€เบฎเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ modulo
เบเบฒเบ™เบˆเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ loop. เบ„เปˆเบฒเบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป„เบ”เป‰.

max-inline-insns-single
เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เบ„เบงเบšเบ„เบธเบก inliner เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ GCC. เบ•เบปเบงเป€เบฅเบเบ™เบตเป‰เบเปเบฒเบ™เบปเบ”
เบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเบนเบ‡เบชเบธเบ” (เบ™เบฑเบšเบขเบนเปˆเปƒเบ™เบ•เบปเบงเปเบ—เบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ GCC) เปƒเบ™ a
เบŸเบฑเบ‡เบŠเบฑเบ™เบ”เบฝเบงเบ—เบตเปˆ inliner เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ inlining. เบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆ
เบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบฐเบเบฒเบ”เปƒเบ™เปเบ–เบง เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบŠเบฑเป‰เบ™เบฎเบฝเบ™ (C++).
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 400.

max-inline-insns-auto
เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เปƒเบŠเป‰ -finline-functions (เบฅเบงเบกเบขเบนเปˆเปƒเบ™ -O3), เบซเบผเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเบˆเบฐ
เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ inlining เป‚เบ”เบ compiler เป„เบ”เป‰เบ–เบทเบเบชเบทเบšเบชเบงเบ™. เป€เบ–เบดเบ‡
เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™, เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ (เบซเบผเบฒเบ) เป€เบกเบทเปˆเบญเบ—เบฝเบšเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ
เบ›เบฐเบเบฒเบ”เปƒเบ™เปเบ–เบงเบชเบฒเบกเบฒเบ”เบ™เบณเปƒเบŠเป‰เป„เบ”เป‰. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 40.

inline-min-speedup
เป€เบกเบทเปˆเบญเบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบœเบนเป‰เป‚เบ— + callee runtime เป€เบเบตเบ™เบ™เบตเป‰
threshold (เปƒเบ™โ€‹เบเปˆเบญเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ™เบตเป‰), เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™ inlined เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบชเบปเบ™โ€‹เป€เบฅเบทเปˆเบญเบ‡โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”
--param max-inline-insns-single เปเบฅเบฐ --param max-inline-insns-auto.

large-function-insns
เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบ—เป‰เป†. เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒเบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ™เบตเป‰
เบซเบผเบฑเบ‡เบˆเบฒเบ inlining, inlining เปเบกเปˆเบ™เบˆเปเบฒเบเบฑเบ”เป‚เบ”เบ --param เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปƒเบซเบเปˆโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹. เบ™เบตเป‰
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ•เบปเป‰เบ™เบ•เปเป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป€เบงเบฅเบฒเบ—เบตเปˆเบฎเบธเบ™เปเบฎเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เบšเปเปˆ.
เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเป€เบชเบฑเป‰เบ™เบŠเบทเปˆเบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบเบ›เบฒเบเบซเบผเบฑเบ‡. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 2700.

เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปƒเบซเบเปˆโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹
เบฅเบฐเบšเบธเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™ inlining เป€เบ›เบฑเบ™เป€เบ›เบตเป€เบŠเบฑเบ™. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 100 เป€เบŠเบดเปˆเบ‡เบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป€เบ–เบดเบ‡ 2.0 เป€เบ—เบปเปˆเบฒเบ‚เบญเบ‡เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš
เบ‚เบฐเบซเบ™เบฒเบ”.

เปœเปˆเบงเบเปƒเบซเบเปˆ
เบ‚เบญเบšโ€‹เป€เบ‚เบ”โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบซเบปเบงโ€‹เบซเบ™เปˆเบงเบโ€‹เบเบฒเบ™โ€‹เปเบ›โ€‹เบžเบฒโ€‹เบชเบฒโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปƒเบซเบเปˆโ€‹. เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™ inlining เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™
เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒเบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ™เบตเป‰เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เป‚เบ”เบ --param inline-unit-growth. เบชเปเบฒเบฅเบฑเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ
เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”เป€เบเบตเบ™เป„เบ›. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบ™เป‰เบฒเบ—เบตเปˆ A
เบ™เบฑเป‰เบ™เปเบกเปˆเบ™ inline เปเบฅเบฐ B เบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆเป‚เบ—เบซเบฒ A เบชเบฒเบกเป€เบ—เบทเปˆเบญ. เบ–เป‰เบฒ B เปเบกเปˆเบ™เบ™เป‰เบญเบเบ—เบฝเบšเบเบฑเบš A,
เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เปเบกเปˆเบ™ 300% เปเบฅเบฐเบเบฑเบ‡ inlining เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™ sane เบซเบผเบฒเบ. เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ
เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบ™เป‰เบฒเบ—เบตเปˆ inlineable เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เป‚เบ”เบเบฅเบงเบก
เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เปเบกเปˆเบ™โ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เบซเบผเบตเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบเบฒเบ™โ€‹เบฅเบฐโ€‹เป€เบšเบตเบ” exponential เบ‚เบญเบ‡โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ
เบซเบ™เปˆเบงเบ, เบ‚เบฐเบซเบ™เบฒเบ”เปเบกเปˆเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™ --param เปœเปˆเบงเบเปƒเบซเบเปˆ เบเปˆเบญเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ --param
inline-unit-growth. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10000.

inline-unit-growth
เบฅเบฐเบšเบธเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเป‚เบ”เบเบฅเบงเบกเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบ inlining. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 30 เป€เบŠเบดเปˆเบ‡เบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเป€เบ›เบฑเบ™ 1.3 เป€เบ—เบปเปˆเบฒเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš.

ipcp-unit-growth
เบฅเบฐเบšเบธเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเป‚เบ”เบเบฅเบงเบกเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฑเบ™
เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10 เป€เบŠเบดเปˆเบ‡เบˆเบณเบเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ‚เบญเบ‡เบซเบปเบงเปœเปˆเบงเบเป€เบ›เบฑเบ™ 1.1
เป€เบ—เบปเปˆเบฒเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš.

เปƒเบซเบเปˆ stack-frame
เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเบเบญเบš stack เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ inlining algorithm เบเปเบฒเบฅเบฑเบ‡เบžเบฐเบเบฒเบเบฒเบก
เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ™เบตเป‰เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 256 bytes.

large-stack-frame-growth
เบฅเบฐเบšเบธเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เป€เบŸเบฃเบก stack เปƒเบซเบเปˆเบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™ inlining เป€เบ›เบฑเบ™เป€เบ›เบตเป€เบŠเบฑเบ™.
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 1000 เป€เบŠเบดเปˆเบ‡เบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ‚เบญเบ‡เบเบญเบš stack เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป€เบ–เบดเบ‡ 11 เป€เบ—เบปเปˆเบฒ
เบ‚เบฐเบซเบ™เบฒเบ”เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš.

max-inline-insns-recursive
max-inline-insns-recursive-auto
เบฅเบฐเบšเบธเบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเบนเบ‡เบชเบธเบ”เป€เบ›เบฑเบ™เบชเปเบฒเป€เบ™เบปเบฒเบ™เบญเบเบชเบฒเบเบ‚เบญเบ‡เบ•เบปเบงเบ•เบปเบ™เป€เบญเบ‡.
เบŸเบฑเบ‡เบŠเบฑเบ™ inline recursive เบชเบฒเบกเบฒเบ”เป€เบ•เบตเบšเป‚เบ•เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” inlining recursive.

เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบฐเบเบฒเบ”เปƒเบ™เปเบ–เบง, --param max-inline-insns-recursive เบ–เบทเบเป€เบญเบปเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™
เบšเบฑเบ™เบŠเบต. เบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ›เบฐเบเบฒเบ”เปƒเบ™เปเบ–เบง, inlining recursive เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญ
-finline-functions (เบฅเบงเบกเบขเบนเปˆเปƒเบ™ -O3) เบ–เบทเบโ€‹เป€เบ›เบตเบ”โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹เปเบฅเบฐโ€‹ --param max-inline-insns-
recursive-auto เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 450.

max-inline-recursive-depth
max-inline-recursive-depth-auto
เบฅเบฐเบšเบธเบ„เบงเบฒเบกเป€เบฅเบดเบ recursion เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ recursive inlining.

เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบฐเบเบฒเบ”เปƒเบ™เปเบ–เบง, --param max-inline-recursive-depth เบ–เบทเบเป€เบญเบปเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™
เบšเบฑเบ™เบŠเบต. เบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ›เบฐเบเบฒเบ”เปƒเบ™เปเบ–เบง, inlining recursive เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญ
-finline-functions (เบฅเบงเบกเบขเบนเปˆเปƒเบ™ -O3) เบ–เบทเบโ€‹เป€เบ›เบตเบ”โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹เปเบฅเบฐโ€‹ --param max-inline-recursive-
เบ„เบงเบฒเบกโ€‹เป€เบฅเบดเบโ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹ เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 8.

min-inline-recursive-probability
inlining recursive เปเบกเปˆเบ™เบเปเบฒเป„เบฅเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ—เบตเปˆเบกเบต recursion เป€เบฅเบดเบเปƒเบ™
เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบˆเบฑเบšเบ›เบงเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเป€เบฅเบดเบ recursion เบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบก
เบ‚เบฐโ€‹เบซเบ™เบฒเบ” prologue เบซเบผเบทโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฑเบšโ€‹เบชเบปเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบฎเปˆเบฒเบ‡โ€‹เบเบฒเบโ€‹เบ—เบตเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบญเบทเปˆเบ™เป†โ€‹.

เป€เบกเบทเปˆเบญโ€‹เบ„เบณโ€‹เบ•เบดโ€‹เบŠเบปเบกโ€‹เบ‚เบญเบ‡โ€‹เป‚เบ›โ€‹เบฃโ€‹เป„เบŸโ€‹เบฅเปŒโ€‹เบกเบตโ€‹เบขเบนเปˆ (เป€เบšเบดเปˆเบ‡ -fprofile-generate) recursion เบ•เบปเบงโ€‹เบˆเบดเบ‡โ€‹
เบ„เบงเบฒเบกเป€เบฅเบดเบเบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰เบˆเบฒเบเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™ recurses เบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ—เบ—เบตเปˆเปƒเบซเป‰
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ. เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบˆเปเบฒเบเบฑเบ” inlining เบžเบฝเบ‡เปเบ•เปˆเป‚เบ—เบซเบฒเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบกเบต
เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เป€เบเบตเบ™เป€เบเบ™เบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰ (เป€เบ›เบฑเบ™เป€เบ›เบตเป€เบŠเบฑเบ™). เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10.

Early-inlining-insns
เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ—เบตเปˆ inliner เบ•เบปเป‰เบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบกเบฑเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบฅเบดเบกเบฒเบ™
เบ‚เบญเบ‡ inlining เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบฅเบปเบ‡เป‚เบ—เบ” abstraction เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10.

max-early-inliner-iterations
max-early-inliner-iterations
เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบŠเป‰เบณโ€‹เบ‚เบญเบ‡ inliner เบ•เบปเป‰เบ™โ€‹. เบ™เบตเป‰เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง bounds เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡
nested indirect calls the inliner เบ•เบปเป‰เบ™เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚. เป‚เบชเป‰เบ—เบตเปˆเป€เบฅเบดเบเบเบงเปˆเบฒเปเบกเปˆเบ™เบเบฑเบ‡เบขเบนเปˆ
เบˆเบฑเบ”เบเบฒเบ™เป‚เบ”เบ inlining เบŠเป‰เบฒ.

comdat-sharing-probability
comdat-sharing-probability
เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ (เป€เบ›เบฑเบ™เป€เบ›เบตเป€เบŠเบฑเบ™) เบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เปเบ–เบงเบ‚เบญเบ‡ C++ เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™ comdat เปเบกเปˆเบ™
เปเบšเปˆเบ‡เบ›เบฑเบ™เปƒเบ™เบ—เบปเปˆเบงเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบฅเบงเบšเบฅเบงเบกเบซเบผเบฒเบ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 20.

min-vect-loop-bound
เบˆเปเบฒเบ™เบงเบ™เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบ‡เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบ—เบตเปˆ loops เบšเปเปˆเป„เบ”เป‰เบ–เบทเบ vectorized เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
-ftree-vectorize เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบซเบผเบฑเบ‡เบˆเบฒเบ vectorization เบ•เป‰เบญเบ‡เบเบฒเบ™
เบซเบผเบฒเบเบเบงเปˆเบฒเบ„เปˆเบฒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบžเบทเปˆเบญเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ vectorization. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 0.

gcse-cost-distance-ratio
เบ›เบฑเบ”โ€‹เป„เบˆโ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบเบฒเบ™โ€‹เบ„เปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เป„เบฅโ€‹เบเบฐโ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เบญเบญเบโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบเป‰เบฒเบโ€‹เป‚เบ”เบโ€‹
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš GCSE. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ™เบตเป‰เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ” hoisting pass.
เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒ, เบเบฒเบ™ hoisting เบฅเบฐเบซเบฑเบ”เบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ
expressions, ie, เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบกเบตเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบซเบ™เป‰เบญเบเบเบงเปˆเบฒ gcse-unrestricted-
เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบ. เบเบฒเบ™เบฅเบฐเบšเบธ 0 เบ›เบดเบ”เบเบฒเบ™เบเบปเบเบ•เบปเบงเบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™
10โ€‹.

gcse-unrestricted-cost
เบ„เปˆเบฒโ€‹เปƒเบŠเป‰โ€‹เบˆเปˆเบฒเบโ€‹, เบเบฒเบ™โ€‹เบงเบฑเบ”โ€‹เปเบ—เบโ€‹เบ›เบฐโ€‹เบกเบฒเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ„เปˆเบฒโ€‹เปƒเบŠเป‰โ€‹เบˆเปˆเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹, เบขเบนเปˆโ€‹
เป€เบŠเบดเปˆเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš GCSE เบšเปเปˆเบˆเปเบฒเบเบฑเบ”เป„เบฅเบเบฐเบ—เบฒเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบญเบญเบเบชเบฒเบกเบฒเบ”เป€เบ”เบตเบ™เบ—เบฒเบ‡เป„เบ”เป‰.
เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ™เบตเป‰เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ” hoisting pass. เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบซเบ™เป‰เบญเบเบฅเบปเบ‡,
เบเบฒเบ™ hoisting เบฅเบฐเบซเบฑเบ”เบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบเปเบกเปˆเบ™. เบเบฒเบ™เบฅเบฐเบšเบธ 0 เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ”
เบเบฒเบ™โ€‹เป€เบ”เบตเบ™โ€‹เบ—เบฒเบ‡โ€‹เปƒเบ™โ€‹เป„เบฅโ€‹เบเบฐโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 3.

max-hoist-depth
เบ„เบงเบฒเบกเป€เบฅเบดเบเบ‚เบญเบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰ dominator เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบžเบทเปˆเบญ hoist. เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰
เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ›เบฐเบžเบถเบ”เบชเบตเปˆเบซเบผเปˆเบฝเบกเปƒเบ™เบฅเบฐเบšเบปเบš hoisting algorithm. เบ„เปˆเบฒเบ‚เบญเบ‡ 0 เบšเปเปˆเบˆเปเบฒเบเบฑเบ”
เปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ, เปเบ•เปˆเบญเบฒเบ”เบˆเบฐเบŠเป‰เบฒเบฅเบปเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบซเบ™เป‰เบฒเบ—เบตเปˆเบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เปเบกเปˆเบ™ 30.

max-tail-merge-เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš
เบˆเบณเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡ bbs เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เป€เบžเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบš bb เบเบฑเบš. เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™
เบžเบถเบ”เบ•เบดเบเบณเบชเบตเปˆเบซเบผเปˆเบฝเบกเปƒเบ™เบเบฒเบ™เบฅเบงเบกเบซเบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10.

max-tail-merge-iterations
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบŠเป‰เบณโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบœเปˆเบฒเบ™โ€‹เปƒเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹. เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญ
เบˆเบณเบเบฑเบ”เป€เบงเบฅเบฒเบเบฒเบ™เบฎเบงเบšเบฎเบงเบกเปƒเบ™เบเบฒเบ™เบฎเบงเบกเบซเบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 2.

max-unrolled-insns
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบ—เบตเปˆ loop เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™ unrolledโ€‹. เบ–เป‰เบฒ loop
เปเบกเปˆเบ™ unrolled, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบเบฑเบ‡เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบฐเบซเบฑเบ” loop เปเบกเปˆเบ™
เบเบปเบเป€เบฅเบตเบ.

max-average-unrolled-insns
เบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบฅเปเบฒเบญเบฝเบ‡เป‚เบ”เบเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบงเปˆเบฒ
loop เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ unrolled. เบ–เป‰เบฒ loop เบ–เบทเบเบ–เบญเบ”เบญเบญเบ, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบ„เบทเบเบฑเบ™
เบเบณเบ™เบปเบ”เบˆเบณเบ™เบงเบ™เบ„เบฑเป‰เบ‡เบ—เบตเปˆเบฅเบฐเบซเบฑเบ” loop เบ–เบทเบเบ–เบญเบ”เบญเบญเบ.

max-unroll-times
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡ unrollings เบ‚เบญเบ‡ loop เบ”เบฝเบงโ€‹.

max-peeled-insns
เบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆ loop เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบญเบเป€เบ›เบทเบญเบ. เบ–เป‰เบฒ loop
เบ–เบทเบเบ›เบญเบเป€เบ›เบทเบญเบ, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบเบฑเบ‡เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบฐเบซเบฑเบ” loop เบ–เบทเบเบ›เบญเบเป€เบ›เบทเบญเบ.

max-peel-times
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบญเบเป€เบ›เบทเบญเบเบ‚เบญเบ‡ loop เบ”เบฝเบง.

max-peel-เบชเบฒเบ‚เบฒ
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบชเบฒเบ‚เบฒเปƒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบฎเป‰เบญเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบฅเปเบฒเบ”เบฑเบšเบ›เบญเบเป€เบ›เบทเบญเบ.

max-completely-peeled-insns
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡ insns เบ‚เบญเบ‡ loop เบ›เบญเบเป€เบ›เบทเบญเบเบซเบกเบปเบ”.

max-completely-peel-times
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบŠโ€‹เป‰โ€‹เปเบฒโ€‹เบ‚เบญเบ‡ loop เป€เบ›เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบญเบโ€‹เป€เบ›เบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบชเบปเบกโ€‹เบšเบนเบ™โ€‹.

max-completely-peel-loop-nest-depth
เบ„เบงเบฒเบกเป€เบฅเบดเบเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบฎเบฑเบ‡ loop เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบญเบเป€เบ›เบทเบญเบเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™.

max-unswitch-insns
เบˆเบณเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡ insns เบ‚เบญเบ‡ loop เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบชเบฐเบซเบผเบฑเบš.

max-unswitch-level
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบชเบฒโ€‹เบ‚เบฒ unswitched เปƒเบ™ loop เบ”เบฝเบงโ€‹.

lim-เปเบžเบ‡
เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ•เปเปˆเบฒเบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบฅเบฒเบ„เบฒเปเบžเบ‡เปƒเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡ loop invariant.

iv-consider-all-candidates-bound
เบœเบนเบเบกเบฑเบ”เบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบ› induction, เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบ—เบตเปˆเบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”
เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เบปเบงเปเบ› induction. เบ–เป‰เบฒเบกเบต
เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบตเป‰, เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ—เบตเปˆเบชเบธเบ”เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ—เบตเปˆเบˆเบฐเบซเบผเบตเบเป€เบงเบฑเป‰เบ™
เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เป€เบงเบฅเบฒเบชเบตเปˆเบซเบฅเปˆเบฝเบก.

iv-max-เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ-เปƒเบŠเป‰
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เบปเบงเปเบ› induction เปƒเบซเป‰เป€เบ–เบดเบ‡เบเบฑเบš loops เบ—เบตเปˆเบกเบต induction เบซเบผเบฒเบ
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ›.

iv-always-prune-cand-set-bound
เบ–เป‰เบฒเบˆเปเบฒเบ™เบงเบ™เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเปƒเบ™เบŠเบธเบ”เปเบกเปˆเบ™เบ™เป‰เบญเบเบเบงเปˆเบฒเบ„เปˆเบฒเบ™เบตเป‰, เบžเบฐเบเบฒเบเบฒเบกเบชเบฐเป€เบซเบกเบต
เป€เบญเบปเบฒ ivs เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบญเบญเบเบˆเบฒเบเบŠเบธเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบžเบตเปˆเบกเปƒเบซเบกเปˆ.

scev-max-expr-size
เบœเบนเบเบกเบฑเบ”เบเบฑเบšเบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบชเบฐเป€เบเบฑเบ”เบฅเบฒ. เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบŠเป‰เบฒเบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ.

scev-max-expr-เบŠเบฑเบšเบŠเป‰เบญเบ™
เบœเบนเบเบกเบฑเบ”เบเบฑเบšเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบชเบฐเป€เบเบฑเบ”เป€เบ‡เบดเบ™.
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบŠเป‰เบฒเบฅเบปเบ‡.

omega-max-vars
เบˆเบณเบ™เบงเบ™เบ•เบปเบงเปเบ›เบชเบนเบ‡เบชเบธเบ”เปƒเบ™เบฅเบฐเบšเบปเบšเบˆเบณเบเบฑเบ” Omega. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เปเบกเปˆเบ™ 128.

omega-max-geqs
เบˆเบณเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบšเปเปˆเบชเบฐเป€เปเบตเบžเบฒเบšเปƒเบ™เบฅเบฐเบšเบปเบšเบˆเบณเบเบฑเบ” Omega. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบ„เปˆเบฒเปเบกเปˆเบ™ 256.

omega-max-eqs
เบˆเบณเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเบฐเป€เปเบตเบžเบฒเบšเปƒเบ™เบฅเบฐเบšเบปเบšเบˆเบณเบเบฑเบ” Omega. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เปเบกเปˆเบ™ 128.

omega-max-wild-cards
เบˆเบณเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เปเบ—เบ™เบ—เบตเปˆเบ•เบปเบงเปเบเป‰เป„เบ‚ Omega เบชเบฒเบกเบฒเบ”เปƒเบชเปˆเป„เบ”เป‰.
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 18.

omega-hash-table-size
เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ hash เปƒเบ™ Omega solver. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 550.

omega-max-keys
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฐเปเบˆเบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบ Omega solver. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 500.

omega-eliminate-redundant-constraints
เป€เบกเบทเปˆเบญเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™ 1, เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบ„เบฒเปเบžเบ‡เป€เบžเบทเปˆเบญเบฅเบปเบšเบฅเป‰เบฒเบ‡เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ—เบตเปˆเบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 0.

vect-max-version-for-alignment-checks
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบงเบฅเบฒเปเบฅเปˆเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ” loop
เบฎเบธเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบญเบ”เบ„เปˆเบญเบ‡เปƒเบ™ vectorizer.

vect-max-version-for-alias-checks
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบงเบฅเบฒเปเบฅเปˆเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ” loop
เบฎเบธเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบ™เบฒเบกเปเบเบ‡เปƒเบ™ vectorizer.

vect-max-peeling-for-alignment
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบญเบโ€‹เป€เบ›เบทเบญเบ loop เป€เบžเบทเปˆเบญโ€‹เป€เบชเบตเบกโ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบš vectorizerโ€‹. เบกเบนเบ™เบ„เปˆเบฒ
-1 เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ 'เบšเปเปˆเบˆเปเบฒเบเบฑเบ”'.

max-iterations-to-track
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบŠโ€‹เป‰โ€‹เปโ€‹เบฒโ€‹เบ‚เบญเบ‡ loop เป€เบ›เบฑเบ™ brute-force algorithm เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐ
เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบ‚เบญเบ‡ loop เบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเป€เบกเบตเบ™.

hot-bb-count-ws-permille
เบเบฒเบ™เบ™เบฑเบšเป‚เบ›เบฃเป„เบŸเบฅเปŒเบšเบฅเบฑเบญเบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเบฎเป‰เบญเบ™เบ–เป‰เบฒเบกเบฑเบ™เบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เปƒเบซเป‰
permillage (ie 0) เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” profiled เบ—เบฑเบ‡เบซเบกเบปเบ”.

hot-bb-frequency-fraction
เป€เบฅเบทเบญเบเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡เบ•เบฑเบ™เป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™
เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบฎเป‰เบญเบ™.

max-predicted-iterations
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบŠเปเป‰เบฒโ€‹เบเบฑเบ™ loop เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ„เบฒเบ”โ€‹เบ„เบฐโ€‹เป€เบ™โ€‹เบชเบฐโ€‹เบ–เบดโ€‹เบ•เบดโ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™
เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ—เบตเปˆโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ”เป‰เบงเบ loop เบ”เบฝเบงโ€‹เบ—เบตเปˆโ€‹เบฎเบนเป‰โ€‹เบˆเบฑเบโ€‹เบœเบนเบโ€‹เบžเบฑเบ™โ€‹เปเบฅเบฐ loop เบญเบตเบโ€‹
เบกเบตโ€‹เบเบฒเบ™โ€‹เบœเบนเบโ€‹เบกเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบฎเบนเป‰โ€‹เบˆเบฑเบโ€‹. เบˆเปเบฒเบ™เบงเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบ‚เบญเบ‡เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เปเบกเปˆเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ
เบˆเปเบฒเบ™เบงเบ™เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบเบ‚เบญเบ‡ iterations เบชเบฐเป€เบฅเปˆเบเบ›เบฐเบกเบฒเบ™ 10. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ loop เป„เบ”เป‰
เป‚เบ”เบเบšเปเปˆเบกเบตเบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ›เบฐเบเบปเบ”เบงเปˆเบฒเป€เบขเบฑเบ™เบ—เบฝเบกเบเบฑเบšเบ„เบปเบ™เบญเบทเปˆเบ™.

เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰
เบ„เบงเบšเบ„เบธเบกเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ—เบตเปˆเบกเบตเบ„เปˆเบฒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰. เบ™เบตเป‰
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบ›เบตเป€เบŠเบฑเบ™ (ie 0 ... 100) เป€เบ›เบฑเบ™ input. เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบ‚เบญเบ‡ 90 เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เป‚เบ”เบโ€‹เบเบปเบ‡โ€‹.

align-threshold
เป€เบฅเบทเบญเบเบชเปˆเบงเบ™เปœเบถเปˆเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบ–เบตเปˆเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™ a
เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบงเบฒเบ‡เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™.

align-loop-iterations
loop เบ—เบตเปˆเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเป€เบฎเบฑเบ”เบŠเป‰เบณเบขเปˆเบฒเบ‡เปœเป‰เบญเบเบˆเบณเบ™เบงเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบ—เบตเปˆเป€เบฅเบทเบญเบเปเบกเปˆเบ™เบชเบญเบ”เบ„เปˆเบญเบ‡.

tracer-dynamic- coverage
tracer-dynamic-coverage-feedback
เบ„เปˆเบฒเบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบชเป‰เบฒเบ‡ superblock เป€เบกเบทเปˆเบญเบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ—เบตเปˆเปƒเบซเป‰
เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เบเบงเบกเป€เบญเบปเบฒ. เบ™เบตเป‰เบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™.

เป„เบ”เป‰ tracer-dynamic-coverage-feedback เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ„เปเบฒเบ„เบถเบ”เบ„เปเบฒเป€เบซเบฑเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒ
เบกเบตเปƒเบซเป‰. เป‚เบ›เบผเป„เบŸเบฅเปŒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡ (เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบšเบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบชเบฐเบ–เบดเบ•เบด) เปเบกเปˆเบ™เบกเบตเบซเบผเบฒเบ
เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เปœเป‰เบญเบเบฅเบปเบ‡เปƒเบซเป‰เป€เบเบ™เป€เบ›เบฑเบ™เบ„เปˆเบฒเปƒเบซเบเปˆเบเบงเปˆเบฒ.

tracer-max-code-growth
เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบซเบฒเบ‡เป€เบกเบทเปˆเบญเบเบฒเบ™เป€เบ•เบตเบšเป‚เบ•เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป„เบ”เป‰เบšเบฑเบ™เบฅเบธเบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ›เบญเบก, เบเป‰เบญเบ™เบงเปˆเบฒเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบเบฒเบ™เบŠเปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡เบ•เปเปˆเบกเบฒเปƒเบ™เบ‚เป‰เบฒเบก
เป‚เบ”เบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบนเบ‡เบเบงเปˆเบฒเบซเบผเบฒเบเบเปˆเบงเบฒเบเบฒเบ™เป€เบ•เบตเบšเปƒเบซเบเปˆเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.

tracer-min-branch-ratio
เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเปเบšเบšเบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™เป€เบกเบทเปˆเบญเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™เบ‚เบญเบ‡เบ‚เบญเบšเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบ™เบตเป‰
เป€เบเบ™ (เป€เบ›เบฑเบ™เป€เบ›เบตเป€เบŠเบฑเบ™).

tracer-min-branch-ratio
tracer-min-branch-ratio-feedback
เบขเบธเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเป„เบ›เบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒเบ–เป‰เบฒเบ‚เบญเบšเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ•เปˆเปเบฒเบเบงเปˆเบฒเบ‚เบญเบšเป€เบ‚เบ”เบ™เบตเป‰.

เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš tracer-dynamic- coverage เบชเบญเบ‡เบ„เปˆเบฒเปเบกเปˆเบ™เบกเบตเบขเบนเปˆ, เบญเบฑเบ™เปœเบถเปˆเบ‡เบชเบณเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก
เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ„เปเบฒโ€‹เบ„เบถเบ”โ€‹เบ„เปเบฒโ€‹เป€เบซเบฑเบ™ profile เปเบฅเบฐโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบฑเบ‡โ€‹เบฅเบงเบกโ€‹เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹. เบกเบนเบ™เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก
เบ”เป‰เบงเบเบเบฒเบ™เบ•เบดเบŠเบปเบกเป‚เบ›เบฃเป„เบŸเบฅเปŒเบˆเบฐเบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เปเบšเบšเบญเบฐเบ™เบธเบฅเบฑเบ (เบชเบนเบ‡เบเบงเปˆเบฒ) เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰
เบ•เบดเบ”เบ•เบฒเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

max-cse-path-length
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆ CSE เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10.

max-cse-insns
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ CSE เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐ flushing. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™
1000โ€‹.

ggc-min-expand
GCC เปƒเบŠเป‰เบ•เบปเบงเป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰
เบเปเบฒเบ™เบปเบ”เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆ heap เบ‚เบญเบ‡เบœเบนเป‰เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ‚เบฐเบซเบเบฒเบเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบเบฑเบšเบเปเบฒ. Tuning เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเป„เบงเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก;
เบกเบฑเบ™เบšเปเปˆเบกเบตเบœเบปเบ™เบ•เปเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 30% + 70% * (RAM/1GB) เบ—เบตเปˆเบกเบตเบ‚เบญเบšเป€เบ—เบดเบ‡เบ‚เบญเบ‡ 100% เป€เบกเบทเปˆเบญ RAM >= 1GB.
เบ–เป‰เบฒ "getrlimit" เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰, เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡ "RAM" เปเบกเปˆเบ™เบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡ RAM เบ•เบปเบงเบˆเบดเบ‡เปเบฅเบฐ
"RLIMIT_DATA" เบซเบผเบท "RLIMIT_AS". เบ–เป‰เบฒ GCC เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ„เบดเบ”เป„เบฅเปˆ RAM เปƒเบ™เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡
เป€เบงเบ—เบต, เบ‚เบญเบšเป€เบ‚เบ”เบ•เปˆเปเบฒเบ‚เบญเบ‡ 30% เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ™เบตเป‰เปเบฅเบฐ ggc-เบ™เบฒเบ—เบต-
เบ‚เบฐเปœเบฒเบ”เปƒเบซเบเปˆ เป€เบ–เบดเบ‡เบชเบนเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบเบฑเบšเบฅเบงเบšเบฅเบงเบกเป€เบ•เบฑเบกเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบ—เบธเบเป†เป‚เบญเบเบฒเบ”. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เบŠเป‰เบฒเบ—เบตเปˆเบชเบธเบ”, เปเบ•เปˆเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ debugging.

ggc-min-heapsize
เบ‚เบฐเปœเบฒเบ”เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบเบญเบ‡เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเบฅเบปเบšเบเบงเบ™เบเบฒเบ™เป€เบเบฑเบš
เบ‚เบตเป‰เป€เบซเบเบทเป‰เบญ. เบเบฒเบ™เป€เบเบฑเบšเบเปเบฒเบ—เปเบฒเบญเบดเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบ heap เบ‚เบฐเบซเบเบฒเบเป‚เบ”เบ ggc-min-expand%
เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบ ggc-min-heapsize. เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเป„เบงเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เปเบฅเบฐ
เบšเปเปˆเบกเบตเบœเบปเบ™เบ•เปเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบ™เป‰เบญเบเบเบงเปˆเบฒเบ‚เบญเบ‡ RAM/8, RLIMIT_RSS, เบซเบผเบทเบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเบฎเบฑเบšเบ›เบฐเบเบฑเบ™.
เบงเปˆเบฒ RLIMIT_DATA เบซเบผเบท RLIMIT_AS เปเบกเปˆเบ™เบšเปเปˆเป€เบเบตเบ™, เปเบ•เปˆเบกเบตเบ‚เบญเบšเป€เบ‚เบ”เบ•เปˆเปเบฒเบเบงเปˆเบฒ 4096.
(เบชเบตเปˆ megabytes) เปเบฅเบฐเบ‚เบญเบšเป€เบ‚เบ”เป€เบ—เบดเบ‡เบ‚เบญเบ‡ 131072 (128 megabytes). เบ–เป‰เบฒ GCC เบšเปเปˆเบชเบฒเบกเบฒเบ”
เป€เบžเบทเปˆเบญเบ„เบดเบ”เป„เบฅเปˆ RAM เปƒเบ™เป€เบงเบ—เบตเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡, เบ‚เบญเบšเป€เบ‚เบ”เบ•เปˆเปเบฒเปเบกเปˆเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰
เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบเบ›เบฐเบชเบดเบ”เบ—เบดเบœเบปเบ™เบ›เบดเบ”เบเบฒเบ™เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญ. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบฅเบฐ ggc-min-expand เป€เบ–เบดเบ‡เบชเบนเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบเบฑเบšเบฅเบงเบšเบฅเบงเบกเป€เบ•เบฑเบกเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบ—เบธเบเป†
เป‚เบญเบเบฒเบ”.

max-reload-search-insns
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ„เบทเบ™เปƒเบซเบกเปˆเบ„เบงเบ™เบˆเบฐเป€เบšเบดเปˆเบ‡เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒ
เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™. เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบ, เป€เบฎเบฑเบ”เปƒเบซเป‰
เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป‚เบ”เบเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบ„เปˆเบฒเปเบกเปˆเบ™ 100.

max-cselib-memory-locations
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ cselib เบ„เบงเบ™เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡.
เบเบฒเบ™เป€เบžเบตเปˆเบกเบกเบนเบ™เบ„เปˆเบฒเบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบ, เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก
เป€เบžเบตเปˆเบกโ€‹เบ‚เบถเป‰เบ™โ€‹เป‚เบ”เบโ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบ”เบตเบโ€‹เบงเปˆเบฒโ€‹เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 500.

reorder-blocks-duplicate
reorder-blocks-duplicate-feedback
เปƒเบŠเป‰เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡ reordering เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบžเบทเปˆเบญเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเบˆเบฐเปƒเบŠเป‰เป‚เบ”เบเบšเปเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚
เบชเบฒเบ‚เบฒ เบซเบผเบทเบชเบณเป€เบ™เบปเบฒเบฅเบฐเบซเบฑเบ”เบขเบนเปˆเบ›เบฒเบเบ—เบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™. เบฅเบฐเบซเบฑเบ”เบ–เบทเบเบŠเป‰เปเบฒเบเบฑเบ™เป€เบกเบทเปˆเบญเบกเบฑเบ™
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ—เบตเปˆโ€‹เบ„เบฒเบ”โ€‹เบ„เบฐโ€‹เป€เบ™โ€‹เปเบกเปˆเบ™โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เป‰เบญเบโ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เบ„เปˆเบฒโ€‹เบ™เบตเป‰โ€‹เบ„เบนเบ™โ€‹เบ”เป‰เบงเบโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบเบฒเบ™โ€‹เบ„เบฒเบ”โ€‹เบ„เบฐโ€‹เป€เบ™โ€‹เบ‚เบญเบ‡โ€‹
เป‚เบ”เบ”เป‚เบ”เบเบšเปเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เปƒเบ™เบˆเบธเบ”เบฎเป‰เบญเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™.

เป„เบ”เป‰ reorder-block-duplicate-feedback เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ„เปเบฒเบ„เบถเบ”เบ„เปเบฒเป€เบซเบฑเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒ
เบกเบตเปƒเบซเป‰. เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™เบ„เปˆเบฒเบชเบนเบ‡เบเบงเปˆเบฒ reorder-block-duplicate เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ
เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบˆเบธเบ”เบฎเป‰เบญเบ™เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบเบงเปˆเบฒ.

max-sched-ready-insns
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบžเป‰เบญเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบญเบญเบโ€‹เบ—เบตเปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ„เบงเบ™โ€‹
เบžเบดโ€‹เบˆเบฒโ€‹เบฅเบฐโ€‹เบ™เบฒโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ„เบฑเป‰เบ‡โ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹. เบเบฒเบ™เป€เบžเบตเปˆเบกเบกเบนเบ™เบ„เปˆเบฒ
เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”เบซเบผเบฒเบ, เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป‚เบ”เบเบญเบฒเบ”เบˆเบฐ
เบœเบปเบ™โ€‹เบ›เบฐโ€‹เป‚เบซเบเบ”โ€‹เบžเบฝเบ‡โ€‹เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 100.

max-sched-region-blocks
เบˆเบณเบ™เบงเบ™เบ—เปˆเบญเบ™เป„เบกเป‰เบชเบนเบ‡เบชเบธเบ”เปƒเบ™เบžเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™ interblock
เบเบณเบ™เบปเบ”เป€เบงเบฅเบฒ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10.

max-pipeline-region-blocks
เบˆเปเบฒ เบ™เบงเบ™ เบชเบนเบ‡ เบชเบธเบ” เบ‚เบญเบ‡ เบ•เบฑเบ™ เปƒเบ™ เบžเบฒเบ เบžเบทเป‰เบ™ เบ—เบตเปˆ เบˆเบฐ เป„เบ”เป‰ เบฎเบฑเบš เบเบฒเบ™ เบžเบด เบˆเบฒ เบฅเบฐ เบ™เบฒ เบชเปเบฒ เบฅเบฑเบš เบเบฒเบ™ เบ—เปเปˆ เปƒเบ™
เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบฅเบทเบญเบ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 15.

max-sched-region-insns
เบˆเบณเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡ insns เปƒเบ™เบžเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบš interblock
เบเบณเบ™เบปเบ”เป€เบงเบฅเบฒ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 100.

max-pipeline-region-insns
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡ insns เปƒเบ™เบžเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบ—เปเปˆเปƒเบ™
เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบฅเบทเบญเบ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 200.

min-spec-prob
เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ•เปเปˆเบฒเบชเบธเบ” (เป€เบ›เบฑเบ™เป€เบ›เบตเป€เบŠเบฑเบ™) เบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบซเบฒเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบกเบฒเบ‚เบญเบ‡เบšเบฅเบฑเบญเบ interblock
เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 40.

max-sched-extend-regions-iters
เบˆเบณเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบŠเป‰เบณเบœเปˆเบฒเบ™ CFG เป€เบžเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเบžเบฒเบเบžเบทเป‰เบ™. เบ„เปˆเบฒเบ‚เบญเบ‡ 0 (the
default) เบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฒเบเบžเบทเป‰เบ™.

max-sched-insn-conflict-delay
เบ„เบงเบฒเบกเบฅเปˆเบฒเบŠเป‰เบฒเบ‚เบญเบ‡เบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡เบชเบนเบ‡เบชเบธเบ”เบชเปเบฒเบฅเบฑเบš insn เบ—เบตเปˆเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒ.
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 3.

sched-spec-prob-cutoff
เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเปเบฒเป€เบฅเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™ (เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบฎเป‰เบญเบ), เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒ
insns เบ–เบทเบเบเปเบฒเบ™เบปเบ”. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 40.

sched-spec-state-edge-prob-cutoff
เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ•เปเปˆเบฒเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบšเบ•เป‰เบญเบ‡เบกเบตเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบกเบฑเบ™
เบ‚เป‰เบฒเบกเบกเบฑเบ™. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10.

sched-mem-true-dep-cost
เป„เบฅเบเบฐเบซเปˆเบฒเบ‡เปœเป‰เบญเบเบชเบธเบ” (เปƒเบ™เบฎเบญเบšเบงเบฝเบ™ CPU) เบฅเบฐเบซเบงเปˆเบฒเบ‡เบฎเป‰เบฒเบ™ เปเบฅเบฐ เบเบฒเบ™เป‚เบซเบผเบ”เบ—เบตเปˆเบ•เบฑเป‰เบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบเปƒเบชเปˆเปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบ”เบฝเบงเบเบฑเบ™
เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 1.

selsched-max-lookhead
เบ‚เบฐเปœเบฒเบ”เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เปœเป‰เบฒเบ•เปˆเบฒเบ‡เปœเป‰เบฒเบ•เบฒเบ‚เบญเบ‡เบเบฒเบ™เบเบณเบ™เบปเบ”เป€เบงเบฅเบฒเป€เบฅเบทเบญเบ. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเป€เบฅเบดเบ
เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบŠเบญเบโ€‹เบซเบฒโ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบขเบนเปˆโ€‹. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 50.

selsched-max-sched-times
เบˆเบณเบ™เบงเบ™เบ„เบฑเป‰เบ‡เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบเบณเบ™เบปเบ”เป€เบงเบฅเบฒเบ„เบณเปเบ™เบฐเบ™เบณเปƒเบ™เป€เบงเบฅเบฒเป€เบฅเบทเบญเบ
เบเบณเบ™เบปเบ”เป€เบงเบฅเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบตเบ”เบˆเปเบฒเบเบฑเบ”เบเปˆเบฝเบงเบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™
เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ—เปเปˆ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 2.

selsched-max-insns-to-rename
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบš
เบเบฒเบ™เบ›เปˆเบฝเบ™เบŠเบทเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบฅเบทเบญเบ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 2.

sms-min-sc
เบ„เปˆเบฒเบ•เปเปˆเบฒเบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ™เบฑเบšเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ swing modulo เบชเป‰เบฒเบ‡. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 2.

max-last-value-rtl
เบ‚เบฐเบซเบ™เบฒเบ”เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบงเบฑเบ”เปเบ—เบเป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™ RTL เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™
เปƒเบ™เบ•เบปเบงเบœเบฐเบชเบปเบกเบœเบฐเบชเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ pseudo เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ—เบฐเบšเบฝเบ™เบ™เบฑเป‰เบ™. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10000.

integer-share-limit
เบˆเปเบฒเบ™เบงเบ™เบ„เบปเบ‡เบ—เบตเปˆเบ™เป‰เบญเบเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบฎเปˆเบงเบกเบเบฑเบ™, เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบกเบฑเบ™. เบ™เบตเป‰เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™
เบˆเปเบฒเบ™เบงเบ™เบ„เบปเบ‡เบ—เบตเปˆ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 256.

ssp-buffer-size
เบ‚เบฐเปœเบฒเบ”เบ•เปเบฒเปˆเบชเบธเบ”เบ‚เบญเบ‡ buffers (ie arrays) เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ stack smashing
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ -fstack เบเบฒเบ™โ€‹เบ›เป‰เบญเบ‡โ€‹เบเบฑเบ™โ€‹ เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ™เบตเป‰เบเปˆเบญเบ™ Ubuntu 10.10 เปเบกเปˆเบ™ "8". เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เปเบกเปˆเบ™ "4", เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบเบฒเบ™
เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เป‰เบญเบ‡เบเบฑเบ™เป‚เบ”เบเบ•เบปเบงเบ›เป‰เบญเบ‡เบเบฑเบ™ stack.

min-size-for-stack-sharing
เบ‚เบฐเบซเบ™เบฒเบ”เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™ stack slot เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเบกเบต
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 32.

max-jump-thread-duplication-stmts
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบ–เบฐโ€‹เปเบซเบผเบ‡โ€‹เบเบฒเบ™โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบขเบนเปˆโ€‹เปƒเบ™ block เบ—เบตเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบŠโ€‹เป‰โ€‹เปเบฒโ€‹เบเบฑเบ™โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆ
เบเบฐเบ—เบนเป‰เบเบฐเป‚เบ”เบ”.

max-fields-for-field-sensitive
เบˆเบณเบ™เบงเบ™เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบชเบนเบ‡เบชเบธเบ”เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบดเปˆเบ™เบ›เบปเบงเปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบฅเบฐเบญเบฝเบ”เบญเปˆเบญเบ™เบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡
เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ•เบปเบงเบŠเบตเป‰. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบชเบนเบ™เบชเบณเบฅเบฑเบš -O0 เปเบฅเบฐ -O1, เปเบฅเบฐ 100 เบชเบณ เบฅเบฑเบš -เบญเบช, -O2, เปเบฅเบฐ
-O3.

prefetch-latency
เบ„เบฒเบ”เบ„เบฐเป€เบ™เบเปˆเบฝเบงเบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐ prefetch
เบชเปเบฒเป€เบฅเบฑเบ”. เป„เบฅเบเบฐเบ—เบฒเบ‡เบ—เบตเปˆเป€เบญเบปเบฒเป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒเปเบกเปˆเบ™เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบเบฑเบšเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ™เบตเป‰.
เบเบฒเบ™เป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบซเบ™เป‰เบญเบเบฅเบปเบ‡เบเปˆเบญเบ™ (เป€เบšเบดเปˆเบ‡
เบžเป‰เบญเบกเป†เบเบฑเบ™-prefetches).

เบžเป‰เบญเบกเป†เบเบฑเบ™-prefetches
เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡ prefetches เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™.

l1-cache-line-size
เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ cache line เปƒเบ™ L1 cache, เปƒเบ™ bytes.

l1-cache-size
เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ L1 cache, เปƒเบ™เบเบดเป‚เบฅเป„เบš.

l2-cache-size
เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ L2 cache, เปƒเบ™เบเบดเป‚เบฅเป„เบš.

min-insn-to-prefetch-ratio
เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ prefetches
เป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเบฒเบกเบฒเบ” prefetching เปƒเบ™ loop เป„เบ”เป‰.

prefetch-min-insn-to-mem-เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™
เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ
เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เบฅเปˆเบงเบ‡เปœเป‰เบฒเปƒเบ™ loop.

use-canonical-types
เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™ compiler เบ„เบงเบ™เปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบ›เบฐเป€เบžเบ” "canonical". เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ™เบตเป‰
เบ„เบงเบ™เป€เบ›เบฑเบ™ 1 เบชเบฐเป€เปเบต, เป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰เบเบปเบ™เป„เบเบžเบฒเบเปƒเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบงเปˆเบฒเปƒเบ™เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš
เบ›เบฐเป€เบžเบ”เปƒเบ™ C++ เปเบฅเบฐ Objective-C++. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒเปเบกเบ‡เป„เบกเป‰เปƒเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเป€เบžเบ” canonical เปเบกเปˆเบ™
เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰เป€เบ›เบฑเบ™ 0 เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบ›เบฐเป€เบžเบ” canonical.

switch-conversion-max-branch-ratio
เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ‚เบญเบ‡ Switch เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบชเป‰เบฒเบ‡เบญเบฒเป€เบฃเบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒ
switch-conversion-max-branch-ratio เป€เบ—เบปเปˆเบฒเบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบชเบฒเบ‚เบฒเปƒเบ™เบชเบฐเบซเบผเบฑเบš.

max-partial-antic-length
เบ„เบงเบฒเบกเบเบฒเบงเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบŠเบธเบ”เป€เบเบปเปˆเบฒเปเบเปˆเบšเบฒเบ‡เบชเปˆเบงเบ™เบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบšเบฒเบ‡เบชเปˆเบงเบ™
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™ (-ftre-pre) เป€เบกเบทเปˆเบญ optimizing เบขเบนเปˆ -O3 เปเบฅเบฐเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡.
เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡, เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เบŠเป‰เปเบฒเบŠเป‰เบญเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบฒเบกเบฒเบ”เปเบฅเปˆเบ™เบซเบ™เบตเป„เบ”เป‰, เบเบฒเบ™เปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบš
เป€เบ„เบทเปˆเบญเบ‡. เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เบŠเบธเบ”เบ—เบตเปˆเบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆ,
เป€เบŠเบดเปˆเบ‡เบ›เป‰เบญเบ‡เบเบฑเบ™เบžเบถเบ”เบ•เบดเบเบณเบเบฒเบ™เปœเบต. เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบ‚เบญเบ‡ 0 เบชเปเบฒเบฅเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบ„เบงเบฒเบกเบเบฒเบงเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบšเปเปˆเบˆเปเบฒเบเบฑเบ”.

sccvn-max-scc-size
เบ‚เบฐเปœเบฒเบ”เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡ (SCC) เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™ SCCVN. เบ–เป‰เบฒ
เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ™เบตเป‰เบ–เบทเบเบ•เบต, เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡ SCCVN เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปเบฅเบฐ
เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบถเป‰เบ™เบขเบนเปˆเบเบฑเบšเบกเบฑเบ™เบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™. เบ‚เบฐเปœเบฒเบ” SCC เบชเบนเบ‡เบชเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™
10000โ€‹.

sccvn-max-alias-queries-per-access
เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก alias-oracle เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบŠเบญเบเบซเบฒเบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™
เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบฎเป‰เบฒเบ™เบ„เป‰เบฒ. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ‚เปเป‰โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบกเบปเบ™โ€‹เบ•เบตโ€‹เบเบฒเบ™โ€‹เบŠเบญเบโ€‹เบซเบฒโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบเบปเบโ€‹เป€เบฅเบตเบโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹เบซเบผเบทโ€‹
เบฎเป‰เบฒเบ™เบ„เป‰เบฒเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบŠเปเป‰เบฒเบŠเป‰เบญเบ™. เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเปเบกเปˆเบ™ algorithm
เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบฎเป‰เบฒเบ™โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เป€เบชเบฑเป‰เบ™โ€‹เบ—เบฒเบ‡โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹.
เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบชเบนเบ‡เบชเบธเบ”เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เปเบกเปˆเบ™ 1000.

ira-max-loops-num
IRA เปƒเบŠเป‰เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบžเบฒเบเบžเบทเป‰เบ™เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ–เป‰เบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบกเบตเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™
loops เบซเบผเบฒเบเบเบงเปˆเบฒเบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเปƒเบซเป‰เป‚เบ”เบเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰, เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡
loops เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เป€เบ›เบฑเบ™เบžเบฒเบเบžเบทเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบžเบฒเบเบžเบทเป‰เบ™.
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบกเปˆเบ™ 100.

ira-max-conflict-table-size
เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ IRA เปƒเบŠเป‰ algorithm เบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™เป€เบžเบทเปˆเบญเบšเบตเบšเบญเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบ‚เบฑเบ”เปเบเป‰เบ‡,
เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ. เบ–เป‰เบฒ
เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบญเบฒเบ”เบˆเบฐเบซเบผเบฒเบเบเบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ™ MB เบ—เบตเปˆเบกเบญเบšเปƒเบซเป‰เป‚เบ”เบเบ™เบตเป‰
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต, เบœเบนเป‰เบˆเบฑเบ”เบชเบฑเบ™เบ—เบฐเบšเบฝเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เป„เบงเบเบงเปˆเบฒ, เบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบฅเบฐเบ•เปˆเปเบฒเบเบงเปˆเบฒ.
เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ—เบตเปˆเบšเปเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡ pseudo-register.
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบกเปˆเบ™ 2000.

ira-loop-reserved-regs
IRA เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฐเป€เบกเบตเบ™เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบฒเบเบ‚เบถเป‰เบ™เปƒเบ™ loops เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ
เป€เบžเบทเปˆเบญเบเป‰เบฒเบ loop invariant (เป€เบšเบดเปˆเบ‡ -O3). เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบกเบตเบชเบฐเบซเบ‡เบงเบ™เป„เบงเป‰เบชเปเบฒเบฅเบฑเบš
เบšเบฒเบ‡เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบญเบทเปˆเบ™เปเบกเปˆเบ™เปƒเบซเป‰เป‚เบ”เบเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบกเปˆเบ™ 2, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด
เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ. เบกเบนเบ™เบ„เปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ.

loop-invariant-max-bbs-in-loop
Loop invariant motion เบชเบฒเบกเบฒเบ”เบกเบตเบฅเบฒเบ„เบฒเปเบžเบ‡เบซเบผเบฒเบ, เบ—เบฑเบ‡เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเปƒเบ™
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบชเบฑเบ‡โ€‹เบฅเบงเบกโ€‹เป€เบงโ€‹เบฅเบฒโ€‹, เบกเบต loops เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปƒเบซเบเปˆโ€‹เบซเบผเบฒเบโ€‹. Loops เบเบฑเบšเบซเบผเบฒเบ
เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบเปˆเบงเบฒเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบˆเบฐเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปเบšเบš loop invariant
เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบกเปˆเบ™ 1000 เบชเปเบฒเบฅเบฑเบš -O1 เปเบฅเบฐ 10000
เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ -O2 เปเบฅเบฐเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡.

loop-max-datarefs-for-datadeps
เบเบฒเบ™เบชเป‰เบฒเบ‡ dapendencies เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบฅเบฒเบ„เบฒเปเบžเบ‡เบชเปเบฒเบฅเบฑเบš loops เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ. เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰
เบˆเปเบฒเบเบฑเบ”เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ loops เบ—เบตเปˆเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™
เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป€เบญเบทเปˆเบญเบเบญเบตเบ‡. loops เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบกเบตเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰
เบเบฒเบ™เบ‚เบทเป‰เบ™เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ loop. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 1000.

max-vartrack-size
เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ hash เป€เบžเบทเปˆเบญเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡
เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป€เบเบตเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบ•เบปเบงโ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบ—เบตเปˆโ€‹
เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบฑเป‰เบ™เบ–เบทเบเบฅเบญเบ‡เปƒเบซเบกเปˆเป‚เบ”เบเบšเปเปˆเบกเบตเบกเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบ
เบเบฒเบ™เป€เบญเบปเบฒ inss เบ”เบตเบšเบฑเบเบ—เบฑเบ‡เปเบปเบ”เบญเบญเบเบˆเบฒเบเบŸเบฑเบ‡เบŠเบฑเบ™. เบ–เป‰เบฒเป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเบกเบต
debug insns, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก var เปเบกเปˆเบ™เบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™.
เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป€เบ›เบฑเบ™เบชเบนเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบšเปเปˆเบˆเปเบฒเบเบฑเบ”.

max-vartrack-expr-depth
เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบฅเบฐเบ”เบฑเบš recursion เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเปเบœเบ™เบ—เบตเปˆเบŠเบทเปˆเบ•เบปเบงเปเบ›เบซเบผเบท
debug temporaries เบเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ„เบธเบ™เบ„เปˆเบฒ. เบ™เบตเป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบ„เป‰เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบ‚เปเป‰เบกเบนเบ™เบ”เบตเบšเบฑเบเบ„เบปเบšเบ–เป‰เบงเบ™. เบ–เป‰เบฒเบญเบฑเบ™เบ™เบตเป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เป„เบงเป‰เบ•เปเปˆเบฒเป€เบเบตเบ™เป„เบ›, เบ„เปˆเบฒเบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบญเบญเบเปเบกเปˆเบ™
เบกเบตเบขเบนเปˆเปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เปƒเบ™เบ‚เปเป‰เบกเบนเบ™ debug เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰;
เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบชเบนเบ‡เบเบงเปˆเบฒเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เบŠเบญเบเบซเบฒเบเบฒเบ™เบ”เบตเบšเบฑเบเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ, เปเบ•เปˆเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป€เบงเบฅเบฒเปเบฅเบฐเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบญเบฒเบ”เบˆเบฐเป€เบ•เบตเบšเป‚เบ•. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 12.

min-nondebug-insn-uid
เปƒเบŠเป‰ uids เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบš insns nondebug. เบ‚เบญเบšเป€เบ‚เบ”เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบกเปˆเบ™เบชเบฐเบซเบ‡เบงเบ™เป„เบงเป‰เบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบš debug insns เบชเป‰เบฒเบ‡เป‚เบ”เบ
-fvar-tracking-assignments, เปเบ•เปˆ debug insns เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบš (เบšเปเปˆเบ—เบฑเบšเบŠเป‰เบญเบ™เบเบฑเบ™) uids เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡
เบกเบฑเบ™เบ–เป‰เบฒเบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบชเบฐเบซเบ‡เบงเบ™เป„เบงเป‰เบซเบกเบปเบ”เปเบฅเป‰เบง.

ipa-sra-ptr-growth-factor
IPA-SRA เปเบ—เบ™เบ—เบตเปˆเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ”เป‰เบงเบเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เปƒเบซเบกเปˆเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เป€เบกเบทเปˆเบญเบ‚เบฐเปœเบฒเบ”เบชเบฐเบชเบปเบกเบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เปœเป‰เบญเบเบเบงเปˆเบฒ เบซเบผเบทเป€เบ—เบปเปˆเบฒเบเบฑเบš ipa-sra-ptr-growth-factor เป€เบงเบฅเบฒ
เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบ•เบปเบงเบŠเบตเป‰เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš.

tm-max-aggregate-size
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบชเปเบฒเป€เบ™เบปเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ› thread-local เปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰
เบฅเบฐเบšเบธเบ‚เบฐเปœเบฒเบ”เปƒเบ™เป„เบšเบ•เปŒ เบซเบผเบฑเบ‡เบˆเบฒเบเบ•เบปเบงเปเบ›เบ•เปˆเบฒเบ‡เป†เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เบ”เป‰เบงเบเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ
เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบšเบšเบฑเบ™เบ—เบถเบ / เบŸเบทเป‰เบ™เบŸเบนเบ„เบนเปˆเบฅเปเบฒเบ”เบฑเบšเบฅเบฐเบซเบฑเบ”. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบ™เบณเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ™เบณเปƒเบŠเป‰ -fgnu-tm.

graphite-max-nb-scop-params
เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบœเบปเบ™เบเบฐเบ—เบปเบš exponential เปƒเบ™เบงเบปเบ‡ Graphite transforms, เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปƒเบ™เบชเปˆเบงเบ™เบ„เบงเบšเบ„เบธเบกเบ„เบปเบ‡เบ—เบตเปˆ (SCoP) เบ–เบทเบเบœเบนเบเบกเบฑเบ”. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10
เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™. เบ•เบปเบงเปเบ›เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบ„เปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก เปเบฅเบฐเบเบณเบ™เบปเบ”
เบ™เบญเบ SCoP เปเบกเปˆเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡ SCoP.

graphite-max-bbs-per-function
เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบœเบปเบ™เบเบฐเบ—เบปเบš exponential เปƒเบ™เบเบฒเบ™เบเบงเบ”เบซเบฒ SCoPs, เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ
เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป‚เบ”เบ Graphite เปเบกเปˆเบ™ bounded. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 100 เบ•เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™.

loop-block-tile-size
Loop blocking เบซเบผเบท strip mining transforms, เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เบ”เป‰เบงเบ -floop-block or
-floop-strip-mine, strip mine เปเบ•เปˆเบฅเบฐ loop เปƒเบ™ loop เบฎเบฑเบ‡เป‚เบ”เบเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡
เบŠเป‰เบณ. เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เปเบ–เบšเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰ loop-block-tile-size
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 51 เบŠเป‰เบณ.

ipa-cp-value-list-size
IPA-CP เบžเบฐเบเบฒเบเบฒเบกเบ•เบดเบ”เบ•เบฒเบกเบ„เปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบฑเบ‡เปเบปเบ” เปเบฅเบฐเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ”เปœเบถเปˆเบ‡
เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบžเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเบžเบงเบเบกเบฑเบ™เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ” devirtualization. ipa-cp-value-
เบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฒเบเบเบฒเบ™ เปเบกเปˆเบ™เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เปˆเบฒเปเบฅเบฐเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบกเบฑเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ•เปเปˆเบซเบ™เบถเปˆเบ‡เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™.

ipa-cp-eval-threshold
IPA-CP เบ„เบดเบ”เป„เบฅเปˆเบ„เบฐเปเบ™เบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ‚เบญเบ‡ cloning heuristics เบเปเบฒเป„เบฅเปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”
เป‚เบญเบเบฒเบ” cloning เบ—เบตเปˆเบกเบตเบ„เบฐเปเบ™เบ™เป€เบเบตเบ™ ipa-cp-eval-threshold.

ipa-max-agg-เบฅเบฒเบเบเบฒเบ™
IPA-CP เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ—เบธเบเปเบฒเบ‚เบญเบ‡เบ„เปˆเบฒ scalar เบ—เบตเปˆเบœเปˆเบฒเบ™เปƒเบ™
เบฅเบงเบก. ipa-max-agg-เบฅเบฒเบเบเบฒเบ™ เบ„เบงเบšเบ„เบธเบกเบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เปˆเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ•เปเปˆเบซเบ™เบถเปˆเบ‡
เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต.

ipa-cp-loop-hint-bonus
เป€เบกเบทเปˆเบญ IPA-CP เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบœเบนเป‰เบชเบฐเบซเบกเบฑเบ cloning เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบˆเปเบฒเบ™เบงเบ™
iterations เบ‚เบญเบ‡ loop เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบ, เบกเบฑเบ™เป€เบžเบตเปˆเบกเป‚เบšเบ™เบฑเบ”เบ‚เบญเบ‡ ipa-cp-loop-hint-bonus เป‚เบšเบ™เบฑเบ”เปƒเบซเป‰เบเบฑเบš
เบ„เบฐเปเบ™เบ™เบœเบปเบ™เบเบณเป„เบฅเบ‚เบญเบ‡เบœเบนเป‰เบชเบฐเปเบฑเบ.

ipa-cp-array-index-hint-bonus
เป€เบกเบทเปˆเบญ IPA-CP เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบœเบนเป‰เบชเบฐเบซเบกเบฑเบ cloning เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ”เบฑเบ”เบชเบฐเบ™เบตเบ‚เบญเบ‡เบญเบฒเป€เบฃ
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบ, เบกเบฑเบ™เป€เบžเบตเปˆเบกเป‚เบšเบ™เบฑเบ”เบ‚เบญเบ‡ ipa-cp-array-index-hint-bonus เป‚เบšเบ™เบฑเบ”เปƒเบซเป‰เบเบฑเบš
เบ„เบฐเปเบ™เบ™เบœเบปเบ™เบเบณเป„เบฅเบ‚เบญเบ‡เบœเบนเป‰เบชเบฐเปเบฑเบ.

lto-partitions
เบฅเบฐเบšเบธเบˆเปเบฒเบ™เบงเบ™เบžเบฒเบ—เบดเบŠเบฑเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบœเบฐเบฅเบดเบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก WHOPR. เป„เบ”เป‰
เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบ„เบงเบ™เป€เบเบตเบ™เบˆเปเบฒเบ™เบงเบ™ CPU เบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 32.

lto-minpartition
เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เปœเป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบชเบณเบฅเบฑเบš WHOPR (เบ•เบฒเบกเบ„เบณเปเบ™เบฐเบ™เบณเบ—เบตเปˆเบ„เบฒเบ”เบ„เบฐเป€เบ™). เบ™เบตเป‰เบ›เป‰เบญเบ‡เบเบฑเบ™
เบ„เปˆเบฒโ€‹เปƒเบŠเป‰โ€‹เบˆเปˆเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เปเบเบโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เป‰เบญเบโ€‹เบซเบผเบฒเบโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบซเบผเบฒเบโ€‹เป€เบเบตเบ™โ€‹เป„เบ›โ€‹.

cxx-max-namespaces-for-diagnostic-help
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡ namespaces เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ›เบถเบโ€‹เบชเบฒโ€‹เบซเบฒโ€‹เบฅเบทโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบŠเบญเบโ€‹เบซเบฒโ€‹เบŠเบทเปˆ C++โ€‹
เบฅเบปเป‰เบกเป€เบซเบฅเบงเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบฅเบฐเบšเบธ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 1000.

sink-frequency-threshold
เบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡ (เป€เบ›เบฑเบ™เป€เบ›เบตเป€เบŠเบฑเบ™) เบ‚เบญเบ‡เบ•เบฑเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ
เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบ•เบฑเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบˆเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบˆเบปเบกเบฅเบปเบ‡เบ‚เบญเบ‡ a
เบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™. เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เบซเบผเบฒเบเบ‚เบทเป‰เบ™. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 75. เบเบฒเบ™เบ›เบฑเบšเบ„เปˆเบฒเบ—เบฒเบ‡เบšเบงเบเป€เบฅเบฑเบเบ™เป‰เบญเบเปเบกเปˆเบ™เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบกเบต
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบเป‰เบญเบ™เบงเปˆเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบกเบตเบเปเบฒเป„เบฅเบซเบผเบฒเบเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบปเบกเบฅเบปเบ‡.

max-stores-to-sink
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ„เบนเปˆโ€‹เบฎเป‰เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เป€เบ‡เบทเปˆเบญเบ™โ€‹เป„เบ‚โ€‹เบ—เบตเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ–เบทเบ sunkโ€‹. เบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™ 0 เบ–เป‰เบฒ
เบ—เบฑเบ‡ vectorization (-ftree-vectorize) เบซเบผเบท if-conversion (-ftree-loop-if-convert)
เบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 2.

allow-load-data-races
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”. เบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™ 1 เป€เบžเบทเปˆเบญเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰,
เบ–เป‰เบฒ เบšเปเปˆ เบ”เบฑเปˆเบ‡ เบ™เบฑเป‰เบ™ เป€เบ›เบฑเบ™ 0. เบ—เบฒเบ‡ เป€เบฅเบทเบญเบ เบ™เบตเป‰ เปเบกเปˆเบ™ เป€เบ›เบตเบ” เปƒเบŠเป‰ เบ‡เบฒเบ™ เป‚เบ”เบ เป„เบงเป‰ เปƒเบ™ เบ•เบญเบ™ เบ•เบปเป‰เบ™ เป€เบงเบฑเป‰เบ™ เป€เบชเบ เปเบ•เปˆ implicitly เบเปเบฒ เบ™เบปเบ” เป‚เบ”เบ
-fmemory-model= เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™-เป€เบŠเบทเป‰เบญเบŠเบฒเบ”
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆเปƒเบ™เบฎเป‰เบฒเบ™เบ„เป‰เบฒ. เบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™ 1 เป€เบžเบทเปˆเบญเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰,
เบ–เป‰เบฒ เบšเปเปˆ เบ”เบฑเปˆเบ‡ เบ™เบฑเป‰เบ™ เป€เบ›เบฑเบ™ 0. เบ—เบฒเบ‡ เป€เบฅเบทเบญเบ เบ™เบตเป‰ เปเบกเปˆเบ™ เป€เบ›เบตเบ” เปƒเบŠเป‰ เบ‡เบฒเบ™ เป‚เบ”เบ เป„เบงเป‰ เปƒเบ™ เบ•เบญเบ™ เบ•เบปเป‰เบ™ เป€เบงเบฑเป‰เบ™ เป€เบชเบ เปเบ•เปˆ implicitly เบเปเบฒ เบ™เบปเบ” เป‚เบ”เบ
-fmemory-model= เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

allow-packed-load-data-races
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเบšเบฑเบ™เบˆเบธ. เบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™ 1 เบซเบฒ
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰, เบ–เป‰เบฒโ€‹เบšเปเปˆโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เป€เบ›เบฑเบ™ 0. เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบ›เบตเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป‚เบ”เบโ€‹เบ„เปˆเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เป€เบงเบฑเป‰เบ™โ€‹เป€เบชเบโ€‹เปเบ•เปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ” implicitly เป‚เบ”เบ
เป„เบ”เป‰ -fmemory-model= เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

allow-packed-store-data-races
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบ™เบฐเบ™เบณเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเปเปˆเบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเบšเบฑเบ™เบˆเบธ. เบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™ 1 เบซเบฒ
เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰, เบ–เป‰เบฒโ€‹เบšเปเปˆโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เป€เบ›เบฑเบ™ 0. เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบ›เบตเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป‚เบ”เบโ€‹เบ„เปˆเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เป€เบงเบฑเป‰เบ™โ€‹เป€เบชเบโ€‹เปเบ•เปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ” implicitly เป‚เบ”เบ
เป„เบ”เป‰ -fmemory-model= เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

case-values-threshold
เบˆเปเบฒเบ™เบงเบ™เบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบ„เปˆเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป‚เบ”เบ”
เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เบ‚เบญเบ‡เบชเบฒเบ‚เบฒเบ—เบตเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚. เบ–เป‰เบฒเบ„เปˆเบฒเปเบกเปˆเบ™ 0, เปƒเบŠเป‰เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบš
เป€เบ„เบทเปˆเบญเบ‡. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 0.

tree-reassoc-width
เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰ reassociated.
เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰ overrides heuristics เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบšเปเปˆเบกเบต
เบ„เปˆเบฒเบชเบนเบ™.

sched-pressure-algorithm
เป€เบฅเบทเบญเบเบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเบ‚เบญเบ‡ -fsched-เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™. เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ 1
เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปเบฅเบฐเป€เบ›เบฑเบ™เปเบ™เบงเป‚เบ™เป‰เบกเบ—เบตเปˆเบˆเบฐเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบˆเบฒเบ
เบ–เบทเบเบชเบฑเปˆเบ‡เบ„เบทเบ™. Algorithm 2 เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเป€เบžเบทเปˆเบญเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบกเบฅเบฐเบซเบงเปˆเบฒเบ‡
เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบฅเบฑเบเบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบ algorithm 1 เปเบฅเบฐเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบฎเบธเบเบฎเบฒเบ™
เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบกเบฑเบ™เบ‚เบทเป‰เบ™เบเบฑเบšเบซเบผเบฒเบเบ‚เบทเป‰เบ™เบเบฑเบšเบเบฒเบ™เบกเบต
เป€เบญเบเบฐเบชเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐเบซเป‰เบญเบ‡เบฎเบฝเบ™เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เป€เบšเบดเปˆเบ‡ haifa-sched.c
เปƒเบ™เปเบซเบผเปˆเบ‡ GCC เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ.

max-slsr-cand-scan
เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ—เบตเปˆเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบŠเบญเบเบซเบฒ
เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เป€เบชเบฑเป‰เบ™เบŠเบทเปˆเปƒเบซเบกเปˆ.

asan-เบ—เบปเปˆเบงเป‚เบฅเบ
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบฅเบปเป‰เบ™เบšเบฑเบšเป€เบŸเบตเบชเบณเบฅเบฑเบšเบงเบฑเบ”เบ–เบธเบ—เบปเปˆเบงเป‚เบฅเบ. เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ -fsanitize=เบ—เบตเปˆเบขเบนเปˆ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบ—เบปเปˆเบงเป‚เบฅเบ
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบงเบฑเบ”เบ–เบธ --param asan-globals=0.

asan-stack
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบฅเบปเป‰เบ™เบšเบฑเบšเป€เบŸเบตเบชเปเบฒเบฅเบฑเบšเบงเบฑเบ”เบ–เบธ stack. เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเปƒเบŠเป‰-fsanitize=เบ—เบตเปˆเบขเบนเปˆ. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ stack
--param asan-stack=0 เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

asan-instrument-reads
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบฅเบปเป‰เบ™เบšเบฑเบšเป€เบŸเบตเบชเบณเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณ. เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเปƒเบŠเป‰ -fsanitize=เบ—เบตเปˆเบขเบนเปˆ. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เบญเปˆเบฒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ
เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ›เบปเบโ€‹เบ›เบฑเบโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹ --param asan-instrument-reads=0.

asan-instrument-writes
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบฅเบปเป‰เบ™เบšเบฑเบšเป€เบŸเบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ. เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเปƒเบŠเป‰ -fsanitize=เบ—เบตเปˆเบขเบนเปˆ. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ
เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ›เบปเบโ€‹เบ›เบฑเบโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹ --param asan-instrument-writes=0 เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

asan-memintrin
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เบ•เบปเบง. เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเปƒเบŠเป‰ -fsanitize=เบ—เบตเปˆเบขเบนเปˆ. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เปƒเบ™เบ•เบปเบง
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ --param asan-memintrin=0.

asan-use-after-return
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบซเบฒเบเบฒเบ™เปƒเบŠเป‰เบซเบผเบฑเบ‡เบเบฒเบ™เบเบฑเบšเบ„เบทเบ™เบกเบฒ. เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเปƒเบŠเป‰ -fsanitize=เบ—เบตเปˆเบขเบนเปˆ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบซเบผเบฑเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™
เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹ --param asan-use-after-return=0.

asan-instrumentation-with-call-threshold
เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบซเบ™เปˆเบงเบโ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปเบกเปˆเบ™โ€‹เบซเบผเบฒเบโ€‹เบเบงเปˆเบฒโ€‹เบซเบผเบทโ€‹เป€เบ—เบปเปˆเบฒโ€‹เบ—เบฝเบกโ€‹เบเบฑเบšโ€‹
เป€เบšเบตเป‚เบ—เบ™เบตเป‰, เปƒเบŠเป‰เบเบฒเบ™เป‚เบ—เบเบฑเบšเปเบ—เบ™เบเบฒเบ™เบเบงเบ”เบเบฒเปƒเบ™เปเบ–เบง. เป€เบŠเบฑเปˆเบ™: เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบฅเบฐเบซเบฑเบ” inline
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ --param asan-instrumentation-with-call-threshold=0.

max-fsm-thread-path-insns
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเปเบฒโ€‹เป€เบ™เบปเบฒโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบŠโ€‹เป‰โ€‹เปเบฒโ€‹เบเบฑเบ™ blocks เปƒเบ™โ€‹เบชเบฐโ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เบเบฒเบ™โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹
เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฐเบ—เบนเป‰เบเบฐเป‚เบ”เบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 100.

max-fsm-thread-length
เบˆเบณเบ™เบงเบ™เบ—เปˆเบญเบ™เป„เบกเป‰เบ‚เบฑเป‰เบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเบนเบ‡เบชเบธเบ”เปƒเบ™เบฅเบฑเบ”เบˆเบณเบเบฑเบ” automaton jump thread. เป„เบ”เป‰
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 10.

max-fsm-thread-paths
เบˆเบณเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฐเบ—เบนเป‰เบเบฐเป‚เบ”เบ”เปƒเปเปˆเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบšเบšเบเบณเบ™เบปเบ”.
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 50.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก เป„เบ”เป‰ เป‚เบ›เป€เบˆเบฑเบเป€เบ•เบตเป‰
เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹เบ„เบงเบšโ€‹เบ„เบธเบก C preprocessor, เป€เบŠเบดเปˆเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เปƒเบ™โ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เป„เบŸเบฅโ€‹เปŒ C source เบเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบˆเบดเบ‡
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ -E เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เป€เบฎเบฑเบ”เป„เบ”เป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™. เบšเบฒเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบžเบฝเบ‡เปเบ•เปˆเบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบš -E เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบปเบ™เบœเบฐเบฅเบดเบ” preprocessor เป€เบ›เบฑเบ™
เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ•เบปเบงเบˆเบดเบ‡.

-Wpโ€‹,เบ—เบฒเบ‡เป€เบฅเบทเบญเบ
เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ -Wpโ€‹,เบ—เบฒเบ‡เป€เบฅเบทเบญเบ เป€เบžเบทเปˆเบญเบ‚เป‰เบฒเบกเป„เบ”เป€เบงเบต compiler เปเบฅเบฐเบœเปˆเบฒเบ™ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ เป‚เบ”เบโ€‹เบเบปเบ‡โ€‹เป‚เบ”เบโ€‹เบœเปˆเบฒเบ™โ€‹เบเบฒเบ™โ€‹
เบเบฑเบš preprocessor เป„เบ”เป‰. เบ–เป‰เบฒ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ เบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”, เบกเบฑเบ™เบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบซเบผเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบขเบนเปˆเบ—เบตเปˆ
เป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”. เบขเปˆเบฒเบ‡โ€‹เปƒเบ”โ€‹เบเปโ€‹เบ•เบฒเบกโ€‹, เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบฒเบโ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ”เบฑเบ”โ€‹เปเบเป‰โ€‹, เบเบฒเบ™โ€‹เปเบ›โ€‹เบžเบฒโ€‹เบชเบฒโ€‹เบซเบผเบทโ€‹เบเบฒเบ™โ€‹เบ•เบตโ€‹เบฅเบฒโ€‹เบ„เบฒโ€‹เป‚เบ”เบโ€‹
เป„เบ”เป€เบงเบต compiler เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ preprocessor, เปเบฅเบฐ -Wp เบšเบฑเบ‡เบ„เบฑเบš bypasses
เป„เบฅเบเบฐเบ™เบตเป‰. เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป‚เบ”เบเบเบปเบ‡เบ‚เบญเบ‡ preprocessor เปเบกเปˆเบ™ undocumented เปเบฅเบฐเบ‚เบถเป‰เบ™เบเบฑเบš
เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เปˆเบฒเบ™เบ„เบงเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เปƒเบŠเป‰ -Wp เปเบฅเบฐเปƒเบซเป‰เบ„เบปเบ™เบ‚เบฑเบšเบฅเบปเบ”เบˆเบฑเบ”เบเบฒเบ™
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบ—เบ™.

- เป‚เบ›เป€เบŠเบ”เป€เบŠเบต Xpre เบ—เบฒเบ‡เป€เบฅเบทเบญเบ
เบœเปˆเบฒเบ™ เบ—เบฒเบ‡เป€เบฅเบทเบญเบ เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบš preprocessor เป„เบ”เป‰. เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ™เบตเป‰โ€‹เป€เบžเบทเปˆเบญโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบš -
เบ•เบปเบงเป€เบฅเบทเบญเบเบชเบฐเป€เบžเบฒเบฐเบ•เบปเบงเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™เบ—เบตเปˆ GCC เบšเปเปˆเบฎเบฑเบšเบฎเบนเป‰.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบœเปˆเบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเปƒเบŠเป‰เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ - เป‚เบ›เป€เบŠเบ”เป€เบŠเบต Xpre
เบชเบญเบ‡เบ„เบฑเป‰เบ‡, เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบฅเบฐเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡.

-no-integrated-cpp
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ preprocessing เป€เบ›เบฑเบ™ pass เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบฅเบงเบšเบฅเบงเบก. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, GCC เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™
preprocessing เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบฅเบงเบกเบ‚เบญเบ‡ input tokenization เปเบฅเบฐ parsing. เบ–เป‰เบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰
เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰, เบžเบฒเบชเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก (cc1, cc1plus, เบซเบผเบท cc1obj เบชเปเบฒเบฅเบฑเบš C, C++,
เปเบฅเบฐ Objective-C, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš) เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเป€เบญเบตเป‰เบ™เบชเบญเบ‡เบ„เบฑเป‰เบ‡, เบ„เบฑเป‰เบ‡เบ”เบฝเบงเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เปเบฅเบฐเบ„เบฑเป‰เบ‡เบ”เบฝเบงเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™ preprocessed. เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”
เป‚เบ”เบเบชเบปเบกเบ—เบปเบšเบเบฑเบš -B or - เบซเปเปˆ เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบฅเบฐโ€‹เบšเบธ preprocessor เบชเบฐโ€‹เบซเบผเบฑเบšโ€‹เบซเบผเบทโ€‹
เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ‚เบญเบ‡เปเบซเบผเปˆเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ preprocessing เบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐ
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.

-D เบŠเบทเปˆ
เบเบณเบ™เบปเบ”เบฅเปˆเบงเบ‡เปœเป‰เบฒ เบŠเบทเปˆ เป€เบ›เบฑเบ™เบกเบฐเบซเบฒเบžเบฒเบ, เบกเบตเบ™เบดเบเบฒเบก 1.

-D เบŠเบทเปˆ=เบ„เปเบฒเบ™เบดเบเบฒเบก
เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡ เบ„เปเบฒเบ™เบดเบเบฒเบก เปเบกเปˆเบ™ tokenized เปเบฅเบฐเบ›เบธเบ‡เปเบ•เปˆเบ‡เป€เบ›เบฑเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ›เบฐเบเบปเบ”เบงเปˆเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡
เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเป„เบฅเบเบฐเบชเบฒเบกเปƒเบ™ a #เบเปเบฒเบ™เบปเบ” เบ„เปเบฒเบชเบฑเปˆเบ‡. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบ„เปเบฒเบ™เบดเบเบฒเบกเบˆเบฐเป€เบ›เบฑเบ™
เบซเบเปเป‰เบ”เป‰เบงเบเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เปเบ–เบงเปƒเปเปˆเบ—เบตเปˆเบเบฑเบ‡เป„เบงเป‰.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เป€เบญเบตเป‰เบ™ preprocessor เบˆเบฒเบเป‚เบ„เบ‡เบเบฒเบ™ shell เบซเบผเบท shell, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™
เป€เบžเบทเปˆเบญเปƒเบŠเป‰ syntax เบงเบปเบ‡เบขเบทเบกเบ‚เบญเบ‡ shell เป€เบžเบทเปˆเบญเบ›เบปเบเบ›เป‰เบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เป€เบŠเบฑเปˆเบ™เบŠเปˆเบญเบ‡เบ—เบตเปˆเบกเบต a
เบ„เบงเบฒเบกเบซเบกเบฒเบเปƒเบ™ syntax เบ‚เบญเบ‡ shell.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ” macro เบ„เป‰เบฒเบเบ„เบทเบŸเบฑเบ‡เบŠเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, เบ‚เบฝเบ™ argument เบ‚เบญเบ‡เบกเบฑเบ™
เบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบกเบตเบงเบปเบ‡เป€เบฅเบฑเบšเบญเป‰เบญเบกเบ‚เป‰เบฒเบ‡เบเปˆเบญเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเป€เบ—เบปเปˆเบฒเบเบฑเบš (เบ–เป‰เบฒเบกเบต). เบงเบปเบ‡เป€เบฅเบฑเบšเปเบกเปˆเบ™
เบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบšเปเบเบฐเบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบญเป‰เบฒเบ‡เป€เบ–เบดเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบเบฑเบš sh เปเบฅเบฐ csh,
-D'เบŠเบทเปˆ(เป‚เบ•เป‰เบ–เบฝเบ‡...)=เบ„เปเบฒเบ™เบดเบเบฒเบก' เบงเบฝเบเบ‡เบฒเบ™.

-D เปเบฅเบฐ -U เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ•เบฒเบกโ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เปƒเบ™โ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹. เบ—เบฑเบ‡เปเบปเบ”
- เป„เบญเบกเบฒเป‚เบ„เบฃ เป€เบญเบเบฐเบชเบฒเบ™ เปเบฅเบฐ - เบฅเบงเบกโ€‹เบ—เบฑเบ‡โ€‹ เป€เบญเบเบฐเบชเบฒเบ™ เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹ -D เปเบฅเบฐ -U เบ•เบปเบงเป€เบฅเบทเบญเบ

-U เบŠเบทเปˆ
เบเบปเบเป€เบฅเบตเบเบ„เปเบฒเบ™เบดเบเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡ เบŠเบทเปˆ, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบซเบผเบทเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบเบฑเบš a -D เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

-undef
เบขเปˆเบฒเบเบณเบ™เบปเบ”เบกเบฒเป‚เบ„เบฃเบชเบฐเป€เบžเบฒเบฐเบฅเบฐเบšเบปเบš เบซเบผเบท GCC เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เป†เบฅเปˆเบงเบ‡เปœเป‰เบฒ. เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ
เบกเบฐเบซเบฒเบžเบฒเบเบเบฑเบ‡เบ„เบปเบ‡เบ–เบทเบเบเปเบฒเบ™เบปเบ”.

-I dir
เป€เบžเบตเปˆเบกเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต dir เป„เบ›เบซเบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒเป„เบŸเบฅเปŒ header.
เบฅเบฒเบเบŠเบทเปˆเป‚เบ”เบ -I เบ–เบทเบเบ„เบปเป‰เบ™เบซเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบฅเบฐเบšเบปเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ›เบฐเบเบญเบšเบกเบตเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต.
เบ–เป‰เบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต dir เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ›เบฐเบเบญเบšเบกเบตเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ–เบทเบเบฅเบฐเป€เบงเบฑเป‰เบ™
เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ„เบปเป‰เบ™เบซเบฒเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบฅเบฐเบšเบปเบšเปเบฅเบฐเบเบฒเบ™เบ›เบดเปˆเบ™เบ›เบปเบงเบžเบดเป€เบชเบ”
เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบšเปเปˆเป„เบ”เป‰เบžเปˆเบฒเบเปเบžเป‰. เบ–เป‰เบฒ dir เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ "=", เบˆเบฒเบเบ™เบฑเป‰เบ™ "=" เบˆเบฐเป€เบ›เบฑเบ™
เปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ sysroot; เป€เบšเบดเปˆเบ‡ --sysroot เปเบฅเบฐ -isysroot.

-o เป€เบญเบเบฐเบชเบฒเบ™
เบ‚เบฝเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบชเปˆ เป€เบญเบเบฐเบชเบฒเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบฅเบฐเบšเบธ เป€เบญเบเบฐเบชเบฒเบ™ เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเบชเบญเบ‡เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบš cpp. gcc เบกเบตเบเบฒเบ™เบ•เบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเบชเบญเบ‡,
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ -o เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”.

- เบเบฒ
เป€เบ›เบตเบ”โ€‹เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ—เบตเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ™เบตเป‰
is - เบ„เปเบฒเป€เบซเบฑเบ™, -Wtrigraphs, -Wmultichar เปเบฅเบฐเบเบฒเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ” a
เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเปƒเบ™ "#if" เบชเบฐเปเบ”เบ‡เบญเบญเบ. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบซเบผเบฒเบเบ„เปเบฒเป€เบ•เบทเบญเบ™เบ‚เบญเบ‡ preprocessor
เป€เบ›เบตเบ”เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เปเบฅเบฐเบšเปเปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบˆเบฐเบ„เบงเบšเบ„เบธเบกเบžเบงเบเบกเบฑเบ™.

- เบ„เปเบฒเป€เบซเบฑเบ™
- เบ„เปเบฒเป€เบซเบฑเบ™
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบฅเบณเบ”เบฑเบšเบ„เบณเป€เบซเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ /* เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ a /* เบ„เปเบฒเป€เบซเบฑเบ™, เบซเบผเบทเบ—เบธเบเบ„เบฑเป‰เบ‡ a
backslash-newline เบ›เบฐเบเบปเบ”เบขเบนเปˆเปƒเบ™ a // เบ„เปเบฒเป€เบซเบฑเบ™. (เบ—เบฑเบ‡เบชเบญเบ‡เบฎเบนเบšเปเบšเบšเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ”เบฝเบงเบเบฑเบ™.)

-Wtrigraphs
trigraphs เบชเปˆเบงเบ™เปƒเบซเบเปˆเปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ„เบงเบฒเบกเบซเบกเบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ
trigraph เบ—เบตเปˆเบˆเบฐเบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เป€เบชเบฑเป‰เบ™เปƒเบซเบกเปˆเบซเบ™เบต (??/ เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™) เบชเบฒเบกเบฒเบ”, เป‚เบ”เบ
เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบšเปˆเบญเบ™เบ—เบตเปˆเบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบซเบผเบทเบชเบดเป‰เบ™เบชเบธเบ”. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบžเบฝเบ‡เปเบ•เปˆ trigraphs เบ—เบตเปˆเบˆเบฐเบ›เบฐเบเบญเบš
เปเบ–เบงเปƒเปเปˆเบ—เบตเปˆเบซเบผเบปเบšเปœเบตเบญเบญเบเบกเบฒ เบœเบฐเบฅเบดเบ”เบ„เบณเป€เบ•เบทเบญเบ™เบžเบฒเบเปƒเบ™เบ„เบณเป€เบซเบฑเบ™.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เป‚เบ”เบ - เบเบฒเบ—เบตเปˆเบขเบนเปˆ เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ - เบเบฒ เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบกเบญเบšเปƒเบซเป‰, เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบขเบนเปˆ
เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒ trigraphs เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰. เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบ›เบ‡ trigraph เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™, เปเบ•เปˆเป„เบ”เป‰เบฎเบฑเบš
เบญเบทเปˆเบ™เป† - เบเบฒ เบ„เปเบฒโ€‹เป€เบ•เบทเบญเบ™โ€‹, เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ -trigraphs - เบเบฒ -Wno-trigraphs.

- เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบเปเปˆเบชเป‰เบฒเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก เปเบฅเบฐ ISO C. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ ISO C เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒ C เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก, เปเบฅเบฐเบกเบตเบšเบฑเบ™เบซเบฒ
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบ„เบงเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™.

-Wundef
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบžเบปเบšเบ•เบปเบงเบฅเบฐเบšเบธเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบกเบฐเบซเบฒเบžเบฒเบเบขเบนเปˆเปƒเบ™ # เบ–เป‰เบฒ เบ—เบดเบ”โ€‹เบ—เบฒเบ‡โ€‹,
เบ™เบญเบเบ‚เบญเบ‡ เบเปเบฒเบ™เบปเบ”เป„เบงเป‰. เบ•เบปเบงเบฅเบฐเบšเบธเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบเบชเบนเบ™.

-Wunused-macros
เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบกเบฐเบซเบฒเบžเบฒเบเบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เป„เบŸเบฅเปŒเบซเบผเบฑเบเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰. เบกเบฐเบซเบฒเบžเบฒเบเปเบกเปˆเบ™ เปƒเบซเบกเปˆ เบ–เป‰เบฒเบกเบฑเบ™เปเบกเปˆเบ™
เบ‚เบฐเบซเบเบฒเบเบซเบผเบทเบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบกเบตเบขเบนเปˆเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡. preprocessor เบเบฑเบ‡เบˆเบฐเป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ
macro เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบ„เบทเบ™เปƒเบซเบกเปˆเบซเบผเบทเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”.

เบกเบฒเป‚เบ„เปƒเบ™เบ•เบปเบง, เบกเบฐเบซเบฒเบžเบฒเบเบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เบณเบชเบฑเปˆเบ‡, เปเบฅเบฐ เบกเบฐเบซเบฒเบžเบฒเบเบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบฅเบงเบกเบกเบต
เป„เบŸเบฅเปŒเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹: เบ–เป‰เบฒเบกเบฐเบซเบฒเบžเบฒเบเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบˆเบดเบ‡, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเปƒเบŠเป‰เปƒเบ™เบšเบฅเบฑเบญเบเบ—เบตเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเบ‚เป‰เบฒเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™
CPP เบˆเบฐเบฅเบฒเบเบ‡เบฒเบ™เบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเปƒเบŠเป‰. เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡
เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบกเบฐเบซเบฒเบžเบฒเบเป‚เบ”เบ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเป‰เบฒเบเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เป‰เบฒเบก
เบ•เบฑเบ™. เบญเบตเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ dummy เบเบฑเบšเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™:

#if เบเปเบฒเบ™เบปเบ” the_macro_causing_the_warning
#เบชเบธเบ”เบ—เป‰เบฒเบ

-Wendif-เบ›เป‰เบฒเบ
เป€เบ•เบทเบญเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆ #เบญเบทเปˆเบ™ or an #เบชเบธเบ”เบ—เป‰เบฒเบ เบ•เบดเบ”เบ•เบฒเบกเบ”เป‰เบงเบเบ‚เปเป‰เบ„เบงเบฒเบก. เบ™เบตเป‰เบกเบฑเบเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™
เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เปเบšเบšเบŸเบญเบก

#เบ–เป‰เบฒ FOO
...
# FOO เบญเบทเปˆเบ™
...
#endif FOO

"FOO" เบ—เบตเบชเบญเบ‡เปเบฅเบฐเบ—เบตเบชเบฒเบกเบ„เบงเบ™เบˆเบฐเบขเบนเปˆเปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™, เปเบ•เปˆเบกเบฑเบเบˆเบฐเบšเปเปˆเบกเบตเบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เป€เบเบปเปˆเบฒ.
เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ™เบตเป‰เปเบกเปˆเบ™เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

- เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹
เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบเบฒเบ. เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž
เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”.

-Wsystem-headers
เบญเบญเบเบ„เปเบฒเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”เปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ›เบปเบเบเบฐเบ•เบดเบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ
เปเบกเบ‡เป„เบกเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เบชเบฐเบ™เบฑเป‰เบ™เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™. เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบฅเบฐเบšเบปเบš
เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

-w เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ—เบฑเบ‡เบซเบกเบปเบ”, เบฅเบงเบกเบ—เบฑเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆ GNU CPP เบญเบญเบเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

- pedantic
เบญเบญเบเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบšเบฑเบ‡เบ„เบฑเบšเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C. เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบ›เบฐเป„เบงเป‰
เบญเบญเบเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบžเบงเบเบกเบฑเบ™เบเบฐเบ•เบธเป‰เบ™เป€เบฅเบทเป‰เบญเบเป†เบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบญเบฑเบ™เบ•เบฐเบฅเบฒเบ.

-pedantic เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹
เบญเบญเบเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบšเบฑเบ‡เบ„เบฑเบšเบ—เบฑเบ‡เปเบปเบ”, เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบšเบฑเบ‡เบ„เบฑเบšเบ—เบฑเบ‡เปเบปเบ”เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.
เบ™เบตเป‰เบฅเบงเบกเบกเบตเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบšเบฑเบ‡เบ„เบฑเบšเบ—เบตเปˆ GCC เบกเบตเบšเบฑเบ™เบซเบฒเป‚เบ”เบเบšเปเปˆเบกเบต - pedantic เปเบ•เปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™
เบ„เบณ เป€เบ•เบทเบญเบ™.

-M เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เปƒเบซเป‰โ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹เบเปˆเบญเบ™โ€‹, เบญเบญเบโ€‹เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบšโ€‹เบ—เบตเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹ เป€เบฎเบฑเบ”เปƒเบซเป‰
เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบเบฒเบ™โ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบšโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ•เบปเป‰เบ™โ€‹เบ•เปโ€‹เบ‚เบญเบ‡โ€‹. preprocessor เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบซเบ™เบถเปˆเบ‡
เป€เบฎเบฑเบ”เปƒเบซเป‰ เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเบกเบตเบŠเบทเปˆเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ™เบฑเป‰เบ™, เบˆเปเป‰เบฒเบชเบญเบ‡เป€เบกเบฑเบ”, เปเบฅเบฐเบŠเบทเปˆ
เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”เบฅเบงเบก, เบฅเบงเบกเบ—เบฑเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบ - เบฅเบงเบกโ€‹เบ—เบฑเบ‡โ€‹ or - เป„เบญเบกเบฒเป‚เบ„เบฃ เบ„เปเบฒเบชเบฑเปˆเบ‡
เบ•เบปเบงเป€เบฅเบทเบญเบเบชเบฒเบ.

เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเป„เบ”เป‰เบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ (เบเบฑเบš -MT or -MQ), เบŠเบทเปˆเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ›เบฐเบเบญเบšเบ”เป‰เบงเบ
เบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบกเบต suffix เปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบ object file suffix เปเบฅเบฐเบเบฑเบšเปƒเบ”เป†
เป€เบญเบปเบฒเบžเบฒเบเบชเปˆเบงเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบŠเบฑเป‰เบ™เบ™เปเบฒ. เบ–เป‰เบฒเบกเบตเบซเบผเบฒเบเป„เบŸเบฅเปŒเบฅเบงเบกเปเบฅเป‰เบงเบเบปเบ”เบฅเบฐเบšเบฝเบšเปเบกเปˆเบ™
เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบซเบผเบฒเบเบชเบฒเบเป‚เบ”เบเปƒเบŠเป‰ \- เปเบ–เบงเปƒเปเปˆ. เบเบปเบ”เบฅเบฐเบšเบฝเบšเบšเปเปˆเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡.

เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบœเบปเบ™เบ”เบตเบšเบฑเปŠเบเบ‚เบญเบ‡เบ•เบปเบงเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™, เป€เบŠเบฑเปˆเบ™: -dM. เป€เบžเบทเปˆเบญเบซเบฅเบตเบเบฅเป‰เบฝเบ‡
เบเบฒเบ™เบ›เบฐเบชเบปเบกเบœเบปเบ™เบ”เบตเบšเบฑเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบฑเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ„เบงเบ™เบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™
เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบถเป‰เบ™เบเบฑเบš -MF, เบซเบผเบทเปƒเบŠเป‰เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป€เบŠเบฑเปˆเบ™
DEPENDENCIES_OUTPUT. เบœเบปเบ™เบญเบญเบเบกเบฒเบ”เบตเบšเบฑเปŠเบเบˆเบฐเบเบฑเบ‡เบ„เบปเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบเบฐเปเบชเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ›เบปเบเบเบฐเบ•เบด
เบ—เบณ เบกเบฐเบ”เบฒ.

Passing -M เบซเบกเบฒเบเป€เบ–เบดเบ‡เบ„เบปเบ™เบ‚เบฑเบšเบฅเบปเบ” -E, เปเบฅเบฐเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเป‚เบ”เบเบกเบตเป€เบซเบ”เบœเบปเบ™ -w.

เป€เบญเบฑเบก เบ„เบท -M เปเบ•เปˆเบขเปˆเบฒเบเปˆเบฒเบงเป€เบ–เบดเบ‡เป„เบŸเบฅเปŒ header เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบš header directory,
เบซเบผเบทเป„เบŸเบฅเปŒ header เบ—เบตเปˆเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒ, เป‚เบ”เบเบเบปเบ‡เบซเบผเบทเป‚เบ”เบเบ—เบฒเบ‡เบญเป‰เบญเบก, เบˆเบฒเบ header เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เบงเบปเบ‡เป€เบฅเบฑเบšเบกเบธเบกเบซเบผเบทเบงเบปเบ‡เบขเบทเบกเบ„เบนเปˆเปƒเบ™ an #include
เบ„เปเบฒเบชเบฑเปˆเบ‡เบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบชเปˆเบงเบ™เบซเบปเบงเบ™เบฑเป‰เบ™เบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ เป€เบญเบฑเบก
เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ—เบตเปˆโ€‹เบญเบตเบ‡โ€‹เปƒเบชเปˆโ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™ semantics เบˆเบฒเบ GCC เบฎเบธเปˆเบ™ 3.0 เปเบฅเบฐ
เบเปˆเบญเบ™ เปœเป‰เบฒ เบ™เบตเป‰.

-MF เป€เบญเบเบฐเบชเบฒเบ™
เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบเบฑเบš -M or เป€เบญเบฑเบก, เบเปเบฒเบ™เบปเบ”เป„เบŸเบฅเปŒเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบš. เบ–เป‰เบฒเบšเปเปˆเบกเบต -MF
switch เปเบกเปˆเบ™เปƒเบซเป‰ preprocessor เบชเบปเปˆเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเป„เบ›เบซเบฒเบšเปˆเบญเบ™เบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเบชเบปเปˆเบ‡
เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™.

เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบเบฑเบšเบ•เบปเบงเป€เบฅเบทเบญเบเป„เบ”เป€เบงเบต -MD or -MMD, -MF overrides เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”.

-MG เป‚เบ”เบเบชเบปเบกเบ—เบปเบšเบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบŠเบฑเปˆเบ™: -M เบเบฒเบ™โ€‹เบฎเป‰เบญเบ‡โ€‹เบ‚เปโ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบžเบดเปˆเบ‡โ€‹เบžเบฒโ€‹เบญเบฒโ€‹เป„เบชโ€‹, -MG เบชเบปเบกเบกเบธเบ”
เป„เบŸเบฅเปŒ header เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›เปเบกเปˆเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปเบฅเบฐเป€เบžเบตเปˆเบกเบžเบงเบเบกเบฑเบ™เปƒเบชเปˆเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเป‚เบ”เบเบšเปเปˆเบกเบต
เบเบฒเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹. เบŠเบทเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปเบกเปˆเบ™เป€เบญเบปเบฒเป‚เบ”เบเบเบปเบ‡เบˆเบฒเบ "#include"
เบ—เบดเบ”โ€‹เบ—เบฒเบ‡โ€‹เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™ prepending เป€เบชเบฑเป‰เบ™โ€‹เบ—เบฒเบ‡โ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹. -MG เบเบฑเบ‡เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™, เป€เบ›เบฑเบ™
เป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบงเบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›เป€เบฎเบฑเบ”เปƒเบซเป‰เบ™เบตเป‰เบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”.

เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡ makefiles.

-MP เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบ™เบฐเบ™เปเบฒ CPP เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ phony เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ dependency เบญเบทเปˆเบ™เบ™เบญเบเบˆเบฒเบ
เป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบ•เป, เป€เบฎเบฑเบ”เปƒเบซเป‰เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบšเปเปˆเบกเบตเบซเบเบฑเบ‡. เบเบปเบ”เบฅเบฐเบšเบฝเบš dummy เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”
เป€เบฎเบฑเบ”เปƒเบซเป‰ เปƒเบซเป‰เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เป€เบญเบปเบฒเป„เบŸเบฅเปŒ header เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ makefile เบเบปเบ‡เบเบฑเบ™.

เบ™เบตเป‰เปเบกเปˆเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ›เบปเบเบเบฐเบ•เบด:

test.o: test.c test.h

test.h:

-MT เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบ
เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเบ›เปˆเบญเบเบญเบญเบเบกเบฒเป‚เบ”เบเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ CPP เปƒเบŠเป‰เป€เบงเบฅเบฒ
เบŠเบทเปˆโ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบ™เปเบฒโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบ•เบปเป‰เบ™โ€‹เบ•เปโ€‹, เบฅเบถเบšโ€‹เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เปเบฅเบฐโ€‹เบ„เปเบฒโ€‹เบ•เปเปˆโ€‹เบ—เป‰เบฒเบโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹
เป€เบŠเบฑเปˆเบ™โ€‹เบงเปˆเบฒ .c, เปเบฅเบฐเบ•เปเปˆเบ—เป‰เบฒเบเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เป€เบงเบ—เบต. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ.

An -MT เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบˆเบฐโ€‹เบ•เบฑเป‰เบ‡โ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เปƒเบซเป‰โ€‹เปเบ™เปˆโ€‹เบ™เบญเบ™โ€‹เบชเบฐโ€‹เบ•โ€‹เบฃเบดเบ‡โ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹. เบ–เป‰เบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™
เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบซเบผเบฒเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ”เบฝเบงเบเบฑเบš -MT, เบซเบผเบทเปƒเบŠเป‰เบซเบผเบฒเบเบญเบฑเบ™
-MT เบ•เบปเบงเป€เบฅเบทเบญเบ

เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡, -MT '$(objpfx)foo.o' เบญเบฒเบ”เบˆเบฐเปƒเบซเป‰

$(objpfx)foo.o: foo.c

-MQ เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบ
เบ„เบทโ€‹เบเบฑเบ™โ€‹เบเบฑเบš -MT, เปเบ•เปˆเบกเบฑเบ™เบญเป‰เบฒเบ‡เป€เบ–เบดเบ‡เบ•เบปเบงเบฅเบฐเบ„เบญเบ™เปƒเบ”เบ™เบถเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบžเบดเป€เบชเบ”เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”.
-MQ '$(objpfx)foo.o' เป€เบฎเบฑเบ”เปƒเบซเป‰

$$(objpfx)foo.o: foo.c

เป€เบ›เบปเป‰เบฒเปเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ–เบทเบเบญเป‰เบฒเบ‡เบญเบตเบ‡เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบ„เบทเบเบฑเบšเบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบกเบญเบšเปƒเบซเป‰ -MQ.

-MD -MD เป€เบ—เบปเปˆเบฒเบเบฑเบš -M -MF เป€เบญเบเบฐเบชเบฒเบ™, เบเบปเบเป€เบงเบฑเป‰เบ™เบ™เบฑเป‰เบ™ -E เบšเปเปˆเป„เบ”เป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ. เบ„เบปเบ™เบ‚เบฑเบšเบฅเบปเบ”
เบเปเบฒเบ™เบปเบ” เป€เบญเบเบฐเบชเบฒเบ™ เบญเบตเบ‡เปƒเบชเปˆเบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™ -o เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เปƒเบซเป‰. เบ–เป‰เบฒเบกเบฑเบ™เป€เบ›เบฑเบ™, เบ„เบปเบ™เบ‚เบฑเบšเบฅเบปเบ”เปƒเบŠเป‰เบ‚เบญเบ‡เบกเบฑเบ™
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เปเบ•เปˆเบกเบต suffix เบ‚เบญเบ‡ .dเบ–เป‰เบฒโ€‹เบšเปเปˆโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เบกเบฑเบ™โ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบŠเบทเปˆโ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบ›เป‰เบญเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹,
เป€เบญเบปเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบฅเบฐเบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบ, เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰ a .d แž”แž…แŸ’แž…แŸแž™.

If -MD เปเบกเปˆเบ™เปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบš -E, เปƒเบ”เป† -o switch เปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเป€เบžเบทเปˆเบญเบฅเบฐเบšเบธ
เป„เบŸเบฅโ€‹เปŒโ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ—เบตเปˆโ€‹เบญเบตเบ‡โ€‹เปƒเบชเปˆโ€‹, เปเบ•เปˆโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹ -E, เปเบ•เปˆเบฅเบฐเบ„เบปเบ™ -o เปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเป€เบžเบทเปˆเบญเบฅเบฐเบšเบธ a
เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเป€เบ›เบปเป‰เบฒเปเบฒเบ.

เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ -E เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบซเบกเบฒเบโ€‹เบ„เบงเบฒเบกโ€‹เบงเปˆเบฒโ€‹, -MD เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ›เบฑเบ™
เบœเบปเบ™เบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.

-MMD
เบ„เบท -MD เบเบปเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบเปˆเบฒเบงเป€เบ–เบดเบ‡เป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™, เบšเปเปˆเปเบกเปˆเบ™เป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.

-fpch-deps
เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบชเปˆเบงเบ™เบซเบปเบงเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ, เบ—เบธเบ‡เบ™เบตเป‰เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบธเบ‡เบœเบปเบ™เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช
เบเบฑเบ‡เบฅเบฒเบเบŠเบทเปˆเป„เบŸเบฅเปŒเบˆเบฒเบเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡ precompiled. เบ–เป‰เบฒเบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
header precompiled เบˆเบฐเบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบกเบฑเบ™
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเป„เบŸเบฅเปŒเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ header precompiled เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

-fpch-preprocess
เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปƒเบŠเป‰ header precompiled เบฎเปˆเบงเบกเบเบฑเบš -E. เบกเบฑเบ™เปเบŠเบเบžเบดเป€เบชเบ”
"#pragma", "#pragma GCC pch_preprocess"เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™"" เปƒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เป€เบžเบทเปˆเบญเบซเบกเบฒเบเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ
เบšเปˆเบญเบ™เบ—เบตเปˆเบซเบปเบงเบ‚เปเป‰ precompiled เป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™, เปเบฅเบฐเบ‚เบญเบ‡เบกเบฑเบ™ เบŠเบทเปˆโ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™เบ—เบตเปˆเบขเบนเปˆ เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹ -fpreprocessed เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰, GCC เบฎเบฑเบšเบฎเบนเป‰ "#pragma" เบ™เบตเป‰เปเบฅเบฐเป‚เบซเบผเบ” PCH.

เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เบˆเบฐโ€‹เบ›เบดเบ”โ€‹เป€เบ›เบฑเบ™โ€‹เบ„เปˆเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹, เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบงเปˆเบฒโ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบเปˆเบญเบ™โ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹
เป€เปเบฒเบฐเปเบ—เป‰เป†เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆ GCC. เบกเบฑเบ™เบ–เบทเบเป€เบ›เบตเบ”เป‚เบ”เบ - save-tempsโ€‹.

เบ—เปˆเบฒเบ™เบšเปเปˆเบ„เบงเบ™เบ‚เบฝเบ™ "#pragma" เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เปเบ•เปˆเบกเบฑเบ™เบ›เบญเบ”เป„เบžเบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚
เบŠเบทเปˆเป„เบŸเบฅเปŒเบ–เป‰เบฒเป„เบŸเบฅเปŒ PCH เบกเบตเบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เบญเบทเปˆเบ™. เบŠเบทเปˆเป„เบŸเบฅเปŒเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™
absolute เบซเบผเบทเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบžเบตเปˆเบ™เป‰เบญเบ‡เบเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡ GCC.

-x c
-x c ++
-x เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡ - เบ„
-x assembler-with-cpp
เบฅเบฐเบšเบธเบžเบฒเบชเบฒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš: C, C++, Objective-C, เบซเบผเบทเบเบฒเบ™เบ›เบฐเบเบญเบš. เบ™เบตเป‰เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เป€เบฎเบฑเบ”
เบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบซเบผเบทเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ; เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบทเบญเบ syntax เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ”
เบ„เบฒเบ”เบซเบงเบฑเบ‡. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเปƒเบซเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, cpp เบˆเบฐ deduce เบžเบฒเบชเบฒเบˆเบฒเบ
เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡: .c, cc, .m, เบซเบผเบท .S. เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบปเปˆเบงเป„เบ›เบญเบทเปˆเบ™เป†เบชเปเบฒเบฅเบฑเบš
C ++ เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบเบญเบšเบเบฑเบ‡เบ–เบทเบเบฎเบฑเบšเบฎเบนเป‰. เบ–เป‰เบฒ cpp เบšเปเปˆเบฎเบฑเบšเบฎเบนเป‰เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ, เบกเบฑเบ™
เบˆเบฐเบฎเบฑเบเบชเบฒเป„เบŸเบฅเปŒเป€เบ›เบฑเบ™ C; เบ™เบตเป‰เปเบกเปˆเบ™เบฎเบนเบšเปเบšเบšเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹: เบฅเบธเป‰เบ™เบเปˆเบญเบ™เปœเป‰เบฒเบ‚เบญเบ‡ cpp เบเบญเบกเบฎเบฑเบš a - เบžเบฒเบชเบฒ เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบฑเบ‡โ€‹เบชเบญเบ‡โ€‹
เบžเบฒเบชเบฒ เปเบฅเบฐเบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเป‚เบเบเบเป‰เบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒ
เบกเบฑเบ™เบ‚เบฑเบ”เปเบเป‰เบ‡เบเบฑเบš -l เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

-std=เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™
-ansi
เบฅเบฐเบšเบธเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบฅเบฐเบซเบฑเบ”เบ„เบงเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก. เบ›เบฐเบˆเบธโ€‹เบšเบฑเบ™ CPP เบฎเบนเป‰โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบš C
เปเบฅเบฐเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++; เบ„เบปเบ™เบญเบทเปˆเบ™เบญเบฒเบ”เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เปƒเบ™โ€‹:

"c90"
"c89"
"iso9899: 1990"
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO C เบˆเบฒเบเบ›เบต 1990. c90 เปเบกเปˆเบ™ shorthand เบ›เบฐเป€เบžเบ™เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบšเบฑเบšเบ™เบตเป‰เบ‚เบญเบ‡
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.

เป„เบ”เป‰ -ansi เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบเบฑเบš -std=c90.

"iso9899: 199409"
เบกเบฒเบ”โ€‹เบ•เบฐโ€‹เบ–เบฒเบ™ C เบ›เบต 1990, เบ”เบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เปƒเบ™โ€‹เบ›เบต 1994.

"iso9899: 1999"
"c99"
"iso9899: 199x"
"c9x"
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO C เบชเบฐเบšเบฑเบšเบ›เบฑเบšเบ›เบธเบ‡, เบˆเบฑเบ”เบžเบตเบกเบกเบฒเปƒเบ™เป€เบ”เบทเบญเบ™เบ—เบฑเบ™เบงเบฒ 1999. เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบžเบดเบกเป€เบœเบตเบเปเบœเปˆ, เบ™เบตเป‰
เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเป€เบ›เบฑเบ™ C9X.

"iso9899: 2011"
"c11"
"c1x"
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO C เบชเบฐเบšเบฑเบšเบ›เบฑเบšเบ›เบธเบ‡, เบˆเบฑเบ”เบžเบตเบกเบกเบฒเปƒเบ™เป€เบ”เบทเบญเบ™เบ—เบฑเบ™เบงเบฒ 2011. เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบžเบดเบกเป€เบœเบตเบเปเบœเปˆ, เบ™เบตเป‰
เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเป€เบ›เบฑเบ™ C1X.

"gnu90"
"gnu89"
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C 1990 เบšเบงเบเบเบฑเบšเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GNU. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

"gnu99"
"gnu9x"
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C 1999 เบšเบงเบเบเบฑเบšเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GNU.

"gnu11"
"gnu1x"
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C 2011 เบšเบงเบเบเบฑเบšเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GNU.

"c++98"
เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ISO C++ เบ›เบต 1998 เบšเบงเบเบเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚.

"gnu++98"
เบ„เบทโ€‹เบเบฑเบ™โ€‹เบเบฑเบš -std=c++98 เบšเบงเบเบเบฑเบšเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GNU. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” C++.

-AND- เปเบเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบฅเบงเบก. เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปƒเบ”เบ™เบถเปˆเบ‡เบ—เบตเปˆเบฅเบฐเบšเบธเบ”เป‰เบงเบ -I เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเปˆเบญเบ™ -AND- เบกเบต
เบ„เบปเป‰เบ™เบซเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเปˆเบงเบ™เบซเบปเบงเบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เปเบ”เป‰เบงเบ "#include"เป„เบŸเบฅเปŒ""; เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบ„เบปเป‰เบ™เบซเบฒ
"#เบฅเบงเบกเป„เบŸเบฅเปŒ>". เบ–เป‰เบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ–เบทเบเบเปเบฒเบ™เบปเบ”เบ”เป‰เบงเบ -I เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹
-AND-, เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ–เบทเบเบ„เบปเป‰เบ™เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ” #include เบ—เบดเบ”เบ—เบฒเบ‡.

เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบก, -AND- inhibits เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ‚เบญเบ‡โ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบเบฒเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ›เบฐโ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ„เบปเป‰เบ™เบซเบฒเบ—เปเบฒเบญเบดเบ”เบชเปเบฒเบฅเบฑเบš "#include"เป„เบŸเบฅเปŒ"". เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”.

-nostdinc
เบขเปˆเบฒเบ„เบปเป‰เบ™เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบฅเบฐเบšเบปเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบง. เบžเบฝเบ‡เปเบ•เปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต
เบ—เปˆเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เบเบฑเบšโ€‹ -I เบ—เบฒเบ‡เป€เบฅเบทเบญเบ (เปเบฅเบฐเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ›เบฐเบˆเบธเบšเบฑเบ™, เบ–เป‰เบฒ
เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก) เบ–เบทเบเบ„เบปเป‰เบ™เบซเบฒ.

-nostdinc++
เบขเปˆเบฒเบŠเบญเบเบซเบฒเป„เบŸเบฅเปŒ header เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเบฐเป€เบžเบฒเบฐ C++, เปเบ•เปˆเป€เบฎเบฑเบ”เบ•เปเปˆเป„เบ›
เบ„เบปเป‰เบ™เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบญเบทเปˆเบ™เป†. (เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ™เบตเป‰โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡ C ++โ€‹
เบซเปเบชเบฐเปเบธเบ”.)

- เบฅเบงเบกโ€‹เบ—เบฑเบ‡โ€‹ เป€เบญเบเบฐเบชเบฒเบ™
เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ เป€เบญเบเบฐเบชเบฒเบ™ เบ„เบทเบเบฑเบšเบงเปˆเบฒ "#include "file" เบ›เบฒเบเบปเบ”เป€เบ›เบฑเบ™เปเบ–เบงเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เปเบซเบผเปˆเบ‡เบ•เบปเป‰เบ™เบ•เป
เป„เบŸเบฅเปŒ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เปเบฒเบญเบดเบ”เบ„เบปเป‰เบ™เบซเบฒ เป€เบญเบเบฐเบชเบฒเบ™ เปเบกเปˆเบ™ preprocessor เป€เบฎเบฑเบ”เบงเบฝเบ
เบฅเบฐเบšเบปเบš เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ of เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš. เบ–เป‰เบฒเบšเปเปˆเบžเบปเบš
เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบ–เบทเบเบ„เบปเป‰เบ™เบซเบฒเบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบฅเบทเบญเบ‚เบญเบ‡ "#include "..."" เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบ„เบปเป‰เบ™เบซเบฒ
เบ—เบณ เบกเบฐเบ”เบฒ.

เบ–เป‰เบฒเบซเบผเบฒเบ - เบฅเบงเบกโ€‹เบ—เบฑเบ‡โ€‹ เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹, เป„เบŸเบฅโ€‹เปŒโ€‹เปเบกเปˆเบ™โ€‹เบฅเบงเบกโ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹
เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡.

- เป„เบญเบกเบฒเป‚เบ„เบฃ เป€เบญเบเบฐเบชเบฒเบ™
เบ„เบทเบเบฑเบ™ - เบฅเบงเบกโ€‹เบ—เบฑเบ‡โ€‹, เบเบปเบเป€เบงเบฑเป‰เบ™เบงเปˆเบฒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เปƒเบ”เป†เบ—เบตเปˆเบœเบฐเบฅเบดเบ”เป‚เบ”เบเบเบฒเบ™เบชเบฐเปเบเบ™ เป€เบญเบเบฐเบชเบฒเบ™ เบ–เบทเบเบ–เบตเป‰เบก
เบซเปˆเบฒเบ‡. Macros เบกเบฑเบ™เบเปเบฒเบ™เบปเบ”เบเบฑเบ‡เบ„เบปเบ‡เบ–เบทเบเบเปเบฒเบ™เบปเบ”. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบกเบฐเบซเบฒเบžเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”
เบˆเบฒเบเบชเปˆเบงเบ™เบซเบปเบงเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ‚เบญเบ‡เบกเบฑเบ™.

เป„เบŸเบฅเปŒเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป‚เบ”เบ - เป„เบญเบกเบฒเป‚เบ„เบฃ เบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™เป„เบŸเบฅเปŒเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป‚เบ”เบ - เบฅเบงเบกโ€‹เบ—เบฑเบ‡โ€‹.

-idirafter dir
เบ„เบปเป‰เบ™เบซเบฒ dir เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒ header, เปเบ•เปˆเป€เบฎเบฑเบ”เบกเบฑเบ™ เบซเบผเบฑเบ‡เบˆเบฒเบ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเบ”เป‰เบงเบ -I เปเบฅเบฐ
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบฅเบฐเบšเบปเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบปเบ”เปเบฅเป‰เบง. dir เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบเบญเบšเบกเบต
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต. เบ–เป‰เบฒ dir เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ "=", เบˆเบฒเบเบ™เบฑเป‰เบ™ "=" เบˆเบฐเบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบ sysroot
เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ; เป€เบšเบดเปˆเบ‡ --sysroot เปเบฅเบฐ -isysroot.

- เบ„เปเบฒโ€‹เบ™เบดโ€‹เบเบฒเบกโ€‹ เบ„เบณ เบ™เบณ เปœเป‰เบฒ
เบฅเบฐเบšเบธเบงเปˆเบฒ เบ„เบณ เบ™เบณ เปœเป‰เบฒ เป€เบ›เบฑเบ™เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เปเปˆเบกเบฒ -iwithprefix เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบ–เป‰เบฒเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ
เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบ›เบฐเบเบญเบšเบกเบตเบชเบธเบ”เบ—เป‰เบฒเบ /.

-iwithprefix dir
-iwithprefix เบเปˆเบญเบ™ dir
เป€เบญเบเบฐเบชเบฒเบ™เบŠเป‰เบญเบ™เบ—เป‰เบฒเบ dir เบเบฑเบšเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบเบฑเบš - เบ„เปเบฒโ€‹เบ™เบดโ€‹เบเบฒเบกโ€‹, เปเบฅเบฐเป€เบžเบตเปˆเบกเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบ›เบฐเบเบญเบšเบกเบตเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ„เบปเป‰เบ™เบซเบฒ. -iwithprefix เบเปˆเบญเบ™ เป€เบญเบปเบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ”เบฝเบงเบเบฑเบ™ -I
เบˆเบฐ; -iwithprefix เบงเบฒเบ‡เบกเบฑเบ™เป„เบงเป‰เบšเปˆเบญเบ™เปƒเบ” -idirafter เบˆเบฐ.

-isysroot dir
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบท --sysroot เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹, เปเบ•เปˆโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบเบฑเบšโ€‹เป„เบŸเบฅโ€‹เปŒ header (เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹
Darwin เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เปƒเบŠเป‰เบเบฑเบšเบ—เบฑเบ‡เป„เบŸเบฅเปŒ header เปเบฅเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”). เป€เบšเบดเปˆเบ‡
--sysroot เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹.

-Imultilib dir
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ dir เป€เบ›เบฑเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเปˆเบญเบเบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบซเบปเบง C++ เบชเบฐเป€เบžเบฒเบฐเป€เบ›เบปเป‰เบฒเปเบฒเบ.

- เบฅเบฐเบšเบปเบš dir
เบ„เบปเป‰เบ™เบซเบฒ dir เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒ header, เบซเบผเบฑเบ‡เบˆเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป‚เบ”เบ -I เปเบ•เปˆเบเปˆเบญเบ™
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบฅเบฐเบšเบปเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เปเบฒเบเบกเบฑเบ™เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบฅเบฐเบšเบปเบš, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบ„เบทเบเบฑเบ™
เบเบฒเบ™เบ›เบดเปˆเบ™เบ›เบปเบงเบžเบดเป€เบชเบ”เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบฅเบฐเบšเบปเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เบ–เป‰เบฒ dir เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบ”เป‰เบงเบ "=", เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ "=" เบˆเบฐเบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ sysroot; เป€เบšเบดเปˆเบ‡ --sysroot เปเบฅเบฐ
-isysroot.

-iquote dir
เบ„เบปเป‰เบ™เบซเบฒ dir เบชเบฐเป€เบžเบฒเบฐเป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบซเบปเบงเบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เปเบ”เป‰เบงเบ "#include"เป„เบŸเบฅเปŒ""; เบžเบงเบโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™
เบ„เบปเป‰เบ™เบซเบฒเบชเปเบฒเบฅเบฑเบš "#includeเป„เบŸเบฅเปŒ>", เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป‚เบ”เบ -I เปเบฅเบฐเบเปˆเบญเบ™
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบฅเบฐเบšเบปเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เบ–เป‰เบฒ dir เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ "=", เบˆเบฒเบเบ™เบฑเป‰เบ™ "=" เบˆเบฐเบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบ
sysroot เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ; เป€เบšเบดเปˆเบ‡ --sysroot เปเบฅเบฐ -isysroot.

-fdirectives เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เป€เบกเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™, เบˆเบฑเบ”เบเบฒเบ™เบ„เบณเบชเบฑเปˆเบ‡, เปเบ•เปˆเบขเปˆเบฒเบ‚เบฐเบซเบเบฒเบเบกเบฐเบซเบฒเบžเบฒเบ.

เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบš -E เปเบฅเบฐ -fpreprocessed เบ•เบปเบงเป€เบฅเบทเบญเบ

เบเบฑเบš -E, preprocessing เปเบกเปˆเบ™เบˆเปเบฒเบเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบฑเปˆเบ™ "#define",
"#ifdef", เปเบฅเบฐ "#error". เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ preprocessor เบญเบทเปˆเบ™เป†, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบกเบฐเบซเบฒเบžเบฒเบเปเบฅเบฐ
เบเบฒเบ™เปเบ›เบ‡ trigraph เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป„เบ”เป‰ -dD เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™ implicitly
enabled

เบเบฑเบš -fpreprocessed, เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เปเบฅเบฐ macro builtin เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™
เบ„เบปเบ™เบžเบดเบเบฒเบ™. Macros เป€เบŠเบฑเปˆเบ™ "__LINE__", เป€เบŠเบดเปˆเบ‡เบ‚เบถเป‰เบ™เบเบฑเบšเบšเปเบฅเบดเบšเบปเบ”, เบ–เบทเบเบˆเบฑเบ”เบเบฒเบ™
เบ›เบปเบเบเบฐเบ•เบด. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเบ—เบตเปˆเบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ”เป‰เบงเบ "-E
-fdirectives เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™".

เบเบฑเบšเบ—เบฑเบ‡เบชเบญเบ‡ -E เปเบฅเบฐ -fpreprocessed, เบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเปเบฒเบฅเบฑเบš -fpreprocessed เป€เบญเบปเบฒเบ„เบงเบฒเบกเบชเบณเบ„เบฑเบ™. เบ™เบตเป‰
เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹เป€เบ•เบฑเบกโ€‹เบ—เบตเปˆโ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบœเปˆเบฒเบ™โ€‹เบกเบฒ preprocessed เบเบฑเบš "-E
-fdirectives เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™".

-fdollars-in-identifiers
เบเบญเบกเบฎเบฑเบš $ เปƒเบ™เบ•เบปเบงเบฅเบฐเบšเบธ.

-fextended-identifiers
เบเบญเบกเบฎเบฑเบšเบŠเบทเปˆเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบปเปˆเบงเป„เบ›เปƒเบ™เบ•เบปเบงเบฅเบฐเบšเบธ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡; เบขเบนเปˆโ€‹เปƒเบ™
GCC เบฎเบธเปˆเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบš C99 เปเบฅเบฐ C++.

-fno-canonical-system-headers
เป€เบกเบทเปˆเบญเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™, เบขเปˆเบฒเบซเบเปเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ”เป‰เบงเบ canonicalization.

-fpreprocessed
เบŠเบตเป‰เบšเบญเบเบเบฑเบšเป‚เบ›เป€เบŠเบ”เป€เบŠเบต preprocessor เบงเปˆเบฒเป„เบŸเบฅเปŒ input เป„เบ”เป‰เบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบฅเป‰เบง. เบ™เบตเป‰
เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบชเบดเปˆเบ‡เบ•เปˆเบฒเบ‡เป†เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบกเบฐเบซเบฒเบžเบฒเบ, เบเบฒเบ™เปเบ›เบ‡ trigraph, เบซเบผเบธเบ”เบžเบปเป‰เบ™เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเปเบ–เบงเปƒเปเปˆ,
เปเบฅเบฐเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเปˆเบงเบ™เปƒเบซเบเปˆ. preprocessor เบเบฑเบ‡เบฎเบฑเบšเบฎเบนเป‰เปเบฅเบฐเป€เบญเบปเบฒเบญเบญเบ
เบ„เปเบฒเป€เบซเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบœเปˆเบฒเบ™เป„เบŸเบฅเปŒ preprocessed เบเบฑเบš -C เบเบฑเบš compiler เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™
เบšเบฑเบ™เบซเบฒ. เปƒเบ™เบฎเบนเบšเปเบšเบšเบ™เบตเป‰, preprocessor เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบกเปˆเบ™เบซเบผเบฒเบเบเปˆเบงเบฒ tokenizer เป€เบฅเบฑเบเบ™เป‰เบญเบ
เบชเปเบฒเบฅเบฑเบšเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒ.

-fpreprocessed เปเบกเปˆเบ™ implicit เบ–เป‰เบฒเป„เบŸเบฅเปŒ input เบกเบตเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ™เบฒเบกเบชเบฐเบเบธเบ™ .i, .ii or .เป„เบก.
เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆ GCC เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡ - save-tempsโ€‹.

-ftabstop=width
เบเปเบฒเบ™เบปเบ”เป„เบฅเบเบฐเบซเปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เปเบ–เบšเบขเบธเบ”. เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ•เบปเบงเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™เบฅเบฒเบเบ‡เบฒเบ™เบ–เบฑเบ™เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡
เบ•เบปเบงเป€เบฅเบเปƒเบ™เบ„เปเบฒเป€เบ•เบทเบญเบ™เบซเบผเบทเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปเบ–เบšเบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™. เบ–เป‰เบฒเบกเบนเบ™เบ„เปˆเบฒเบซเบ™เป‰เบญเบเบฅเบปเบ‡
เบซเบผเบฒเบเบเบงเปˆเบฒ 1 เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒ 100, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 8.

-fdebug-cpp
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ debugging GCC. เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบเบฑเบš -E, dumps debugging
เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเปเบœเบ™เบ—เบตเปˆเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ. เบ—เบธเบเป† token เปƒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เบ™เปเบฒเบซเบ™เป‰เบฒเป‚เบ”เบเบเบฒเบ™ dump เบ‚เบญเบ‡
เปเบœเบ™โ€‹เบ—เบตเปˆโ€‹เบ—เบตเปˆโ€‹เบ•เบฑเป‰เบ‡โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹. เบเบฒเบ™เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ‚เบญเบ‡เปเบœเบ™เบ—เบตเปˆเบ–เบทเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡ token
เบˆเบฐเป€เบ›เบฑเบ™:

{"P":F ;"F":F ;"L": ;"C": ;"S": ;"M": ;"E": "loc": }

เป€เบกเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ -E, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบš.

-ftrack-macro-เบ‚เบฐเบซเบเบฒเบ[=เบฅเบฐเบ”เบฑเบš]
เบ•เบดเบ”เบ•เบฒเบกเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡เป‚เบ—เป€เบ„เบฑเบ™เปƒเบ™เบ—เบปเปˆเบงเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบกเบฐเบซเบฒเบžเบฒเบ. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ compiler เบ›เปˆเบญเบเบญเบญเบเบกเบฒ
เบเบฒเบ™เบงเบดเบ™เบดเป„เบชเบเปˆเบฝเบงเบเบฑเบš stack macro expansion stack เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เป€เบกเบทเปˆเบญเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™
เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบกเบฐเบซเบฒเบžเบฒเบ. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ preprocessor เปเบฅเบฐ compiler เบšเปเบฅเบดเป‚เบžเบ
เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบซเบผเบฒเบ. เป„เบ”เป‰ เบฅเบฐเบ”เบฑเบš เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบ‚เบญเบ‡ token
เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบซเบผเบธเบ”เบฅเบปเบ‡เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™. เบกเบนเบ™เบ„เปˆเบฒ 0 of
เบฅเบฐเบ”เบฑเบš de-activates เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ„เบทเบเบฑเบšเบงเปˆเบฒเบšเปเปˆเบกเบต -ftrack-macro-เบ‚เบฐเบซเบเบฒเบ เบกเบตเบขเบนเปˆ
เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. เบกเบนเบ™เบ„เปˆเบฒ 1 เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบชเบฐโ€‹เบ–เบฒเบ™โ€‹เบ—เบตเปˆ tokens เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบŠเบธเบ”โ€‹เป‚เบŠเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹
เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ” overhead. เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ™เบตเป‰ tokens เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เบœเบปเบ™โ€‹เบกเบฒโ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹เบ‚เบญเบ‡โ€‹
argument เบ‚เบญเบ‡ macro เบ„เป‰เบฒเบเบ„เบทเบŸเบฑเบ‡เบŠเบฑเบ™เบกเบตเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ”เบฝเบงเบเบฑเบ™. เบกเบนเบ™เบ„เปˆเบฒ 2 เบ•เบดเบ”โ€‹เบ•เบฒเบก tokens
เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เบ„เปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบ—เบตเปˆเบซเบดเบงเบ—เบตเปˆเบชเบธเบ”. เป€เบกเบทเปˆเบญเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ–เบทเบเบกเบญเบšเปƒเบซเป‰
เบšเปเปˆเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡, เบ„เปˆเบฒเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 2.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ -ftrack-macro-expansion=2 เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

-fexec-charset=เบชเบฒเบเป„เบŸ
เบเปเบฒเบ™เบปเบ”เบŠเบธเบ”เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบชเบฐเบ•เบฃเบดเบ‡เปเบฅเบฐเบ•เบปเบงเบญเบฑเบเบชเบญเบ™. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เปเบกเปˆเบ™ UTF-8. เบชเบฒเบเป„เบŸ เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบ”เป†เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” "iconv" เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš
เบ›เบปเบเบเบฐเบ•เบด.

-fwide-exec-charset=เบชเบฒเบเป„เบŸ
เบเปเบฒเบ™เบปเบ”เบŠเบธเบ”เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบงเป‰เบฒเบ‡, เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ•เบฃเบดเบ‡เบเบงเป‰เบฒเบ‡เปเบฅเบฐเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™.
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ UTF-32 เบซเบผเบท UTF-16, เบญเบฑเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบกเบ—เบตเปˆเบเบปเบ‡เบเบฑเบšเบ„เบงเบฒเบกเบเบงเป‰เบฒเบ‡เบ‚เบญเบ‡ "wchar_t". เป€เบ›เบฑเบ™
เบเบฑเบš -fexec-charset, เบชเบฒเบเป„เบŸ เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบ”เป†เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ "iconv" เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.
เบซเปเบชเบฐเปเบธเบ”; เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบˆเบฐเบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเป€เบซเบกเบฒเบฐ
เปเบ—เป‰เปƒเบ™ "wchar_t".

-finput-charset=เบชเบฒเบเป„เบŸ
เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบŠเบธเบ”เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบ›เป‰เบญเบ™เป€เบ‚เบปเป‰เบฒ, เปƒเบŠเป‰เบชเบณเบฅเบฑเบšเบเบฒเบ™เปเบ›เบˆเบฒเบเบŠเบธเบ”เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ‚เบญเบ‡เบ•เบปเบงเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™
เป„เบŸเบฅเปŒเป„เบ›เบซเบฒเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เป‚เบ”เบ GCC. เบ–เป‰เบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธ, เบซเบผเบท GCC
เบšเปเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบˆเบฒเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ UTF-8. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™
overridden เป‚เบ”เบเบ—เบฑเบ‡ locale เบซเบผเบทเบ•เบปเบงเป€เบฅเบทเบญเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡
เบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบชเบณเบ„เบฑเบ™เบเบงเปˆเบฒเบ–เป‰เบฒเบกเบตเบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡. เบชเบฒเบเป„เบŸ เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบ”เป†
เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” "iconv" เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.

-fworking-directory
เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเบงเปเบฒเบเปเบ–เบงเปƒเบ™เบœเบปเบ™เบญเบญเบเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบต preprocessor เบ—เบตเปˆเบˆเบฐเบ›เปˆเบญเบเปƒเบซเป‰ compiler เป„เบ”เป‰
เบฎเบนเป‰เบˆเบฑเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เปเบฅเป‰เบง, เบ•เบปเบงเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเปˆเบญเบ™เบˆเบฐเบ›เปˆเบญเบเบญเบญเบเบกเบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเปเบ–เบงเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเปเบ–เบงเบ—เบตเบชเบญเบ‡
เบเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ•เบดเบ”เบ•เบฒเบกเบ”เป‰เบงเบเบชเบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบŠเป‰เบญเบ™. GCC เบˆเบฐเปƒเบŠเป‰เบญเบฑเบ™เบ™เบตเป‰
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เป€เบกเบทเปˆเบญเบกเบฑเบ™เบกเบตเบขเบนเปˆเปƒเบ™เบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™เบ—เบตเปˆเบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™, เป€เบ›เบฑเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบ›เปˆเบญเบเบญเบญเบเบกเบฒ
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบขเบนเปˆเปƒเบ™เบšเบฒเบ‡เบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰ implicitly เบ–เป‰เบฒเบ‚เปเป‰เบกเบนเบ™ debugging เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰, เปเบ•เปˆเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเบฑเบšเบเบฑเป‰เบ‡เป„เบ”เป‰
เปเบšเบšเบŸเบญเบกเบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ” -fno-working-directoryเบ—เบตเปˆเบขเบนเปˆ เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ -P เบ—เบธเบ‡เบกเบตเบขเบนเปˆเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡
เป€เบชเบฑเป‰เบ™, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเบกเบตเบœเบปเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบšเปเปˆเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡ "#line" เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก.

-fno-show-column
เบขเปˆเบฒเบžเบดเบกเบ•เบปเบงเป€เบฅเบเบ–เบฑเบ™เปƒเบ™เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบช. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ–เป‰เบฒเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบช
เบ–เบทเบเบชเบฐเปเบเบ™เป‚