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

    <tr>
        <th>Summary</th>
        <td>
            [DSE] Stores to union are incorrectly merged
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            miscompilation,
            llvm:optimizations
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          dtcxzyw
      </td>
    </tr>
</table>

<pre>
    Reproducer: https://godbolt.org/z/KGTExzTKc
```
#include <stdio.h>
#include <stdint.h>
union d {
  int16_t e;
  uint64_t f;
  int32_t g;
} i;
int32_t *k = &i.g;
void o() {
  int16_t *r = &i.e;
  i.f = 0;
  *k = 0;
  *r = 2;
}
int main() {
  o();
 printf("%d\n", i.e);
}
```
`i.f = 0` and `*r = 2` are merged into a `store i64 2 to ptr @i` before `*k = 0`.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0U01vrDgQ_DXNxQoybfN14DAJYQ-5bXKPAHtmegMY2SabzK9fGWaZUd57EhK4ql1dLtqtc3SatK4gfYS0jtrFn42tlO-_Lt__Rp1R39XferZGLb22IA7s7P3sQBwAG8DmZFRnBh8bewJsLoDNy19vz1-Xt5ceeA38ABm_PtsSBU39sCjNQDw5r8jEZxDPf2Inf0cvE5mJKQb54wYwRpNPsnfPNIgdW2jymXz37HgH0uQFvnt22jHIa0b76n8e8PDBQNQMMKP4Vv1pSDEDWACWvzMAeLC3ffd2KD6uBL_D9i4_wE0C7z3u9tjY0vSrgaunm85safLHFUXAVEH6NK2fTywYuyvd1X_-pIzfTGectZNigbz5C6DVbNT2pFXIwLA2lDhvrGaUSYbMGzZ7y0ByCvWdPgZu0_nYxeOtZaQqoUpRtpGukpwXBecJltG5KlSmeZkmsu-ObZ6gzGQhcsnLHLs-0UVEFXKUHFEmhURexiLtVFFkqcyUbDOZg-R6bGmIh-FzDIMakXOLrgosShENbacHt44_4kiuN-NMQ-vJXEMDxLARxMHMnka6rJwLZFpHtgrkQ7ecHEg-kPPu1seTH9abVb8-Q1qz15COC8FskxwipKk31ureD9_XOKPFDtWPW0b-vHRxb0bAZnWzvR5ma_7RvQds1jM5wGY91n8BAAD__0_3EN8">