Fix wi::lshift
authorMarc Glisse <marc.glisse@inria.fr>
Wed, 10 Jul 2019 15:16:12 +0000 (17:16 +0200)
committerMarc Glisse <glisse@gcc.gnu.org>
Wed, 10 Jul 2019 15:16:12 +0000 (15:16 +0000)
2019-07-10  Marc Glisse  <marc.glisse@inria.fr>

* wide-int.h (wi::lshift): Reject negative values for the fast path.

From-SVN: r273356

gcc/ChangeLog
gcc/wide-int.h

index 9b32482db5f4104feb0a4c35d3c533ac9866c712..f109a8cc5eff90560313e98cf8db8f0bc9cbdb4c 100644 (file)
@@ -1,3 +1,7 @@
+2019-07-10  Marc Glisse  <marc.glisse@inria.fr>
+
+       * wide-int.h (wi::lshift): Reject negative values for the fast path.
+
 2019-07-10  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/91126
index bb8ced123508d305e51c6e6bac36f75722553c89..6c816cc260bca1fd1ca14eb89e3984202c3f59cc 100644 (file)
@@ -3034,8 +3034,7 @@ wi::lshift (const T1 &x, const T2 &y)
       if (STATIC_CONSTANT_P (xi.precision > HOST_BITS_PER_WIDE_INT)
          ? (STATIC_CONSTANT_P (shift < HOST_BITS_PER_WIDE_INT - 1)
             && xi.len == 1
-            && xi.val[0] <= (HOST_WIDE_INT) ((unsigned HOST_WIDE_INT)
-                                             HOST_WIDE_INT_MAX >> shift))
+            && IN_RANGE (xi.val[0], 0, HOST_WIDE_INT_MAX >> shift))
          : precision <= HOST_BITS_PER_WIDE_INT)
        {
          val[0] = xi.ulow () << shift;