diff options
Diffstat (limited to 'src/cmd/8g/ggen.c')
| -rw-r--r-- | src/cmd/8g/ggen.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/cmd/8g/ggen.c b/src/cmd/8g/ggen.c index 468f67ae9..193058e20 100644 --- a/src/cmd/8g/ggen.c +++ b/src/cmd/8g/ggen.c @@ -182,8 +182,8 @@ ginscall(Node *f, int proc) break; case 1: // call in new proc (go) - case 2: // defered call (defer) - nodreg(®, types[TINT32], D_AX); + case 2: // deferred call (defer) + nodreg(®, types[TINT32], D_CX); gins(APUSHL, f, N); nodconst(&con, types[TINT32], argsize(f->type)); gins(APUSHL, &con, N); @@ -193,6 +193,11 @@ ginscall(Node *f, int proc) ginscall(deferproc, 0); gins(APOPL, N, ®); gins(APOPL, N, ®); + if(proc == 2) { + nodreg(®, types[TINT64], D_AX); + gins(ATESTL, ®, ®); + patch(gbranch(AJNE, T), pret); + } break; } } |
