diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/class.c | 3 | ||||
-rw-r--r-- | gcc/cp/constexpr.c | 6 | ||||
-rw-r--r-- | gcc/cp/constraint.cc | 9 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 3 | ||||
-rw-r--r-- | gcc/cp/typeck2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C | 11 |
6 files changed, 4 insertions, 30 deletions
diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 26f996b..6c21682 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -7472,9 +7472,6 @@ finish_struct_1 (tree t) /* Finish debugging output for this type. */ rest_of_type_compilation (t, ! LOCAL_CLASS_P (t)); - /* Recalculate satisfaction that might depend on completeness. */ - clear_satisfaction_cache (); - if (TYPE_TRANSPARENT_AGGR (t)) { tree field = first_field (t); diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index b46824f..83c3bb4 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -7136,15 +7136,13 @@ clear_cv_cache (void) cv_cache->empty (); } -/* Dispose of the whole CV_CACHE, FOLD_CACHE, and satisfaction caches. */ +/* Dispose of the whole CV_CACHE and FOLD_CACHE. */ void -clear_cv_and_fold_caches (bool sat /*= true*/) +clear_cv_and_fold_caches () { clear_cv_cache (); clear_fold_cache (); - if (sat) - clear_satisfaction_cache (); } /* Internal function handling expressions in templates for diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc index d6354ed..b6f6f0d 100644 --- a/gcc/cp/constraint.cc +++ b/gcc/cp/constraint.cc @@ -2327,15 +2327,6 @@ save_satisfaction (tree constr, tree args, tree result) *slot = entry; } -void -clear_satisfaction_cache () -{ - if (sat_cache) - sat_cache->empty (); - if (decl_satisfied_cache) - decl_satisfied_cache->empty (); -} - /* A tool to help manage satisfaction caching in satisfy_constraint_r. Note the cache is only used when not diagnosing errors. */ diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index fdb8ee5..3b4f772 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -7831,7 +7831,6 @@ extern tree evaluate_concept_check (tree, tsubst_flags_t); extern tree satisfy_constraint_expression (tree); extern bool constraints_satisfied_p (tree); extern bool constraints_satisfied_p (tree, tree); -extern void clear_satisfaction_cache (); extern bool* lookup_subsumption_result (tree, tree); extern bool save_subsumption_result (tree, tree, bool); extern tree find_template_parameters (tree, tree); @@ -7901,7 +7900,7 @@ extern bool var_in_maybe_constexpr_fn (tree); extern void explain_invalid_constexpr_fn (tree); extern vec<tree> cx_error_context (void); extern tree fold_sizeof_expr (tree); -extern void clear_cv_and_fold_caches (bool = true); +extern void clear_cv_and_fold_caches (void); extern tree unshare_constructor (tree CXX_MEM_STAT_INFO); /* An RAII sentinel used to restrict constexpr evaluation so that it diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index e259a42..445e2a2 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -954,7 +954,7 @@ store_init_value (tree decl, tree init, vec<tree, va_gc>** cleanups, int flags) return split_nonconstant_init (decl, value); /* DECL may change value; purge caches. */ - clear_cv_and_fold_caches (TREE_STATIC (decl)); + clear_cv_and_fold_caches (); /* If the value is a constant, just put it in DECL_INITIAL. If DECL is an automatic variable, the middle end will turn this into a diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C deleted file mode 100644 index 63f3696..0000000 --- a/gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C +++ /dev/null @@ -1,11 +0,0 @@ -// { dg-do compile { target c++20 } } - -template <class T> concept has_mem_type = requires { typename T::type; }; - -template <has_mem_type T> int f () { return 0; } -template <class T> char f() { return 0; } - -struct A; -static_assert (sizeof (f<A>()) == 1); -struct A { typedef int type; }; -static_assert (sizeof (f<A>()) > 1); |