Code triggers new in clang 13.1 (Xcode 13.3) and gcc 11 unused-but-set warnings
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- cpp
- Ambito
- build-system, tooling
Direzione di ricerca
The issue includes a proposed patch for unused-but-set warnings in lib/basisu/encoder/basisu_bc7enc.cpp, basisu_comp.cpp, basisu_frontend.cpp, basisu_gpu_texture.cpp, and basisu_uastc_enc.cpp. Review the changes against the warning locations and build with clang 13.1 or gcc 11 to check the reported diagnostics. Done means the encoder warnings are resolved without changing behavior; the zstd/zstd.c warning is noted as suppressed in the reporter's build.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Here is a patch. (GitHub does not allow uploading .patch files so I'm pasting the text)
diff --git a/lib/basisu/encoder/basisu_bc7enc.cpp b/lib/basisu/encoder/basisu_bc7enc.cpp
index 22fdfa60..7d2bbfa1 100644
--- a/lib/basisu/encoder/basisu_bc7enc.cpp
+++ b/lib/basisu/encoder/basisu_bc7enc.cpp
@@ -1281,6 +1281,15 @@ static uint64_t find_optimal_solution(uint32_t mode, bc7enc_vec4F xl, bc7enc_vec
return pResults->m_best_overall_err;
}
+#if (__cplusplus >= 201703L)
+#define MAYBE_UNUSED [[maybe_unused]]
+#elif __GNUC__ || __clang__
+ #define MAYBE_UNUSED __attribute__((unused))
+#else
+ // VC++ has no equivalent
+ #define MAYBE_UNUSED
+#endif
+
void check_best_overall_error(const color_cell_compressor_params *pParams, color_cell_compressor_results *pResults)
{
const uint32_t n = pParams->m_num_selector_weights;
@@ -1301,12 +1310,12 @@ void check_best_overall_error(const color_cell_compressor_params *pParams, color
for (uint32_t c = 0; c < 4; c++)
colors[i].m_c[c] = (uint8_t)astc_interpolate_linear(colors[0].m_c[c], colors[n - 1].m_c[c], pParams->m_pSelector_weights[i]);
- uint64_t total_err = 0;
+ MAYBE_UNUSED uint64_t total_err = 0;
for (uint32_t p = 0; p < pParams->m_num_pixels; p++)
{
const color_quad_u8 &orig = pParams->m_pPixels[p];
const color_quad_u8 &packed = colors[pResults->m_pSelectors[p]];
-
+
if (pParams->m_has_alpha)
total_err += compute_color_distance_rgba(&orig, &packed, pParams->m_perceptual, pParams->m_weights);
else
diff --git a/lib/basisu/encoder/basisu_comp.cpp b/lib/basisu/encoder/basisu_comp.cpp
index 166a1c4f..ba57ab05 100644
--- a/lib/basisu/encoder/basisu_comp.cpp
+++ b/lib/basisu/encoder/basisu_comp.cpp
@@ -1303,13 +1303,12 @@ namespace basisu
m_output_basis_file = comp_data;
- uint32_t total_orig_pixels = 0, total_texels = 0, total_orig_texels = 0;
+ uint32_t total_orig_pixels = 0, total_orig_texels = 0;
for (uint32_t i = 0; i < m_slice_descs.size(); i++)
{
const basisu_backend_slice_desc& slice_desc = m_slice_descs[i];
total_orig_pixels += slice_desc.m_orig_width * slice_desc.m_orig_height;
- total_texels += slice_desc.m_width * slice_desc.m_height;
}
m_basis_file_size = (uint32_t)comp_data.size();
diff --git a/lib/basisu/encoder/basisu_frontend.cpp b/lib/basisu/encoder/basisu_frontend.cpp
index 1f30a33c..a5f268f8 100644
--- a/lib/basisu/encoder/basisu_frontend.cpp
+++ b/lib/basisu/encoder/basisu_frontend.cpp
@@ -2346,8 +2346,6 @@ namespace basisu
if (!cluster_block_indices.size())
continue;
- uint64_t overall_best_err = 0;
-
uint64_t total_err[4][4][4];
clear_obj(total_err);
@@ -2398,8 +2396,6 @@ namespace basisu
}
m_optimized_cluster_selectors[cluster_index].set_selector(x, y, best_sel);
-
- overall_best_err += best_err;
} // x
} // y
diff --git a/lib/basisu/encoder/basisu_gpu_texture.cpp b/lib/basisu/encoder/basisu_gpu_texture.cpp
index dec769d5..56c58849 100644
--- a/lib/basisu/encoder/basisu_gpu_texture.cpp
+++ b/lib/basisu/encoder/basisu_gpu_texture.cpp
@@ -1533,8 +1533,6 @@ namespace basisu
packed_uint<4> packed_img_size(img_size);
append_vector(ktx_data, (uint8_t *)&packed_img_size, sizeof(packed_img_size));
- uint32_t bytes_written = 0;
-
for (uint32_t array_index = 0; array_index < maximum<uint32_t>(1, header.m_numberOfArrayElements); array_index++)
{
for (uint32_t face_index = 0; face_index < header.m_numberOfFaces; face_index++)
@@ -1542,8 +1540,6 @@ namespace basisu
const gpu_image& img = gpu_images[cubemap_flag ? (array_index * 6 + face_index) : array_index][level_index];
append_vector(ktx_data, (uint8_t *)img.get_ptr(), img.get_size_in_bytes());
-
- bytes_written += img.get_size_in_bytes();
}
} // array_index
diff --git a/lib/basisu/encoder/basisu_uastc_enc.cpp b/lib/basisu/encoder/basisu_uastc_enc.cpp
index 271bbc6f..aadc2a90 100644
--- a/lib/basisu/encoder/basisu_uastc_enc.cpp
+++ b/lib/basisu/encoder/basisu_uastc_enc.cpp
@@ -383,13 +383,17 @@ namespace basisu
}
}
+#if UASTC_WRITE_MODE_DESCS
uint32_t total_endpoint_bits = 0;
+#endif
for (uint32_t i = 0; i < total_tq_values; i++)
{
const uint32_t num_bits = ep_trits ? 8 : 7;
uastc_write_bits(buf, block_bit_offset, tq_values[i], num_bits, "ETQ");
+#if UASTC_WRITE_MODE_DESCS
total_endpoint_bits += num_bits;
+#endif
}
if (tq_mul > 1)
@@ -414,20 +418,24 @@ namespace basisu
num_bits = 5;
}
uastc_write_bits(buf, block_bit_offset, tq_accum, num_bits, "ETQ");
+#if UASTC_WRITE_MODE_DESCS
total_endpoint_bits += num_bits;
+#endif
}
for (uint32_t i = 0; i < total_values; i++)
{
uastc_write_bits(buf, block_bit_offset, bit_values[i], ep_bits, "EBITS");
+#if UASTC_WRITE_MODE_DESCS
total_endpoint_bits += ep_bits;
+#endif
}
#if UASTC_WRITE_MODE_DESCS
uint32_t weight_start = block_bit_offset;
+ uint32_t total_weight_bits = 0;
#endif
- uint32_t total_weight_bits = 0;
const uint32_t plane_shift = (total_planes == 2) ? 1 : 0;
for (uint32_t i = 0; i < 16 * total_planes; i++)
{
@@ -443,7 +451,9 @@ namespace basisu
uastc_write_bits(buf, block_bit_offset, weights[i], numbits, nullptr);
+#if UASTC_WRITE_MODE_DESCS
total_weight_bits += numbits;
+#endif
}
#if UASTC_WRITE_MODE_DESCS
I created the MAYBE_UNUSED macro in encoder/basisu_bc7enc.cpp because one of the unused sets stores the return value of a function call that looks important and a different warning is likely if I remove the assignment thus ignoring the return value.
There is another of these warnings in zstd/zstd.c. Because any fix would have to be redone whenever the single file decoder is regenerated I supressed the warning for that file in my build.
- Lingua principale
- C++
- Stelle
- 3.1k
- Fork
- 347
- Merge medio
- 4g 3h
- PR unite (30g)
- 1
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di BinomialLLC/basis_universal
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
BinomialLLC/basis_universal#476 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
BinomialLLC/basis_universal#471 · 1 commento · 1 reazione ·
-
ktx2_transcoder::transcode_image_level asserts on a malformed uncompressedByteLength instead of returning falseForse già presa @albertrodriguezclo l’ha presa 24 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 25/100
BinomialLLC/basis_universal#472 · 2 commenti · 1 reazione ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
BinomialLLC/basis_universal#465 ·
-
Support custom key/value pairs in KTX2 compressionForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 54/100
BinomialLLC/basis_universal#454 · 1 commento ·
Tutte le issue di BinomialLLC/basis_universal
Issue simili
-
mlir
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
llvm/llvm-project#241070 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
backlog documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 96/100
EchoTools/nevr-runtime#2354 ·
I maintainer di solito rispondono entro 1 giorno
-
Page request: clang-replApertahelp wanted new command
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
tldr-pages/tldr#25111 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Ask the `ServerHelper` for fresh headers on every poll in `Future::get`, as is done for cookiesApertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
NVIDIA/cuda-quantum#5886 ·
I maintainer di solito rispondono entro 1 giorno