Gerald Pfeifer <[EMAIL PROTECTED]> writes: | On Tue, 2 Jan 2007, Gabriel Dos Reis wrote: | >|> for (i = 1; i < m; ++i) | >|> { | >|> if (i > 0) | >|> bar (); | >|> } | >| Of course, this is an example where either the programmer is doing | >| something very silly or else is expecting overflow and depending on | >| wrap semantics, so it seems to me marginal to remove that "if". My | >| suggestion would be to issue a warning saying that the test will never | >| be false, but leaving it in. | > That make sense to me. | | I'm worried about our ability to optimize deeply inlined code and things | like template-heavy C++ code if do skip optimizations like this.
I suspect part of Richard K.'s questions has been to determine, based on data, what improvements we actually gain from doing that kind of elimination predicated on undefined-ness of signed integer arithmetic overflow. It would be also useful to see how that affects inlining (for inlining, we may be able to adequately annotate the trees). I fear I haven't seen any. -- Gaby