Fix bogus CONST_WIDE_INT hash
authorRichard Sandiford <richard.sandiford@linaro.org>
Mon, 21 Aug 2017 09:46:05 +0000 (09:46 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 21 Aug 2017 09:46:05 +0000 (09:46 +0000)
The CONST_WIDE_INT case in const_rtx_hash_1 started the hash
with the precision of the mode, but the mode is always VOIDmode.

2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* varasm.c (const_rtx_hash_1): Don't hash in the mode of a
CONST_WIDE_INT.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251218

gcc/ChangeLog
gcc/varasm.c

index 213b5c803ab9d03c791f6672ebfcab0b9dc8a913..34ecfdc8188b8d6f1d7d6e7613aab9c71ad32ecc 100644 (file)
@@ -1,3 +1,10 @@
+2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
+           Alan Hayward  <alan.hayward@arm.com>
+           David Sherwood  <david.sherwood@arm.com>
+
+       * varasm.c (const_rtx_hash_1): Don't hash in the mode of a
+       CONST_WIDE_INT.
+
 2017-08-21  Richard Biener  <rguenther@suse.de>
 
        PR middle-end/81884
index e0834a1ff3b074087ee791616efd59d599f3bf10..91680d692b4a29662ab0c2c76a3547e74c0fb0c2 100644 (file)
@@ -3639,7 +3639,7 @@ const_rtx_hash_1 (const_rtx x)
       break;
 
     case CONST_WIDE_INT:
-      hwi = GET_MODE_PRECISION (mode);
+      hwi = 0;
       {
        for (i = 0; i < CONST_WIDE_INT_NUNITS (x); i++)
          hwi ^= CONST_WIDE_INT_ELT (x, i);