This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: changing "configure" to default to "gcc -g -O2 -fwrapv ..."
- From: Vincent Lefevre <vincent+gcc at vinc17 dot org>
- To: Robert Dewar <dewar at adacore dot com>
- Cc: Andrew Pinski <pinskia at physics dot uc dot edu>, Gabriel Dos Reis <gdr at integrable-solutions dot net>, Richard Guenther <richard dot guenther at gmail dot com>, Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>, ebb9 at byu dot net, autoconf-patches at gnu dot org, bernds_cb1 at t-online dot de, bug-gnulib at gnu dot org, eggert at cs dot ucla dot edu, gcc at gcc dot gnu dot org
- Date: Sun, 31 Dec 2006 15:03:32 +0100
- Subject: Re: changing "configure" to default to "gcc -g -O2 -fwrapv ..."
- References: <200612310042.kBV0g5pt027400@localhost.localdomain> <45970D3D.1090700@adacore.com> <20061231120933.GS32297@ay.vinc17.org> <4597B5F0.5050504@adacore.com>
On 2006-12-31 08:06:56 -0500, Robert Dewar wrote:
> Vincent Lefevre wrote:
> >On 2006-12-30 20:07:09 -0500, Robert Dewar wrote:
> >> In my view, this comparison optimization should not have been put in
> >> without justification given that it clearly does affect the semantics
> >> of real code. Indeed if you really see code like
> >>
> >> if (a - 10 < 20)
> >>
> >> in place of
> >>
> >> if (a < 30)
> >>
> >> a very likely explanation is that you are deliberately doing something
> >> strange with wrap around, and should leave it alone.
> >
> >I disagree concerning your "very likely explanation". This code
> >may come from the use of macros, in which case this has nothing
> >to do with wrap around.
>
> Sorry, my "you" was unclear, I meant you as in a human not you as
> in a compiler. Yes, if the code comes from macros, it might well
> be in advertent, and of course inadvertent overflow, never mind
> potential overflow can be hidden in macros this way.
This is still not clear. If I write a - 10 < 20 (where a is signed),
this implicitly assumes that a - 10 cannot overflow; in particular,
when writing macros, I take care of that. So, from this point of
view, the optimization is safe as long as -ftrav is not used.
> My point was that if you see this in a source program, it is in
> fact a possible candidiate for code that can be destroyed by
> the optimization.
Well, only for non-portable code (i.e. code based on wrap). I also
suppose that this kind of code is used only to check for overflows.
> And that's the trouble, this is an optimization which does improve
> performance, but may destroy existing code, and the very example
> you gave to talk about improved performance is also a nice case
> of showing why it may destroy performance. In fact the wrap
> around range test is a standard idiom for "hand optimization"
> of range tests.
Yes, and the lack of optimization would be even worse.
--
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)