# New Ticket Created by  NotFound 
# Please include the string:  [perl #55134]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=55134 >


The attached patch cleans warnings in i386 jit related parts, both
compiling with gcc or with g++.

-- 
Salu2
Index: src/jit/i386/jit_emit.h
===================================================================
--- src/jit/i386/jit_emit.h	(revisión: 27973)
+++ src/jit/i386/jit_emit.h	(copia de trabajo)
@@ -25,7 +25,10 @@
 #  define JIT_CGP
 #endif
 
-static void call_func(Parrot_jit_info_t *jit_info, void *addr);
+static void call_func(Parrot_jit_info_t *jit_info, void (*addr) (void));
+
+static void jit_emit_real_exception(Parrot_jit_info_t *jit_info);
+
 /*
  * get the register frame pointer
  */
@@ -1728,7 +1731,7 @@
     Parrot_jit_emit_get_INTERP(interp, pc, emit_ECX);
     emitm_pushl_r(pc, emit_ECX);
     jit_info->native_ptr = pc;
-    call_func(jit_info, (void *) real_exception);
+    jit_emit_real_exception(jit_info);
     pc = jit_info->native_ptr;
     /* L1: */
     L1[1] = (char)(pc - L1 - 2);
@@ -1767,7 +1770,7 @@
     Parrot_jit_emit_get_INTERP(interp, pc, emit_ECX);
     emitm_pushl_r(pc, emit_ECX);
     jit_info->native_ptr = pc;
-    call_func(jit_info, (void *) real_exception);
+    jit_emit_real_exception(jit_info);
     pc = jit_info->native_ptr;
     /* L1: */
     L1[1] = (char)(pc - L1 - 2);
@@ -1961,7 +1964,7 @@
     Parrot_jit_emit_get_INTERP(interp, pc, emit_ECX);
     emitm_pushl_r(pc, emit_ECX);
     jit_info->native_ptr = pc;
-    call_func(jit_info, (void *) real_exception);
+    jit_emit_real_exception(jit_info);
     pc = jit_info->native_ptr;
     /* L3: */
     L3[1] = (char)(pc - L3 - 2);
@@ -2237,7 +2240,7 @@
 
 
 
-static void call_func(Parrot_jit_info_t *jit_info, void *addr)
+static void call_func(Parrot_jit_info_t *jit_info, void (*addr) (void))
 {
     Parrot_jit_newfixup(jit_info);
     jit_info->arena.fixups->type = JIT_X86CALL;
@@ -2245,6 +2248,10 @@
     emitm_calll(jit_info->native_ptr, 0xdeafc0de);
 }
 
+static void jit_emit_real_exception(Parrot_jit_info_t *jit_info)
+{
+    call_func(jit_info, (void (*) (void)) & real_exception);
+}
 
 #if JIT_VTABLE_OPS
 
@@ -2782,7 +2789,7 @@
     else
 #  endif
     {
-        call_func(jit_info, (void*)pmc_new_noinit);
+        call_func(jit_info, (void (*) (void))pmc_new_noinit);
     }
     /* result = eax push pmc */
     emitm_pushl_r(jit_info->native_ptr, emit_EAX);
@@ -3609,7 +3616,7 @@
         emitm_pushl_i(jit_info->native_ptr, CORE_OPS_check_events);
 
         call_func(jit_info,
-            (void *)(interp->op_func_table[CORE_OPS_check_events]));
+            (void (*) (void)) (interp->op_func_table[CORE_OPS_check_events]));
 #    ifdef PARROT_JIT_STACK_REUSE_INTERP
         emitm_addb_i_r(jit_info->native_ptr, 4, emit_ESP);
 #    else
@@ -3631,7 +3638,7 @@
     emitm_pushl_i(jit_info->native_ptr, jit_info->cur_op);
 
     call_func(jit_info,
-            (void *)(interp->op_func_table[cur_op]));
+            (void (*) (void))(interp->op_func_table[cur_op]));
 #    ifdef PARROT_JIT_STACK_REUSE_INTERP
     emitm_addb_i_r(jit_info->native_ptr, 4, emit_ESP);
 #    else
Index: src/jit/i386/core.jit
===================================================================
--- src/jit/i386/core.jit	(revisión: 27973)
+++ src/jit/i386/core.jit	(copia de trabajo)
@@ -7,7 +7,7 @@
 # TODO complete this
 #define P_ARITH ((PREV_OP == dec_i) || (PREV_OP == inc_i) || (PREV_OP == sub_i_i_i) || (PREV_OP == sub_i_i))
 
-#define CALL_FUNCTION(j, f) call_func(j, f)
+#define CALL_FUNCTION(j, f) call_func(j, (void (*)(void)) & f)
 
 Parrot_end {
     jit_emit_end(NATIVECODE);
@@ -1114,7 +1114,7 @@
     Parrot_jit_emit_get_INTERP(interp, jit_info->native_ptr, emit_ECX);
     emitm_pushl_i(NATIVECODE, CONST(2)->u.string);
     emitm_pushl_r(NATIVECODE, emit_ECX);
-    CALL_FUNCTION(jit_info, (void*) string_copy);
+    CALL_FUNCTION(jit_info, string_copy);
     emitm_addb_i_r(NATIVECODE, 8, emit_ESP);
     jit_emit_mov_MR_i(interp, NATIVECODE, ROFFS_STR(1), emit_EAX );
 }
@@ -1129,7 +1129,7 @@
     push_<typ1>(1);
     Parrot_jit_emit_get_INTERP(interp, jit_info->native_ptr, emit_ECX);
     emitm_pushl_r(NATIVECODE, emit_ECX);
-    CALL_FUNCTION(jit_info, (void*)string_compare);
+    CALL_FUNCTION(jit_info, string_compare);
     emitm_addb_i_r(NATIVECODE, 12, emit_ESP);
     jit_emit_test_r_i(NATIVECODE, emit_EAX);
     jit_emit_jcc(jit_info, <op>, *INT_CONST[3]);
@@ -1146,7 +1146,7 @@
     push_<typ1>(1);
     Parrot_jit_emit_get_INTERP(interp, jit_info->native_ptr, emit_ECX);
     emitm_pushl_r(NATIVECODE, emit_ECX);
-    CALL_FUNCTION(jit_info, (void*)string_equal);
+    CALL_FUNCTION(jit_info, string_equal);
     emitm_addb_i_r(NATIVECODE, 12, emit_ESP);
     jit_emit_test_r_i(NATIVECODE, emit_EAX);
     jit_emit_jcc(jit_info, <op>, *INT_CONST[3]);
@@ -1212,7 +1212,7 @@
     push_<typ>(1);
     Parrot_jit_emit_get_INTERP(interp, jit_info->native_ptr, emit_ECX);
     emitm_pushl_r(NATIVECODE, emit_ECX);
-    CALL_FUNCTION(jit_info, (void*)string_bool);
+    CALL_FUNCTION(jit_info, string_bool);
     emitm_addb_i_r(NATIVECODE, 8, emit_ESP);
     jit_emit_test_r_i(NATIVECODE, emit_EAX);
     jit_emit_jcc(jit_info, <op>, *INT_CONST[2]);
@@ -1240,7 +1240,7 @@
     push_<typ>(2);
     Parrot_jit_emit_get_INTERP(interp, jit_info->native_ptr, emit_ECX);
     emitm_pushl_r(NATIVECODE, emit_ECX);
-    CALL_FUNCTION(jit_info, (void*)string_ord);
+    CALL_FUNCTION(jit_info, string_ord);
     emitm_addb_i_r(NATIVECODE, 12, emit_ESP);
     if (MAP[1]) {
         jit_emit_mov_rr_i(NATIVECODE, MAP[1], ISR1);
@@ -1276,7 +1276,7 @@
     push_<typ>(2);
     Parrot_jit_emit_get_INTERP(interp, jit_info->native_ptr, emit_EAX);
     emitm_pushl_r(NATIVECODE, emit_EAX);
-    CALL_FUNCTION(jit_info, (void*)string_ord);
+    CALL_FUNCTION(jit_info, string_ord);
     emitm_addb_i_r(NATIVECODE, 12, emit_ESP);
     if (MAP[1]) {
         jit_emit_mov_rr_i(NATIVECODE, MAP[1], ISR1);
@@ -1393,7 +1393,7 @@
     emitm_pushl_r(NATIVECODE, emit_ECX);        /* string */
     Parrot_jit_emit_get_INTERP(interp, jit_info->native_ptr, emit_EAX);
     emitm_pushl_r(NATIVECODE, emit_EAX);        /* interp */
-    CALL_FUNCTION(jit_info, (void*)string_ord);
+    CALL_FUNCTION(jit_info, string_ord);
     emitm_addb_i_r(NATIVECODE, 12, emit_ESP);   /* result in eax */
     /*
      * L5:

Reply via email to