diff options
author | Russ Cox <rsc@golang.org> | 2010-10-18 13:44:39 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-10-18 13:44:39 -0400 |
commit | 71c4244430a1fce2878f29537ef8c00f0d5a736f (patch) | |
tree | ba90bfa23142d84dc32f836b3dbe98c6b2028547 | |
parent | 20126040025bdc2da8be473d0d181bc1a2584fd9 (diff) | |
download | go-71c4244430a1fce2878f29537ef8c00f0d5a736f.tar.gz go-71c4244430a1fce2878f29537ef8c00f0d5a736f.zip |
5l: handle jump to middle of floating point sequence
R=ken2
CC=golang-dev
https://golang.org/cl/2473042
-rw-r--r-- | src/cmd/5l/softfloat.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/cmd/5l/softfloat.c b/src/cmd/5l/softfloat.c index 5284cf81e8..308a5fbeda 100644 --- a/src/cmd/5l/softfloat.c +++ b/src/cmd/5l/softfloat.c @@ -19,8 +19,11 @@ softfloat(void) if(symsfloat->type == STEXT) psfloat = symsfloat->text; - wasfloat = 0; for(cursym = textp; cursym != nil; cursym = cursym->next) { + wasfloat = 0; + for(p = cursym->text; p != P; p = p->link) + if(p->cond != P) + p->cond->mark |= LABEL; for(p = cursym->text; p != P; p = p->link) { switch(p->as) { case AMOVWD: @@ -43,7 +46,7 @@ softfloat(void) case ADIVD: if (psfloat == P) diag("floats used with _sfloat not defined"); - if (!wasfloat) { + if (!wasfloat || (p->mark&LABEL)) { next = prg(); *next = *p; |