This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
optimization/9531: Problem with -fprefetch-loop-arrays -funroll-loops
- From: Anthony Green <green at localhost dot localdomain>
- To: gcc-gnats at gcc dot gnu dot org
- Date: Fri, 31 Jan 2003 16:19:36 -0800
- Subject: optimization/9531: Problem with -fprefetch-loop-arrays -funroll-loops
>Number: 9531
>Category: optimization
>Synopsis: Problem with -fprefetch-loop-arrays -funroll-loops
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: pessimizes-code
>Submitter-Id: net
>Arrival-Date: Sat Feb 01 00:26:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: Anthony Green
>Release: 3.3 20021212 (experimental)
>Organization:
>Environment:
System: Linux escape 2.4.18-18.8.0 #1 Thu Nov 14 00:10:29 EST 2002 i686 i686 i386 GNU/Linux
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: /home/green/FSF/GCC/HEAD/gcc/configure --prefix=/home/green/latest/i --enable-languages=c,c++,java : (reconfigured)
>Description:
Using -fprefetch-loop-arrays with -funroll-loops results in
redundant prefetch instructions.
>How-To-Repeat:
Compile the following for mips4 with -fprefetch-loop-arrays
-funroll-loops and look for the prefetch instructions in the asm
output.
void
foo (int **outptr, int **inptr)
{
int col;
for (col = 1024*3; col > 0; col--) {
outptr[2] = *inptr++;
outptr[1] = *inptr++;
outptr[0] = *inptr++;
outptr += 3;
}
}
I see the following sequence of instructions in the output:
pref 7,0($4)
pref 7,0($4)
pref 7,0($4)
pref 6,0($5)
pref 6,0($5)
pref 6,0($5)
pref 6,0($5)
pref 6,0($5)
pref 6,0($5)
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: