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

    <tr>
        <th>Summary</th>
        <td>
            Clang failed with -O3: Assertion `I->use_empty() && "trying to erase instruction with users."' failed
        </td>
    </tr>

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

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

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

<pre>
    Godbolt repro: https://godbolt.org/z/G1ev7r5Yn

Run clang++ on the following test:
[Test.cpp.zip](https://github.com/llvm/llvm-project/files/11110913/Test.cpp.zip)

Backtrace:
```console
clang++: /root/llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:3695: llvm::slpvectorizer::BoUpSLP::~BoUpSLP(): Assertion `I->use_empty() && "trying to erase instruction with users."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -O3 <source>
1.      <eof> parser at end of file
2.      Optimizer
 #0 0x000055dd1e995e4f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c78e4f)
 #1 0x000055dd1e993b8c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c76b8c)
 #2 0x000055dd1e8e0be8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007fcb4cefd420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007fcb4c9ca00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #5 0x00007fcb4c9a9859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #6 0x00007fcb4c9a9729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #7 0x00007fcb4c9bafd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x000055dd201841db llvm::slpvectorizer::BoUpSLP::~BoUpSLP() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x54671db)
 #9 0x000055dd201fcc5f llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (.part.0) SLPVectorizer.cpp:0:0
#10 0x000055dd201fd20a llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x54e020a)
#11 0x000055dd1fd95436 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5078436)
#12 0x000055dd1c2a53ad llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x15883ad)
#13 0x000055dd1e335ed0 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3618ed0)
#14 0x000055dd1c28a6b6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x156d6b6)
#15 0x000055dd1e333acd llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3616acd)
#16 0x000055dd1ec08d91 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&) BackendUtil.cpp:0:0
#17 0x000055dd1ec0bf29 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3eeef29)
#18 0x000055dd1fbbc6ec clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4e9f6ec)
#19 0x000055dd2108bb39 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x636eb39)
#20 0x000055dd1fbbb028 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4e9e028)
#21 0x000055dd1f41eaf9 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4701af9)
#22 0x000055dd1f3a30c6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x46860c6)
#23 0x000055dd1f5027e7 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x47e57e7)
#24 0x000055dd1bf08d56 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x11ebd56)
#25 0x000055dd1bf04b7a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#26 0x000055dd1f20b3cd void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#27 0x000055dd1e8e10d0 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3bc40d0)
#28 0x000055dd1f20bc8f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#29 0x000055dd1f1d34cc clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x44b64cc)
#30 0x000055dd1f1d3f6d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x44b6f6d)
#31 0x000055dd1f1dbc1d clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x44bec1d)
#32 0x000055dd1bf07200 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x11ea200)
#33 0x000055dd1be12605 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x10f5605)
#34 0x00007fcb4c9ab083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#35 0x000055dd1beff88e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x11e288e)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Compiler returned: 134
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1P5LjS_jXhxuqWYyfp9AUXTUPvzorVIGBf6b1qOXal8RnHzrEdBvbi_PYjJ-kPN80sM4LR-ZKYgcR2fTz1uFyVhDknNxrgPMkvkvzyjHX-wdjze-afmWaXpqu8O6uMeD7_xYjKKI8stNYkdIEevG9dQhcJWSVktRmGp8ZuErL6MyGrX1J4nNn8_3WCLxO8GP6_7TTiiulNQi4ScoGMRv4BUG2UMl-l3iAPzgehw5r84h6cn_K2nf4p2yS_TEh5pFf6h66actMkZKXU4_bXpLXmb8B9Qla1VOASskrTNMXzlCZkFUkl80MLLxj_4i3jsLeiwMMPN9oZBcPdAy8CGglZWWP8S-1bm2QV9FqmXW1sE-z5P-DeWPknJGR1d32zu7TBsoQuaDHPg-heAl0kdOFU-7ibNdy6MH-0d9c3w8U_tlekDF7RBVo4B9ZLo1FS4E-ThF51DtbQtP55mIQSUiSkQAkh3j73ETAILHOApHbedrxf_VX6B9Q5sG6aEJKQGaqZVCCmAxg311eLuyvkuqqRHjFUdZtAFGN9EPfdEZPOdX3IENMCSc1VJ6AnCrfMPaBqFyOyRG3PSA7OgUDOdHa4HVYy5wyXzINAttPIcStbP5p85xn_gkTXtLtA42mC5zfWbCxrELObrgHt3Rhd0wbLuGlaqcBO4KlVxoIN9wITJmyLtJt42-kvCVlVUm-HR7pPNuIrs_UkQ5MNmpggl7VtkN75tvNThyZ3aDLZcD7xxij-wKRO6OU31YfJTrPWPRiPJjU3ytiJkGyjjfOSOzSptZn0wMW3P1OU0OWIGL0aMEgDBgldgqkTeoVaZh1YxDwCLZCpUdhMw0wSZn5uvWx6Nvb3UEIoRvgJY4zzXIgU5vMcsvqQw89u-OPGSu37KNwPoSz3kyz7ujbOW2BNz88lktoPbC3fKRYJucBPlM9KyOpdCgj2p0f206rkp-xfKmC6az_rO7nRTCWk7HSfTAVSJmj5CGuLquSRtSSytgRcQYmWIdi3wM0j2OfBvF-ZFiooLUckozlLoz08-THx4P7fTgUdVcxqXmUcapERjNZrC84bC2vrRz-HFPdUFusimyipu6fJRnfDQOsfLDAxdWaKe1_SLCM48iSL1Mw5w7hClkkHb5DPg-Sil5xRjKtIch5LZvMynyNWmTdZfiCZkDKfR5KLY8mzXdTfLHNGYpmzWGbFalF8n0xKa1FEMssDlhCcllkqqh8-V96b1nlWzFIRh2weG1xznh8mkei4vGFu3JK205-aVkWpZNXp_ggb88iBDM4Us1ePRnXD-CIev2d2A353Yn_StXllzrWsLLPPJ2csFrfgOuXdi5FrY9qTSy5NIzXzxt5bgJcCneuaNli8ZPzh5fglNEwLEBfyhM4xXbOw_BYaZr9cNdL7ELXFGNlpy6wPm3SOThUlB7kh5Ep8FCdBMHtTnN4Wo4Vm6tlJ9zvTbBOouTyxiF716z6Al4AJZvv6kNA0OhxqMc8zWhzYK8AzqcbzjTn3uxGgTlsdc_EFTtHwjQUH9hHEgAe4H0Mp_PwbwY9nZUaLCP7otOOE5ZSJd4C_n_stH38U7v9FMc3LkjIRRZFGNQulOQh8YO_vRnQK7s3WthCdhWCtN_a058OC7_J7XPJRXtMiLUHgyOss5m7Jiur7UsfWzeUbsXov8u2xeo16_3oBSPNCFFWcPPIj2lHGxRuSwCnY_9PgokVaMB7v0iKCi-NSzNOgl2mjnxvTOaRZA67te7f5YGaoJhbOQVOp519Btdtq8rbTh6XHjWxBSR16vsGSoeRk_AtosdilXOfFMNJp-fcO1q2PQQldYvvVSg_rba94sEhAzTrl1wIUePiLhWO6Lt6i9t4Y9bnv11dyIMZbdB6t2iuco9HxP7xUp6us2VEoqprM0QFyAfZRyKAiBvZy3_Vf6U2Pe-_owZRfgQmwd8Asf_jcV5cOcaOdfzl1aQT8AvovZg2V8V9MumZ6c2rKQWHkrdSbW6hPpb2xvP0WhfZLPmlvOycf4RbqpfY3R0F9rMfaNETn7tl5aMYD_Oez8P23NwDUB21m4FQZVbJVxQvgJ6BcGu26ZruPh6cIfU-k-p38h5ZHZFvc3Y9PEz4mVWUwrwvgkS9Rt5jisqpotD9umHWwuLuPLb2Dho2Eq4xR-9_vbnNBC6hohD_BR_hXmJQnttlI5WGbPwHvPGzZ_RG9eAZzwMPT452lcc-TpcDqCN2VDfHe7bpDUz_IyBlOWR3DGXUGNWUU8yKGc1D7STvP9PB0_yWir3v1MVwuygLzqEohUXFc55jMYBbl-sHkvT-PhrOX5r_wd9fgv28kIJ_BLHIgqnOrGpciLxDn6bphMq6DFtay55Db6ZI_MLs9AhZj4o3vkSV6NFJ8jB9pCpXI40DkR35k1YyhLfrL9L5PFQfe3DVMqaGL7x9CnXLq6HQLMsZkeXD-zZGw8vGVJy4kKstqgivKRY_Mgdx67AbWtge3H92-ExprUs6Uqhj_sq51sHRPnEH3SKJlujRNw7Q43tUng7g79Ex_prO4fdkf5bveeLdgveZPT2k6XFTMSR6ORBls6lGMJocba2-Z9G47fCSOKRU2RegXd-NhymKf43sWDZj3SxIyU6ypBEvIbA8VKbeP8n8z1el4zI4ewKc4amZPPWbf1cR3rAb1HMH57dB9QGlQ8QzHnSopjynGyxr9N1Pk6Lnoq1yYR8ClgmacvwpcHzv24sjcohll86OFYcJrNfU3pi6iaufAt3c9ErKqyHhUn8WvBAMudSG-F5ffTOVeB-U3U11L51_rIl6k5h0PWiYDBfqXYm_H8bBd_HA06yJqzOMXlHUqKp6-iublwd9R5XCiZHgtCj8RzfcvULIKeBrjR44O9hnBeLB1W6Js7e_TyuLlW59Xju33L0oYwVFqplF1WEFKCpyjYPW7K8d1XuA8Un70hpZVuKRovVayCrmYWb8-sOSt7z8zXNJIS1x3QV2XJaBB_gcgTMoSduqPvukBa_tHzgM5UD12BIiPBB4-gRm-jYEnGcggAKU0C3Z2DtDkEXmDHACSB2X6qGxboSMLvrMawhYKi48-Ohouz8Q5FXM6Z2dwnhYlTmdFmudnD-dpXrCUEQEZkJyJqpzPRZ6L2bzGAs8wO5PnBBOKKcVpSvM8n2ZFSosMEyiBACEkyTA0TKppIPjU2M1Z__nNeZGWND9TrALl-s_DCNHwFfWDCSFJfnlmz_sPd6pu45IMK-m820vx0is4Xw7QHSA1-Ux_xpdJZ51V5z_-5VHv_T8DAAD__wPYILE">