tccgen.c: - allow cross-compiling 0.0L (cross-compile tcc with tcc) tccelf.c: - use alignment of TLS section for PT_TLS tccpp.c: - support long double constants on systems that do not support long doubles (i.e. mark them (VT_DOUBLE | VT_LONG)) tccdefs.h: #define __has_feature() for android remove _unaligned (why define a msvc extension under !_WIN32)
Showing the changes to lib (1 of 5 files). Show all
Unified · Split
| @@ -137,6 +137,11 @@ void __aeabi_ ## name(double_unsigned_struct val) \ · 136 unmodified lines | ||
| 137 | 137 | int exp, high_shift, sign; \ |
| 138 | 138 | double_unsigned_struct ret; \ |
| 139 | 139 | \ |
| 140 | + if ((val.high & ~0x80000000) == 0 && val.low == 0) { \ | |
| 141 | + ret.low = ret.high = 0; \ | |
| 142 | + goto _ret_; \ | |
| 143 | + } \ | |
| 144 | + \ | |
| 140 | 145 | /* compute sign */ \ |
| 141 | 146 | sign = val.high >> 31; \ |
| 142 | 147 | \ |
| @@ -190,6 +195,7 @@ void __aeabi_ ## name(double_unsigned_struct val) \ · 47 unmodified lines | ||
| 190 | 195 | ret.low++; \ |
| 191 | 196 | } \ |
| 192 | 197 | \ |
| 198 | +_ret_: \ | |
| 193 | 199 | double_unsigned_struct_return(ret); \ |
| 194 | 200 | } |
| 195 | 201 | |
| @@ -313,7 +319,7 @@ void __aeabi_ ## name(unsigned long long v) \ · 117 unmodified lines | ||
| 313 | 319 | } \ |
| 314 | 320 | } else { \ |
| 315 | 321 | ret.high = ret.low = 0; \ |
| 316 | − double_unsigned_struct_return(ret); \ | |
| 322 | + goto _ret_; \ | |
| 317 | 323 | } \ |
| 318 | 324 | } \ |
| 319 | 325 | \ |
| @@ -323,6 +329,7 @@ void __aeabi_ ## name(unsigned long long v) \ · 3 unmodified lines | ||
| 323 | 329 | /* fill sign bit */ \ |
| 324 | 330 | ret.high |= sign << 31; \ |
| 325 | 331 | \ |
| 332 | +_ret_: \ | |
| 326 | 333 | double_unsigned_struct_return(ret); \ |
| 327 | 334 | } |
| 328 | 335 | |