Hello, I have a problem with reload. I am working on a private variation of the i386 port. I am using GCC 4.1.2.
The insn (insn 38 36 39 1 x.c:30 (parallel [ (set (reg:SI 2 cx [80]) (ashift:SI (reg:SI 6 bp [81]) (subreg:QI (reg:SI 1 dx [78]) 3))) (clobber (reg:CC 17 flags)) ]) 409 {*ashlsi3_1} (insn_list:REG_DEP_TRUE 36 (nil)) (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_DEAD (reg:SI 1 dx [78]) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))))) gets the reloads Reloads for insn # 38 Reload 0: reload_in (SI) = (reg:SI 6 bp [81]) reload_out (SI) = (reg:SI 2 cx [80]) GENERAL_REGS, RELOAD_OTHER (opnum = 0) reload_in_reg: (reg:SI 6 bp [81]) reload_out_reg: (reg:SI 2 cx [80]) reload_reg_rtx: (reg:SI 2 cx [80]) Reload 1: reload_in (QI) = (reg:QI 1 dx) CREG, RELOAD_FOR_INPUT (opnum = 2), can't combine reload_in_reg: (subreg:QI (reg:SI 1 dx [78]) 3) and reload fails later down beacuse it cannot find a register for the Reload 1. The register "cx" is the only register in class CREG, and it is already taken for Reload 0. That Reload has class GENERAL_REGS, but find_dummy_reload decided to use the output register as the reload register. What is the best correction for the problem? I can think of three possible solutions: 1. Avoid using a critical register in find_dummy_reload. Before choosing the register check whether it is in a small register class. 2. In find_reload_regs, recover from a situation when no register could be found. Remove the reload registers already fixed by find_dummy_reload and try again. 3. Have an additional check between find_reloads and find_reload_regs. Check whether any reload class is a small register class. If so, check the other reloads whether they have taken a register of that class. Remove the register assignment in case of a conflict. Thanks in advance, Erwin -- Erwin Unruh IP SW LP AD 2 Fujitsu Siemens Computers GmbH Domagkstrasse 28 D-80807 München Telefon: +49 (0)89 3222 3825 Telefax: +49 (0)89 3222 3802 Email: mailto:[EMAIL PROTECTED] Internet: http://www.fujitsu-siemens.de Firmenangaben: http://www.fujitsu-siemens.de/imprint.html