This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 16-bit real-mode code


> (insn 28 26 29 1 /mnt/disk2/src/gcc/gcc/libgcc2.c:464 (set (mem/i:HI (reg/f:HI 8 si [orig:30 D.1371 ] [30]) [5 <result>+0 S2 A16])
>         (subreg:HI (reg/v:DI 31 [ u ]) 0)) 1 {*movhi} (nil)
>     (nil))

This is a tricky one.  You need to split up the moves early enough to
let reload be flexible, but not so early that you lose optimization
opportunities.  One thing I've tried in similar cases is not allowing
subregs for all move constraints, forcing gcc to do the subreg and the
mem in different insns.

> BTW DJ, I've changed the register model to treat al, ah, etc. as
> first-class registers, with ax, dx:ax as simply groupings a la
> HARD_REGNO_NREGS.

Yup, that's what I do these days.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]