Commit 8c0b699c authored by Russ Cox's avatar Russ Cox

gc: fix another blank bug

R=ken2
CC=golang-dev
https://golang.org/cl/5478051
parent 2e338fa6
......@@ -515,6 +515,12 @@ nodarg(Type *t, int fp)
n->orig = t->nname;
fp:
// Rewrite argument named _ to __,
// or else the assignment to _ will be
// discarded during code generation.
if(isblank(n))
n->sym = lookup("__");
switch(fp) {
default:
fatal("nodarg %T %d", t, fp);
......
......@@ -481,6 +481,7 @@ nodarg(Type *t, int fp)
n = nod(ONAME, N, N);
n->type = t->type;
n->sym = t->sym;
if(t->width == BADWIDTH)
fatal("nodarg: offset not computed for %T", t);
n->xoffset = t->width;
......@@ -488,6 +489,12 @@ nodarg(Type *t, int fp)
n->orig = t->nname;
fp:
// Rewrite argument named _ to __,
// or else the assignment to _ will be
// discarded during code generation.
if(isblank(n))
n->sym = lookup("__");
switch(fp) {
case 0: // output arg
n->op = OINDREG;
......
......@@ -967,6 +967,12 @@ nodarg(Type *t, int fp)
n->orig = t->nname;
break;
}
// Rewrite argument named _ to __,
// or else the assignment to _ will be
// discarded during code generation.
if(isblank(n))
n->sym = lookup("__");
switch(fp) {
default:
......
......@@ -118,12 +118,29 @@ func (TI) M(x int, y int) {
}
}
var fp = func(_ int, y int) {}
func init() {
fp = fp1
}
func fp1(x, y int) {
if x != y {
println("invalid fp1 call:", x, y)
panic("bad fp1")
}
}
func m() {
var i I
i = TI{}
i.M(1, 1)
i.M(2, 2)
fp(1, 1)
fp(2, 2)
}
// useless but legal
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment