On Mon, Feb 25, 2019 at 09:25:19AM +0000, Kyrill Tkachov wrote: > > --- gcc/config/arm/vfp.md.jj 2019-02-18 20:48:32.642732323 +0100 > > +++ gcc/config/arm/vfp.md 2019-02-22 00:37:36.730795663 +0100 > > @@ -871,14 +871,15 @@ (define_insn_and_split "*negdf2_vfp" > > if (REGNO (operands[0]) == REGNO (operands[1])) > > { > > operands[0] = gen_highpart (SImode, operands[0]); > > - operands[1] = gen_rtx_XOR (SImode, operands[0], GEN_INT > > (0x80000000)); > > + operands[1] = gen_rtx_XOR (SImode, operands[0], > > + GEN_INT (HOST_WIDE_INT_C (-0x80000000))); > > > const_int generation in RTL always subtly confuses me :( > > So why is 0x80000000 now -0x80000000? Shouldn't we be using > trunc_int_for_mode?
We surely can, it will be tiny bit slower though. HOST_WIDE_INT_C (-0x80000000) is basically inlining of what trunc_int_for_mode (0x80000000, SImode) will do. Or we could use gen_int_mode (0x80000000, SImode); instead of the whole GEN_INT (HOST_WIDE_INT_C (-0x80000000)). Whatever you prefer. Jakub