Node n1, n2, n3;
int a;
Prog *p1;
+ uvlong sc;
a = optoas(op, nl->type);
if(nr->op == OLITERAL) {
regalloc(&n1, nl->type, res);
cgen(nl, &n1);
- if(mpgetfix(nr->val.u.xval) >= nl->type->width*8) {
+ sc = mpgetfix(nr->val.u.xval);
+ if(sc >= nl->type->width*8) {
// large shift gets 2 shifts by width
nodconst(&n3, types[TUINT32], nl->type->width*8-1);
gins(a, &n3, &n1);
5 7
BUG: should crash
-=========== bugs/bug155.go
-main·f: doasm: notfound from=75 to=13 (82) SHLQ $-9223372036854775808,BX
-main·f: doasm: notfound from=75 to=13 (82) SHLQ $-9223372036854775808,BX
-main·f: doasm: notfound from=75 to=13 (82) SHLQ $-9223372036854775808,BX
-BUG: bug155
-
=========== bugs/bug156.go
bugs/bug156.go:7: constant 18446744073709551615 overflows int64
BUG: bug156