[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[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: