On 2/25/19 9:35 AM, Jakub Jelinek wrote:
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)).
Let's use gen_int_mode. It looks the most clear and self-documenting to me.
Ok with that change.
Thanks,
Kyrill
Whatever you prefer.
Jakub