Mercurial > hg > qcc
changeset 397:1236f720862e
Fix from Daniel Glockner: save_reg tried to save a floating point value from
the value stack because its r2 contained 0 (== TREG_EAX), but r2 is valid only
for VT_LLONG.
author | landley@driftwood |
---|---|
date | Sat, 07 Oct 2006 23:41:55 -0400 |
parents | 928147ea8ab6 |
children | 5ca71a951aa0 |
files | tcc.c |
diffstat | 1 files changed, 2 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/tcc.c Sat Oct 07 23:00:13 2006 -0400 +++ b/tcc.c Sat Oct 07 23:41:55 2006 -0400 @@ -4585,7 +4585,8 @@ l = 0; for(p=vstack;p<=vtop;p++) { if ((p->r & VT_VALMASK) == r || - (p->r2 & VT_VALMASK) == r) { + ((p->type.t & VT_BTYPE) == VT_LLONG && (p->r2 & VT_VALMASK) == r) + { /* must save value on stack if not already done */ if (!saved) { /* NOTE: must reload 'r' because r might be equal to r2 */