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

Reply via email to