optimization/9531: Problem with -fprefetch-loop-arrays -funroll-loops

Anthony Green green@localhost.localdomain
Sat Feb 1 00:26:00 GMT 2003


>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:



More information about the Gcc-bugs mailing list