Commit Graph

290 Commits

Author SHA1 Message Date
Zack Weinberg
7437519c9e Make-lang.in (parse.c): Adjust expected number of shift-reduce conflicts.
* Make-lang.in (parse.c): Adjust expected number of
	shift-reduce conflicts.
	(decl.o): Depend on diagnostic.h.
	* decl.c: Include diagnostic.h.
	(grokdeclarator): Check for null pointer.
	(finish_function): Don't abort when
	current_binding_level->parm_flag != 1, if errors have
	occurred; throw away the statement tree and extra binding
	levels, and continue.
	* lex.c (note_list_got_semicolon): Check for null pointer.
	* method.c (hack_identifier): Just return error_mark_node if
	value is error_mark_node.
	* parse.y (primary: TYPEID(type_id)): No need to use
	TYPE_MAIN_VARIANT here.
	(handler_seq): Accept an empty list of catch clauses and
	generate a fake handler block to avoid later crashes.
	(ansi_raise_identifier): Accept the error token too.
	* semantics.c (begin_class_definition,
	finish_class_definition): Check for error_mark_node.

From-SVN: r49163
2002-01-24 03:27:30 +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
Jason Merrill
cdd2559cec decl.c (begin_constructor_body, [...]): New fns.
* decl.c (begin_constructor_body, begin_destructor_body): New fns.
        (begin_function_body): Call them and keep_next_level.
        * init.c (emit_base_init): Call keep_next_level.
        * semantics.c (setup_vtbl_ptr): Lose.
        * cp-tree.h (struct cp_language_function): Remove vtbls_set_up_p.
        (vtbls_set_up_p): Lose.
        * pt.c (tsubst_expr, CTOR_INITIALIZER): Call emit_base_init.
        * method.c (do_build_copy_constructor): Likewise.
        (synthesize_method): Call finish_mem_initializers.
        * parse.y (nodecls): Likewise.

From-SVN: r48948
2002-01-17 08:07:27 -05:00
Jason Merrill
15eb1e433c decl2.c (coerce_new_type): Downgrade error for size_t mismatch to pedwarn.
* decl2.c (coerce_new_type): Downgrade error for size_t mismatch
        to pedwarn.

        * method.c (make_thunk): If !flag_weak, give the thunk the
        function's linkage.
        (use_thunk): Here, too.

From-SVN: r48613
2002-01-07 15:52:32 -05: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
ade3dc07d5 c-common.h (COMPOUND_STMT_BODY_BLOCK): New macro.
* c-common.h (COMPOUND_STMT_BODY_BLOCK): New macro.

        * Make-lang.in (parse.h): Separate rule, just depend on parse.c.

        Use cleanups to run base and member destructors.
        * init.c (push_base_cleanups): New function, split out from...
        (build_delete): ...here.  Lose !TYPE_HAS_DESTRUCTOR code.
        * decl.c (finish_destructor_body): Move vbase destruction code to
        push_base_cleanups.
        (begin_function_body, finish_function_body): New fns.
        (finish_function): Move [cd]tor handling and call_poplevel to
        finish_function_body.
        (pushdecl): Skip the new level.
        * semantics.c (genrtl_try_block): Don't call end_protect_partials.
        (setup_vtbl_ptr): Call push_base_cleanups.
        * method.c (synthesize_method): Call {begin,end}_function_body.
        * pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
        * cp-tree.h: Declare new fns.
        * parse.y (function_body, .begin_function_body): New nonterminals.
        (fndef, pending_inline, function_try_block): Use function_body.
        (ctor_initializer_opt, function_try_block): No longer has a value.
        (base_init): Remove .set_base_init token.
        (.set_base_init, compstmt_or_error): Remove.
        * Make-lang.in (parse.c): Expect two fewer s/r conflicts.

From-SVN: r47987
2001-12-13 22:01:59 -05:00
Jason Merrill
a0de9d2025 decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
* decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
        * semantics.c (genrtl_start_function): Don't pass
        parms_have_cleanups or push an extra binding level.
        (genrtl_finish_function): Lose cleanup_label cruft.

        * cp-tree.h (struct cp_language_function): Remove x_ctor_label.
        (ctor_label): Remove.
        * semantics.c (finish_return_stmt): Lose ctor_label support.
        * decl.c (finish_constructor_body, mark_lang_function): Likewise.
        * typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not
        dtor_label.

        * call.c (build_new_method_call): Let resolves_to_fixed_type_p
        check for [cd]tors.
        * class.c (fixed_type_or_null, case INDIRECT_REF): Fix.

        * decl.c (finish_function): Check VMS_TARGET, not VMS.

        * decl.c (start_cleanup_fn): Remove redundant pushlevel.
        (end_cleanup_fn): And poplevel.

        * semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
        if we're in a template.

From-SVN: r47962
2001-12-12 20:37:52 -05:00
Nathan Sidwell
713ccd0c6c re PR c++/164 (bogus error throwing class with inaccessible base)
cp:
	PR g++/164
	* init.c (sort_base_init): Allow binfos to be directly specified.
	* method.c (do_build_copy_constructor): Explicitly convert to the
	base instance.
	(do_build_assign_ref): Likewise.
testsuite:
	* g++.dg/inherit/base1.C: New test.

From-SVN: r47603
2001-12-04 09:48:53 +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
Jason Merrill
8a2b77e737 parse.y: Add ...
* parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
        * decl.c (make_typename_type): Handle getting a class template.
        * search.c (lookup_field_r): A class template is good enough for
        want_type.

        * call.c (convert_like_real): Only use cp_convert for the bad part.
        (standard_conversion): Also allow bad int->enum.
        * typeck.c (ptr_reasonably_similar): Also allow functions to
        interconvert.  Pointers to same-size integers are reasonably
        similar.

        * cvt.c (convert_to_void): If we build a new COND_EXPR, always
        give it void type.

From-SVN: r47060
2001-11-15 10:09:43 -05:00
Stan Shebs
dff94ad747 cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
* cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
        (fnaddr_from_vtable_entry): Remove decl.
        * method.c (use_thunk): Update comment.

From-SVN: r44587
2001-08-03 00:14:01 +00:00
Nathan Sidwell
befe7c6146 The 3.0 ABI no longer has vbase pointer fields.
cp:
	The 3.0 ABI no longer has vbase pointer fields.
	* cp-tree.h (VBASE_NAME, VBASE_NAME_FORMAT, VBASE_NAME_P,
	FORMAT_VBASE_NAME): Remove.
	* method.c (do_build_copy_constructor): Adjust.
	(do_build_assign_ref): Adjust.
	* search.c (lookup_field_r): Adjust.
	* typeck.c (build_component_ref): Adjust.

	The 3.0 ABI always has a vtable pointer at the start of every
	polymorphic class.
	* rtti.c (build_headof_sub): Remove.
	(build_headof): Adjust.
	(get_tinfo_decl_dynamic): No need to check flag_rtti
	here. Adjust.
	(create_real_tinfo_var): Explain why we need a hidden name.

From-SVN: r44515
2001-07-31 16:12:04 +00:00
Richard Henderson
594280a396 * method.c (pending_inlines): Remove.
From-SVN: r44443
2001-07-28 18:39:17 -07:00
Jason Merrill
01f9e964bd cvt.c (convert_lvalue): New fn.
* cvt.c (convert_lvalue): New fn.
        * cp-tree.h: Declare it.
        * method.c (do_build_assign_ref): Use it.
        (do_build_copy_constructor): Convert parm to base types
        before calling base constructors.

        * typeck.c (check_return_expr): Check DECL_ALIGN instead of
        DECL_USER_ALIGN.  Check flag_elide_constructors instead of
        optimize.
        * semantics.c (cp_expand_stmt): Don't destroy the named return value.

From-SVN: r43780
2001-07-05 11:39:36 -04:00
Nathan Sidwell
85a9a0a28b re PR c++/3061 (kde2/artsd miscompilation (part 2))
PR c++/3061
        * class.c (build_secondary_vtable): Use assert, rather than an error
        message.
        (dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
        (dfs_accumulate_vtbl_inits): A lost primary virtual base may
        be between ORIG_BINFO and RTTI_BINFO, but neither of them.
        Don't set BINFO_VTABLE for a primary virtual base.

Co-Authored-By: Jason Merrill <jason@redhat.com>

From-SVN: r43006
2001-06-08 07:10:29 -04:00
Jason Merrill
d0cd8b4401 cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
* cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
        (struct lang_decl_flags): Lose generate_with_vtable_p.
        (BV_GENERATE_THUNK_WITH_VTABLE_P): Lose.
        * class.c (copy_virtuals): Adjust.
        * decl2.c (mark_vtable_entries): Adjust.
        * method.c (make_thunk, build_vtable_entry): Adjust.
        * class.c (update_vtable_entry_for_fn): Only look as far as the
        first defining class.
        (build_vtbl_initializer): Put nothing in the slot for a function only
        defined in a lost primary virtual base.
        (add_vcall_offset_vtbl_entries_1): Use the same code for
        the lost primary case and the normal case.
        (dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
        (get_vfield_offset, get_derived_offset): Lose.
        (dfs_find_final_overrider): Use look_for_overrides_here.
        (get_matching_virtual): New fn.
        * semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
        not BV_VCALL_INDEX.
        * search.c (look_for_overrides_here): Split out from...
        (look_for_overrides_r): Here.

        * class.c (find_final_overrider): Return error_mark_node on error.

From-SVN: r42949
2001-06-06 17:52:52 -04:00
Neil Booth
90e0c41055 dwarfout.c (dwarfout_init): Add cast.
* dwarfout.c (dwarfout_init): Add cast.
	* sched-deps.c (sched_analyze_insn): Remove unused vars.
	* unwind-dw2-fde.c (_Unwind_Find_FDE): Flag unused parameter so.
cp:
	* method.c (build_mangled_C99_name): Remove unused prototype.

From-SVN: r41996
2001-05-12 16:16:23 +00:00
Mark Mitchell
1b28d441b2 method.c (use_thunk): Make sure that thunks really are emitted when requested.
* method.c (use_thunk): Make sure that thunks really are emitted
	when requested.

From-SVN: r41621
2001-04-27 05:08:39 +00:00
Mark Mitchell
fcca588c94 invoke.texi: Document more C++ command-line options.
* invoke.texi: Document more C++ command-line options.

	Remove support for -Wextern-inline, -flabels-ok, -fvtable-gc, -fxref
	* cp-tree.h (warn_extern_inline): Remove.
	(flag_labels_ok): Likewise.
	* decl2.c (warn_extern_inline): Remove.
	(flag_labels_ok): Likewise.
	(lang_f_options): Remove labels-ok, vtable-gc, xref.
	(unsupported_options): Add them.
	(cxx_decode_option): Don't accept -Wextern-inline.
	* method.c (hack_identifier): Remove -flabels-ok support.
	* spew.c (see_typename): Likewise.

	* g++.dg/vtgc1.C: XFAIL.
	* g++.old-deja/g++.other/crash18.C: Likewise.

From-SVN: r41609
2001-04-26 20:05:34 +00:00
Nathan Sidwell
bbb53468cc method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
cp:
	* method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
testsuite:
	* g++.old-deja/g++.other/crash40.C: New test.

From-SVN: r41294
2001-04-12 07:42:17 +00:00
Nathan Sidwell
a209577830 method.c (implicitly_declare_fn): Commonize code for copy ctor and assignment op.
cp:
	* method.c (implicitly_declare_fn): Commonize code for copy ctor
	and assignment op. Set TREE_USED for parameter.
testsuite:
	* g++.old-deja/g++.other/warn6.C: New test.

From-SVN: r41243
2001-04-11 08:43:16 +00:00
Mark Mitchell
79065db2d1 cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
* cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
	* decl.c (duplicate_decls): Adjust accordingly.
	(maybe_commonize_var): Likewise.
	(grokfndecl): Likewise.
	(start_function): Likewise.
	(start_method): Likewise.
	* decl2.c (key_method): Likewise.
	(import_export_decl): Likewise.
	* method.c (implicitly_declare_fn): Likewise.
	* optimize.c (maybe_clone_body): Likewise.

From-SVN: r41144
2001-04-06 06:33:07 +00:00
Jakub Jelinek
a1c2b86d84 method.c (do_build_assign_ref): Don't use build_modify_expr for anonymous aggregates...
* method.c (do_build_assign_ref): Don't use build_modify_expr for
	anonymous aggregates, since they don't have assignment operator
	method.
	* decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
	assignment operators for anonymous structure fields.

	* g++.old-deja/g++.other/anon8.C: New test.

From-SVN: r40746
2001-03-22 18:00:28 +01: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
Jason Merrill
5daf7c0a17 tree.h (DECL_UNINLINABLE): Move from C++ frontend.
* tree.h (DECL_UNINLINABLE): Move from C++ frontend.
        (struct tree_decl): Add uninlinable bitfield.
        * c-decl.c (duplicate_decls): Set it.
        * integrate.c (function_cannot_inline_p): Check it.
        * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
        (DECL_UNINLINABLE): Move to middle-end.

        * dwarf2out.c (add_name_and_src_coords_attributes): Don't add
        DW_AT_MIPS_linkage_name to abstract methods.
        (dwarf2out_abstract_function): Emit class context before calling
        set_decl_abstract_flags.  Don't clear DECL_ABSTRACT.
        (gen_subprogram_die): Remove obsolete code.
        (gen_member_die): Don't include clones in the member list.
        (gen_decl_die): Emit abstract info for clone origin.
        * dwarfout.c (output_type): Don't include clones in the member list.
        * dbxout.c (dbxout_type_methods): Ignore abstract methods.
        * toplev.c (note_deferral_of_defined_inline_function): Don't clear
        DECL_ABSTRACT on a function that already has it set.
        * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
        * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
        * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
        * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
        parms and outer BLOCK.  note_deferral_of_defined_inline_function.

        * dwarf2out.c (gen_formal_types_die): Also accept a FUNCTION_DECL.
        (get_subprogram_die): Pass it in.
        * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
        second parm of op=.

From-SVN: r39945
2001-02-21 09:42:27 -05:00
Jason Merrill
e0fff4b3a7 Do put the VTT parameter in DECL_ARGUMENTS.
* cp-tree.h (struct cp_language_function): Add x_vtt_parm.
        (current_vtt_parm): New macro.
        (struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
        (DECL_HAS_VTT_PARM_P): New macro.
        (DECL_VTT_PARM): Remove.
        (FUNCTION_FIRST_USER_PARMTYPE, FUNCTION_FIRST_USER_PARM): New macros.
        * decl.c (duplicate_decls): Only copy the operator code if
        appropriate.
        (start_function): Set current_vtt_parm.
        (lang_mark_tree): Don't mark vtt_parm.
        * decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
        DECL_ARGUMENTS.  Set DECL_HAS_VTT_PARM_P.
        * class.c (build_clone): Maybe remove the VTT parm.
        * optimize.c (maybe_clone_body): Set up the VTT parm.
        * pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
        * call.c (build_over_call): Just allow the VTT arg.
        * method.c (make_thunk): Don't set DECL_VTT_PARM.
        (do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
        (synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
        * decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
        * error.c (dump_function_decl): Likewise.
        * call.c (build_user_type_conversion_1, convert_like_real): Abort
        if we try to call a constructor with in-charge or VTT parms.
        * method.c (skip_artificial_parms_for): New fn.
        * call.c (add_function_candidate, build_over_call): Call it.
        * call.c (build_new_method_call): Use current_vtt_parm.
        * init.c (expand_virtual_init): Likewise.
        * class.c (same_signature_p): No longer static.
        * cp-tree.h: Declare it.
        * search.c (look_for_overrides_r): Use it.

From-SVN: r39841
2001-02-18 14:08:00 -05:00
Nathan Sidwell
bfc8e1e2c4 cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c section.
cp:
	* cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
	section.
	* init.c (emit_base_init): Remove incorrect comment about
	virtual bases.
	* method.c (make_thunk): Fix comment alignment.

From-SVN: r39679
2001-02-14 10:57:59 +00:00
Mark Mitchell
1f84ec231e Remove old ABI support.
From-SVN: r39599
2001-02-12 09:58:18 +00:00
Jason Merrill
bd0d5d4a5e search.c (shared_member_p): New function.
* search.c (shared_member_p): New function.
        (lookup_field_r): Use it.
        * cp-tree.h (SHARED_MEMBER_P): Remove.

        * method.c (process_overload_item): Handle template-dependent array
        bounds.
        * pt.c (type_unification_real): If we end up with undeduced nontype
        parms, try again.

        * decl.c (lookup_name_real): Tweak warning to refer to decls, not
        types.

        * typeck2.c (friendly_abort): Don't say anything if we have
        earlier errors or sorries.

        * decl.c (check_tag_decl): Notice attempts to redefine bool and
        wchar_t.  Ignore if in_system_header.

        * decl.c (maybe_push_cleanup_level): New fn...
        (start_decl_1): ...split out from here.
        * cvt.c (build_up_reference): Use it.
        * cp-tree.h: Declare it.

From-SVN: r39540
2001-02-08 10:54:39 -05:00
Alexandre Oliva
518fed76bc method.c (build_mangled_name): Protect flush_repeats() from error_mark_node.
* method.c (build_mangled_name) [old abi]: Protect flush_repeats()
from error_mark_node.

From-SVN: r39460
2001-02-05 17:15:33 +00:00
Joseph Myers
718b8ea51f tree.c, tree.h (build_parse_node): Remove; was identical to build_nt.
* tree.c, tree.h (build_parse_node): Remove; was identical to
	build_nt.
	* c-lang.c (start_cdtor), objc/objc-act.c
	(build_module_descriptor): Use build_nt instead of
	build_parse_node.

cp:
	* decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
	make_reference_declarator, make_call_declarator), method.c
	(implicitly_declare_fn), parse.y (namespace_using_decl,
	notype_unqualified_id, expr_or_declarator, new_type_id,
	after_type_declarator, direct_after_type_declarator,
	notype_declarator, complex_notype_declarator,
	complex_direct_notype_declarator, qualified_id,
	notype_qualified_id, overqualified_id, direct_new_declarator,
	absdcl, direct_abstract_declarator, conversion_declarator), pt.c
	(tsubst), semantics.c (begin_constructor_declarator): Use build_nt
	instead of build_parse_node.

From-SVN: r39332
2001-01-29 18:57:24 +00:00
Jakub Jelinek
324ffb8c3d mangle.c (write_mangled_name, [...]): Mangle overloaded operators even in "C" linkage.
* mangle.c (write_mangled_name, write_encoding): Mangle overloaded
	operators even in "C" linkage.
	* method.c (set_mangled_name_for_decl): Likewise.
	* decl.c (grokfndecl): Call set_mangled_name_for_decl even for
	overloaded operators in "C" linkage.

	* g++.old-deja/g++.other/mangle2.C: New test.

From-SVN: r39257
2001-01-25 08:35:21 +01:00
Mark Mitchell
6c41818449 output.h (make_function_rtl): Remove prototype.
* output.h (make_function_rtl): Remove prototype.
	(make_decl_rtl): Likewise.
	* varasm.c (make_function_rtl): Remove.
	(make_decl_rtl): Determine top-levelness from DECL_CONTEXT, rather
	than from a third parameter.
	* tree.h (make_decl_rtl): Remove last parameter.
	* c-decl.c (builtin_function): Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	(start_function): Likewise.
	* except.c (call_get_eh_context): Likewise.
	* expr.c (emit_block_move): Likewise.
	(clear_storage): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* toplev.c (rest_of_decl_compilation): Likewise.
	* objc/objc-act.c (create_builtin_decl): Likewise.
	(synth_module_prologue): Likewise.
	(generate_static_reference): Likewise.
	(build_selector_reference_decl): Likewise.
	(build_class_reference_decl): Likewise.
	(build_objc_string_decl): Likewise.
	(build_protocol_reference): Likewise.

	* class.c (finish_struct_1):  Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	* decl.c (builtin_function): Likewise.
	(build_cp_library_fn): Likewise.
	(check_initializer): Likewise.
	(make_rtl_for_nonlocal_decl): Likewise.
	(cp_finish_decl): Likewise.
	(start_function): Likewise.
	* decl2.c (finish_anon_union): Likewise.
	* friend.c (do_friend): Likewise.
	* init.c (build_java_class_ref): Likewise.
	* method.c (make_thunk): Likewise.
	* pt.c (tsubst_friend_function): Likewise.
	* semantics.c (expand_body): Likewise.

	* com.c (ffecom_init_zero_):  Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	(ffecom_lookup_label_): Likewise.
	(builtin_function): Likewise.
	(start_function): Likewise.

	* class.c (build_utf8_ref): Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	(build_class_ref): Likewise.
	(build_static_field_ref): Likewise.
	(get_dispatch_table): Likewise.
	(layout_class_method): Likewise.
	(emit_register_classes): Likewise.
	* constants.c (build_constant_data_ref): Likewise.
	* decl.c (builtin_function): Likewise.
	(create_primitive_vtable): Likewise.
	* expr.c (build_known_method_def): Likewise.
	(build_jni_stub): Likewise.
	(java_lang_expand_expr): Likewise.

From-SVN: r38884
2001-01-10 23:06:30 +00:00
Nathan Sidwell
03378143ac Implement exceptions specifiers for implicit member functions.
cp:
	Implement exceptions specifiers for implicit member functions.
	* cp-tree.h (merge_exceptions_specifiers): Declare new function.
	* method.c (synthesize_exception_spec): New function.
	(locate_dtor, locate_ctor, locate_copy): New functions.
	(implicitly_declare_fn): Generate the exception spec too.
	* search.c (check_final_overrider): Check artificial functions
	too.
	* typeck2.c (merge_exception_specifiers): New function.
testsuite:
	* g++.old-deja/g++.eh/spec6.C: Remove remaining XFAIL.

From-SVN: r38659
2001-01-03 14:39:10 +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
Nathan Sidwell
31b1b95769 method.c (do_build_copy_constructor): Preserve cv qualifications when accessing source object members.
cp:
	* method.c (do_build_copy_constructor): Preserve cv
	qualifications when accessing source object members.
	(do_build_assign_ref): Likewise. Remove separate diagnostics for
	unnamed fields.
testsuite:
	* g++.old-deja/g++.other/op3.C: New test.

From-SVN: r37896
2000-11-30 16:51:54 +00:00
Nathan Sidwell
717e3f7376 method.c (do_build_assign_ref): Construct appropriately CV-qualified base reference.
cp:
	* method.c (do_build_assign_ref): Construct appropriately
	CV-qualified base reference. Don't allow const casts in base
	conversion.
testsuite:
	* g++.old-deja/g++.other/op2.C: New test.

From-SVN: r37893
2000-11-30 16:03:16 +00:00
Joseph Myers
9399bad37b method.c (build_mangled_C9x_name): Rename to build_mangled_C99_name.
cp:
	* method.c (build_mangled_C9x_name): Rename to
	build_mangled_C99_name.  Change C9X references in comments to
	refer to C99.

testsuite:
	* gcc.c-torture/execute/memcheck/driver.c,
	gcc.c-torture/execute/memcheck/driver.h, gcc.dg/cpp/if-3.c: Change
	C9X references to refer to C99.

From-SVN: r37745
2000-11-25 19:50:51 +00:00
Joseph Myers
9473c5226b * collect2.c (main, write_c_file_stat), gcc.c (translate_options,
process_command, main), gcov.c (open_files, output_data), tlink.c
	(frob_extension, scan_linker_output), toplev.c
	(file_name_nondirectory): Use strchr () and strrchr () instead of
	index () and rindex ().

cp:
	* dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
	(build_overload_value), repo.c (open_repo_file), xref.c
	(open_xref_file): Use strchr () and strrchr () instead of index ()
	and rindex ().

f:
	* com.c (open_include_file, ffecom_open_include_): Use strchr ()
	and strrchr () instead of index () and rindex ().

From-SVN: r37206
2000-11-02 19:03:59 +00:00
Mark Mitchell
1f8f4a0b31 Remove obstacks.
* Makefile.in (ggc-callbacks.o): Remove target.
	(flow.o): Depend on GGC_H.
	* alias.c (init_alias_analysis):
	Remove ggc_p conditionals.
	(end_alias_analysis): Likewise.
	* basic-block.h (init_flow): New function.
	(allocate_reg_life_data): Declare.
	* bb-reorder.c	(function_obstack): Replace with ...
	(flow_obstack): ... new variable.
	(fixup_reorder_chain): Use it.
	* c-decl.c (ggc_p): Remove.
	(caller-save.c): Don't call oballoc/obfree.
	* combine.c (struct
	undobuf): Remove storage.
	(try_combine): Don't call oballoc.
	(undo_all): Don't call obfree.
	* cse.c (insert): Use xmalloc, not
	oballoc.
	(cse_main): Adjust accordingly.
	* dwarf2out.c (save_rtx): Remove
	obstack code.
	(dwarf2out_init): Remove ggc_p conditionals.
	* emit-rtl.c (rtl_obstack): Remove.
	(gen_rtx_CONST_INT): Remove ggc_p conditionals.
	(make_insn_raw): Likewise.
	(emit_insn_before): Likewise.
	(emit_insn_after): Likewise.
	(emit_insn): Likewise.
	(gen_sequence): Likewise.
	(copy_insn_1): Remove handling of `b' RTL components.
	(init_emit_once): Remove ggc_p conditionals.
	* except.c (create_rethrow_ref): Don't fool with obstacks.
	(add_partial_entry): Likewise.
	(call_get_eh_context): Likewise.
	(begin_protect_partials): Likewise.
	(protect_with_terminate): Likewise.
	* explow.c
	(plus_constant_wide): Likewise.
	* expr.c (init_expr_once):
	Likewise.
	(emit_block_move): Likewise.
	(clear_storage): Likewise.
	(expand_expr): Likewise.
	* flow.c (function_obstack): Remove.
	(flow_obstack): New variable.
	(flow_firstobj): Likewise.
	(create_base_block): Use the flow_obstack.
	(split_block): Likewise.
	(split_edge): Likewise.
	(calculate_global_regs_live): Likewise.
	(allocate_bb_life_data): Make it static.  Likewiwse.
	(init_flow): New function.
	(size_int_type_wide): Remove ggc_p conditionals.
	* function.c
	(push_function_context_to): Don't call save_tree_status.
	(pop_function_context_from): Or restore_tree_status.
	(assign_stack_local_1): Don't call push_obstacks.
	(find_fixup_replacement): Use xmalloc.
	(fixup_var_refs_insns): Free the storage.
	(insns_for_mem_walk): Don't mess with obstacks.
	(instantiate_decls): Likewise.
	(trampoline_address): Likewise.
	(expand_function_end): Likewise.
	* function.h (sturct function):
	Remove obstack-related variables.
	(save_tree_status): Don't declare.
	(restore_tree_status): Likewise.
	* gcse.c (compute_can_copy):
	Don't call oballoc/obfree.
	* genattrtab.c (operate_exp): Remove
	ggc_p conditionals.
	(simplify_cond): Likewise.
	(simplify_test_exp): Don't mess with obstacks.
	(optimize_attrs): Likewise.
	* gengenrtl.c (gendef): Don't include
	ggc_p conditionals.
	* ggc-callbacks.c (ggc_p): Remove.
	* ggc-none.c (ggc_p): Remove.
	* ggc.h (ggc_p): Don't declare.
	* integrate.c (save_for_inline): Don't mess with obstacks.
	(integrate_decl_tree): Likewise.
	(output_inline_function): Likewise.
	* lists.c
	(init_EXPR_INSN_LIST_cache): Likewise.
	* loop.c (temp_obstack):
	Remove.
	(rtl_obstack): Likewise.
	(init_loop): Don't mess with obstacks.
	(reg_address_cost): Free BIVs and GIVs.
	(check_insns_for_bivs): Use xmalloc, not oballoc.
	(find_mem_givs): Likewise.
	(record_biv): Likewise.
	(general_induction_var): Likewise.
	(product_cheap_p): Likewse.
	* optabs.c (init_one_libfunc): Remove
	ggc_p conditional.
	* print-tree.c (debug_tree): Don't use
	oballoc/obfree.
	(print_node): Likewise.
	* profile.c (output_func_start_profiler):
	Remove call to temporary_allocation.
	* reload1.c
	(eliminate_regs_in_insn): Don't mess with obstacks.
	* resource.c
	(mark_target_live_regs): Use xmalloc.
	(free_resource_info): Free the memory.
	* rtl.c (rtl_obstack):
	Remove.
	(rtvec_alloc): Don't mess with obstacks.
	(rtx_alloc): Likewise.
	(rtx_free): Remove.
	(copy_rtx): Don't handle `b' cases.
	(read_rtx): Use a local rtl_obstack.
	* rtl.h (oballoc): Remove.
	(obfree): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(allocate_bb_life_data): Likewise.
	(allocate_reg_life_data): Likewise.
	(rtx_free): Likewise.
	* sdbout.c (sdbout_queue_anonymous_type):
	Use tree_cons, not saveable_tree_cons.
	* simplify-rtx.c
	(cselib_init): Don't mess with obstacks.
	* stmt.c
	(mark_block_nesting): Mark the label_chain.
	(epxand_label): Use ggc_alloc, not oballoc.
	(clear_last_expr): Don't mess with obstacks.
	(expand_decl_cleanup): Likewise.
	(expand_dcc_cleanup): Likewise.
	(expand_dhc_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	(add_case_node): Use xmalloc, not oballoc.
	(free_case_nodes): New function.
	(expand_end_case): Call it.
	* stor-layout.c (layout_type): Don't
	mess with obstacks.
	(layout_type): Likewise.
	* toplev.c (wrapup_global_declarations):
	Likewise.
	(compile_file): Remove ggc_p conditionals.
	(rest_of_compilation): Call init_flow.  Remove ggc_p conditionals.
	(decode_f_option): Remove ggc_p conditionals.
	* tree.c
	(function_maybepermanent_obstack): Remove.
	(maybepermanent_obstack): Likewise.
	(function_obstack): Likewise.
	(tmeporary_obstack): Likewise.
	(momentary_obstack): Likewise.
	(temp_decl_obstack): Likewise.
	(saveable_obstack): Likewise.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(expression_obstack): Likewise.
	(struct obstack_stack): Likewise.
	(obstack_stack): Likewise.
	(obstack_stack_obstack): Likewise.
	(maybepermanent_firstobj): Likewise.
	(temporary_firstobj): Likewise.
	(momentary_firstobj): Likewise.
	(temp_decl_firstobj): Likewise.
	(momentary_function_firstobj): Likewise.
	(all_types_permanent): Likewise.
	(struct momentary_level): Likewise.
	(momentary_stack): Likewise.
	(init_obstacks): Remove initialization of removed obstacks.
	(save_tree_status): Remove.
	(restore_tree_status): Likewise.
	(temporary_allocation): Liekwise.
	(end_temporary_allocation): Liekwise.
	(resume_temporary_allocation): Likewise.
	(saveable_allocation): Likewise.
	(push_obstacks): Likewise.
	(push_obstacks_nochange): Likewise.
	(pop_obstacks): Likewise.
	(allocation_temporary_p): Likewise.
	(permanent_allocation): Likewise.
	(preserve_data): Likewise.
	(preserve_initializer): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(oballoc): Likewise.
	(obfree): Likewise.
	(savealloc): Likewise.
	(expralloc): Likewise.
	(print_obstack_name): Likewise.
	(debug_obstack): Likewise.
	(object_permanent_p): Likewise.
	(push_momentary): Likewise.
	(perserve_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(pop_momentary_nofree): Likewise.
	(suspend_momentary): Likewise.
	(resume_momentary): Likewise.
	(make_node): Don't set TREE_PERMANENT.
	(copy_node): Remove ggc_p conditionals.  Don't set TYPE_OBSTACK.
	Don't set TREE_PERMANENT.
	(get_identifier): Remove ggc_p conditionals.
	(build_string): Likewise.
	(make_tree_vec): Likewise.
	(build_decl_list): Remove.
	(build_expr_list): Likewise.
	(tree_cons): Remove ggc_p conditionals.
	(decl_tree_cons): Remove.
	(expr_tree_cons): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(build1): Remove ggc_p conditionals.
	(build_parse_node): Likewise.
	(build_type_attribute_variant): Don't mess with obstacks.
	(build_type_copy): Likewise.
	(type_hash_canon): Likewise.
	(build_pointer_type): Likewise.
	(build_reference_type): Likewise.
	(build_index_type): Likewise.
	(build_range_type): Likewise.
	(dump_tree_statistics): Don't print obstack information.
	* tree.h
	(struct tree_common): Remove permanent_flag.
	(TREE_PERMANENT): Remove.
	(TREE_SET_PERMANENT): Likewise.
	(TYPE_OBSTACK): Likewise.
	(struct tree_type): Remove obstack.
	(oballoc): Remove.
	(savealloc): Likewise.
	(build_decl_list): Likewise.
	(build_expr_list): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(decl_tree_cons): Likewise.
	(expr_tree_cons): Likewise.
	(suspend_momentary): Likewise.
	(allocation_temporary_p): Likewise.
	(resume_momentary): Likewise.
	(push_obstacks_nochange): Likewise.
	(permanent_allocation): Likewise.
	(push_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(end_temporary_allocation): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(pop_momentary_nofree): LIkewise.
	(preserve_momentary): Likewise.
	(saveable_allocation): Likewise.
	(temporary_allocation): Likewise.
	(resume_temporary_allocation): Likewise.
	(perserve_initializer): Likewise.
	(debug_obstack): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(obfree): Likewise.
	* varasm.c (current_obstack): Remove.
	(saveable_obstack): Remove.
	(rtl_obstack): Remove.
	(immed_double_const): Don't mess with obstacks.
	(immed_real_cons): Likewise.
	(output_constant_def): Likewise.
	(init_varasm_status): Use xcalloc.
	(mark_pool_constant): Mark the pool constant itself.
	(free_varasm_status): Free memory.
	(decode_rtx_const): Call bzero directly, rather than expanding it
	inline.
	(record_rtx_const): Don't mess with obstacks.
	(force_const_mem): Likewise.
	* config/arm/arm.c (arm_encode_call_attribute): Remove ggc_p
	conditionals.
	(aof_pic_entry): Likewise.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/m32r/m32r.c (m32r_encode_section_info): Likewise.
	* config/pa/pa.c (saveable_obstack): Remove.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(output_call): Don't mess with obstacks.
	(hppa_encode_label): Remove ggc_p conditionals.
	* config/romp/romp.c (get_symref): Don't mess with obstacks.
	* config/rs6000/rs6000.c (output_toc): Remove ggc_p conditional.
	(rs6000_encode_section_info): Likewise.
	* config/sh/sh.c (get_fpscr_rtx): Likewise.

From-SVN: r36856
2000-10-13 06:26:46 +00:00
Mark Mitchell
f444e36b2d c-common.h (genrtl_clear_out_block): Remove.
* c-common.h (genrtl_clear_out_block): Remove.
	* c-semantics.c (genrtl_clear_out_block): Remove.
	(genrtl_while_stmt): Don't call it.
	(genrtl_for_stmt): Likewise.

	* cp-tree.h (struct saved_scope): Remove x_function_parms.
	(current_function_parms): Don't define.
	(struct cp_language_function): Remove parms_stored.
	(current_function_just_assigned_this): Don't define.
	(current_function_parms_stored): Likewise.
	(static_ctors): Declare.
	(static_dtors): Likewise.
	(SF_EXPAND): Don't define.
	(expand_start_early_try_stmts): Remove declaration.
	(store_parm_decls): Likewise.
	* decl.c (static_ctors): Don't declare.
	(static_dtors): Likewise.
	(struct binding_level): Remove this_block.
	(poplevel): Remove dead code.
	(set_block): Likewise.
	(mark_binding_level): Don't mark this_block.
	(mark_saved_scope): Don't mark x_function_parms.
	(init_decl_processing): Don't add current_function_parms as a GC
	root.
	(check_function_type): Change prototype.
	(start_function): Remove RTL-generation code.
	(expand_start_early_try_stmts): Remove.
	(store_parm_decls): Give it internal linkage.  Remove
	RTL-generation code.
	(finish_function): Remove RTL-generation code.
	* decl2.c (static_ctors): Fix formatting.
	(static_dtors): Likewise.
	* method.c (use_thunk): Don't call store_parm_decls.
	(synthesize_method): Likewise.
	* optimize.c (maybe_clone_body): Likewise.
	* parse.y (fn.def2): Likewise.
	(.set_base_init): Likewise.
	(nodecls): Likewise.
	* pt.c (instantiate_decl): Likewise.
	* rtti.c (synthesize_tinfo_fn): Likewise.
	* semantics.c (genrtl_try_block): Simplify.
	(expand_body): Use genrtl_start_function and
	genrtl_finish_function.
	(genrtl_start_function): New function.
	(genrtl_finish_function): Likewise.

From-SVN: r36350
2000-09-12 06:46:00 +00:00
Kriang Lerdsuwanakij
a1281f4503 cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code.
* cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code.
        (TEMPLATE_TEMPLATE_PARM): Adjust comment.
        * cp-tree.h (TYPE_BINFO): Adjust comment.
        (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
        (TEMPLATE_TYPE_PARM_INDEX): Likewise.
        (IS_AGGR_TYPE): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
        (TYPE_TEMPLATE_INFO): Likewise.
        (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Likewise.
        * class.c (push_nested_class): Likewise.
        * decl.c (lookup_name_real): Likewise.
        (grokdeclarator): Likewise.
        (grok_op_properties): Likewise.
        (xref_tag): Likewise.
        (xref_basetypes): Likewise.
        * decl2.c (constructor_name_full): Likewise.
        (arg_assoc_template_arg): Add TEMPLATE_TEMPLATE_PARM case.
        (arg_assoc_type): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
        * error.c (dump_type): Split TEMPLATE_TEMPLATE_PARM case.
        (dump_type_prefix): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        (dump_type_suffix): Likewise.
        * init.c (is_aggr_type): Use BOUND_TEMPLATE_TEMPLATE_PARM
        instead.
        (get_aggr_from_typedef): Likewise.
        * mangle.c (write_type): Split TEMPLATE_TEMPLATE_PARM case.
        (write_expression): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        (write_template_parm): Likewise.
        (write_template_template_parm): Check tree code instead of
        using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
        * method.c (build_overload_nested_name): Add
        BOUND_TEMPLATE_TEMPLATE_PARM.
        (process_overload_item): Split TEMPLATE_TEMPLATE_PARM case.
        * parse.y (bad_parm): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        * pt.c (convert_template_argument): Check tree code instead of
        using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
        (for_each_template_parm_r): Split TEMPLATE_TEMPLATE_PARM case.
        (for_each_template_parm): Adjust comment.
        (tsubst): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.
        (tsubst_copy): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        (unify): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.  Use
        template_args_equal to compare template template parameter cases.
        * ptree.c (print_lang_type): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        * search.c (lookup_field_1): Use BOUND_TEMPLATE_TEMPLATE_PARM
        instead.
        * tree.c (copy_template_template_parm): Decide whether to create
        a TEMPLATE_TEMPLATE_PARM or BOUND_TEMPLATE_TEMPLATE_PARM node.
        (walk_tree): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        (copy_tree_r): Likewise.
        * typeck.c (comptypes): Likewise.  Check tree code instead of
        using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.

From-SVN: r36149
2000-09-04 21:01:39 -04:00
Jason Merrill
7def125130 typeck.c (build_ptrmemfunc): Save the input pmf.
* typeck.c (build_ptrmemfunc): Save the input pmf.

        * method.c (process_modifiers): Use same_type_p.

From-SVN: r35930
2000-08-23 21:57:19 -04:00
Mark Mitchell
193833ed17 cp-tree.h (THUNK_VCALL_OFFSET): Update documentation.
* cp-tree.h (THUNK_VCALL_OFFSET): Update documentation.
	* method.c (use_thunk): Correct handling of vcall offsets.

From-SVN: r35064
2000-07-16 21:04:16 +00:00
Nathan Sidwell
c727aa5e28 cp-tree.h (SET_DECL_ARTIFICIAL): Remove.
* cp-tree.h (SET_DECL_ARTIFICIAL): Remove.
	* decl.c (create_implicit_typedef): Adjust.
	* decl2.c (build_artificial_parm): Adjust.
	* method.c (implicitly_declare_fn): Adjust.
	* pt.c (push_inline_template_parms_recursive): Adjust.
	(process_template_parm): Adjust.
	(overloaded_template_name): Adjust.
	* semantics.c (finish_template_template_parm): Adjust.

From-SVN: r34780
2000-06-29 14:03:10 +00:00
Kriang Lerdsuwanakij
1899c3a49e parse.y (template_arg): Convert TEMPLATE_DECL that is a template template paramter to...
* parse.y (template_arg): Convert TEMPLATE_DECL
        that is a template template paramter to
        TEMPLATE_TEMPLATE_PARM here.

        * cp-tree.def (TEMPLATE_TEMPLATE_PARM): Adjust comment.
        * cp-tree.h (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): New macro.
        (copy_template_template_parm): Adjust prototype.
        * decl.c (grokdeclarator): Remove dead code.
        * pt.c (process_template_parm): Tidy.
        (lookup_template_class): Construct nodes in
        copy_template_template_parm.
        (tsubst): Pass TEMPLATE_DECL rather than IDENTIFIER_NODE to
        lookup_template_class.  Use TYPE_TI_TEMPLATE.
        * tree.c (copy_template_template_parm): Add NEWARGS
        parameter.
        (mapcar): Adjust call to copy_template_template_parm.
        * typeck.c (comptypes): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL.
        * method.c (build_template_template_parm_names): Change error
        code to avoid compilation warning.

        * gxxint.texi: Document template template parameter
        name mangling.

From-SVN: r34659
2000-06-23 02:49:45 -04:00
Mark Mitchell
31f8e4f306 cp-tree.h (BV_USE_VCALL_INDEX_P): New macro.
* cp-tree.h (BV_USE_VCALL_INDEX_P): New macro.
	(BV_GENERATE_THUNK_WITH_VTABLE_P): Likewise.
	(lang_decl_flags): Add generate_with_vtable_p.  Make vcall_offset
	a tree, not an int.
	(THUNK_GENERATE_WITH_VTABLE_P): New macro.
	(make_thunk): Change prototype.
	(emit_thunk): Rename to use_thunk.
	(mangle_thunk): Change prototype.
	* class.c (get_derived_offset): Simplify.
	(copy_virtuals): Clear BV_USE_VCALL_INDEX_P and
	BV_GENERATE_THUNK_WITH_VTABLE_P.
	(build_primary_vtable): Simplify.
	(add_virtual_function): Use BV_FN, rather than TREE_VALUE.
	(dfs_find_base): Remove.
	(update_vtable_entry_for_fn): Correct bug in finding the base
	where a virtual function was first declared.  Figure out whether
	or not to emit a vcall-thunk with the vtables in which it appears.
	Correct logic for deciding whether to use an ordinary thunk, or a
	vcall thunk.
	(finish_struct_1): Remove unnecssary code.
	(build_vtbl_initializer): Use ssize_int for the running counter of
	negative indices.
	(build_vtbl_initializer): Only use vcall thunks where necessary.
	Mark thunks as needing to be emitted with their vtables, or not.
	(build_vbase_offset_vtbl_entries): Adjust for use of ssize_int in
	indices.  Use size_binop.
	(dfs_build_vcall_offset_vtbl_entries): Don't rely on
	BINFO_PRIMARY_MARKED_P here.  Use BV_FN consistently.  Use
	size_binop.
	(build_rtti_vtbl_entries): Adjust call to build_vtable_entry.
	(build_vtable_entry): Mark thunks as needing to be emitted with
	their vtables, or not.
	* decl.c (lang_mark_tree): Mark the vcall_offset in a thunk.
	* decl2.c (mark_vtable_entries): Use use_thunk instead of
	emit_thunk.
	* dump.c (dequeue_and_dump): Remove dead code.  Dump new thunk
	information.
	* error.c (dump_expr): Use BV_FN.
	* mangle.c (mangle_thunk): Adjust now that vcall_offset is a tree,
	not an int.
	* method.c (make_thunk): Likewise.
	(emit_thunk): Rename to use_thunk.  Allow callers to decide
	whether or not to actually emit the thunk.  Adjust for changes in
	representation of vcall offsets.
	* search.c (dfs_get_pure_virtuals): Use BV_FN.
	* semantics.c (emit_associated_thunks): New function.
	(expand_body): Use it.
	* ir.texi: Adjust decriptions of thunks.

From-SVN: r34656
2000-06-23 01:14:40 +00:00
Zack Weinberg
e5ec24021a cpplex.c (parse_name): Don't warn about $ in identifiers if skipping.
* cpplex.c (parse_name): Don't warn about $ in identifiers if
	skipping.

	* Makefile.in: Remove all references to HOST_INTLLIBS.

	* cp/method.c: Don't include hard-reg-set.h.

From-SVN: r34621
2000-06-20 22:42:18 +00:00
Nathan Sidwell
b72801e28a call.c (build_conditional_expr): Use VOID_TYPE_P.
* call.c (build_conditional_expr): Use VOID_TYPE_P.
	* cvt.c (cp_convert_to_pointer): Likewise.
	(convert_to_void): Likewise.
	* error.c (dump_expr): Likewise.
	* except.c (complete_ptr_ref_or_void_ptr_p): Likewise.
	* init.c (build_delete): Likewise.
	* method.c (emit_thunk): Likewise.
	* optmize.c (declare_return_variable): Likewise.
	* rtti.c (get_tinfo_decl_dynamic): Likewise.
	(get_typeid): Likewise.
	(build_dynamic_cast_1): Likewise.
	* typeck.c (composite_pointer_type): Likewise.
	(common_type): Likewise.
	(build_indirect_ref): Likewise.
	(build_binary_op): Likewise.
	(build_x_compound_expr): Likewise.
	(check_return_expr): Likewise.
	* typeck2.c (add_exception_specifier): Likewise.

	* mangle.c (write_method_parms): Use direct comparison for end
	of parmlist.

From-SVN: r34617
2000-06-20 15:42:55 +00:00