Use NO_INSERT to test whether inserting should be attempted.
Regstrapped on x86_64-linux-gnu. Ok to install?
for gcc/cp/ChangeLog
* constraint.cc (normalize_concept_check): Use NO_INSERT for
pre-insertion check.
---
gcc/cp/constraint.cc | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc
index 37eae03afdb73..f28f96ada463e 100644
--- a/gcc/cp/constraint.cc
+++ b/gcc/cp/constraint.cc
@@ -777,14 +777,16 @@ normalize_concept_check (tree check, tree args, norm_info
info)
norm_entry entry = {tmpl, targs, NULL_TREE};
norm_entry **slot = nullptr;
hashval_t hash = 0;
+ bool insert = false;
if (!info.generate_diagnostics ())
{
/* Cache the normal form of the substituted concept-id (when not
diagnosing). */
hash = norm_hasher::hash (&entry);
- slot = norm_cache->find_slot_with_hash (&entry, hash, INSERT);
- if (*slot)
+ slot = norm_cache->find_slot_with_hash (&entry, hash, NO_INSERT);
+ if (slot)
return (*slot)->norm;
+ insert = true;
}
/* The concept may have been ill-formed. */
@@ -794,7 +796,7 @@ normalize_concept_check (tree check, tree args, norm_info
info)
info.update_context (check, args);
tree norm = normalize_expression (def, targs, info);
- if (slot)
+ if (insert)
{
/* Recompute SLOT since norm_cache may have been expanded during
the recursive call. */
--
Alexandre Oliva, happy hacker https://FSFLA.org/blogs/lxo/
Free Software Activist GNU Toolchain Engineer
Disinformation flourishes because many people care deeply about injustice
but very few check the facts. Ask me about <https://stallmansupport.org>