https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107671
--- Comment #1 from Iain Buclaw <ibuclaw at gdcproject dot org> --- Non-pointer variants also not detected. --- int bt32v_setb(const __UINT32_TYPE__ v, __UINT32_TYPE__ bitnum) { return ((v & (1 << (bitnum & 31)))) != 0; } int bt64v_setb(const __UINT64_TYPE__ v, __UINT64_TYPE__ bitnum) { return ((v & (1L << (bitnum & 63)))) != 0; } int bt32v_setb2(const __UINT32_TYPE__ v, __UINT32_TYPE__ bitnum) { return (v >> (bitnum & 31)) & 1; } int bt64v_setb2(const __UINT64_TYPE__ v, __UINT64_TYPE__ bitnum) { return (v >> (bitnum & 63)) & 1; } int bt32v_setae(const __UINT32_TYPE__ v, __UINT32_TYPE__ bitnum) { return ((v & (1 << (bitnum & 31)))) == 0; } int bt64v_setae(const __UINT64_TYPE__ v, __UINT64_TYPE__ bitnum) { return ((v & (1L << (bitnum & 63)))) == 0; } int bt32v_setae2(const __UINT32_TYPE__ v, __UINT32_TYPE__ bitnum) { return !((v >> (bitnum & 31)) & 1); } int bt64v_setae2(const __UINT64_TYPE__ v, __UINT64_TYPE__ bitnum) { return !((v >> (bitnum & 63)) & 1); }