diff options
| author | Russ Cox <rsc@golang.org> | 2013-09-13 03:50:50 +0000 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2013-09-13 03:50:50 +0000 |
| commit | 3acddba2ec9ec2b6e8e9f6b9b6843d3780587bfe (patch) | |
| tree | 3dc9d51e95fae95d500c3a184a983038d3bbdc86 /src/cmd/5l | |
| parent | 27cb23ceb191074216f462b521dd67380eebed75 (diff) | |
| download | go-3acddba2ec9ec2b6e8e9f6b9b6843d3780587bfe.tar.xz | |
cmd/5l: fix handling of RET.EQ in wrapper function
Keith is too clever for me.
R=ken2
CC=golang-dev, khr
https://golang.org/cl/13272050
Diffstat (limited to 'src/cmd/5l')
| -rw-r--r-- | src/cmd/5l/noop.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cmd/5l/noop.c b/src/cmd/5l/noop.c index 0bd76040d3..fb70599b51 100644 --- a/src/cmd/5l/noop.c +++ b/src/cmd/5l/noop.c @@ -321,6 +321,13 @@ noops(void) } if(cursym->text->reg & WRAPPER) { + int cond; + + // Preserve original RET's cond, to allow RET.EQ + // in the implementation of reflect.call. + cond = p->scond; + p->scond = C_SCOND_NONE; + // g->panicwrap -= autosize; // MOVW panicwrap_offset(g), R3 // SUB $autosize, R3 @@ -347,6 +354,8 @@ noops(void) p->to.reg = REGG; p->to.offset = 2*PtrSize; p = appendp(p); + + p->scond = cond; } p->as = AMOVW; |
