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
>Originator:     Anthony Green
>Release:        3.3 20021212 (experimental)
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) 

	Using -fprefetch-loop-arrays with -funroll-loops results in
redundant prefetch instructions.


	Compile the following for mips4 with -fprefetch-loop-arrays
-funroll-loops and look for the prefetch instructions in the asm

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)



More information about the Gcc-bugs mailing list