On Fri, 25 Jul 2025, Patrick Palka wrote: > > On Fri, 25 Jul 2025, Patrick Palka wrote: > > > After r16-2519-gba5a6787374dea, we should never see a C++20 rewritten > > comparison operator expressed as a built-in acting on an operator<=> > > call, e.g. operator<=>(x, y) < 0. This is because operator<=> always > > returns a class type (std::strong/weak/partial_ordering), so the < will > > necessarily resolve to an operator< for that class type. So the > > corresponding handling in extract_call_expr is dead code -- except for > > the TRUTH_NOT_EXPR case, where we can plausibly still have > > !(operator==(x, y)), but it doesn't makes sense to recognize just that > > one special case of operator rewriting. So let's remove all this > > handling from extract_call_expr. > > Oh, also the handling imprecisely makes us return non-NULL for ordinary > operator expressions e.g. > f() < 0 > 0 > f() > where no rewriting was involved at all.
Ping. > > > > > gcc/cp/ChangeLog: > > > > * call.cc (extract_call_expr): Remove handling of C++20 > > rewritten comparison operators. > > --- > > gcc/cp/call.cc | 22 ---------------------- > > 1 file changed, 22 deletions(-) > > > > diff --git a/gcc/cp/call.cc b/gcc/cp/call.cc > > index 0f3143375261..5a53c496c5fb 100644 > > --- a/gcc/cp/call.cc > > +++ b/gcc/cp/call.cc > > @@ -7900,28 +7900,6 @@ extract_call_expr (tree call) > > call = TREE_OPERAND (call, 0); > > if (TREE_CODE (call) == TARGET_EXPR) > > call = TARGET_EXPR_INITIAL (call); > > - if (cxx_dialect >= cxx20) > > - switch (TREE_CODE (call)) > > - { > > - /* C++20 rewritten comparison operators. */ > > - case TRUTH_NOT_EXPR: > > - call = TREE_OPERAND (call, 0); > > - break; > > - case LT_EXPR: > > - case LE_EXPR: > > - case GT_EXPR: > > - case GE_EXPR: > > - case SPACESHIP_EXPR: > > - { > > - tree op0 = TREE_OPERAND (call, 0); > > - if (integer_zerop (op0)) > > - call = TREE_OPERAND (call, 1); > > - else > > - call = op0; > > - } > > - break; > > - default:; > > - } > > > > if (TREE_CODE (call) != CALL_EXPR > > && TREE_CODE (call) != AGGR_INIT_EXPR > > -- > > 2.50.1.439.g97e14d99f6 > > > > >