[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: changing "configure" to default to "gcc -g -O2 -fwrapv ..."
From: |
Ian Lance Taylor |
Subject: |
Re: changing "configure" to default to "gcc -g -O2 -fwrapv ..." |
Date: |
31 Dec 2006 21:37:00 -0800 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.4 |
address@hidden (Richard Kenner) writes:
> > But didn't this thread get started by a real program that was broken
> > by an optimization of loop invariants? Certainly I got a real bug
> > report of a real problem, which you can see here:
> >
> > http://lists.gnu.org/archive/html/bug-gnulib/2006-12/msg00084.html
>
> I just thought of something interesting about this case. We have a loop
> looking like:
>
> for (j = 1; 0 < j; j *= 2)
>
> in this case, the compiler is quite capable of arguing "this end condition
> won't terminate the loop except in the case of overflow, so obviously the
> programmer must be relying on wrapping semantics. So let's use those here"
Sure, but it's not the loop optimizer which is causing this code to
fail.
> > Here is a bit more discussion:
> >
> > http://gcc.gnu.org/ml/gcc/2006-12/msg00607.html
>
> Indeed that message hinted at exactly that point. Note that if you do
> argue along those lines, you can convert this to a loop with a new IV
> that increments up to 31 (or is it 32?).
That is in fact precisely what happens if you compile with
-fno-tree-vrp.
Ian
- Re: changing "configure" to default to "gcc -g -O2 -fwrapv ...",
Ian Lance Taylor <=