diff options
| author | jiang <30155751@qq.com> | 2014-06-23 01:08:54 +0800 |
|---|---|---|
| committer | jiang <30155751@qq.com> | 2014-06-23 01:08:54 +0800 |
| commit | f26fdaefd8b35489f26462992010b9ecd76d8fe3 (patch) | |
| tree | 06953886b64c12422ab3ce88401d02bfb83dc950 /tccgen.c | |
| parent | 1fa0fe2786c851fc06766e8a77a882298d2cc64b (diff) | |
| download | tinycc-f26fdaefd8b35489f26462992010b9ecd76d8fe3.tar.gz tinycc-f26fdaefd8b35489f26462992010b9ecd76d8fe3.tar.bz2 | |
revert vstore()
Diffstat (limited to 'tccgen.c')
| -rw-r--r-- | tccgen.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -2552,6 +2552,11 @@ ST_FUNC void vstore(void) /* remove bit field info to avoid loops */ vtop[-1].type.t = ft & ~(VT_BITFIELD | (-1 << VT_STRUCT_SHIFT)); + /* duplicate source into other register */ + gv_dup(); + vswap(); + vrott(3); + if((ft & VT_BTYPE) == VT_BOOL) { gen_cast(&vtop[-1].type); vtop[-1].type.t = (vtop[-1].type.t & ~VT_BTYPE) | (VT_BYTE | VT_UNSIGNED); @@ -2583,6 +2588,9 @@ ST_FUNC void vstore(void) gen_op('|'); /* store result */ vstore(); + + /* pop off shifted source from "duplicate source..." above */ + vpop(); } else { #ifdef CONFIG_TCC_BCHECK /* bound check case */ |
