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: Jan Hubicka <jh at suse dot cz>
- To: Richard Henderson <rth at redhat dot com>, Jan Hubicka <jh at suse dot cz>,Zack Weinberg <zack at codesourcery dot com>, gcc at gcc dot gnu dot org,Jan Hubicka <hubicka at ucw dot cz>
- Date: Sun, 2 Nov 2003 00:22:47 +0100
- 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> <20031101201629.GC11339@redhat.com>
> 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.
Agreed.
I will look into these two problems and lets see how far we can get.
Note that it still seems to give enought positives even with fold-const
transformations enabled so I am still not quite sure how it is best to
these
Honza
>
>
> r~