diff options
| author | Daniel Glöckner <daniel-gl@gmx.net> | 2012-01-23 01:41:36 +0100 |
|---|---|---|
| committer | Daniel Glöckner <daniel-gl@gmx.net> | 2012-01-23 01:45:11 +0100 |
| commit | 9527c4949fd94adb2567229413c70c19b663a118 (patch) | |
| tree | 09dcc6d05de8418bb91918ee33436d02f5dbb08a | |
| parent | 3ab269c56ac1bb79956c0160382bb720ca487ca3 (diff) | |
| download | tinycc-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.
| -rw-r--r-- | i386-gen.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -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 */ |
