diff options
author | Patrick Palka <ppalka@redhat.com> | 2023-05-09 15:07:00 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2023-05-09 15:07:00 -0400 |
commit | bbb6cf926f1732559b3a8aaf2796d34e8651c066 (patch) | |
tree | a35d306cde7462a17a78dcb9550f9bb860f2fc5d /gcc/cp/constexpr.cc | |
parent | c13906f258fb34b3e0c90ddc8d9191dd72f3da0e (diff) | |
download | gcc-bbb6cf926f1732559b3a8aaf2796d34e8651c066.zip gcc-bbb6cf926f1732559b3a8aaf2796d34e8651c066.tar.gz gcc-bbb6cf926f1732559b3a8aaf2796d34e8651c066.tar.bz2 |
c++: error-recovery ICE with unstable satisfaction [PR109752]
After diagnosing and recovering from unstable satisfaction, it's
possible to evaluate an atom for the first time noisily rather than
quietly. The satisfaction cache tries to handle this situation
gracefully, but apparently not gracefully enough: we inserted an empty
slot into the cache, and left it empty, which later makes
hash_table::check_complete_insertion unhappy. This patch fixes this by
removing the empty slot in this case.
PR c++/109752
gcc/cp/ChangeLog:
* constraint.cc (satisfaction_cache::satisfaction_cache): In the
unexpected case of evaluating an atom for the first time noisily,
remove the cache slot that we inserted.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/concepts-pr109752.C: New test.
Diffstat (limited to 'gcc/cp/constexpr.cc')
0 files changed, 0 insertions, 0 deletions