diff options
author | Patrick Palka <ppalka@redhat.com> | 2020-05-23 14:39:28 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2020-05-23 14:39:28 -0400 |
commit | 6d1556ecfae3eff010ef7dc15f3da998403fa196 (patch) | |
tree | 97e25bb6e9824b291ae5e5bd1cfc0be8a18596ca /gcc/cp/constexpr.c | |
parent | 3cb0c7cc160a50f830bfa9aa5a3264b773a28bf8 (diff) | |
download | gcc-6d1556ecfae3eff010ef7dc15f3da998403fa196.zip gcc-6d1556ecfae3eff010ef7dc15f3da998403fa196.tar.gz gcc-6d1556ecfae3eff010ef7dc15f3da998403fa196.tar.bz2 |
c++: Avoid concept evaluation when uid-sensitive [PR94038]
Concept evaluation may entail DECL_UID generation and/or template
instantiation, so in general we can't perform it during uid-sensitive
constexpr evaluation.
gcc/cp/ChangeLog:
PR c++/94038
* constexpr.c (cxx_eval_constant_expression)
<case TEMPLATE_ID_EXPR>: Don't evaluate the concept when
constexpr evaluation is uid-sensitive.
gcc/testsuite/ChangeLog:
PR c++/94038
* g++.dg/warn/pr94038-3.C: New test.
Diffstat (limited to 'gcc/cp/constexpr.c')
-rw-r--r-- | gcc/cp/constexpr.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index 98c974e..4e441ac 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -6486,7 +6486,8 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t, break; } - if (!processing_template_decl) + if (!processing_template_decl + && !uid_sensitive_constexpr_evaluation_p ()) r = evaluate_concept_check (t, tf_warning_or_error); else *non_constant_p = true; |