[BusyBox] Why is it so bad...?

Tom Cameron TCameron at stmarysbank.com
Mon Jan 22 20:20:35 UTC 2001


Erik,
	So does that mean that -O3 will enlarge the size of the final
product due to enabling loop unrolling and inline functions, or am I
misunderstanding what they are?  Thank you for your response, as my man
pages don't have the -Os optimization rule in them (possibly an older
version of the compiler, as the base system I'm assembling my busybox-based
system on is Mandrake 7.0).  Again, thanks for all your help!

--
Thomas Cameron
Network Technician / Operations Specialist
St. Mary's Bank

> -----Original Message-----
> From:	Erik Andersen [SMTP:andersen at lineo.com]
> Sent:	Monday, January 22, 2001 2:51 PM
> To:	Tom Cameron
> Cc:	busybox at busybox.net
> Subject:	Re: [BusyBox] Why is it so bad...?
> 
> On Mon Jan 22, 2001 at 02:21:16PM -0500, Tom Cameron wrote:
> > Hello all,
> > 	I was reading through the GCC man page, wondering what horrible
> > things '-O3' did to code, so as to make most people shy away from it.  I
> > have compiled kernels and programs with this option (instead of -Os or
> -O2),
> > and have had no problems.  What is the difference between these options?
> > What does -Os do?  Has anyone run any performance/size/stability tests
> on
> > each?  anyone have comments?  Let me know please, as this is quite
> > interesting to me (performance is everything with the project I'm
> currently
> > working on).  Thanks in advance!
> 
> I use -Os by default for busybox, since that means "Optimize for size",
> which is
> the whole point of busybox.  Since you asked, I here quote from the gcc
> Manual.
> 
>     Options That Control Optimization
> 
>     These options control various sorts of optimizations: 
> 
>     -O 
>     -O1 
> 	Optimize. Optimizing compilation takes somewhat more time, and a lot
> more
> 	memory for a large function. Without `-O', the compiler's goal is to
> reduce the
> 	cost of compilation and to make debugging produce the expected
> results.
> 	Statements are independent: if you stop the program with a
> breakpoint between
> 	statements, you can then assign a new value to any variable or
> change the
> 	program counter to any other statement in the function and get
> exactly the
> 	results you would expect from the source code. Without `-O', the
> compiler only
> 	allocates variables declared register in registers. The resulting
> compiled code
> 	is a little worse than produced by PCC without `-O'. With `-O', the
> compiler
> 	tries to reduce code size and execution time.  When you specify
> `-O', the
> 	compiler turns on `-fthread-jumps' and `-fdefer-pop' on all
> machines. The
> 	compiler turns on `-fdelayed-branch' on machines that have delay
> slots, and
> 	`-fomit-frame-pointer' on machines that can support debugging even
> without a
> 	frame pointer. On some machines the compiler also turns on other
> flags. 
> 
>     -O2
> 
> 	Optimize even more. GCC performs nearly all supported optimizations
> that do not
> 	involve a space-speed tradeoff. The compiler does not perform loop
> unrolling or
> 	function inlining when you specify `-O2'. As compared to `-O', this
> option
> 	increases both compilation time and the performance of the generated
> code.
> 	`-O2' turns on all optional optimizations except for loop unrolling,
> function
> 	inlining, and register renaming. It also turns on the `-fforce-mem'
> option on
> 	all machines and frame pointer elimination on machines where doing
> so does not
> 	interfere with debugging. 
> 
>     -O3
> 
> 	Optimize yet more. `-O3' turns on all optimizations specified by
> `-O2' and also
> 	turns on the `-finline-functions' and `-frename-registers' options. 
> 
>     -O0
> 	Do not optimize. 
> 
>     -Os
> 	Optimize for size. `-Os' enables all `-O2' optimizations that do not
> typically
> 	increase code size. It also performs further optimizations designed
> to reduce
> 	code size. 
> 
>  -Erik
> 
> --
> Erik B. Andersen   email:  andersen at lineo.com
> --This message was written using 73% post-consumer electrons--





More information about the busybox mailing list