===================================================================
@@ -2714,7 +2714,6 @@
c_expr *parse_c_expr (cpp_ttype);
operand *parse_op ();
- void record_operlist (source_location, user_id *);
void parse_pattern ();
void push_simplify (vec<simplify *>&, operand *, source_location,
@@ -2729,9 +2728,6 @@
cpp_reader *r;
vec<if_or_with> active_ifs;
vec<vec<user_id *> > active_fors;
- hash_set<user_id *> *oper_lists_set;
- vec<user_id *> oper_lists;
-
cid_map_t *capture_ids;
public:
@@ -2860,22 +2856,6 @@
return (const char *)token->val.str.text;
}
-
-/* Record an operator-list use for transparent for handling. */
-
-void
-parser::record_operlist (source_location loc, user_id *p)
-{
- if (!oper_lists_set->add (p))
- {
- if (!oper_lists.is_empty ()
- && oper_lists[0]->substitutes.length () != p->substitutes.length ())
- fatal_at (loc, "User-defined operator list does not have the "
- "same number of entries as others used in the pattern");
- oper_lists.safe_push (p);
- }
-}
-
/* Parse the operator ID, special-casing convert?, convert1? and
convert2? */
@@ -2913,7 +2893,7 @@
user_id *p = dyn_cast<user_id *> (op);
if (p && p->is_oper_list)
- record_operlist (id_tok->src_loc, p);
+ fatal_at (id_tok, "invalid use of operator-list %s", id);
return op;
}
@@ -3051,11 +3031,8 @@
/* If this is possibly a user-defined identifier mark it used. */
if (token->type == CPP_NAME)
{
- id_base *idb = get_operator ((const char *)CPP_HASHNODE
- (token->val.node.node)->ident.str);
- user_id *p;
- if (idb && (p = dyn_cast<user_id *> (idb)) && p->is_oper_list)
- record_operlist (token->src_loc, p);
+ get_operator ((const char *)CPP_HASHNODE
+ (token->val.node.node)->ident.str);
}
/* Record the token. */
@@ -3140,16 +3117,9 @@
operand *match, source_location match_loc,
operand *result, source_location result_loc)
{
- /* Build and push a temporary for for operator list uses in expressions. */
- if (!oper_lists.is_empty ())
- active_fors.safe_push (oper_lists);
-
simplifiers.safe_push
(new simplify (match, match_loc, result, result_loc,
active_ifs.copy (), active_fors.copy (), capture_ids));
-
- if (!oper_lists.is_empty ())
- active_fors.pop ();
}
/* Parse
@@ -3170,11 +3140,7 @@
/* Reset the capture map. */
if (!capture_ids)
capture_ids = new cid_map_t;
- /* Reset oper_lists and set. */
- hash_set <user_id *> olist;
- oper_lists_set = &olist;
- oper_lists = vNULL;
-
+
const cpp_token *loc = peek ();
parsing_match_operand = true;
struct operand *match = parse_op ();
@@ -3563,8 +3529,6 @@
active_ifs = vNULL;
active_fors = vNULL;
simplifiers = vNULL;
- oper_lists_set = NULL;
- oper_lists = vNULL;
capture_ids = NULL;
user_predicates = vNULL;
parsing_match_operand = false;