https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117145
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note I suspect PR 117245 and this one has the same underlying issue where C_TYPE_VARIABLY_MODIFIED gets lost after the vector_size recreates the types. That is using a typedef for the vector type fixes the issue because we don't need to recreate the type. That is doing: typedef __attribute__((vector_size(4))) char v4c; and then using v4c instead of `__attribute__((vector_size(4))) char` works.