[Bug target/103074] [11/12 Regression] ICE in lra_assign, at lra-assigns.c:1649 since r11-5066-gbe39636d9f68c437
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Nov 23 10:48:31 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103074
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Jakub Jelinek from comment #3)
> Ah, actually what I see is that sched1 swaps the order of:
> (insn 22 21 23 4 (parallel [
> (set (reg:SI 88)
> (ashiftrt:SI (reg/v:SI 84 [ a ])
> (const_int 32 [0x20])))
> (clobber (reg:CC 17 flags))
> ]) "pr103074.c":10:7 735 {*ashrsi3_1}
> (expr_list:REG_UNUSED (reg:CC 17 flags)
> (nil)))
> (insn 23 22 24 4 (set (reg:SI 2 cx)
> (reg/v:SI 84 [ a ])) "pr103074.c":10:7 77 {*movsi_internal}
> (expr_list:REG_DEAD (reg/v:SI 84 [ a ])
> (nil)))
> and doing a shift when cx is live isn't an option because the shift needs
> the hard register for this shift amount (the constraints are Ic and I is
> 0..31 constant, c is %cx register).
Schedulers should not move insns that set TARGET_CLASS_LIKELY_SPILLED_P (that
includes CREG) before reload. See the comment in sched-rgn.c,
add_branch_dependencies.
More information about the Gcc-bugs
mailing list