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

    <tr>
        <th>Summary</th>
        <td>
            [Clang][Crash] Clang-18 Assertion `iter->getSecond() >= 0 && "Found a negative number of references to a VarDecl"' failed.
        </td>
    </tr>

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

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

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

<pre>
    Compiler Explorer: https://gcc.godbolt.org/z/bhnczdK3h

The reproducer:
```
void
foo (void)
{
  int a[1024] = {0};
 int *p = 0, *q = 0;
  #pragma omp parallel for collapse(2)
  for (p = &a[0]; p < &a[512]; p += 3)
    for (q = p + 64; q < p + 128; q++)
 ;
}
```

The stack backtrace:
```
clang: /root/llvm-project/clang/lib/Sema/SemaDecl.cpp:2189: void clang::Sema::DiagnoseUnusedButSetDecl(const clang::VarDecl*, clang::Sema::DiagReceiverTy): Assertion `iter->getSecond() >= 0 && "Found a negative number of references to a VarDecl"' 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 -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -fopenmp-simd <source>
1.      <eof> parser at end of file
2.      <source>:3:1: parsing function body 'foo'
 #0 0x0000000003920cd8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3920cd8)
 #1 0x000000000391e9bc llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x391e9bc)
 #2 0x0000000003865258 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f4897842520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007f48978969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007f4897842476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007f48978287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x00007f489782871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x00007f4897839e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x00000000064ed80a clang::Sema::DiagnoseUnusedButSetDecl(clang::VarDecl const*, llvm::function_ref<void (clang::SourceLocation, clang::PartialDiagnostic)>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x64ed80a)
#10 0x00000000065258a5 clang::Sema::ActOnPopScope(clang::SourceLocation, clang::Scope*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x65258a5)
#11 0x00000000061bbe25 clang::Parser::ExitScope() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x61bbe25)
#12 0x00000000062aea81 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x62aea81)
#13 0x00000000061c9b41 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x61c9b41)
#14 0x00000000062011bc clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x62011bc)
#15 0x00000000061bdade clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x61bdade)
#16 0x00000000061be2d3 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x61be2d3)
#17 0x00000000061c5746 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x61c5746)
#18 0x00000000061c65ed clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x61c65ed)
#19 0x00000000061c6ac0 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x61c6ac0)
#20 0x00000000061b929c clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x61b929c)
#21 0x00000000041bd968 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x41bd968)
#22 0x000000000443cfe9 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x443cfe9)
#23 0x00000000043c66de clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x43c66de)
#24 0x000000000452009e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x452009e)
#25 0x0000000000c29b5c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xc29b5c)
#26 0x0000000000c22dea ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#27 0x00000000042008e9 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
#28 0x0000000003865704 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3865704)
#29 0x0000000004200edf 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
#30 0x00000000041c7275 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x41c7275)
#31 0x00000000041c7cdd 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+0x41c7cdd)
#32 0x00000000041cfa45 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x41cfa45)
#33 0x0000000000c26ff5 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xc26ff5)
#34 0x0000000000b1d474 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xb1d474)
#35 0x00007f4897829d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#36 0x00007f4897829e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#37 0x0000000000c228de _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xc228de)
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/eJzkWt1y27iSfhr4BkUVCf5f-EKWrNnMZiupyDu3KhBsSthQAAcAHXmefgsg9QPaVsbnaObUqZNybBJsNL7-0OhugqBa860AuEfpA0qXd7Q3O6nuf3BQRoq7StYv9wu573gLCj8eulYqUCie450xnUbxHJEVIqstY7OtrCvZmplUW0RWfyCyqnaC_VH_d7xD4RKF8-H30w6wgk7JumdO1fgwC8cfd_sseT1cNVJiRArXQMpROH8YLjDmwmCK0ocoJAlKlxjFS4zyhxDlSxQfpawQIvPOPQ0RWdi738e7kxRGJO4U3e4plvsOd1TRtoUWN1JhJtuWdhoQKcgJBnaPECkGxYhkFkmIUjs0to2LY2MakXMzebDi8YWek6YBlJPBWWLlf3dqhpaIFK7JarA_x_4nG6zVb9F5pl4byr7jirLvRlEG7_HPWiq2dp4RWSkpDSKrtn3eB52S_wfM3g4SZNXyCpHVGvZ0_LME1s5Y16F4TqKitErs5OGjShTPnbS7WnK6FVLD_4peQ_3QmzUYqwCRgkmhzWWv36gaHs3tDL6r7hsw4M-gnl4sQfEcz7UGZbgUGGUhN6ACFD9uwayBSVEjUiBSYhQ_OnewE4ZIhhEhK9mLGlMsYEsNfwYs-n0FCssGK2hAgWCgsZGY4hM0gkiOG8pbqGcDk18_P87Xj1j31Z4bTHHVb63_S2Vs18ky4mbXVzMm9yPfr2nnWvegEVlhKmrMBWv7GrDZAWaK6t3FzJIF7txCY6A11FjLXg3NtifVWjJODdRY9QJrpnhnRshr5yN1v-9O7hHOUFh-VXKr6B5Tte33IIweHUR2ziHGMBHAMUyMThLQ4wTowKhefLehgYvjYxxs6x9UNUGCgy0O7Gpf0a6zenvT9WamcbC3LOAgOBRZQPU-0C_C0AOKl1wYaHGwxkGwZSwwUrZsR7lA8fIqMCusBe30ThocNEy2UgX14IyGM42DRsjAUTpplh2IfRdovq_tyhxZjR8HniLLE4oXIBsUP9oYokFhajCI2jpOw1sYJMkoeVYQz2MUzyNLqu3HxRY3vWDOc20gxojkjZSI5MdlT-IQh4fw-C8uScjqAjvPcetBv-jh4qviwrh5fRqcozgLKfpjI7VRQPfO-Rc2Xro1YZfGPzm7iDyEhxHYRcAiceQjj6Cs2FvIFy1Q0XdfxJpvBbWBoRcuZ9W4lVb_TXE6GB5O4uEsspSkBV5Yx_gGTD6DehmA_RcVdWuHK0b2PJmFFAYOZoyLoft_GiIeh8ibpCjzIiEpCUejhuh6KLJNlgQtF_0h2Ip-eMBmWs4yB9x18WAnvs4yKxuGO7NTQOvNd962HxvA9fcGSKegkzzDW-24-Cj4JM883ZmvmxR5E2Na2Zj5Ic2uo6c5f6U5qj6sM6o8nYWvMy6hzD6m03XxdJaXXpclUBch_XgGfZU7sUuqYwY9L7ZjmNkoaFC8cOna7792UeqzZNTKTfLvV6oMp-3yFCdd4n286dIcOTiXgCSOvODnFiZN3yZpzswX8VV2ayY7-IBlo_z8tqYMSD1TvGiYRVUFJJ1QrIdqOZ4_Hrg5GnJbYMO4HjAv_GWEAi2i94C569XoS2tDDdgq4UHWLz7lb1dxrzSNNma3tXEwwbMx9slnZZX8ORuX0HDBB78pJh242Fo7qaJGqjGvXtNZP8G-a6mBT6KRx3V6rddnamDoOTdGfebjur6pPzgqPK4S3x_CKKrYVbssCb8o2XfvUrTugL029UzemDvfosKZzqve2JL4YxS_lp9GgmsOupLqGxVb-CT47WkfWPVoTyfxoaY1_JT2L-rCUT8JA2oooD7O4k8lrk7lnNlXEPuMN9xycduYZbnwyMomZAGp45-SZX2NS-Fx9u7ivjllU1_7iymzjHiU5ZMQmOZJdpWyx8PgThfU_T003Ta-WTs9IooJEVkK9VUinmT3GZ6hfV1zfeno7z18NQrFi0lgcwHxmy22Ht-IQ6ey5X9k3bfwad9JZVw-vXk2HAz0GCinDFAWXs-GXGnzb08DZeElDSScBJGSlK8T3Xz9NKkm3T6YM6WSsj3_ve36tWA8tF79mERVXWbFJdqFrOEXEHMX2Y5lJLDewNh041JyhOBh9ErJJIlZA-UlxpWyiV7Ub4C8ObxhdA-eVwUmMcsyP8Uet8E_CW2oGLZOX7P4vj039tkRoWeCV5wlKQnD0jNhBHu25PlU7BTXLL1x3B2RedC9AidkpKxShhmLNntqe19sV82Voi8uaCzYjqrzK60NIgvst5EFHr4c3NaCAZ9nQDYxgNRA8ZHwRfTkosCFGes9bdvfgBmpPu279k1rMv813eoYi-GLF4QS14o_g3q9t2RheYk9IWFYQDnsx__09X98i3cijLZtRdn3TSP8MD6MPfrNIlrI_Z6Kerp435w9bUY52dnRqeXggh-juNiOyWGY2lOHzYYdDlE03FRUc7bRTnxk0RO2DRujKDf6-HiijratXQdSXTy3IvNz-HbuM3DuuiCSt3Rf1RSR_EwVKY5bkr_K6u35KKbbiXmYXEzFW5uGw5NvvVjTBtoXj87rU3fTvdEBq-fz5dS5oG7wf7JzWLpnHVVmFl7zAn_bPolYTvL0XeLcrNFXOfHIphe6Jx2twHt7CVdE514Jc2HbrYoDZ_ClK8XRlBFW1x9l5FdZ6ffp-FVWn7k2Hh3XwvHJAzrK7eS7bf0_z-DoJn81j6z2qnf_c0USsYYm73rW8uLaKw3eqAne4_9v5PGm5akjxmMuniTwrGlG5o41yBG5CyLzV7vo76XnG1YdFpMH2qv4wiqqkzzBFu7tRh2UeqNOvv2Qsi4_-MHKdfF0Tr_5lJCEeLOx3TbaUGU2F2b96VEg8UfJp1VaUQMe9N9ynqza07insxSglHSHZ4bv3s34foDZ6PPDuQH8g5sdhgO3XlQDjuLEQus14OAZG4k1AOYXpfs4zOmYjgLTKwF21dnOk_Mdd_V9XJdxSe_gPsqjKC1LkqR3u_ssi4AVeZ1HWVWVcVHHRZXQBqAmMQtZesfvSUiSMCZFmERJmM7CuknyLCcNVJSkZYySEPaUtzO7JmZSbe_caYX7IivD7K6lFbTaHTQiZCSLoHR5p-7dGYeq32qUhC3XRp81GG5adzpp4XqkS3tpiySULrFrC6LiX3bE465X7f0_fobDEfP_AQAA__92_HMS">