This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] GCSE after reload - resubmit (SPECint +1.5% fp -0.5%).


Hi Mostafa,

> Can you please sent to me the full printouts of the error or the
> line number of the abort() ?

Here is a slightly more simplified testcase that I am using.

int
main (void)
{
  long tp[2][2][5];
  long i, j, ki, kj, mi;
  long bdm[16];

  for (i = 0; i < 2; i++)
    for (j = i; j < 2; j++)
      for (ki = 0; ki < 2; ki++)
	for (kj = 0; kj < 2; kj++)
	  {
	    if ((j == i) && (ki == kj))
	      bdm[i * 8 + ki * 4 + j * 2 + kj] = 1000;
	    else
	      {
		for (mi = 0; mi < 1; mi++)
		  if (&tp[i][ki][1 + mi] == &tp[j][kj][1])
		    abort ();
		bdm[i * 8 + ki * 4 + j * 2 + kj] = 1000;
	      }
	  }

  return 0;
}

Here is the full compiler options:

  -ms -O3 -fomit-frame-pointer -funroll-all-loops -fno-peephole2

-fno-peephole2 is not absolutely necessary, but I specified it to make
the resulting code a bit easier to read because h8300 port has a lot
of peephole2's, which may make the resulting assembly code a bit
harder to read.

With -fgcse-after-reload and some other options, the abort() get's
called from within the above code.  (I confirmed this with a simulator
by tracing the program counter.)  So somehow GCC "thinks" that
the following equality holds:

  &tp[i][ki][1 + mi] == &tp[j][kj][1]

At the if statement just above abort(), either i != j or ki != kj
holds, and mi is known to be 0, so we can't possibly have the equality
there.

I configure binutils as follows:

  ./configure --target=h8300-elf

I configure GCC as follows:

  ./configure --target=h8300-elf --enable-languages=c --with-newlib

newlib is a small embedded version of libc, but really, --with-newlib
shouldn't matter.

I attached two assembly files with and without -fno-gcse-after-reload
that you requested on IRC.

If there is anything I can do for you, please let me know.

Thanks,

Kazu Hirata
	.file	"930628-1.c"
	.h8300s
	.section .text
	.align 1
	.global _main
_main:
	stm.l	er4-er6,@-er7
	add.l	#-160,er7
	sub.l	er0,er0
	mov.l	er0,@(12,er7)
	mov.l	er0,@er7
	mov.l	er0,er5
.L24:
	cmp.l	#1,er5
	bgt	.L67:16
	mov.l	er5,er2
	shll.l	er2
	mov.l	er2,@(4,er7)
	mov.l	er5,er6
	shll.l	#2,er6
	add.l	er5,er6
	bra	.L23:16
.L68:
	shll.l	#2,er2
	sub.l	er3,er3
	add.b	#160,r3l
	add.l	er7,er3
	add.l	er3,er2
	mov.l	#1000,er0
	mov.l	er0,@(-144,er2)
	sub.l	er0,er0
	adds	#1,er0
	mov.l	er0,@(8,er7)
	sub.l	er3,er3
	adds	#4,er0
	cmp.l	er3,er5
	bne	.L14
	mov.l	@(8,er7),er2
	cmp.l	er2,er4
	bne	.L14
	mov.l	@(4,er7),er2
	add.l	er4,er2
	shll.l	er2
	add.l	er5,er2
	shll.l	er2
	add.l	er4,er2
	shll.l	#2,er2
	mov.b	#-96,r0l
	bra	.L69
.L14:
	mov.l	@er7,er3
	shll.l	#2,er3
	shll.l	er3
	shll.l	#2,er1
	add.l	er1,er3
	sub.l	er2,er2
	add.b	#80,r2l
	add.l	er7,er2
	add.l	er2,er3
	adds	#4,er3
	mov.l	er6,er1
	shll.l	#2,er1
	shll.l	er1
	shll.l	#2,er0
	add.l	er0,er1
	sub.l	er0,er0
	add.b	#80,r0l
	add.l	er7,er0
	add.l	er0,er1
	adds	#4,er1
	cmp.l	er1,er3
	bne	.L35
.L56:
	jsr	@_abort
.L35:
	mov.l	@(12,er7),er2
	shll.l	er2
	add.l	er4,er2
	shll.l	er2
	add.l	er5,er2
	shll.l	er2
	mov.l	@(8,er7),er1
	add.l	er1,er2
	shll.l	#2,er2
	sub.l	er0,er0
	add.b	#160,r0l
.L69:
	add.l	er7,er0
	add.l	er0,er2
	mov.l	#1000,er3
	mov.l	er3,@(-144,er2)
	adds	#1,er5
	adds	#4,er6
	adds	#1,er6
	cmp.l	#1,er5
	ble	.L23:16
	mov.l	@(12,er7),er2
	bra	.L28
.L67:
	mov.l	er5,er2
.L28:
	adds	#1,er2
	mov.l	er2,@(12,er7)
	mov.l	@er7,er0
	adds	#4,er0
	adds	#1,er0
	mov.l	er0,@er7
	cmp.l	#1,er2
	bgt	.L52:16
	mov.l	@(12,er7),er5
	bra	.L24:16
.L59:
	adds	#1,er4
	sub.l	er1,er1
	adds	#4,er1
	adds	#1,er1
	cmp.l	er0,er5
	bne	.L42
	bra	.L53
.L44:
	mov.l	@(12,er7),er2
	shll.l	er2
	add.l	er4,er2
	shll.l	er2
	add.l	er5,er2
	shll.l	er2
	add.w	#0,e2
	bra	.L68:16
.L55:
	mov.l	@(4,er7),er2
	add.l	er4,er2
	shll.l	er2
	mov.l	@(12,er7),er3
	add.l	er3,er2
	shll.l	er2
	add.l	er4,er2
	bra	.L68:16
.L53:
	cmp.l	#0,er4
	beq	.L55
.L42:
	mov.l	@er7,er2
	shll.l	#2,er2
	shll.l	er2
	mov.l	er1,er3
	shll.l	#2,er3
	add.l	er3,er2
	sub.l	er0,er0
	add.b	#80,r0l
	add.l	er7,er0
	add.l	er0,er2
	adds	#4,er2
	mov.l	er6,er3
	shll.l	#2,er3
	shll.l	er3
	add.l	er0,er3
	adds	#4,er3
	cmp.l	er3,er2
	bne	.L44
	bra	.L56:16
.L49:
	mov.l	@(12,er7),er2
	shll.l	er2
	add.l	er4,er2
	shll.l	er2
	add.l	er5,er2
	shll.l	er2
	add.l	er1,er2
	shll.l	#2,er2
	sub.l	er0,er0
	add.b	#160,r0l
	add.l	er7,er0
	add.l	er0,er2
	mov.l	#1000,er1
	mov.l	er1,@(-144,er2)
	mov.l	@(12,er7),er0
	bra	.L59:16
.L60:
	mov.l	@(4,er7),er2
	add.l	er4,er2
	shll.l	er2
	mov.l	@(12,er7),er0
	add.l	er0,er2
	shll.l	er2
	add.l	er4,er2
	shll.l	#2,er2
	sub.l	er1,er1
	add.b	#160,r1l
	add.l	er7,er1
	add.l	er1,er2
	mov.l	#1000,er3
	mov.l	er3,@(-144,er2)
	bra	.L59:16
.L61:
	cmp.l	er1,er4
	bne	.L46:16
	bra	.L60
.L70:
	mov.l	#1000,er0
	mov.l	er0,@(-144,er2)
	adds	#1,er1
	sub.l	er0,er0
	adds	#4,er0
	adds	#1,er0
	mov.l	@(12,er7),er2
	cmp.l	er2,er5
	bne	.L46:16
	bra	.L61
.L65:
	mov.l	@(4,er7),er2
	add.l	er4,er2
	shll.l	er2
	mov.l	@(12,er7),er0
	add.l	er0,er2
	shll.l	er2
	add.l	er4,er2
	shll.l	#2,er2
	sub.l	er3,er3
	add.b	#160,r3l
	add.l	er7,er3
	add.l	er3,er2
	bra	.L70
.L47:
	mov.l	@(12,er7),er2
	shll.l	er2
	add.l	er4,er2
	shll.l	er2
	add.l	er5,er2
	shll.l	er2
	add.l	er1,er2
	shll.l	#2,er2
	sub.l	er3,er3
	add.b	#160,r3l
	add.l	er7,er3
	add.l	er3,er2
	bra	.L70
.L48:
	mov.l	@er7,er3
	shll.l	#2,er3
	shll.l	er3
	sub.l	er0,er0
	shll.l	#2,er0
	add.l	er0,er3
	sub.l	er2,er2
	add.b	#80,r2l
	add.l	er7,er2
	add.l	er2,er3
	adds	#4,er3
	mov.l	er6,er2
	shll.l	#2,er2
	shll.l	er2
	sub.l	er0,er0
	shll.l	#2,er0
	add.l	er0,er2
	sub.l	er0,er0
	add.b	#80,r0l
	add.l	er7,er0
	add.l	er0,er2
	adds	#4,er2
	cmp.l	er2,er3
	bne	.L47
	bra	.L56:16
.L66:
	cmp.l	er1,er4
	bne	.L48
	bra	.L65
.L23:
	sub.l	er4,er4
	sub.l	er1,er1
	mov.l	@(12,er7),er3
	cmp.l	er3,er5
	bne	.L48
	bra	.L66
.L46:
	mov.l	@er7,er3
	shll.l	#2,er3
	shll.l	er3
	sub.l	er2,er2
	add.b	#80,r2l
	add.l	er7,er2
	add.l	er2,er3
	adds	#4,er3
	mov.l	er6,er2
	shll.l	#2,er2
	shll.l	er2
	shll.l	#2,er0
	add.l	er0,er2
	sub.l	er0,er0
	add.b	#80,r0l
	add.l	er7,er0
	add.l	er0,er2
	adds	#4,er2
	cmp.l	er2,er3
	bne	.L49:16
	bra	.L56:16
.L52:
	sub.w	r0,r0
	add.l	#160,er7
	ldm.l	@er7+,er4-er6
	rts
	.size	_main, .-_main
	.end
	.ident	"GCC: (GNU) 3.5.0 20040314 (experimental)"
	.file	"930628-1.c"
	.h8300s
	.section .text
	.align 1
	.global _main
_main:
	stm.l	er4-er6,@-er7
	add.l	#-160,er7
	sub.l	er0,er0
	mov.l	er0,@(12,er7)
	mov.l	er0,@er7
.L24:
	mov.l	@(12,er7),er5
	cmp.l	#1,er5
	bgt	.L28:16
	mov.l	er5,er2
	shll.l	er2
	mov.l	er2,@(4,er7)
	mov.l	er5,er6
	shll.l	#2,er6
	add.l	er5,er6
	bra	.L23:16
.L67:
	shll.l	#2,er2
	sub.l	er3,er3
	add.b	#160,r3l
	add.l	er7,er3
	add.l	er3,er2
	mov.l	#1000,er0
	mov.l	er0,@(-144,er2)
	sub.l	er0,er0
	adds	#1,er0
	mov.l	er0,@(8,er7)
	adds	#4,er0
	mov.l	@(12,er7),er3
	cmp.l	er3,er5
	bne	.L14
	mov.l	@(8,er7),er2
	cmp.l	er2,er4
	bne	.L14
	mov.l	@(4,er7),er2
	add.l	er4,er2
	shll.l	er2
	add.l	er5,er2
	shll.l	er2
	add.l	er4,er2
	shll.l	#2,er2
	mov.b	#-96,r0l
	bra	.L68
.L14:
	mov.l	@er7,er3
	shll.l	#2,er3
	shll.l	er3
	shll.l	#2,er1
	add.l	er1,er3
	sub.l	er2,er2
	add.b	#80,r2l
	add.l	er7,er2
	add.l	er2,er3
	adds	#4,er3
	mov.l	er6,er1
	shll.l	#2,er1
	shll.l	er1
	shll.l	#2,er0
	add.l	er0,er1
	sub.l	er0,er0
	add.b	#80,r0l
	add.l	er7,er0
	add.l	er0,er1
	adds	#4,er1
	cmp.l	er1,er3
	bne	.L35
.L56:
	jsr	@_abort
.L35:
	mov.l	@(12,er7),er2
	shll.l	er2
	add.l	er4,er2
	shll.l	er2
	add.l	er5,er2
	shll.l	er2
	mov.l	@(8,er7),er1
	add.l	er1,er2
	shll.l	#2,er2
	sub.l	er0,er0
	add.b	#160,r0l
.L68:
	add.l	er7,er0
	add.l	er0,er2
	mov.l	#1000,er3
	mov.l	er3,@(-144,er2)
	adds	#1,er5
	adds	#4,er6
	adds	#1,er6
	cmp.l	#1,er5
	ble	.L23:16
.L28:
	mov.l	@(12,er7),er0
	adds	#1,er0
	mov.l	er0,@(12,er7)
	mov.l	@er7,er2
	adds	#4,er2
	adds	#1,er2
	mov.l	er2,@er7
	cmp.l	#1,er0
	bgt	.L52:16
	bra	.L24:16
.L69:
	shll.l	#2,er2
	sub.l	er0,er0
	add.b	#160,r0l
	add.l	er7,er0
	add.l	er0,er2
	mov.l	#1000,er1
	mov.l	er1,@(-144,er2)
	adds	#1,er4
	sub.l	er1,er1
	adds	#4,er1
	adds	#1,er1
	mov.l	@(12,er7),er3
	cmp.l	er3,er5
	bne	.L42
	bra	.L53
.L44:
	mov.l	@(12,er7),er2
	shll.l	er2
	add.l	er4,er2
	shll.l	er2
	add.l	er5,er2
	shll.l	er2
	add.w	#0,e2
	bra	.L67:16
.L55:
	mov.l	@(4,er7),er2
	add.l	er4,er2
	shll.l	er2
	mov.l	@(12,er7),er3
	add.l	er3,er2
	shll.l	er2
	add.l	er4,er2
	bra	.L67:16
.L53:
	cmp.l	#0,er4
	beq	.L55
.L42:
	mov.l	@er7,er2
	shll.l	#2,er2
	shll.l	er2
	mov.l	er1,er3
	shll.l	#2,er3
	add.l	er3,er2
	sub.l	er0,er0
	add.b	#80,r0l
	add.l	er7,er0
	add.l	er0,er2
	adds	#4,er2
	mov.l	er6,er3
	shll.l	#2,er3
	shll.l	er3
	add.l	er0,er3
	adds	#4,er3
	cmp.l	er3,er2
	bne	.L44
	bra	.L56:16
.L49:
	mov.l	@(12,er7),er2
	shll.l	er2
	add.l	er4,er2
	shll.l	er2
	add.l	er5,er2
	shll.l	er2
	add.l	er1,er2
	bra	.L69:16
.L60:
	mov.l	@(4,er7),er2
	add.l	er4,er2
	shll.l	er2
	mov.l	@(12,er7),er1
	add.l	er1,er2
	shll.l	er2
	add.l	er4,er2
	bra	.L69:16
.L61:
	cmp.l	er1,er4
	bne	.L46:16
	bra	.L60
.L70:
	mov.l	#1000,er0
	mov.l	er0,@(-144,er2)
	adds	#1,er1
	sub.l	er0,er0
	adds	#4,er0
	adds	#1,er0
	mov.l	@(12,er7),er2
	cmp.l	er2,er5
	bne	.L46:16
	bra	.L61
.L65:
	mov.l	@(4,er7),er2
	add.l	er4,er2
	shll.l	er2
	mov.l	@(12,er7),er0
	add.l	er0,er2
	shll.l	er2
	add.l	er4,er2
	shll.l	#2,er2
	sub.l	er3,er3
	add.b	#160,r3l
	add.l	er7,er3
	add.l	er3,er2
	bra	.L70
.L47:
	mov.l	@(12,er7),er2
	shll.l	er2
	add.l	er4,er2
	shll.l	er2
	add.l	er5,er2
	shll.l	er2
	add.l	er1,er2
	shll.l	#2,er2
	sub.l	er3,er3
	add.b	#160,r3l
	add.l	er7,er3
	add.l	er3,er2
	bra	.L70
.L48:
	mov.l	@er7,er3
	shll.l	#2,er3
	shll.l	er3
	sub.l	er0,er0
	shll.l	#2,er0
	add.l	er0,er3
	sub.l	er2,er2
	add.b	#80,r2l
	add.l	er7,er2
	add.l	er2,er3
	adds	#4,er3
	mov.l	er6,er2
	shll.l	#2,er2
	shll.l	er2
	sub.l	er0,er0
	shll.l	#2,er0
	add.l	er0,er2
	sub.l	er0,er0
	add.b	#80,r0l
	add.l	er7,er0
	add.l	er0,er2
	adds	#4,er2
	cmp.l	er2,er3
	bne	.L47
	bra	.L56:16
.L66:
	cmp.l	er1,er4
	bne	.L48
	bra	.L65
.L23:
	sub.l	er4,er4
	sub.l	er1,er1
	mov.l	@(12,er7),er3
	cmp.l	er3,er5
	bne	.L48
	bra	.L66
.L46:
	mov.l	@er7,er3
	shll.l	#2,er3
	shll.l	er3
	sub.l	er2,er2
	add.b	#80,r2l
	add.l	er7,er2
	add.l	er2,er3
	adds	#4,er3
	mov.l	er6,er2
	shll.l	#2,er2
	shll.l	er2
	shll.l	#2,er0
	add.l	er0,er2
	sub.l	er0,er0
	add.b	#80,r0l
	add.l	er7,er0
	add.l	er0,er2
	adds	#4,er2
	cmp.l	er2,er3
	bne	.L49:16
	bra	.L56:16
.L52:
	sub.w	r0,r0
	add.l	#160,er7
	ldm.l	@er7+,er4-er6
	rts
	.size	_main, .-_main
	.end
	.ident	"GCC: (GNU) 3.5.0 20040314 (experimental)"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]