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

    <tr>
        <th>Summary</th>
        <td>
            [Clang] Crash in vector-combine pass
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    Crash is reproducible on Godbolt:
[https://godbolt.org/z/4axfWq4dq](https://godbolt.org/z/4axfWq4dq)

Reproduce code (compile with `clang-21 -O3 foo.c`):
```c
char func(char a, int b) {
 return b < 32 ? b : 0;
}

int a;
int b;
int main() {
    char v[4][4] = {};
    for (int i = 0; i < 33; i++) {
        for (int j = 0; j < 4; j++) {
            for (int k = 0; k < 4; k++) {
                a ^= v[0][k] - func(b ^= v[0][j], i);
            }
        }
    }
    return 0;
}

```

Stack dump:
```
 #0 0x0000000003c94d38 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3c94d38)
 #1 0x0000000003c92e7c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3c92e7c)
 #2 0x0000000003be36d8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x000074a5bf042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x0000000005876204 (anonymous namespace)::VectorCombine::foldSingleElementStore(llvm::Instruction&) VectorCombine.cpp:0:0
 #5 0x00000000058805d9 (anonymous namespace)::VectorCombine::run()::'lambda'(llvm::Instruction&)::operator()(llvm::Instruction&) const (.isra.0) VectorCombine.cpp:0:0
 #6 0x0000000005881057 llvm::VectorCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x5881057)
 #7 0x0000000004e48f3e llvm::detail::PassModel<llvm::Function, llvm::VectorCombinePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4e48f3e)
 #8 0x0000000003656ddf llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3656ddf)
 #9 0x00000000011b1a9e llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x11b1a9e)
#10 0x0000000002bec20e llvm::CGSCCToFunctionPassAdaptor::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x2bec20e)
#11 0x00000000011b1f0e llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::CGSCCToFunctionPassAdaptor, 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-trunk/bin/clang+0x11b1f0e)
#12 0x0000000002be55c6 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-trunk/bin/clang+0x2be55c6)
#13 0x0000000004e489ee llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, 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-trunk/bin/clang+0x4e489ee)
#14 0x0000000002bed3e9 llvm::DevirtSCCRepeatedPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x2bed3e9)
#15 0x0000000004e48a0e llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass, 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-trunk/bin/clang+0x4e48a0e)
#16 0x0000000002be8043 llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x2be8043)
#17 0x0000000004e489ce llvm::detail::PassModel<llvm::Module, llvm::ModuleToPostOrderCGSCCPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4e489ce)
#18 0x000000000365991f llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x365991f)
#19 0x00000000054e64b9 llvm::ModuleInlinerWrapperPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x54e64b9)
#20 0x0000000004d00f8e llvm::detail::PassModel<llvm::Module, llvm::ModuleInlinerWrapperPass, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4d00f8e)
#21 0x000000000365991f llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x365991f)
#22 0x0000000003f4491a (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>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#23 0x0000000003f47412 clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, 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>>, clang::BackendConsumer*) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3f47412)
#24 0x00000000045e01e8 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x45e01e8)
#25 0x000000000624133c clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+0x624133c)
#26 0x00000000045e0dbd clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-trunk/bin/clang+0x45e0dbd)
#27 0x00000000048f107a clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-trunk/bin/clang+0x48f107a)
#28 0x000000000486ca6b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x486ca6b)
#29 0x00000000049e5683 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-trunk/bin/clang+0x49e5683)
#30 0x0000000000dcab25 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-trunk/bin/clang+0xdcab25)
#31 0x0000000000dc296d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#32 0x0000000004652b59 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
#33 0x0000000003be3af3 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3be3af3)
#34 0x0000000004652d79 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
#35 0x00000000046159ed clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+0x46159ed)
#36 0x00000000046169b1 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+0x46169b1)
#37 0x00000000046212dc clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x46212dc)
#38 0x0000000000dc72b1 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-trunk/bin/clang+0xdc72b1)
#39 0x0000000000c47e24 main (/opt/compiler-explorer/clang-trunk/bin/clang+0xc47e24)
#40 0x000074a5bf029d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#41 0x000074a5bf029e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#42 0x0000000000dc2405 _start (/opt/compiler-explorer/clang-trunk/bin/clang+0xdc2405)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW1tT27r3_TTmxQNjy5fYDzwE0_S0czrtEPo_jxnZkkFFllxJptBP_x9dEl9I0lDSc369MDA4tvbW2msvbcm2AqUkNwzjcy-58JLLE9ipWy7OBbnHQkGKT0qOHs8LAeWtT6QvcCs46ipSUuxz5r_mqORUedHcC-ZecnGrVCv1J7DwwOLGXj3j4sYDi68eWMTwof7nc4w-e8mlB7LDm4NcdxDMrxwA7FccYd8DWcWbllDsfyHq1vfSoKKQ3ZyC0D99H_k152eVlwba3mJMA_tbecG8uoXCrztWaTf6GHqg8AlTfumB3PdmF14w9wVWnWB-6XtR4UfA96KF-TD3Ay_SLbzZpQWnLaE9Z51sDhtImAeygVff902X915yEWs27D_fiy5Nk9mltdYNay50pNoRMQ10x-aw8KPIHHvgwvwO_U9MP_Wmn4xpbA53WU6s73rru976bp-1_oG-l7zSljrOwMZ5p-M8XRNfbmnxycij0GHlPQ3rH8v300_9kUvZND-b5NuPSwWrOx91TTvRhvbigSjwg4dg_RNVeYyizKf0vtHNo7l8lPbggyBMGWfXAlbYA1nfSMAvKy6VwLDxQOrkZejSaljwVnlg4SQsTvFDS7nAQp8zMlaiY3ceWJRaPvacBy6CB4fGDguNNZxgBXhWbcNaUAxZ175nS3LDIPVA1jFTAZBPuXZ-BGS67x4ZGCErcZSizDcF5QpX_B6LRwvlL8gQ1R1kjqFRm4IzhR_UWdXqZAXmz_qPnP9ZDJOyDmKQgMDFQEnpgcVDlq7S-JQS1j2c3rDOXqjOJD9LDWRj0gOOh4CTbJaCINYOIePsseGd9BlssGxNqnNL6__hSnFR8KYkDNtTNadoSdgNxa8obrBWCBdjcbxhUomuUoQzI47cH_nZEmwyxpYFCcq_A5voXDWyHz0wo7ApEfTAbD9Ae5q3WEDFhfOxP6SKM6k0xjMiBTwLDgkznYQZBslsoOaR-Qco5TCqvtmiYz2QYmA_Z5A-SiLfQQZvsPCiYotR9MoF8LLx4ND38poNY4txnNURHmBDWEFCXWGBUr7jCNPtCEcxPeXku0LWv_-zXDq2ei6zUW1JkxSheoDN8LcP169HkSOhpygfUhSGZQjzY8jth1H766XEke6WsCAKR-sKUOIKBMOUFK-XRXHN1zA003MEW11vtwb5N_z6WEBKXwvY3tpTy6J4Vsi7XAztx21AuqZnb5vRVRPYxxZBha-w7Kg6Cr2OwJ7ecKr4Onie4g9hY0-SfjzrL6R812j5zYXkpNILCUzGaZJU6QEl8BAO_sjip5GFS3wvi2i6gMvx8evLLyiunwHjnwGwfdWd40FdjCd1EUU4H6C4xPdEqGVRXOEWQ4XR7ju035xZx13PbDItLfAHLF225-fP6Pw5NeRU0msonYzOLIijAYp3HHUUX_MPXKr3AmFhYH3zJsOaPYtVZ3KkuygXSR_nk-coefW8sbIOqXgWO98R_i7l_uecOtZ6TqfPU_I8POR5yjYmf3JqXPA9NaPnKEmM07jMnwjnDaOEYfGPgG2Lxe557z8PzwWwCQ-MnknEKAjq7FijaQspv5JSHFk9leGfQbRjEIHxu6A6jvMQfuv1xauGqLmUuCnp41-YttjNUFcde98q0pCv0DyBIS3WOvNAZgGYRhewusMMzTfPJKVC9krHyOcOr1o1JkDAL6v2iyAKr9Zv7QZGCNewo2qFMMUKf8PQPc9MD-n2mnP6vlNtpxbEiuCQPidWww6fclBwJrtGZ22uM-vOflSETl7A6ERFk0TN4hAMfeKGKOfBAhjTXjipvGFSQVbhp6AKjvBrbDLImXyi0aUShN1c4XpbQTERbAtxvuXR8xumRCfJPb7CdcHUhwnx97Ur0ZrB5aNUuHGL1X9fKQdk7YXj0SayH4-jO7k4wUGIs30gzEn7ovZaQCapGXofGZnkf768di9sj1NiLbIe9-g-KQVxGEXVEPcHKCSeL6_HqJa4gU5pJee0__9SfA5Bjy-d8opKtEX9Tq-2zD3gqlN4LeHsOKyhEvWoxivmrA6DGRyiWgids80wGsI6DiDbZQ8oGwNKK5iW_r4yspWp3REcRXsWVg96tBCMc5ykWTQE7eD12O95BZ9CfVoijzDAHZwN2PEWlgBVsASJX1Xhym1IGqwKhICPuuBGhdmXZF7ba1CuMo3OgcK_5wQdBbMF1UMOJ5BBniJ_TWoRXpsROwC-bCCl9u33m6alW_FPZhftw9WndTujFGS2vT2dDsd7WOI0AWWSGwYGTmv3KmglDInm6nqThVugVZDSElZ3q5ppmL0YbMdOGEVY8KaBDE1H4NZkbWYcbqZSOF6V9_PoZo7ZGKxW1cNDGNoPJZSk0vMR0ZgMhaPG-sRKCUiUXF-euIOUaqFzMbium8z7Ojvf7AexJpN9J44qkK13Ir3l5ZZkRNMNRbAePuDYtm1os2JcwhrTxxGX-_P28jnXAuz1HU-1hGa5_ztrwewNaqFQdm_Q9qSPn4ymYZJjtJM1kyT4ZBJbUzmqwxND3WBQE4o9fQybzkfrikFgLynmNspeOemEgzQvw-dy8JaXcjcBb3n5N5FqRMC-SrtJeAuJzrXZuXc4Z8MbliMzp7npmRuvfFIQAlTtQnk5OB7N5Vsm8V2M_4vMvXjJYNnoucom8-8MrFW2XjSssZq6MHej-tuz60uXCRpID3O0DAuqeIZBbLZZv7Af62nTTxyMt5eCHOXP3F5qTHqH4dQhjgN_tdI2K6mgUKtBFAd3geNBF2C6hIqDxLfOX5wF7cv1tN4ufYLOI5RHOTzB5-EszoM8zvP45PY8xBXMExyFdV5XAJRJBJNsloU1KuEsQMEJOQcBSII0SIIojsL4LM5mYZ6iANRlAmBQenGAG0jomZbXGRc3J0TKDp-HMcjy5ITCElNpvrsAgEMJvOTyRJxrg9Oyu5FeHFAilexdKKKo-cJDYSySS999v4H592aMnlZ2G6XfQilPOkHPJ19UIOq2K88q3uhMaOHbf6et4J9wpak1MKUHFg7p_Tn4_wAAAP__y87yZQ">