* wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend.
authorAldy Hernandez <aldyh@redhat.com>
Tue, 22 Aug 2017 08:25:24 +0000 (08:25 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Tue, 22 Aug 2017 08:25:24 +0000 (08:25 +0000)
From-SVN: r251260

gcc/ChangeLog
gcc/wide-int.h

index 5866bb0d8a86720db15e498c4010e18c73857d3a..2e482b040e3155e0ef41ec72958cc43a03668443 100644 (file)
@@ -1,3 +1,7 @@
+2017-08-22  Aldy Hernandez  <aldyh@redhat.com>
+
+       * wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend.
+
 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
 
        PR target/81910
index 2115b614a9f84eb23964f9a1c0a9fc0775955d2c..0596f9841188fa4cb288722d63d0778bbd4bf9f3 100644 (file)
@@ -1517,8 +1517,12 @@ namespace wi
 
 inline wi::hwi_with_prec::hwi_with_prec (HOST_WIDE_INT v, unsigned int p,
                                         signop s)
-  : val (v), precision (p), sgn (s)
+  : precision (p), sgn (s)
 {
+  if (precision < HOST_BITS_PER_WIDE_INT)
+    val = sext_hwi (v, precision);
+  else
+    val = v;
 }
 
 /* Return a signed integer that has value VAL and precision PRECISION.  */