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

    <tr>
        <th>Summary</th>
        <td>
            Assertion `ClsMembers.contains(Old)' failed with clang -cc1 -analyze -analyzer-checker=core
        </td>
    </tr>

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

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

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

<pre>
    llvm commit: 573a5b580
Reproduce with:
```shell
clang -cc1 -analyze -analyzer-checker=core -o /dev/null bbi-69854.c
```
[bbi-69854.c.gz](https://github.com/llvm/llvm-project/files/8713977/bbi-69854.c.gz)

Result:
```console
bbi-69854.c:7:23: warning: equality comparison result unused [-Wunused-comparison]
    (a | (1 + c)) / b == d;
    ~~~~~~~~~~~~~~~~~~^~~~
bbi-69854.c:8:7: warning: inequality comparison result unused [-Wunused-comparison]
    c != a;
    ~~^~~~
bbi-69854.c:8:7: note: use '|=' to turn this inequality comparison into an or-assignment
    c != a;
      ^~
      |=
bbi-69854.c:10:11: warning: if statement has empty body [-Wempty-body]
    if (d);
          ^
bbi-69854.c:10:11: note: put the semicolon on a separate line to silence this warning
clang: ../../clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:2509: clang::ento::ProgramStateRef (anonymous namespace)::EquivalenceClass::removeMember(clang::ento::ProgramStateRef, const clang::ento::SymbolRef): Assertion `ClsMembers.contains(Old)' 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 -o /dev/null bbi-69854.c
1.      <eof> parser at end of file
2.      While analyzing stack: 
        #0 Calling f
3.      bbi-69854.c:8:5: Error evaluating statement
4.      bbi-69854.c:8:5: Error evaluating statement
 #0 0x0000000002e0d863 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/clang+0x2e0d863)
 #1 0x0000000002e0b4de llvm::sys::RunSignalHandlers() (build-all/bin/clang+0x2e0b4de)
 #2 0x0000000002e0dbe6 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fd5535c6630 __restore_rt sigaction.c:0:0
 #4 0x00007fd550d0d387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007fd550d0ea78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007fd550d061a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007fd550d06252 (/lib64/libc.so.6+0x2f252)
 #8 0x0000000004573602 (anonymous namespace)::EquivalenceClass::simplify(clang::ento::SValBuilder&, clang::ento::RangeSet::Factory&, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, (anonymous namespace)::EquivalenceClass) RangeConstraintManager.cpp:0:0
 #9 0x00000000045723f2 (anonymous namespace)::ConstraintAssignorBase<(anonymous namespace)::ConstraintAssignor>::assignSymExprImpl(clang::ento::SymExpr const*, clang::ento::RangeSet) RangeConstraintManager.cpp:0:0
#10 0x000000000456daa7 (anonymous namespace)::RangeConstraintManager::setRange(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymExpr const*, clang::ento::RangeSet) RangeConstraintManager.cpp:0:0
#11 0x0000000004563b8c (anonymous namespace)::RangeConstraintManager::assumeSymEQ(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymExpr const*, llvm::APSInt const&, llvm::APSInt const&) RangeConstraintManager.cpp:0:0
#12 0x0000000004577e06 clang::ento::RangedConstraintManager::assumeSymRel(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymExpr const*, clang::BinaryOperatorKind, llvm::APSInt const&) (build-all/bin/clang+0x4577e06)
#13 0x0000000004577124 clang::ento::RangedConstraintManager::assumeSym(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymExpr const*, bool) (build-all/bin/clang+0x4577124)
#14 0x0000000004594b2d clang::ento::SimpleConstraintManager::assumeAux(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::NonLoc, bool) (build-all/bin/clang+0x4594b2d)
#15 0x0000000004594898 clang::ento::SimpleConstraintManager::assume(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::NonLoc, bool) (build-all/bin/clang+0x4594898)
#16 0x00000000045947ab clang::ento::SimpleConstraintManager::assumeInternal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::DefinedSVal, bool) (build-all/bin/clang+0x45947ab)
#17 0x00000000044e10b5 clang::ento::ConstraintManager::assumeDual(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::DefinedSVal) (build-all/bin/clang+0x44e10b5)
#18 0x0000000004501bed clang::ento::ExprEngine::evalEagerlyAssumeBinOpBifurcation(clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNodeSet&, clang::Expr const*) (build-all/bin/clang+0x4501bed)
#19 0x00000000044ff118 clang::ento::ExprEngine::Visit(clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (build-all/bin/clang+0x44ff118)
#20 0x00000000044fa82e clang::ento::ExprEngine::ProcessStmt(clang::Stmt const*, clang::ento::ExplodedNode*) (build-all/bin/clang+0x44fa82e)
#21 0x00000000044fa559 clang::ento::ExprEngine::processCFGElement(clang::CFGElement, clang::ento::ExplodedNode*, unsigned int, clang::ento::NodeBuilderContext*) (build-all/bin/clang+0x44fa559)
#22 0x00000000044e2980 clang::ento::CoreEngine::HandlePostStmt(clang::CFGBlock const*, unsigned int, clang::ento::ExplodedNode*) (build-all/bin/clang+0x44e2980)
#23 0x00000000044e1a1a clang::ento::CoreEngine::ExecuteWorkList(clang::LocationContext const*, unsigned int, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>) (build-all/bin/clang+0x44e1a1a)
#24 0x000000000416174c (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
#25 0x0000000004149baa (anonymous namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&) AnalysisConsumer.cpp:0:0
#26 0x00000000045db223 clang::ParseAST(clang::Sema&, bool, bool) (build-all/bin/clang+0x45db223)
#27 0x0000000003809826 clang::FrontendAction::Execute() (build-all/bin/clang+0x3809826)
#28 0x000000000377dc54 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (build-all/bin/clang+0x377dc54)
#29 0x00000000038bd0e2 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (build-all/bin/clang+0x38bd0e2)
#30 0x0000000000a1323c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (build-all/bin/clang+0xa1323c)
#31 0x0000000000a10fcf ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#32 0x0000000000a10b53 main (build-all/bin/clang+0xa10b53)
#33 0x00007fd550cf9555 __libc_start_main (/lib64/libc.so.6+0x22555)
#34 0x0000000000a0dc0c _start (build-all/bin/clang+0xa0dc0c)
Abort
```
Starts happening with 20f8733d4b:
```text
[Analyzer][solver] Simplification: Do a fixpoint iteration before the eq class merge

This reverts commit f02c5f3478318075d1a469203900e452ba651421 and
addresses the issue mentioned in D114619 differently.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWtty2zgS_Rr5BSUV75cHP8iyvOvaZOKxssmjCgRAiWuIYADSsebrtwFQtsBIluykJuOSKV6A7j6nG40GqELQ7SXnjxtExGZTtaNwiuI0xHERZ97Iux5503vWSEE7wtD3ql1DA3t7lHj2o9aMc3uPcFyv0JgQH41xjfn2L_Z8IsdkzcgDk6PwmggJDwQaBTeUPcKx7jhHRVGNkzyLowkZqOgv46u9JpPVX6P4ehRk67ZtlDYruIHPCmzsigmggQsNrP8aA4j_MdLCZVlxpuA7S_0wT1M4G4gN8l5hj191vP0RNxG1EpzZu_u2h9MU_oNQc_kdy7qqV_qUfeswr9qtZrrBslKiRtLIRl3dKUYRABx_tefjl0YapdGB4A_wYjRKZ_rEh8MVItrcINdcogIBufBBdBRe7XVK5-_5xHvnB0BmPdB9jFX9S1ASQONrHPgQjnPtqkXL9DdoAnkpsKbZCVLUCtR2skbtulJHTK5qaIRrJOQYK1Wt6g2r25MGgonxi1n9Hav2gKG-pw_-kMISqRa3TCtEa6wQ2zRgWwED1VJnrsf62uEM-kFMUB0Nrkk7s163YEdW07XAC0OKbSoiOFABHwyXwAxYhTjwpQlUMIhqyAmGw535L0lAi5pMICbNwd6CgVgVcFwAvIpM-7QAN2aQDuDrHhqxGYyqVmLg_yMkjhWTE9I0ejjFXq6F7qTDBwgS9uxOipXEGy2Y3TNDBK5Fvd2ITqEab5hqMGGGGt18_q2rHrGxf8bBvfauZBvxyD6yTaGNys5RNApmSKeB9rBZi-2mENy0M7ZPlWKyrYBQSB8zrqwuBcmqbgEx5KTsEzcehCAtMTBMJ5bTuw_z6WKOVFdAjgZ3FN0KRlUjZKt98eYMWCnVmRQIIU4h1gnvKDNuJxKrNSoweQAnaMpmqJF6AiBM6cGrRCftbd0TuBOkAi4okl2NFJFV0_YmA0fkAdFu0zynTg8e5T2FCMtVp2NcGw54Kk7HGOYRSMZVvQuZXzeV-Fr1KJwxUY7COYJgBlcg3CIGMESJ9JxgWwa65dc1XCOrDgJbj0jyoA3dTQzgotBDM7BYPy7t7VB3_TEZxbrjXEohEYOw6yD6rUg7yG3f6Cf6ImOM9-Tt_gLm0SwJkfG-CUW1VbsIhqFlfPPZOjh7aSTx96WA0ccwxEyinQxt7dySHfEQzEDeU6_ued7U9vgDe4oIIuyAPfddvYD0ivm_IaA4jAbQdZ5KLdFRGQwpKFiCHOEgtEdkb6s-uXjm_1lQ2AtKSxrHYUySBOhdLmEaayHaljDoYEbARI9k46hB92i_u0c9GmYpgpRmpqHMpsEkst9kosQkMZDCBNo5gOKBIIbTDOFCj_pXBaXQzhGUDAQlPk4AEDb5aKkzzbLAJ8wLSujkSE2HUoM4OCECWjgisn2XRVB4Jl7wvuytqk3Dq3J7LHMvvmB-pQNKR4GJ7YPNzBy0YK29ugEnC7ntO7xE723dyk5Vj3oOmNXtXQuZaHZywrBTBaQfLeytICFmX50fBzGYD4gNwvIksS-ip6bkEfIKggKQvbmfxmge2doJ5sH5UyNvwUNH3WOb9BQF09MOegMhOh15LiEJxTg9Rchh-X28sdY8dhLoL4iL38OOP2AnLDLyM-yA32Fy12b_-dsIetE6vVuA4t3D5MTDtzEXDAZayrzkFd_QU4TdM_5PCKmrqsZy-6lhUPQL-Z-qpidZOzFj99y8LK6BvHBInh9EP0Peb2OuEIKfyQFAdDiIXA7yqAjoEcV6int9xE27p7-Fgz9E_UGQNyE3wBzk8RB5lmfvRv7PhQ2oHNjJEHaKi3fDBqRMQiX7t8C_ZiWs_qkupd7IAUB0OEgdDiLme0V8WOer6K-734H8NGILyEE8qHQ9v2BHhrlOLvN6Bfr6J1AHzjVyvp0a1JCbPzVXVQkrcazXIMdqKhDEBWX0DziYmuB42Xuy6SDjneF0g9ChwK1Jo7L0_SPjfUjBl0pVrQtz0W7a0_XQPq5z2-3wn-FmA2EfY-ANMOIsYOdhvLN7LBrXL0F6jvnaOsd8f2h-HOfnmd9vEc1u_jXndmvCAbF__3xfdbVePjBq9yGOJmXK-pUdJIuWPZ0bohaegz8Y5KUgz7xjeUmyffx2h-FOqPZHDwL4Ky7Ig-PFs7C9x6vGaAdVOMy22MfnoZo_MdK17KuQDx8qNYAFU6HJPz3rr6L7hSn6rPQLCB0K3CrLT_w0OrnAMTvUqlJ6CoK0K_cdPTMO2WfjmhH-Rtc6A-i25pXeRP8IkpVL2TWrld2UmA0UHlnwmA4fcXNbl-JEp0dRUbNcn_fxNUR9cNkTuLWbH-UFxj_D52eJa8VNOP23Hub66eLz88hOzrdxUGjRIoCRsCf2Tm8Cg-xBumUb3M9_tsB5Q6FjVDhx5xQ6YeblWeAsD2-kBlbTqdlNdAbdeRuhvUxHqVNrhGlKSewsq2Zi01ScyVsIA1wTd6z3ljicDKw8a3bs9TqG5S4bBfVY4FYZxoQX-x7FoRLnB_vPyoy9vn2D3F1zD_uQKwkixF9usO69V1lOpcRb_SoHhtMa79VCfdXo3NuNq7Psslods_yBWV5JSrQjZ-Z_NvG4Z9xiA6K_ML1ZaTbZDtlofEYlJN7Dw8XdPtdKizhEmofTAHRTB4Czg-6RMo_jGC2Xejt4CT6T7XIn-PhmcQB9HKGRa6BHiUeQFXfSRNP4WdpU76Ef_I3BQktTaI2bhulsbH7zgAKvzNIwpFGh-Xb7mbS0-33C80vN-BqulOCP5hwt7O501UdzOEXXAmFUVk-NgEkCVa3eaNFvBgtW6jda-l0c-6bHhlIIMtyK7f8k4bN-6SoZCAdb7Q83UOkFJC7DKM1gseGlMfVxlOSBF-aex6I4KHAS-xFUeJBvrRRMqdRv9ZTRZt4JIl2hgRlm7kLXvh8lULbTqiyZhCd8Oxmgv6CXIc3DHF-0VcvZ5TtecVqK3_K-76KT_PL9Lz0hrqLkYn3pERpgUmZeGQVJCXNXlMVRnvtp7mUsjfILjgvG1SV4chQENftuOYJzcOlFdRl4QeDFmmw_jv1J6eUlLijJo4D6qU9HkQdTScUn2o6JkKsLaX5pMy66lYKHHAoq9fLQbpUzZtSBfNy1ayEvN9UDZnwtOHjmwui_NPb_H9j0wpY">