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.

Reply via email to