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

    <tr>
        <th>Summary</th>
        <td>
            IR Outliner: Assertion `OutputStoreBBs.size() < 2 && "Different store sets not handled!"' failed.
        </td>
    </tr>

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

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

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

<pre>
    This appeared when building a larger program. I think it hasn't been handled by any of the (unlanded) patches.

Bugpointed test case: https://godbolt.org/z/6T8Mq35bo

```
opt: /root/llvm-project/llvm/lib/Transforms/IPO/IROutliner.cpp:2113: void createSwitchStatement(llvm::Module&, OutlinableGroup&, llvm::DenseMap<llvm::Value*, llvm::BasicBlock*>&, std::vector<llvm::DenseMap<llvm::Value*, llvm::BasicBlock*> >&): Assertion `OutputStoreBBs.size() < 2 && "Different store sets not handled!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
...
 #7 0x00005565f7696bda createSwitchStatement(llvm::Module&, OutlinableGroup&, llvm::DenseMap<llvm::Value*, llvm::BasicBlock*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::BasicBlock*> >&, std::vector<llvm::DenseMap<llvm::Value*, llvm::BasicBlock*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::BasicBlock*> >, std::allocator<llvm::DenseMap<llvm::Value*, llvm::BasicBlock*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::BasicBlock*> > > >&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2c96bda)
 #8 0x00005565f7698882 llvm::IROutliner::deduplicateExtractedSections(llvm::Module&, OutlinableGroup&, std::vector<llvm::Function*, std::allocator<llvm::Function*> >&, unsigned int&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2c98882)
Compiler returned: 139
```

CC: @AndrewLitteken 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzdVm2PozYQ_jXki7WImEDIBz4k2U210q1udVn1u8EDuDE29cu-_fqOCbkkp2ur9u6qUyMC2GM_45l5ZoZK87fyqROWsGEAZoCTlw4UqbyQXKiWMCKZacGQwejWsD4m98R1Qh2IcKRjVkV06UgFuKdjiksEqN4IU29EN7gQSEQLrySKgEd0RQbm6g5sHCW3UbI-3je-HbRQDvc6sI7UzEKUrknn3GDxJaI7vFrNKy1drE2Lo3f850_Fw-9pVulLsChPpmsc6sEFKFxttHb4kPK5v0FjfoP6NAwPUeH9yTBlG216i4P7x4_h_umjd1IoMHE9DAhF5_M0ID5rwUltgDnYvwg0au_wtQeFqMWIigdP1w-aewkRzSO6JUcoVkn4xWg_TLPnxbegLDwwVLM9T_7KpEeA9fXSDbOi3khdH4IovZuwrONH-TOap80V0Degk5OGVTB9bS0YJ7Qi6Ga0afBuj8pgs7GxFe8IV4RQox5Cybgtxwe9FU0DBh2Ep8TVxIKzRGl3Ik5E57gK-UQaJnA8ceTxw916f0esr3qkHENqtsTAoI0jTn_JEeE6X8W17i9Cex1wYa2HEF8kKSdC1dJzGJlaG2Y7UrH64AyrYVKPYa0PhPs-BP84FceTDK1KlyR5TfCXZXnWLPNVXnH20_Diqyj3qtF_ihRoPQb7cicHhxG5RnlkwnwLk34QV39Wiy_MZRKF7H9uMbmqGmQsCbtQjOkOs3PA_DY38DpILAQmzGGHaG_YqbDYG2e8QrhdJdRp4yZ5pfWYX6EOfU7A4osELIqCXhzuXMBPdnI_SIEBgLvXkOjYdvZIwKD1n2boXzF459UIOnnrb6J_ufoqSbyyolUQKpX77r4Mrvrsy-0EhcXVeYMqQ6mfp6uvttVpy3bsrYtkrbiBlw_COTjgl8BROuNlylfpis2ccBLK-0_kIhT_WReZeSPLf98mssUinc-6MlvVzQpWPGsaSjnni3rJad7w5bKGIquLmWQVSFtG2Qb1T5EdW8p4nC05z2IERC_e2cQ5GmW3M1HShNIknRdJtkiSIm5owZeLLIUCclhkFL0MPVoUB5DwETQz5Xhm7IcWhVJYZ89CDH_gDYznQXzmXadNqY1ijs1G68rRtD8AkiAWpQ">