aboutsummaryrefslogtreecommitdiff
path: root/libtcc.c
diff options
context:
space:
mode:
authorgrischka <grischka>2013-08-28 22:55:05 +0200
committergrischka <grischka>2013-08-28 22:55:05 +0200
commit73faaea227a53e365dd75f1dba7a5071c7b5e541 (patch)
treeb7ff7cfd171d27d24ec4ceb4df8cf98f3341fd82 /libtcc.c
parent69c2e7f96c95ba088657ce8bb9754c12c3e89397 (diff)
downloadtinycc-73faaea227a53e365dd75f1dba7a5071c7b5e541.tar.gz
tinycc-73faaea227a53e365dd75f1dba7a5071c7b5e541.tar.bz2
i386-gen: preserve fp control word in gen_cvt_ftoi
- Use runtime function for conversion - Also initialize fp with tcc -run on windows This fixes a bug where double x = 1.0; double y = 1.0000000000000001; double z = x < y ? 0 : sqrt (x*x - y*y); caused a bad sqrt because rounding precision for the x < y comparison was different to the one used within the sqrt function. This also fixes a bug where printf("%d, %d", (int)pow(10, 2), (int)pow(10, 2)); would print 100, 99 Unrelated: win32: document relative include & lib lookup win32: normalize_slashes: do not mirror silly gcc behavior This reverts part of commit 8a81f9e1036637e21a47e14fb56bf64133546890 winapi: add missing WINAPI decl. for some functions
Diffstat (limited to 'libtcc.c')
-rw-r--r--libtcc.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/libtcc.c b/libtcc.c
index b10a2a7..3b018ae 100644
--- a/libtcc.c
+++ b/libtcc.c
@@ -78,21 +78,13 @@ ST_FUNC void asm_global_instr(void)
#endif
/********************************************************/
-
#ifdef _WIN32
-// GCC appears to use '/' for relative paths and '\\' for absolute paths on Windows
static char *normalize_slashes(char *path)
{
char *p;
- if (path[1] == ':') {
- for (p = path+2; *p; ++p)
- if (*p == '/')
- *p = '\\';
- } else {
- for (p = path; *p; ++p)
- if (*p == '\\')
- *p = '/';
- }
+ for (p = path; *p; ++p)
+ if (*p == '\\')
+ *p = '/';
return path;
}
@@ -1036,6 +1028,7 @@ LIBTCCAPI TCCState *tcc_new(void)
#ifdef TCC_TARGET_I386
s->seg_size = 32;
#endif
+ s->runtime_main = "main";
return s;
}