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

    <tr>
        <th>Summary</th>
        <td>
            [clang] [ICE] [rejects-valid] comparing pointers to explicit-object member functions
        </td>
    </tr>

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

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

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

<pre>
    this test program is valid but ICEs clang-trunk:

```
// RUN: %clang_cc1 -std=c++2b -fsyntax-only -verify %s
// expected-no-diagnostics

struct S {
    void f(this S&);
    void f(this S&, int);
};
using f0_t = void (*)(S&);
constexpr f0_t f0 = &S::f;
using f1_t = void (*)(S&, int);
constexpr f1_t f1 = &S::f;
static_assert(f0 == f0); // ICE caused by this
static_assert(f0 != f1);
static_assert(f1 == f1);
```

The stack trace:

```
-- Testing: 1 tests, 1 workers --
FAIL: Clang :: SemaCXX/cxx23-explicit-object-member-ptr.cpp (1 of 1)
******************** TEST 'Clang :: SemaCXX/cxx23-explicit-object-member-ptr.cpp' FAILED ********************
Exit Code: 134

Command Output (stderr):
--
RUN: at line 1: /Users/atomicity/work/calltarget-llvm-root/bin/clang -cc1 -internal-isystem /Users/atomicity/work/calltarget-llvm-root/lib/clang/19/include -nostdsysteminc -std=c++2b -fsyntax-only -verify /Users/atomicity/work/calltarget-llvm-src/clang/test/SemaCXX/cxx23-explicit-object-member-ptr.cpp
+ /Users/atomicity/work/calltarget-llvm-root/bin/clang -cc1 -internal-isystem /Users/atomicity/work/calltarget-llvm-root/lib/clang/19/include -nostdsysteminc -std=c++2b -fsyntax-only -verify /Users/atomicity/work/calltarget-llvm-src/clang/test/SemaCXX/cxx23-explicit-object-member-ptr.cpp
Assertion failed: (V.isLValue() && "Setting LValue from a non-LValue?"), function setFrom, file ExprConstant.cpp, line 1634.
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: /Users/atomicity/work/calltarget-llvm-root/bin/clang -cc1 -internal-isystem /Users/atomicity/work/calltarget-llvm-root/lib/clang/19/include -nostdsysteminc -std=c++2b -fsyntax-only -verify /Users/atomicity/work/calltarget-llvm-src/clang/test/SemaCXX/cxx23-explicit-object-member-ptr.cpp
1. /Users/atomicity/work/calltarget-llvm-src/clang/test/SemaCXX/cxx23-explicit-object-member-ptr.cpp:13:1: current parser token 'static_assert'
 #0 0x00000001031f9b1c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x102ca1b1c)
 #1 0x00000001031fa100 PrintStackTraceSignalHandler(void*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x102ca2100)
 #2 0x00000001031f7db8 llvm::sys::RunSignalHandlers() (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x102c9fdb8)
 #3 0x00000001031fb21c SignalHandler(int) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x102ca321c)
 #4 0x0000000193ddb584 (/usr/lib/system/libsystem_platform.dylib+0x180477584)
 #5 0x0000000193daac20 (/usr/lib/system/libsystem_pthread.dylib+0x180446c20)
 #6 0x0000000193cb7a20 (/usr/lib/system/libsystem_c.dylib+0x180353a20)
 #7 0x0000000193cb6d10 (/usr/lib/system/libsystem_c.dylib+0x180352d10)
 #8 0x0000000109c83c58 (anonymous namespace)::LValue::setFrom(clang::ASTContext&, clang::APValue const&) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x10972bc58)
 #9 0x0000000109d3a164 (anonymous namespace)::PointerExprEvaluator::Success(clang::APValue const&, clang::Expr const*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1097e2164)
#10 0x0000000109d3b048 (anonymous namespace)::PointerExprEvaluator::VisitCastExpr(clang::CastExpr const*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1097e3048)
#11 0x0000000109d369a8 clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::PointerExprEvaluator, bool>::VisitImplicitCastExpr(clang::ImplicitCastExpr const*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1097de9a8)
#12 0x0000000109d32acc clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::PointerExprEvaluator, bool>::Visit(clang::Stmt const*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1097daacc)
#13 0x0000000109c6d3d4 EvaluatePointer(clang::Expr const*, (anonymous namespace)::LValue&, (anonymous namespace)::EvalInfo&, bool) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1097153d4)
#14 0x0000000109d224bc bool EvaluateComparisonBinaryOperator<(anonymous namespace)::IntExprEvaluator::VisitBinaryOperator(clang::BinaryOperator const*)::$_5&, (anonymous namespace)::IntExprEvaluator::VisitBinaryOperator(clang::BinaryOperator const*)::$_6>((anonymous namespace)::EvalInfo&, clang::BinaryOperator const*, (anonymous namespace)::IntExprEvaluator::VisitBinaryOperator(clang::BinaryOperator const*)::$_5&, (anonymous namespace)::IntExprEvaluator::VisitBinaryOperator(clang::BinaryOperator const*)::$_6&&) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1097ca4bc)
#15 0x0000000109d15b58 (anonymous namespace)::IntExprEvaluator::VisitBinaryOperator(clang::BinaryOperator const*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1097bdb58)
#16 0x0000000109d11d1c clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::IntExprEvaluator, bool>::VisitBinEQ(clang::BinaryOperator const*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1097b9d1c)
#17 0x0000000109d04a20 clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::IntExprEvaluator, bool>::Visit(clang::Stmt const*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1097aca20)
#18 0x0000000109c6b75c Evaluate(clang::APValue&, (anonymous namespace)::EvalInfo&, clang::Expr const*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x10971375c)
#19 0x0000000109c68604 EvaluateAsRValue((anonymous namespace)::EvalInfo&, clang::Expr const*, clang::APValue&) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x109710604)
#20 0x0000000109c642d4 EvaluateAsRValue(clang::Expr const*, clang::Expr::EvalResult&, clang::ASTContext const&, (anonymous namespace)::EvalInfo&) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x10970c2d4)
#21 0x0000000109c6415c clang::Expr::EvaluateAsRValue(clang::Expr::EvalResult&, clang::ASTContext const&, bool) const (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x10970c15c)
#22 0x000000010839b65c clang::Sema::VerifyIntegerConstantExpression(clang::Expr*, llvm::APSInt*, clang::Sema::VerifyICEDiagnoser&, clang::Sema::AllowFoldKind) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x107e4365c)
#23 0x000000010839755c clang::Sema::VerifyIntegerConstantExpression(clang::Expr*, llvm::APSInt*, unsigned int, clang::Sema::AllowFoldKind) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x107e3f55c)
#24 0x000000010811b188 clang::Sema::BuildStaticAssertDeclaration(clang::SourceLocation, clang::Expr*, clang::Expr*, clang::SourceLocation, bool) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x107bc3188)
#25 0x000000010811af5c clang::Sema::ActOnStaticAssertDeclaration(clang::SourceLocation, clang::Expr*, clang::Expr*, clang::SourceLocation) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x107bc2f5c)
#26 0x00000001078080cc clang::Parser::ParseStaticAssertDeclaration(clang::SourceLocation&) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1072b00cc)
#27 0x00000001077d39d8 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x10727b9d8)
#28 0x00000001078ea63c clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x10739263c)
#29 0x00000001078e8b54 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x107390b54)
#30 0x00000001077ba7fc clang::ParseAST(clang::Sema&, bool, bool) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1072627fc)
#31 0x0000000104985e40 clang::ASTFrontendAction::ExecuteAction() (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x10442de40)
#32 0x000000010498560c clang::FrontendAction::Execute() (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x10442d60c)
#33 0x00000001048a5f08 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x10434df08)
#34 0x0000000104aa9840 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x104551840)
#35 0x000000010056f0b8 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x1000170b8)
#36 0x000000010055dbf4 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x100005bf4)
#37 0x000000010055c940 clang_main(int, char**, llvm::ToolContext const&) (/Users/atomicity/work/calltarget-llvm-root/bin/clang-19+0x100004940)
```

This is clang-trunk, 9277a32305c1083653ffaa7955cd26deffc10988
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWltz4ygW_jXKC-UUF10f8uAo9q5re7ez7UzXvKUQIEfTktACytj_fgtkO0ZxLp2xJ_MwqZTjCHQ433eOPg4CqnW1aoW4CqLrILq5oL15kOqKGtmsaE3Xm4tC8s2Veag0MEIb0Cm5UrQBlQaPtK44KHoDFvlMA1bTdjUxqm9_BGQawJsA7j5juP0d_sXzAM_Bt1_-E5ApCHDk7rxnDIGJNjwgNyzA1wG-xgWYlHrTGrqeyLbegMmjUFW5sfdoz5ZYd4IZwSetnPCKrlqpTcX0oRPaqJ4ZsARBcj1cAQCAR1lxUAY4dQiXAY4DnAXkjR45qFpz2DFIbvbfe121K1DCewMCcjPcH-A0wFN7B07HgzDZaiPWnRruKaG7LcDx0tJIpuXYMnrd8jPnDgawt5boxQG0oaZi91RroUyA08EX27uEg0WwJXyRzwCjvRYcFBtgqXnZAkbOAjr06Vk_tB_J6zdOHfd59yCANpT9AEZRJl7PtskE3AltqnZlsw25LNaWJQR-l-qHUBpMJkPX-XTxxXbKbT6CgRywFA3Nf_01wHO2XmMyEeuurlhlJrL4TTAzaURTCDXpjLpkXWfjgYAsgUOxTdGP_4K72fIOBDj5Ay4FOAEW2czG_A9448DM1pUBueTCkUnCQ-Jz2TS05eBrb7reWCa04UIpF8_pLhrD3-3DTw2oq1YANCjB_BctlA7w3OqPRbQJ8NxGyUKldW2oWgkzqevHZqKkNAGeF1VrGx09EychVWuEamk9qfRGG9F8zG5dFTu7AZ6jLMDzqmV1zwWYWHXhg_GqZe8XrZ9xQyt2ML5N2gDPfzLw2_S7_pvZszA7deJVyRaUtKoFH3I4_X5Z6S_fad0Lp80ZcKocgwDjpTBWiMDQDEolG0BBK9vJ9gYyDzB2Yp6Dsm-Zs66FmSvZuGtVLcBs3ancajptzfCA59unKCbh5eDb7ZfZdDkDui-aygAKin4FlOikMsBI8GBMp-0z6cR8VZmHvrhkdoi5pWj7Z9IpacHbAGndC8svsA_4LlzmQQCmqH4ABWU_Bi3GOeiU6JRkQtvZQcteDZftnVRrySpqBAeqb4FmqurM1uWlU3TeN91eLeAluN3WG1St-ka0Rv-tFOfKZ3T5CSOTKSL2w4aV9UqJ1oCOKi0UMPKHaO3kNyoWkm1xFmACAVzD4QdBgsqsQAy4FHYzpd7o4cutqlrjEuxuyNL0qZOiv99LbZSgjVc_DaXVH0u0iU2Ha7hGEDOKCsT2VYH1Ho28pwhCMHJ1Wa1aWv-TtrwWKsCpLfqGgu_k_mEEoecfHvmX8CI9xu63vvXc1HvhO6mDWcmL1HOQjBwsMGJgzNiZoknwKJrhgTMZ4byI0nA7aq_VXigGNRj-Hb7fdzU1pVTNJd-4PnaIFIZJEqWhN0TkD0Epw_CdQ5gHJSgfjRDGDPshj70RWJHQ947AfNskInRkOxnZjjn6qG3MkW87PcyEjKWERam1TVvZbhrZa9DSRujOPfzZkLa7Odfl8m6OTQc5cxeny7tctkaszVYYDttuhzncLa6GFd1pUyxLcMEiP98zDyUnFMXhWyhvpZvmbNEwe6R1T41UQ8uyZ3aSHmF-hsuDbc3s2k4vQlkiMIrDg6UTQXCEuYDhm5F9GfP3Slcmp9rYNh_57upZ4REYph48NIIXZzQ9JHxpGuOcluqaahGQ_EmAG_pD3Dtv7zujbKQ-wgvOQSFlHZDZAUWLZpi1j1M1bj0nZVxk1KcMjyjDlLG_AGU-RdaJs9JCKWMeLcSXwJgTHoKtz2ILw_dxFLo3uditauJ39LUDL9pSbns7uk7PAooI9-Ui9JMD47BgbvQ9FblsOqoqLdvrqqVq87UTahCI_A1Mi9a8JCkjUx7NftthUgztAQ7vo_exekYPYpvNNjo_E9b3jPGZoP4KtOL4POUBo2HhK0Dk5z6KireLoJNDPzXMwhbSHsx4BBNxdD79f8bPUe2_rtrZfz-NoYwjPxESnyEY2ir-cxn6c2dHyg4XH5aS0QIhLpKI7aeEoyXwh-a5P7FURiSJ_LBnI4xpDJ8qgKn-9vRS8jSQji2IzqN1CMbQm-cxHGENMT-K9Z3euxp3j_6b0H19bNG3XxB666Of4fPk1ECG_RIIozE1KGIvY32drw9zsiv43LXTY0Z-6mNvTZCSrIh9zEvR0K0auXesi9aIldi_RrdQhdaVbI9QMCTLk0JOb5eL9kgOPRsjn90Me9G28B7z9tR7Wtfy97ms-b-qlp88QxIRknjEFhmxlUR_Elt9644b8OEV6yfxQcpoxIe3aEgRKlCaHvftuq9qvnTvo4ftnxvBaqqoeUbG0m18fJFs2_Zcbo6L0PO0emboLIuppGAEpV6lhaMRL7R8KU-mzHxtP5eX0_OBy1GeeJVnksIU-m8ebt3GxcH3DzFy-lkiwQWE_usC7NWIScJJxtNXsbzo_65Bqv3b0lcDNVZCZ51PjVFV0RuhP9JjPMbpC64E20Lbfz5SPx8Ejcnr-TBbDzuOL3J5Ci5sj6pd2TGWnWBnIYNkOCZ-QmUjMtIiCl8l4052X8SjcGT4LHzt6P96cWtUQPJRov1Dyb77Jkr3tuLlOfXfkve1WDSdVMY-hGepSxOSwSLyii9_RzJJCpqUz1NiurwbSYB1_LBwOpfI4xgnpRc3fxcyzNJIhHBU4M2VfbBbPnUHEnaiLFhvxPbSGTb8whBzEXqrOH9H0voaQ4_dVxw9l4sx9On0aqswpVEJPV3NZdNVtVALV0sxcZzNlzGdIY9DEvISetLm7WbCkNIs9bNi6_ATmse99qavoT2DGIVRhNJRoniVC4ziEhYpYAzdN9SaONj-nypFN05QcvZADxaIVmBy4F_DOTjXBjyEKIGFH4TYRxHxogzBjvkc3TmJOMCybGhdfxfMSLVouvoopNgvz62N5-u3k2ODUVH6QpmMsLFsl2C7GO3WCA9U7U4hfobnYXaYW8fPo1YaVP4JaJyDDCcJJZjAiNlVVhyRsqQ0yaKIcRxzUZYMwSxNL_gV4RnJ6IW4QgmCOEowDC8erjKaoRRCRARDMUoFicNQ8LLklGUoRvFFdYUhDiFBGEU4DsNLQbHANImZ4DzOYBqEUDS0qi8t0EupVhfuJNdVGmYEXdS0ELV2R78x3h7jwUF0c6GuHDFFv9JBCOtKG_1kwVSmdufFhzuiGxBE14t8tv2mxG-CGT1xp8PtNTbst7Qr0A2bUBoYCUbHgsBwLGh_6E1f9Kq--vg5NQfw_wEAAP__o4FwtA">