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: [m68k]: More trouble with byte moves into Address registers


Peter Barada wrote:
pp_pack.c:2220: error: unable to find a register to spill in class `ADDR_REGS'
pp_pack.c:2220: error: this is the insn:
(insn 5559 5558 5560 694 pp_pack.c:2144 (set (reg:SI 8 %a0 [1421])
        (plus:SI (subreg:SI (reg:QI 1420) 0)
            (const_int -32 [0xffffffe0]))) 121 {*addsi3_5200} (insn_list 5558 (nil))

You might want to look at CANNOT_CHANGE_MODE_CLASS, which can be used to change how reload handles (subreg:SI (reg:QI)). That might help avoid generating QImode ADDR_REG reloads in the first place.


But if they are generated, then you need second reloads to resolve them as Ian mentioned. There is probably no way to avoid implementing this.

You should also look at MODES_TIEABLE_P, which may also help prevent getting QImode ADDR_REG reloads.

Even if you fix both of these, you will probably still need the secondary reload support for this case.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



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