Hello all, For the 16 bit target that i am currently porting can have only positive offsets less than 0x100. (unsigned 8 bit) for offset addressing mode. During reload i am getting ICE because the address created is not legitimate. So i guess i have to define the macro LEGITIMIZE_RELOAD_ADDRESS. But i am not sure how to do this?
With this will i be able to convert load Rd, Rb[offset] into li Rs, offset add Rs,Rb load Rd, Rs where Rs is a reserved register. Or the only way is to do this like the other targets say in rs6000 >From rs6000_legitimize_reload_address() /* Reload the high part into a base reg; leave the low part in the mem directly. */ x = gen_rtx_PLUS (GET_MODE (x), gen_rtx_PLUS (GET_MODE (x), XEXP (x, 0), GEN_INT (high)), GEN_INT (low)); push_reload (XEXP (x, 0), NULL_RTX, &XEXP (x, 0), NULL, BASE_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0, opnum, (enum reload_type)type); *win = 1; return x; I guess this will generate something like add Rs, Rb, excess_offset load Rd, Rs[legitimate_offset]; Regards, Shafi