https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113576
--- Comment #40 from Jakub Jelinek <jakub at gcc dot gnu.org> --- For unsigned _BitInt(4) or unsigned _BitInt(2) we mask it whenever loading from memory or function argument or whatever other ABI specific spot (and also when storing because that is how RTL expects it; because of that we don't mask it when using it from say automatic variables where we know we've initialized it ourselves).