https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121957
--- Comment #3 from Alex Coplan <acoplan at gcc dot gnu.org> --- Slightly cleaned up testcase: typedef long __attribute__((vector_size(16 * sizeof(long)))) v16di_s; typedef long __attribute__((vector_size(32 * sizeof(long)))) v32di_s; int main() { v16di_s vcmp = {}, v16_1 = __builtin_shufflevector( (v32di_s){80383229547, 80383229547, 80383229547, 80383229547, 80383229547, 80383229547, 80383229547, 80383229547, 80383229547, 80383229547}, (v32di_s){}, 28, 3, 5, 8, 9, 8, 3, 7, 4, 3, 3, 2, 9, 7, 5, 0); asm goto("" : : : : BS_LABEL_1); BS_LABEL_2: asm goto("" : : : : BS_LABEL_1); BS_LABEL_0: asm goto("" : : : : BS_LABEL_2); v16di_s v16_2 = __builtin_shufflevector(v16_1, (v16di_s){}, 2, 6, 3, 2, 4, 9, 4, 9, 2, 3, 0, 3, 7, 7, 1, 0); vcmp = 0 == v16_2; asm goto("" : : : : BS_LABEL_0); BS_LABEL_1: asm goto("" : : : : BS_LABEL_0); if (vcmp[3]) __builtin_abort(); }