This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/23837] [4.0/4.1/4.2 regression] Wrong code with -fschedule-insns
- From: "amylaar at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 13 Dec 2005 13:16:57 -0000
- Subject: [Bug rtl-optimization/23837] [4.0/4.1/4.2 regression] Wrong code with -fschedule-insns
- References: <bug-23837-5724@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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