https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112430
--- Comment #3 from Sam James <sjames at gcc dot gnu.org> --- Better reduction without uninit: ``` int secp256k1_scalar_reduce_512_r_0_0, secp256k1_scalar_reduce_512_m6, secp256k1_scalar_reduce_512_m9, secp256k1_scalar_reduce_512_th, secp256k1_scalar_reduce_512_tl; unsigned int secp256k1_scalar_reduce_512_c0; void secp256k1_scalar_reduce_512(unsigned int c1) { unsigned int c2 = c1 < secp256k1_scalar_reduce_512_th; int over = secp256k1_scalar_reduce_512_c0 < secp256k1_scalar_reduce_512_m9; c1 += over; c2 += c1 < over; secp256k1_scalar_reduce_512_c0 = c1; c1 = c2; c2 = secp256k1_scalar_reduce_512_c0 += secp256k1_scalar_reduce_512_m6; over = secp256k1_scalar_reduce_512_c0 < secp256k1_scalar_reduce_512_m6; c1 += over; secp256k1_scalar_reduce_512_th += secp256k1_scalar_reduce_512_c0 < secp256k1_scalar_reduce_512_tl; c1 += secp256k1_scalar_reduce_512_th; c2 += c1 < secp256k1_scalar_reduce_512_th; secp256k1_scalar_reduce_512_r_0_0 = c2; } void secp256k1_ecdsa_sig_sign(unsigned int c1) { secp256k1_scalar_reduce_512(c1); } ```