From: Shenghou Ma Date: Thu, 24 May 2012 16:08:52 +0000 (+0800) Subject: cmd/cc: fix uint right shift in constant evaluation X-Git-Tag: go1.1rc2~3125 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=34ad3995e06fb4a4e209adfbd11367cc3d22f8b8;p=gostls13.git cmd/cc: fix uint right shift in constant evaluation Fixes #3664. R=golang-dev, bradfitz, rsc CC=golang-dev https://golang.org/cl/6249048 --- diff --git a/src/cmd/cc/scon.c b/src/cmd/cc/scon.c index 193331f774..f6031a5be7 100644 --- a/src/cmd/cc/scon.c +++ b/src/cmd/cc/scon.c @@ -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: