https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116375

            Bug ID: 116375
           Summary: redundant copy not eliminated with CONSTRUCTOR
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mpolacek at gcc dot gnu.org
  Target Milestone: ---

While fixing bug 116015 it came up that we don't elide a redundant copy when
the initializer is a {}:
<https://gcc.gnu.org/pipermail/gcc-patches/2024-August/660058.html>

```
struct A {
  int a[1000];
};
void f(A);
void g() { f ({}); }
```

results int:

void g (struct A * a)
{
  struct A D.2812;

  D.2812 = {};
  f (D.2812);
}

Perhaps we should "assign the temporary the location of the argument slot, and
then 
recognize that the copy is a no-op".

Reply via email to