[Bug target/35193] [4.3 Regression] can't find a register in class 'R1_REGS' while reloading 'asm'
danglin at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Mon Feb 18 15:24:00 GMT 2008
------- Comment #6 from danglin at gcc dot gnu dot org 2008-02-18 15:23 -------
The testcase compiles with -fno-gcse. However, the result from the gcse1
pass using the 4.2 branch is similar to that with 4.3.
In the greg dump with 4.3, we have:
(insn 957 956 958 132
../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:220 (set (reg/f:SI
735)
(high:SI (symbol_ref:SI ("lock.8450") [flags 0x2] <var_decl 0x40605840
lock>))) 49 {*pa.md:3017} (expr_list:REG_EQUIV (high:SI (symbol_ref:SI
("lock.8450") [flags 0x2] <var_decl 0x40605840 lock>))
(nil)))
(insn 958 957 1588 132
../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:220 (set (reg/f:SI
743)
(lo_sum:SI (reg/f:SI 735)
(symbol_ref:SI ("lock.8450") [flags 0x2] <var_decl 0x40605840
lock>))) 52 {*pa.md:3097} (expr_list:REG_EQUIV (symbol_ref:SI ("lock.8450")
[flags 0x2] <var_decl 0x40605840 lock>)
(nil)))
In the 4.2 dump, we have:
(insn 1097 1096 1764 125 (set (reg:SI 1 %r1)
(high:SI (symbol_ref:SI ("lock___8727") [flags 0x2] <var_decl
0x402ece18
lock>))) 49 {*pa.md:2959} (nil)
(expr_list:REG_EQUIV (high:SI (symbol_ref:SI ("lock___8727") [flags 0x2]
<va
r_decl 0x402ece18 lock>))
(nil)))
(insn 1764 1097 1102 125 (set (reg/f:SI 18 %r18 [692])
(reg:SI 1 %r1)) 37 {*pa.md:2484} (nil)
(nil))
(insn 1102 1764 1098 125 (set (reg:SI 19 %r19 [574])
(const_int 1 [0x1])) 37 {*pa.md:2484} (nil)
(expr_list:REG_EQUIV (const_int 1 [0x1])
(nil)))
(insn 1098 1102 1103 125 (set (reg/f:SI 10 %r10 [694])
(lo_sum:SI (reg/f:SI 18 %r18 [692])
(symbol_ref:SI ("lock___8727") [flags 0x2] <var_decl 0x402ece18
lock
>))) 52 {*pa.md:3039} (nil)
(expr_list:REG_EQUIV (symbol_ref:SI ("lock___8727") [flags 0x2] <var_decl
0x
402ece18 lock>)
(nil)))
Also, there is:
Reloads for insn # 1097
Reload 0: reload_out (SI) = (reg/f:SI 18 %r18 [692])
R1_REGS, RELOAD_FOR_OUTPUT (opnum = 0)
reload_out_reg: (reg/f:SI 18 %r18 [692])
reload_reg_rtx: (reg:SI 1 %r1)
It seems like 4.3 is no longer doing the output reload.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35193
More information about the Gcc-bugs
mailing list