Commit Graph

527 Commits

Author SHA1 Message Date
Jason Merrill
896c3aa346 tree.c (check_qualified_type): New fn.
* tree.c (check_qualified_type): New fn.
        (get_qualified_type): Use it.  If type already has the desired
        quals, just return it.
        * tree.h: Declare it.
        * cp/tree.c (build_exception_variant): Use it.

From-SVN: r78376
2004-02-24 13:23:25 -05:00
Mark Mitchell
5bd61841e4 call.c (conversion_kind): New type.
* call.c (conversion_kind): New type.
	(conversion_rank): Likewise.
	(conversion): Likewise.
	(CONVERSION_RANK): New macro.
	(conversion_obstack): New variable.
	(obstack_initialized): Likewise.
	(z_candidate): Change type of convs and second_conv.
	(candidate_warning): New type.
	(IDENTITY_RANK): Remove.
	(EXACT_RANK): Likewise.
	(PROMO_RANK): Likewise.
	(STD_RANK): Likewise.
	(PBOOL_RANK): Likewise.
	(USER_RANK): Likewise.
	(ELLIPSIS_RANK): Likewise.
	(BAD_RANK): Likewise.
	(ICS_RANK): Likewise.
	(ICS_STD_RANK): Likewise.
	(ICS_USER_FLAG): Likewise.
	(ICS_ELLIPSIS_FLAG): Likewise.
	(ICS_THIS_FLAG): Likewise.
	(ICS_BAD_FLAG): Likewise.
	(NEED_TEMPORARY_P): Likewise.
	(CHECK_COPY_CONSTRUCTOR_P): Likewise.
	(USER_CONV_CAND): Likewise.
	(USER_CONV_FN): Likewise.
	(conversion_obstack_alloc): New function.
	(alloc_conversion): Likewise.
	(validate_conversion_obstack): Likewise.
	(alloc_conversions): Likewise.
	(build_conv): Adjust to deal with new conversion data structures.
	(build_identity_conv): New function.
	(build_ambiguous_conv): Likewise.
	(standard_conversion): Adjust to deal with new conversion data
	structures.
	(convert_class_to_reference): Likewise.
	(direct_reference_binding): Likewise.
	(reference_binding): Likewise.
	(implicit_conversion): Likewise.
	(add_candidate): Likewise.
	(add_function_candidate): Likewise.
	(add_conv_candidate): Likewise.
	(build_builtin_candidate): Likewise.
	(print_z_candidate): Likewise.
	(merge_conversion_sequences): Likewise.
	(build_user_type_conversion_1): Likewise.
	(build_user_type_conversion): Likewise.
	(build_new_function_call): Likewise.
	(build_object_call): Likewise.
	(conditional_conversion): Likewise.
	(build_conditional_expr): Likewise.
	(build_new_op): Likewise.
	(build_op_delete_call): Likewise.
	(convert_like_real): Likewise.
	(build_over_call): Likewise.
	(build_new_method_call): Likewise.
	(is_subseq): Likewise.
	(maybe_handle_implicit_object): Likewise.
	(maybe_handle_ref_bind): Likewise.
	(compare_ics): Likewise.
	(source_type): Likewise.
	(add_warning): Likewise.
	(joust): Likewise.
	(can_convert_arg): Likewise.
	(can_convert_arg_bad): Likewise.
	(perform_implicit_conversion): Likewise.
	(perform_direct_initialization_if_possible): Likewise.
	(initialize_reference): Likewise.
	* cp-lang.c (cp_tree_size): Do not handle WRAPPER.
	* cp-tree.def (WRAPPER): Likewise.
	(IDENTITY_CONV): Remove.
	(LVALUE_CONV): Likewise.
	(QUAL_CONV): Likewise.
	(STD_CONV): Likewise.
	(PTR_CONV): Likewise.
	(PMEM_CONV): Likewise.
	(BASE_CONV): Likewise.
	(REF_BIND): Likewise.
	(USER_CONV): Likewise.
	(AMBIG_CONV): Likewise.
	(RVALUE_CONV): Likewise.
	* cp-tree.h (tree_wrapper): Remove.
	(WRAPPER_ZC): Remove.
	(lang_tree_node): Remove wrapper.
	(LOOKUP_SPECULATIVELY): Remove.
	(build_op_delete_call): Adjust prototype.
	(validate_conversion_obstack): Declare.
	(build_zc_wrapper): Remove.
	* cvt.c (convert_to_reference): Remove dead code.
	(ocp_convert): Likewise.
	* decl.c (redeclaration_error_message): Correct handling of
	templates.
	(finish_destructor_body): Do not use LOOKUP_SPECULATIVELY.
	(cp_tree_node_structure): Remove WRAPPER case.
	* decl2.c (finish_file): Call validate_conversion_obstack.
	* init.c (build_new_1): Remove use of LOOKUP_SPECULATIVELY.
	(build_op_delete_call): Likewise.
	(build_x_delete): Likewise.
	(build_delete): Adjust call to build_op_delete_call.
	* pt.c (tsubst_friend_declaration): Adjust code to determine
	whether or not a friend template is a definition.
	(tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
	* tree.c (build_zc_wrapper): Remove.

From-SVN: r77752
2004-02-13 07:19:25 +00:00
Kazu Hirata
77077b39cb * call.c, parser.c, tree.c: Fix comment typos.
From-SVN: r77536
2004-02-09 14:56:00 +00:00
Jan Hubicka
6039a93dd7 tree.c (cp_cannot_inline_tree_fn): Allow inlining of comdat functions.
* tree.c (cp_cannot_inline_tree_fn):  Allow inlining of comdat
	functions.

From-SVN: r77330
2004-02-05 19:01:20 +00:00
Mark Mitchell
e9525111c9 re PR c++/13113 (Nice warning about &(X::m) lost)
PR c++/13113
	* init.c (build_offset_ref): Improve error recovery for invalid
	uses of non-static member functions.

	PR c++/13854
	* cp-tree.h (cp_build_type_attribute_variant): New function.
	* class.c (build_clone): Use cp_build_type_attribute_variant.
	* decl.c (duplicate_decls): Likewise.
	* pt.c (copy_default_args_to_explicit_spec): Likewise.
	(tsubst_function_type): Likewise.
	* tree.c (build_exception_variant): Check attributes before
	concluding that two types are the same.
	(cp_build_type-attribute_variant): New method.
	* typeck.c (merge_types): Use cp_build_type_attribute_variant.

	PR c++/13907
	* call.c (convert_class_to_reference): Keep better track of
	pedantically invalid user-defined conversions.

	PR c++/13113
	* g++.old-deja/g++.mike/net36.C: Adjust error messages.

	PR c++/13854
	* g++.dg/ext/attrib13.C: New test.

	PR c++/13907
	* g++.dg/conversion/op2.C: New test.

From-SVN: r77127
2004-02-02 16:53:17 +00:00
Richard Henderson
59445d7427 re PR c++/13693 ([tree-ssa] build failure in mipsisa64-elf)
PR c++/13693
        * method.c (use_thunk): Don't force_target_expr for void thunks.
        * tree.c (build_target_expr_with_type): Assert non-void type.
        (force_target_expr): Likewise.

From-SVN: r77008
2004-01-30 15:37:39 -08:00
Nathan Sidwell
58496de135 re PR c++/13494 (ICE on bidimensional array subscription in template function.)
cp:
	PR c++/13494
	* tree.c (build_cplus_array_type_1): Only build a minimal array
	type for dependent types or domains.
testsuite:
	PR c++/13494
	* g++.dg/template/array2-1.C: New test.
	* g++.dg/template/array2-2.C: New test.

From-SVN: r75225
2003-12-30 10:07:13 +00:00
Andrew Pinski
92a12fbcc4 re PR c++/5050 (template instantiation depth exceeds/maybe recursion problem)
2003-12-22  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/5050
        * tree.c (cp_start_inlining): Remove.
        (cp_end_inlining): Remove.
        * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Do not define.
        (LANG_HOOKS_TREE_INLINING_END_INLINING): Do not define.
        * cp-tree.h (cp_start_inlining): Do not declare.
        (cp_end_inlining): Do not declare.

        PR c++/5050
	* g++.dg/template/recurse1.C: New test.

From-SVN: r74947
2003-12-22 12:42:58 -08:00
Kazu Hirata
926ce8bd97 cvt.c: Remove uses of "register" specifier in declarations of arguments and local...
* cvt.c: Remove uses of "register" specifier in
	declarations of arguments and local variables.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* expr.c: Likewise.
	* friend.c: Likewise.
	* lex.c: Likewise.
	* name-lookup.c: Likewise.
	* repo.c: Likewise.
	* search.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

From-SVN: r74855
2003-12-19 23:28:11 +00:00
Kazu Hirata
da1d7781e4 ChangeLog: Fix typos.
* ChangeLog: Fix typos.
	* ChangeLog.1: Likewise.
	* ChangeLog.2: Likewise.
	* call.c: Fix comment typos.
	* class.c: Likewise.
	* cxx-pretty-print.c: Likewise.
	* mangle.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* tree.c: Likewise.

From-SVN: r74595
2003-12-13 04:28:50 +00:00
Jason Merrill
a6f86b5167 re PR c++/11971 (ICE in cp_expr_size with variadic function call)
PR c++/11971
        * tree.c (build_local_temp): Split out from build_cplus_new.
        (force_target_expr): New fn.
        * call.c (call_builtin_trap): Call it.  Take a type parm.
        (convert_arg_to_ellipsis): Pass it.
        (build_x_va_arg): Use call_builtin_trap.

        PR c++/11929
        * call.c (magic_varargs_p): New fn.
        (build_over_call): Do no ellipsis conversions for arguments to
        functions with magic varargs.

From-SVN: r74462
2003-12-08 23:08:50 -05:00
Mark Mitchell
662eceda1d tree.c (build_target_expr_with_type): Treate VA_ARG_EXPR like CONSTRUCTOR.
* tree.c (build_target_expr_with_type): Treate VA_ARG_EXPR like
	CONSTRUCTOR.

From-SVN: r73521
2003-11-12 23:48:25 +00:00
Jason Merrill
4b5aa8815e re PR c++/12726 (ICE (segfault) on trivial code)
PR c++/12726
        * tree.c (build_target_expr_with_type): Don't call force_rvalue
        for CONSTRUCTORs.

From-SVN: r72837
2003-10-23 02:41:31 -04:00
Kazu Hirata
04c06002c2 call.c: Fix comment formatting.
* call.c: Fix comment formatting.
	* class.c: Likewise.
	* cxx-pretty-print.c: Likewise.
	* init.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

From-SVN: r72828
2003-10-22 23:42:47 +00:00
Kazu Hirata
cd0be382c9 ChangeLog: Fix typos.
* ChangeLog: Fix typos.
	* call.c: Fix comment typos.
	* class.c: Likewise.
	* cp-tree.h: Likewise.
	* cvt.c: Likewise.
	* cxx-pretty-print.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* init.c: Likewise.
	* mangle.c: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.

From-SVN: r72737
2003-10-21 02:16:17 +00:00
Jason Merrill
182609b572 re PR c++/11878 (ICE in cp_expr_size)
PR c++/11878
        * tree.c (build_target_expr_with_type): Call force_rvalue for
        classes with non-trivial copy ctors.

        PR c++/11063
        * typeck.c (build_modify_expr): Call convert rather than abort.

From-SVN: r72494
2003-10-14 16:46:27 -04:00
Jason Merrill
4b011bbf6b re PR middle-end/6392 (Problems with __restrict__ type qualifier (array))
PR c++/6392
        * cp/tree.c (build_cplus_array_type): Handle all quals the same.
        (cp_build_qualified_type_real): Look through arrays first.
        * c-common.c (c_build_qualified_type): Look through arrays first.
        (c_apply_type_quals_to_decl): Look through arrays.

        * c-common.c (c_apply_type_quals_to_decl): Unset TREE_READONLY for
        types with constructors.

From-SVN: r72259
2003-10-09 04:38:46 -04:00
Jason Merrill
1456deafd7 stmt.c (resolve_asm_operand_names): Call check_unique_operand_names here.
* stmt.c (resolve_asm_operand_names): Call check_unique_operand_names
        here.
        (expand_asm_operands): Not here.
        (parse_input_constraint): No longer static.
        * tree.h: Declare it.

        * coverage.c (build_ctr_info_value): Use build_decl to make a
        VAR_DECL.
        (create_coverage): Likewise.
java/
        * parse.y (patch_assignment): Use make_node to create a BLOCK.
        * parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a
        POINTER_TYPE.
cp/
        * tree.c (build_cplus_new): Use build_decl to create a VAR_DECL.
        (build_target_expr_with_type): Likewise.

        * pt.c (instantiate_class_template): Sanity check that our
        enclosing class has been instantiated.

From-SVN: r72255
2003-10-09 01:44:57 -04:00
Richard Henderson
f31686a322 Revert DECL_SOURCE_LOCATION -> TREE_LOCUS change.
From-SVN: r71641
2003-09-21 22:09:32 -07:00
Richard Henderson
7e2af53a14 tree.h (TREE_LOCUS): Rename from DECL_SOURCE_LOCATION; make const.
* tree.h (TREE_LOCUS): Rename from DECL_SOURCE_LOCATION; make const.
	(TREE_FILENAME, TREE_LINENO): Likewise.
	(set_tree_locus, copy_tree_locus, set_tree_file_line): New.
	(TREE_LOCUS_SET_P): New.
	* c-aux-info.c, c-decl.c, c-parse.in, coverage.c, dbxout.c,
	diagnostic.c, dwarf2out.c, dwarfout.c, function.c, integrate.c,
	print-tree.c, stmt.c, toplev.c, tree-dump.c, tree-inline.c,
	tree-optimize.c, tree.c, tree.def, xcoffout.c, config/alpha/alpha.c,
	config/mips/mips.c, doc/c-tree.texi, objc/objc-act.c: Update to match.

ada/
	* trans.c, utils.c: Update for DECL_SOURCE_LOCATION rename and
	change to const.

cp/
	* class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c,
	method.c, optimize.c, pt.c, semantics.c, tree.c: Update for
	DECL_SOURCE_LOCATION rename and change to const.

f/
	* com.c, ste.c: Update for DECL_SOURCE_LOCATION rename and
	change to const.

java/
	* class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
	resource.c: Update for DECL_SOURCE_LOCATION rename and change to const.

treelang/
	* treetree.c: Update for DECL_SOURCE_LOCATION rename and
	change to const.

From-SVN: r71636
2003-09-21 16:39:40 -07:00
Richard Henderson
c1f927e84e c-decl.c (c_expand_body_1): Push and pop function context here.
gcc/
        * c-decl.c (c_expand_body_1): Push and pop function context here.
        * tree-optimize.c (tree_rest_of_compilation): ... not here.  Take
        nested argument instead of computing nesting ourselves.

gcc/cp/
        * decl.c (finish_function): Clear current_function_decl.
        * decl2.c (mark_used): Don't push/pop gc context.
        * optimize.c (optimize_function): Likewise.
        * tree.c (cp_cannot_inline_tree_fn): Likewise.
        * pt.c (instantiate_decl): Inc/dec function_depth instead.
        * semantics.c (expand_body): Update for tree_rest_of_compilation
        nested argument.

From-SVN: r71208
2003-09-08 08:56:27 -07:00
Nathan Sidwell
8e1daa3412 re PR c++/12037 (Spurious "statement has no effect" in templates)
cp:
	PR c++/12037
	* cp-tree.h (COMPOUND_EXPR_OVERLOADED): New.
	(build_min_non_dep): Declare.
	* tree.c (build_min): Propagate TREE_SIDE_EFFECTS.
	(build_min_non_dep): New.
	* cvt.c (convert_to_void): Don't explicitly copy
	TREE_SIDE_EFFECTS, TREE_NO_UNUSED_WARNING.
	* call.c (build_new_method_call): Use build_min_non_dep.
	* decl2.c (grok_array_decl): Likewise.
	(build_offset_ref_call_from_tree): Likewise.
	* typeck.c (finish_class_member_access_expr,
	build_x_indirect_ref, build_x_binary_op, build_x_unary_op,
	build_x_conditional_expr, build_x_compound_expr): Likewise.
	(build_static_cast, build_reinterpret_cast,
	build_const_cast): Propagate TREE_SIDE_EFFECTS inside a template.
	* typeck2.c (build_x_arrow): Use build_min_non_dep.
	(build_functional_cast): Propagate TREE_SIDE_EFFECTS inside a
	template.
	* rtti.c (build_dynamic_cast_1): Set DECL_IS_PURE.
	(build_dynamic_cast): Set TREE_SIDE_EFFECTS.
	* pt.c (build_non_dependent_expr): Check COMPOUND_EXPR_OVERLOADED.
testsuite:
	PR c++/12037
	* g++.dg/warn/noeffect4.C: New test.

From-SVN: r71108
2003-09-05 08:24:28 +00:00
Geoffrey Keating
1a9861e629 re PR c++/12161 (ICE during bootstrap, locale-inst.c, cp/call.c: 4571)
PR 12161
	* decl2.c (mark_used): Use ggc_push_context/ggc_pop_context.
	* tree.c (cp_cannot_inline_tree_fn): Likewise.

From-SVN: r71084
2003-09-04 19:48:22 +00:00
Mark Mitchell
d18a825116 Remove cast-as-lvalue extension.
* call.c (build_conditional_expr): Correct formatting.
	(convert_like_real): Use lvalue_p, not non_cast_lvalue_p.
	(initialize_real): Use real_lvalue_p, not real_non_cast_lvalue_p.
	* cp-tree.h (non_cast_lvalue_p): Remove.
	(real_non_cast_lvalue_p): Remove.
	(non_cast_lvalue_or_else): Remove.
	* tree.c (lvalue_p_1): Remove allow_cast_as_lvalue parameter.
	(real_lvalue_p): Adjust call to lvalue_p_1.
	(non_cast_lvalue_p): Remove.
	(non_cast_lvalue_or_else): Remove.
	(lvalue_p): Adjust call to lvalue_p_1.
	(lvalue_or_else): Simplify.
	* typeck.c (build_unary_op): Use lvalue_or_else, not
	non_cast_lvalue_or_else.
	(build_static_cast): Use real_lvalue_p, not real_non_cast_lvalue_p.

	* doc/extend.texi: Document removal of cast-as-lvalue extension in
	C++.

	* g++.dg/expr/lval1.C: New test.
	* g++.dg/ext/lvcast.C: Remove.

From-SVN: r71051
2003-09-04 07:16:43 +00:00
Mark Mitchell
43dc123f52 re PR target/8795 ([PPC] Altivec related bugs concerning gcc 3.3 and mainline)
PR c++/8795
	* tree.h (build_method_type_directly): Declare.
	* c-common.c (handle_vector_size_attributes): Handle METHOD_TYPEs.
	(vector_size_helper): Likewise.
	* tree.c (build_method_type_directly): New function.
	(build_method_type): Use it.

	PR c++/8795
	* cp-tree.h (build_cplus_method_type): Remove.
	* call.c (standard_conversion): Use build_method_type_directly
	instead of build_cplus_method_type.
	* class.c (build_clone): Likewise.
	(adjust_clone_args): Likewise.
	* decl.c (build_ptrmem_type): Likewise.
	(grokdeclarator): Likewise.
	(check_function_type): Likewise.
	* decl2.c (grok_method_quals): Likewise.
	(maybe_retrofit_in_chrg): Likewise.
	* pt.c (copy_default_args_to_explicit_spec): Likewise.
	(tsubst_function_type): Likewise.
	(tsubst): Likewise.
	* tree.c (build_cplus_method_type): Remove.
	* typeck.c (merge_types): Use build_method_type_directly.

	PR c++/8795
	* g++.dg/ext/altivec-1.C: New test.

From-SVN: r70773
2003-08-25 15:47:43 +00:00
Jason Merrill
9eeb200f8a semantics.c (simplify_aggr_init_expr): Split out from simplify_aggr_init_exprs_r.
* semantics.c (simplify_aggr_init_expr): Split out from
        simplify_aggr_init_exprs_r.  Convert slot address to match
        the return type.
        * cp-tree.h: Declare it.
        * tree.c (cp_copy_res_decl_for_inlining): Don't clobber the
        DECL_NAME of a user variable.

From-SVN: r70635
2003-08-20 23:20:54 -04:00
Nathan Sidwell
bf12d54dac cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): non-NULL NODE is always a TREE_VEC of non-zero size.
cp:
	* cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): non-NULL
	NODE is always a TREE_VEC of non-zero size.
	(NUM_TMPL_ARGS): NODE is always a TREE_VEC.
	* decl2.c (arg_assoc): Template args will be a vec.
	* error.c (dump_decl) <TEMPLATE_ID_EXPR case>: Call
	dump_template_argument_list.
	(dump_template_parms): Args will be a vec.
	* parser.c (cp_parser_template_argument_list): Produce a
	vector, not a list.
	* pt.c (coerce_template_parms): Args are always vectors.
	(mangle_class_name_for_template): Likewise.
	(lookup_template_function): Likewise.
	(lookup_template_class): Likewise.
	(tsubst_template_args): Likewise.
	(tsubst_baselink): Use tsubst_template_args.
	(tsubst_qualified_id): Likewise.
	(tsubst_copy) <TEMPLATE_ID_EXPR case>: Likewise.
	(tsubst_copy_and_build) <TEMPLATE_ID_EXPR case>: Likewise.
	(any_dependent_template_args_p):  Args are always vectors.
	* tree.c (cp_tree_equal): Add TEMPLATE_ID_EXPR case.

From-SVN: r70295
2003-08-10 15:10:35 +00:00
Mark Mitchell
a5ac359a6d fold-const.c (force_fit_type): Handle OFFSET_TYPE.
* fold-const.c (force_fit_type): Handle OFFSET_TYPE.
	* varasam.c (output_constant): Likewise.

2003-07-22  Mark Mitchell  <mark@codesourcery.com>

	Eliminate use of POINTER_TYPE for pointers-to-members.
	* call.c (standard_conversion): Rework pointer-to-member handling.
	Add comments.
	(add_builtin_candidate): Likewise.
	(resolve_scoped_fn_name): Remove.
	(build_conditional_expr): Rework pointer-to-member handling.
	(compare_ics): Likewise.
	* class.c (check_field_decls): Use TYPE_PTR_P.
	* cp-lang.c (cp_var_mod_type_p): Rework pointer-to-member
	handling.
	* cp-tree.h (SCALAR_TYPE_P): Use TYPE_PTR_TO_MEMBER_P.
	(TYPE_PTRMEM_P): Add comment.
	(TYPE_PTR_P): Simplify.
	(TYPE_PTROB_P): Correct definition.
	(TYPE_PTR_TO_MEMBER_P): New macro.
	(TYPE_PTRMEM_CLASS_TYPE): Adjust.
	(TYPE_PTRMEM_POINTED_TO_TYPE): Likewise.
	(resolved_scoped_fn_name): Remove declaration.
	(build_offset_ref): Change prototype.
	(resolve_offset_ref): Remove.
	(comp_target_types): Remove.
	* cvt.c (cp_convert_to_pointer): Rework pointer-to-member
	handling.
	(convert_to_reference): Use can_convert.
	(ocp_convert): Improve error handling.  Rework pointer-to-member
	handling.
	(perform_qualification_conversions): Rework pointer-to-member
	handling.
	* decl.c (build_ptrmem_type): Handle functions too.
	(create_array_type_for_decl): Remove OFFSET_TYPE error message.
	(grokdeclarator): Use OFFSET_TYPE for pointers to data members.
	(grokparms): Remove OFFSET_TYPE error message.
	* dump.c (cp_dump_tree): Rework pointer-to-member handling.
	* error.c (dump_type_prefix): Likewise.
	* expr.c (cplus_expand_constant): Use build_nop.
	* init.c (build_offset_ref): Add address_p parameter.  Fold in
	necessary bits from resolve_offset_ref.
	(resolve_offset_ref): Remove.
	* parser.c (cp_parser_postfix_expression): Remove special case
	code for OFFSET_TYPE.
	* pt.c (convert_nontype_argument): Rework pointer-to-member
	handling.
	(convert_template_argument): Likewise.
	(unify): Likewise.
	(invalid_nontype_parm_type_p): Likewise.
	(dependent_type_p_r): Likewise.
	* rtti.c (get_tinfo_decl): Remove OFFSET_TYPE special case.
	(target_incomplete_p_): Rework pointer-to-member
	handling.
	(get_pseudo_ti_init): Likewise.
	(get_pseudo_ti_desc): Likewise.
	* semantics.c (finish_qualified_id_expr): Adjust call to
	build_offset_ref.  Remove use of resolve_offset_ref.
	* tree.c (pod_type_p): Use TYPE_PTR_TO_MEMBER_P.
	* typeck.c (target_type): Use TYPE_PTRMEM_P.
	(type_unknown_p): Remove obsolete code about the time before
	non-dependent expressions were handled correctly.
	(qualify_type_recursive): Remove.
	(composite_pointer_type_r): New function.
	(composite_pointer_type): Use it.
	(merge_types): Remove dead comments.
	(comp_cv_target_types): Remove.
	(comp_target_types): Likewise.
	(comp_target_parms): Likewise.
	(cxx_sizeof_or_alignof_type): Remove OFFSET_TYPE error.
	(build_indirect_ref): Use TYPE_PTR_TO_MEMBER_P.
	(build_binary_op): Do not use of comp_target_types.
	(pointer_diff): Remove OFFSET_TYPE case.
	(build_unary_op): Adjust pointer-to-member handling.
	(unary_complex_lvalue): Likewise.
	(check_for_casting_away_constness): Add description parameter.
	(build_static_cast): Pass it.
	(build_reinterpret_cast): Use check_for_casting_away_constness.
	(build_const_cast): Adjust pointer-to-member handling.
	(build_c_cast): Likewise.
	(convert_for_assignment): Remove OFFSET_TYPE error message.
	(comp_ptr_ttypes_real): Adjust pointer-to-member handling.
	(comp_ptr_ttypes_reinterpret): Remove.
	(casts_away_constness_r): Adjust pointer-to-member handling.
	(casts_away_constness): Liekwise.
	(strip_all_pointer_quals): Remove.
	* typeck2.c (digest_init): Adjust pointer-to-member handling.
	(build_m_component_ref): Likewise.

From-SVN: r69691
2003-07-22 23:30:22 +00:00
Nathan Sidwell
e0d1297c43 cp-tree.h (enum cp_lvalue_kind): Add clk_packed.
cp:
	* cp-tree.h (enum cp_lvalue_kind): Add clk_packed.
	* tree.c (lvalue_p_1): Set it.
	* class.c (check_field): Don't allow non-packed non-POD fields to
	be packed.
	* call.c (reference_binding): Need a temporary for all bitfield
	and packed fields.
	(convert_like_real): Check it is ok to make a temporary here.
testsuite:
	* g++.dg/ext/packed3.C: New test.
	* g++.dg/ext/packed4.C: New test.

From-SVN: r69669
2003-07-22 09:53:34 +00:00
Mark Mitchell
10b1d5e751 cp-tree.def (LOOKUP_EXPR): Remove.
* cp-tree.def (LOOKUP_EXPR): Remove.
	* cp-tree.h (cp_id_kind): Add CP_ID_KIND_UNQUALIFIED_DEPENDENT.
	(LOOKUP_EXPR_GLOBAL): Remove.
	(get_bindings): Remove.
	(is_aggr_type_2): Remove.
	* call.c (resolved_scoped_fn_name): Remove support for
	LOOKUP_EXPR.
	* decl.c (grokfndecl): Likewise.
	(grokdeclarator): Likewise.
	* error.c (dump_decl): Likewise.
	(dump_expr): Likewise.
	* friend.c (do_friend): Likewise.
	* init.c (build_offset_ref): Likewise.
	* lex.c (unqualified_fn_lookup_error): Use pedwarn.  Do not create
	LOOKUP_EXPRs
	* mangle.c (write_expression): Remove support for LOOKUP_EXPR.
	* parser.c (cp_parser_postfix_expression): Modify Koenig lookup
	test.
	* pt.c (get_bindings): Give it internal linkage.
	(check_explicit_specialization): Remove support for LOOKUP_EXPR.
	(lookup_template_function): Likewise.
	(for_each_tempalte_parm_r): Likewise.
	(tsubst_decl): Likewise.
	(tsubst_qualified_id): Handle template template parameters.
	(tsubst_copy): Remove support for LOOKUP_EXPR.
	(tsubst_copy_and_build): Likewise.
	(most_general_template): Likewise.
	(value_dependent_expression_p): Likewise.
	(type_dependent_expression_p): Note that IDENTIFIER_NODEs are
	always dependent.
	* semantics.c (perform_koenig_lookup): Do not create
	IDENTIFIER_NODEs.
	(finish_fname): Likewise.
	(finish_id_expression): Likewise.
	* tree.c (is_aggr_type_2): Remove.

From-SVN: r69427
2003-07-16 00:09:45 +00:00
Mark Mitchell
4a3864984c re PR c++/10032 (-pedantic converts some errors to warnings)
PR c++/10032
	* doc/invoke.texi (C++ Dialect Options): Change documentation of
	-fpermissive.

	PR c++/10032
	* decl.c (cxx_init_decl_processing): With -pedantic, pedwarns are
	still errors.

	PR c++/10527
	* error.c (decl_to_string): Do not print default argument
	expressions.

	* cp-tree.h (break_out_calls): Remove declaration.
	* tree.c (break_out_calls): Remove.
	* typeck.c (build_modify_expr): Avoid invalid sharing of trees.

	PR c++/10032
	* g++.dg/warn/pedantic1.C: New test.

From-SVN: r69191
2003-07-10 16:47:52 +00:00
Mark Mitchell
d17811fd1a fold-const.c (make_range): Do not access operand 1 for a zero-operand operator.
* fold-const.c (make_range): Do not access operand 1 for a
	zero-operand operator.

2003-07-08  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.def (NON_DEPENDENT_EXPR): New node.
	* cp-tree.h (build_call_from_tree): Remove.
	(build_member_call): Likewise.
	(dependent_template_arg_p): Remove.
	(any_dependent_template_arguments_p): New function.
	(dependent_template_id_p): Likewise.
	(any_type_dependent_arguments_p): Likewise.
	(build_non_dependent_expr): Likewise.
	(build_non_dependent_args): Likewise.
	(build_x_compound_expr): Adjust prototype.
	* call.c (build_new_method_call): Handle non-dependent expressions
	correctly.
	* decl2.c (grok_array_decl): Likewise.
	(build_offset_ref_call_from_tree): Likewise.
	(build_call_from_tree): Remove.
	* error.c (dump_decl): Handle NON_DEPENDENT_EXPR.
	(dump_expr): Likewise.
	* init.c (build_member_call): Remove.
	* mangle.c (write_expression): Update handling for template-ids.
	* parser.c (cp_parser_primary_expression): Use
	any_dependent_template_arguments_p.  Update constant-expression
	handling.
	(cp_parser_postfix_expression): Use
	any_type_dependent_arguments_p.  Simplify call processing.
	(cp_parser_unary_expression): Simplify.
	(cp_parser_expression): Adjust for changes to
	build_x_compound_expr.
	(cp_parser_template_argument): Implement standard-conforming
	parsing of non-type template arguments.
	(cp_parser_direct_declarator): Use
	cp_parser_fold_non_dependent_expr.
	(cp_parser_fold_non_dependent_expr): New function.
	(cp_parser_next_token_ends_template_argument_p): Likewise.
	* pt.c (convert_template_argument): Do not call
	maybe_fold_nontype_arg.
	(tsubst_baselink): Likewise.
	(tsubst_copy_and_build): Share common code.  Make sizeof/alignof
	processing work correctly for non-dependent expressions.  Adjust
	handling of COMPOUND_EXPR.  Simplify call processing.
	(value_dependent_expression_p): Deal with functional casts and
	sizeof/alignof correctly.
	(type_dependent_expression_p): Handle overloaded functions.
	(any_type_dependent_arguments_p): New function.
	(any_dependent_template_arguments_p): Likewise.
	(dependent_template_p): Treat SCOPE_REFs as dependent.
	(dependent_template_id_p): Simplify.
	(build_non_dependent_expr): New function.
	(build_non_dependent_args): Likewise.
	* semantics.c (finish_stmt_expr): Don't make dependent
	statement-expresions have void type.
	(finish_call_expr): Handle non-dependent expressions
	correctly.
	* tree.c (lvalue_p_1): Treat NON_DEPENDENT_EXPRs as lvalues.
	* typeck.c (cxx_sizeof_or_alignof_type): Give the expression
	type size_t, even in templates.
	(expr_sizeof): Likewise.
	(finish_class_member_access_expr): Handle non-dependent expressions
	correctly.
	(build_x_indirect_ref): Likewise.
	(build_x_binary_op): Likewise.
	(build_x_unary_op): Likewise.
	(build_x_conditional_expr): Likewise.
	(build_x_compound_expr): Likewise.
	* typeck2.c (build_x_arrow): Likewise.

2003-07-08  Mark Mitchell  <mark@codesourcery.com>

	* g++.dg/abi/mangle17.C: Make sure template expressions are
	dependent.
	* g++.dg/abi/mangle4.C: Mark erroneous casts.
	* g++.dg/debug/debug7.C: Mark erronous new-declarator.
	* g++.dg/opt/stack1.C: Remove erroneous code.
	* g++.dg/parse/template7.C: New test.
	* g++.dg/template/dependent-expr1.C: Mark erroneous code.
	* g++.old-deja/g++.pt/crash4.C: Likewise.

2003-07-09  Mark Mitchell  <mark@codesourcery.com>

	* gcj/array.h (JvPrimClass): Don't parenthesize the output.

From-SVN: r69130
2003-07-09 08:48:08 +00:00
Kazu Hirata
34cd5ae762 call.c: Fix comment typos.
* call.c: Fix comment typos.
	* class.c: Likewise.
	* cp-tree.h: Likewise.
	* cvt.c: Likewise.
	* decl2.c: Likewise.
	* decl.c: Likewise.
	* init.c: Likewise.
	* mangle.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise

From-SVN: r68956
2003-07-05 03:02:05 +00:00
Mark Mitchell
d6b4ea8592 call.c (build_addr_func): Handle bound pointers-to-members.
* call.c (build_addr_func): Handle bound pointers-to-members.
	(build_method_call): Do not call resolve_offset_ref.
	(implicit_conversion): Likewise.
	(resolve_scoped_fn_name): Use finish_non_static_data_member, not
	resolve_offset_ref.
	(resolve_args): Do not call resolve_offset_ref.
	(build_conditional_expr): Likewise.
	(build_new_method_call): Likewise.
	* cp-tree.def (OFFSET_REF): Update documentation.
	(cp_convert_to_pointer): Update handling of conversions from
	pointers to members to pointers.
	(ocp_convert): Do not call resolve_offset_ref.
	(convert_to_void): Likewise.
	(build_expr_type_conversion): Likewise.
	(delete_sanity): Likewise.
	(resolve_offset_ref): Simplify greatly.
	(build_vec_delete): Do not call resolve_offset_ref.
	* parser.c (cp_parser_postfix_expression): Call resolve_offset_ref
	if appropriate.
	(cp_parser_unary_expression): Use
	cp_parser_simple_cast_expression.
	(cp_parser_delete_expression): Likewise.
	(cp_parser_cast_expression): Likewise.
	(cp_parser_pm_expression): Use cp_parser_binary_op.
	(cp_parser_simple_cast_expression): New function.
	* rtti.c (build_dynamic_cast_1): Do not call resolve_offset_ref.
	* semantics.c (finish_increment_expr): Likewise.
	(finish_typeof): Likewise.
	* tree.c (lvalue_p_1): Do not handle OFFSET_REF.
	* typeck.c (require_complete_type): Do not handle OFFSET_REFs.
	(decay_conversion): Do not call resolve_offset_ref.
	(finish_class_member_access_expr): Likewise.
	(convert_arguments): Likewise.
	(build_x_binary_op): Handle DOTSTAR_EXPR.
	(condition_conversion): Do not call resolve_offset_ref.
	(unary_complex_lvalue): Likewise.
	(build_static_cast): Likewise.
	(build_reinterpret_cast): Likewise.
	(build_const_cast): Likewise.
	(build_c_cast): Likewise.
	(build_modify_expr): Likewise.
	(convert_for_assignment): Likewise.
	(convert_for_initialization): Likewise.
	* typeck2.c (build_x_arrow): Likewise.
	(build_m_component_ref): Simplify.

	* g++.old-deja/g++.jason/typeid1.C: Add dg-error marker.
	* g++.old-deja/g++.mike/net36.C: Tweak error messages.

From-SVN: r68911
2003-07-04 05:05:19 +00:00
Nathan Sidwell
08476342ab re PR c++/10219 (ICE in maybe_adjust_types_for_deduction on invalid code)
cp:
	PR c++/10219
	* pt.c (type_unification_real): Don't unify exprs of error type.
	* tree.c (error_type): Don't die on error_type.
testsuite:
	PR c++/10219
	* g++.dg/template/error1.C: New.

From-SVN: r68825
2003-07-02 09:41:52 +00:00
Nathan Sidwell
c8a209ca24 cp-tree.h (COMPARE_RELAXED): Rename to ...
* cp-tree.h (COMPARE_RELAXED): Rename to ...
	(COMPARE_DERIVED): ... here. Adjust comment.
	(resolve_typename_type_in_current_instantiation): Remove.
	(cp_tree_equal, comptypes): Return a bool.
	* cvt.c (convert_to_reference): Adjust comptypes call.
	* pt.c (template_args_equal, unify,): Adjust cp_tree_equal call.
	(resolve_typename_type_in_current_instantiation): Remove.
	* tree.c (cp_tree_equal): Return bool. Cope with TEMPLATE_DECLs and
	IDENTIFIER_NODEs. Abort if undeciderable. Adjust recursive
	calls. Refactor code.
	* typeck.c (comp_array_types): Return bool. Lose callback.
	parameter. Adjust cp_tree_equal calls.
	(comptypes): Return bool. Adjust strict handling. Remove relaxed
	enumeration and java type handling. Deal with typename types here.
	Adjust recursive and cp_tree_equals calls. Adjust base and derived
	checking.
	(comp_target_types): Remove unreachable code. Adjust
	same_or_base_type_p calls.
	(ptr_reasonably_similar): Adjust base and derived check.

	* typeck.c (maybe_warn_about_returning_address_of_local): Remove
	unused calculation.
	(check_return_expr): Adjust error messages.
	* cp-tree.def (SCOPE_REF): Correct comment.

From-SVN: r68155
2003-06-18 15:22:19 +00:00
Kaveh R. Ghazi
fad205ffba decl.c, [...]: Don't use the PTR macro.
cp:
	* cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR
	macro.

gcc:
	* bitmap.c, builtins.c, c-incpath.c, cgraph.c, config/frv/frv.c,
	config/mips/mips.c, cppfiles.c, cpphash.c, cppinit.c, cpplib.c,
	dwarf2out.c, dwarfout.c, except.c, expr.c, expr.h, fold-const.c,
	function.c, gcc.c, genoutput.c, gensupport.c, global.c,
	haifa-sched.c, hashtable.c, ifcvt.c, integrate.c, local-alloc.c,
	loop.c, mips-tdump.c, mips-tfile.c, mkdeps.c, protoize.c,
	read-rtl.c, recog.h, reload1.c, sbitmap.c, ssa-dce.c,
	stringpool.c, tlink.c, tree.c, varasm.c, varray.c: Don't use
	the PTR macro.

From-SVN: r68043
2003-06-16 21:41:10 +00:00
Nathanael Nerode
b57b79f767 * tree.c: Convert to ISO C.
From-SVN: r68040
2003-06-16 21:04:12 +00:00
Mark Mitchell
a5512a2fe2 re PR c++/11131 (Unrelated declaration removes inline flag from function)
PR c++/11131
	* tree.c (cp_cannot_inline_fn): Check for "inline" before
	instantiation.

From-SVN: r67783
2003-06-11 17:02:13 +00:00
Mark Mitchell
d58b7c2d5d re PR c++/11131 (Unrelated declaration removes inline flag from function)
PR c++/11131
	* tree-inline.c (inlinable_function_p): Call the language-specific
	hook early.

	PR c++/11131
	* cp-tree.h (template_for_substitution): Declare.
	* decl2.c (mark_used): Use it when figuring out whether or not a
	function is inline.
	* pt.c (template_for_substitution): Give it external linkage.
	* tree.c (cp_cannot_inline_tree_fn): Instantiate as early as
	possible.

	PR c++/11131
	* g++.dg/opt/template1.C: New test.

From-SVN: r67698
2003-06-10 07:19:57 +00:00
Kaveh R. Ghazi
e34d07f255 builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
	* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
	always use stdarg.
	* c-errors.c (pedwarn_c99): Likewise.
	* c-format.c (status_warning): Likewise.
	* c-semantics.c (build_stmt): Likewise.
	* calls.c (emit_library_call, emit_library_call_value): Likewise.
	* collect2.c (notice, fatal_perror, fatal, error): Likewise.
	* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
	* diagnostic.c (build_message_string, output_printf,
	output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
	fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
	error_with_decl, fnotice): Likewise.
	* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
	dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
	dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
	dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
	dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
	dw2_asm_output_encoded_addr_rtx): Likewise.
	* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
	* errors.c (warning, error, fatal, internal_error): Likewise.
	* final.c (output_operand_lossage, asm_fprintf): Likewise.
	* fix-header.c (fatal): Likewise.
	* gcc.c (fatal, error, notice): Likewise.
	* gcov.c (fnotice): Likewise.
	* genattrtab.c (attr_rtx, attr_printf): Likewise.
	* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
	* gensupport.c (message_with_line): Likewise.
	* mips-tfile.c (fatal, error): Likewise.
	* protoize.c (notice): Likewise.
	* ra-debug.c (ra_debug_msg): Likewise.
	* read-rtl.c (fatal_with_file_and_line): Likewise.
	* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
	* tree.c (build, build_nt, build_function_type_list): Likewise.

cp:
	* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
	libiberty VA_ macros, always use stdarg.
	* rtti.c (create_pseudo_type_info): Likewise.
	* tree.c (build_min_nt, build_min): Likewise.

From-SVN: r66919
2003-05-17 22:21:35 +00:00
Kaveh R. Ghazi
90ff44cfd6 cfgloopanal.c (test_for_iteration): Use string concatentation on HOST_WIDE_INT_PRINT_* format specifier to collapse...
gcc:
	* cfgloopanal.c (test_for_iteration): Use string concatentation on
	HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
	function calls into one.
	* dbxout.c (dbxout_symbol): Likewise.
	* defaults.h (ASM_OUTPUT_SIZE_DIRECTIVE): Likewise.
	* dwarf2asm.c (dw2_asm_output_data_uleb128,
	dw2_asm_output_data_sleb128): Likewise.
	* genrecog.c (debug_decision_2): Likewise.
	* loop.c (emit_prefetch_instructions): Likewise.
	* print-rtl.c (print_rtx): Likewise.
	* print-tree.c (print_node_brief, print_node): Likewise.
	* ra-debug.c (dump_igraph, dump_graph_cost,
	dump_static_insn_cost): Likewise.
	* ra-rewrite.c (dump_cost): Likewise.
	* sdbout.c (PUT_SDB_INT_VAL, PUT_SDB_SIZE): Likewise.
	* sreal.c (dump_sreal): Likewise.
	* unroll.c (unroll_loop, precondition_loop_p): Likewise.
	* varasm.c (assemble_vtable_entry): Likewise.

cp:
	* ptree.c (cxx_print_type, cxx_print_xnode): Use string
	concatentation on HOST_WIDE_INT_PRINT_* format specifier to
	collapse multiple function calls into one.
	* tree.c (debug_binfo): Likewise.

java:
	* parse.y (print_int_node): Use string concatentation on
	HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
	function calls into one.

From-SVN: r66900
2003-05-17 01:40:45 +00:00
Nathan Sidwell
d479d37f5e input.h (lineno): Rename to ...
* input.h (lineno): Rename to ...
	(input_line): ... here.
	* tree.h (lineno): Rename to ...
	(input_line): ... here.
	* scan.h (lineno): Rename to ...
	(input_line): ... here.
	* toplev.c (lineno): Rename to ...
	(input_line): ... here.
	(push_srcloc, pop_srcloc):  Rename lineno to input_line.
	* c-common.c (c_expand_start_cond, fname_decl): Likewise.
	* c-decl.c (poplevel, pop_label_level, lookup_label, lookup_tag,
	store_parm_decls, c_expand_body_1): Likewise.
	* c-errors.c (pedwarn_c99): Likewise.
	* c-format.c (status_warning): Likewise.
	* c-lex.c (fe_file_change, cb_def_pragma, c_lex): Likewise.
	* c-opts.c (c_common_post_options, c_common_parse_file): Likewise.
	* c-parse.in (save_filename, maybe_type_qual, ifc): Likwise.
	* c-semantics.c (finish_stmt_tree, build_stmt, emit_local_var,
	gentrtl_goto_stmt, genrtl_expr_stmt_value, genrtl_decl_stmt,
	genrtl_if_stmt, genrtl_while_stmt, genrtl_do_stmt,
	genrtl_return_stmt, genrtl_for_stmt, build_break_stmt,
	build_continue_stmt, genrtl_switch_stmt, genrtl_asm_stmt,
	prep_stmt, find_reachable_label, expand_unreachable_stmt): Likewise.
	* coverage.c (create_coverage): Likewise.
	* diagnostic.c (pedwarn, sorry, error, fatal_error,
	internal_error, warning, diagnostic_report_current_module,
	inform): Likewise.
	* expr.c (expand_expr): Likewise.
	* integrate.c (expand_inline_function,
	output_inline_function): Likewise.
	* rtl-error.c (file_and_line_for_asm): Likewise.
	* tree-inline.c (find_alloca_call, find_builtin_longjmp_call,
	walk_tree): Likewise.
	* tree.c (make_node): Likewise.
	* ada, cp, f, java, objc, treelang: Likewise.

	ada
	* trans.c (build_unit_elab, set_lineno): Rename lineno to
	input_line.
	* utils.c (pushdecl, create_label_decl, begin_subprog_body,
	end_subprog_body): Likewise.
	* utils2.c (build_call_raise): Likewise.

	cp
	* class.c (finish_struct): Rename lineno to input_line.
	* decl.c (push_binding_level, pop_binding_level,
	suspend_binding_level, resume_binding_level, make_label_decl,
	use_label, start_function): Likewise.
	* decl2.c (warn_if_unknown_interface,
	start_static_initialization_or_destruction,
	generate_ctor_or_dtor_function, finish_file): Likewise.
	* error.c (cp_line_of, print_instantiation_full_context,
	print_instantiation_context): Likewise.
	* except.c (check_handlers_1, check_handlers): Likewise.
	* init.c (create_temporary_var): Likewise.
	* method.c (use_thunk, synthesize_method): Likewise.
	* parser.c (cp_lexer_set_source_position_from_token,
	cp_lexer_get_preprocessor_token): Likewise.
	* pt.c (push_tinst_level, pop_tinst_level,
	tsubst_friend_function, instantiate_class_template, tsubst_decl,
	tsubst, tsubst_expr, instantiate_decl): Likewise.
	* semantics.c (genrtl_try_block, finish_label_stmt,
	begin_class_definition, expand_body,
	genrtl_finish_function): Likewise.
	* tree.c (build_min_nt, build_min): Likewise.

	f
	* ansify.c (die_unless): Rename lineno to input_line.
	* com.c (ffecom_subscript_check_, ffecom_do_entry_,
	ffecom_gen_sfuncdef_, ffecom_start_progunit_,
	ffecom_sym_transform_, ffecom_sym_transform_assign_,
	bison_rule_pushlevel_, bison_rule_compstmt_, finish_function,
	store_parm_decls): Likewise.
	* intrin.c (ffeintrin_fulfill_generic): Likewise.
	* lex.c (ffelex_hash_, ffelex_include_, ffelex_next_line_,
	ffelex_file_fixed, ffelex_file_free): Likewise.
	* std.c (ffestd_exec_end): Likewise.
	* ste.c (ffeste_emit_line_note_, ffeste_start_block_,
	ffeste_start_stmt_): Likewise.
	* ste.h (ffeste_filelinenum, ffeste_set_line): Likewise.

	java
	* lex.h (lineno): Rename to ...
	(input_line): ... here
	* parse-scan.y (lineno): Rename to ...
	(input_line): ... here.
	(reset_report): Rename lineno to input_line.
	* check-init.c (check_init): Likewise.
	* class.c (push_class): Likewise.
	* decl.c (complete_start_java_method, end_java_method): Likewise.
	* expr.c (expand_byte_code): Likewise.
	* jcf-parse.c (give_name_to_class, parse_class_file): Likewise.
	* jcf-write.c (generate_bytecode_insns): Likewise.
	* lex.c (java_init_lex, java_allocate_new_line,
	do_java_lex): Likewise.
	* parse.h (YYNOT_TWICE): Likewise.
	* parse.y (empty_statement, expression_statement,
	java_pop_parser_context, java_parser_context_save_global,
	yyerror, register_fields, method_header, safe_layout_class,
	find_in_imports_on_demand, create_artificial_method,
	source_end_java_method, start_complete_expand_method,
	build_thisn_assign, java_complete_lhs,
	maybe_absorb_scoping_block): Likewise.

	objc
	* objc-act.c (objc_init): Rename lineno to input_line.
	(build_module_descriptor, build_selector_translation_table,
	build_protocol_template, build_method_prototype_list_template,
	build_category_template, build_selector_table,
	build_class_template, build_super_template, build_ivar_template,
	build_ivar_list_template, build_method_list_template,
	build_method_template, add_instance_variable): Likewise.

	treelang
	* tree1.c (treelang_init): Rename lineno to input_line.

From-SVN: r66333
2003-05-01 16:13:36 +00:00
Ziemowit Laski
e623703138 tree.c (build_cplus_array_type_1): Do not call uses_template_parms() on a NULL index_type.
2003-04-14  Ziemowit Laski  <zlaski@apple.com>

	* tree.c (build_cplus_array_type_1): Do not call
	uses_template_parms() on a NULL index_type.

From-SVN: r65613
2003-04-15 00:34:11 +00:00
Steven Bosscher
009ed91036 c-common.h (lang_statement_code_p): Remove declaration.
2003-04-09  Steven Bosscher  <steven@gcc.gnu.org>

	* c-common.h (lang_statement_code_p): Remove declaration.
	(statement_code_p): Ditto.
	(c_common_stmt_codes): Define; list of c-common statement codes.
	(statement_code_p): New extern declaration.
	(STATEMENT_CODE_P): Define.
	(INIT_STATEMENT_CODES): Define.
	* c-common.c (statement_code_p): Kill the function, declare
	as an array of bools instead.
	(lang_statement_code_p): Remove.
	(walk_stmt_tree): Use STATEMENT_CODE_P not statement_code_p.
	(c_safe_from_p): Ditto.
	* c-objc-common.c (c_objc_common_init): Use INIT_STATEMENT_CODES
	to initialize the statement_code_p array.
	* tree-inline.c (walk_tree): Use STATEMENT_CODE_P instead of
	statement_code_p.
	(copy_tree_r): Ditto.
	* cp/cp-tree.h (cp_stmt_codes): Define; list of C++ specific
	statement tree codes.
	* cp/lex.c (cxx_init): Add missing print line break.  Use
	INIT_STATEMENT_CODES to initialize the statement_code_p array.
	* cp/parser.c (cp_parser_statement): Use STATEMENT_CODE_P
	instead of statement_code_p.
	* cp/pt.c (tsubst_expr): Ditto.
	* cp/tree.c (verify_stmt_tree_r): Ditto.
	(cp_statement_code_p): Remove.
	(init_tree): Don't set lang_statement_code_p, it's gone.

From-SVN: r65422
2003-04-10 08:07:13 +00:00
Zack Weinberg
d78e771d46 tree.c (tree_size): For all 'c' and 'x' nodes...
* tree.c (tree_size): For all 'c' and 'x' nodes, look directly
        at the sizes of the relevant structures, rather than relying
        on TREE_CODE_LENGTH.  Call lang_hooks.tree_size to get the
        sizes of any such we don't know about.  Use
        lang_hooks.identifier_size for IDENTIFIER_NODE.

        (initializer_zerop): Use CONSTRUCTOR_ELTS.
        * tree.def: Update commentary.  Make fourth element of
        the definition for all 'c' and 'x' nodes zero.

        * langhooks.h: New hook, tree_size / LANG_HOOKS_TREE_SIZE.
        * langhooks-def.h: Update to match.
        * langhooks.c: New default, lhd_tree_size.

        * c-common.def (SRCLOC): Kill.
        * c-pretty-print.c (pp_c_postfix_expression [case SRCLOC]):
        Remove entirely - was already #if-ed out.

ada:
        * ada-tree.def: Make fourth element for GNAT_LOOP_ID zero.
        * misc.c (gnat_tree_size): New function.
        (LANG_HOOKS_TREE_SIZE): Override.
cp:
        * cp-tree.def: Make fourth element for all 'c' and 'x' nodes zero.
        * cp-lang.c (cp_tree_size): New function.
        (LANG_HOOKS_TREE_SIZE): Override.

        * cp-tree.h (SOURCE_LOCUS, SRCLOC_FILE, SRCLOC_LINE, struct
        tree_srcloc, TS_CP_COMMON, TS_CP_SRCLOC): Kill.
        (union lang_tree_node): Remove common and srcloc members.
        (build_srcloc_here): Don't prototype.
        * decl.c (cp_tree_node_structure): Kill SRCLOC case.
        * pt.c (pending_templates): Correct comment.
        * tree.c (build_srcloc, build_srcloc_here): Kill.

From-SVN: r65323
2003-04-07 06:03:17 +00:00
Roger Sayle
6a87d63407 c-cppbuiltin.c (builtin_define_with_value_n): Fix whitespace.
* c-cppbuiltin.c (builtin_define_with_value_n): Fix whitespace.
	* c-typeck.c (c_tree_expr_nonnegative_p): Likewise.
	* cfgbuild.c (find_many_sub_basic_blocks): Likewise.
	(find_sub_basic_blocks): Likewise.
	* cgraphunit.c (cgraph_expand_functions): Likewise.
	* dwarf2out.c (prune_unused_types): Likewise.
	* expr.c (store_field): Likewise.
	* genextract.c (print_path): Likewise.
	* haifa-sched.c (schedule_insn): Likewise.
	* lcm.c (compute_antinout_edge): Likewise.
	* loop-unroll.c (decide_peel_once_rolling): Likewise.
	* ra-colorize.c (ra_colorize_free_all): Likewise.
	* ra-debug.c (dump_igraph): Likewise.
	(debug_hard_reg_set): Likewise.
	* reg-stack.c (reg_to_stack): Likewise.
	* rtlanal.c (refers_to_regno_p): Likewise.
	* tracer.c (layout_superblocks): Likewise.

	* cp/tree.c (count_functions): Fix whitespace.

	* f/ste.c (ffeste_R810): Fix whitespace.

From-SVN: r64402
2003-03-15 13:43:33 +00:00
Mark Mitchell
aa6e8ed33a call.c (reference_binding): Remove REF_IS_VAR parameter.
* call.c (reference_binding): Remove REF_IS_VAR parameter.
	(implicit_conversion): Adjust call to reference_binding.
	(make_temporary_var_for_ref_to_type): Add TYPE parameter.
	(initialize_reference): Adjust handling for references bound to
	rvalues.
	* cp-tree.h (make_temporary_var_for_ref_to_temp): Change
	prototype.
	(real_non_cast_lvalue_p): New function.
	* cvt.c (build_up_reference): Adjust use of
	make_temporary_var_for_ref_to_temp.
	* tree.c (real_non_cast_lvalue_p): New function.

	* g++.dg/init/ref4.C: New test.

From-SVN: r63949
2003-03-07 21:19:38 +00:00
Nathan Sidwell
dbbf88d1b8 Change base class access representation.
* tree.h (TREE_VIA_PUBLIC, TREE_VIA_PROTECTED,
	TREE_VIA_PRIVATE): Remove.
	(BINFO_BASEACCESSES): New binfo elt.
	(BINFO_BASEACCESS): New accessor.
	(BINFO_ELTS): Increase.
	(TI_ACCESS_PUBLIC, TI_ACCESS_PROTECTED, TI_ACCESS_PRIVATE): New.
	(access_public_node, access_protected_node,
	access_private_node): New global nodes.
	* tree.c (build_common_tree_nodes_2): Initialize access nodes.
	* dbxout.c (dbxout_type): Adjust.
	* dwarf2out.c (gen_inheritance_die): Add access parameter.
	(gen_member_die): Adjust.
	* dwarfout.c (output_inheritance_die): ARG is array of two trees.
	(output_type): Adjust.
	* tree-dump.c (dequeue_and_dump): Adjust binfo dumping.

	Change base class access representation. Share virtual base
	binfos.
	* cp/call.c (build_special_member_call): Remove binfo_for_vbase
	call.
	* cp/class.c (build_base_path): Likewise.
	(build_primary_vtable): Adjust BINFO_NEW_VTABLE_MARKED use.
	(build_secondary_vtable): Remove FOR_TYPE arg. Adjust.
	(make_new_vtable): Adjust.
	(force_canonical_binfo_r): Delete.
	(force_canonical_binfo): Delete.
	(mark_primary_virtual_base): Delete.
	(dfs_unshared_virtual_bases): Delete.
	(mark_primary_bases): Adjust.
	(maybe_warn_about_overly_private_class): Adjust.
	(dfs_base_derived_from): Delete.
	(base_derived_from): Follow the inheritance chain.
	(struct find_final_overrider_data): Add vpath member.
	(dfs_find_final_overrider): Adjust.
	(dfs_find_final_overrider_q, dfs_find_final_overrider_post): New.
	(find_final_overrider): Adjust.
	(update_vtable_entry_for_fn): Adjust.
	(modify_all_vtables): Adjust.
	(walk_subobject_offsets): Adjust.
	(layout_nonempty_base_or_field): Adjust.
	(layout_empty_base): Remove last parameter. Adjust.
	(build_base_field): Adjust.
	(build_base_fields): Adjust.
	(propagate_binfo_offsets): Remove last parameter. Adjust.
	(dfs_set_offset_for_unshared_vbases): Delete.
	(layout_virtual_bases): Adjust.
	(finish_struct_1): Adjust.
	(init_class_processing): Don't init access nodes.
	(dfs_get_primary_binfo): Delete.
	(get_primary_binfo): Adjust.
	(dump_class_hierarchy_r): Remove most derived arg, add IGO
	parameter. Adjust.
	(dump_class_hierarchy): Adjust.
	(finish_vtbls): Adjust.
	(get_original_base): Delete.
	(build_vtt_inits): Adjust.
	(dfs_build_secondary_vptr_vtt_inits): Adjust.
	(dfs_ctor_vtable_bases_queue_p): Adjust.
	(build_ctor_vtbl_group): Adjust.
	(dfs_accumulate_vtbl_inits): Adjust.
	(build_vtbl_initializer): Adjust.
	(build_vbase_offset_vtbl_entries): Adjust.
	(add_vcall_offset_vtbl_entries_1): Adjust.
	* cp/cp-tree.h (CPTI_ACCESS_*): Remove.
	(access_*_node): Remove.
	(CANONICAL_BINFO): Delete.
	(BINFO_UNSHARED_MARKED): Remove.
	(BINFO_MARKED): Set LANG_FLAG_0 directly.
	(SET_BINFO_MARKED, CLEAR_BINFO_MARKED): Delete.
	(BINFO_VTABLE_PATH_MARKED): Set LANG_FLAG_3 directly.
	(SET_BINFO_VTABLE_PATH_MARKED, CLEAR_BINFO_VTABLE_PATH_MARKED):
	Delete.
	(BINFO_NEW_VTABLE_MARKED): Set LANG_FLAG_4 directly.
	(SET_BINFO_NEW_VTABLE_MARKED): Adjust.
	(SET_BINFO_PUSHDECLS_MARKED, CLEAR_BINFO_PUSHDECLS_MARKED):
	Delete.
	(BINFO_DEPENDENT_BASE_P): New.
	(dfs_walk, dfs_walk_real): Queue function takes derived binfo and
	index.
	(markedp, unmarkedp): Adjust.
	(dfs_unmarked_real_bases_queue_p, dfs_marked_real_bases_queue_p,
	dfs_skip_vbases, marked_vtable_pathp, unmarked_vtable_pathp,
	find_vbase_instance, binfo_for_vbase): Delete.
	(copied_binfo, original_binfo): Declare.
	(finish_base_specifier): Add virtual_p arg.
	(unshare_base_binfos): Delete.
	(copy_base_binfos): Declare.
	(reverse_path): Delete.
	* cp/decl.c (xref_basetypes): Access and virtuality passed
	differently. Don't copy direct base binfos here. Call
	copy_base_binfos.
	* cp/init.c (dfs_initialize_vtbl_ptrs): Adjust.
	(initialize_vtbl_ptrs): Adjust.
	(expand_member_init): Adjust.
	* cp/parser.c (cp_parser_base_specifier): Adjust.
	* cp/pt.c (instantiate_class_template): Adjust.
	(get_template_base_recursive): Adjust.
	* cp/rtti.c (get_pseudo_ti_init): Adjust.
	(get_pseudo_ti_desc): Adjust.
	* cp/tree.c (unshare_base_binfos): Rename to ...
	(copy_base_binfos): ... here, reimplement.
	(make_binfo): Set BINFO_DEPENDENT_BASE_P.
	(reverse_path): Remove.
	* cp/typeck.c (get_delta_difference): Adjust error messages.
	* cp/semantics.c (finish_base_specifier): Add virtual arg, adjust.
	* cp/search.c (lookup_base_r): Adjust.
	(dynamic_cast_base_recurse): Adjust.
	(canonical_binfo): Remove.
	(dfs_canonical_queue): Remove.
	(dfs_assert_unmarked_p): Remove.
	(assert_canonical_unmarked): Remove.
	(shared_marked_p, shared_unmarked_p): Remove.
	(BINFO_ACCESS, SET_BINFO_ACCESS): Use TREE_PUBLIC & TREE_PRIVATE.
	(dfs_access_in_type): Adjust.
	(access_in_type): Adjust.
	(dfs_accessible_queue_p): Adjust.
	(dfs_accessible_p): Adjust.
	(is_subobject_of_p_1, is_subobject_of_p): Remove.
	(struct lookup_field_info): Remove from_dep_base_p field.
	(lookup_field_queue_p): Adjust, test BINFO_DEPENDENT_BASE_P.
	(lookup_field_r): Remove dependent base code.
	(lookup_member): Likewise.
	(dfs_walk, dfs_walk_real): Add access arg to queue fn.
	(dfs_unmarked_real_bases_queue_p): Remove.
	(dfs_marked_real_bases_queue_p): Remove.
	(dfs_skip_vbases): Remove.
	(dfs_get_pure_virtuals): Adjust.
	(markedp, unmarkedp): Adjust.
	(marked_vtable_pathp, unmarked_vtable_pathp): Remove.
	(marked_pushdecls_p, unmarked_pushdecls_p): Adjust.
	(dfs_unmark): Adjust.
	(dfs_get_vbase_types):Remove.
	(dfs_build_inheritance_graph_order): Remove.
	(get_vbase_types): Remove
	(dfs_find_vbase_instance): Remove.
	(find_vbase_instance): Remove.
	(dfs_debug_unmarkedp): Adjust.
	(dependent_base_p): Remove.
	(dfs_push_type_decls): Adjust.
	(dfs_push_decls): Adjust.
	(dfs_no_overlap_yet): Adjust.
	(copied_binfo): New function.
	(original_binfo): New function.
	(binfo_for_vbase): Remove.

	Change base class access representation.
	* java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC.
	(add_interface_do): Likewise.

From-SVN: r63172
2003-02-20 17:51:46 +00:00
Nathan Sidwell
1824b90d08 tree.h (TYPE_BINFO_SIZE, [...]): Remove.
* tree.h (TYPE_BINFO_SIZE, TYPE_BINFO_SIZE_UNIT): Remove.
	(BINFO_ELTS): New #define.
	* stor-layout.c (finalize_record_size): Don't set them.
	* cp/cp-tree.h (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX,
	BINFO_PRIMARY_BASE_OF): Use BINFO_ELTS.
	(BINFO_LANG_ELTS): New #define.
	* cp/tree.c (make_binfo): Use BINFO_LANG_ELTS.
	* java/class.c (make_class): Use BINFO_ELTS.
	(set_super_info): Likewse.
	(add_interface_do): Likewise.
	* objc/objc-act.c (start_class): Use BINFO_ELTS.

From-SVN: r62180
2003-01-31 14:46:55 +00:00
Mark Mitchell
5dae1114bb re PR c++/9294 ([new parser] parser enters infinite loop)
PR c++/9294
	* cp-tree.def (BASELINK): Make it class 'x', not class 'e'.
	* cp-tree.h (BASELINK_BINFO): Adjust.
	(BASELINK_FUNCTIONS): Likewise.
	(BASELINK_ACCESS_BINFO): Likewise.
	(tree_baselink): New structure.
	(cp_tree_node_structure_enum): Add TS_CP_BASELINK.
	(lang_tree_node): Add baselink.
	* decl.c (cp_tree_node_structure): Add BASELINK case.
	* search.c (build_baselink): Adjust.
	* tree.c (cp_walk_subtrees): Add BASELINK case.  Remove BASELINK_P
	test from TREE_LIST case.

	PR c++/9272
	* parser.c (cp_parser_constructor_declarator_p): Do not assume
	that a constructor cannot be declared outside of its own class.

	* parser.c (cp_parser_resolve_typename_type): If the scope cannot
	be resolved, neither can the qualified name.

	* rtti.c (get_pseudo_ti_desc): Fix thinko.

	PR c++/9272
	* g++.dg/parse/ctor1.C: New test.

	PR c++/9294:
	* g++.dg/parse/qualified1.C: New test.

	* g++.dg/parse/typename3.C: New test.

From-SVN: r61456
2003-01-17 20:14:44 +00:00
Geoffrey Keating
17211ab553 Merge from pch-branch.
From-SVN: r61136
2003-01-10 02:22:34 +00:00
Nathanael Nerode
3f7617e42a * tree.c: Delete bogus #if 0 code.
From-SVN: r61020
2003-01-07 21:19:05 +00:00
Jason Merrill
4e8dca1c3a fold-const.c (fold): Avoid NOP_EXPRs better.
* fold-const.c (fold) [COND_EXPR]: Avoid NOP_EXPRs better.

        * integrate.c (copy_decl_for_inlining): Don't clear the rtl for
        static/external decls.
cp/
        * call.c (build_conditional_expr): Stabilize lvalues properly.
        * cvt.c (ocp_convert): Don't build NOP_EXPRs of class type.
        * tree.c (lvalue_p_1): Don't allow sloppy NOP_EXPRs as lvalues.
        Don't allow CALL_EXPR or VA_ARG_EXPR, either.

        * call.c (convert_like_real): Call decl_constant_value for an
        IDENTITY_CONV even if there are no more conversions.

        * cvt.c (build_up_reference): Don't push unnamed temps.

        * decl2.c (do_namespace_alias): Namespace aliases are DECL_EXTERNAL.

        * dump.c (cp_dump_tree): Don't try to dump class-specific fields
        for a backend struct.

        * except.c (wrap_cleanups_r, build_throw): Make
        MUST_NOT_THROW_EXPRs void.
        * init.c (expand_default_init): Update to handle MUST_NOT_THROW_EXPR.

        * init.c (build_vec_delete_1): Pre-evaluate the base address.

        * init.c (get_temp_regvar): Simplify logic.

        * tree.c (cp_copy_res_decl_for_inlining): Only do debug tweaks if
        our replacement is a decl.

From-SVN: r60851
2003-01-03 15:04:38 -05:00
Nathan Sidwell
317583376d PR c++/45, c++/3784
cp:
	PR c++/45, c++/3784
	* tree.c (cp_tree_equal, TEMPLATE_PARM_INDEX): The types must be
	the same too.
testsuite:
	* g++.dg/template/ntp2.C: New test.

From-SVN: r60839
2003-01-03 17:21:14 +00:00
Steven Bosscher
f5adbb8d5c call.c, [...]: Replace "GNU CC" with "GCC" in the copyright header.
* call.c, class.c, cp-lang.c, cp-tree.h, cvt.c, dump.c, error.c,
	  except.c, expr.c friend.c, g++spec.c, init.c, lang-options.h,
	  lang-specs.h, lex.c, mangle.c, method.c, optimize.c, parser.c,
	  pt.c, ptree.c, repo.c, rtti.c, search.c, semantics.c, tree.c,
	  typeck.c, typeck2.c: Replace "GNU CC" with "GCC" in the
	  copyright header.
	* lex.h: parse.y is dead, so don't mention it.  Also replace the
	  copyright header with the default GNU copyright header.

From-SVN: r60738
2003-01-01 11:58:58 +00:00
Mark Mitchell
92bc132346 cp-tree.def (RETURN_INIT): Remove.
* cp-tree.def (RETURN_INIT): Remove.
	* cp-tree.h (DECL_IN_MEMORY_P): Remove.
	(scope_kind): Add sk_block, sk_try, sk_catch, sk_for.
	(note_level_for_for): Remove.
	(note_level_for_try): Likewise.
	(note_level_for_catch): Likewise.
	(finish_named_return_value): Likewise.
	(do_pushlevel): Change prototype.
	(pending_lang_change): Remove.
	* decl.c (begin_scope): Handle sk_block, sk_try, sk_catch,
	sk_for.
	(note_level_for_for): Remove.
	(note_level_for_try): Likewise.
	(note_level_for_catch): Likewise.
	(maybe_inject_for_scope_var): Remove use of DECL_IN_MEMORY_P.
	* parser.c (cp_parser_context_free_list): Make it "deletable".
	(cp_parser_template_argument): Remove misleading comment.
	* pt.c (tsubst_expr): Remove RETURN_INIT code.
	* semantics.c (genrtl_named_return_value): Remove.
	(do_pushlevel): Take a scope kind as an argument.
	(begin_if_stmt): Adjust.
	(begin_while_stmt): Likewise.
	(begin_for_stmt): Likewise.
	(finish_for_init_stmt): Likewise.
	(begin_switch_stmt): Likewise.
	(begin_handler): Likewise.
	(begin_compound_stmt): Likewise.
	(finish_named_return_value): Remove.
	(cp_expand_stmt): Remove RETURN_INIT case.
	* tree.c (cp_statement_code_p): Remove RETURN_INIT case.

	* g++.dg/init/array9.C: New test.

From-SVN: r60707
2002-12-31 18:58:09 +00:00
Mark Mitchell
a723baf1eb Make-lang.in (po-generated): Remove parse.c.
* Make-lang.in (po-generated): Remove parse.c.
	(CXX_OBJS): Remove parse.o and spew.o.  Add parser.o.
	($(srcdir)/cp/parse.h): Remove target.
	($(srcdir)/cp/parse.c): Likewise.
	(gt-cp-parse.h): Likewise.
	(gt-cp-parser.h): New target.
	(c++.distclean): Do not remove parse.output.
	(c++.maintainer-clean): Do not remove parse.c or parse.h.
	(cp/spew.o): Remove target.
	(cp/lex.o): Adjust dependencies.
	(cp/pt.o): Likewise.
	(cp/parse.o): Likewise.
	(cp/TAGS): Do not mention parse.c.
	(cp/parser.o): New target.
	* NEWS: Mention the new parser.
	* call.c (build_scoped_method_call): Simplify.
	(build_method_call): Likewise.
	(build_new_function_call): Adjust calls to add_function_candidate
	and add_template_candidate.
	(build_new_op): Improve handling of erroroneous operands.
	(convert_default_arg): Remove circular argument processing.
	(name_as_c_string): New function.
	(build_new_method_call): Use it.
	(perform_implicit_conversion): Use error_operand_p.
	* class.c (finish_struct_anon): Use constructor_name_p.
	(check_field_decls): Likewise.
	(pop_nested_class): Use OVL_NEXT, not OVL_CHAIN.
	(resolve_address_of_overloaded_function): Likewise.
	(instantiate_type): Tweak pointer-to-member handling.
	(get_primary_binfo): Remove incorrect assertion.
	* config-lang.in (gtfiles): Add parser.c, remove parse.c.
	* cp-tree.h (DEFARG_TOKENS): New macro.
	(default_arg): New structure.
	(cp_tree_node_structure_enum): Add TS_CP_DEFAULT_ARG.
	(lang_tree_node): Add default_arg.
	(cp_tree_index): Add CPTI_TYPE_INFO_REF_TYPE.
	(type_info_ref_type): New macro.
	(saved_scope): Make processing_explicit_instantiation a boolean.
	(check_access): New field.
	(unparsed_text): Remove.
	(language_function): Remove unparsed_inlines.
	(error_operand_p): New macro.
	(lang_decl): Adjust pending_inline_info.
	(DEFARG_POINTER): Remove.
	(tag_types): Add typenames.
	(lookup_ualified_name): Declare.
	(lookup_name_real): Likewise.
	(shadow_tag): Adjust prototype.
	(get_scope_of_declarator): Declare it.
	(process_next_inline): Remove it.
	(check_for_missing_semicolon): Likewise.
	(maybe_get_template_decl_from_type_decl): Declare it.
	(finish_label_stmt): Adjust prototype.
	(finish_non_static_data_meber): Declare it.
	(finish_pseudo_destructor_call_expr): Rename to ...
	(finish_pseudo_destructor_expr): ... this.
	(finish_compound_literal): Declare it.
	(begin_inline_definitions): Remove it.
	(init_spew): Remove.
	(peekyylex): Likewise.
	(arbitrate_lookup): Likewise.
	(frob_opname): Likewise.
	(maybe_snarf_defarg): Likewise.
	(add_defarg_fn): Likewise.
	(do_pending_defargs): Likewise.
	(done_pending_defargs): Likewise.
	(unprocessed_defarg_fn): Likewise.
	(replace_defarg): Likewise.
	(end_input): Likewise.
	(get_overloaded_fn): Likewise.
	* cvt.c (convert_to_reference): Improve error handling.
	* decl.c (lookup_name_real): Do not declare it static.
	(maybe_push_to_top_level): Set check_access.
	(identifier_type_value): Adjust call to lookup_name_real.
	(lookup_qualified_name): New method.
	(lookup_name_real): Remove special-case parsing code.
	(lookup_name-nonclass): Adjust call to lookup_name_real.
	(lookup_name_namespace_only): Likewise.
	(lookup_name): Likewise.
	(check_tag_decl): Return the type declared.
	(shadow_tag): Likewise.
	(register_dtor_fn): Tweak check_access.
	(grokfndecl): Use constructor_name_p.
	(get_scope_of_declarator): New function.
	(grokdeclarator): Obscure tweaks for slightly different declarator
	representations.
	(start_method): Return error_mark_node to indicate failure.
	(cp_tree_node_structure_enum): Use TS_CP_DEFAULT_ARG for DEFAULT_ARGs.
	* decl2.c (constructor_name_full): Simplify.
	(constructor_name): Use it.
	(build_expr_from_tree): Adjust for changes to do new parser.
	(push_scope): Improve robustness.
	(validate_nonmember_using_decl): Process declarations, not names.
	(do_class_using_decl): Likewise.
	(handle_class_head): Do not mess with CLASSTYPE_DECLARED_CLASS
	here.
	* error.c (dump_expr): Handle IDENTIFIER_NODEs and BASELINKs.
	* expr.c (cxx_expand_expr): Handle BASELINKs.
	* init.c (member_init_ok_or_else): Issue more errors.
	(build_offset_ref): Tweak handling of FUNCTION_DECLs.
	* lex.c: Do not include parse.h.
	(yypring): Do not declare.
	(yylval): Likewise.
	(make_reference_declarator): Remove error-generating code.
	(rid_to_yy): Remove.
	(cxx_init): Do not call init_spew.
	(yypring): Remove.
	(check_for_missing_semicolon): Remove.
	* lex.h (got_scope): Remove.
	(got_object): Remove.
	* method.c (hack_identifier): Use finish_non_static_data_member.
	(implicitly_declare_fn): Adjust use of constructor_name.
	* parser.c: New file.
	* pt.c (parse.h): Do not include it.
	(maybe_get_template_decl_from_template): Do not declare it.
	(finish_member_template_decl): Tweak.
	(begin_explicit_instantiation): Adjust for
	processing_explicit_instantiation being boolean.
	(end_explicit_instantiation): Likewise.
	(maybe_process_partial_specialization): Tighten specialization
	test.
	(retrieve_local_specialization): Adjust ue of hash table.
	(eq_local_specializations): New function.
	(register_local_specialization): Likewise.
	(push_template_decl_real): Remove unnecessary test.
	(maybe_get_template_decl_from_type_decl): Don't make it static.
	(for_each_template_parm_r): Handle TYPEOF_TYPE.
	(tsubst_copy): Use retrieive_local_specialization to handle
	PARM_DECL.  Adjust handling of CONST_DECLs.  Handle BASELINKs.
	Handle COMPONENT_REFs with pseudo-destructor-expressions.
	Simplify handling of CALL_EXPR and METHOD_CALL_EXPR.
	(tsubst_expr): Pass decls, not names, to do_local_using_decl.
	(unify): Tweak handling of CONST_DECLs.
	(regenerate_decl_from_template): Use push_nested_class.
	(template_for_substitution): New funciton.
	(instantiate_decl): Use it.  Register parameters as local
	specializations.
	* rtti.c (init_rtti_processing): Set type_info_ref_type.
	(build_typeid): Use it.
	(get_typeid): Likeise.
	* search.c (accessible_p): Use check_access, not
	flag_access_control.
	(adjust_result_of_qualified_name_lookup): Pay attention to the
	context_class.
	* semantics.c (finish_asm_stmt): Adjust error handling.
	(finish_label_stmt): Return the statement.
	(finish_non_static_data_member): New function.
	(finish_class_expr): Handle BASELINKs.
	(finish_call_expr): Handle PSEUDO_DTOR_EXPR.
	(finish_object_call_expr): Simplify handling during templates.
	(finish_pseudo_destructor_call_expr): Rename to ...
	(finish_pseudo_dtor_expr): ... this.
	(finish_compound_literal): New function.
	(begin_inline_definitions): Remove.
	(finish_sizeof): Remove special template handling.
	* spew.c: Do not include parse.h.
	* tree.c (get_overloaded_fn): Remove.
	* typeck.c (build_class_member_access_expr): Handle
	PSEUDO_DTOR_EXPR.  Adjust handling of static member functions.
	(lookup_destructor): New function.
	(finish_class_member_access_expr): Use it.
	(convert_arguments): Simplify.
	(build_unary_op): Handle BASELINKs.

From-SVN: r60560
2002-12-28 08:03:42 +00:00
Zack Weinberg
4977bab6ed Merge basic-improvements-branch to trunk
From-SVN: r60174
2002-12-16 18:23:00 +00:00
Mark Mitchell
29fae15c80 tree.c (cp_build_qualified_type_real): Correct handling of array types.
* tree.c (cp_build_qualified_type_real): Correct handling of
	array types.

From-SVN: r59499
2002-11-26 08:11:33 +00:00
Mark Mitchell
2003cd3794 empty11.C: New test.
* testsuite/g++.dg/abi/empty11.C: New test.
	* testsuite/g++.dg/rtti/cv1.C: New test.

	* tree.c (cp_build_qualified_type_real): Correct handling of
	array types.
	* class.c (walk_subobject_offsets): Fix thinko.
	(build_base_field): Record offsets of empty bases in primary
	virtual bases.
	(layout_class_type): Record offsets of empty bases in fields.

From-SVN: r59497
2002-11-26 07:20:13 +00:00
Zack Weinberg
8bcefb43cc langhooks.h (struct lang_hooks_for_tree_inlining): Add var_mod_type_p.
* langhooks.h (struct lang_hooks_for_tree_inlining): Add
	var_mod_type_p.
	* langhooks-def.h: Default for tree_inlining.var_mod_type_p is
	hook_tree_bool_false.

	* tree.c (variably_modified_type_p): Moved here from
	cp/tree.c.  Use lang_hooks.tree_inlining.var_mod_type_p for
	language-specific cases.  Due to this, must weaken some 'if
	and only if' checks to merely 'if'.
	* tree.h: Prototype variably_modified_type_p.

	* tree-inline.c (walk_tree): #undef WALK_SUBTREE_TAIL at end.

cp:
	* cp-lang.c (cp_var_mod_type_p): New: C++ hook for
	variably_modified_type_p.
	* cp-tree.h: Remove prototype of variably_modified_type_p.
	* tree.c (variably_modified_type_p): Remove; now implemented
	in language-independent code.

From-SVN: r58460
2002-10-23 17:13:18 +00:00
Mark Mitchell
dac45b5c09 re PR c++/5661 (Gcc 3.0.3 Seg faults compiling bad code)
PR c++/5661
	* cp-tree.h (variably_modified_type_p): New function.
	(grokdeclarator) Tighten check for variably modified types as
	fields.
	* pt.c (convert_template_argument): Do not allow variably modified
	types as template arguments.
	* tree.c (variably_modified_type_p): New function.

	PR c++/5661
	* g++.dg/ext/vlm1.C: New test.
	* g++.dg/ext/vlm2.C: Likewise.

From-SVN: r58060
2002-10-11 19:55:21 +00:00
Nathan Sidwell
5a9a196102 tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also overloaded.
cp:
	* tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also
	overloaded.
testsuite:
	* g++.dg/overload/member1.C: New test.

From-SVN: r57662
2002-09-30 19:33:06 +00:00
Mark Mitchell
17bbb839f1 store-layout.c (finish_record_layout): Add free_p parameter.
* store-layout.c (finish_record_layout): Add free_p parameter.
	(layout_type): Pass it.
	* tree.h (finish_record_layout): Update prototype.

	* class.c (walk_subobject_offsets): Correct the calculation of
	offsets for virtual bases.  Correct the counting of array
	elements.
	(layout_nonempty_base_or_field): Simplify.  Correct the
	calculation of offsets to be propagated through the binfo
	hierarchy.
	(build_base_field): Avoid creating a FIELD_DECL for empty bases.
	Add the FIELD_DECL to TYPE_FIELDS.
	(build_base_fields): Adjust accordingly.
	(layout_virtual_bases): Use build_base_field.
	(end_of_class): Return a tree, not an integer.
	(warn_about_ambiguous_direct_bases): Rename to ...
	(warn_about_ambiguous_bases): ... this.
	(include_empty_classes): New function.
	(layout_class_type): Create an alternative version of the type to
	be used when as a base class type.  Do not call
	finish_record_layout until we are done laying out the class.
	* cp-tree.h (lang_type_class): Remove size, size_unit.  Add
	as_base.
	(CLASSTYPE_SIZE): Reimplement.
	(CLASSTYPE_SIZE_UNIT): Likewise.
	(CLASSTYPE_ALIGN): Likweise.
	(CLASSTYPE_USER_ALIGN): Likewise.
	(CLASSTYPE_AS_BASE): New macro.
	(DECL_INITIALIZED_P): Likewise.
	(extract_init): Remove prototype.
	(build_forced_zero_init): Rename to ...
	(build_zero_init): ... this.
	(force_store_init_value): Remove.
	* decl.c (obscure_complex_init): Remove.
	(duplicate_decls): Copy DECL_INITIALIZED_P.
	(check_initializer): Do not leave junk in DECL_INITIAL.
	(cp_finish_decl): Handle zero-initialization of entities with
	static storage duration.
	* expr.c (extract_init): Remove.
	* init.c (build_forced_zero_init): Remove.
	(build_zero_init): New function.
	(build_default_init): Use it.
	(build_field_list): Skip FIELD_DECLs for base subobjects.
	(push_base_cleanups): Likewise.
	* method.c (do_build_assign_ref): Likewise.
	(synthesize_exception_spec): Likewise.
	* pt.c (tsubst_decl): Clear DECL_INITIALIZED_P.
	(regenerate_decl_from_template): To not set DECL_INITIAL for a
	static data member whose initialization took place in its class.
	(instantiate_decl): Do not pass an initializer to cp_finish_decl
	in that situation.
	* search.c (dfs_push_decls): Skip FIELD_DECLs for base subobjects.
	(dfs_unuse_fields): Likewise.
	* tree.c (pod_type_p): Handle error_mark_node.
	(zero_init_p): Likewise.
	* typeck.c (lookup_anon_field): Skip FIELD_DECLs for base
	subobjects.
	* typeck2.c (store_init_value): Remove #if 0'd code.
	(force_store_init_value): Remove.
	(process_init_constructor): Use build_zero_init.

	* g++.dg/abi/empty7.C: New test.
	* g++.dg/init/pm2.C: Likewise.

From-SVN: r57654
2002-09-30 16:52:19 +00:00
Kazu Hirata
838dfd8a4e ChangeLog: Follow spelling conventions.
* ChangeLog: Follow spelling conventions.
	* ChangeLog.2: Likewise.
	* call.c: Likewise.
	* class.c: Likewise.
	* cp-tree.h: Likewise.
	* cvt.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* friend.c: Likewise.
	* g++spec.c: Likewise.
	* init.c: Likewise.
	* lex.c: Likewise.
	* mangle.c: Likewise.
	* method.c: Likewise.
	* operators.def: Likewise.
	* optimize.c: Likewise.
	* pt.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* spew.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.

From-SVN: r57387
2002-09-21 12:51:56 +00:00
Nathan Sidwell
171d2f505b Remove DR 295 implementation.
cp:
	Remove DR 295 implementation.
	* pt.c (check_cv_quals_for_unify): Disable function & method cases.
	* tree.c (cp_build_qualified_type_real): Likewise. Don't warn
	about ignoring volatile qualifiers.

	* search.c (lookup_member): Correct documentation.
testsuite:
	* g++.dg/template/qualttp20.C: Adjust expected errors.
	* g++.old-deja/g++.jason/report.C: Likewise.
	* g++.old-deja/g++.other/qual1.C: Likewise.

From-SVN: r57209
2002-09-16 19:09:05 +00:00
Kazu Hirata
c600262528 error.c: Fix comment formatting.
* error.c: Fix comment formatting.
	* except.c: Likewise.
	* expr.c: Likewise.
	* friend.c: Likewise.
	* g++spec.c: Likewise.
	* init.c: Likewise.
	* lex.c: Likewise.
	* mangle.c: Likewise.
	* method.c: Likewise.
	* optimize.c: Likewise.
	* pt.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* spew.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

From-SVN: r57138
2002-09-14 12:07:44 +00:00
Matt Austern
6c6e776d78 cp-tree.h, tree.c: New function non_cast_lvalue_p.
2002-09-13  Matt Austern  <austern@apple.com>
        * cp/cp-tree.h, cp/tree.c: New function non_cast_lvalue_p.
        * cp/call.c: Change call-by-const-reference mechanism to use
        non_cast_lvalue_p when deciding whether the create a temporary.
        We need a temporary when passing, e.g. (long) x by const ref.
        * testsuite/g++.dg/other/constref[12].C: New, regression tests for
        passing a cast expression to a function by const reference.

From-SVN: r57115
2002-09-13 18:08:16 +00:00
Richard Henderson
8a3c918078 tree.c: Include target.h.
* tree.c: Include target.h.
        (cp_cannot_inline_tree_fn): Don't auto-inline functions that
        don't bind locally.
        * Makefile.in (tree.o): Update.

From-SVN: r56692
2002-08-30 19:37:09 -07:00
Matt Austern
13d3f0b659 tree.c (lvalue_p_1): Add argument for whether casts of lvalues are allowable.
2002-08-24  Matt Austern  <austern@apple.com>

        * tree.c (lvalue_p_1): Add argument for whether casts of lvalues
        are allowable.
        (real_lvalue_p): Update caller.
        (lvalue_p): Ditto.
        (non_cast_lvalue_or_else): New.
        * tree.h: Declare it.
        * typeck.c (build_unary_op): Use non_cast_lvalue_or_else.

2002-08-24  Matt Austern  <austern@apple.com>

        * g++.dg/ext/lvaddr.C: New test.
        * g++.dg/ext/lvcast.C: New test.

From-SVN: r56560
2002-08-25 04:57:16 +00:00
Gabriel Dos Reis
3e72ec9a0c decl.c (duplicate_decls): Replace DECL_SOURCE_FILE + DECL_SOURCE_LINE with DECL_SOURCE_LOCATION.
* decl.c (duplicate_decls): Replace DECL_SOURCE_FILE +
	DECL_SOURCE_LINE with DECL_SOURCE_LOCATION.
	* optimize.c (maybe_clone_body): Likewise.
	* pt.c (tsubst_enum): Likewise.
	(lookup_template_class): Likewise.
	* tree.c (cp_copy_res_decl_for_inlining): Likewise.

From-SVN: r56206
2002-08-11 16:05:27 +00:00
Nathan Sidwell
3ebf520442 tree.c (maybe_dummy_object): Replace // with /* */e
cp:
	* tree.c (maybe_dummy_object): Replace // with /* */e
testsuite:
	* gcc.dg/bitfld-4.c: Add blank options.

From-SVN: r56183
2002-08-10 13:11:43 +00:00
Mark Mitchell
50ad964280 Rework build_component_ref.
* call.c (build_vfield_ref): Do not go through build_component_ref.
	(build_field_call): Use build_class_member_access_expr.
	(build_user_type_conversion_1): Use BASELINK_FUNCTIONS.
	(build_object_call): Likewise.
	* class.c (convert_to_base): New function.
	(type_requires_array_cookie): Use BASELINK_FUNCTIONS.
	(instantiate_type): Handle BASELINKs.
	* cp-tree.def (BASELINK): New tree code.
	* cp-tree.h (BASELINK_P): Reimplement.
	(SET_BASELINK_P): Remove.
	(BASELINK_BINFO): Reimplement.
	(BASELINK_FUNCTIONS): Likewise.
	(BASELINK_ACCESS_BINFO): Likewise.
	(BASELINK_OPTYPE): Likewise.
	(convert_to_base): New function.
	(name_p): Likewise.
	(build_object_ref): Remove.
	(build_component_ref_1): Likewise.
	(build_component_ref): Likewise.
	(build_x_component_ref): Likewise.
	(build_class_member_access_expr): New function.
	(finish_class_member_access_expr): Likewise.
	(build_ptrmemfunc_access_expr): Likewise.
	* decl.c (grokdeclarator): Handle BASELINKs.
	* decl2. (build_expr_from_tree): Handle COMPONENT_REFs by using
	finish_class_member_access_expr.
	(arg_assoc): Handle BASELINKs.
	(do_class_using_decl): Likewise.
	* error.c (dump_decl): Likewise.
	(dump_expr): Use build_ptrmemfunc_access_expr.
	* except.c (dtor_nothrow): Use CLASSTYPE_DESTRUCTORS to find
	destructors.
	(build_throw): Use BASELINK_FUNCTIONS.
	* init.c (perform_member_init): Use
	build_class_member_access_expr.
	(build_offset_ref): Handle BASELINKs.  Use
	build_class_member_access_expr.
	* method.c (hack_identifier): Likewise.
	* parse.y (do_id): Use BASELINK, not TREE_LIST.
	(primary): Remove uses of build_object_ref.
	* pt.c (lookup_template_function): Handle BASELINKs.
	(resolve_overloaded_unification): Likewise.
	* search.c (build_baselink): Build a BASELINK, not a TREE_LIST.
	(lookup_field): Use BASELINK, not TREE_LIST.
	(lookup_fnfiels): Likewise.
	(setup_class_bindings): Likewise.
	* semantics.c (finish_object_call_expr): Do not use
	build_method_call when we already know what function is being
	called.
	* spew.c (identifier_type): Use BASELINK, not TREE_LIST.
	* tree.c (really_overloaded_fn): Use OVL_CHAIN for OVERLOADs, not
	TREE_CHAIN.
	(name_p): New function.
	* typeck.c (build_object_ref): Remove.
	(build_component_ref_1): Likewise.
	(build_x_component_ref): Likewise.
	(build_class_member_access_expr): New function.
	(finish_class_member_access_expr): Likewise.
	(build_ptrmemfunc_access_expr): Likewise.
	(get_member_function_from_ptrfunc): Use
	build_ptrmemfunc_access_expr.
	(build_binary_op): Likewise.
	(build_unary_op): Likewise.
	(build_ptrmemfunc): Likewise.
	(pfn_from_ptrmemfunc): Likewise.
	* typeck2.c (build_m_component_ref): Adjust comment.

	* g++.dg/abi/offsetof.C: Tweak error messages.
	* g++.old-deja/g++.mike/p10769a.C: Likewise.

From-SVN: r56117
2002-08-08 05:48:39 +00:00
Geoffrey Keating
b3426eb9e2 Index: ChangeLog
2002-08-05  Geoffrey Keating  <geoffk@redhat.com>

	* attribs.c: Don't include obstack.h.
	* builtins.c: Likewise.
	* cfganal.c: Likewise.
	* cfgbuild.c: Likewise.
	* cfgcleanup.c: Likewise.
	* emit-rtl.c: Likewise.
	* loop.c: Likewise.
	* stmt.c: Likewise.

Index: cp/ChangeLog
2002-08-05  Geoffrey Keating  <geoffk@redhat.com>

	* class.c: Don't include obstack.h.
	(popclass):
	* decl2.c: Delete bogus comment.
	* error.c: Don't include obstack.h.
	* except.c: Likewise.
	(dump_type): Correct comment.
	* method.c: Don't include obstack.h.
	* tree.c: Likewise.

Index: java/ChangeLog
2002-08-05  Geoffrey Keating  <geoffk@redhat.com>

	* mangle_name.c: Don't include obstack.h twice.
	* xref.c: Don't include obstack.h.

From-SVN: r56055
2002-08-05 18:46:37 +00:00
Nathan Sidwell
41ab2ae207 tree.c (build_shared_int_cst): Make cache file scope, and GTY it.
* tree.c (build_shared_int_cst): Make cache file scope, and
	GTY it.

From-SVN: r55992
2002-08-02 17:21:34 +00:00
Geoffrey Keating
3cfab7ec18 In cp/ChangeLog:
* tree.c (cp_build_qualified_type_real): When copying
	pointer-to-method types, unshare the record that holds
	the cached pointer-to-member-function type.
In testsuite/ChangeLog:
	* g++.dg/other/ptrmem4.C: New testcase.

From-SVN: r55725
2002-07-24 23:01:07 +00:00
Jason Merrill
34902e16e2 re PR c++/7279 (NRV related miscompilation)
PR c++/7279
        * tree.c (cp_copy_res_decl_for_inlining): Also copy
        TREE_ADDRESSABLE.

From-SVN: r55405
2002-07-11 17:12:47 -04:00
Jason Merrill
98c07d7bd7 re PR rtl-optimization/7145 (g++ -O with structure initializer & return value optimization generates bad code)
PR optimization/7145
        * tree.c (cp_copy_res_decl_for_inlining): Also copy DECL_INITIAL.

From-SVN: r55261
2002-07-05 11:01:04 -04:00
Mark Mitchell
da15dae6f5 call.c (build_op_delete_call): Use BASELINK_FUNCTIONS.
* call.c (build_op_delete_call): Use BASELINK_FUNCTIONS.
	* class.c (handle_using_decl): Likewise.
	(instantiate_type): Likewise.
	* cp-tree.h (BASELINK_FUNCTIONS): New macro.
	(xref_basetypes): Change prototype.
	(begin_mem_initializers): New function.
	(get_overloaded_fn): Likewise.
	* decl.c (xref_basetypes): Simplify.
	* error.c (dump_expr): Use BASELINK_FUNCTIONS.
	* init.c (build_offset_ref): Likewise.
	* parse.y (base_init): Use begin_mem_initializers().
	(structsp): Adjust call to xref_basetypes.
	* pt.c (determine_specialization): Use BASELINK_FUNCTIONS.
	(instantiate_class_template): Adjust call to xref_basetypes.
	* semantics.c (begin_mem_initializers): New function.
	* tree.c (is_overloaded_fn): Use BASELINK_FUNCTIONS.
	(really_overlaoded_fn): Likewise.
	(get_overloaded_fn): New function.'
	(get_first_fn): USe BASELINK_FUNCTIONS.

From-SVN: r54989
2002-06-25 15:35:27 +00:00
Richard Henderson
fd852454b1 tree.c (cp_cannot_inline_tree_fn): Don't short-circuit test after template instantiation.
* tree.c (cp_cannot_inline_tree_fn): Don't short-circuit test
        after template instantiation.
	* g++.dg/opt/inline3.C: New.

From-SVN: r54687
2002-06-16 17:26:56 -07:00
Geoffrey Keating
e2500fedef Merge from pch-branch up to tag pch-commit-20020603.
From-SVN: r54232
2002-06-04 07:11:05 +00:00
Zack Weinberg
11ad4784f3 tree.h: Forward-declare struct realvaluetype.
* tree.h: Forward-declare struct realvaluetype.
	(struct tree_real_cst): Point to the REAL_VALUE_TYPE, do not
	contain it.
	(TREE_REAL_CST_PTR): New accessor.
	(TREE_REAL_CST): Update.
	* real.h: Include machmode.h.
	(realvaluetype): Make it struct realvaluetype, not a typedef.
	(build_real): Prototype here.

	* tree.c: Include real.h.
	(build_real): Allocate the REAL_VALUE_TYPE as a separate
	object in GC memory, set TREE_REAL_CST_PTR to point to it.
	(build_real_from_int_cst): Use build_real.
	* ggc-common.c (ggc_mark_trees): Mark TREE_REAL_CST_PTR of a
	REAL_CST.

	* builtins.c, c-common.c, c-lex.c, dwarf2out.c, expr.c,
	fold-const.c, print-tree.c, real.c, cp/mangle.c, cp/tree.c,
	f/bld.c, f/com.c, f/expr.c, f/target.c, java/decl.c,
	java/jcf-parse.c, java/parse.y, java/typeck.c: Include real.h.
	* Makefile.in, cp/Make-lang.in, f/Make-lang.in,
	java/Make-lang.in: Update dependency lists.

From-SVN: r53959
2002-05-28 17:33:14 +00:00
Alexandre Oliva
94e6e4c4f3 cp-tree.h (struct lang_type): Added non_zero_init.
* cp-tree.h (struct lang_type): Added non_zero_init.
(CLASS_NON_ZERO_INIT_P): New macro.
(zero_init_p, force_store_init_value, build_forced_zero_init): Declare.
* class.c (check_field_decls): Test non_zero_init.
* cvt.c (convert_to_pointer_force): Use cp_convert_to_pointer for
zero-to-NULL conversions.
* decl.c (obscure_complex_init): Don't reset DECL_INITIAL of a
type that needs zero-initialization without zeros.
(check_initializer_decl): Compute zero-initializer for types
that require a non-trivial one.
* init.c (build_forced_zero_init): New function.
(build_default_init): Use it.
* tree.c (zero_init_p): New function.
* typeck2.c (force_store_init_value): New function.
(process_init_constructor): Create non-trivial zero-initializers
for array members and class fields.

From-SVN: r53461
2002-05-14 17:20:47 +00:00
Jason Merrill
0abc082acf tree.c (build_cplus_array_type): Only const and volatile get special handling.
* tree.c (build_cplus_array_type): Only const and volatile get
        special handling.

From-SVN: r53098
2002-05-03 12:22:08 -04:00
Jason Merrill
a49cfba81b typeck.c (build_modify_expr): The pedwarn for array assignment is now unconditional.
* typeck.c (build_modify_expr): The pedwarn for array assignment is
        now unconditional.
        * tree.c (build_cplus_array_type_1): Still process simple array types
        normally in templates.

From-SVN: r52746
2002-04-24 20:13:45 -04:00
Neil Booth
349ae713cb attribs.c (c_common_attribute_table): Move table and handlers to c-common.c.
* attribs.c (c_common_attribute_table): Move table and handlers
	to c-common.c.
	(format_attribute_table, lang_attribute_table,
	lang_attribute_common): Remove.
	(init_attributes): Replace NULL pointers with pointers to the
	empty table.
	(handle_packed_attribute, handle_nocommon_attribute,
	handle_common_attribute, handle_noreturn_attribute,
	handle_noinline_attribute, handle_always_inline_attribute,
	handle_used_attribute, handle_unused_attribute,
	handle_const_attribute, handle_transparent_union_attribute,
	handle_constructor_attribute, handle_destructor_attribute,
	handle_mode_attribute, handle_section_attribute,
	handle_aligned_attribute, handle_weak_attribute,
	handle_alias_attribute, handle_visibility_attribute,
	handle_no_instrument_function_attribute, handle_malloc_attribute,
	handle_no_limit_stack_attribute, handle_pure_attribute,
	handle_deprecated_attribute, handle_vector_size_attribute,
	vector_size_helper): Move to c-common.c.
	* c-common.c (c_common_attribute_table,
	handle_packed_attribute, handle_nocommon_attribute,
	handle_common_attribute, handle_noreturn_attribute,
	handle_noinline_attribute, handle_always_inline_attribute,
	handle_used_attribute, handle_unused_attribute,
	handle_const_attribute, handle_transparent_union_attribute,
	handle_constructor_attribute, handle_destructor_attribute,
	handle_mode_attribute, handle_section_attribute,
	handle_aligned_attribute, handle_weak_attribute,
	handle_alias_attribute, handle_visibility_attribute,
	handle_no_instrument_function_attribute, handle_malloc_attribute,
	handle_no_limit_stack_attribute, handle_pure_attribute,
	handle_deprecated_attribute, handle_vector_size_attribute,
	vector_size_helper): Move from attribs.c.
	* c-common.h (c_common_attribute_table,
	c_common_format_attribute_table): New.
	* c-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
	LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Redefine.
	* langhooks-def.h (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
	LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_ATTRIBUTE_TABLE): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): 3 new attribute hooks.
	* target-def.h (TARGET_ATTRIBUTE_TABLE): Default to NULL.
	* target.h: Update comment.
	* tree.c (default_target_attribute_table): Remove.
	* tree.h (default_target_attribute_table, format_attribute_table,
	lang_attribute_table, lang_attribute_common): Remove.
ada:
	* misc.c (gnat_init): Don't set lang_attribute_common.
cp:
	* cp-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
	LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, LANG_HOOKS_ATTRIBUTE_TABLE):
	Redefine.
	* cp-tree.h (cp_attribute_table): Rename.
	* decl.c (lang_attribute_table): Remove declaration.
	(cxx_init_decl_processing): Don't set it.
	* tree.c (cp_attribute_table): Rename.
objc:
	* objc-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
	LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Redefine.

From-SVN: r52730
2002-04-24 20:41:04 +00:00
Jason Merrill
a29e103468 re PR c++/525 (Problem with Multiple Inheritance and -pedantic)
PR c++/525
        * init.c (build_member_call): Use build_scoped_ref.
        (resolve_offset_ref): Likewise.
        * call.c (build_scoped_method_call): Likewise.
        * tree.c (maybe_dummy_object): Kludge around current_class_type being
        wrong.
        * typeck2.c (build_scoped_ref): Return the binfo via binfo_p parm.
        * cp-tree.h: Adjust.

        * init.c (push_base_cleanups): Just use build_scoped_method_call.

From-SVN: r51956
2002-04-06 11:15:20 -05:00
Jason Merrill
659e5a7aa9 re PR c++/5636 (gcc-3.0.3, memory leakage: function that take a string as parameter will not call local variable destructors if exception is thrown.)
PR c++/5636
        * tree.h (CLEANUP_EH_ONLY): New macro.
        * stmt.c (expand_decl_cleanup_eh): New fn.
        (expand_cleanups): Check CLEANUP_EH_ONLY.
        * c-semantics.c (genrtl_decl_cleanup): Just take the CLEANUP_STMT.
        Use expand_decl_cleanup_eh.
        (expand_stmt): Adjust.
        * c-common.h: Adjust prototype.
        * cp/semantics.c (nullify_returns_r): Just set CLEANUP_EH_ONLY on
        cleanup for nrv.

        * except.c (struct eh_status): Remove protect_list.
        (begin_protect_partials, end_protect_partials): Remove.
        (add_partial_entry): Remove.
        * except.h: Remove prototypes.

        * expr.c (expand_expr) [WITH_CLEANUP_EXPR, TARGET_EXPR]: Use
        expand_decl_cleanup_eh.

cp/:
        * semantics.c (finish_eh_cleanup): New fn.
        * cp-tree.h: Add prototype.
        * init.c (perform_member_init, expand_cleanup_for_base): Use
        finish_eh_cleanup.
        * cp-tree.def (SUBOBJECT, CTOR_STMT): Remove.
        * cp-tree.h: Remove references.
        * decl.c (begin_constructor_body, end_constructor_body): Likewise.
        * dump.c (cp_dump_tree): Likewise.
        * pt.c (tsubst_expr): Likewise.
        * semantics.c (genrtl_ctor_stmt, genrtl_subobject): Remove.
        (cp_expand_stmt): Remove handling of CTOR_STMT and SUBOBJECT.
        * tree.c (cp_statement_code_p): Likewise.

        * init.c (build_new_1): Set CLEANUP_EH_ONLY on deleting cleanup.

From-SVN: r51827
2002-04-03 19:11:00 -05:00
Neil Booth
599bba86df langhooks-def.h (lhd_set_decl_assembler_name, [...]): New.
* langhooks-def.h (lhd_set_decl_assembler_name,
	LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_set_decl_assembler_name): New, from tree.c
	* langhooks.h (struct lang_hooks): New hook.
	* tree.c (set_decl_assembler_name): Move to langhooks.c.
	(lang_set_decl_assembler_name): Remove.
	(init_obstacks): Don't set hook.
	(decl_assembler_name): New function.
	* tree.h (DECL_ASSEMBLER_NAME): Turn into a function call.
	(decl_assembler_name): New.
	(lang_set_decl_assembler_name): Remove.
cp:
	* cp-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Redefine.
	* tree.c (init_tree): Don't set hook.

From-SVN: r51817
2002-04-03 22:26:37 +00:00
Neil Booth
f1e639b1ac Makefile.in (except.o): Update.
* Makefile.in (except.o): Update.
	* except.c: Include langhooks.h.
	(init_eh): Use langhook.
	* langhooks-def.h (LANG_HOOKS_MAKE_TYPE,
	LANG_HOOKS_FOR_TYPES_INITIALIZER): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (lang_hooks_for_types): New.
	(struct lang_hooks): Add it.
	* tree.c (make_lang_type_fn, make_lang_type): Remove.
	* tree.h (make_lang_type_fn, make_lang_type): Remove.
config:
	* alpha/alpha.c: Include langhooks.h.
	(alpha_build_va_list): Use langhook.
	* d30v/d30v.c: Include langhooks.h.
	(d30v_build_va_list): Use langhook.
	* i386/i386.c: Include langhooks.h.
	(ix86_build_va_list): Use langhook.
	* rs6000/rs6000.c (rs6000_build_va_list): Use langhook.
	* s390/s390.c: Include langhooks.h.
	(s390_build_va_list): Use langhook.
	* stormy16/stormy16.c: Include langhooks.h.
	(stormy16_build_va_list): Use langhook.
cp:
	* cp-lang.c (LANG_HOOKS_MAKE_TYPE): Redefine.
	* cp-tree.h (cp_make_lang_type): Rename.
	* lex.c (cp_make_lang_type): Rename.
	(make_aggr_type): Update.
	* tree.c (init_tree): Don't set make_lang_type_fn.

From-SVN: r51558
2002-03-29 08:43:22 +00:00
Neil Booth
c88770e9df c-decl.c (maybe_build_cleanup): Remove.
* c-decl.c (maybe_build_cleanup): Remove.
	* expr.c (expand_expr): Use langhook.
	* langhooks-def.h (lhd_return_null_tree,
	LANG_HOOKS_MAYBE_BUILD_CLEANUP): New.
	(LANGHOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_return_null_tree): New.
	* langhooks.h (struct lang_hooks): New hook.
	* tree-inline.c (initialize_inlined_parameters): Use langhook.
	* tree.h (maybe_build_cleanup): Remove.
ada:
	* misc.c (maybe_build_cleanup): Remove.
cp:
	* cp-tree.h (cxx_maybe_build_cleanup): New.
	* decl.c (destroy_local_var, hack_incomplete_structures): Update.
	(maybe_build_cleanup): Rename cxx_maybe_build_cleanup.
	* tree.c (build_target_expr): Update.
f:
	* com.c (maybe_build_cleanup): Remove.
java:
	* decl.c (maybe_build_cleanup): Remove.

From-SVN: r51324
2002-03-25 19:11:13 +00:00
Aldy Hernandez
2cb921f417 langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Check flag_really_no_inline instead of optimize == 0.
2002-03-21  Aldy Hernandez  <aldyh@redhat.com>

        * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Check
        flag_really_no_inline instead of optimize == 0.

        * c-objc-common.c (c_cannot_inline_tree_fn): Same.

        * cp/tree.c (cp_cannot_inline_tree_fn): Same.

        * flags.h (flag_really_no_inline): New.

        * c-common.c (c_common_post_options): Initialzie
        flag_really_no_inline.

        * toplev.c (flag_really_no_inline): New.

From-SVN: r51146
2002-03-21 23:15:38 +00:00
Neil Booth
7afff7cfb0 Makefile.in: Update.
* Makefile.in: Update.
	* c-common.c: Include langhooks.h.
	(inline_forbidden_p): Use new hook.
	* diagnostic.c: Include langhooks.h.
	(format_with_decl, announce_function,
	default_print_error_function): Use new hook.
	* dwarf2out.c (dwarf2_name): Use new hook.
	* function.c: Include langhooks.h.
	(init_function_start): Use new hook.
	* langhooks-def.h (lhd_decl_printable_name): New.
	(LANGHOOKS_DECL_PRINTABLE_NAME): New.
	(LANGHOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_decl_printable_name): New.
	* langhooks.h (struct lang_hooks): New hook.
	* toplev.c (decl_name, decl_printable_name): Remove.
	(open_dump_file): Use new hook.
	(process_options): Remove old hook.
	* tree.h (decl_printable_name): Remove.
ada:
	* misc.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(gnat_init): Remove old hook.
cp:
	* cp-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	* cp-tree.h (lang_printable_name): Rename.
	* error.c (lang_decl_name): Use new hook.
	* lex.c (cxx_init): Remove old hook.
	* pt.c (tsubst_expr): Use new hook.
	* tree.c (lang_printable_name): Rename.
f:
	* com.c (lang_printable_name): Rename.
	(LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(ffe_init): Don't use old hook.
java:
	* decl.c (start_java_method): Use new hook.
	* lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(java_init): Remove old hook.
objc:
	* objc-act.c (objc_init): Remove old hook.
	(objc_printable_name): Export.
	* objc-act.h (objc_printable_name): New.
	* objc-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.

From-SVN: r51066
2002-03-20 07:58:41 +00:00
Jason Merrill
ab93b54345 fix comment typo
From-SVN: r50929
2002-03-17 18:47:02 -05:00
Mark Mitchell
6e4ae815bd c-common.c (statement_code_p): Handle CLEANUP_STMT.
* c-common.c (statement_code_p): Handle CLEANUP_STMT.
	* c-common.def (CLEANUP_STMT): New tree node.
	* c-common.h (CLEANUP_DECL): New macro.
	(CLEANUP_EXPR): Likewise.
	* c-semantics.c (expand_stmt): Handle CLEANUP_STMT.
	* tree-dump.c (dequeue_and_dump): Handle CLEANUP_STMT.
	* tree-inline.c (initialize_inlined_parameters): Clean up
	new local variables.

	* cp-tree.h (CLEANUP_DECL): Remove.
	(CLEANUP_EXPR): Likewise.
	* decl.c (destroy_local_var): Simplify.
	(maybe_build_cleanup): Tidy.
	* dump.c (cp_dump_tree): Remove handling of CLEANUP_STMT.
	* semantics.c (cp_expand_stmt): Likewise.
	* cp/tree.c (cp_statement_code_p): Likewise.

	* g++.dg/opt/dtor1.C: New test.

From-SVN: r50830
2002-03-15 20:08:39 +00:00
Neil Booth
24965e7a8a expr.c (expand_expr): Use unsave lang hook.
* expr.c (expand_expr): Use unsave lang hook.
	* langhooks-def.h (LANG_HOOKS_UNSAVE): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New hook unsave.
	* tree.c (lang_unsave, lang_unsave_expr_now): Remove.
	(unsave_expr_1): Remove unused lang_unsave_expr_now.
	(unsave_expr_now_r): Rename lhd_unsave.  Update. Return input.
	(unsave_expr_now): Remove.
	* tree.h (unsave_expr_now, lang_unsave,
	lang_unsave_expr_now): Remove.
	(lhd_unsave): New.
cp:
	* cp-lang.c (LANG_HOOKS_UNSAVE): Redefine.
	* cp-tree.h (cxx_unsave): New.
	* tree.c (cp_unsave): Rename cxx_unsave, update prototype.
	(init_tree): Update.

From-SVN: r50449
2002-03-08 19:21:04 +00:00
Jason Merrill
6f30f1f13c tree.h (TARGET_EXPR_SLOT, [...]): New macros.
* tree.h (TARGET_EXPR_SLOT, TARGET_EXPR_INITIAL): New macros.
        (TARGET_EXPR_CLEANUP): New macro.
cp/
        * except.c: Don't include decl.h or obstack.h.  Do include
        tree-inline.h.
        (build_throw): Destroy temporaries from the thrown
        expression before calling __cxa_throw.  Construct a thrown
        temporary directly into the exception object.
        (stabilize_throw_expr): New function.
        (wrap_cleanups_r): New function.
        * tree.c (stabilize_expr): New function.
        * init.c (build_init): New function.
        * Make-lang.in (cp/except.o): Adjust .h deps.

From-SVN: r50177
2002-02-28 20:49:00 -05:00
Nathan Sidwell
4f2b0fb25e PR c++/2645, DR 295
cp:
	PR c++/2645, DR 295
	* cp-tree.h (tsubst_flags_t): Add tf_ignore_bad_quals,
	tf_keep_type_decl.
	(make_typename_type): Use tsubst_flags_t.
	* decl.c (make_typename_type): Adjust. Return non-artificial
	TYPE_DECLs, if required.
	(grokdeclarator): Simplify CVR qualification handling. Allow bad
	qualifiers on typedef types.
	* decl2.c (handle_class_head): Adjust make_typename_type call.
	* parse.y (nested_name_specifier): Likewise.
	(typename_sub0): Likewise.
	(typename_sub1): Likewise.
	* pt.c (convert_template_argument): Adjust make_typename_type
	return value.
	(tsubst): Adjust cp_build_qualified_type_real calls.
	(check_cv_quals_for_unify): Cope with alowing bad qualifications
	on template type parms.
	(instantiate_decl): Recheck substitutions to give warnings on bad
	qualifications.
	* tree.c (cp_build_qualified_type_real): Use tf_allow_bad_quals.
testsuite:
	* g++.dg/template/qualttp19.C: New test.
	* g++.dg/template/qualttp20.C: New test.
	* g++.old-deja/g++.jason/report.C: Adjust expected errors
	* g++.old-deja/g++.other/qual1.C: Likewise.

From-SVN: r49961
2002-02-22 11:57:52 +00:00
Aldy Hernandez
6aa77e6c39 attr-alwaysinline.c: New.
2002-02-21  Aldy Hernandez  <aldyh@redhat.com>

        * gcc.dg/attr-alwaysinline.c: New.

        * c-common.c (c_common_post_options): Set inline trees by
        default.

        * doc/extend.texi (Function Attributes): Document always_inline
        attribute.
        Update documentation about inlining when not optimizing.

        * cp/decl.c (duplicate_decls): Merge always_inline attribute.

        * cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
        unless DECL_ALWAYS_INLINE.

        * c-objc-common.c (c_cannot_inline_tree_fn): Do not inline at -O0
        unless DECL_ALWAYS_INLINE.
        (c_disregard_inline_limits): Disregard if always_inline set.

        * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
        Disregard if always_inline set.
        (lhd_tree_inlining_cannot_inline_tree_fn): Do not inline at -O0
        unless DECL_ALWAYS_INLINE.

        * attribs.c (handle_always_inline_attribute): New.
        (c_common_attribute_table): Add always_inline.

        * config/rs6000/altivec.h: Add prototypes for builtins
        requiring the always_inline attribute.

From-SVN: r49947
2002-02-22 00:09:04 +00:00
Nathan Sidwell
c2ea3a40d9 Rename instantiate_type_flags to tsubst_flags_t & expand use.
* cp-tree.h (instantiate_type_flags): Rename to ...
	(tsubst_flags_t): ... here. Rename itf_complain to tf_error,
	add tf_warning flag.
	(instantiate_type): Adjust prototype.
	(tsubst, tsubst_expr, tsubst_copy, lookup_template_class,
	do_type_instantiation, cp_build_qualified_type_real): Likewise.
	cp_build_qualified_type: Adjust.
	* class.c (instantiate_type): Adjust parameter. Rename itf_* to
	tf_*.
	* call.c (standard_conversion): Rename itf_* to tf_*.
	(reference_binding): Likewise.
	(convert_like_real): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	(convert_to_reference): Likewise.
	* decl.c (lookup_namespace_name): Use tf_* flags.
	(make_typename_type): Likewise.
	(grokdeclarator): Likewise.
	* pt.c (convert_nontype_argument): Adjust COMPLAIN usage.
	(coerce_template_template_parms, convert_template_argument,
	coerce_template_parms, maybe_get_template_decl_from_type_decl,
	lookup_template_class, tsubst_friend_function, tsubst_friend_class,
	instantiate_class_template, tsubst_template_arg_vector,
	tsubst_template_parms, tsubst_aggr_type, tsubst_default_argument,
	tsubst_decl, tsubst_arg_types, tsubst_function_type,
	tsubst_call_declarator_parms, tsubst, tsubst_copy, tsubst_expr,
	instantiate_template, fn_type_unification,
	resolve_overloaded_unification, verify_class_unification,
	unify, get_bindings_real, do_type_instantiation,
	regenerate_decl_from_template, instantiate_decl,
	tsubst_initializer_list, tsubst_enum,
	get_mostly_instantiated_function_type,
	invalid_nontype_parm_type_p): Likewise.
	* tree.c (cp_build_qualified_type_real): Likewise.
	* typeck.c (build_binary_op): Rename itf_* to tf_*.
	(build_ptrmemfunc): Likewise.
	(convert_for_assignment): Likewise.

From-SVN: r49591
2002-02-07 20:51:15 +00:00
Craig Rodrigues
a98facb0de call.c, [...]: Change my_fancy_abort() to abort().
2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>

        * call.c, class.c, decl.c, decl2.c, error.c, expr.c, friend.c,
        init.c, lex.c, mangle.c, method.c, pt.c, repo.c, rtti.c, search.c,
        semantics.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c:
        Change my_fancy_abort() to abort().

From-SVN: r49139
2002-01-23 14:26:07 +00:00
Zack Weinberg
33bd39a26a cp-tree.h: Delete #defines for cp_error, cp_warning, cp_pedwarn, and cp_compiler_error.
* cp-tree.h: Delete #defines for cp_error, cp_warning,
	cp_pedwarn, and cp_compiler_error.
	* call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
	except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
	rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
	typeck2.c: Change calls to the above macros to use their
	language-independent equivalents: error, warning, pedwarn, and
	internal_error respectively.

From-SVN: r48140
2001-12-18 03:35:42 +00:00
Jason Merrill
742a37d529 langhooks.h (struct lang_hooks_for_tree_inlining): Add start_inlining, end_inlining.
* langhooks.h (struct lang_hooks_for_tree_inlining): Add
        start_inlining, end_inlining.
        * tree-inline.c (expand_call_inline): Call them.
        * langhooks-def.h (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
        (LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
        (LANG_HOOKS_TREE_INLINING_INITIALIZER): Add them.
        * langhooks.c (lhd_tree_inlining_start_inlining): New fn.
        (lhd_tree_inlining_end_inlining): New fn.

        * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
        (LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
        * tree.c (cp_start_inlining, cp_end_inlining): New fns.
        * pt.c (push_tinst_level): No longer static.
        * cp-tree.h: Declare them.

        * init.c (resolve_offset_ref): Don't check access for the base
        conversion to access a FIELD_DECL.

        * cp-tree.h (TYPE_REFFN_P): New macro.
        * decl.c (bad_specifiers): Check it, too.

        * rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
        on the __*_type_info type if we haven't seen a definition.

From-SVN: r47703
2001-12-05 18:48:19 -05:00
Mark Mitchell
998979e6dc re PR c++/3048 (Lookup problem (gcc 2.95 regression))
2001-11-29  Mark Mitchell  <mark@codesourcery.com>

	PR c++/3048
	* cp-tree.h (ovl_member): Remove.
	* decl2.c (merge_functions): Handle extern "C" functions
	specially.
	* tree.c (ovl_member): Remove.

From-SVN: r47474
2001-11-30 03:14:56 +00:00
Nathan Sidwell
2db1ab2d04 cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
cp:
	* cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
	(ACCESSIBLY_UNIQUELY_DERIVED_FROM_P): Likewise.
	(PUBLICLY_UNIQUELY_DERIVED_FROM_P: Likewise.
	(DERIVED_FROM_P): Likewise.
	(enum base_access): Renumber, add ba_quiet bit mask.
	(get_binfo): Remove.
	(get_base_distance): Remove.
	(binfo_value): Remove.
	(ACCESSIBLY_DERIVED_FROM_P): Remove.
	* call.c (standard_conversion): Use lookup_base.
	* class.c (strictly_overrides): Likewise.
	(layout_virtual_bases): Likewise.
	(warn_about_ambiguous_direct_bases): Likewise.
	(is_base_of_enclosing_class): Likewise.
	(add_vcall_offset_vtbl_entries_1): Likewise.
	* cvt.c (build_up_reference): Adjust comment.
	* init.c (build_member_call): Reformat.
	* search.c (get_binfo): Remove.
	(get_base_distance_recursive): Remove.
	(get_base_distance): Remove.
	(lookup_base_r): Tweak.
	(lookup_base): Add ba_quiet control. Complete the types here.
	(covariant_return_p): Use lookup_base.
	* tree.c (binfo_value): Remove.
	(maybe_dummy_object): Use lookup_base.
	* typeck.c (build_static_cast): Use lookup_base.
	(get_delta_difference): Likewise.
	* typeck2.c (binfo_or_else): Use lookup_base.
	(build_scoped_ref): Add back error_mark_check.
	(build_m_component_ref): Use lookup_base.

From-SVN: r47444
2001-11-29 17:15:56 +00:00
Bryce McKinlay
89d684bba3 tree-dump.c: Rename from c-dump.c.
* tree-dump.c: Rename from c-dump.c. Include c-tree.h, not c-common.h.
	(lang_type_quals): Declare.
	(dequeue_and_dump): Use lang_hooks.tree_dump.type_quals function to
	retrieve language-specific qualifiers for a type node, instead of
	C_TYPE_QUALS. Likewise for lang_hooks.tree_dump.dump_tree instead of
	lang_dump_tree.
	* tree-dump.h: Rename from c-dump.h.
	* c-common.h (C_TYPE_QUALS): Removed.
	Move declarations for tree-dump.c interface to...
	* tree.h: ... here. Remove lang_dump_tree.
	* langhooks.h (struct lang_hooks_for_tree_dump): New.
	(struct lang_hooks): Add tree_dump hooks.
	* langhooks.c (lhd_tree_dump_dump_tree): New function.
	(lhd_tree_dump_type_quals): New function.
	* langhooks-def.h (lhd_tree_dump_dump_tree, lhd_tree_dump_type_quals):
	Declare.
	(LANG_HOOKS_INITIALIZER): Add tree_dump hooks.
	* Makefile.in: Move tree-dump.o to language-independent back-end.

cp:
	* cp-tree.h (CP_TYPE_QUALS): Removed.
	* decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
	* cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
	LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
	* dump.c (cp_dump_tree): Use void* dump_info argument to match
	lang-hooks prototype.
	* call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
	rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
	CP_TYPE_QUALS changed to cp_type_quals.
	* Make-lang.in: References to c-dump.h changed to tree-dump.h.
	(CXX_C_OBJS): Remove c-dump.o.

From-SVN: r47257
2001-11-22 02:33:02 +00:00
Neil Booth
5d69f816bc Makefile.in: Update.
* Makefile.in: Update.
	* c-decl.c (print_lang_decl, print_lang_type): Remove.
	(print_lang_identifier): Rename c_print_identifier.
	* c-lang.c (LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): New.
	(print_lang_statistics, lang_print_xnode): Remove.
	* c-parse.in (set_yydebug): Rename c_set_yydebug.
	* c-tree.h (c_set_yydebug, c_print_identifier): New.
	* langhooks-def.h (lhd_print_tree_nothing, lhd_set_yydebug): New.
	LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
	LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
	LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New members.
	(lang_print_tree_hook): New.
	* langhooks.c (lhd_print_tree_nothing, lhd_set_yydebug): New.
	* print-tree.c: Include langhooks.h.
	(print_node): Update.
	* toplev.c (decode_d_option): Update.
	* tree.c: Include langhooks.h.
	(dump_tree_statistics): Update.
	* tree.h (print_lang_statistics, print_lang_decl, print_lang_type,
	print_lang_identifier, set_yydebug, lang_print_xnode): Remove.
ada:
	* misc.c (gnat_print_decl, gnat_print_type): Renamed.
	(LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE): Override.
	(print_lang_statistics, lang_print_xnode, print_lang_identifier,
	set_yydebug): Remove.
cp:
	* cp-lang.c (LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
	LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
	LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): Override.
	* cp-tree.h (print_class_statistics): Remove.
	(cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
	cxx_print_identifier, cxx_set_yydebug): New.
	* lex.c (set_yydebug): Rename c_set_yydebug.
	* ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
	lang_print_xnode): Rename.
	* tree.c (print_lang_statistics): Rename.
f:
	* com.c (ffe_print_identifier): Rename.
	(LANG_HOOKS_PRINT_IDENTIFIER): Override.
	(lang_print_xnode, print_lang_decl, print_lang_statistics,
	print_lang_type, set_yydebug): Remove.
java:
	* java-tree.h (java_set_yydebug): New.
	* jcf-parse.c (set_yydebug): Rename java_set_yydebug.
	* lang.c (LANG_HOOKS_SET_YYDEBUG): Override.
	(print_lang_decl, print_lang_type, print_lang_identifier,
	print_lang_statistics, lang_print_xnode): Remove.
objc:
	* objc-act.c (LANG_HOOKS_PRINT_IDENTIFIER,
	LANG_HOOKS_SET_YYDEBUG): Override.
	(lang_print_xnode, print_lang_statistics): Remove.

From-SVN: r46907
2001-11-09 23:30:44 +00:00
Jakub Jelinek
199898121e tree.c (cp_copy_res_decl_for_inlining): Adjust DECL_ABSTRACT_ORIGIN for the return variable.
* tree.c (cp_copy_res_decl_for_inlining): Adjust
	DECL_ABSTRACT_ORIGIN for the return variable.

	* g++.dg/other/debug1.C: New test.

From-SVN: r46702
2001-11-01 22:09:39 +01:00
Kriang Lerdsuwanakij
b8c6534b88 cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
* cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
	* cp-tree.h (make_unbound_class_template): Prototype new function.
	* decl.c (make_unbound_class_template): New function.
	* decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
	* error.c (dump_type): Likewise.
	* mangle.c (write_type): Likewise.
	* parse.y (template_parm): Likewise.
	(template_argument): Use make_unbound_class_template.
	* pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
	(tsubst): Likewise.
	(tsubst_copy): Likewise.
	(unify): Likewise.
	* tree.c (walk_tree): Likewise.
	* typeck.c (comptypes): Likewise.

From-SVN: r46430
2001-10-23 09:14:15 +00:00
Alexandre Oliva
19551f2985 Make-lang.in (CXX_OBJS): Added cp-lang.o.
* Make-lang.in (CXX_OBJS): Added cp-lang.o.
(cp/cp-lang.o): New rule.
* cp-tree.h: Declare hooks.
* tree.c: Make hooks non-static.
(init_tree): Don't initialize hooks here.
* lex.c: Likewise.  Move definition of lang_hooks to...
* cp-lang.c: ... new file.

From-SVN: r46095
2001-10-08 20:53:41 +00:00
Alexandre Oliva
bc4c7159d8 optimize.c (struct inline_data): Moved to ../tree-inline.c.
* optimize.c (struct inline_data): Moved to ../tree-inline.c.
(INSNS_PER_STMT): Likewise.
(remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
(copy_body, initialize_inlined_parameters): Likewise.
(declare_return_variable, inlinable_function_p): Likewise.
(expand_call_inline, expand_calls_inline): Likewise.
(optimize_inline_calls, clone_body): Likewise.
* tree.c (walk_tree): Moved to ../tree-inline.c.
(walk_tree_without_duplicates): Likewise.
(copy_tree_r, remap_save_expr): Likewise.

From-SVN: r46022
2001-10-05 03:47:57 +00:00
Alexandre Oliva
25af851255 Make-lang.in (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
* Make-lang.in (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
(cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
* cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
(TREE_READONLY_DECL_P, DECL_INLINED_FNS): Moved to ../tree.h.
(flag_inline_trees): Moved declaration to ../tree-inline.h.
(walk_tree): Moved declaration to ../tree-inline.h.
(walk_tree_without_duplicates, copy_tree_r): Likewise.
(remap_save_expr): Likewise.
* decl.c: Include tree-inline.h.
(lang_mark_tree): Don't mark inlined_fns.
* decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
* optimize.c: Include tree-inline.h.
(optimize_inline_calls): Move declaration to ../tree.h, as
non-static.
(remap_decl): Use language-independent constructs and hooks.
(remap_block, copy_body_r, declare_return_variable): Likewise.
(inlinable_function_p): Likewise.  Don't test for
DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
no longer language-specific.
(optimize_inline_calls): Likewise.  Make it non-static.  Moved
call of dump_function to...
(optimize_function): Here...
(clone_body): New function, extracted from...
(maybe_clone_body): ... here.  Build decl_map locally and pass
it on to clone_body.
* pt.c, semantics.c: Include tree-inline.h.
* tree.c: Likewise.
(cp_walk_subtrees): New language-specific hook for tree inlining.
(cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
cp_is_overload_p, cp_auto_var_in_fn_p,
cp_copy_res_decl_for_inlining): Likewise.
(walk_tree): Move language-specific constructs into...
(cp_walk_subtrees): this new function.
(copy_tree_r): Use language-independent constructs and hooks.
(init_tree): Initialize tree inlining hooks.
(remap_save_expr): Adjust prototype so that the declaration
does not require the definition of splay_tree.

From-SVN: r46020
2001-10-05 02:48:47 +00:00
Joseph Myers
91d231cb91 Table-driven attributes.
* c-decl.c, config/alpha/alpha.c, config/arc/arc.c,
	config/arm/arm.c, config/arm/pe.c, config/avr/avr.c,
	config/avr/avr.h, config/d30v/d30v.h, config/fr30/fr30.h,
	config/h8300/h8300.c, config/i386/cygwin.h, config/i386/winnt.c,
	config/m32r/m32r.c, config/mcore/mcore.c, config/sh/sh.c,
	config/stormy16/stormy16.h, config/v850/v850.c, doc/c-tree.texi,
	doc/tm.texi, ggc-common.c, integrate.c, print-tree.c, tree.c,
	tree.h: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
	* tree.h (struct tree_decl): Change machine_attributes to
	attributes.
	* doc/c-tree.texi: Document that all attributes are now attached
	to decls and types.
	* c-common.c (add_attribute, attrtab, attrtab_idx,
	default_valid_lang_attribute, valid_lang_attribute): Remove.
	(attribute_tables, attributes_initialized,
	c_common_attribute_table, default_lang_attribute_table): New
	variables.
	(handle_packed_attribute, handle_nocommon_attribute,
	handle_common_attribute, handle_noreturn_attribute,
	handle_unused_attribute, handle_const_attribute,
	handle_transparent_union_attribute, handle_constructor_attribute,
	handle_destructor_attribute, handle_mode_attribute,
	handle_section_attribute, handle_aligned_attribute,
	handle_weak_attribute, handle_alias_attribute,
	handle_no_instrument_function_attribute,
	handle_no_check_memory_usage_attribute, handle_malloc_attribute,
	handle_no_limit_stack_attribute, handle_pure_attribute): New
	functions.
	(init_attributes, decl_attributes): Rewrite to implement
	table-driven attributes.
	* c-common.h (enum attribute_flags): Move to tree.h.
	* c-format.c (decl_handle_format_attribute,
	decl_handle_format_arg_attribute): Rename to
	handle_format_attribute and handle_format_arg_attribute.  Update
	for table-driven attributes.
	* c-common.h (decl_handle_format_attribute,
	decl_handle_format_arg_attribute): Remove prototypes.
	(handle_format_attribute, handle_format_arg_attribute): Add
	prototypes.
	* c-decl.c (grokdeclarator): Handle attributes nested inside
	declarators.
	* c-parse.in (setattrs, maybe_setattrs): Remove.
	(maybe_type_quals_setattrs): Rename to maybe_type_quals_attrs.
	Update to handle nested attributes properly.
	(maybe_resetattrs, after_type_declarator,
	parm_declarator_nostarttypename, notype_declarator, absdcl1_noea,
	absdcl1_ea, direct_absdcl1): Update to handle nested attributes
	properly.
	(make_pointer_declarator): Update to handle nested attributes
	properly.
	* doc/extend.texi: Update documentation of limits of attributes
	syntax.  Warn about problems with attribute semantics in C++.
	* target.h (struct target): Remove valid_decl_attribute and
	valid_type_attribute.  Add attribute_table and
	function_attribute_inlinable_p.
	* target-def.h (TARGET_VALID_DECL_ATTRIBUTE,
	TARGET_VALID_TYPE_ATTRIBUTE): Remove.
	(TARGET_ATTRIBUTE_TABLE, TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P):
	Add.
	(TARGET_INITIALIZER): Update.
	* integrate.c (FUNCTION_ATTRIBUTE_INLINABLE_P): Remove default
	definition.
	(function_attribute_inlinable_p): New function.  Check for the
	presence of any machine attributes before using
	targetm.function_attribute_inlinable_p.
	(function_cannot_inline_p): Update.
	* Makefile.in (integrate.o): Update dependencies.
	* doc/tm.texi: Update documentation of target attributes and
	example definition of TARGET_VALID_TYPE_ATTRIBUTE.
	* tree.c (default_valid_attribute_p, valid_machine_attribute):
	Remove.
	(default_target_attribute_table,
	default_function_attribute_inlinable_p): New.
	(lookup_attribute): Update comment to clarify handling of multiple
	attributes with the same name.
	(merge_attributes, attribute_list_contained): Allow multiple
	attributes with the same name but different arguments to appear in
	the same attribute list.
	* tree.h (default_valid_attribute_p): Remove prototype.
	(struct attribute_spec): New.
	(default_target_attribute_table): Declare.
	(enum attribute_flags): Move from c-common.h.  Add
	ATTR_FLAG_TYPE_IN_PLACE.
	(default_function_attribute_inlinable_p): Declare.
	* config/alpha/alpha.c (vms_valid_decl_attribute_p): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(vms_attribute_table): New.
	* config/arc/arc.c (arc_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(arc_attribute_table, arc_handle_interrupt_attribute): New.
	* config/arm/arm.c (arm_valid_type_attribute_p,
	arm_valid_decl_attribute_p, arm_pe_valid_decl_attribute_p):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(arm_attribute_table, arm_handle_fndecl_attribute,
	arm_handle_isr_attribute): New.
	* config/avr/avr.c (avr_valid_type_attribute,
	avr_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE, TARGET_VALID_TYPE_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(avr_attribute_table, avr_handle_progmem_attribute,
	avr_handle_fndecl_attribute): New.
	* config/c4x/c4x.c (c4x_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(c4x_attribute_table, c4x_handle_fntype_attribute): New.
	* config/h8300/h8300.c (h8300_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(h8300_attribute_table, h8300_handle_fndecl_attribute,
	h8300_handle_eightbit_data_attribute,
	h8300_handle_tiny_data_attribute): New.
	* config/i386/i386-protos.h (ix86_valid_type_attribute_p,
	i386_pe_valid_decl_attribute_p, i386_pe_valid_type_attribute_p):
	Remove prototypes.
	(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New
	declarations.
	* config/i386/i386.c (ix86_valid_type_attribute_p: Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ix86_attribute_table, ix86_handle_cdecl_attribute,
	ix86_handle_regparm_attribute): New.
	* config/i386/winnt.c (i386_pe_valid_decl_attribute_p,
	i386_pe_valid_type_attribute_p): Remove.
	(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New.
	* config/ia64/ia64.c (ia64_valid_type_attribute): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ia64_attribute_table): New.
	* config/m32r/m32r.c (m32r_valid_decl_attribute, interrupt_ident1,
	interrupt_ident2, model_ident1, model_ident2): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(init_idents): Update.
	(m32r_attribute_table, m32r_handle_model_attribute): New.
	* config/m68hc11/m68hc11.c (m68hc11_valid_type_attribute_p):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(m68hc11_attribute_table, m68hc11_handle_fntype_attribute): New.
	* config/mcore/mcore.c (mcore_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(mcore_attribute_table, mcore_handle_naked_attribute): New.
	* config/ns32k/ns32k.c (ns32k_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ns32k_attribute_table, ns32k_handle_fntype_attribute): New.
	* config/rs6000/rs6000.c (rs6000_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(rs6000_attribute_table, rs6000_handle_longcall_attribute): New.
	* config/sh/sh.c (sh_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(sh_attribute_table, sh_handle_interrupt_handler_attribute,
	sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
	New.
	* config/stormy16/stormy16.c (stormy16_valid_type_attribute):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define
	(TARGET_ATTRIBUTE_TABLE): Define.
	(stormy16_attribute_table, stormy16_handle_interrupt_attribute):
	New.
	* config/v850/v850.c (v850_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(v850_attribute_table, v850_handle_interrupt_attribute,
	v850_handle_data_area_attribute): New.
	* config/v850/v850-c.c (mark_current_function_as_interrupt):
	Return void.  Call decl_attributes instead of
	valid_machine_attribute.

cp:
	Table-driven attributes.
	* decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
	* decl2.c (cplus_decl_attributes): Only take one attributes
	parameter.
	* cp-tree.c (cplus_decl_attributes): Update prototype.
	* class.c (finish_struct), decl.c (start_decl, start_function),
	decl2.c (grokfield), friend.c (do_friend), parse.y
	(parse_bitfield): Update calls to cplus_decl_attributes.
	* decl.c (grokdeclarator): Take a pointer to a single ordinary
	attribute list.
	* decl.h (grokdeclarator): Update prototype.
	* decl2.c (grokfield): Take a single ordinary attribute list.
	* friend.c (do_friend): Likewise.
	* decl.c (shadow_tag, groktypename, start_decl,
	start_handler_parms, grokdeclarator, grokparms, start_function,
	start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
	parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
	(process_template_parm, do_decl_instantiation): Pass single
	ordinary attribute lists around.
	* decl.c (grokdeclarator): Correct handling of nested attributes.
	Revert the patch
	1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
		* decl.c (grokdeclarator): Embedded attrs bind to the right,
		not the left.
	.
	* cp-tree.h (cp_valid_lang_attribute): Remove declaration
	(cp_attribute_table): Declare.
	* decl.c (valid_lang_attribute): Don't define.
	(lang_attribute_table): Define.
	(init_decl_processing): Initialize lang_attribute_table instead of
	valid_lang_attribute.
	* tree.c (cp_valid_lang_attribute): Remove.
	(handle_java_interface_attribute, handle_com_interface_attribute,
	handle_init_priority_attribute): New functions.
	(cp_attribute_table): New array.
	* decl2.c (import_export_class): Don't use
	targetm.valid_type_attribute.

testsuite:
	Table-driven attributes.
	* g++.dg/ext/attrib1.C: New test.

From-SVN: r45718
2001-09-21 02:27:06 +01:00
Andreas Jaeger
7a75edb707 emit-rtl.c: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
* emit-rtl.c: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
	* errors.c: Likewise.
	* final.c: Likewise.
	* dwarf2asm.c: Likewise.
	* doprint.c (checkit): Likewise.
	* diagnostic.c: Likewise.
	* collect2.c: Likewise.
	* calls.c: Likewise.
	* c-semantics.c (build_stmt): Likewise.
	* c-format.c (status_warning): Likewise.
	* c-errors.c (pedwarn_c99): Likewise.
	* builtins.c (validate_arglist): Likewise.
	* config/pj/pj.c (pj_printf): Likewise.
	* fix-header.c: Likewise.
	* gcc.c: Likewise.
	* gcov.c (fnotice): Likewise.
	* gensupport.c (message_with_line): Likewise.
	* mips-tfile.c: Likewise.
	* protoize.c (notice): Likewise.
	* read-rtl.c (fatal_with_file_and_line): Likewise.
	* rtl-error.c: Likewise.
	* tradcpp.c: Likewise.
	* tree.c: Likewise.
	* cp/tree.c (build_min_nt): Likewise.
	(build_min): Likewise.
	* cp/lex.c: Likewise.
	* cp/errfn.c: Likewise.
	* cp/rtti.c (create_pseudo_type_info): Likewise.

From-SVN: r45185
2001-08-27 08:48:43 +02:00
Jason Merrill
0213a35528 c-common.c (c_alignof, [...]): Move here...
* c-common.c (c_alignof, c_alignof_expr): Move here...
        * c-typeck.c: ...from here.
        * c-tree.h, c-common.h: Adjust.

        * tree.c (cp_build_qualified_type_real): Use get_qualified_type.
        (build_cplus_array_type): Use cp_build_qualified_type, not
        TYPE_MAIN_VARIANT, to get an unqualified version.

        * decl2.c (grok_alignof): Lose.
        (build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
        * typeck.c (c_alignof): Lose.
        * semantics.c (finish_sizeof, finish_alignof): New.
        * parse.y: Use them.
        * cp-tree.h: Declare them.

From-SVN: r45145
2001-08-24 08:07:46 -04:00
Jason Merrill
fd10dd09c8 pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
* pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
        Don't loop in COMPOUND_STMT, FOR_STMT or TRY_BLOCK.
        * tree.c (cp_statement_code_p): A TAG_DEFN is a statement.

From-SVN: r45106
2001-08-22 10:42:22 -04:00
Kaveh R. Ghazi
1c0cc57e79 except.c (TYPE_HASH): Delete.
* except.c (TYPE_HASH): Delete.

	* objc/objc-act.c (HASHFUNCTION): Cast to size_t, not
	HOST_WIDE_INT.

	* tree.c (TYPE_HASH): Delete.

	* tree.h (TYPE_HASH): Define.

ch:
	* tree.c (TYPE_HASH): Moved to ../tree.h.

cp:
	* decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
	GNU_xref_start_scope and GNU_xref_end_scope.

	* tree.c (TYPE_HASH): Moved to ../tree.h.

From-SVN: r45004
2001-08-18 18:11:18 +00:00
Jason Merrill
59a13e0fb4 * tree.c (walk_tree): Walk siblings even if !walk_subtrees.
From-SVN: r44686
2001-08-07 08:09:24 -04:00
Alexandre Petit-Bianco
6ad7895ac2 *** empty log message ***
From-SVN: r44528
2001-07-31 19:28:43 -07:00
Jason Merrill
22d69b599b tweak comment
From-SVN: r44297
2001-07-24 10:55:07 -04:00
Kriang Lerdsuwanakij
dac655014e cp-tree.h (copy_template_template_parm): Rename to ...
* cp-tree.h (copy_template_template_parm): Rename to ...
	(bind_template_template_parm): ... here.
	* tree.c (copy_template_template_parm): Rename to ...
	(bind_template_template_parm): ... here.  Remove the case when
	NEWARGS is NULL_TREE.
	(copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
	BOUND_TEMPLATE_TEMPLATE_PARM.
	* pt.c (lookup_template_class): Adjust.

From-SVN: r43800
2001-07-06 06:36:47 +00:00
Jason Merrill
0401d4997a class.c, [...]: Remove com_interface attribute support.
* class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
        * tree.c (cp_valid_lang_attribute): Warn about use of com_interface
        attribute.

From-SVN: r42465
2001-05-22 15:42:30 -04:00
Jason Merrill
1a6025b4b8 cp-tree.def (START_CATCH_STMT): Lose.
* cp-tree.def (START_CATCH_STMT): Lose.
        * dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
        * tree.c (cp_statement_code_p): Don't case it.
        * semantics.c (cp_expand_stmt): Likewise.
        * except.c (expand_start_catch_block): Don't start any blocks.
        Return the type.
        (expand_end_catch_block): Don't end any blocks.
        * parse.y (handler): Don't pass anything from finish_handler_parms
        to finish_handler.
        * pt.c (tsubst_expr): Likewise.
        * semantics.c (begin_handler): Call note_level_for_catch here.
        (finish_handler_parms): Don't return anything.
        (genrtl_catch_block, begin_catch_block): Lose.
        (genrtl_handler): Call expand_start_catch here.
        * cp-tree.h (START_CATCH_TYPE): Lose.
        (HANDLER_TYPE): New.

From-SVN: r42388
2001-05-21 11:39:19 -04:00
Nathan Sidwell
5158d7eeb7 dump.c (cp_dump_tree, [...]): New case.
* dump.c (cp_dump_tree, USING_STMT case): New case.
	* tree.c (cp_statement_code_p): Add USING_STMT.
	* decl2.c (do_using_directive): Add the using directive statement.

	* tree.c (walk_tree): Reformat an if block.

From-SVN: r41783
2001-05-03 11:02:26 +00:00
Kaveh R. Ghazi
3e411c3ffd call.c: NULL_PTR -> NULL.
cp:
	* call.c: NULL_PTR -> NULL.
	* class.c: Likewise.
	* cvt.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* init.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

f:
	* com.c: NULL_PTR -> NULL.

java:
	* decl.c: NULL_PTR -> NULL.
	* jcf-write.c: Likewise.

From-SVN: r41762
2001-05-02 14:38:35 +00:00
Nathan Sidwell
aa1826e2c4 tree.c (cp_tree_equal): Adjust final switch formatting.
cp:
	* tree.c (cp_tree_equal): Adjust final switch formatting. Add
	't' case.
testsuite:
	* g++.old-deja/g++.pt/typename28.C: New test.

From-SVN: r41462
2001-04-20 16:06:06 +00:00
Jason Merrill
1951a1b6ec cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
* cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
        (TYPE_ANONYMOUS_P): New macro.
        (TAGGED_TYPE_P): New macro.
        * decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
        (grokfndecl, grokvardecl, grokdeclarator): Likewise.
        * tree.c (no_linkage_helper): Likewise.
        * semantics.c (begin_class_definition): Likewise.
        * pt.c (convert_template_argument): Likewise.
        * lex.c (check_for_missing_semicolon): Likewise.

From-SVN: r41303
2001-04-12 10:15:48 -04:00
Richard Henderson
52a11cbfcf IA-64 ABI Exception Handling.
From-SVN: r40924
2001-03-28 03:04:51 -08:00
Bryce McKinlay
60c8748279 [multiple changes]
2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>

	* extend.texi: Document the "java_interface" attribute.

java/:
2001-03-21  Bryce McKinlay  <bryce@albatross.co.nz>

	* gjavah.c (process_file): Mark interface definitions with
	"__attribute__ ((java_interface))".

cp/:
2001-03-22  Bryce McKinlay  <bryce@albatross.co.nz>

	Add support for Java interface method calls.
	* cp-tree.h (struct lang_type): Add java_interface flag.
	(TYPE_JAVA_INTERFACE): New macro.
	* tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
	by setting TYPE_JAVA_INTERFACE.
	* call.c (java_iface_lookup_fn): New static.
	(build_over_call): If calling a method declared in a
	TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
	expression which resolves the function address.
	(build_java_interface_fn_ref): New function.

From-SVN: r40769
2001-03-23 01:49:11 +00:00
Mark Mitchell
92643fea93 Compute DECL_ASSEMBLER_NAME lazily.
* tree.h (DECL_ASSEMBLER_NAME): Compute it lazily.
	(DECL_ASSEMBLER_NAME_SET_P): New macro.
	(SET_DECL_ASSEMBLER_NAME): Likewise.
	(COPY_DECL_ASSEMBLER_NAME): Likewise.
	(set_decl_assembler_name): Declare.
	(lang_set_decl_assembler_name): Likewise.
	* tree.c (lang_set_decl_assembler_name): New variab.e
	(set_decl_assembler_name): New function.
	(init_obstacks): Set lang_set_decl_assembler_name.
	(build_decl): Don't set DECL_ASSEMBLER_NAME.
	* c-decl.c (duplicate_decls): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(builtin_function): Likewise.
	(finish_decl): Likewise.
	* dbxout.c (dbxout_type_methods): Likewise.
	* ggc-common.c (ggc_mark_trees): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* varasm.c (make_decl_rtl): Likewise.

	* class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(add_method): Remove optimization involving comparison of
	DECL_ASSEMBLER_NAME.
	(build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(check_methods): Likewise.
	(build_clone): Likewise.
	(built_vtt): Likewise.
	* cp-tree.h (DECL_NEEDED_P): Likewise.
	* decl.c (pushtag): Likewise.
	(duplicate_decls): Likewise.
	(pushdecl): Likewise.
	(builtin_function): Likewise.
	(build_library_fn_1): Set DECL_LANGUAGE for library functions.
	(build_cp_library_fn): Likewise.
	(maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(make_rtl_for_nonlocal_decl): Likewise.
	(cp_finish_decl): Likewise.
	(grokfndecl): Likewise.
	(grokvardecl): Likewise.
	(grokdeclarator): Likewise.
	(start_function): Likewise.
	(cp_missing_return_ok_p): Likewise.
	* decl2.c (grokclassfn): Likewise.
	(check_classfn): Likewise.
	(finish_static_data_member_decl): Likewise.
	(grokfield): Likewise.
	* error.c (GLOBAL_IORD_P): Remove.
	(dump_global_iord): Improve output.
	(dump_decl): Avoid using DECL_ASSEMBLER_NAME.
	* except.c (nothrow_libfn_p): Summarily reject any function not in
	namespace-scope.
	* init.c (build_java_class_ref): Don't explicitly set
	DECL_ASSEMBLER_NAME after calling mangle_decl.
	* mangle.c (mangle_decl_string): Handle extern "C" functions.
	(mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
	* method.c (set_mangled_name_for_decl): Don't explicitly set
	DECL_ASSEMBLER_NAME after calling mangle_decl.
	(make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
	IDENTIFIER_GLOBAL_VALUE for the thunk.
	* pt.c (set_mangled_name_for_template_decl): Remove.
	(check_explicit_specialization): Don't use it.
	(looup_template_class): Don't set DECL_ASSEMBLER_NAME.
	(tsubst_friend_function): Likewise.
	(tsubst_decl): Likewise.
	(regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
	* rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(tinfo_base_init): Likewise.
	(create_real_tinfo_var): Likewise.
	* search.c (looup_field_1): Likewise.
	* semantics.c (finish_named_return_value): Likewise.
	* tree.c (init_tree): Set lang_set_decl_assembler_name.

	* com.c (builtin_function): Use SET_DECL_ASSEMBLER_NAME.

	* class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
	(layout_class): Likewise.
	(layout_class_method): Likewise.
	(emit_register_classes): Likewise.
	* decl.c (builtin_function): Likewise.
	(give_name_to_locals): Likewise.

From-SVN: r40642
2001-03-19 23:50:04 +00:00
Mark Mitchell
19e7881c81 varasm.c (assemble_alias): Use DECL_ASSEMBLER_NAME...
* varasm.c (assemble_alias): Use DECL_ASSEMBLER_NAME, not the
	contents of the RTL, to determine the name of the object.

	* tree.h (DECL_RTL): Allocate RTL lazily.
	(SET_DECL_RTL): New macro.
	(DECL_RTL_SET_P): Likewise.
	(COPY_DECL_RTL): Likewise.
	(DECL_RTL_IF_SET): Likewise.
	* varasm.c (make_decl_rtl): Add assertions about the kind of
	declaration we are processing.
	* c-decl.c (duplicate_decls): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	(start_decl): Likewise.
	(finish_decl): Likewise.
	* c-semantics.c (emit_local_var): Likewise.
	* calls.c (expand_call): Likewise.
	* dbxout.c (dbxout_symbol): Likewise.
	* emit-rtl.c (unshare_all_rtl): Likewise.
	(unshare_all_decls): Likewise.
	(reset_used_decls): Likewise.
	* expr.c (store_constructor): Likewise.
	(safe_from_p): Likewise.
	(expand_expr): Likewise.
	* function.c (put_var_into_stack): Likewise.
	(instantiate_decls_1): Likewise.
	(assign_parms): Likewise.
	(expand_function_start): Likewise.
	(expand_function_end): Likewise.
	* ggc-common.c (gcc_mark_trees): Likewise.
	* integrate.c (function_cannot_inline_p): Likewise.
	(copy_decl_for_inlining): Likewise.
	(expand_inline_function): Likewise.
	(integrate_parm_decls): Likewise.
	(integrate_decl_tree): Likewise.
	* print-tree.c (print_node): Likewise.
	* reg-stack.c (stack_result): Likewise.
	* stmt.c (label_rtx): Likewise.
	(expand_return): Likewise.
	(expand_decl): Likewise.
	(expand_decl_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	* toplev.c (check_global_declarations): Likewise.
	(rest_of_decl_compilation): Likewise.
	* tree.c (simple_cst_equal): Likewise.
	* objc/objc-act.c (generate_static_references): Likewise.

	* class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	* cp-tree.h (DECL_IN_MEMORY_P): Likewise.
	* decl.c (duplicate_decls): Likewise.
	(builtin_function): Likewise.
	(build_library_fn): Likewise.
	(build_cp_library_fn): Likewise.
	(check_initializer): Likewise.
	(cp_finish_decl): Likewise.
	* decl2.c (grokfield): Likewise.
	(grok_function_init): Remove #if 0'd code.
	(finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	* friend.c (do_friend): Likewise.
	* init.c (get_temp_regvar): Likewise.
	* method.c (make_thunk): Likewise.
	* pt.c (tsubst_friend_function): Likewise.
	(tsubst_decl): Likewise.
	(regenerate_decl_from_template): Likewise.
	* semantics.c (genrtl_named_return_value): Likewise.
	(expand_body): Likewise.
	(genrtl_finish_function): Likewise.
	* tree.c (cp_tree_equal): Likewise.

	* com.c (ffecom_member_phase_2): Use COPY_DECL_RTL,
	DECL_RTL_SET_P, etc.
	(duplicate_decls): Likewise.
	(start_decl): Likewise.

	* class.c (build_static_field_ref): Likewise.
	(make_method_value): Likewise.
	(get_dispatch_table): Likewise.

	* decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.

From-SVN: r40482
2001-03-15 02:51:03 +00:00
Nathan Sidwell
394fd77650 Kill remnants of this is variable.
cp:
	Kill remnants of this is variable.
	* cp-tree.h (flag_this_is_variable): Remove.
	* decl2.c (flag_this_is_variable): Remove.
	* class.c (fixed_type_or_null): Add cdtor parm. Adjust.
	(build_vbase_path): The path is non-static, even in a cdtor.
	(resolves_to_fixed_type_p): Add additional return value.
	* search.c (init_vbase_pointers): Adjust.
	* tree.c (lvalue_p_1): Adjust.
	* typeck.c (mark_addressable): Adjust.

From-SVN: r39676
2001-02-14 10:49:27 +00:00
Nathan Sidwell
7773899b5f tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to check whether we already have the type.
cp:
	* tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
	check whether we already have the type.
testsuite:
	* g++.old-deja/g++.pt/deduct5.C: New test.

From-SVN: r39665
2001-02-14 09:45:29 +00:00
Mark Mitchell
1f84ec231e Remove old ABI support.
From-SVN: r39599
2001-02-12 09:58:18 +00:00
Jakub Jelinek
e92730aac5 cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
* cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
	* tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
	Remove.
	* call.c (convert_class_to_reference, build_user_type_conversion_1,
	add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.

From-SVN: r39412
2001-02-02 20:06:55 +01:00
Kaveh R. Ghazi
c913b6f18e configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.
* configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.

	* Makefile.in: Remove all dependencies on defaults.h.
	* builtins.c: Don't include defaults.h.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-pragma.c: Likewise.
	* c-typeck.c: Likewise.
	* combine.c: Likewise.
	* i386.c: Likewise.
	* frame-ia64.c: Likewise.
	* cppexp.c: Likewise.
	* crtstuff.c: Likewise.
	* dbxout.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* final.c: Likewise.
	* frame-dwarf2.c: Likewise.
	* libgcc2.c: Likewise.
	* optabs.c: Likewise.
	* profile.c: Likewise.
	* sdbout.c: Likewise.
	* toplev.c: Likewise.
	* tradcif.y: Likewise.
	* tree.c: Likewise.
	* varasm.c: Likewise.

ch:
	* Makefile.in: Remove all dependencies on defaults.h.
	* decl.c: Don't include defaults.h.
	* timing.c: Likewise.

cp:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* call.c: Don't include defaults.h.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* pt.c: Likewise.
	* rtti.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.

f:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* com.c: Don't include defaults.h.

java:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* decl.c: Don't include defaults.h.
	* expr.c: Likewise.
	* parse.y: Likewise.

From-SVN: r39308
2001-01-28 01:50:22 +00:00
Nathan Sidwell
7f805b8ffc tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of BASELINK_P.
cp:
	* tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of
	BASELINK_P.

From-SVN: r39112
2001-01-18 09:33:08 +00:00
Jeffrey Oldham
ea4f1fce75 defaults.h (SUPPORTS_INIT_PRIORITY): New macro to indicate the linker supports the init_priority C++ attribute.
gcc/ChangeLog:
2001-01-14  Jeffrey Oldham  <oldham@codesourcery.com>

	* defaults.h (SUPPORTS_INIT_PRIORITY): New macro to indicate the
	linker supports the init_priority C++ attribute.
	* tm.texi (SUPPORTS_INIT_PRIORITY): Documentation for new macro.
	* config/mips/iris6.h (SUPPORTS_INIT_PRIORITY): Indicate Irix
	linker does not support init_priority C++ attribute.

gcc/cp/ChangeLog:
2001-01-14  Jeffrey Oldham  <oldham@codesourcery.com>

	* tree.c: Add defaults.h
	(cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
	* Make-lang.in (cp/tree.o): Add defaults.h.

From-SVN: r39023
2001-01-15 03:33:56 +00:00
Jason Merrill
96d6c6107a tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE for v3 ABI.
* tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
        for v3 ABI.

        * typeck.c (cp_truthvalue_conversion): New fn.
        * cvt.c (ocp_convert): Use it.

        * cp-tree.h: Lose c-common.c decls.

        * typeck.c (build_unary_op): Restore old &a.f diagnostic code.
        * cvt.c (convert_to_void): Use type_unknown_p.

From-SVN: r38636
2001-01-02 14:48:02 -05:00
Jason Merrill
477f6664a4 pt.c (tsubst_decl): A FUNCTION_DECL has DECL_RESULT, not DECL_TEMPLATE_RESULT.
* pt.c (tsubst_decl): A FUNCTION_DECL has DECL_RESULT, not
        DECL_TEMPLATE_RESULT.

        * search.c (lookup_field_r): Call lookup_fnfields_1, not
        lookup_fnfields_here.

        * parse.y (typename_sub2): Return the TYPE_DECL, not the type.

        * call.c (build_object_call): Also allow conversions that return
        reference to pointer to function.
        (add_conv_candidate): Handle totype being ref to ptr to fn.
        (build_field_call): Also allow members of type reference to function.
        Lose support for calling pointer to METHOD_TYPE fields.

        * error.c (dump_expr): Handle *_CAST_EXPR.

        * typeck2.c (build_scoped_ref): Always convert to the naming class.

        * tree.c (break_out_cleanups): Lose.
        * cp-tree.h: Remove prototype.
        * typeck.c (build_component_ref): Don't break_out_cleanups.
        (build_compound_expr): Likewise.
        * semantics.c (finish_expr_stmt): Likewise.

From-SVN: r38417
2000-12-21 12:50:10 -05:00
Kriang Lerdsuwanakij
221c7a7ff7 tree.c (no_linkage_helper): Use CLASS_TYPE_P instead of IS_AGGR_TYPE.
* tree.c (no_linkage_helper): Use CLASS_TYPE_P instead of
	IS_AGGR_TYPE.

	* g++.old-deja/g++.oliva/template5.C: Remove XFAILs.

From-SVN: r38302
2000-12-16 08:06:04 +00:00
Nathan Sidwell
38da603971 class.c (check_field_decls): Don't special case anonymous fields in error messages.
* class.c (check_field_decls): Don't special case anonymous
	fields in error messages.
	(note_name_declared_in_class): Use %D on diagnostic.

	* tree.c (pod_type_p): Use strip_array_types.
	(cp_valid_lang_attribute): Likewise.
	* typeck.c (cp_type_quals): Strip arrays separately, to avoid
	multiple evaluations.
	(cp_has_mutable_p): Use strip_array_types.

From-SVN: r38112
2000-12-07 14:26:37 +00:00
Jason Merrill
c00996a3ea mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
* mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
        (write_builtin_type): Pass intSI_type_node and the like through
        type_for_mode.
        * method.c (process_overload_item): Mangle VECTOR_TYPEs with 'o'.
        Pass intSI_type_node and the like through type_for_mode.
        * decl2.c (arg_assoc_type): Handle VECTOR_TYPE like COMPLEX_TYPE.
        * pt.c (tsubst, unify): Likewise.
        * tree.c (walk_tree): Likewise.
        * error.c (dump_type): Likewise.
        (dump_type_prefix, dump_type_suffix): Don't bother with VECTOR_TYPE.

        * Make-lang.in: Tweak top comment for emacs.
        (cp/TAGS): Restore.

        * except.c (expand_throw): Use push_throw_library_fn for _Jv_Throw.

        * pt.c (tsubst_decl): Call clone_function_decl here.
        (do_decl_instantiation): Not here.
        * class.c (clone_function_decl): Robustify.

        * decl.c (store_bindings): Only search in the non modified
        old_bindings for duplicates.

From-SVN: r37999
2000-12-04 12:00:04 -05:00
Mark Mitchell
9ccb25d582 tree.h (mark_tree_hashtable): New function.
* tree.h (mark_tree_hashtable): New function.
	* tree.c (mark_tree_hashtable_entry): New function.
	(mark_tree_hashtable): Likewise.

	* tree.c (struct list_hash): Remove.
	(list_hash_table): Make it be an htab.
	(struct list_proxy): New type.
	(list_hash_eq): New function.
	(list_hash_pieces): Renamed from ...
	(list_hash): ... this.
	(list_hash_lookup): Remove.
	(list_hash_add): Remove.
	(hash_tree_cons): Use the generic hashtable.
	(mark_list_hash): Remove.
	(init_tree): Create the hashtable.

From-SVN: r37783
2000-11-27 07:09:20 +00:00
Joseph Myers
da61dec94b Use memset/memcmp instead of bzero/bcmp.
* c-decl.c (duplicate_decls, copy_lang_decl), dwarfout.c
	(dwarfout_line), gcc.c (main, save_string), tree.c (init_obstacks,
	perm_calloc, get_identifier, maybe_get_identifier,
	real_value_from_int_cst, simple_cst_equal), varasm.c
	(assemble_name, assemble_real, immed_real_const_1,
	compare_constant_1, decode_rtx_const, output_constant_pool): Use
	strrchr () instead of rindex ().  Use memcmp () instead of bcmp
	().  Use memcpy () instead of bcopy ().  Use memset () instead of
	bzero ().

cp:
	* tree.c (cp_tree_equal): Use memcmp () instead of bcmp ().

From-SVN: r37228
2000-11-03 18:55:54 +00:00
Mark Mitchell
ad50e811dc cp-tree.h (DECL_EXTERNAL_LINKAGE_P): New macro.
* cp-tree.h (DECL_EXTERNAL_LINKAGE_P): New macro.
	(linkage_kind): New enumeration.
	(decl_linkage): New function.
	* decl2.c (comdat_linkage): Extend comment.
	* error.c (dump_function_decl): Print the arguments used to
	instantiate a template, even when not printing the type of the
	function.
	* pt.c (convert_nontype_argument): Use DECL_EXTERNAL_LINKAGE_P,
	not TREE_PUBLIC, to test for external linkage.
	* tree.c (decl_linkage): New function.

From-SVN: r37150
2000-10-31 01:30:59 +00:00
Geoff Keating
7a0f14e58b decl2.c (arg_assoc_type): Handle VECTOR_TYPE.
* decl2.c (arg_assoc_type): Handle VECTOR_TYPE.
	* error.c (dump_type): Handle VECTOR_TYPE like POINTER_TYPE.
	(dump_type_prefix): Print vector-of-int as 'int vector'.
	(dump_type_suffix): Handle VECTOR_TYPE like POINTER_TYPE.
	* tree.c (walk_tree): Handle VECTOR_TYPE.

From-SVN: r37002
2000-10-22 01:38:35 +00:00
Jason Merrill
ba523395f1 tree.c (walk_tree): Don't walk into default args.
* tree.c (walk_tree): Don't walk into default args.

        * error.c (dump_expr): Use host_integerp.

From-SVN: r36984
2000-10-20 17:26:26 -04:00
Mark Mitchell
fab701dab0 * tree.c (mark_local_for_remap_r): Handle CASE_LABELs.
From-SVN: r36553
2000-09-20 18:28:36 +00:00