c++: operator<=> and -Wzero-as-null-pointer-constant [PR95242]
authorJason Merrill <jason@redhat.com>
Tue, 26 May 2020 21:27:55 +0000 (17:27 -0400)
committerJason Merrill <jason@redhat.com>
Wed, 27 May 2020 14:05:57 +0000 (10:05 -0400)
commit6c66c692043d680a5efcd9616b94f9629c417038
treeccf545124706b2d7e2a4103c0361b9fcef648af8
parent7e7d9fcff56385812764cba63e1ebf6f4c6c0320
c++: operator<=> and -Wzero-as-null-pointer-constant [PR95242]

In C++20, if there is no viable operator< available, lhs < rhs gets
rewritten to (lhs <=> rhs) < 0, where operator< for the comparison
categories is intended to accept literal 0 on the RHS but not other
integers.  We don't want this to produce a warning from
-Wzero-as-null-pointer-constant.

gcc/cp/ChangeLog:

* call.c (build_new_op_1): Suppress
warn_zero_as_null_pointer_constant across comparison of <=> result
to 0.

gcc/testsuite/ChangeLog:

* g++.dg/cpp2a/spaceship-synth2.C: Add
-Wzero-as-null-pointer-constant.
gcc/cp/call.c
gcc/testsuite/g++.dg/cpp2a/spaceship-synth2.C