https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114854
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- I'm using this slightly modified test: ``` class Vector { int m_size; }; struct S { const Vector &vec{}; }; void spawn(S); void test() { spawn({}); } ``` To initialize S we generate: D.2848 = {.vec=(const struct Vector &) &TARGET_EXPR <D.2840, {.m_size=0}>} where the TARGET_EXPR is marked TARGET_EXPR_DIRECT_INIT_P, so we expect it to be elided. But here it serves as a temporary for Vector{} to which the reference is bound, so I think it can't be TARGET_EXPR_DIRECT_INIT_P.