Silence 'loss of data' warnings.

parent efef4541
...@@ -166,8 +166,8 @@ rational_new_i(mrb_state *mrb, mrb_int n, mrb_int d) ...@@ -166,8 +166,8 @@ rational_new_i(mrb_state *mrb, mrb_int n, mrb_int d)
#include <math.h> #include <math.h>
#if defined(MRB_INT32) || defined(MRB_USE_FLOAT32) #if defined(MRB_INT32) || defined(MRB_USE_FLOAT32)
#define frexp_rat frexpf #define frexp_rat(x,exp) frexpf((float)x, exp)
#define ldexp_rat ldexpf #define ldexp_rat(x,exp) ldexpf((float)x, exp)
#define RAT_MANT_DIG FLT_MANT_DIG #define RAT_MANT_DIG FLT_MANT_DIG
#define RAT_INT_LIMIT 30 #define RAT_INT_LIMIT 30
#define RAT_HUGE_VAL HUGE_VALF #define RAT_HUGE_VAL HUGE_VALF
......
...@@ -41,6 +41,7 @@ each_backtrace(mrb_state *mrb, ptrdiff_t ciidx, each_backtrace_func func, void * ...@@ -41,6 +41,7 @@ each_backtrace(mrb_state *mrb, ptrdiff_t ciidx, each_backtrace_func func, void *
mrb_callinfo *ci; mrb_callinfo *ci;
const mrb_irep *irep; const mrb_irep *irep;
const mrb_code *pc; const mrb_code *pc;
uint32_t idx;
ci = &mrb->c->cibase[i]; ci = &mrb->c->cibase[i];
...@@ -57,10 +58,11 @@ each_backtrace(mrb_state *mrb, ptrdiff_t ciidx, each_backtrace_func func, void * ...@@ -57,10 +58,11 @@ each_backtrace(mrb_state *mrb, ptrdiff_t ciidx, each_backtrace_func func, void *
continue; continue;
} }
loc.lineno = mrb_debug_get_line(mrb, irep, pc - irep->iseq); idx = (uint32_t)(pc - irep->iseq);
loc.lineno = mrb_debug_get_line(mrb, irep, idx);
if (loc.lineno == -1) continue; if (loc.lineno == -1) continue;
loc.filename = mrb_debug_get_filename(mrb, irep, pc - irep->iseq); loc.filename = mrb_debug_get_filename(mrb, irep, idx);
if (!loc.filename) { if (!loc.filename) {
loc.filename = "(unknown)"; loc.filename = "(unknown)";
} }
......
...@@ -42,7 +42,7 @@ print_lv_ab(mrb_state *mrb, const mrb_irep *irep, uint16_t a, uint16_t b) ...@@ -42,7 +42,7 @@ print_lv_ab(mrb_state *mrb, const mrb_irep *irep, uint16_t a, uint16_t b)
} }
static void static void
print_header(mrb_state *mrb, const mrb_irep *irep, ptrdiff_t i) print_header(mrb_state *mrb, const mrb_irep *irep, uint32_t i)
{ {
int32_t line; int32_t line;
...@@ -120,12 +120,12 @@ codedump(mrb_state *mrb, const mrb_irep *irep) ...@@ -120,12 +120,12 @@ codedump(mrb_state *mrb, const mrb_irep *irep)
ai = mrb_gc_arena_save(mrb); ai = mrb_gc_arena_save(mrb);
i = pc - irep->iseq; i = pc - irep->iseq;
next_file = mrb_debug_get_filename(mrb, irep, i); next_file = mrb_debug_get_filename(mrb, irep, (uint32_t)i);
if (next_file && file != next_file) { if (next_file && file != next_file) {
printf("file: %s\n", next_file); printf("file: %s\n", next_file);
file = next_file; file = next_file;
} }
print_header(mrb, irep, i); print_header(mrb, irep, (uint32_t)i);
ins = READ_B(); ins = READ_B();
switch (ins) { switch (ins) {
CASE(OP_NOP, Z); CASE(OP_NOP, Z);
......
...@@ -1043,7 +1043,7 @@ sym_operator_name(const char *sym_name, mrb_int len) ...@@ -1043,7 +1043,7 @@ sym_operator_name(const char *sym_name, mrb_int len)
for (start = 0; table_size != 0; table_size/=2) { for (start = 0; table_size != 0; table_size/=2) {
idx = start+table_size/2; idx = start+table_size/2;
op_sym = &operator_table[idx]; op_sym = &operator_table[idx];
cmp = len-op_sym->sym_name_len; cmp = (int)(len-op_sym->sym_name_len);
if (cmp == 0) { if (cmp == 0) {
cmp = memcmp(sym_name, op_sym->sym_name, len); cmp = memcmp(sym_name, op_sym->sym_name, len);
if (cmp == 0) return op_sym->name; if (cmp == 0) return op_sym->name;
......
...@@ -279,8 +279,8 @@ cipush(mrb_state *mrb, mrb_int push_stacks, mrb_int acc, ...@@ -279,8 +279,8 @@ cipush(mrb_state *mrb, mrb_int push_stacks, mrb_int acc,
ci->mid = mid; ci->mid = mid;
mrb_vm_ci_proc_set(ci, proc); mrb_vm_ci_proc_set(ci, proc);
ci->stack = ci[-1].stack + push_stacks; ci->stack = ci[-1].stack + push_stacks;
ci->argc = argc; ci->argc = (int16_t)argc;
ci->acc = acc; ci->acc = (int16_t)acc;
ci->u.target_class = target_class; ci->u.target_class = target_class;
return ci; return ci;
...@@ -1282,7 +1282,7 @@ RETRY_TRY_BLOCK: ...@@ -1282,7 +1282,7 @@ RETRY_TRY_BLOCK:
} }
CASE(OP_JMPUW, S) { CASE(OP_JMPUW, S) {
a = (pc - irep->iseq) + (int16_t)a; a = (uint32_t)((pc - irep->iseq) + (int16_t)a);
CHECKPOINT_RESTORE(RBREAK_TAG_JUMP) { CHECKPOINT_RESTORE(RBREAK_TAG_JUMP) {
struct RBreak *brk = (struct RBreak*)mrb->exc; struct RBreak *brk = (struct RBreak*)mrb->exc;
mrb_value target = mrb_break_value_get(brk); mrb_value target = mrb_break_value_get(brk);
...@@ -1855,7 +1855,7 @@ RETRY_TRY_BLOCK: ...@@ -1855,7 +1855,7 @@ RETRY_TRY_BLOCK:
} }
/* format arguments for generated code */ /* format arguments for generated code */
mrb->c->ci->argc = len + kd; mrb->c->ci->argc = (int16_t)(len + kd);
/* clear local (but non-argument) variables */ /* clear local (but non-argument) variables */
if (irep->nlocals-blk_pos-1 > 0) { if (irep->nlocals-blk_pos-1 > 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment