|
From: | Robert Dewar |
Subject: | Re: changing "configure" to default to "gcc -g -O2 -fwrapv ..." |
Date: | Sun, 31 Dec 2006 08:06:56 -0500 |
User-agent: | Thunderbird 1.5.0.9 (Windows/20061207) |
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.
[Prev in Thread] | Current Thread | [Next in Thread] |