--- p/expressions.c.orig Fri Apr 2 11:34:29 2004 +++ p/expressions.c Fri Apr 2 11:38:34 2004 @@ -36,6 +36,7 @@ static const char *get_op_name PARAMS ((enum tree_code)); static void binary_op_error PARAMS ((enum tree_code)); static tree get_type_name PARAMS ((tree)); +static inline tree get_op_id PARAMS ((const char *, const char *, const char *)); static int compatible_types_p PARAMS ((tree, tree)); static int compatible_relop_p PARAMS ((tree, tree)); static tree c_size_in_bytes PARAMS ((tree)); @@ -339,6 +340,14 @@ return t; } +static inline tree +get_op_id (op_id, n1, n2) + const char *op_id, *n1, *n2; +{ + return get_identifier (ACONCAT ((op_id, "_", (*n1 >= 'A' && *n1 <= 'Z') ? "" : "OP", n1, + "_", (*n2 >= 'A' && *n2 <= 'Z') ? "" : "OP", n2, NULL))); +}; + /* Return an identifier_node (if new is set; NULL_TREE in case of error) or a FUNCTION_DECL (if new is not set; NULL_TREE if not found) for a user-defined operator. Both args may be expression, type or type_decl nodes. */ @@ -421,9 +430,7 @@ if ((t2 = get_type_name (a2))) { const char *n1 = IDENTIFIER_POINTER (t1), *n2 = IDENTIFIER_POINTER (t2); - tree result = get_identifier - (ACONCAT ((op_id, "_", (*n1 >= 'A' && *n1 <= 'Z') ? "" : "OP", n1, - "_", (*n2 >= 'A' && *n2 <= 'Z') ? "" : "OP", n2, NULL))); + tree result = get_op_id (op_id, n1, n2); tree t = new ? result : lookup_name (result); if (t) {