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