diff mbox

[wide-int,4/5] Fix canonize handling of "small_prec" case

Message ID 874n1hed5z.fsf@talisman.default
State New
Headers show

Commit Message

Richard Sandiford April 25, 2014, 1:44 p.m. UTC
We should write back the sign-extended value.

Tested on x86_64-linux-gnu.  OK to install?

Thanks,
Richard

Comments

Kenneth Zadeck April 26, 2014, 12:18 p.m. UTC | #1
this is fine.

kenny
On 04/25/2014 09:44 AM, Richard Sandiford wrote:
> We should write back the sign-extended value.
>
> Tested on x86_64-linux-gnu.  OK to install?
>
> Thanks,
> Richard
>
>
> Index: gcc/wide-int.cc
> ===================================================================
> --- gcc/wide-int.cc	2014-04-25 09:15:14.297359380 +0100
> +++ gcc/wide-int.cc	2014-04-25 09:15:50.755637670 +0100
> @@ -81,7 +81,7 @@ canonize (HOST_WIDE_INT *val, unsigned i
>   
>     top = val[len - 1];
>     if (len * HOST_BITS_PER_WIDE_INT > precision)
> -    top = sext_hwi (top, precision % HOST_BITS_PER_WIDE_INT);
> +    val[len - 1] = top = sext_hwi (top, precision % HOST_BITS_PER_WIDE_INT);
>     if (top != 0 && top != (HOST_WIDE_INT)-1)
>       return len;
>
diff mbox

Patch

Index: gcc/wide-int.cc
===================================================================
--- gcc/wide-int.cc	2014-04-25 09:15:14.297359380 +0100
+++ gcc/wide-int.cc	2014-04-25 09:15:50.755637670 +0100
@@ -81,7 +81,7 @@  canonize (HOST_WIDE_INT *val, unsigned i
 
   top = val[len - 1];
   if (len * HOST_BITS_PER_WIDE_INT > precision)
-    top = sext_hwi (top, precision % HOST_BITS_PER_WIDE_INT);
+    val[len - 1] = top = sext_hwi (top, precision % HOST_BITS_PER_WIDE_INT);
   if (top != 0 && top != (HOST_WIDE_INT)-1)
     return len;