· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Gcc Optimization Options

GccOptimizationOptionsÀÔ´Ï´Ù.

GCC Optimization Options


gcc version 3.2.2 ±âÁØ.

gcc version 3.4.6 ±âÁØ.

Option Details

gcc´Â ±âº»ÀûÀ¸·Î ¾Æ¹«·± ¿É¼ÇÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ¸¸µé¾îÁö´Â Äڵ带 ÃÖÀûÈ­(optimization)½ÃÅ°Áö ¾Ê½À´Ï´Ù. ÃÖÀûÈ­¸¦ À§ÇØ, ¿©·¯°¡Áö ¿É¼ÇÀ» Á¦°øÇϴµ¥ (¾Æ·¡ Ç¥ Âü°í), ÀÌµé ¿É¼ÇÀ» ÀÏÀÏÈ÷ ¼±ÅÃÇϱ⠺¸´Ù´Â ÀÌµé ¿É¼ÇÀ» ¼¼Æ®·Î ¹­¾î Á¦°øÇÏ´Â '-O', '-O1', '-O2', '-O3' µîÀ» ÀϹÝÀûÀ¸·Î ¾¹´Ï´Ù. (Âü°í·Î '-O0'´Â ÀüÇô ÃÖÀûÈ­ÇÏÁö ¸»¶ó´Â, default ¿É¼ÇÀÔ´Ï´Ù.)

'-O' ¶Ç´Â '-O1'ÀÇ °æ¿ì, ¸¸µé¾îÁö´Â ¿ÀºêÁ§Æ®, ¶Ç´Â ½ÇÇà ÆÄÀÏÀ» °¡´ÉÇÑ ÀÛ°Ô Çϸ鼭, ÄÄÆÄÀÏ ½Ã°£ÀÌ ¿À·¡°É¸®Áö ¾Ê´Â ¹üÀ§¿¡¼­ ÃÖÀûÈ­¸¦ ¼öÇàÇÕ´Ï´Ù.

'-O2'ÀÇ °æ¿ì, ¸¸µé¾îÁö´Â Äڵ尡 °¡´ÉÇÑ ºü¸£°Ô ¼öÇàµÇµµ·Ï ÇÏÁö¸¸, ÄÚµåÀÇ Å©±â°¡ ³Ê¹« Ä¿ÁöÁö ¾Êµµ·Ï ÇÏ´Â ¹üÀ§¿¡¼­ ÃÖÀûÈ­¸¦ ¼öÇàÇÕ´Ï´Ù.

'-Os'ÀÇ °æ¿ì, '-O2'¿¡¼­ Á¦°øÇÏ´Â ¸ðµç ÃÖÀûÈ­ ±â´ÉÀ» ´Ù ¾²Áö¸¸, ÄÚµåÀÇ Å©±â¸¦ Áõ°¡½ÃÅ°´Â ÃÖÀûÈ­ ±â´ÉÀº »©°í ³ª¼­ ÃÖÀûÈ­¸¦ ¼öÇàÇÕ´Ï´Ù.

'-O3'ÀÇ °æ¿ì, ÄÚµåÀÇ Å©±â´Â ÀüÇô ½Å°æ ¾²Áö ¾Ê°í, ¿ÀÁ÷ ºü¸¥ Äڵ带 ¸¸µé¾î ³»±â À§ÇØ ÃÖÀûÈ­¸¦ ¼öÇàÇÕ´Ï´Ù. ±×·¯³ª, ²À »ý°¢ÇØ µÎ¾î¾ß ÇÒ Á¡Àº, '-O3'·Î ¸¸µé¾î³½ Äڵ尡 ¹Ýµå½Ã '-O2'¸¦ ½á¼­ ¸¸µé¾î³½ Äڵ庸´Ù ºü¸£´Ù´Â º¸ÀåÀº ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. ¿Ö³ÄÇϸé, º¸Åë CPU°¡ ±â°è¾î¸¦ ¼öÇàÇÒ ¶§, ÀÏÁ¤ÇÑ ºÐ·®¸¸Å­ ¸ÕÀú CPU ³»ºÎÀÇ cache(ij½Ã)¿¡ ºÒ·¯¿Í¼­ ¼öÇàÇϴµ¥, '-O3'¸¦ ½á¼­ ¸¸µç ÄÚµå´Â ´ë°³ Å©±â°¡ Ä¿¼­, ÀÌ cache¿¡ µé¾î°¥ ¼ö ÀÖ´Â ¸í·ÉÀÇ ¾çÀÌ »ó´ëÀûÀ¸·Î Àû¾îÁö±â ¶§¹®¿¡, ¿ÀÈ÷·Á ´À·ÁÁú °¡´É¼ºµµ ÀÖ½À´Ï´Ù.

Included in Level
Optimization -O1 -O2 -Os -O3
defer-pop O O O O
thread-jumps O O O O
branch-probabilities O O O O
cprop-registers O O O O
guess-branch-probability O O O O
omit-frame-pointer O O O O
merge-constants O O O O
loop-optimize O O O O
if-conversion O O O O
if-conversion2 O O O O
align-loops X O X O
align-jumps X O X O
align-labels X O X O
align-functions X O X O
crossjumping X O O O
prefetch-loop-array ? ? X ?
optimize-sibling-calls X O O O
cse-follow-jumps X O O O
cse-skip-blocks X O O O
gcse X O O O
gcse-lm X O O O
gcse-sm X O O O
gcse-las X O O O
expensive-optimizations X O O O
strength-reduce X O O O
rerun-cse-after-loop X O O O
rerun-loop-opt X O O O
caller-saves X O O O
force-mem X O O O
peephole2 X O O O
regmove X O O O
strict-aliasing X O O O
delete-null-pointer-checks X O O O
reorder-blocks X O O O
reorder-functions X O O O
unit-at-a-time X O ? O
schedule-insns X O O O
schedule-insns2 X X X O
schedule-interblock X O ? O
sched-spec X O ? O
inline-functions X X X O
rename-registers X X X O
web X X X O
unswitch-loops X X ? O

'-On' (n=1, 2, 3) ²ÃÀÇ ¿É¼Ç°ú ´õºÒ¾î À§ Ç¥ÀÇ ¿ÞÆí ¿É¼ÇÀ» ¼¯¾î ¾µ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, À§ Ç¥¿¡ µû¸£¸é '-O2'¸¦ ¾µ °æ¿ì, 'inline-function' ÃÖÀûÈ­´Â Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. µû¶ó¼­ ´ÙÀ½°ú °°ÀÌ '-O2'¿¡ ÇØ´çÇÏ´Â ¸ðµç ÃÖÀûÈ­ ±â¹ýµé°ú '-inline-functions'À» ÇÔ²² ¾µ ¼ö ÀÖ½À´Ï´Ù:
$ gcc -O2 -finline-funtions hello.c

¹°·Ð, ƯÁ¤ ¿É¼Ç ±â´ÉÀ» »©´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. ¾Æ·¡´Â '-O3'°¡ Á¦°øÇÏ´Â ¸ðµç ÃÖÀûÈ­ ±â¹ýÀ» Àû¿ëÇÏÁö¸¸ 'inline-functions' ÃÖÀûÈ­¸¸ »©°í ÄÄÆÄÀÏÇÏ´Â °ÍÀ» º¸¿©ÁÝ´Ï´Ù.

$ gcc -O3 -fno-inline-functions hello.c

Áï, À§ Ç¥ÀÇ ¿ÞÆí ºÎºÐÀÇ ¿É¼ÇÀ» Àû¿ë½ÃÅ°·Á¸é(on) "-f¿É¼ÇÀ̸§"À» ¾²°í, ²ô·Á¸é(off), "-fno-¿É¼ÇÀ̸§" ²ÃÀ» ¾¹´Ï´Ù.



Target CPU Types -march= Type
i386 DX/SX/CX/EX/SL i386
i486 DX/SX/DX2/SL/SX2/DX4 i486
487 i486
Pentium pentium
Pentium MMX pentium-mmx
Pentium Pro i686, pentiumpro
Pentium II pentium2
Celeron pentium2
Pentium III pentium3
Pentium IIIM pentium3m
Pentium M pentium-m
Pentium 4 pentium4
Pemtium 4M pentium4m
Pentium 4 Prescottprescott
Pentium 4 Xeon, Nocona nocona
Via C3 c3
Winchip 2 winchip2
Winchip C6-2 winchip-c6
AMD K5 i586
AMD K6 k6
AMD K6 II k6-2
AMD K6 III k6-3
AMD Athlon athlon
AMD Athlon 4 athlon-4
AMD Athlon XP athlon-xp
AMD Athlon MP athlon-mp
AMD Duron athlon
AMD Tbird athlon-tbird
AMD K8 k8
AMD Opteron opteron
AMD Athlon 64 athlon64
AMD Athlon FX athlon-fx
IDT Winchip C6 winchip-c6
IDT Winchip2 winchip2
Via C3 c3
Via C3-2 c3-2

¾Æ·¡ PDF´Â °£´ÜÇÑ XML tree¸¦ memory¿¡ buildÇÏ´Â ÇÁ·Î±×·¥À» ¿©·¯ °¡Áö ÃÖÀûÈ­ ¿É¼ÇÀ» ½á¼­ ÄÄÆÄÀÏÇÑ ÈÄ, ½ÇÇà ½Ã°£À» Àç º» °ÍÀÔ´Ï´Ù.



References

ÀÌ ±ÛÀÇ ´ëºÎºÐÀº [http]Linux JournalÀÇ 2005³â 3¿ùÆÇ¿¡ ³ª¿Â, M. Tim Jones¾¾°¡ ¾´ "[http]Optimization in GCC"¸¦ Åä´ë·Î ¸¸µç °ÍÀÔ´Ï´Ù. ¿ø¹®À» º¸½Ã¸é ´õ ÁÁÀ» °Í °°½À´Ï´Ù.

GCC Info ManualÀ» º¸½Ã¸é ÃÖ½ÅÀÇ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ¶Ç´Â [http]GCC Online DocumentationÀ» Âü°íÇϱ⠹ٶø´Ï´Ù.


[http]Strength Reduction for Loop-Invariant Types by Phung Hua Nguyen and Jingling Xue
(°¡ÀÔÇϽðí loginÇÏ½Ã¸é º¼ ¼ö ÀÖ½À´Ï´Ù.)

[http]Global Common Subexpression Elimination by John Cocke


[http]KLDP Codefest 2005-02-18¿¡¼­ ½èÀ½ -- [http]½Å¼º±¹ 2006-08-28 GCC 3.4.6 ³»¿ë Ãß°¡ -- [http]½Å¼º±¹


ID
Password
Join
If you always postpone pleasure you will never have it. Quit work and play for once!


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-08-29 08:31:05
Processing time 0.0106 sec