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)]))); }