<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/76487>76487</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            missed optimization: redundant store is not optimized away (test case with struct)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          k-arrows
      </td>
    </tr>
</table>

<pre>
    Test case from gcc testsuite (https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-85.c)
```c
struct X { int i; int j; };

struct X x, y;
void foo ()
{
  x.i = 1;
  y = x;
  y.i = 1; // redundant
}
```
https://godbolt.org/z/nEzqGx57h

The last store in the function `foo` is redundant and can be optimized away.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8ksFyszgMx59GXDQwjg0BDhzazbIv0MNejS2Cu4C7lmmSPv03hDTJ18M3wwyWxF_oJ_81szvORA0Ur1AcEr3EwYfmv1SH4E-cdN5emjfiiEYzYR_8hEdjMBJHXlwkBFkNMX4wqBeQLcj26OKwdJnx0xoYk04uBB-2AGTbjb4D2U6aIz2y94ZbJrPHNRmIUmYNsmXWaR8orYrMgKxBHEC8wF5sj9lijmExEf9FKF_RzREdqO3wvh6gPIB6vUl_F5xB_oWXe_XTO4u99yvd42_lrYp4zhyCOuDurkC8XDPn58zTV7gtBwPZZbZ6jt89Dz9QtvDHSr3t_BgzH9atfIFs57-__v_nXJTDM83bQDhqjsjRB0I3YxwI-2U20fkZYS9672Ev0PFjDtSzRaNn7Aj9R3ST-yKL-qQvWWIbZWtV64SaXSlUmYudqJOh0RUpbfK6Nl1nu6oQvTJS7HRe14Xp-zJxjRRS7aSsRCEqWWeFzXfK2kL1pI0mA7mgSbsxG8fPaeVKHPNCTbnPqzIZdUcjXz0p5UwnvBZBytWioVk1abccGXIxOo786BJdHKmZHDPZbxy90oN6eWK-LYhx9vEH9Xrl8W74k4sDbi4BWSdLGJs_uH0d4_ZKP4J_p1XVXodnkO0V7lcAAAD__ylQDwM">