From a1ad0db8a6d829eddf1478cee44ae976bbcd325f Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Mon, 6 Apr 2026 14:48:54 +0100 Subject: Fix integer conversions in code, tests and some tools --- src/solvers/coord/common.h | 12 +++++++----- src/solvers/coord/gendata.h | 19 +++++++++++-------- src/solvers/coord/multisolve.h | 12 ++++++------ src/solvers/coord/solve.h | 12 ++++++------ src/solvers/h48/gendata_cocsep.h | 5 ++--- src/solvers/h48/gendata_eoesep.h | 8 +++++--- src/solvers/h48/gendata_h48.h | 4 ++-- src/solvers/h48/solve.h | 8 ++++---- src/solvers/h48/utils.h | 2 +- src/solvers/solutions.h | 2 +- src/solvers/tables.h | 2 +- 11 files changed, 46 insertions(+), 40 deletions(-) (limited to 'src/solvers') diff --git a/src/solvers/coord/common.h b/src/solvers/coord/common.h index 593641f..3a62e85 100644 --- a/src/solvers/coord/common.h +++ b/src/solvers/coord/common.h @@ -77,7 +77,8 @@ coord_gendata_generic( unsigned char *data ) { - uint64_t i, j, n, t, nasty; + uint64_t i, j, n, nasty; + uint8_t t; unsigned char *datanoinfo; uint32_t *classttrep, *rep; size_t coord_datasize; @@ -122,16 +123,17 @@ coord_gendata_generic( } for (t = 0; t < NTRANS; t++) { - if (!((UINT64_C(1) << t) & coord->trans_mask)) + if (!((UINT64_C(1) << (uint64_t)t) & coord->trans_mask)) continue; j = coord->sym.coord(transform(c, t)); - classttrep[j] = + classttrep[j] = (uint32_t)( (n << COORD_CLASS_SHIFT) | (nasty << COORD_ISNASTY_SHIFT) | - (inverse_trans(t) << COORD_TTREP_SHIFT); + (inverse_trans(t) << COORD_TTREP_SHIFT) + ); } - rep[n++] = i; + rep[n++] = (uint32_t)i; } writetableinfo(&info, coord_datasize, data); diff --git a/src/solvers/coord/gendata.h b/src/solvers/coord/gendata.h index f803044..edf6ce6 100644 --- a/src/solvers/coord/gendata.h +++ b/src/solvers/coord/gendata.h @@ -146,7 +146,8 @@ genptable_coord( unsigned char *table ) { - uint64_t tablesize, i, d, tot, t, nm; + uint64_t tablesize, i, tot, t, nm; + uint8_t d; tableinfo_t info; tablesize = DIV_ROUND_UP(coord->max, 2); @@ -170,7 +171,7 @@ genptable_coord( tot = info.distribution[0] = genptable_coord_init_solved(coord, data, table); - nm = popcount_u32(coord->moves_mask_gendata); + nm = popcount_u64(coord->moves_mask_gendata); for (d = 1; tot < coord->max && d < 15; d++) { t = 0; if (switch_to_fromnew(tot, coord->max, nm)) { @@ -247,20 +248,21 @@ genptable_coord_fillneighbors( { bool isnasty; uint8_t m; - uint64_t ii, j, t, tot; + uint64_t ii, j, tot; + uint8_t t; cube_t c, moved; c = coord->cube(i, data); tot = 0; for (m = 0; m < NMOVES; m++) { - if (!((UINT32_C(1) << (uint32_t)m) & + if (!((UINT64_C(1) << (uint64_t)m) & coord->moves_mask_gendata)) continue; moved = move(c, m); ii = coord->coord(moved, data); isnasty = coord->isnasty(ii, data); for (t = 0; t < NTRANS && (t == 0 || isnasty); t++) { - if (!((UINT64_C(1) << t) & coord->trans_mask)) + if (!((UINT64_C(1) << (uint64_t)t) & coord->trans_mask)) continue; j = coord->coord(transform(moved, t), data); @@ -285,14 +287,15 @@ genptable_coord_fillfromnew( { bool found; uint8_t m; - uint64_t tot, t, ii, j, nsim, sim[NTRANS]; + uint64_t tot, j, ii, nsim, sim[NTRANS]; + uint8_t t; cube_t c; tot = 0; c = coord->cube(i, data); for (t = 0, nsim = 0; t < NTRANS; t++) { - if (!((UINT64_C(1) << t) & coord->trans_mask)) + if (!((UINT64_C(1) << (uint64_t)t) & coord->trans_mask)) continue; ii = coord->coord(transform(c, t), data); @@ -305,7 +308,7 @@ genptable_coord_fillfromnew( for (j = 0, found = false; j < nsim && !found; j++) { c = coord->cube(sim[j], data); for (m = 0; m < NMOVES; m++) { - if (!((UINT32_C(1) << (uint32_t)m) & + if (!((UINT64_C(1) << (uint64_t)m) & coord->moves_mask_gendata)) continue; ii = coord->coord(move(c, m), data); diff --git a/src/solvers/coord/multisolve.h b/src/solvers/coord/multisolve.h index 28f03bb..efd287d 100644 --- a/src/solvers/coord/multisolve.h +++ b/src/solvers/coord/multisolve.h @@ -72,8 +72,7 @@ STATIC int64_t solve_multicoord_dfs(dfsarg_solve_multicoord_t arg[NON_NULL]) { uint8_t m, l, i; - uint32_t mm; - uint64_t coord; + uint64_t mm, coord; int64_t n, ret; const coord_t *c; cube_t backup_cube, backup_inverse; @@ -108,7 +107,7 @@ solve_multicoord_dfs_notsolved: arg->solution_moves->nmoves++; for (m = 0; m < NMOVES; m++) { - if (!(mm & (UINT32_C(1) << (uint32_t)m))) + if (!(mm & (UINT64_C(1) << (uint64_t)m))) continue; arg->solution_moves->moves[l] = m; @@ -163,9 +162,10 @@ solve_multicoord_dispatch( return NISSY_ERROR_INVALID_SOLVER; } - return solve_multicoord(oc, mcoord, trans, minmoves, - maxmoves, maxsolutions, optimal, threads, data_size, data, - solutions_size, sols, poll_status, poll_status_data); + return solve_multicoord(oc, mcoord, trans, (uint8_t)minmoves, + (uint8_t)maxmoves, (uint8_t)maxsolutions, (uint8_t)optimal, + (uint8_t)threads, data_size, data, solutions_size, sols, + poll_status, poll_status_data); } STATIC int64_t diff --git a/src/solvers/coord/solve.h b/src/solvers/coord/solve.h index fcdb06e..6bb9af2 100644 --- a/src/solvers/coord/solve.h +++ b/src/solvers/coord/solve.h @@ -151,8 +151,7 @@ solve_coord_dfs(dfsarg_solve_coord_t arg[NON_NULL]) { bool lastbackup; uint8_t m, l, nnbackup, nibackup, nmoves; - uint32_t mm; - uint64_t coord; + uint64_t mm, coord; int64_t n, ret; cube_t backup_cube, backup_inverse; @@ -190,7 +189,7 @@ solve_coord_dfs(dfsarg_solve_coord_t arg[NON_NULL]) arg->lastisnormal = true; for (m = 0; m < NMOVES; m++) { - if (!(mm & (UINT32_C(1) << (uint32_t)m))) + if (!(mm & (UINT64_C(1) << (uint64_t)m))) continue; arg->solution_moves->moves[l] = m; @@ -221,7 +220,7 @@ solve_coord_dfs(dfsarg_solve_coord_t arg[NON_NULL]) arg->lastisnormal = false; for (m = 0; m < NMOVES; m++) { - if (!(mm & (UINT32_C(1) << (uint32_t)m))) + if (!(mm & (UINT64_C(1) << (uint64_t)m))) continue; arg->solution_moves->premoves[l] = m; @@ -280,8 +279,9 @@ solve_coord_dispatch( return NISSY_ERROR_INVALID_SOLVER; } - return solve_coord(oc, coord, trans, nissflag, minmoves, maxmoves, - maxsolutions, optimal, threads, data_size, data, + return solve_coord(oc, coord, trans, (uint8_t)nissflag, + (uint8_t)minmoves, (uint8_t)maxmoves, (uint8_t)maxsolutions, + (uint8_t)optimal, (uint8_t)threads, data_size, data, solutions_size, sols, poll_status, poll_status_data); } diff --git a/src/solvers/h48/gendata_cocsep.h b/src/solvers/h48/gendata_cocsep.h index 17568ea..f83207b 100644 --- a/src/solvers/h48/gendata_cocsep.h +++ b/src/solvers/h48/gendata_cocsep.h @@ -81,9 +81,8 @@ gendata_cocsep_return_size: STATIC uint32_t gendata_cocsep_dfs(cocsep_dfs_arg_t arg[NON_NULL]) { - uint8_t m; + uint8_t m, t; uint32_t cc, class, ttrep, depth, olddepth, tinv; - uint64_t t; uint64_t i, j; cube_t d; cocsep_dfs_arg_t nextarg; @@ -105,7 +104,7 @@ gendata_cocsep_dfs(cocsep_dfs_arg_t arg[NON_NULL]) d = transform_corners(arg->cube, t); j = coord_cocsep(d); if (i == j && arg->selfsim != NULL) - arg->selfsim[*arg->n] |= UINT64_C(1) << t; + arg->selfsim[*arg->n] |= UINT64_C(1) << (uint64_t)t; if (COCLASS(arg->buf32[j]) != UINT32_C(0xFFFF)) continue; gendata_cocsep_set_visited(arg->visited, j); diff --git a/src/solvers/h48/gendata_eoesep.h b/src/solvers/h48/gendata_eoesep.h index 271e877..81bbd43 100644 --- a/src/solvers/h48/gendata_eoesep.h +++ b/src/solvers/h48/gendata_eoesep.h @@ -59,7 +59,7 @@ gendata_esep_classes( esep_classes[j] = cl | ti; visited[j] = true; } - rep[class] = i; + rep[class] = (uint16_t)i; class++; } @@ -140,7 +140,8 @@ gendata_eoesep_fromdone( ) { uint8_t pval; - uint64_t i, esep, eo, coord, done; + uint32_t done; + uint64_t i, esep, eo, coord; done = 0; for (i = 0; i < ESEP_CLASSES; i++) { @@ -169,7 +170,8 @@ gendata_eoesep_fromnew( ) { uint8_t pval; - uint64_t i, esep, eo, coord, done; + uint32_t done; + uint64_t i, esep, eo, coord; cube_t c; done = 0; diff --git a/src/solvers/h48/gendata_h48.h b/src/solvers/h48/gendata_h48.h index 283c472..53b1fad 100644 --- a/src/solvers/h48/gendata_h48.h +++ b/src/solvers/h48/gendata_h48.h @@ -264,7 +264,7 @@ gendata_h48_maintable(gendata_h48_arg_t arg[NON_NULL]) velocity = count; /* We plan to log 10 times */ - sleeptime = (100*(nshort-velocity)) / velocity; + sleeptime = (int)((100*(nshort-velocity)) / velocity); done = count; while (nshort - done > (velocity * sleeptime) / 1000) { @@ -320,7 +320,7 @@ gendata_h48_runthread(void *arg) mutex = H48_LINE(coord) % CHUNKS; wrapthread_mutex_lock(dfsarg->table_mutex[mutex]); set_h48_pval(dfsarg->table, coordext, 0); - set_h48_pvalmin(dfsarg->table, coordmin, kv.val); + set_h48_pvalmin(dfsarg->table, coordmin, (uint8_t)kv.val); wrapthread_mutex_unlock(dfsarg->table_mutex[mutex]); } else { dfsarg->cube = invcoord_h48(kv.key, dfsarg->crep, 11); diff --git a/src/solvers/h48/solve.h b/src/solvers/h48/solve.h index 295ef88..ebc5208 100644 --- a/src/solvers/h48/solve.h +++ b/src/solvers/h48/solve.h @@ -111,7 +111,8 @@ STATIC long long solve_h48_dispatch( if (err != NISSY_OK) return err; - return solve_h48(oc, minmoves, maxmoves, maxsols, optimal, threads, + return solve_h48(oc, (uint8_t)minmoves, (uint8_t)maxmoves, + (uint8_t)maxsols, (uint8_t)optimal, (uint8_t)threads, data_size, data, sols_size, sols, stats, poll_status, poll_status_data); } @@ -343,7 +344,7 @@ solve_h48_dfs(dfsarg_solve_h48_t arg[NON_NULL]) backup_inverse = arg->inverse; ret = 0; - if (popcount_u32(mm_normal) <= popcount_u32(mm_inverse)) { + if (popcount_u64(mm_normal) <= popcount_u64(mm_inverse)) { h48_prune_pipeline(arg, prune, target, true); arg->solution_moves->nmoves++; for (m = 0; m < NMOVES; m++) { @@ -456,8 +457,7 @@ solve_h48_maketasks( int ntasks[NON_NULL] ) { - int r; - int64_t appret; + int64_t r, appret; uint8_t m, t; uint64_t mm; cube_t backup_cube; diff --git a/src/solvers/h48/utils.h b/src/solvers/h48/utils.h index d181eab..6d91108 100644 --- a/src/solvers/h48/utils.h +++ b/src/solvers/h48/utils.h @@ -29,7 +29,7 @@ parse_h48h(const char *buf, uint8_t h[NON_NULL]) goto parse_h48h_error; } - *h = atoi(buf); + *h = (uint8_t)atoi(buf); if (*h > H48_HMAX) { LOG("[H48] Invalid value %" PRIu8 " for parameter h (must be " "at most %" PRIu8 ")\n", *h, H48_HMAX); diff --git a/src/solvers/solutions.h b/src/solvers/solutions.h index beedc64..b7a848b 100644 --- a/src/solvers/solutions.h +++ b/src/solvers/solutions.h @@ -33,7 +33,7 @@ solution_moves_transform(solution_moves_t moves[NON_NULL], size_t z, uint8_t t) { uint8_t i; - for (i = z; i < moves->nmoves; i++) + for (i = (uint8_t)z; i < moves->nmoves; i++) moves->moves[i] = transform_move(moves->moves[i], t); for (i = 0; i < moves->npremoves; i++) diff --git a/src/solvers/tables.h b/src/solvers/tables.h index 8211ab3..3db1d1e 100644 --- a/src/solvers/tables.h +++ b/src/solvers/tables.h @@ -140,7 +140,7 @@ writetableinfo( STATIC void append_name(tableinfo_t info[NON_NULL], const char *str) { - int i, j; + size_t i, j; for (i = 0, j = strlen(info->solver); str[i] != '\0'; i++, j++) info->solver[j] = str[i]; -- cgit v1.3