From: Ken Thompson Date: Mon, 10 Aug 2009 18:20:33 +0000 (-0700) Subject: bug in int8 mod X-Git-Tag: weekly.2009-11-06~921 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f70e285178bbc87830cdd3bb02b7de3c8fe2dcb2;p=gostls13.git bug in int8 mod R=rsc OCL=32971 CL=32971 --- diff --git a/src/cmd/6g/ggen.c b/src/cmd/6g/ggen.c index 2a61ca4e6b..629a8cd3d1 100644 --- a/src/cmd/6g/ggen.c +++ b/src/cmd/6g/ggen.c @@ -600,7 +600,6 @@ cgen_div(int op, Node *nl, Node *nr, Node *res) if(n < 0) goto divbymul; - switch(n) { case 0: // divide by 1 @@ -618,7 +617,7 @@ cgen_div(int op, Node *nl, Node *nr, Node *res) // divide by 2 if(op == OMOD) { if(issigned[nl->type->etype]) - goto longmod; + goto longdiv; regalloc(&n1, nl->type, res); cgen(nl, &n1); nodconst(&n2, nl->type, 1); @@ -643,7 +642,7 @@ cgen_div(int op, Node *nl, Node *nr, Node *res) default: if(op == OMOD) { if(issigned[nl->type->etype]) - goto longmod; + goto longdiv; regalloc(&n1, nl->type, res); cgen(nl, &n1); nodconst(&n2, nl->type, mpgetfix(nr->val.u.xval)-1);