On Tue, Jun 17, 2025 at 09:27:27PM -0400, Andrew MacLeod wrote: > + uint z = wi::ctz (m_bitmask.mask ());
uint is some compatibility type in glibc sys/types.h enabled in misc/GNU modes, so it doesn't exist on many hosts. Furthermore, wi::ctz returns int rather than unsigned and the var is only used in comparison to zero or as second argument of left shift, so I think just using int instead of unsigned is better. Committed as obvious to trunk. BTW, if nothing guards irange::snap from being called when m_bitmask.mask () == 0, I'm afraid there is compile time UB, because in that case wi::ctz returns the precision of the wide_int and then there is a left shift of wide_int with the same precision by that amount. 2025-06-21 Jakub Jelinek <ja...@redhat.com> PR middle-end/120746 * value-range.cc (irange::snap): Use int type instead of uint. --- gcc/value-range.cc.jj 2025-06-21 16:03:56.922820186 +0200 +++ gcc/value-range.cc 2025-06-21 16:05:28.167610429 +0200 @@ -2287,7 +2287,7 @@ bool irange::snap (const wide_int &lb, const wide_int &ub, wide_int &new_lb, wide_int &new_ub) { - uint z = wi::ctz (m_bitmask.mask ()); + int z = wi::ctz (m_bitmask.mask ()); if (z == 0) return false; Jakub