https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68180
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |easyhack, ice-on-valid-code --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- t88.cc: In function ‘float32x4_t foo(float32x4_t)’: t88.cc:10:33: in constexpr expansion of ‘fill(1.0e+0f)’ t88.cc:10:37: internal compiler error: tree check: expected constructor, have vector_cst in cxx_eval_store_expression, at cp/constexpr.c:3051 constexpr float32x4_t v = fill(1.f); ^ Please submit a full bug report, with preprocessed source if appropriate. See <http://www.cavium.com/support.html> for instructions. This should not be hard to fix. Basically after: ctx->values->get (object) You convert VECTOR_CST back into a CONSTRUCTOR. Then the rest will work.