summaryrefslogtreecommitdiff
path: root/utils/tl/span.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/tl/span.c')
-rw-r--r--utils/tl/span.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/utils/tl/span.c b/utils/tl/span.c
index 85f27621..6d5a0443 100644
--- a/utils/tl/span.c
+++ b/utils/tl/span.c
@@ -350,6 +350,7 @@ span(void)
* add strings to text segment
*/
c = rnd(c, 8);
+ INITRODAT = c;
for(i=0; i<NHASH; i++)
for(s = hash[i]; s != S; s = s->link) {
if(s->type != SSTRING)
@@ -358,6 +359,7 @@ span(void)
while(v & 3)
v++;
s->value = c;
+ s->base = -INITDAT; // compensate for assumptions in thumb.c
c += v;
}
}
@@ -771,6 +773,7 @@ Optab*
oplook(Prog *p)
{
int a1, a2, a3, r;
+ int oa1, oa2, oa3;
char *c1, *c3;
Optab *o, *e;
Optab *otab;
@@ -808,6 +811,9 @@ oplook(Prog *p)
a2 = C_NONE;
if(p->reg != NREG)
a2 = C_REG;
+
+ oa1 = a1; oa2 = a2; oa3 = a3;
+
r = p->as;
o = orange[r].start;
if(o == 0) {
@@ -834,7 +840,7 @@ oplook(Prog *p)
return o;
}
diag("illegal combination %A %d %d %d",
- p->as, a1, a2, a3);
+ p->as, oa1, oa2, oa3);
prasm(p);
if(o == 0)
o = otab;