llvmpipe: silence cast warnings in test programs
authorBrian Paul <brianp@vmware.com>
Thu, 13 May 2010 19:21:19 +0000 (13:21 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 13 May 2010 20:15:44 +0000 (14:15 -0600)
src/gallium/drivers/llvmpipe/lp_test_blend.c
src/gallium/drivers/llvmpipe/lp_test_conv.c
src/gallium/drivers/llvmpipe/lp_test_format.c
src/gallium/drivers/llvmpipe/lp_test_printf.c

index d32a9223cdaf9d2c9a050ffd4c5a18d73c9bf5b6..072d699666bea174389f2e7dca1c3d3c125e5549 100644 (file)
@@ -52,6 +52,19 @@ enum vector_mode
 
 typedef void (*blend_test_ptr_t)(const void *src, const void *dst, const void *con, void *res);
 
+/** cast wrapper */
+static blend_test_ptr_t
+voidptr_to_blend_test_ptr_t(void *p)
+{
+   union {
+      void *v;
+      blend_test_ptr_t f;
+   } u;
+   u.v = p;
+   return u.f;
+}
+
+
 
 void
 write_tsv_header(FILE *fp)
@@ -482,6 +495,7 @@ test_one(unsigned verbose,
    int64_t cycles[LP_TEST_NUM_SAMPLES];
    double cycles_avg = 0.0;
    unsigned i, j;
+   void *code;
 
    if(verbose >= 1)
       dump_blend_type(stdout, blend, mode, type);
@@ -523,10 +537,11 @@ test_one(unsigned verbose,
    if(verbose >= 2)
       LLVMDumpModule(module);
 
-   blend_test_ptr = (blend_test_ptr_t)LLVMGetPointerToGlobal(engine, func);
+   code = LLVMGetPointerToGlobal(engine, func);
+   blend_test_ptr = voidptr_to_blend_test_ptr_t(code);
 
    if(verbose >= 2)
-      lp_disassemble(blend_test_ptr);
+      lp_disassemble(code);
 
    success = TRUE;
    for(i = 0; i < n && success; ++i) {
index f8acda7bfd88c241803f4dc2fa4f8786225cb058..254f0daea3b09c0423e34010ad97d5c0b5440919 100644 (file)
 
 typedef void (*conv_test_ptr_t)(const void *src, const void *dst);
 
+/** cast wrapper */
+static conv_test_ptr_t
+voidptr_to_conv_test_ptr_t(void *p)
+{
+   union {
+      void *v;
+      conv_test_ptr_t f;
+   } u;
+   u.v = p;
+   return u.f;
+}
 
 void
 write_tsv_header(FILE *fp)
@@ -164,6 +175,7 @@ test_one(unsigned verbose,
    unsigned num_dsts;
    double eps;
    unsigned i, j;
+   void *code;
 
    if(verbose >= 1)
       dump_conv_types(stdout, src_type, dst_type);
@@ -221,10 +233,11 @@ test_one(unsigned verbose,
    if(verbose >= 2)
       LLVMDumpModule(module);
 
-   conv_test_ptr = (conv_test_ptr_t)LLVMGetPointerToGlobal(engine, func);
+   code = LLVMGetPointerToGlobal(engine, func);
+   conv_test_ptr = voidptr_to_conv_test_ptr_t(code);
 
    if(verbose >= 2)
-      lp_disassemble(conv_test_ptr);
+      lp_disassemble(code);
 
    success = TRUE;
    for(i = 0; i < n && success; ++i) {
index d5a81a941cfa49988387f7a48cade7f460d44a2a..267f1487bb8f241212fcd31ad42132a21ebccee7 100644 (file)
@@ -73,6 +73,19 @@ typedef void
 (*fetch_ptr_t)(float *, const void *packed,
                unsigned i, unsigned j);
 
+/** cast wrapper to avoid warnings */
+static fetch_ptr_t
+void_to_fetch_ptr_t(void *p)
+{
+   union {
+      void *v;
+      fetch_ptr_t f;
+   } u;
+   u.v = p;
+   return u.f;
+}
+
+
 
 static LLVMValueRef
 add_fetch_rgba_test(LLVMModuleRef lp_build_module,
@@ -149,7 +162,7 @@ test_format(unsigned verbose, FILE *fp,
    (void)pass;
 #endif
 
-   fetch_ptr = (fetch_ptr_t) LLVMGetPointerToGlobal(lp_build_engine, fetch);
+   fetch_ptr = void_to_fetch_ptr_t(LLVMGetPointerToGlobal(lp_build_engine, fetch));
 
    for (i = 0; i < desc->block.height; ++i) {
       for (j = 0; j < desc->block.width; ++j) {
index 666d414769dffaef2bd7d1b45a33e3b779c9c841..13485c377482d33b492a484adb266fdec1e21024 100644 (file)
@@ -41,6 +41,7 @@
 
 
 struct printf_test_case {
+   int foo;
 };
 
 void
@@ -57,6 +58,19 @@ write_tsv_header(FILE *fp)
 
 typedef void (*test_printf_t)(int i);
 
+/** cast wrapper */
+static test_printf_t
+voidptr_to_test_printf_t(void *p)
+{
+   union {
+      void *v;
+      test_printf_t f;
+   } u;
+   u.v = p;
+   return u.f;
+}
+
+
 static LLVMValueRef
 add_printf_test(LLVMModuleRef module)
 {
@@ -91,6 +105,7 @@ test_printf(unsigned verbose, FILE *fp, const struct printf_test_case *testcase)
    float unpacked[4];
    unsigned packed;
    boolean success = TRUE;
+   void *code;
 
    module = LLVMModuleCreateWithName("test");
 
@@ -124,7 +139,8 @@ test_printf(unsigned verbose, FILE *fp, const struct printf_test_case *testcase)
    (void)pass;
 #endif
 
-   test_printf = (test_printf_t)LLVMGetPointerToGlobal(engine, test);
+   code = LLVMGetPointerToGlobal(engine, test);
+   test_printf = voidptr_to_test_printf_t(code);
 
    memset(unpacked, 0, sizeof unpacked);
    packed = 0;