[Bug rtl-optimization/23837] [4.0/4.1/4.2 regression] Wrong code with -fschedule-insns
------- Comment #21 from amylaar at gcc dot gnu dot org 2005-12-13 13:16 -------
(In reply to comment #17)
> Created an attachment (id=10461)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10461&action=view) [edit]
> Instruction stream (stripped) before scheduling
>
(insn/s 24 0 (set (subreg:SI (reg:DI 104) 0)
(ior:SI (ashift:SI (reg:SI 102)
(const_int 16 [0x10]))
(lshiftrt:SI (subreg:SI (reg/v:DI 95 [ x ]) 4)
(const_int 16 [0x10])))) 181 {*pa.md:6669}
(insn_list:REG_DEP_ANTI 29 (nil))
(expr_list:REG_NO_CONFLICT (reg/v:DI 95 [ x ])
(nil)))
(insn/s 28 0 (set (subreg:SI (reg:DI 104) 4)
(ior:SI (ashift:SI (reg:SI 99 [ x ])
(const_int 16 [0x10]))
(lshiftrt:SI (subreg:SI (reg/v:DI 95 [ x ]) 0)
(const_int 16 [0x10])))) 181 {*pa.md:6669}
(insn_list:REG_DEP_ANTI 24 (nil))
(expr_list:REG_NO_CONFLICT (reg/v:DI 95 [ x ])
(nil)))
If (reg/v:DI 95 [ x ]) and (reg:DI 104) are assigned to the same hard register,
(subreg:SI (reg/v:DI 95 [ x ]) 0) gets clobbered in insn 24, before it is used
in insn 28. Therefore, the REG_NO_CONFLICT block containing these two
instructions is bogus.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23837
------- You are receiving this mail because: -------
You reported the bug, or are watching the reporter.
Reply to: