# 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: