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