https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94420
Bug ID: 94420 Summary: ICE error: insn does not satisfy its constraints Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: krebbel at gcc dot gnu.org, segher at gcc dot gnu.org Target Milestone: --- Host: powerpc64-linux-gnu Target: powerpc64-linux-gnu It's reduced from moonjit bug: https://github.com/moonjit/moonjit/issues/74 $ cat /tmp/moonjit.i register long int *a __asm__("r2"); long int b; void fn1() { long *p = &b; for (;;) *p++ = (long int)a; } $ ./xgcc -B. /tmp/moonjit.i -c $ ./xgcc -B. /tmp/moonjit.i -c -O2 /tmp/moonjit.i: In function ‘fn1’: /tmp/moonjit.i:8:1: error: insn does not satisfy its constraints: 8 | } | ^ (insn 7 5 8 2 (set (reg/f:DI 121) (unspec:DI [ (symbol_ref:DI ("*.LANCHOR0") [flags 0x182]) (reg/f:DI 118 [ a.2_2 ]) ] UNSPEC_TOCREL)) 731 {*tocrefdi} (expr_list:REG_EQUAL (symbol_ref:DI ("*.LANCHOR0") [flags 0x182]) (nil))) during RTL pass: combine /tmp/moonjit.i:8:1: internal compiler error: in extract_constrain_insn_cached, at recog.c:2207 0x10f19513 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) ../../gcc/rtl-error.c:108 0x10f195a7 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) ../../gcc/rtl-error.c:119 0x10ea179f extract_constrain_insn_cached(rtx_insn*) ../../gcc/recog.c:2207 0x11b779b7 get_attr_prefixed(rtx_insn*) ../../gcc/config/rs6000/rs6000.md:647 0x116c09df rs6000_insn_cost ../../gcc/config/rs6000/rs6000.c:21141 0x10f30097 insn_cost(rtx_insn*, bool) ../../gcc/rtlanal.c:5440 0x11ef525b combine_instructions ../../gcc/combine.c:1236 0x11f2b06f rest_of_handle_combine ../../gcc/combine.c:15059 0x11f2b1e3 execute ../../gcc/combine.c:15104