]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/cc: fix uint right shift in constant evaluation
authorShenghou Ma <minux.ma@gmail.com>
Thu, 24 May 2012 16:08:52 +0000 (00:08 +0800)
committerShenghou Ma <minux.ma@gmail.com>
Thu, 24 May 2012 16:08:52 +0000 (00:08 +0800)
        Fixes #3664.

R=golang-dev, bradfitz, rsc
CC=golang-dev
https://golang.org/cl/6249048

src/cmd/cc/scon.c

index 193331f774d476fbb6a25fdd71741a717b6c3f05..f6031a5be7ebe096e788070fe421399aa1780ea8 100644 (file)
@@ -175,7 +175,10 @@ evconst(Node *n)
                break;
 
        case OLSHR:
-               v = (uvlong)l->vconst >> r->vconst;
+               if(l->type->width != sizeof(uvlong))
+                       v = ((uvlong)l->vconst & 0xffffffffULL) >> r->vconst;
+               else
+                       v = (uvlong)l->vconst >> r->vconst;
                break;
 
        case OASHR: