summaryrefslogtreecommitdiff
path: root/src/cmd/8g/cgen.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-12-02 17:30:07 -0800
committerRuss Cox <rsc@golang.org>2009-12-02 17:30:07 -0800
commit7a63a65d3419ee33662b45e84f36ba50e520aef6 (patch)
tree358ee5cb2af08fd44f08fecb9b60f7de8a0b5bad /src/cmd/8g/cgen.c
parent4e9883e6a66afdc7b79cad82f8f615b6ce93e53f (diff)
downloadgolang-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.c6
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;