https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90007
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2019-04-08 Ever confirmed|0 |1 --- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> --- The pattern of the offending instruction is defined as (define_insn "*float<SWI48:mode><MODEF:mode>2" [(set (match_operand:MODEF 0 "register_operand" "=f,v,v") (float:MODEF (match_operand:SWI48 1 "nonimmediate_operand" "m,r,m")))] since RA is nowadays able to reload input operand of alternative 0: (insn 17 35 15 2 (set (reg:DF 95) (float:DF (reg:SI 98))) "pr90007.c":8:21 172 {*floatsidf2} (expr_list:REG_DEAD (reg:SI 98) (nil))) via memory: (insn 17 35 37 2 (set (reg:DF 8 st [95]) (float:DF (mem/c:SI (plus:DI (reg/f:DI 7 sp) (const_int -4 [0xfffffffffffffffc])) [1 %sfp+-4 S4 A32]))) "pr90007.c":8:21 172 {*floatsidf2} (nil)) sel-sched is not prepared for this, uses: --cut here-- /* Estimate the cost of issuing INSN on DFA state STATE. */ static int estimate_insn_cost (rtx_insn *insn, state_t state) { static state_t temp = NULL; int cost; if (!temp) temp = xmalloc (dfa_state_size); memcpy (temp, state, dfa_state_size); cost = state_transition (temp, insn); if (cost < 0) return 0; else if (cost == 0) return 1; return cost; } --cut here-- that calls state_transition, which tries to calculate and verify constraints via the following call sequence: #4 0x000000000064ea7f in extract_constrain_insn_cached (insn=insn@entry=0x7fffea669940) at ../../git/gcc/gcc/recog.c:2223 #5 0x0000000001217c4f in get_attr_type (insn=insn@entry=0x7fffea669940) at ../../git/gcc/gcc/config/i386/i386.md:2288 #6 0x000000000124994c in internal_dfa_insn_code_bdver1 (insn=0x7fffea669940) at ../../git/gcc/gcc/config/i386/i386.md:15343 #7 0x0000000001233169 in dfa_insn_code (insn=0x27) at insn-automata.c:158875 #8 state_transition (state=0x21a7af0, insn=insn@entry=0x7fffea669940) at insn-automata.c:27818 and crashes due to unmet constraints.