alpha [reload] bug

Joern Rennecke amylaar@cygnus.co.uk
Wed Jan 20 04:38:00 GMT 1999


> #1  0x12019bef8 in find_reloads_address (mode=DImode, memrefloc=0x0, 
>     ad=0x120588370, loc=0x120588328, opnum=1, type=RELOAD_FOR_INPUT_ADDRESS, 
>     ind_levels=0, insn=0x0) at ../../../egcs/gcc/reload.c:4670
> #2  0x12018db6c in get_secondary_mem (x=0x120587eb8, mode=DImode, opnum=1, 
>     type=RELOAD_FOR_INPUT_ADDRESS) at ../../../egcs/gcc/reload.c:705
> #3  0x1201b96cc in gen_reload (out=0x1205880e8, in=0x120587eb8, opnum=1, 
>     type=RELOAD_FOR_INPUT) at ../../../egcs/gcc/reload1.c:7776
> #4  0x1201b679c in emit_reload_insns (chain=0x12057f3b8)
>     at ../../../egcs/gcc/reload1.c:6927

All right, so the problem is that get_secondary_mem is called here, which
in turn calls find_reloads_address.
get_secondary_mem has code to re-use a previously allocated memory location
for the same operand and mode in secondary_memlocs_elim[(int) mode][opnum],
in which case no new reloads are generated.
So I think you should arrange for get_secondary_mem to be called during
the calls to find_reloads.



More information about the Gcc-bugs mailing list