daniel tian wrote:
> there is a 'movm' problem that puzzled me. In my target machine,
> to load a large immediate data, can only move into zero register "R0".
> but R0 is a generally register. I defined the the way in the
> following:
>
> if the immediate data (op1) is larger than 1024
> then do
> {
> emit_move_insn(r0_reg_rtx, gen_rtx_CONST_INT(SImode, op1));
> //Move the immediate data into R0 register
> emit_move_insn(force_reg (mode, operands[0]), r0_reg_rtx);
> //move r0 to default register.
> }
When/where/how are you calling this code?
> the address label "common_reg " used many times. I think it will
> load one time. But after optimized with '-Os' or '-O2', it still loads
> the label "common_reg " six times..
I wonder if you're generating it too late for the optimisers to do anything?
cheers,
DaveK