[Bug rtl-optimization/90007] [9 Regression] ICE in extract_constrain_insn_cached, at recog.c:2223
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Apr 8 12:02:00 GMT 2019
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.
More information about the Gcc-bugs
mailing list