]> git.ipfire.org Git - people/ms/gcc.git/commit
c++: ICE with <=> of incompatible pointers [PR107542]
authorPatrick Palka <ppalka@redhat.com>
Wed, 30 Nov 2022 00:25:37 +0000 (19:25 -0500)
committerPatrick Palka <ppalka@redhat.com>
Mon, 19 Dec 2022 16:54:14 +0000 (11:54 -0500)
commit37595f8354e3e48e4a1a94537f3d1ae095ed75df
tree426d4f011482905cf05299805a69889e172aa7f3
parent0e345504ec9349d9a3bf826c3e16b7e973739485
c++: ICE with <=> of incompatible pointers [PR107542]

In a SFINAE context composite_pointer_type returns error_mark_node if
the given pointer types are incompatible.  But the SPACESHIP_EXPR case
of cp_build_binary_op wasn't prepared for this error_mark_node result,
which led to an ICE (from spaceship_comp_cat) for the below testcase.
(In a non-SFINAE context composite_pointer_type issues a permerror and
returns cv void* in this case, so this ICE seems specific to SFINAE.)

PR c++/107542

gcc/cp/ChangeLog:

* typeck.cc (cp_build_binary_op): In the SPACESHIP_EXPR case,
handle an error_mark_node result type.

gcc/testsuite/ChangeLog:

* g++.dg/cpp2a/spaceship-sfinae2.C: New test.

(cherry picked from commit 000e9863120cbc75a0f8d497264519974c97669f)
gcc/cp/typeck.cc
gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae2.C [new file with mode: 0644]