aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2019-07-10 17:16:12 +0200
committerMarc Glisse <glisse@gcc.gnu.org>2019-07-10 15:16:12 +0000
commit12bb04368e7fcbdd8d3744a440eee23c9293958f (patch)
treed42462664d0531c8c7ebf8a561cb119e81ce2946
parent95efa2279195e2b86afc986fd6e917c2704575d0 (diff)
downloadgcc-12bb04368e7fcbdd8d3744a440eee23c9293958f.zip
gcc-12bb04368e7fcbdd8d3744a440eee23c9293958f.tar.gz
gcc-12bb04368e7fcbdd8d3744a440eee23c9293958f.tar.bz2
Fix wi::lshift
2019-07-10 Marc Glisse <marc.glisse@inria.fr> * wide-int.h (wi::lshift): Reject negative values for the fast path. From-SVN: r273356
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/wide-int.h3
2 files changed, 5 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9b32482..f109a8c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/wide-int.h b/gcc/wide-int.h
index bb8ced1..6c816cc 100644
--- a/gcc/wide-int.h
+++ b/gcc/wide-int.h
@@ -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;