https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91838
--- Comment #4 from Matthias Kretz (Vir) <kretz at kde dot org> --- Good point. Since gnu::vector_size(N) types are defined by you, you might be able to say that for char and short this is also UB. After all the left operand isn't actually promoted to int. Consequently the the right operand is equal to the width of the "promoted" left operand in all cases.