This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Inner-loop optimization regression from 3.3 to 3.4
- From: Richard Henderson <rth at redhat dot com>
- To: Jan Hubicka <jh at suse dot cz>
- Cc: Zack Weinberg <zack at codesourcery dot com>, gcc at gcc dot gnu dot org, Jan Hubicka <hubicka at ucw dot cz>
- Date: Sat, 1 Nov 2003 12:16:29 -0800
- Subject: Re: Inner-loop optimization regression from 3.3 to 3.4
- References: <87vfqt66ge.fsf@codesourcery.com> <20031013130323.GY14005@kam.mff.cuni.cz> <87fzhvdxf3.fsf@codesourcery.com> <20031017141002.GF6212@kam.mff.cuni.cz> <20031018201817.GB29612@redhat.com> <20031101113548.GC14974@kam.mff.cuni.cz>
On Sat, Nov 01, 2003 at 12:35:48PM +0100, Jan Hubicka wrote:
> Does this look OK?
I don't know. Testing on Alpha, with the following modified patch,
void f(int a, int b, int c, int d)
{
if (a >= 0 && b <= 0)
f1();
if (c >= 6 && d < 10)
f2();
}
This test is still converted at rtl expansion time; ifcvt has nothing
to work with. Weren't you trying to remove that code? Trying again,
void g(int a, int b, int c, int d)
{
if (a < 0) goto L1;
if (b > 0) goto L1;
f1();
L1:
if (c < 6) goto L2;
if (d >= 10) goto L2;
f2();
L2:;
}
Does ok with the first test but gives up with the second.
There doesn't seem to be any reason for that.
The bar is set fairly high here for your ifcvt routine, since making
the transformation during fold-const is sure to be a win most of the
time, for most targets.
r~