aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/class.c3
-rw-r--r--gcc/cp/constexpr.c6
-rw-r--r--gcc/cp/constraint.cc9
-rw-r--r--gcc/cp/cp-tree.h3
-rw-r--r--gcc/cp/typeck2.c2
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C11
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);