summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKen Thompson <ken@golang.org>2008-06-17 18:07:40 -0700
committerKen Thompson <ken@golang.org>2008-06-17 18:07:40 -0700
commitad33bef98341c6dd8520502417fcf752b77436ef (patch)
treeadf8f9aab9a463d3920270d12d1f6888e9552310 /src
parent451df7c3fa38ef2f70a86b2a372644e3de3d8d25 (diff)
downloadgolang-ad33bef98341c6dd8520502417fcf752b77436ef.tar.gz
assign nil to interface
SVN=123256
Diffstat (limited to 'src')
-rw-r--r--src/cmd/6g/gen.c2
-rw-r--r--src/cmd/gc/walk.c11
2 files changed, 6 insertions, 7 deletions
diff --git a/src/cmd/6g/gen.c b/src/cmd/6g/gen.c
index e1b596f1a..b6120d775 100644
--- a/src/cmd/6g/gen.c
+++ b/src/cmd/6g/gen.c
@@ -729,7 +729,7 @@ cgen_as(Node *nl, Node *nr, int op)
if(tl == T)
return;
- if(nr == N) {
+ if(nr == N || isnil(nr)) {
if(isfat(tl)) {
/* clear a fat object */
if(debug['g'])
diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c
index c40cabd8f..16f0c2ce3 100644
--- a/src/cmd/gc/walk.c
+++ b/src/cmd/gc/walk.c
@@ -43,9 +43,8 @@ loop:
if(n->op != ONAME)
dynlineno = n->lineno; // for diagnostics
- if(debug['w'] > 1 && top == Etop)
- if(n->op != OLIST)
- dump("walk-before", n);
+ if(debug['w'] > 1 && top == Etop && n->op != OLIST)
+ dump("walk-before", n);
t = T;
et = Txxx;
@@ -218,7 +217,6 @@ loop:
walktype(l, Elv);
walktype(r, Erv);
-
if(l == N || l->type == T)
goto ret;
@@ -233,6 +231,7 @@ loop:
}
goto ret;
}
+
l = ascompatee(n->op, &n->left, &n->right);
if(l != N)
*n = *reorder3(l);
@@ -662,8 +661,8 @@ badt:
goto ret;
ret:
- if(debug['w'] && top == Etop)
- dump("walk-after", n);
+ if(debug['w'] && top == Etop && n != N)
+ dump("walk", n);
ullmancalc(n);
dynlineno = lno;