mirror of
https://github.com/BLAKE3-team/BLAKE3
synced 2024-05-08 14:56:12 +02:00
add a redundant loop condition to silence GCC warnings
See: https://github.com/BLAKE3-team/BLAKE3/issues/94 https://github.com/BLAKE3-team/BLAKE3/issues/183 https://github.com/BLAKE3-team/BLAKE3/issues/189
This commit is contained in:
parent
32758e34a4
commit
b8e2dda186
|
@ -340,12 +340,18 @@ INLINE void compress_subtree_to_parent_node(
|
|||
uint8_t cv_array[MAX_SIMD_DEGREE_OR_2 * BLAKE3_OUT_LEN];
|
||||
size_t num_cvs = blake3_compress_subtree_wide(input, input_len, key,
|
||||
chunk_counter, flags, cv_array);
|
||||
assert(num_cvs <= MAX_SIMD_DEGREE_OR_2);
|
||||
|
||||
// If MAX_SIMD_DEGREE is greater than 2 and there's enough input,
|
||||
// compress_subtree_wide() returns more than 2 chaining values. Condense
|
||||
// them into 2 by forming parent nodes repeatedly.
|
||||
uint8_t out_array[MAX_SIMD_DEGREE_OR_2 * BLAKE3_OUT_LEN / 2];
|
||||
while (num_cvs > 2) {
|
||||
// The second half of this loop condition is always true, and we just
|
||||
// asserted it above. But GCC can't tell that it's always true, and if NDEBUG
|
||||
// is set on platforms where MAX_SIMD_DEGREE_OR_2 == 2, GCC emits spurious
|
||||
// warnings here. GCC 8.5 is particular sensitive, so if you're changing this
|
||||
// code, test it against that version.
|
||||
while (num_cvs > 2 && num_cvs <= MAX_SIMD_DEGREE_OR_2) {
|
||||
num_cvs =
|
||||
compress_parents_parallel(cv_array, num_cvs, key, flags, out_array);
|
||||
memcpy(cv_array, out_array, num_cvs * BLAKE3_OUT_LEN);
|
||||
|
|
Loading…
Reference in New Issue