diff --git a/reactos/lib/sdk/crt/math/i386/ldexp.c b/reactos/lib/sdk/crt/math/i386/ldexp.c index b240275ef95..327e72a27b8 100644 --- a/reactos/lib/sdk/crt/math/i386/ldexp.c +++ b/reactos/lib/sdk/crt/math/i386/ldexp.c @@ -21,24 +21,32 @@ #include -double ldexp (double __x, int __y); - -double ldexp (double __x, int __y) +double ldexp (double value, int exp) { - register double __val; + register double result; #ifdef __GNUC__ - __asm __volatile__ - ("fscale" - : "=t" (__val) : "0" (__x), "u" ((double) __y)); +#if defined(__clang__) + asm ("fild %[exp]\n" + "fscale\n" + "fstp %%st(1)\n" + : [result] "=t" (result) + : [value] "0" (value), [exp] "m" (exp)); #else - register double __dy = (double)__y; + asm ("fscale" + : "=t" (result) + : "0" (value), "u" ((double)exp) + : "1"); +#endif +#else /* !__GNUC__ */ + register double __dy = (double)exp; __asm { fld __dy - fld __x + fld value fscale - fstp __val + fstp result } -#endif /*__GNUC__*/ - return __val; +#endif /* !__GNUC__ */ + return result; } + diff --git a/reactos/lib/sdk/crt/misc/getargs.c b/reactos/lib/sdk/crt/misc/getargs.c index 1bdb409ab46..18672e6bd44 100644 --- a/reactos/lib/sdk/crt/misc/getargs.c +++ b/reactos/lib/sdk/crt/misc/getargs.c @@ -22,7 +22,7 @@ int __argc = 0; extern wchar_t **__winitenv; -char* strndup(char* name, size_t len) +char* strndup(char const* name, size_t len) { char *s = malloc(len + 1); if (s != NULL) diff --git a/reactos/lib/sdk/crt/signal/signal.c b/reactos/lib/sdk/crt/signal/signal.c index 6cfe3f64b5a..5dd6381c53d 100644 --- a/reactos/lib/sdk/crt/signal/signal.c +++ b/reactos/lib/sdk/crt/signal/signal.c @@ -42,7 +42,7 @@ __p_sig_fn_t signal(int sig, __p_sig_fn_t func) } // check with IsBadCodePtr - if ( func < (__p_sig_fn_t)4096 && func != SIG_DFL && func != SIG_IGN) + if ( (uintptr_t)func < 4096 && func != SIG_DFL && func != SIG_IGN) { __set_errno(EINVAL); return SIG_ERR;