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