https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87680
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- I believe this bug (and other existing dups) are about the C++ FE for array initializers not emitting a loop for initialization but an initializer for each element. It does that via ;; Function constexpr Bar::Bar() (null) ;; enabled by -tree-original { <<cleanup_point <<< Unknown tree: expr_stmt (void) (((struct Bar *) this)->foo = <<< Unknown tree: vec_init_expr D.2381 >>>) >>>>>; } which eventually is gimplified to Bar::Bar (struct Bar * const this) { this->foo[0].a = 10; this->foo[0].b = 11; this->foo[0].c = 12; this->foo[0].d = 13; this->foo[1].a = 10; this->foo[1].b = 11; ... via cp_gimplify_expr.