diff options
| author | grischka <grischka> | 2009-07-18 22:07:17 +0200 |
|---|---|---|
| committer | grischka <grischka> | 2009-07-18 22:07:17 +0200 |
| commit | 9fda4f4248f24ee3e9feb9204bd1ef035c4859da (patch) | |
| tree | c422add7403f40e0fbb8725238b4ed85cb3c644e | |
| parent | 97738d1ae99035695599e5ddec2f0cd5931101d5 (diff) | |
| download | tinycc-9fda4f4248f24ee3e9feb9204bd1ef035c4859da.tar.gz tinycc-9fda4f4248f24ee3e9feb9204bd1ef035c4859da.tar.bz2 | |
win32: treat long double as double
| -rw-r--r-- | tccgen.c | 6 | ||||
| -rw-r--r-- | tccpp.c | 10 |
2 files changed, 16 insertions, 0 deletions
@@ -2527,7 +2527,9 @@ static int parse_btype(CType *type, AttributeDef *ad) case TOK_LONG: next(); if ((t & VT_BTYPE) == VT_DOUBLE) { +#ifndef TCC_TARGET_PE t = (t & ~VT_BTYPE) | VT_LDOUBLE; +#endif } else if ((t & VT_BTYPE) == VT_LONG) { t = (t & ~VT_BTYPE) | VT_LLONG; } else { @@ -2544,7 +2546,11 @@ static int parse_btype(CType *type, AttributeDef *ad) case TOK_DOUBLE: next(); if ((t & VT_BTYPE) == VT_LONG) { +#ifdef TCC_TARGET_PE + t = (t & ~VT_BTYPE) | VT_DOUBLE; +#else t = (t & ~VT_BTYPE) | VT_LDOUBLE; +#endif } else { u = VT_DOUBLE; goto basic_type1; @@ -1743,9 +1743,14 @@ void parse_number(const char *p) tokc.f = (float)d; } else if (t == 'L') { ch = *p++; +#ifdef TCC_TARGET_PE + tok = TOK_CDOUBLE; + tokc.d = d; +#else tok = TOK_CLDOUBLE; /* XXX: not large enough */ tokc.ld = (long double)d; +#endif } else { tok = TOK_CDOUBLE; tokc.d = d; @@ -1794,8 +1799,13 @@ void parse_number(const char *p) tokc.f = strtof(token_buf, NULL); } else if (t == 'L') { ch = *p++; +#ifdef TCC_TARGET_PE + tok = TOK_CDOUBLE; + tokc.d = strtod(token_buf, NULL); +#else tok = TOK_CLDOUBLE; tokc.ld = strtold(token_buf, NULL); +#endif } else { tok = TOK_CDOUBLE; tokc.d = strtod(token_buf, NULL); |
