diff options
author | Kai Backman <kaib@golang.org> | 2009-10-15 19:41:51 -0700 |
---|---|---|
committer | Kai Backman <kaib@golang.org> | 2009-10-15 19:41:51 -0700 |
commit | 88851e5f41fe70001685e8ad7f1590000e57edab (patch) | |
tree | e059cc88c353cf108a4c082ebfc061fd60a49ebc /src/cmd/5g/gsubr.c | |
parent | acc59d6cfb8568cfc01cb102f27316eb5fd46bb3 (diff) | |
download | golang-88851e5f41fe70001685e8ad7f1590000e57edab.tar.gz |
test/64bit.go passes but doesn't generate properly yet.
R=rsc
APPROVED=rsc
DELTA=235 (98 added, 38 deleted, 99 changed)
OCL=35789
CL=35813
Diffstat (limited to 'src/cmd/5g/gsubr.c')
-rw-r--r-- | src/cmd/5g/gsubr.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/cmd/5g/gsubr.c b/src/cmd/5g/gsubr.c index e9131b436..d22d4b468 100644 --- a/src/cmd/5g/gsubr.c +++ b/src/cmd/5g/gsubr.c @@ -965,15 +965,18 @@ gcmp(int as, Node *lhs, Node *rhs) } /* generate a constant shift + * arm encodes a shift by 32 as 0, thus asking for 0 shift is illegal. */ Prog* gshift(int as, Node *lhs, int32 stype, int32 sval, Node *rhs) { Prog *p; - if (sval < 0 || sval > 31) + if (sval <= 0 || sval > 32) fatal("bad shift value: %d", sval); + sval = sval&0x1f; + p = gins(as, N, rhs); p->from.type = D_SHIFT; p->from.offset = stype | sval<<7 | lhs->val.u.reg; |