aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-10-18 13:44:39 -0400
committerRuss Cox <rsc@golang.org>2010-10-18 13:44:39 -0400
commit71c4244430a1fce2878f29537ef8c00f0d5a736f (patch)
treeba90bfa23142d84dc32f836b3dbe98c6b2028547
parent20126040025bdc2da8be473d0d181bc1a2584fd9 (diff)
downloadgo-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.c7
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;