https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72758
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note the testcase is wrong (but only slightly). Also as a workaround you can use a GNU C extension. Something like: int main(int argc, char* argv[]) { poly128_t a = {0}; uint64x2_t b = (uint64x2_t)(a); return 0;