This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

C++ PATCH: Overloaded operators



This patch (mostly from Alex, but I helped) is a major step towards
removing G++'s dependence on how names are mangled.  (Right now, g++
cares about the mangling of names a lot; it uses mangled names to
determine what kind of function it's dealing with, for instance.)  The
part of the front-end responsible for semantic analysis should not be
concerned with mangling.

Concretely, this patch makes DECL_NAME for overloaded operators (like
`operator +') be the string "operator +" rather than "__pl".  That's
tremendously more intuitive, simplifies the code, and avoids obscure
bugs like:

  struct S {
    void __pl (int, int, int);
  };

  bash$ /usr/bin/g++ test.C
  test.C:2: `S::operator +(int, int, int)' must take either zero or
            one argument 

which is just too embarassing for words.  (It's true that ANSI/ISO C++
doesn't allow ordinary users to use identifiers that begin with `_',
but we should still permit this in the compiler; library authors use
this kind of thing a lot.)  The new ABI takes care to mangle operators
in such a way as to not conflict with ordinary functions, so under the
new ABI you could have both `__pl' 

Also, we weren't spotting the error on:

  struct S {
    bool operator! (int, ...);
  };

The ellipsis was confusing us into thinking that operator! took no
arguments here, so we didn't complain.

I'm also finishing up Alex's new-ABI mangling patch which will go in
soon.  To be followed by removal of the old mangling code...

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

2000-05-27  Alex Samuel    <samuel@codesourcery.com>
	    Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (ansi_opname): Make it a macro.
	(ansi_assopname): Likewise.
	(struct lang_decl_flags): Add assignment_operator_p.
	(struct lang_decl): Add operator_code.
	(DECL_VTT_PARM): Adjust.
	(DECL_OVERLOADED_OPERATOR_P): Return the operator_code for an
	overloaded operator.
	(SET_OVERLOADED_OPERATOR_CODE): New macro.
	(DECL_ASSIGNMENT_OPERATOR_P): New macro.
	(DECL_ARRAY_DELETE_OPERATOR_P): Adjust.
	(opname_tab): Remove.
	(assignop_tab): Likewise.
	(operator_name_info_t): New type.
	(operator_name_info): New variable.
	(assignment_operator_name_info): Likewise.
	(build_cp_library_fn): Remove declaration.
	(push_cp_library_fn): Likewise.
	(operator_name_string): Likewise.
	(build_decl_overload): Likewise.
	* call.c (print_z_candidates): Simplify.
	(build_object_call): Adjust usage of ansi_opname.  Use
	DECL_OVERLOADED_OPERATOR_P.
	(op_error): Adjust operator name lookup.
	(build_conditional_expr): Adjust usage of ansi_opname.
	(build_new_op): Likewise.
	(build_op_delete_call): Likewise.
	(build_over_call): Likewise.
	(joust): Use DECL_OVERLOADED_OPERATOR_P.
	* decl.c (duplicate_decls): Copy operator_code.
	(init_decl_processing): Adjust parameters to push_cp_library_fn.
	(builtin_function): Adjust parameters to build_library_fn_1.
	(build_library_fn_1): Accept an overloaded operator code.
	(build_library_fn): Pass ERROR_MARK.
	(build_cp_library_fn): Accept an overloaded operator code.
	(push_cp_library_fn): Likewise.
	(grokfndecl): Tweak.
	(grokdeclarator): Simplify code to compute names of overloaded
	operators.  Adjust use of ansi_opname.
	(ambi_op_p): Work on tree_codes, not identifiers.
	(unary_op_p): Likewise.
	(grok_op_properties): Likewise.
	(start_function): Use DECL_OVERLOADED_OPERATOR_P.
	(lang_mark_tree): Don't try to mark the operator_code.
	* decl2.c (grok_function_init): Use DECL_OVERLOADED_OPERATOR_P.
	* error.c (dump_decl): Remove special handling for operator
	names.
	(dump_function_name): Likewise.
	(dump_expr): Adjust name lookup of operators.
	(op_to_string): Simplify.
	(assop_to_string): Likewise.
	* init.c (build_new_1): Adjust use of ansi_opname.
	* lex.c (opname_tab): Remove.
	(assignop_tab): Likewise.
	(ansi_opname): Likewise.
	(ansi_assopname): Likewise.
	(operator_name_string): Likewise.
	(reinit_lang_specific): Likewise.
	(operator_name_info): New variable.
	(assignment_operator_name_info): Likewise.
	(init_operators): New function.
	(init_parse): Use it.
	(do_identifier): Adjust use of ansi_opname.
	* method.c (mangle_expression): Don't use ansi_opname for
	mangling.
	(build_decl_overload_real): Use DECL_OVERLOADED_OPERATOR_P.
	(build_decl_overload): Remove.
	(build_typename_overload): Use OPERATOR_TYPENAME_FORMAT directly.
	(do_build_assign_ref): Adjust use of ansi_opname.
	(synthesize_method): Likewise.
	(implicitly_declare_fn): Likewise.
	* operators.def: New file.
	* parse.y (operator): Adjust use of ansi_opname.
	* pt.c (tsubst_decl): Use IDENTIFIER_OPNAME_P.
	(set_mangled_name_for_template_decl): Don't play games with
	current_namespace.
	(special_function_p): Adjust use of ansi_opname.
	* typeck.c (check_return_expr): Likewise.
	* Make-lang.in (cc1plus): Depend on operators.def.
	* Makefile.in (lex.o): Likewise.
	(decl.o): Likewise.

begin 660 diffs.gz
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
9_TOYLE(N+PCRT3WO(>7[?P''$181F7X!````
`
end

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]