summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuuk van Dijk <lvd@golang.org>2011-12-15 17:50:59 +0100
committerLuuk van Dijk <lvd@golang.org>2011-12-15 17:50:59 +0100
commit9956ec696cee09be6b89514d30fe7a3222af716e (patch)
tree608b0f3ee102b82f95d89992870355a9b085a876
parentf9561c87cd7bd5a88fb06ce12dce654f1342f1e4 (diff)
downloadgo-9956ec696cee09be6b89514d30fe7a3222af716e.tar.gz
gc: inlining, allow empty bodies, fix _ arguments.
R=rsc CC=golang-dev http://codereview.appspot.com/5487077
-rw-r--r--src/cmd/gc/fmt.c4
-rw-r--r--src/cmd/gc/inl.c6
-rw-r--r--test/cmp.go3
3 files changed, 9 insertions, 4 deletions
diff --git a/src/cmd/gc/fmt.c b/src/cmd/gc/fmt.c
index c627adb34..f3be53c8f 100644
--- a/src/cmd/gc/fmt.c
+++ b/src/cmd/gc/fmt.c
@@ -914,6 +914,9 @@ stmtfmt(Fmt *f, Node *n)
fmtprint(f, "%#O", n->op);
break;
+ case OEMPTY:
+ break;
+
case OLABEL:
fmtprint(f, "%N: ", n->left);
break;
@@ -1018,6 +1021,7 @@ static int opprec[] = {
[ODCL] = -1,
[ODCLFIELD] = -1,
[ODEFER] = -1,
+ [OEMPTY] = -1,
[OFALL] = -1,
[OFOR] = -1,
[OIF] = -1,
diff --git a/src/cmd/gc/inl.c b/src/cmd/gc/inl.c
index 196a6eff3..e2d122c91 100644
--- a/src/cmd/gc/inl.c
+++ b/src/cmd/gc/inl.c
@@ -60,7 +60,7 @@ caninl(Node *fn)
case ORETURN:
case OAS:
case OAS2:
- // case OEMPTY: // TODO
+ case OEMPTY:
break;
}
@@ -449,7 +449,7 @@ mkinlcall(Node **np, Node *fn)
// TODO check that n->list->n is a call?
as->rlist = n->list;
for(t = getinargx(fn->type)->type; t; t=t->down) {
- if(t->nname) {
+ if(t->nname && !isblank(t->nname)) {
if(!t->nname->inlvar)
fatal("missing inlvar for %N\n", t->nname);
as->list = list(as->list, t->nname->inlvar);
@@ -460,7 +460,7 @@ mkinlcall(Node **np, Node *fn)
} else {
ll = n->list;
for(t = getinargx(fn->type)->type; t && ll; t=t->down) {
- if(t->nname) {
+ if(t->nname && !isblank(t->nname)) {
if(!t->nname->inlvar)
fatal("missing inlvar for %N\n", t->nname);
as->list = list(as->list, t->nname->inlvar);
diff --git a/test/cmp.go b/test/cmp.go
index f079c5d56..d51a11aa2 100644
--- a/test/cmp.go
+++ b/test/cmp.go
@@ -8,7 +8,8 @@ package main
import "unsafe"
-func use(bool) {}
+var global bool
+func use(b bool) { global = b }
func stringptr(s string) uintptr { return *(*uintptr)(unsafe.Pointer(&s)) }