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

    <tr>
        <th>Summary</th>
        <td>
            Clang failed with -O3: Assertion `!contains(New, this) && "this->replaceAllUsesWith(expr(this)) is NOT valid!"' 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/M4brh6cGo
Run clang++ on the following test:
[Test.cpp.txt](https://github.com/llvm/llvm-project/files/9938415/Test.cpp.txt)

Backtrace:
clang++: /root/llvm-project/llvm/lib/IR/Value.cpp:503: void llvm::Value::doRAUW(llvm::Value*, llvm::Value::ReplaceMetadataUses): Assertion `!contains(New, this) && "this->replaceAllUsesWith(expr(this)) is NOT valid!"' 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 0x0000561defa67194 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x0000561defa64f2c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3fb8f2c)
 #2 0x0000561def9a0188 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007fc701c26420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007fc7016f300b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #5 0x00007fc7016d2859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #6 0x00007fc7016d2729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #7 0x00007fc7016e3fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x0000561def231926 llvm::Value::doRAUW(llvm::Value*, llvm::Value::ReplaceMetadataUses) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3785926)
 #9 0x0000561def7591a3 llvm::JumpThreadingPass::processBranchOnXOR(llvm::BinaryOperator*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3cad1a3)
#10 0x0000561def75cfb1 llvm::JumpThreadingPass::processBlock(llvm::BasicBlock*) (.part.0) JumpThreading.cpp:0:0
#11 0x0000561def75d977 llvm::JumpThreadingPass::runImpl(llvm::Function&, llvm::TargetLibraryInfo*, llvm::TargetTransformInfo*, llvm::LazyValueInfo*, llvm::AAResults*, llvm::DomTreeUpdater*, bool, std::unique_ptr<llvm::BlockFrequencyInfo, std::default_delete<llvm::BlockFrequencyInfo>>, std::unique_ptr<llvm::BranchProbabilityInfo, std::default_delete<llvm::BranchProbabilityInfo>>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3cb1977)
#12 0x0000561def75eccf llvm::JumpThreadingPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3cb2ccf)
#13 0x0000561defe29126 llvm::detail::PassModel<llvm::Function, llvm::JumpThreadingPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x437d126)
#14 0x0000561ded292f44 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+++0x17e6f44)
#15 0x0000561dee827f56 llvm::CGSCCToFunctionPassAdaptor::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x2d7bf56)
#16 0x0000561ded279336 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::CGSCCToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x17cd336)
#17 0x0000561dee81f8a7 llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x2d738a7)
#18 0x0000561def33e8e6 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x38928e6)
#19 0x0000561dee823d54 llvm::DevirtSCCRepeatedPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x2d77d54)
#20 0x0000561def33e896 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3892896)
#21 0x0000561dee821d74 llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x2d75d74)
#22 0x0000561def3452fa llvm::ModuleInlinerWrapperPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x38992fa)
#23 0x0000561df0e1c7a6 llvm::detail::PassModel<llvm::Module, llvm::ModuleInlinerWrapperPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x53707a6)
#24 0x0000561def203a2a llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3757a2a)
#25 0x0000561defe3acd0 (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
#26 0x0000561defe3d262 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4391262)
#27 0x0000561df0d9821b clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x52ec21b)
#28 0x0000561df20343a5 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65883a5)
#29 0x0000561df0d96c98 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x52eac98)
#30 0x0000561df0627cf9 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4b7bcf9)
#31 0x0000561df05ae70e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4b0270e)
#32 0x0000561df070cf73 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4c60f73)
#33 0x0000561decf1bc74 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x146fc74)
#34 0x0000561decf17a77 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#35 0x0000561df041a259 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#36 0x0000561def9a092a llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3ef492a)
#37 0x0000561df041aaaf clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#38 0x0000561df03e3ed9 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4937ed9)
#39 0x0000561df03e495d 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+++0x493895d)
#40 0x0000561df03ee34c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x494234c)
#41 0x0000561decf1a262 clang_main(int, char**) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x146e262)
#42 0x00007fc7016d4083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#43 0x0000561decf133ae _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x14673ae)
clang-16: 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/eJztW1t34jgS_jXkRYcc2_IFP-SBJunLnO5JTkJP7xtHlmXQjrG8spxL__opyQYsAwnphd2e6fShA1hSqeqrr0olWyQifbr4INJE5ApJVkoxwGO0UKqs4MPAew-vedN8LuQcvn2H_1_8RC5C-kEMnMuBM76tC0RzUkDzO3ghUSC1YCgTeS4eeDFHilVKizO9B8G7KXw_p2V5rh7VILgceKPejFwt6uSciiV8yfP71dsQ9Ps3owq-ZjxnFbzHMR75bgCfLKFe3E5m_r4j9E8lCWVrJTrqaoNhuBRCbU-zmpwn8PfTLfz5g-Q10_PAuMDBevS94CkyPUE8HpsezcdU3I6_fgP7-q0eWDrZPeaWlTmo-oUpkhJFvlbazljPM64qJhUHeAehM_BcKgpFeAHNo9_ZgxaoFlx3BntCeMGbp68MB_hKNlLHea4FfgOAYRR7LCW8taP0QF6h36-n6J7kPIUZQMDAi1BGAO30vIHu5vPV-O4KVXWy5AoRlNRzzRwhFVKiT52XHcmrqjaeRKRIES9oXqfM8IdKUi1QsvYd2FcailIGQKSoErVsLuuRpKoE5URBgwQ-VlTyUrUq3ykQgtJ6Wa4J4EBTfCPFXJIlInJeL1mhqpYLotSagdYl2C2HAFMuJJP6mubNkKwcUQ0VTPYnNCS8WDW3UTCcpw9EZkMfPqGh0HIJsAak16qs1XmFhndoOJxTOlRC5HQBrhzgy2en152rgpTVQig0zKiAhmHKybwQleIURGaFGBrg7MvXGA3wpEUMXzUYuBoDuMxEBtdQSSSYhYhCDPAUGdIx1vT0dM_rUvEl_w6KmGtgEHaQ8-jAvyB0U5aRMHJjH91IXigD-VT77Y7PC5J_BB_l2oaRjhbD_xg1TVUbTY75v5bt9mT7mUc7EVM9Vc2HSc5IUZfXRSMNZqiLCj4CEXKhvaHDYXQkr8LLecRZMgJl1klGa-tZ2sbEcUcjNNGOuGVU3DP51McBQNK6WX0mENHsUe0GBLdTRBmNHJd6oe85aDaTkPfAjhnEX2Nnk6weR-Es9Ic5L-rH4byom4ZSLSQj6Xklzh1ji-uDFMsS35omzLDjJEgSXrED5FMtOTSSfT3QkhzYklNvFMSIJOIgzTuSPT3Qkhz2JUdrrx8sM_JsmZEtk-EsDV8nE-shlsyRxRLgeAxZ-sQrx9HZHwH6nm1XbNkVBbFLcEfH3yDzTg3xoBq4gZmay20qfydJQRfXxb-uby173_GCyKfrkkkCBG9TxrGNoSQFXTf1AvjE6RlDs8Q93Jhc0D9tM0jFaXt5ZcI55FqlIzBGlrjtwNcKuT2F0jiKXlYI7P60LHNLl_d1QTUspj7osmgKSyBTn3kiAfJPRSa2eNb0gIxeVJmQy519PpPvT4aPO1vHQNCqzmGV7bdciuVUMva1BNoy2TYnsCjq90qlTa-64P-p2axUEtasDr4a2veSQVtBW907o_TaAZPOUpYzxV4aCUsjvA6Z1ZAWCoiEJDzn6nUT7xzczn0CjicuMMbiuNejFKM0O4hSh9FpDCvdU8WrL6Qgc2Yjtx6kjQ1PY68H5lj2Yste5sWulXhTSJk8bz5rc78I8NpurS07t3Gymm9gbWbynqUNHqz6MZT06-8Dv4-j1O2sDxp-vwt_6sVe5vtHgN_0fc7GH4X7zYtuxEJwkuXFoOtFNvKiLOgG0eTD3WQyFSvVtHPGKSn12r3TcL1aTEief5CkXDSXQMCrYNgnor8obfqA9BayZ_tYrcawZnFqVrDTQO6lUQKIWpCHduBEMcavy1uHIPSM444VCD_sqP_SS_uC7o17_XCnKVDL4l5kh7ubjUh0QPI9BJc3qvx9qQJpCgMTLKrY-1qM2YgdP039Awn3ll5_jZjBo9iDkLBiJu5VUzgNujXxJbvnUoF2t6xk-rb2_m3YG9pbGSoCMLtoe85WhoqPn6F2--wtyH8N2pkgj60g99xekLtp1A1yoFmds6m4EZW6limTRtUXd07NsFch3Q451XYRQi4A0yzb7XtM2A-8jGzZ_qnIecHkN3BcyeT-HPfzmQzujsEiy-TubabMYS6NyOuyzMrMySFAHSuxbIDaF-o_H_oBjhwA10Lft5-uOJh4XcLtqx93Yf5PgwtHQQRoWHAF9j1RTGjq6HlJIYqnpagrVJAlq0rz7D1u1LxacqWPISyT_Okjy0vWZqjbumgfDxNzC4GXTNMVpDWamE76GAYr0vH63txLN9kleZiVD5IrNquUZGR56A327YHtfb3wkGmnQuTX5iH9e94Q45A5e6M2E8aoNfyr4vnOJzxe2HNF6oUe6iCnYW-FNFPYwF5uHvVfFXODuzG00-UjI7C83DEi6UJ7CiiDKPxR210nkJU-sOKFXs3zoBc6fYZPu7psULtTkhfzW5btynntk6Cfi0InuGGun0Z4VmxG1kKSxlA5JDtwmID0erkKwuZsgXlEl5sw_FrwHlPGd9P2jMGJ0rLHKKhq2dK9OaCzso9J0LXlRp87AcVsTe_YkrRsWT0JbN6PrnMYjEagkqVz3MM_pPFoR4y0PGxi9JHRWrEVNUenQZeAIl1NrSM4mRN6Ec3irqbvpfb3OmS6qp5GST-JEtDBUtK1lAwIixxmw9lM-wlSBCko243ofqtO8yArcTzQ0zLEswyJHJpF2ErUjcobe-4FJdvqb9l7ksMNPg0d0M8ywHoQSjM3obAhodSdLfXxs24RM5aSPOnEjCd0QeQqf4_bLaV9DS50znUd--a0H2bU3lxgv2dHRKIIrdCfuFOTKjrW3C1he_gHo7CnMqcidhllSJRKfs_kzmUaB5b3fZd4Qdw__Zm1T1Fm0kBnWptAW5eLFFTRxxpnWaH12NCimbulyMQFliwhpfdjdqeLNheb9ZbY-4rNMrt9wmE2o4-Prtt8SfRpFb3ica2UAcnqrC_MlCRcH5ZsmnviwDjNeb13XbfrLp1DHYYkDfRmyMCLcrJMUkj40QYrsLQ9v_ebSHY7xK6bYuLEVsW_62zdul69IxnLnyw8n_fdCapylvmxXZXjqM8xQjL0S3Okf2BqHxmsOsPBDLM03ouccR7ZWhJXcFrZujdQd9hX8D7TdWxVMx3bjpryYxyB2Raj4h4ufhykr8UFQK_2gwKtnzkYs6fE30q9ax6UhGsKmKOwh-PY3cudGs0RgNVF03d6aDLs032aX3Y-W5XBjpJgnxf-h2gevwCJfUCMWvi5vYWbrLe6qxJkpb9JK-OTlRSst-fyV7Xd6hCx74wwms30mV5IdpB_jIKvPFashViz9AswjAlDjfwTGBmB9PX0zXA3BBYgJqW5u9xAj7K2ngZaNPRofvKBHrhaIPbIdWynDLlQd-kD9hVDw3v9c4-KMcQ7RW4706q-RZKpWhZME1QPPmMXbhhGQRjGXnCWXuA0xjE5U1zl7GLSaNKZeHhtfl_z__7dy1kt84sf_2ELbC9d72xxkQTUGdEkiiJGYpKMXDdJQ89nOBxFsMOPznKSsLy6GATgPq9gD8iI0LoEl2f8wnM8z3WhJMCO5wTnJE6dMA4wFPlJlLr-wHdgy8zzc62H_rHWmbwwKiX1vILGHDJ0tWkEFukfSTAzHcgntVoIeTEl6okU5FLUiarOjAIXxoC_ANCiu8k">