diff --git a/vcbuild/ldfpu.asm b/vcbuild/ldfpu.asm index 6cb5f6b5..5b2f803c 100644 --- a/vcbuild/ldfpu.asm +++ b/vcbuild/ldfpu.asm @@ -39,27 +39,27 @@ ld_read ENDP ; long long ld_readll(longdouble* ld); ; rcx: ld -ld_readll PROC - fld tbyte ptr [rcx] - push rax - fistp qword ptr [rsp] - pop rax - ret -ld_readll ENDP +;ld_readll PROC +; fld tbyte ptr [rcx] +; push rax +; fistp qword ptr [rsp] +; pop rax +; ret +;ld_readll ENDP ; unsigned long long ld_readull(longdouble* ld); ; rcx: ld -ld_readull PROC - fld tbyte ptr [rcx] - push rax - lea rax,twoPow63 - fld tbyte ptr [rax] - fsubp ST(1),ST(0) ; move it into signed range - fistp qword ptr [rsp] - pop rax - btc rax,63 - ret -ld_readull ENDP +;ld_readull PROC +; fld tbyte ptr [rcx] +; push rax +; lea rax,twoPow63 +; fld tbyte ptr [rax] +; fsubp ST(1),ST(0) ; move it into signed range +; fistp qword ptr [rsp] +; pop rax +; btc rax,63 +; ret +;ld_readull ENDP ; void ld_set(longdouble* ld, double d); ; rcx: ld @@ -79,8 +79,8 @@ ld_set ENDP ld_setll PROC push rdx fild qword ptr [rsp] - fstp tbyte ptr [rcx] - pop rax + fstp tbyte ptr [rcx] + pop rax ret ld_setll ENDP @@ -94,8 +94,8 @@ ld_setull PROC lea rax,twoPow63 fld tbyte ptr [rax] faddp ST(1),ST(0) - fstp tbyte ptr [rcx] - pop rax + fstp tbyte ptr [rcx] + pop rax ret ld_setull ENDP @@ -109,7 +109,7 @@ ld_expl PROC fscale ; ST(0) = ST(0) * (2**ST(1)) fstp ST(1) fstp tbyte ptr [rcx] - pop rax + pop rax ret ld_expl ENDP diff --git a/vcbuild/warnings.h b/vcbuild/warnings.h index 3e60ae6f..19d93022 100644 --- a/vcbuild/warnings.h +++ b/vcbuild/warnings.h @@ -13,9 +13,18 @@ #pragma warning(disable:4189) // local variable is initialized but not referenced #pragma warning(disable:4102) // unreferenced label #pragma warning(disable:4800) // forcing value to bool 'true' or 'false' (performance warning) +#pragma warning(disable:4804) // '+=' : unsafe use of type 'bool' in operation #pragma warning(disable:4390) // ';' : empty controlled statement found; is this the intent? #pragma warning(disable:4702) // unreachable code #pragma warning(disable:4703) // potentially uninitialized local pointer variable 'm' used +#pragma warning(disable:4063) // case '0' is not a valid value for switch of enum +#pragma warning(disable:4305) // 'initializing' : truncation from 'double' to 'float' +#pragma warning(disable:4309) // 'initializing' : truncation of constant value +#pragma warning(disable:4310) // cast truncates constant value +#pragma warning(disable:4806) // '^' : unsafe operation: no value of type 'bool' promoted to type 'int' can equal the given constant +#pragma warning(disable:4060) // switch statement contains no 'case' or 'default' labels +#pragma warning(disable:4099) // type name first seen using 'struct' now seen using 'class' +#pragma warning(disable:4725) // instruction may be inaccurate on some Pentiums #ifdef _WIN64 #pragma warning(disable:4366) // The result of the unary '&' operator may be unaligned @@ -28,3 +37,4 @@ #define MARS 1 #define UNITTEST 1 #define _M_I86 1 +#define DM_TARGET_CPU_X86 1