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

    <tr>
        <th>Summary</th>
        <td>
            clang -cc1 -analyze crashes with Assertion `(!BB || Parent == NodeTrait::getParent(const_cast<NodeT *>(BB))) && "cannot get DomTreeNode of block with different parent"' failed.
        </td>
    </tr>

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

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

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

<pre>
    llvm commit: 4f075086e7b8d
Reproduce with:
```clang -cc1 -analyze -analyzer-checker=core bbi-98084.c```
Result:
```
clang: ../include/llvm/Support/GenericDomTree.h:401: DomTreeNodeBase<NodeT> *llvm::DominatorTreeBase<clang::CFGBlock, true>::getNode(const NodeT *) const [NodeT = clang::CFGBlock, IsPostDom = true]: Assertion `(!BB || Parent == NodeTrait::getParent(const_cast<NodeT *>(BB))) && "cannot get DomTreeNode of block with different parent"' 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: build-all/bin/clang -cc1 -analyze -analyzer-checker=core bbi-98084.c
1.      <eof> parser at end of file
 #0 0x00005607f89d9a77 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/clang+0x7f1ca77)
 #1 0x00005607f89d75de llvm::sys::RunSignalHandlers() (build-all/bin/clang+0x7f1a5de)
 #2 0x00005607f89da13f SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f67d9f0bcf0 __restore_rt (/lib64/libpthread.so.0+0x12cf0)
 #4 0x00007f67d7ac4acf raise (/lib64/libc.so.6+0x4eacf)
 #5 0x00007f67d7a97ea5 abort (/lib64/libc.so.6+0x21ea5)
 #6 0x00007f67d7a97d79 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21d79)
 #7 0x00007f67d7abd426 (/lib64/libc.so.6+0x47426)
 #8 0x00005607fa6878ff (build-all/bin/clang+0x9bca8ff)
 #9 0x00005607fa686d26 llvm::IDFCalculatorBase<clang::CFGBlock, true>::calculate(llvm::SmallVectorImpl<clang::CFGBlock*>&) (build-all/bin/clang+0x9bc9d26)
#10 0x00005607fa685416 clang::ControlDependencyCalculator::getControlDependencies(clang::CFGBlock*) DebugCheckers.cpp:0:0
#11 0x00005607fa9f61a1 (anonymous namespace)::TrackControlDependencyCondBRVisitor::VisitNode(clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&, clang::ento::PathSensitiveBugReport&) BugReporterVisitors.cpp:0:0
#12 0x00005607fa9e1095 generateVisitorsDiagnostics(clang::ento::PathSensitiveBugReport*, clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&) BugReporter.cpp:0:0
#13 0x00005607fa9dc984 clang::ento::PathSensitiveBugReporter::generatePathDiagnostics(llvm::ArrayRef<clang::ento::PathDiagnosticConsumer*>, llvm::ArrayRef<clang::ento::PathSensitiveBugReport*>&) (build-all/bin/clang+0x9f1f984)
#14 0x00005607fa9dffab clang::ento::PathSensitiveBugReporter::generateDiagnosticForConsumerMap(clang::ento::BugReport*, llvm::ArrayRef<clang::ento::PathDiagnosticConsumer*>, llvm::ArrayRef<clang::ento::BugReport*>) (build-all/bin/clang+0x9f22fab)
#15 0x00005607fa9da2f6 clang::ento::BugReporter::FlushReport(clang::ento::BugReportEquivClass&) (build-all/bin/clang+0x9f1d2f6)
#16 0x00005607fa9da0cb clang::ento::BugReporter::FlushReports() (build-all/bin/clang+0x9f1d0cb)
#17 0x00005607fa5bc7ed (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
#18 0x00005607fa5954bb (anonymous namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&) AnalysisConsumer.cpp:0:0
#19 0x00005607fab3fd37 clang::ParseAST(clang::Sema&, bool, bool) (build-all/bin/clang+0xa082d37)
#20 0x00005607f968ccf0 clang::FrontendAction::Execute() (build-all/bin/clang+0x8bcfcf0)
#21 0x00005607f95f7b4f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (build-all/bin/clang+0x8b3ab4f)
#22 0x00005607f977a8de clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (build-all/bin/clang+0x8cbd8de)
#23 0x00005607f6249576 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (build-all/bin/clang+0x578c576)
#24 0x00005607f6245d1d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#25 0x00005607f6244a64 clang_main(int, char**, llvm::ToolContext const&) (build-all/bin/clang+0x5787a64)
#26 0x00005607f6256247 main (build-all/bin/clang+0x5799247)
#27 0x00007f67d7ab0d85 __libc_start_main (/lib64/libc.so.6+0x3ad85)
#28 0x00005607f624362e _start (build-all/bin/clang+0x578662e)
Abort (core dumped)
```
This starts happening with 5ce47a581350
```
Reland "[Support] Assert that DomTree nodes share parent" (#102782)
```
and I originally reported it here
 https://github.com/llvm/llvm-project/pull/102782#issuecomment-2291055153
but that didn't really lead anywhere so now also writing a proper issue to not only have the problem hidden in that merged PR.

[bbi-98084.c.gz](https://github.com/user-attachments/files/16691278/bbi-98084.c.gz)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWF1v47oR_TXMCxFDor4f8uDY8e0C3SJI0vtqjMiRzS5FqiSV3dxfX1CSY8uJN9l7CxQFsmuHIc-cORzOkAPOyZ1GvCHZLcnWV9D7vbE3rfwGqPZGtaivaiNebpR6bik3bSs9SZY0baIii8oci7oUJFqTaPmAnTWi50i_S78nyXIcJnk0_nAFekevOY_pNWhQL3_g6xd7zffIv6ElyZobi7Su5XVVRmW64K8ABzOuV_4t_PjrYCQQXCwI20jNVS-QsE2gT9jmse86Yz1hm99Qo5V8bdoni7gIfNMoDiunoX8YgbfgkCSr8PWJJHeUsOUAlCxJslybVmrwxobZ08yDeZIsV5vfbpXh3whbUW97JMnd-Icd-gBIWMmNdp4O6AGasIqOQyS7nUaTNb2A-cXdG-fXph0mDRaydeC_dA6tl0bToAorCYtvbykpVqRY0XuwqH1YElYNRiwMWzoyG_9-4Lbl4PxBgIFickdYeXtLWDX-UMJywnJKGOOgtfF0h_5UQmoaWgfOQ1RQIZsGBwrdZIkRVtAGpEKxGPfw_u93y8c76vq6lZ4CrfsdtRj2jXpD9953LvBlG8I2O-n3fb3gpj1ucvi47qz5F_Kw09K5Hh1hGwpa0CkkqN8j5RbcntbAv3kLHIOqnQ1RzNE5FNSZ3o7DYSU4Z7gEj4LaXlPHrez8RPnRA_9GRd92r4EZLUhU3Vuzs9BSsLu-Re0DcVr3UolrUIqwTS01YZs_fTQGS3GwRJIVmiYEaQfWoaXgKWoR5G-kwnEmJSyJaPQjiqIoy6OiKStRQVHQY1S7Fzd-ubdS-8Gvp1Gc8jjJwvetcd4itMP-r6gMWxmiobzgHWG30Y-iiTkURQidVz7xGZ8iE_gen4deP8qdBvU30EKhdUNof8YkZOG0nZhkZyYhTho6AyesnDwah92Cd2Fro-HfK1AyARVNXoiqiWreRHS7tei8sbi1ng4kN0rWeTp-dn5vEcTCmUU0EIwZb6IZvfQUtQCeAm-oBenwLRwPQPkAlCLwZgaUzYGqAiGjUJv3eJ0AsRghmwHl50CiqOhWq60yILbCtCD1ghslFtEHyKKoZsjFHLkW6ZBMfuJlkYaIO4EoT3cT8rIom-ajqKhqDmUzV6s6w8kFy08C8ct6swLFexVS_i-kez4tmp-gxxaU-h25N_ZL26lLWGPCzT8R51XNK3GiTDhZ0ZlHWRrns3JitLdGrbFDLVDzl6ODrwXhfI4MqbS8QJZVdI11v1uNGeudUxNozU48VE0eQxzcA230S2t6RzW06Loh61SjlZCDvr3la7S4ffhdOvlKefjlUF-PLFF7M367-9EpI1AMxWmocgPzFX139m2_exhKD9pgHX_4KeG9O_se_P4RtZNePuPr0mkDT6Amxhf0YXN9MI6qjO7CfQU8HpauJey0cV5yd8nTS2wue_tf0Wbm6fseJnMPBa_K9FcUxdf4HEUJs-aCHE_a0lp4ecBmfsTmFo5rV0a7vg0FYDx6K_prSO_r_elD3MRNVaazQ5yeadU0UP8VrY6-bow9uPsVuktRdB44_wtl34j5CSUZa6CeKZmdKQmsyT-M7HFgo3q3P1D4QKe7f_fyeaXAuU9vumDNPHPn51QjfmHTf0b1k1ekQCDic62KGYGs5gWKj3L0MlxYnXSvOz2Mjjeq1ZuMvEauppDq9fAIFeMt8nJusnd6JzVO9VgrqaXefTUilKTTcFqjdviIfh5OweAsqZ0t-ArdF92YDxY9GymG2n43Fbxzr9_PePNLSlZlaV3_FT2fLGinIDzz_qnlWVAuH5_mCflzHOcXoDppRFKc7sV9eFgsH5_mxh6xhakm1sao4-eHcQdRyURSnMYdm11Zqrzk4UZ9Ym1jg2NaLHlw_RAZyPvhfvUJo2XNm9MLdzA6u5BUWVPUaTO_J7WdVGi_aOdBc5yZnZjMNDlj-ak0UNYJ1GkzIza7CVRFAWWoy0c7E4Ujv2fD4S2dN_zHyP2IEK9FefJyCoRmhTtnaZUVOeU83oYXwMWyuwd7PENj7p-PHc7Vp3hlRcmzYpYvWXrGKxOxoAd1VvHTEJA_v36_IZnPc0TAmE7VYd6wrcLK5wsnimVntFLIp3vOQbBDxtvDUBjPE9Mlox9LVEA-u0ewfM4ly1la0MDiY7CqYun8mJ4_2yJRZnS7DU-1rfNg_faAfPEhl4AosxloeaZWkjOkI9wnHM5zdozV5eGRO3RMRN92KI625i3Dp710dLDi6B66DkNVGbtVGce0gKyMkyx6d-0DKtChMDKS3R6ai9l66sFRv4fXZhjVoVBRtweLx-bXKFESR6wo2SWGwcQXaqzcSQ1KvUzdsFAwPd2jPXR3frk11vWDmgfrydAq46ZtUftrxqo4yrI4S0b4up8cElJowgpPLQ5sFIKgoF--ByrUGarNdwrKGfrdSh_EBNpZ06GlgwHqwxRPjVYvdA_PYzOus6ZW2NK9FAI1lXo01qLdoaD3D1Onbfo_uz1pgy12f5BsTVj5EwF6h_YavAe-HxtxbNNINfQF4zyvYlaEUD0DPezHlbhJRJVUcIU3ccFSlqYsT6_2NxBhWZYNNlldF1lTZhiXWYWY5TUUeV5dyRsWsTQqWRyHRekCyliIShRVFJdZ2lQkjbAFqRZhaxbG7q4GjW4G6dmVghqVG7rzjE3xzki2vrJDR_667neOpJGSzrsjhJde4c17XcWh5YluDO__407xVW_VzZ9vBU_qPt-w_wQAAP__xtaPrQ">