From: Vinson Lee Date: Sun, 22 Sep 2013 23:08:26 +0000 (-0700) Subject: glsl: Define isnormal and copysign for MSVC to fix build. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6d29db715b8d60718ada1ab8ad19d969cac43caf;p=mesa.git glsl: Define isnormal and copysign for MSVC to fix build. This patch fixes these MSVC build errors. ir_constant_expression.cpp src\glsl\ir_constant_expression.cpp(564) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data src\glsl\ir_constant_expression.cpp(1384) : error C3861: 'isnormal': identifier not found src\glsl\ir_constant_expression.cpp(1385) : error C3861: 'copysign': identifier not found Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69541 Signed-off-by: Vinson Lee Acked-by: Matt Turner --- diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp index 4579ef209da..12641e5df10 100644 --- a/src/glsl/ir_constant_expression.cpp +++ b/src/glsl/ir_constant_expression.cpp @@ -40,6 +40,20 @@ #include "glsl_types.h" #include "program/hash_table.h" +#if defined(_MSC_VER) && (_MSC_VER < 1800) +static int isnormal(double x) +{ + return _fpclass(x) == _FPCLASS_NN || _fpclass(x) == _FPCLASS_PN; +} +#endif + +#if defined(_MSC_VER) +static double copysign(double x, double y) +{ + return _copysign(x, y); +} +#endif + static float dot(ir_constant *op0, ir_constant *op1) {