This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: criteria.html open issues
- To: Geoff Keating <geoffk at geoffk dot org>
- Subject: Re: criteria.html open issues
- From: "Zack Weinberg" <zackw at Stanford dot EDU>
- Date: Tue, 29 May 2001 22:05:45 -0700
- Cc: gcc at gcc dot gnu dot org
On Tue, May 29, 2001 at 01:18:20AM -0700, Geoff Keating wrote:
> "Zack Weinberg" <zackw@stanford.edu> writes:
> >
> > We haven't really had a sensible policy about what -O levels mean,
>
> Actually, we do. They're fully documented in the Info documentation:
>
> `-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.
> ...
> `-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.
Okay, so this leads me to believe that in terms of performance of
generated code, -O0 < -O1 < -O2 for most code. How does this fit with
the reports that -O1 is about the same, or better than, -O2 in terms
of generated code performance, over a broad range of sources? Yes,
optimizations can't be counted on to improve performance always, but
we could put some effort into tuning the gross-level heuristics for
what to run at each -O level.
> `-O3'
> Optimize yet more. `-O3' turns on all optimizations specified by
> `-O2' and also turns on the `inline-functions' option.
>
> Actually, this is slightly out-of-date. -O3 switches on the
> optimisations that will trade space for speed.
-frename-registers trades space for speed? And why doesn't it turn on
-funroll-loops or -funroll-all-loops, then?
Why is -O3 -finline-functions in c-torture.exp as a separate
possibility when -O3 already turns on -finline-functions?
> ...
> `-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.
How does this fit with the assertion, above, that -O2 does not trade
size for speed?
--
zw "Shouldn't a witch be eccentric?"
"I hope not. I've never been good at cackling."
-- Reinder Dijkhuis, _Rogues of Clwyd-Rhan_