reload question
Bernd Schmidt
bernds_cb1@t-online.de
Wed Mar 16 14:58:00 GMT 2005
Miles Bader wrote:
> Say I've got a mov instruction that only works via an accumulator A, and
> a two-operand add instruction. "r" regclass includes regs A,X,Y, and
> "a" regclass only includes reg A.
>
> So mov has constraints like: 0 = "g,a" 1 = "a,gi"
> and add3 has constraints: 0 = "r" 1 = "0" 2 = "i" (say)
>
> Then if there's an insn before reload like:
>
> add3 X, Y, 1
>
> Reload will notice this, and generate a reload to put Y into X, so
> you'll end up with:
>
> mov X, Y
> add3 X, X, 1
> Now, what I _expected_ to happen is that reload would then be repeated
> to handle the newly added mov insn, which would see that the mov insn's
> constraint don't match, and would then generate an additional reload to
> yield:
>
> mov A, Y
> mov X, A
> add3 X, X, 1
>
> but in fact this final step doesn't seem to be happening -- it just
> finishes reload without changing the bogus "mov X, Y" insn and goes on
> to die with an "insn does not satisfy its constraints:" error in final.
Reload insns aren't themselves reloaded. You should look at the
SECONDARY_*_RELOAD_CLASS; they'll probably let you do what you want.
Bernd
More information about the Gcc
mailing list