aboutsummaryrefslogtreecommitdiff
path: root/i386-gen.c
diff options
context:
space:
mode:
authorDaniel Glöckner <daniel-gl@gmx.net>2012-01-23 01:41:36 +0100
committerDaniel Glöckner <daniel-gl@gmx.net>2012-01-23 01:45:11 +0100
commit9527c4949fd94adb2567229413c70c19b663a118 (patch)
tree09dcc6d05de8418bb91918ee33436d02f5dbb08a /i386-gen.c
parent3ab269c56ac1bb79956c0160382bb720ca487ca3 (diff)
downloadtinycc-9527c4949fd94adb2567229413c70c19b663a118.tar.gz
tinycc-9527c4949fd94adb2567229413c70c19b663a118.tar.bz2
i386: fix loading of LLOCAL floats
These loads clobbered ebx as TinyCC wanted to load the address into st0.
Diffstat (limited to 'i386-gen.c')
-rw-r--r--i386-gen.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/i386-gen.c b/i386-gen.c
index a782de5..6635559 100644
--- a/i386-gen.c
+++ b/i386-gen.c
@@ -229,8 +229,10 @@ ST_FUNC void load(int r, SValue *sv)
v1.type.t = VT_INT;
v1.r = VT_LOCAL | VT_LVAL;
v1.c.ul = fc;
- load(r, &v1);
fr = r;
+ if (!(reg_classes[fr] & RC_INT))
+ fr = get_reg(RC_INT);
+ load(fr, &v1);
}
if ((ft & VT_BTYPE) == VT_FLOAT) {
o(0xd9); /* flds */