aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2024-07-23 10:39:08 +0200
committerThomas Koenig <tkoenig@gcc.gnu.org>2024-07-28 19:05:47 +0200
commit6d116bc5f958054fca819ab38d40e1abefd74b2d (patch)
treeccec8a1d42eda8a33b4fcb0b6a68bdba2cf4107b
parente818585e264728859ec375efca66998ff232ef9d (diff)
downloadgcc-6d116bc5f958054fca819ab38d40e1abefd74b2d.zip
gcc-6d116bc5f958054fca819ab38d40e1abefd74b2d.tar.gz
gcc-6d116bc5f958054fca819ab38d40e1abefd74b2d.tar.bz2
c++: Remove CHECK_CONSTR
On Mon, Jul 22, 2024 at 11:48:51AM -0400, Patrick Palka wrote: > FWIW this tree code seems to be a vestige of the initial Concepts TS > implementation and is effectively unused, we can remove it outright. Here is a patch which removes that. 2024-07-23 Jakub Jelinek <jakub@redhat.com> * cp-tree.def (CHECK_CONSTR): Remove. * cp-tree.h (CHECK_CONSTR_CONCEPT, CHECK_CONSTR_ARGS): Remove. * cp-objcp-common.cc (cp_common_init_ts): Don't handle CHECK_CONSTR. * tree.cc (cp_tree_equal): Likewise. * error.cc (dump_expr): Likewise. * cxx-pretty-print.cc (cxx_pretty_printer::expression): Likewise. (pp_cxx_check_constraint): Remove. (pp_cxx_constraint): Don't handle CHECK_CONSTR.
-rw-r--r--gcc/cp/cp-objcp-common.cc1
-rw-r--r--gcc/cp/cp-tree.def8
-rw-r--r--gcc/cp/cp-tree.h8
-rw-r--r--gcc/cp/cxx-pretty-print.cc28
-rw-r--r--gcc/cp/error.cc1
-rw-r--r--gcc/cp/tree.cc5
6 files changed, 0 insertions, 51 deletions
diff --git a/gcc/cp/cp-objcp-common.cc b/gcc/cp/cp-objcp-common.cc
index 86e0b49..cd37951 100644
--- a/gcc/cp/cp-objcp-common.cc
+++ b/gcc/cp/cp-objcp-common.cc
@@ -701,7 +701,6 @@ cp_common_init_ts (void)
MARK_TS_EXP (UNARY_RIGHT_FOLD_EXPR);
/* Constraints. */
- MARK_TS_EXP (CHECK_CONSTR);
MARK_TS_EXP (COMPOUND_REQ);
MARK_TS_EXP (CONJ_CONSTR);
MARK_TS_EXP (DISJ_CONSTR);
diff --git a/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def
index a0a47c3..18f7510 100644
--- a/gcc/cp/cp-tree.def
+++ b/gcc/cp/cp-tree.def
@@ -538,14 +538,6 @@ DEFTREECODE (ATOMIC_CONSTR, "atomic_constr", tcc_expression, 1)
DEFTREECODE (CONJ_CONSTR, "conj_constr", tcc_expression, 2)
DEFTREECODE (DISJ_CONSTR, "disj_constr", tcc_expression, 2)
-/* A check constraint represents the checking of a concept
- C. It has two operands: the template defining the concept
- and a sequence of template arguments.
-
- CHECK_CONSTR_CONCEPT has the concept definition
- CHECK_CONSTR_ARGS are the template arguments. */
-DEFTREECODE (CHECK_CONSTR, "check_constr", tcc_expression, 2)
-
/* The co_await expression is used to support coroutines.
Op 0 is the cast expresssion (potentially modified by the
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 609d894..76ac9c3 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -1723,14 +1723,6 @@ check_constraint_info (tree t)
#define ATOMIC_CONSTR_EXPR(NODE) \
CONSTR_EXPR (ATOMIC_CONSTR_CHECK (NODE))
-/* The concept of a concept check. */
-#define CHECK_CONSTR_CONCEPT(NODE) \
- TREE_OPERAND (TREE_CHECK (NODE, CHECK_CONSTR), 0)
-
-/* The template arguments of a concept check. */
-#define CHECK_CONSTR_ARGS(NODE) \
- TREE_OPERAND (TREE_CHECK (NODE, CHECK_CONSTR), 1)
-
/* Whether a PARM_DECL represents a local parameter in a
requires-expression. */
#define CONSTRAINT_VAR_P(NODE) \
diff --git a/gcc/cp/cxx-pretty-print.cc b/gcc/cp/cxx-pretty-print.cc
index 806aebf..e690354 100644
--- a/gcc/cp/cxx-pretty-print.cc
+++ b/gcc/cp/cxx-pretty-print.cc
@@ -1257,7 +1257,6 @@ cxx_pretty_printer::expression (tree t)
break;
case ATOMIC_CONSTR:
- case CHECK_CONSTR:
case CONJ_CONSTR:
case DISJ_CONSTR:
pp_cxx_constraint (this, t);
@@ -2815,29 +2814,6 @@ pp_cxx_nested_requirement (cxx_pretty_printer *pp, tree t)
pp_cxx_semicolon (pp);
}
-void
-pp_cxx_check_constraint (cxx_pretty_printer *pp, tree t)
-{
- tree decl = CHECK_CONSTR_CONCEPT (t);
- tree tmpl = DECL_TI_TEMPLATE (decl);
- tree args = CHECK_CONSTR_ARGS (t);
- tree id = build_nt (TEMPLATE_ID_EXPR, tmpl, args);
-
- if (TREE_CODE (decl) == CONCEPT_DECL)
- pp->expression (id);
- else if (VAR_P (decl))
- pp->expression (id);
- else if (TREE_CODE (decl) == FUNCTION_DECL)
- {
- tree call = build_vl_exp (CALL_EXPR, 2);
- TREE_OPERAND (call, 0) = integer_two_node;
- TREE_OPERAND (call, 1) = id;
- pp->expression (call);
- }
- else
- gcc_unreachable ();
-}
-
/* Output the "[with ...]" clause for a parameter mapping of an atomic
constraint. */
@@ -2917,10 +2893,6 @@ pp_cxx_constraint (cxx_pretty_printer *pp, tree t)
pp_cxx_atomic_constraint (pp, t);
break;
- case CHECK_CONSTR:
- pp_cxx_check_constraint (pp, t);
- break;
-
case CONJ_CONSTR:
pp_cxx_conjunction (pp, t);
break;
diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc
index 6d99cb2..d80bac8 100644
--- a/gcc/cp/error.cc
+++ b/gcc/cp/error.cc
@@ -3095,7 +3095,6 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags)
break;
case ATOMIC_CONSTR:
- case CHECK_CONSTR:
case CONJ_CONSTR:
case DISJ_CONSTR:
{
diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc
index 0e32d90..250239e 100644
--- a/gcc/cp/tree.cc
+++ b/gcc/cp/tree.cc
@@ -4116,11 +4116,6 @@ cp_tree_equal (tree t1, tree t2)
return cp_tree_equal (CI_ASSOCIATED_CONSTRAINTS (t1),
CI_ASSOCIATED_CONSTRAINTS (t2));
- case CHECK_CONSTR:
- return (CHECK_CONSTR_CONCEPT (t1) == CHECK_CONSTR_CONCEPT (t2)
- && comp_template_args (CHECK_CONSTR_ARGS (t1),
- CHECK_CONSTR_ARGS (t2)));
-
case TREE_VEC:
/* These are template args. Really we should be getting the
caller to do this as it knows it to be true. */