https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32497

--- Comment #4 from Valeriy E. Ushakov <uwe at netbsd dot org> ---
Seems to fail more or less the same way without the patch.  NetBSD current with
gcc 5.4.0.  Building on linux/amd64.  When native gcc is cross compiled

shle--netbsdelf-c++ ... -c insn-emit.c

fails with:

insn-emit.c:6382:3: error: this decimal constant is unsigned only in ISO C90
[-Werror]

This is about 4294967295L in gen_mshflo_l_di().   It no longer complains about
-4294967296L in gen_mshfhi_l_di() just above, though.  The relevant fragment of
insn-emit.c is:

/*
/home/uwe/work/netbsd/ro/src/external/gpl3/gcc/dist/gcc/config/sh/sh.md:15987
*/
rtx
gen_mshfhi_l_di (rtx operand0 ATTRIBUTE_UNUSED,
        rtx operand1 ATTRIBUTE_UNUSED,
        rtx operand2 ATTRIBUTE_UNUSED)
{
  return gen_rtx_SET (VOIDmode,
        operand0,
        gen_rtx_IOR (DImode,
        gen_rtx_LSHIFTRT (DImode,
        operand1,
        const_int_rtx[MAX_SAVED_CONST_INT + (32)]),
        gen_rtx_AND (DImode,
        operand2,
        GEN_INT (-4294967296L))));
}

/*
/home/uwe/work/netbsd/ro/src/external/gpl3/gcc/dist/gcc/config/sh/sh.md:16037
*/
rtx
gen_mshflo_l_di (rtx operand0 ATTRIBUTE_UNUSED,
        rtx operand1 ATTRIBUTE_UNUSED,
        rtx operand2 ATTRIBUTE_UNUSED)
{
  return gen_rtx_SET (VOIDmode,
        operand0,
        gen_rtx_IOR (DImode,
        gen_rtx_AND (DImode,
        operand1,
        GEN_INT (4294967295L)),
        gen_rtx_ASHIFT (DImode,
        operand2,
        const_int_rtx[MAX_SAVED_CONST_INT + (32)])));
}

Reply via email to