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

    <tr>
        <th>Summary</th>
        <td>
            [analyzer] Analyzer crashes with #pragma omp parallel for
        </td>
    </tr>

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

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

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

<pre>
    The clang analyzer runs into an assertion when running the command `clang++ --analyze -fopenmp -c bug.cc` on the following code:

```
int* foo(int m, int n)
{
  int* p = new int[m];

  for (int i = 0; i < m; ++i)
    p[i] = 1;

#pragma omp parallel for
  for (int i = 0; i < n; ++i)
    p[i] += 2;

  return p;
}
```

Assertion:
``` 
clang++: /tmp/LLVM/llvm-project/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:1290: bool isInitializationOfVar(const clang::ento::ExplodedNode*, const clang::ento::VarRegion*): Assertion `VR->getDecl()->isStaticLocal() && "non-static stackless VarRegion"' failed.
```

This happens at least since version 16.0.0 and is still reproducible with today's git revision.

Stack dump:
```
0.      Program arguments: /LLVM/bin/clang++ --analyze -fopenmp bug.cc
1.      <eof> parser at end of file
 #0 0x00000000037e2718 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/LLVM/bin/clang+++0x37e2718)
 #1 0x00000000037e057c llvm::sys::CleanupOnSignal(unsigned long) (/LLVM/bin/clang+++0x37e057c)
 #2 0x000000000372c200 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007fccbb312ce0 __restore_rt (/lib64/libpthread.so.0+0x12ce0)
 #4 0x00007fccb9d91a9f raise (/lib64/libc.so.6+0x4ea9f)
 #5 0x00007fccb9d64e05 abort (/lib64/libc.so.6+0x21e05)
 #6 0x00007fccb9d64cd9 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21cd9)
 #7 0x00007fccb9d8a3f6 (/lib64/libc.so.6+0x473f6)
 #8 0x000000000587e69a (anonymous namespace)::StoreSiteFinder::VisitNode(clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&, clang::ento::PathSensitiveBugReport&) BugReporterVisitors.cpp:0:0
 #9 0x000000000586d258 generateVisitorsDiagnostics(clang::ento::PathSensitiveBugReport*, clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&) BugReporter.cpp:0:0
#10 0x000000000586e553 (anonymous namespace)::PathDiagnosticBuilder::findValidReport(llvm::ArrayRef<clang::ento::PathSensitiveBugReport*>&, clang::ento::PathSensitiveBugReporter&) BugReporter.cpp:0:0
#11 0x0000000005872d39 clang::ento::PathSensitiveBugReporter::generatePathDiagnostics(llvm::ArrayRef<clang::ento::PathDiagnosticConsumer*>, llvm::ArrayRef<clang::ento::PathSensitiveBugReport*>&) (/LLVM/bin/clang+++0x5872d39)
#12 0x0000000005873106 clang::ento::PathSensitiveBugReporter::generateDiagnosticForConsumerMap(clang::ento::BugReport*, llvm::ArrayRef<clang::ento::PathDiagnosticConsumer*>, llvm::ArrayRef<clang::ento::BugReport*>) (/LLVM/bin/clang+++0x5873106)
#13 0x000000000586fc33 clang::ento::BugReporter::FlushReport(clang::ento::BugReportEquivClass&) (/LLVM/bin/clang+++0x586fc33)
#14 0x0000000005870a8f clang::ento::BugReporter::FlushReports() (/LLVM/bin/clang+++0x5870a8f)
#15 0x00000000053b3602 (anonymous namespace)::AnalysisConsumer::HandleCode(clang::Decl*, unsigned int, clang::ento::ExprEngine::InliningModes, llvm::DenseSet<clang::Decl const*, llvm::DenseMapInfo<clang::Decl const*, void>>*) AnalysisConsumer.cpp:0:0
#16 0x00000000053d151f (anonymous namespace)::AnalysisConsumer::HandleDeclsCallGraph(unsigned int) AnalysisConsumer.cpp:0:0
#17 0x00000000053d1f41 (anonymous namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&) AnalysisConsumer.cpp:0:0
#18 0x0000000005a151dc clang::ParseAST(clang::Sema&, bool, bool) (/LLVM/bin/clang+++0x5a151dc)
#19 0x0000000004293bd9 clang::FrontendAction::Execute() (/LLVM/bin/clang+++0x4293bd9)
#20 0x0000000004224859 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/LLVM/bin/clang+++0x4224859)
#21 0x0000000004363f11 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/LLVM/bin/clang+++0x4363f11)
#22 0x0000000000bbd840 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/LLVM/bin/clang+++0xbbd840)
#23 0x0000000000bb5f3f ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#24 0x0000000004070979 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
#25 0x000000000372c6b2 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/LLVM/bin/clang+++0x372c6b2)
#26 0x0000000004071036 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.284) Job.cpp:0:0
#27 0x000000000403d3d4 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/LLVM/bin/clang+++0x403d3d4)
#28 0x000000000403de2b clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/LLVM/bin/clang+++0x403de2b)
#29 0x0000000004047346 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/LLVM/bin/clang+++0x4047346)
#30 0x0000000000bb9ed5 clang_main(int, char**, llvm::ToolContext const&) (/LLVM/bin/clang+++0xbb9ed5)
#31 0x0000000000acaf03 main (/LLVM/bin/clang+++0xacaf03)
#32 0x00007fccb9d7dcf3 __libc_start_main (/lib64/libc.so.6+0x3acf3)
#33 0x0000000000bb567e _start (/LLVM/bin/clang+++0xbb567e)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 20.0.0git (https://github.com/llvm/llvm-project.git 065d2d9c60da0214c17a8300385b22be1c26dc70)
Target: x86_64-unknown-linux-gnu
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWV9z46iW_zTkhYoLgSVLD3lwnHi3p7p3upJsXl0IIZsdBFpA6WQ-_S2QbAvFTpw7U_c-3K5OYktwzu_8zl8Jaq3YKs5vQHoL0rsr2rmdNjfPD1ywHZfuqtTV283TjkMmqdpCqqh8-5MbaDploVBOQ6ogtZYbJ7SCv3Zc-XtKqC10fptuGqoqCDIUJAB8C_AtvL4eJMHrWrdcNS28ZrDstjPGQIagVmF3raXUv7wspisOyBKgO4D2vzM0_A9fhXIAL2GtNcC5UA42AK88RKgALoYti9v-A4TD8hYCcgcV_xUupLcNSO8AuR3rgbDWBg5CRViPALkNH1ew8R97q8RBD4QQtiC9FSC9CxuSiUyASWvotqFQNy1sqaFScukVXaJTfa4T3_o9-J0phrvOKNgebyzuTtLZ_17uPXvk_rBshcFyWDxyLSBLCPDaNS3A6-_fn38AvJbypblujf4_zhzA62H1WooS4PWjo06w5RBYAK9X2nCA17fd9oG32jhunoUVThs7Y20LyDLBBfJqSq0lFPabEk5QKf6kHujv9TM1AOdMK-v6qPXYyZIrp_tP96-t1BWv_sfHFF76MPlg9TM1D3zrKfBLC6_4wIoP6-eHa0Dut9zdcSYBzgEu_AVhe8O-a0aHyxDgDOAMAoyVVtc23IfWUfaH5NbCkSYM8ALWVEhezT5wz9NOWLijbcuVhdRByal10ArFOHzhxnqISTZDMwR9EgoLrRNSQsNbo6uOiVJy-Eu4HXS6om8ALyzcCgcNfxF-82ys7NEDhVXXtCeCIXxFM4CKn0ZvDW0gNduu4crZISKGWCiFOobAuVowFIIgNPFCAVlxXQNy73PFcuON5aqCuoa1kHyIboAJgugV7f-RBceLJIc-_npn2jfbf_hphHLBoidDGQc4Py4y9NdGW2c4bYLHVn2x8P7LPzAE4Fv0Oqg8ZiXAJJlgQumCncK0kpyqrv1dPYqtCkHTqVCeKyi113IpAq8gQoBjBJhhhODKULt74Ey_cPPWq_xvqirpkzAfLI7WrLRy_NUNWYjCz0EFGVQsasbKkiSYcQQ3G8Ot04ZvjBuwS1Fm8_5v63aG02pm9QwF6GFTBHw-llpURUKLGhoqLH8vjnlBWRA057SoI0FpLCibc5RCWupTuEaCcMJRGgnKpoJYVcCNkhupabWpdEOFmjEtqxn6RDKrikjyIpacU1JnH1u5IHUWicjHfk7zBc8K6kVQpdVbozsLFW24bUPEF33UPXr_PArH10JV3AxFz1fcvj7mn9bQvnruK-mp1aNaPgTRkFgnV_-kbvfIlRVOvPDD1rCjgOfbwiQgi5iLrMJpDrdccUMd32-9E3SrtHWC2XOWnkNz3tq_hZvI0vcW-rKCJhbyNCWfedtbczT6thPy4PNaqOqZSlHtLRyVxKUx9O2B14CsvkgSuf-6q30FuoyCZBLwuCLFFzWFu_u4iOmxX-bguHelle0ab0nPwQr-jWxe1AgGOo7DLyYJnvBFEpT9Fb6O9q612Zv8g7bnkmmaP_8Odt8ReimbnqyITTJJwJoR8mmS9xfWsvONdUi0j_fc_38nXlaSWvsV5wc0Edz5xPmI5vXX4drDMHsJZ15HBCKNQJCSZAh_VrTCw4EV9uD1cLUfVlbvmlQ_h4fwOsxPYZw5X67NvdoKxfvv35QU_vn1h664jUPrjivLH7mLQ8srjOr8ZMMP2n5Ttf5k04sWlQ9HH5H-QQNOrT5dAbOYzypJk_qv8Olx2RWV8r8MbXfjGXQYCS-DtZjCqufJX4H1ZKiyMjzh_a8Sk5xZPj7FrfMyjPG0RJM0qdg4RH76R43l41Os7JE3dGhp_gH0-PeylOjVRCkRTSpzXJCyiprY2njjVLVk-ydxH7ScdY5fnouD3LFijGLFeJ6nkeKVblohufmmrKOK8Uj1gCbiZoL04mo16I7ARa19TjJSJ8kY3ADjiPFFM_oe0jsb-uS6BFSvMwIV9U9UllU-R5CxZOPH_rPTwo6aY6r37Sq-tk__i7H1miNoZAItrUkN9yStkqcQoyOAjw2V8pkzp823ppUncWZxNfMyhkTbrwserox4OZNkOGo6c7RAxaIIxo7k1p0KAbMxga9wt4_sUBD9EkalLCn7Y1OruI72ugdfr5JV_75xmiQn_WLdsE63Xjv1HIz4cUaobVh5PzjtsGGzYa-vSdJ_KakVbGPD8oHFaLG_sHGGCmf3tyfiqJQ-drUZ3R_awL64hMDoOQ9bAF5I2pQVBXhxpArn-xcFv-nytD_S6auArMQjV5x64O_vPHTqkdZcvkV0fuy6S99YBBRRNGeTsEkQiQbV_zi3eyJnLTVuhvP5hx5exNSRilTzs9SF6kjf9ZU9n1EpnWwM7_WPZWD1gY7x0mXUPEfWfVqPe1OiMMmntnJcftXW33Rpzxv6my6_C-siQz8qogfvtlR4x76fPD_kZgiBf54hjsuIoXi4QPMFmZ9NpLvR56i9nuir55j9FzJ0WRfvTR5zEr8kRmVZ8Crt9e_7-B5TSOrlu7H-XCO8qHN7bRGcaNJBlNEaEeiBXCKvXx7Jw_GLxEXFagI3GylKX6-ocZuR8NOvFglldSz03XiRLTjsxV1mtt9wkDg5MOLG-Cq4HE4Z62GMPJwe9ich_UkFfxUuHAfChMy96s5yeP0CnYaWcyhGc-BY2eE8BKMZmqGtCLB3zrXh7TteA7zeCrfryhnTzXBoNTm7mvldKEsrXBUsQxVFOJmzZEFzghDJ0xLjkicMZxVbHIezJ2q2_pFxCV_zbJPNrzv1h9K_1LUUqnu93qpucphyVd2QqiAFveI3yQLPUZ4U-eJqd1OnHJXFPM2yEtGMYF5l86KgOCe4SBKWXIkbjPr1SUqKeTbLC1JlhBK8YAwRloE54g0VcubNmmmzvRLWdvwmQfMcJVeSllzacBiMcTgU9XcBxiC9uzI3gYuy21owR1JYZ49inHAynCLvT4hBegf3h3qQ-amC296B588-rzojb77mEoDXAaMFeD0Y8XKD_xEAAP__hdIVnA">