This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [lno] tree loop optimization causes a problem in RTL alias analysis
- From: Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
- To: Mostafa Hagog <MUSTAFA at il dot ibm dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 9 May 2004 16:52:52 +0200
- Subject: Re: [lno] tree loop optimization causes a problem in RTL alias analysis
- References: <OF9790CCEB.CFD8E14E-ONC2256E8F.004B5CE7-C2256E8F.004C2BF6@il.ibm.com>
Hello,
> We have encountered a problem when the -ftree-loop-optimize flag is
> specified. The problem causes bad schedules due to unnecessary memory
> dependences. We compiled the below code example, and compared memory
> attributes in the RTL with and without -ftree-loop-optimize. It turned
> out that when -ftree-loop-optimize was enabled the memory attributes
> (MEM_EXPR) were lost.
>
> int a[128];
> int b[128];
>
> void f ()
> {
> int i;
> for (i = 0; i < 128; i++)
> a[i] = b[i];
> }
>
> We used powerpc-apple-darwin7.2.0 with the following compiler flags:
> "-O3 -ftree-loop-optimize -funroll-loops"
> "-O3 -fno-tree-loop-optimize -funroll-loops"
>
> The following code from alias.c uses that information, and cannot
> proceed if that information is not present:
the problem (I think) is that the code above is strength-reduced to
int *p, *q;
p = a;
q = b;
for (i = 0; i < 128; i++)
*p++ = *q++;
Which does not contain the aliasing information accessible on rtl level.
By a coincidence, I am just testing a patch that should fix the problem.
Zdenek