Non-representable subregs of subword pseudoregs
Ulrich Weigand
uweigand@de.ibm.com
Sat Nov 13 19:24:00 GMT 2004
Eric Botcazou wrote:
>For example on SPARC64:
(I assume this has word_mode == DImode?)
>(insn 22 21 23 1 (set (reg:SI 109 [ D.1130 ])
> (subreg:SI (reg:DI 126) 0)) 51 {*movsi_insn} (nil)
> (nil))
While there's unfortunately some amount of confusion as to which
subregs are valid, exactly, I think it should be pretty clear
that *this* subreg is certainly *not* valid.
As per the documentation, subregs can be used to denote either
- a value re-interpreted in another mode (this always means lowpart)
or
- one of the words of a multi-word value (i.e. > word_mode)
or
- a combination of the two (a lowpart of one word of a multi-word)
Since (reg:DI 126) is a single-word value, and the subreg does
not denote the lowpart, it should be invalid.
>Is it simply illegal to create non-lowpart
>subregs of subword pseudo regs?
I think so, yes.
Bye,
Ulrich
--
Dr. Ulrich Weigand
Linux on zSeries Development
Ulrich.Weigand@de.ibm.com
More information about the Gcc
mailing list