On Sat, Jun 11, 2022 at 1:31 AM Takayuki 'January June' Suwa <jjsuwa_sys3...@yahoo.co.jp> wrote: > > this change results in a bunch of ICEs in the tests like this: > > during RTL pass: split2 > > gcc/gcc/testsuite/gcc.c-torture/compile/20120727-1.c: In function 'f': > > gcc/gcc/testsuite/gcc.c-torture/compile/20120727-1.c:13:1: internal > > compiler error: in gen_split_5, at config/xtensa/xtensa.md:1186 > [from config/xtensa/xtensa.md] > if (GET_MODE (x) == SFmode) > REAL_VALUE_TO_TARGET_SINGLE (*CONST_DOUBLE_REAL_VALUE (x), l[0]); > else if (GET_MODE (x) == DFmode) > REAL_VALUE_TO_TARGET_DOUBLE (*CONST_DOUBLE_REAL_VALUE (x), l); > else > gcc_unreachable (); // line 1186 > x = gen_rtx_REG (SImode, REGNO (operands[0])); > > umm, i don't know how 'XEXP (operands[1], 0)' can be neither SFmode nor > DFmode... > please tell me that test piece of code, and/or apply the below patch and > reply what the compiler print to stderr: > > --- gcc/config/xtensa/xtensa.md > +++ gcc/config/xtensa/xtensa.md > @@ -1183,7 +1183,10 @@ > else if (GET_MODE (x) == DFmode) > REAL_VALUE_TO_TARGET_DOUBLE (*CONST_DOUBLE_REAL_VALUE (x), l); > else > - gcc_unreachable (); > + { > + print_rtl_single (stderr, x); > + gcc_unreachable (); > + } > x = gen_rtx_REG (SImode, REGNO (operands[0])); > if (! xtensa_constantsynth (x, l[i])) > emit_move_insn (x, GEN_INT (l[i])); >
It prints (symbol_ref/f:SI ("*.LC1") [flags 0x2] <var_decl 0x7faa79f112d0 *.LC1>) -- Thanks. -- Max