GCC trunk SPEC2000 performance
law@redhat.com
law@redhat.com
Thu Jun 20 14:47:00 GMT 2002
In message <3D124416.5559DB3E@moene.indiv.nluug.nl>, Toon Moene writes:
> Breakpoint 1, copy_rtx_and_substitute (orig=0x405856b0, map=0x85c2718,
> for_lhs=0) at ../../combined/gcc/integrate.c:2065
> 2065 if (REG_POINTER (map->x_regno_reg_rtx[regno]))
> (gdb) p reload_completed
> $1 = 0
> (gdb) p reload_in_progress
> $2 = 0
>
> Nice try, but no cigar :-)
OK. One theory gone.
The other possibility raised by David is that some phase of RTL generation
can turn a REG into a MEM (perhaps ADDRESSOF elimination?)
Looking at function.c I see three lines which look like:
PUT_CODE (reg, MEM);
They appear in put_reg_into_stack, gen_mem_addressof and put_var_into_stack.
If you could put a conditional breakpoint on each of those and see if
they trigger, that would tell us beyond a reasonable doubt that MEMs
can/should appear in the register array.
I'd do this by first running without the breakpoint set. When you get the
abort walk up the call chain until you're in copy_rtx_and_substitute
(ie the location where we checked REG_POINTER on the MEM). print "regno".
Then install your conditional breakpoints with the following condition
reg->fld[0].rtint == <value of regno from above>
Re-run and see if any of them trigger.
jeff
More information about the Gcc
mailing list