diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2024-07-27 13:32:59 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2024-07-27 13:32:59 -0300 |
commit | 0acd55898d0aaae8dbc14c8a1bc1e3bdffc8701b (patch) | |
tree | 0ac634fed90877130b1f102bf4075af999de2158 /lcode.c | |
parent | 15231d4fb2f6984b25e0353ff46eda1a180b686d (diff) | |
download | lua-0acd55898d0aaae8dbc14c8a1bc1e3bdffc8701b.tar.gz lua-0acd55898d0aaae8dbc14c8a1bc1e3bdffc8701b.tar.bz2 lua-0acd55898d0aaae8dbc14c8a1bc1e3bdffc8701b.zip |
Added gcc option '-Wconversion'
No warnings for standard numerical types. Still pending alternative
numerical types.
Diffstat (limited to 'lcode.c')
-rw-r--r-- | lcode.c | 34 |
1 files changed, 17 insertions, 17 deletions
@@ -335,7 +335,7 @@ static void savelineinfo (FuncState *fs, Proto *f, int line) { | |||
335 | } | 335 | } |
336 | luaM_growvector(fs->ls->L, f->lineinfo, pc, f->sizelineinfo, ls_byte, | 336 | luaM_growvector(fs->ls->L, f->lineinfo, pc, f->sizelineinfo, ls_byte, |
337 | INT_MAX, "opcodes"); | 337 | INT_MAX, "opcodes"); |
338 | f->lineinfo[pc] = linedif; | 338 | f->lineinfo[pc] = cast(ls_byte, linedif); |
339 | fs->previousline = line; /* last line saved */ | 339 | fs->previousline = line; /* last line saved */ |
340 | } | 340 | } |
341 | 341 | ||
@@ -409,7 +409,7 @@ int luaK_codevABCk (FuncState *fs, OpCode o, int A, int B, int C, int k) { | |||
409 | /* | 409 | /* |
410 | ** Format and emit an 'iABx' instruction. | 410 | ** Format and emit an 'iABx' instruction. |
411 | */ | 411 | */ |
412 | int luaK_codeABx (FuncState *fs, OpCode o, int A, unsigned int Bc) { | 412 | int luaK_codeABx (FuncState *fs, OpCode o, int A, int Bc) { |
413 | lua_assert(getOpMode(o) == iABx); | 413 | lua_assert(getOpMode(o) == iABx); |
414 | lua_assert(A <= MAXARG_A && Bc <= MAXARG_Bx); | 414 | lua_assert(A <= MAXARG_A && Bc <= MAXARG_Bx); |
415 | return luaK_code(fs, CREATE_ABx(o, A, Bc)); | 415 | return luaK_code(fs, CREATE_ABx(o, A, Bc)); |
@@ -420,7 +420,7 @@ int luaK_codeABx (FuncState *fs, OpCode o, int A, unsigned int Bc) { | |||
420 | ** Format and emit an 'iAsBx' instruction. | 420 | ** Format and emit an 'iAsBx' instruction. |
421 | */ | 421 | */ |
422 | static int codeAsBx (FuncState *fs, OpCode o, int A, int Bc) { | 422 | static int codeAsBx (FuncState *fs, OpCode o, int A, int Bc) { |
423 | unsigned int b = cast_uint(Bc) + OFFSET_sBx; | 423 | int b = Bc + OFFSET_sBx; |
424 | lua_assert(getOpMode(o) == iAsBx); | 424 | lua_assert(getOpMode(o) == iAsBx); |
425 | lua_assert(A <= MAXARG_A && b <= MAXARG_Bx); | 425 | lua_assert(A <= MAXARG_A && b <= MAXARG_Bx); |
426 | return luaK_code(fs, CREATE_ABx(o, A, b)); | 426 | return luaK_code(fs, CREATE_ABx(o, A, b)); |
@@ -431,7 +431,7 @@ static int codeAsBx (FuncState *fs, OpCode o, int A, int Bc) { | |||
431 | ** Format and emit an 'isJ' instruction. | 431 | ** Format and emit an 'isJ' instruction. |
432 | */ | 432 | */ |
433 | static int codesJ (FuncState *fs, OpCode o, int sj, int k) { | 433 | static int codesJ (FuncState *fs, OpCode o, int sj, int k) { |
434 | unsigned int j = cast_uint(sj) + OFFSET_sJ; | 434 | int j = sj + OFFSET_sJ; |
435 | lua_assert(getOpMode(o) == isJ); | 435 | lua_assert(getOpMode(o) == isJ); |
436 | lua_assert(j <= MAXARG_sJ && (k & ~1) == 0); | 436 | lua_assert(j <= MAXARG_sJ && (k & ~1) == 0); |
437 | return luaK_code(fs, CREATE_sJ(o, j, k)); | 437 | return luaK_code(fs, CREATE_sJ(o, j, k)); |
@@ -483,7 +483,7 @@ void luaK_checkstack (FuncState *fs, int n) { | |||
483 | */ | 483 | */ |
484 | void luaK_reserveregs (FuncState *fs, int n) { | 484 | void luaK_reserveregs (FuncState *fs, int n) { |
485 | luaK_checkstack(fs, n); | 485 | luaK_checkstack(fs, n); |
486 | fs->freereg += n; | 486 | fs->freereg = cast_byte(fs->freereg + n); |
487 | } | 487 | } |
488 | 488 | ||
489 | 489 | ||
@@ -1290,25 +1290,25 @@ void luaK_indexed (FuncState *fs, expdesc *t, expdesc *k) { | |||
1290 | if (t->k == VUPVAL && !isKstr(fs, k)) /* upvalue indexed by non 'Kstr'? */ | 1290 | if (t->k == VUPVAL && !isKstr(fs, k)) /* upvalue indexed by non 'Kstr'? */ |
1291 | luaK_exp2anyreg(fs, t); /* put it in a register */ | 1291 | luaK_exp2anyreg(fs, t); /* put it in a register */ |
1292 | if (t->k == VUPVAL) { | 1292 | if (t->k == VUPVAL) { |
1293 | int temp = t->u.info; /* upvalue index */ | 1293 | lu_byte temp = cast_byte(t->u.info); /* upvalue index */ |
1294 | lua_assert(isKstr(fs, k)); | 1294 | lua_assert(isKstr(fs, k)); |
1295 | t->u.ind.t = temp; /* (can't do a direct assignment; values overlap) */ | 1295 | t->u.ind.t = temp; /* (can't do a direct assignment; values overlap) */ |
1296 | t->u.ind.idx = k->u.info; /* literal short string */ | 1296 | t->u.ind.idx = cast(short, k->u.info); /* literal short string */ |
1297 | t->k = VINDEXUP; | 1297 | t->k = VINDEXUP; |
1298 | } | 1298 | } |
1299 | else { | 1299 | else { |
1300 | /* register index of the table */ | 1300 | /* register index of the table */ |
1301 | t->u.ind.t = (t->k == VLOCAL) ? t->u.var.ridx: t->u.info; | 1301 | t->u.ind.t = cast_byte((t->k == VLOCAL) ? t->u.var.ridx: t->u.info); |
1302 | if (isKstr(fs, k)) { | 1302 | if (isKstr(fs, k)) { |
1303 | t->u.ind.idx = k->u.info; /* literal short string */ | 1303 | t->u.ind.idx = cast(short, k->u.info); /* literal short string */ |
1304 | t->k = VINDEXSTR; | 1304 | t->k = VINDEXSTR; |
1305 | } | 1305 | } |
1306 | else if (isCint(k)) { | 1306 | else if (isCint(k)) { /* int. constant in proper range? */ |
1307 | t->u.ind.idx = cast_int(k->u.ival); /* int. constant in proper range */ | 1307 | t->u.ind.idx = cast(short, k->u.ival); |
1308 | t->k = VINDEXI; | 1308 | t->k = VINDEXI; |
1309 | } | 1309 | } |
1310 | else { | 1310 | else { |
1311 | t->u.ind.idx = luaK_exp2anyreg(fs, k); /* register */ | 1311 | t->u.ind.idx = cast(short, luaK_exp2anyreg(fs, k)); /* register */ |
1312 | t->k = VINDEXED; | 1312 | t->k = VINDEXED; |
1313 | } | 1313 | } |
1314 | } | 1314 | } |
@@ -1623,7 +1623,7 @@ void luaK_prefix (FuncState *fs, UnOpr opr, expdesc *e, int line) { | |||
1623 | luaK_dischargevars(fs, e); | 1623 | luaK_dischargevars(fs, e); |
1624 | switch (opr) { | 1624 | switch (opr) { |
1625 | case OPR_MINUS: case OPR_BNOT: /* use 'ef' as fake 2nd operand */ | 1625 | case OPR_MINUS: case OPR_BNOT: /* use 'ef' as fake 2nd operand */ |
1626 | if (constfolding(fs, opr + LUA_OPUNM, e, &ef)) | 1626 | if (constfolding(fs, cast_int(opr + LUA_OPUNM), e, &ef)) |
1627 | break; | 1627 | break; |
1628 | /* else */ /* FALLTHROUGH */ | 1628 | /* else */ /* FALLTHROUGH */ |
1629 | case OPR_LEN: | 1629 | case OPR_LEN: |
@@ -1711,7 +1711,7 @@ static void codeconcat (FuncState *fs, expdesc *e1, expdesc *e2, int line) { | |||
1711 | void luaK_posfix (FuncState *fs, BinOpr opr, | 1711 | void luaK_posfix (FuncState *fs, BinOpr opr, |
1712 | expdesc *e1, expdesc *e2, int line) { | 1712 | expdesc *e1, expdesc *e2, int line) { |
1713 | luaK_dischargevars(fs, e2); | 1713 | luaK_dischargevars(fs, e2); |
1714 | if (foldbinop(opr) && constfolding(fs, opr + LUA_OPADD, e1, e2)) | 1714 | if (foldbinop(opr) && constfolding(fs, cast_int(opr + LUA_OPADD), e1, e2)) |
1715 | return; /* done by folding */ | 1715 | return; /* done by folding */ |
1716 | switch (opr) { | 1716 | switch (opr) { |
1717 | case OPR_AND: { | 1717 | case OPR_AND: { |
@@ -1797,11 +1797,11 @@ void luaK_fixline (FuncState *fs, int line) { | |||
1797 | 1797 | ||
1798 | void luaK_settablesize (FuncState *fs, int pc, int ra, int asize, int hsize) { | 1798 | void luaK_settablesize (FuncState *fs, int pc, int ra, int asize, int hsize) { |
1799 | Instruction *inst = &fs->f->code[pc]; | 1799 | Instruction *inst = &fs->f->code[pc]; |
1800 | int rb = (hsize != 0) ? luaO_ceillog2(hsize) + 1 : 0; /* hash size */ | ||
1801 | int extra = asize / (MAXARG_vC + 1); /* higher bits of array size */ | 1800 | int extra = asize / (MAXARG_vC + 1); /* higher bits of array size */ |
1802 | int rc = asize % (MAXARG_vC + 1); /* lower bits of array size */ | 1801 | int rc = asize % (MAXARG_vC + 1); /* lower bits of array size */ |
1803 | int k = (extra > 0); /* true iff needs extra argument */ | 1802 | int k = (extra > 0); /* true iff needs extra argument */ |
1804 | *inst = CREATE_vABCk(OP_NEWTABLE, ra, rb, rc, k); | 1803 | hsize = (hsize != 0) ? luaO_ceillog2(cast_uint(hsize)) + 1 : 0; |
1804 | *inst = CREATE_vABCk(OP_NEWTABLE, ra, hsize, rc, k); | ||
1805 | *(inst + 1) = CREATE_Ax(OP_EXTRAARG, extra); | 1805 | *(inst + 1) = CREATE_Ax(OP_EXTRAARG, extra); |
1806 | } | 1806 | } |
1807 | 1807 | ||
@@ -1825,7 +1825,7 @@ void luaK_setlist (FuncState *fs, int base, int nelems, int tostore) { | |||
1825 | luaK_codevABCk(fs, OP_SETLIST, base, tostore, nelems, 1); | 1825 | luaK_codevABCk(fs, OP_SETLIST, base, tostore, nelems, 1); |
1826 | codeextraarg(fs, extra); | 1826 | codeextraarg(fs, extra); |
1827 | } | 1827 | } |
1828 | fs->freereg = base + 1; /* free registers with list values */ | 1828 | fs->freereg = cast_byte(base + 1); /* free registers with list values */ |
1829 | } | 1829 | } |
1830 | 1830 | ||
1831 | 1831 | ||