Mark Mitchell [Sat, 18 Sep 1999 23:56:18 +0000 (23:56 +0000)]
decl.c (layout_var_decl): Change prototype.
* decl.c (layout_var_decl): Change prototype. Call layout_decl
even when the declaration is external.
(cp_finish_decl): Adjust call to layout_var_decl.
* pt.c (tsubst_expr): Make sure to initialize stmt before using it.
* config/i386/sol2.h (CPP_SPEC): Support -[p]threads
(LIB_SPEC): Likewise.
(LINK_SPEC): Do not assert -z text with -shared -mimpure-text.
Reindent -YP/-p/-pg.
Copied from config/sparc/sol2.h.
Mark Mitchell [Sat, 18 Sep 1999 01:23:20 +0000 (01:23 +0000)]
Turn on function-at-a-time processing.
* cp-tree.h (doing_semantic_analysis_p): New macro.
(SF_DEFAULT): Define to zero, not SF_EXPAND.
(start_handler_parms): Change prototype.
(expand_start_catch_block): Likewise.
(expand_end_catch_block): Likewise.
(expand_start_eh_spec): Likewise.
(expand_end_eh_spec): Declare.
(finish_handler_parms): Change prototype.
(begin_catch_block): Declare.
(finish_handler): Change prototype.
(do_pushlevel): Declare.
(do_poplevel): Likewise.
* decl.c (pushlevel): Don't create
binding levels when not doing semantic analysis.
(poplevel): Don't pop them.
(pushdecl): Assert that we are never called when not doing
semantic analysis.
(pushdecl_top_level): Use push_to_top_level.
(make_label_decl): Don't fiddle with obstacks. Make RTL For the
label when expanding.
(cp_finish_decl): Only inject for-scope variables when doing
semantic analysis. Add comments.
(start_handler_parms): Return the handler parm.
(start_function): Reorganize. Don't clear DECL_INITIAL if it is
already set. Reinitialize from saved function data if available.
Don't pushlevel when not doing semantic analysis.
(store_parm_decls): Only generate RTL when expanding. Only
pushdecl when doing semantic analysis. Set
current_eh_spec_try_block if appropriate.
(finish_function): Simplify. Use do_pushlevel and do_poplevel.
Combine common code. Don't poplevel when not doing semantic
analysis.
(push_cp_function_context): Don't expand functions without an
explicit call to expand_body.
(mark_lang_function): Make eh_spec_try_block and
x_scope_stmt_stack.
* except.c (expand_end_eh_spec): Don't
declare.
(process_start_catch_block): Likewise.
(push_eh_cleanup): Use finish_decl_cleanup.
(initialize_handler_parm): New function.
(expand_start_catch_block): Use it.
(expand_end_catch_block): Use tree-generation functions, not
RTL-generation functions.
(expand_start_eh_spec): Likewise.
(expand_end_eh_spec): Likewise.
(expand_exception_blocks): Simplify.
(start_anon_func): Use do_pushlevel.
(end_anon_func): Use do_poplvel. Call expand_body for the
function.
* expr.c (do_case): Don't call define_case_label.
* init.c (create_temporary_var): Set DECL_CONTEXT for local
variables.
* method.c (emit_thunk): Call expand_body for the
thunk.
(sythesize_method): Likewise.
* parse.y (handler_args): Give it ttype.
(eat_saved_input): Call expand_body.
(base_init): Use do_pushlevel.
(pending_inline): Call expand_body.
(handler): Adjust calls to finish_handler_parms and
finish_handler.
(handler_args): Don't call expand_start_catch_block. Return the
catch parameter. * pt.c (tsubst_expr): Adjust HANDLER handling.
* parse.c: Regenerated.
* rtti.c (synthesize_tinfo_fn): Call finish_function.
* semantics.c (do_pushlevel): Give it external linkage. Build
SCOPE_STMTs.
(do_poplevel): Likewise.
(finish_case_label): Call define_case_label when doing semantic
analysis.
(finish_goto_stmt): Create RTL for labels.
(finish_function_try_block): Set in_function_try_handler
unconditionally.
(finish_function_handler_sequence): Unset it.
(finish_handler_parms): Use expand_start_catch_block even when
building a statement-tree.
(begin_catch_block): New function.
(finish_handler): Move a little RTL-generation logic here.
(finish_decl_cleanup): Allow cleanups for empty declarations.
(finish_named_return_value): Don't pushdecl when not doing
semantic analysis.
(expand_stmt): Don't do semantic analysis for variable
declarations. Handle START_CATCH_STMT. Call expand_label
directly for a LABEL_STMT. Tweak handling of GOTO_STMT. Adjust
HANDLERs. Handle SCOPE_STMT, CTOR_INITIALIZER, and RETURN_INIT.
(expand_body): Let expand_stmt handle CTOR_INITIALIZER,
RETURN_INIT and function try blocks.
Mark Mitchell [Fri, 17 Sep 1999 23:14:49 +0000 (23:14 +0000)]
cp-tree.def (CLEANUP_STMT): Fix spelling in dumps.
* cp-tree.def (CLEANUP_STMT): Fix spelling in dumps.
(TRY_BLOCK): Likewise.
(HANDLER): Likewise.
(START_CATCH_STMT): New tree node.
(SCOPE_STMT): Likewise.
* cp-tree.h (SCOPE_BEGIN_P): New macro.
(SCOPE_NULLIFIED_P): Likewise.
(struct lang_decl_flags): Add pending_inline_p. Adjust dummy.
(struct lang_decl): Add saved_language_function.
(DECL_PENDING_INLINE_INFO): Adjust documentation.
(DECL_PENDING_INLINE_P): New macro.
(TYPE_TI_ARGS): Fix typo in comment.
(DECL_SAVED_TREE): Add to documentation.
(DECL_SAVED_FUNCTION_DATA): New macro.
(START_CATCH_TYPE): Likewise.
(SCOPE_END_P): New macro.
(declare_parm_level): Don't declare.
* decl.c (mark_lang_function): New function, split out from
mark_cp_function_context.
(save_function_data): New function.
(declare_parm_level): Remove.
(finish_function): Use save_function_data to squirrel away
important stuff for later use.
(mark_cp_function_context): Use mark_function_data.
(lang_mark_tree): Likewise.
* lex.c (begin_definition_of_inclass_inline): Set
DECL_PENDING_INLINE_P.
(store_pending_inline): Clear it.
* pt.c (tsubst_decl): Likewise.
* functiion.h (struct function): Add x_whole_function_mode_p.
(retrofit_block): Declare.
* function.c (retrofit_block): New function.
(identify_blocks): Add assertions. Allow an incomplete set of
block notes if we're still generating code for the function.
* integrate.c: Include loop.h.
(expand_inline_function): Call find_loop_tree_blocks to map block
notes to blocks when in whole-function mode. Use retrofit_block
to insert new BLOCKs for the inlined function, rather than
insert_block.
* stmt.c (expand_fixup): Likewise. Don't use pushlevel/polevel.
* Makefile.in (integrate.o): Depend on loop.h.
Mark Mitchell [Fri, 17 Sep 1999 22:01:23 +0000 (22:01 +0000)]
stmt.c (expand_start_bindings): Allow callers to pass a flag indicating that no NOTE_INSN_BLOCK_BEG note is...
* stmt.c (expand_start_bindings): Allow callers to pass a flag
indicating that no NOTE_INSN_BLOCK_BEG note is required.
(expand_start_target_temps): Use it.
* except.c (expand_eh_region_start_for_decl): Likewise.
* expr.c (expand_expr): Likewise.
Gabriel Dos Reis [Fri, 17 Sep 1999 01:49:29 +0000 (01:49 +0000)]
error.c: Reduce code duplication.
1999-09-17 Gabriel Dos Reis <gdr@codesourcery.com>
* error.c: Reduce code duplication.
(dump_template_value): New function.
(dump_type_real): Use it.
(dump_decl): Likewise.
(dump_function_name): Likewise.
(dump_function_decl): Don't be too talkative about function return
type variety.
alpha.md: Revert Thu Nov 26 change that came in through the last gcc2 merge...
* alpha.md: Revert Thu Nov 26 change that came in through the
last gcc2 merge: reinstate (plus (plus ...)) reload patterns.
Avoid earlyclobber when possible.
* jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
* jv-scan.c (xmalloc): Remove definition.
* jvgenmain.c (xmalloc): Likewise.
* jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
* lex.c (java_store_unicode): Use xrealloc, not realloc.
* parse-scan.y: Use concat, not of xmalloc/assign/strcpy. Use
concat, not xmalloc/sprintf.
(java_push_parser_context): Use xcalloc, not xmalloc/bzero.
(xstrdup): Remove definition.
* parse.y (duplicate_declaration_error_p,
constructor_circularity_msg, verify_constructor_circularity,
check_abstract_method_definitions, java_check_regular_methods,
java_check_abstract_methods, patch_method_invocation,
check_for_static_method_reference, patch_assignment, patch_binop,
patch_cast, array_constructor_check_entry, patch_return,
patch_conditional_expr): Use xstrdup, not strdup.
Mark Mitchell [Thu, 16 Sep 1999 04:39:52 +0000 (04:39 +0000)]
function.c (identify_blocks): Don't shadow a variable in an outer scope.
* function.c (identify_blocks): Don't shadow a variable in an
outer scope.
* integrate.c (integrate_decl_tree): Don't use pushlevel,
pushdecl, or poplevel to build up the new BLOCK tree.
(expand_inline_function): Likewise.
(integrate_parm_decls): Likewise.
Mark Mitchell [Thu, 16 Sep 1999 01:20:45 +0000 (01:20 +0000)]
decl.c (warn_extern_redeclared_static): Simplify.
* decl.c (warn_extern_redeclared_static): Simplify. Catch
problems with extern "C" functions redeclared as static.
(duplicate_decls): When a builtin is redeclared static, make the
new function have internal linkage.
Mark Mitchell [Wed, 15 Sep 1999 23:05:05 +0000 (23:05 +0000)]
rtl.h (NOTE_BLOCK_NUMBER): Replace with ...
* rtl.h (NOTE_BLOCK_NUMBER): Replace with ...
(NOTE_BLOCK): New macro.
(NOTE_BLOCK_LIVE_RANGE_BLOCK): Remove.
* function.h (identify_blocks): CHange prototype.
* function.c (identify_blocks): Simplify.
(reorder_blocks): Likewise.
* ggc-common.c (ggc_mark_rtx): Mark the BLOCK associated with a
NOTE_INSN_BLOCK_{BEG,END}.
* haifa-sched.c (sched_analyze): Don't put NOTE_BLOCK_NUMBER on
the list of saved notes if the note isn't a
NOTE_INSN_BLOCK_{BEG,END}.
(move_insn1): Use NOTE_EH_HANDLER in comment, rather than
NOTE_BLOCK_NUMBER.
(reemit_notes): Adjust recreation of notes to reflect new saved
note structure.
* print-rtl.c (print_rtx): Print the address of the BLOCK when
printing a block note.
* stmt.c (block_vector): Remove.
(find_loop_tree_blocks): Simplify.
(unroll_block_trees): Likewise.
Mark Mitchell [Wed, 15 Sep 1999 06:09:53 +0000 (06:09 +0000)]
decl.c (build_target_expr): Set TREE_SIDE_EFFECTS on the TARGET_EXPR.
* decl.c (build_target_expr): Set TREE_SIDE_EFFECTS on the
TARGET_EXPR.
* call.c (build_over_call): Don't set TREE_SIDE_EFFECTS on
the TARGET_EXPR.
* cvt.c (build_up_reference): Likewise.
* tree.c (build_cplus_new): Likewise.
(get_target_expr): Likewise.
Jeffrey A Law [Wed, 15 Sep 1999 04:05:38 +0000 (04:05 +0000)]
cse.c (FIXED_BASE_PLUS_P): Do not consider referneces to arg_pointer_rtx fixed if...
* cse.c (FIXED_BASE_PLUS_P): Do not consider referneces to
arg_pointer_rtx fixed if the argument pointer register is
not fixed.
(NONZERO_BASE_PLUS_P): Likewise.
c-pragma.c (handle_pragma_token): Wrap variables `name' and `value' in HANDLE_PRAGMA_WEAK.
* c-pragma.c (handle_pragma_token): Wrap variables `name' and
`value' in HANDLE_PRAGMA_WEAK. Wrap variable `align' in
HANDLE_PRAGMA_PACK||HANDLE_PRAGMA_PACK_PUSH_POP.
* genrecog.c (make_insn_sequence): Call memset, not bzero.
* recog.c (offsettable_address_p): Prototype function pointer.
(preprocess_constraints): Call memset, not bzero.
* tree.c (tree_node_kind_names): Constify a char*. Make static.
(gcc_obstack_init): Don't declare.
(fix_sizetype): Add static prototype.
(gcc_obstack_init): Use prototype casts in call to _obstack_begin.
(tree_cons): Call memset, not bzero.
* varasm.c (remove_from_pending_weak_list): Wrap declaration and
definition in macro ASM_WEAKEN_LABEL.
(mark_const_hash_entry): Add static prototype.