gallivm: cosf/sinf are macros on MSVC.
authorJosé Fonseca <jfonseca@vmware.com>
Mon, 10 May 2010 07:30:28 +0000 (08:30 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Mon, 10 May 2010 07:31:54 +0000 (08:31 +0100)
So taking the function address does not work.

src/gallium/auxiliary/gallivm/lp_bld_arit.c

index 9aea04e05be758df2ee23db8c90323b458a953a6..0f56f2a1d68bafa052c6f6b193f18a4ccc8eedaf 100644 (file)
@@ -1231,18 +1231,28 @@ lp_build_sincos(struct lp_build_context *bld,
    return res;
 }
 
+static float c_cosf( float f )
+{
+   return (float) cos( (double) f );
+}
+
+static float c_sinf( float f )
+{
+   return (float) sin( (double) f );
+}
+
 LLVMValueRef
 lp_build_cos(struct lp_build_context *bld,
              LLVMValueRef a)
 {
-   return lp_build_sincos(bld, "cosf", &cosf, a);
+   return lp_build_sincos(bld, "cosf", &c_cosf, a);
 }
 
 LLVMValueRef
 lp_build_sin(struct lp_build_context *bld,
              LLVMValueRef a)
 {
-   return lp_build_sincos(bld, "sinf", &sinf, a);
+   return lp_build_sincos(bld, "sinf", &c_sinf, a);
 }
 
 #else /* !PIPE_OS_WINDOWS */