[04/13,C++] constraint: insert norm entry once
Checks
Commit Message
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(-)
Comments
On 12/26/22 21:21, Alexandre Oliva via Gcc-patches wrote:
>
> 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.
OK
jeff
@@ -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. */