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: Robert Dewar <dewar at adacore dot com>
- To: Robert Dewar <dewar at adacore dot com>, 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 08:06:56 -0500
- 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>
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.
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.
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.