diff options
author | R?my Oudompheng <oudomphe@phare.normalesup.org> | 2014-07-01 09:20:51 +0200 |
---|---|---|
committer | R?my Oudompheng <oudomphe@phare.normalesup.org> | 2014-07-01 09:20:51 +0200 |
commit | c2deeabade9ed68a67ff3428c954110e6cbe4a9a (patch) | |
tree | a381a99424d1f9b5b75df1c3949442f3f3807962 /src/cmd/8g | |
parent | 2f2707c79d7a458ed0a170b41033fd42b3732a7f (diff) | |
download | go-c2deeabade9ed68a67ff3428c954110e6cbe4a9a.tar.gz |
cmd/8g: don't allocate a register early for cap(CHAN).
There is no reason to generate different code for cap and len.
Fixes issue 8025.
Fixes issue 8026.
LGTM=rsc
R=rsc, iant, khr
CC=golang-codereviews
https://codereview.appspot.com/93570044
Diffstat (limited to 'src/cmd/8g')
-rw-r--r-- | src/cmd/8g/cgen.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/cmd/8g/cgen.c b/src/cmd/8g/cgen.c index d626c2eb0..5988a4328 100644 --- a/src/cmd/8g/cgen.c +++ b/src/cmd/8g/cgen.c @@ -347,8 +347,11 @@ cgen(Node *n, Node *res) if(istype(nl->type, TCHAN)) { // chan has cap in the second 32-bit word. // a zero pointer means zero length - regalloc(&n1, types[tptr], res); + tempname(&n1, types[tptr]); cgen(nl, &n1); + regalloc(&n2, types[tptr], N); + gmove(&n1, &n2); + n1 = n2; nodconst(&n2, types[tptr], 0); gins(optoas(OCMP, types[tptr]), &n1, &n2); |