https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101651
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|vector extension and |vector extension and |element write vs C++17 |element access vs C++17 |constexpr functions |constexpr functions --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- So it is any vector array that matters: #ifdef WORK #include <array> typedef std::array<char,2> vec; #else typedef char vec __attribute__((vector_size(2))); #endif constexpr auto gen () { vec ret{1,2}; vec ret1{1,2}; for (int i = 0; i < sizeof(vec); ++i) { ret[i] = ret1[0]; } // ret1[0] =3; // ret1[0] =ret[0]; return ret1; }; auto m = gen(); Note clang rejects the above for non -DWORK case.