]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: fix tourney logic
authorJason Merrill <jason@redhat.com>
Thu, 5 Oct 2023 14:45:00 +0000 (10:45 -0400)
committerJason Merrill <jason@redhat.com>
Fri, 20 Oct 2023 20:27:10 +0000 (16:27 -0400)
commitff04531b66102110e1c7fbd3a34d8e42ba7152a8
tree92a1a7c836375df6572f5f377a5e2dca733529c3
parent084addf8a700fab9222d4127ab8524920d0ca481
c++: fix tourney logic

In r13-3766 I changed the logic at the end of tourney to avoid redundant
comparisons, but the change also meant skipping any less-good matches
between the champ_compared_to_predecessor candidate and champ itself.

This should not be a correctness issue, since we believe that joust is a
partial order.  But it can lead to missed warnings, as in this testcase.

gcc/cp/ChangeLog:

* call.cc (tourney): Only skip champ_compared_to_predecessor.

gcc/testsuite/ChangeLog:

* g++.dg/warn/Wsign-promo1.C: New test.
gcc/cp/call.cc
gcc/testsuite/g++.dg/warn/Wsign-promo1.C [new file with mode: 0644]