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

    <tr>
        <th>Summary</th>
        <td>
            [analyzer] Assertion `P.getAs<PreStmt>() || P.getAs<PreStmtPurgeDeadSymbols>() || P.getAs<BlockEntrance>()' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:static analyzer,
            crash
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          k-arrows
      </td>
    </tr>
</table>

<pre>
    Reproducer:
https://godbolt.org/z/h7Y1Ycc84
```cpp
void f()
{
  [[assume(0 || 1 )]];
}
```

Backtrace:
```console
clang++: /root/llvm-project/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp:716: void clang::ento::ExprEngine::VisitLogicalExpr(const clang::BinaryOperator*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&): Assertion `P.getAs<PreStmt>() || P.getAs<PreStmtPurgeDeadSymbols>() || P.getAs<BlockEntrance>()' 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 -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics --analyze <source>
1.      <eof> parser at end of file
2.      While analyzing stack: 
        #0 Calling f()
3.      <source>:3:3: Error evaluating statement
4.      <source>:3:3: Error evaluating statement
5.      <source>:3:12: Error evaluating statement
 #0 0x0000000003fc1498 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3fc1498)
 #1 0x0000000003fbe8c4 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3fbe8c4)
 #2 0x0000000003f03098 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x000070b2a7042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x000070b2a70969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x000070b2a7042476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x000070b2a70287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x000070b2a702871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x000070b2a7039e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x00000000065406fe clang::ento::ExprEngine::VisitLogicalExpr(clang::BinaryOperator const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65406fe)
#10 0x000000000652b3e5 clang::ento::ExprEngine::Visit(clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x652b3e5)
#11 0x00000000065479a7 clang::ento::ExprEngine::VisitAttributedStmt(clang::AttributedStmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65479a7)
#12 0x0000000006529c7b clang::ento::ExprEngine::Visit(clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6529c7b)
#13 0x000000000652bdcd clang::ento::ExprEngine::ProcessStmt(clang::Stmt const*, clang::ento::ExplodedNode*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x652bdcd)
#14 0x00000000064e0bbb clang::ento::CoreEngine::HandlePostStmt(clang::CFGBlock const*, unsigned int, clang::ento::ExplodedNode*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x64e0bbb)
#15 0x00000000064e12a8 clang::ento::CoreEngine::dispatchWorkItem(clang::ento::ExplodedNode*, clang::ProgramPoint, clang::ento::WorkListUnit const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x64e12a8)
#16 0x00000000064e1611 clang::ento::CoreEngine::ExecuteWorkList(clang::LocationContext const*, unsigned int, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x64e1611)
#17 0x00000000060a8727 (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 0x00000000060aa35e (anonymous namespace)::AnalysisConsumer::HandleDeclsCallGraph(unsigned int) AnalysisConsumer.cpp:0:0
#19 0x00000000060abd63 (anonymous namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&) AnalysisConsumer.cpp:0:0
#20 0x000000000666650c clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x666650c)
#21 0x0000000004c64025 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4c64025)
#22 0x0000000004be0e6e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4be0e6e)
#23 0x0000000004d57b01 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4d57b01)
#24 0x0000000000d9ec4f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xd9ec4f)
#25 0x0000000000d9582a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#26 0x00000000049d7709 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
#27 0x0000000003f03534 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3f03534)
#28 0x00000000049d7d1f 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
#29 0x0000000004999d6d clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4999d6d)
#30 0x000000000499adfe 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+++0x499adfe)
#31 0x00000000049a3945 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x49a3945)
#32 0x0000000000d9b0ff clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xd9b0ff)
#33 0x0000000000c4f5b4 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xc4f5b4)
#34 0x000070b2a7029d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#35 0x000070b2a7029e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#36 0x0000000000d952d5 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xd952d5)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Compiler returned: 134
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWl1v4zbW_jXMDSGDor4vcqEodt8ppm-D8WyLXhkURdncSKRAUhmnv35BSo4s5aPJNOlu0YGDsU3ynOc854OHtIjWfC8YuwTRFYiuL0hvDlJd3npEKflNX5Syur_8wjolq54yBYIcoPxgTKftW7wBeLOXVSkbs5JqD_Dmd4A3h-Q3_zdK0xCgHMRoeNGuAyi_k7yCNcApwJkdTa4AyiF02q-I1n3LAE4RBEkBkgL60M6Lru0ruHILrs-F2vcovyL01ihC2QBvUimFlg0DKKcNEXuAr-wryCHAGyWlAXjTNHet1yn5b0ZPHwHeGCkbDfBmXLZpeAnwZmuI4TQXpLn_nSmAN4VUDODN-tiptdhzwYqVtTLIEz-2apyxg4wgB0HOhJHDu2nJ8PkXrrn5LPecksaOAZxa8OZ89RUXRN3_3DFFjFQA5wAXz0pvZMWq_5cVe-28LTMAx5btIIe51kwZLgUEMbpZ7ZnJNQiKG8W2pjUgWA8OPHnp0YybXu3ZNSPV9r4tLZXPr7hqJL1dC6OIsP4b5wGcwJrwhlUrgPKbz-t8u4a6L1tuIIFlv4eKdVIZaCRcRCM3h75cUdlO7lw4mWvdM-teSEQFuaBNXzFoDgxSRfQBlg_hhAvYKRv8lGnNKqhlr4av7UqitaScGFZB1QuoqeKdsXi3htBbWPVtNwQkWgGU3Si5V6SFRO37lgmjx0CUncVEZdvxhimPWZ8oF17OZx45-UJ7RvXiFuBNycUUnDamobevvhFVeyH09tCTVi7pOiu9N11vVhp6rWUBet4xjT2iW0_fC0OOILjmwrAGerWQ3h1TpdTMjkNvCz1vT6lnk4EeCBcguH4Rr52sBen0QRro1VQ2UnkVJ3shteFUDzocx_OvPTLkFARBMVIcrAHKfcsbCAomaxCsYUeUZgoSA5mooKxhzV1yYzvt1wNvGBwEcbGH2vrAUWxLRAZwgGBBmsaOTfUnGDVMWoM8GP_gWimpILsjTU_MKNMw6zuA8vC7V0bPrPTxHy6Fzgx0RKd_QU39MEuhC3SX0_peD29uFBfGReLXIZbTaZIi33ZSG8VI65K-gFwYl56WmHcJSYCv0HGEN3Btwftz8CVLafgU-KJhRPTdz2LL94I0AKe9cBtVBRtpVXwAVAdmgornUFGAshQWNni_MCrvmLofsP0fEVVjNaYjh7M5hRSGHc24LyD3N8gPRvkJKjFJUIgjjEajhu3mmMa7OPQaLvqjtxf9MEBXWq5iB9ktmQCHc4FZnNUUduagGKl2t7xp3ibdrZ-kR0u4YRLDvXYUvBV2mMST4HguGKdJHUBS2uL-JrFu4SQ2eSTWL98s0C8ngelcYJCxLH6bQLdkEpidB1gchSiu2fd3C8_1CdD1ER_WLbx3Go48jN0hDnw0ZwmXAYvewNKcGtub_O0IcSZPhPiLsEkykryBkNwYxcvesMq1cjN65mN_O6IcFRNReBE5GU3Kf1jkWJMnQoJlKlX0lceTm6EDfhwx30nLh2RJRavJ1nBma8hQWT7jfHuIO7d12M9vpDaPzS02P7jzyszkh87E7f__PQoGIycKogUFPibp6yiouO6IoYdfpbr9ZFg7J-G14T4eeG7kS7xYFZ-5Nv8S_CGQPiQZBvsnduIlO7Hvv46d9ZHR3rAT8jk5nyUlFs_Y970YKFPf-0kY1Wt-x76wuhDmxigQFE-CGUnd2kPBKNyemT-Er9j3J76SGV-IpAlOrFIipLhvZa-hIC3TnTtqZON-Yk9jmutCCt23w-3RKcEKFzPn1F0z2rwxpWZF6pNouOBi_5Os7On-nN9rJrQrtDNWrcKZgxYLfiLdJ1HLP1h0J3nlDnHrMa-XVi96f0tmuiCTBBH7M2RaUNqebn9QpDucn5bGM8krMGULTGUVB38G01dFhG5cMtjkXnQa269jhozp_scA8bwTjOM4QnRWb4jSLN9-XexQrCXjGbeUspn-f_-UGSA9pAyedWohjUOEZ63rRlkKRJVTK35WXE63Ze-LcMQwIZy1SGHJEItnR5Bi1PlJaDPcz51hHGHP2F6Y9CGlfMQ5WTHra8IqSko0K-Uj3smYu7FILzb3pbEfsk2P-Cb0s04FVRmjYQ0p9XctsQLObm1ypcj9F1bbgnQgZyc7W3oKOP_uVJk-xIgB5WRDtLAhSjGBJ9oL_6tLuDNLti1pml8YNVJ9arvmSYPieUW2MhabqguuSvG7J8vFbIMPsypJUDbcyE9C6164QN0px6obHe8G3bUcCHJKmqYk9HZXi_lGMCgeQ6fwC9m2RFTLLH7Se9qM82RntRNLwBk5RnGxdzPXo2sfFux29Hj0_eFDSTSnO-2mjxTOJtsvdkYRbvRpeCGONI1NBanOxsd97FQmXfiMjUbubtmThrRlRQBOJqpwerqW-1GWTzgjWV6mRcH5vd9TV2bDyJdebEnNmvsZly_77SMuBx3iKeDTZXBVfg3_ycFhGV91RJkVej4KsjlrWVbF1bOsOa-RRzvjicpZ6V4stBPOikTxgo7zqfmsTzgz7F3r_2D2QyjN7_PDLCPV_BrwNaT8KEv9PCM_ytIeVGaMvFSLHyKgI9w6_3ET_iKJY5j8JVRasiYq5w1XRoIsjJ6DfX32ftYgPNEZPOeCv5DK9-9DBnom8vBiDy9RPZa0UydyAu9KSf7ozPTcDv3uvYdFNuGedX-IhnVUhtAifm_Fg-hJ8eL3FpxV2Rt_wHFLJoHRUiALEdzt7JqdNkSZ3ZlZr1bBwjMV8bJRw1UEB-Hv7ycrfFC9ePyCKWV3lXwIL1iPhwZIx_gffvmH37g5QHZ0F0MVg34QWoy9ZtC7g0ZCzRjkZ8281XRq4qFipleC2fSzK88fC7moLoMqCzJywS79JApQHKZhdHG4RCSso6QsKSMUR2kZogiHBNUBS-I4ZeyCX2KEI5RgH2Gc4GhFgorGaRb6cV1mUZiCELGW8GZl02Il1f7CPWxw6YdZEqUXDSlZo92zNhifioB2j5WMP11bpjHAhR23TZH9FF1fqEv3DEPZ7zUIUcO10ZMKw03jHuB5EBFd_089wnHRq-by-x_TGMm7u8T_CQAA__-wJTqo">