diff options
| author | Russ Cox <rsc@golang.org> | 2009-12-02 17:30:07 -0800 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2009-12-02 17:30:07 -0800 |
| commit | 7a63a65d3419ee33662b45e84f36ba50e520aef6 (patch) | |
| tree | 358ee5cb2af08fd44f08fecb9b60f7de8a0b5bad /src/cmd/8g/cgen.c | |
| parent | 4e9883e6a66afdc7b79cad82f8f615b6ce93e53f (diff) | |
| download | golang-7a63a65d3419ee33662b45e84f36ba50e520aef6.tar.gz | |
6g etc: groundwork for eliminating redundant bounds checks.
drop check in range over array.
drop check in [256]array indexed by byte.
R=ken2
http://codereview.appspot.com/163088
Diffstat (limited to 'src/cmd/8g/cgen.c')
| -rw-r--r-- | src/cmd/8g/cgen.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/cmd/8g/cgen.c b/src/cmd/8g/cgen.c index 84cb4bcbe..3f0514a36 100644 --- a/src/cmd/8g/cgen.c +++ b/src/cmd/8g/cgen.c @@ -540,7 +540,7 @@ agen(Node *n, Node *res) v = mpgetfix(nr->val.u.xval); if(isslice(nl->type)) { - if(!debug['B']) { + if(!debug['B'] && !n->etype) { n1 = n3; n1.op = OINDREG; n1.type = types[tptr]; @@ -558,7 +558,7 @@ agen(Node *n, Node *res) n1.xoffset = Array_array; gmove(&n1, &n3); } else - if(!debug['B']) { + if(!debug['B'] && !n->etype) { if(v < 0) yyerror("out of bounds on array"); else @@ -583,7 +583,7 @@ agen(Node *n, Node *res) gmove(&n1, &n2); regfree(&n1); - if(!debug['B']) { + if(!debug['B'] && !n->etype) { // check bounds if(isslice(nl->type)) { n1 = n3; |
