aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.h
AgeCommit message (Collapse)AuthorFilesLines
2000-01-14eh-common.h: PROTO -> PARAMS.Kaveh R. Ghazi1-30/+30
* eh-common.h: PROTO -> PARAMS. * emit-rtl.c: Likewise. * errors.c: Likewise. * errors.h: Likewise. * except.c: Likewise. * except.h: Likewise. * explow.c: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * expr.h: Likewise. * final.c: Likewise. * fix-header.c: Likewise. * flow.c: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * function.h: Likewise. * gcc.c: Likewise. * gcov-io.h: Likewise. * gcov.c: Likewise. * gcse.c: Likewise. From-SVN: r31419
1999-12-20current_function -> cfunBernd Schmidt1-70/+71
From-SVN: r31033
1999-12-16Makefile.in (INTREGRATE_H): Rename to INTEGRATE_H.Mark Mitchell1-6/+0
* Makefile.in (INTREGRATE_H): Rename to INTEGRATE_H. * function.c (insert_block_after_note): Remove. (retrofit_block): Likewise. (identify_blocks): Fix indentation. (reorder_blocks): Don't NULL out NOTE_SOURCE_FILE for a NOTE_INSN_BLOCK_BEG or NOTE_INSN_BLOCK_END. * function.h (insert_block_after_note): Remove prototype. (retrofit_block): Likewise. * integrate.c (expand_inline_function): Don't call find_loop_tree_blocks. Use expand_start_bindings_and_block, not just expand_start_bindings. Use the block_map to remap old NOTE_BLOCKs to new ones. (integrate_decl_tree): Keep track of remapped blocks. * integrate.h (struct inline_remap): Add block_map. * stmt.c (expand_fixup): Don't try to retrofit_blocks. Just set NOTE_BLOCK on the notes. (expand_start_bindings): Rename to ... (expand_start_bindings_and_block): Add parameter. Set NOTE_BLOCK. (expand_end_bindings): Set NOTE_BLOCK. * toplev.c (rest_of_compilation): In function-at-a-time-mode, reconstruct the BLOCK tree. * tree.h (expand_start_bindings): Macroize. Call ... (expand_start_bindings_and_block): New function. * optimize.c (struct inline_data): Remove scope_stmt. (remap_block): Don't use insert_block_after_note. Don't update scope_stmt. (expand_call_inline): Don't update scope_stmt. (optimize_function): Don't initialize scope_stmt. * semantics.c (expand_stmt): Set NOTE_BLOCK for newly emitted NOTE_INSN_BLOCK_BEG/NOTE_INSN_BLOCK_END notes. From-SVN: r30982
1999-12-15function.c (retrofit_block): Abort if we don't find a suitable insn.Jason Merrill1-4/+3
* function.c (retrofit_block): Abort if we don't find a suitable insn. (insert_block_after_note): Abort if we don't have a previous block. Remove FN parameter. * function.h: Adjust. * tree.c (walk_tree): Walk operand subtrees in forward order. * optimize.c (expand_call_inline): Likewise. (optimize_function): Initialize id->scope_stmt to something useful. (remap_block): Assume id->scope_stmt has a useful value. From-SVN: r30965
1999-12-15function.c (PREFERRED_STACK_BOUDNARY): Provide default value.Jan Hubicka1-0/+2
* function.c (PREFERRED_STACK_BOUDNARY): Provide default value. (assign_stack_local_1): Limit alignment to PREFERRED_STACK_BOUNDARY, update stack_alignment_needed. (prepare_function_start): Initialize stack_alignment_needed * function.h (struct function): Add field stack_alignment_needed. From-SVN: r30958
1999-12-05function.h (insert_block_after_note): Declare.Mark Mitchell1-0/+5
* function.h (insert_block_after_note): Declare. * function.c (insert_block_after_note): Split out from ... (retrofit_block): ... here. From-SVN: r30776
1999-12-04c-common.c (enum attrs): Add A_NO_LIMIT_STACK.Geoff Keating1-0/+5
* c-common.c (enum attrs): Add A_NO_LIMIT_STACK. (init_attributes): Add A_NO_LIMIT_STACK. (decl_attributes): Handle A_NO_LIMIT_STACK. * c-decl.c (duplicate_decls): Handle DECL_NO_LIMIT_STACK. * explow.c (allocate_dynamic_stack_space) [!HAVE_allocate_stack]: Handle stack bounds checking. * flags.h (flag_stack_check): Use the word 'probe' rather than 'check', because the flag doesn't actually cause any checking to be done. * function.c (expand_function_start): Set current_function_limit_stack. * function.h (struct function): Add limit_stack. (current_function_limit_stack): Define. * invoke.texi (Code Gen Options): Document new options. * rtl.h: Declare stack_limit_rtx. * toplev.c (stack_limit_rtx): New variable. (decode_f_option): Handle new options -fstack-limit-register=REG, -fstack-limit-symbol=IDENT, -fno-stack-limit. (main): Add stack_limit_rtx as GC root. * tree.h (DECL_NO_LIMIT_STACK): New macro. (struct tree_decl): New member no_limit_stack. * config/rs6000/rs6000.c (rs6000_allocate_stack_space): Handle stack_limit_rtx. * config/rs6000/rs6000.md (allocate_stack): Handle stack_limit_rtx. (conditional_trap+1): Get new mnemonic correct. (conditional_trap+2): New pattern for DImode traps. * config/m68k/m68k.c (output_function_prologue): Handle stack_limit_rtx. * config/m68k/m68k.md (trap): New insn. (conditional_trap): New insn. * md.texi (Standard Names): Document `trap' and `conditional_trap'. * optabs.c (gen_cond_trap): Use start_sequence()/end_sequence() so a cc0 setter doesn't get emitted at some random place in the function. * config/i960/i960.md (trap): New insn. (conditional_trap): New expander. (conditional_trap+1, conditional_trap+2): New insns for signed and unsigned cases. * config/i960/i960.c (i960_function_prologue): Use STARTING_FRAME_OFFSET. Handle stack_limit_rtx. Co-Authored-By: Greg McGary <gkm@gnu.org> From-SVN: r30771
1999-11-04function.c (diddle_return_value): New.Richard Henderson1-0/+4
* function.c (diddle_return_value): New. (expand_function_end): Use it. * stmt.c (expand_null_return): Likewise. (expand_value_return): Likewise. * reg-stack.c (subst_stack_regs_pat): Handle clobbers at top-level. * reload1.c (reload): Don't remove return value clobbers. From-SVN: r30401
1999-09-26function.h (struct function): Add x_dont_save_pending_sizes_p.Mark Mitchell1-0/+9
* function.h (struct function): Add x_dont_save_pending_sizes_p. * stor-layout.c (variable_size): Don't add sizes to the pending sizes list if x_dont_save_pending_sizes_p is set. From-SVN: r29668
1999-09-17functiion.h (struct function): Add x_whole_function_mode_p.Mark Mitchell1-0/+8
* 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. From-SVN: r29487
1999-09-15emit-rtl.c (free_emit_status): Don't check DECL_DEFER_OUTPUT.Richard Henderson1-3/+5
* emit-rtl.c (free_emit_status): Don't check DECL_DEFER_OUTPUT. Free the struct. (mark_emit_status): Renamed from mark_emit_state. * except.c (mark_eh_status): Renamed from mark_eh_state. Check not null before marking. (free_eh_status): New. * expr.c (mark_expr_status, free_expr_status): New. * function.c (free_machine_status): New. (free_after_parsing): New. (free_after_compilation): Move bits to free_after_parsing; call free_eh_status, free_expr_status; zero the marked members of the function state. (prepare_function_start): No can_garbage_collect. Call init_eh_for_function. (expand_dummy_function_end): Free up current_function state. (mark_function_status): Renamed from mark_function_state. (mark_function_chain): No can_garbage_collect. Call mark_expr_status. * function.h (struct function): No can_garbage_collect. (free_machine_status, free_after_parsing): Declare. (free_eh_status, free_expr_status): Declare. * ggc.h (mark_expr_status): Declare. * stmt.c (free_stmt_status): Free the struct. (mark_stmt_status): Renamed from mark_stmt_state. (init_stmt): Don't call init_eh. (init_stmt_for_function): Don't call init_eh_for_function. * toplev.c (compile_file): Call init_eh. (rest_of_compilation): Free basic block info before ggc_collect. Call free_after_parsing; conditionally call free_after_compilation. * varasm.c (mark_varasm_status): Renamed from mark_varasm_state. Check not null before marking. From-SVN: r29448
1999-09-15rtl.h (NOTE_BLOCK_NUMBER): Replace with ...Mark Mitchell1-1/+1
* 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. From-SVN: r29441
1999-09-09function.h (free_after_compilation): Remove decl parameter.Mark Mitchell1-8/+6
* function.h (free_after_compilation): Remove decl parameter. (free_varasm_status0: Likewise. (free_emit_status): Likewise. (free_stmt_status): Likewise. (free_after_compilation): Likewise. (init_lang_status): New variable. (free_lang_status): Likewise. * emit-rtl.c (free_emit_status): Make decl parameter implicit. * function.c (init_lang_status): New variable. (free_lang_status): Likewise. (push_function_context_to): Don't set function::decl here. (free_after_copmilation): Make decl parameter implicit. Call free_lang_status if defined. (prepare_function_start): Call init_lang_status if defined. (init_function_start): Set function::decl here. * profile.c (output_func_start_profiler): Don't call pushdecl until we've actually started the function. * stmt.c (free_stmt_status): Make decl parameter implicit. * toplev.c (rest_of_compilation): Don't pass decl to free_after_compilation. * varasm.c (free_varasm_status): Likewise. From-SVN: r29239
1999-09-07emit-rtl.c (free_emit_status): Take decl as a parameter.Mark Mitchell1-3/+8
* emit-rtl.c (free_emit_status): Take decl as a parameter. (init_emit_once): Add more GC roots. * except.c (mark_func_eh_entry): New function. (mark_eh_node): Mark false_label and rethrow_label. (init_eh): Add more GC roots. * function.c (free_after_compilation): Take decl as a paramter. Call free_stmt_status. (mark_function_state): Don't assume x_parm_reg_stack_loc is non-NULL. * function.h (free_after_compilation): Change prototype. (free_varasm_status): Likewise. (free_emit_status): Likewise. (free_stmt_status): New function. * ggc-simple.c (rtx, vecs, trees, strings, bytes_alloced_since_gc): Remove, replacing with ... (ggc_status): New structure. (ggc_chain): New variable. (init_gcc): Define. (ggc_push_context): New function. (ggc_pop_context): Likewise. (ggc_alloc_rtx): Adjust for use of ggc_chain. (ggc_alloc_rtvec): Likewise. (ggc_alloc_tree): Likewise. (ggc_alloc_string): Likewise. (ggc_mark_rtx): Mark NOTE_SOURCE_FILE and NOTE_RANGE_INFO. (ggc_mark_tree): Give language-dependent code a chance to mark `x' nodes. (ggc_mark_tree_varray): Handle empty arrays. (ggc_collect): Adjust for use of ggc_chain. Clear bytes_alloced_since_last_gc. * ggc.h (ggc_pop_context): New function. (ggc_push_context): Likewise. * print-tree.c (print_node): Don't print obstacks when GC'ing. * stmt.c (free_stmt_status): New function. (init_stmt_for_function): Clear last_expr_value. * toplev.c (rest_of_compilation): Always call free_after_compilation. Conditionalize call to ggc_collect. (main): Call init_ggc. * tree.c (push_obstacks): Do the push, even when GC'ing. (push_obstacks_nochange): Likewise. (pop_obstacks): Liekwise. * varasm.c (free_varasm_status): Take decl as a parameter. From-SVN: r29170
1999-09-05Makefile.in (tree.o): Depend on ggc.h.Richard Henderson1-0/+3
* Makefile.in (tree.o): Depend on ggc.h. (varasm.o): Likewise. (function.o): Likewise. (stmt.o): Likewise. (except.o): Likewise. (optabs.o): Likewise. (emit-rtl.o): Likewise. * emit-rtl.c: Include ggc.h. (sequence_element_free_list): Remove, and all references. (mark_sequence): New functions. (mark_emit_state): New function. * except.c: Include ggc.h. (mark_eh_node, mark_eh_stack, mark_eh_queue): New functions. (mark_tree_label_node): New functions. (mark_eh_state): New function. * function.c: Include ggc.h. (mark_temp_slot, mark_function_chain): New functions. (mark_function_state): New function. (init_function_once): New function. * function.h (init_function_once): New function. * ggc-callbacks.c (lang_mark_false_label_stack): New function. * ggc.h (label_node): Declare. (eh_status, emit_status, stmt_status, varasm_status): Likewise. (lang_mark_false_label_stack): New function. (mark_temp_slot): Remove declaration. (mark_function_chain): Likewise. (mark_eh_state): Adjust prototype. (mark_stmt_state, mark_emit_state, mark_varasm_state, mark_optab): Likewise. * optabs.c: Include ggc.h. (mark_optab): New function. (init_optabs): Add gc roots. * stmt.c: Include ggc.h. (mark_cond_nesting, mark_loop_nesting): New functions. (mark_block_nesting, mark_case_nesting, mark_goto_fixup): Likewise. (mark_stmt_state): New function. * toplev.c (compile_file): Call init_function_once. * tree.c: Include ggc.h. (type_hash): Move declaration earlier in file. (TYPE_HASH_SIZE, type_hash_table): Likewise. (init_obstacks): Add gc roots. (mark_type_hash): New function. * varasm.c: Include ggc.h. (mark_pool_constant): New function. (mark_varasm_state): New function. Co-Authored-By: Bernd Schmidt <bernds@cygnus.co.uk> Co-Authored-By: Mark Mitchell <mark@codesourcery.com> From-SVN: r29119
1999-09-05c-decl.c (struct language_function): Renamed from struct c_function.Bernd Schmidt1-0/+9
* c-decl.c (struct language_function): Renamed from struct c_function. Delete elt NEXT. (c_function_chain): Delete. (push_c_function_context): New arg F. Don't warn about nested functions here. Fill LANGUAGE elt of F. Delete code to update c_function_chain. Don't call push_function_context. (pop_c_function_context): New arg F. Restore from there instead of from c_function_chain. Don't call pop_function_context. Clear out LANGUAGE field of F when done. * c-lang.c: Include "function.h" (lang_init): Initialize save_lang_status and restore_lang_status. * c-parse.in (nested_function, nested_function_notype): Warn about nested functions. Call push_function_context/pop_function_context instead of the _c_ variants. * c-tree.h (push_c_function_context, pop_c_function_context): Update prototype. * Makefile.in (c-lang.o): Update dependencies. * emit-rtl.c (init_emit): Use xmalloc to allocate regno_reg_rtx, regno_pointer_flag, regno_pointer_align. (gen_reg_rtx): Use xrealloc to enlarge them. (free_emit_status): New function. * function.c (mark_machine_status, mark_lang_status): New variables. (assign_stack_local_1): Renamed from assign_outer_stack_local. Merge in some bits from assign_stack_local. All callers changed to use new name. (assign_stack_local): Just call assign_stack_local_1. (free_after_compilation): New function. (put_reg_into_stack): Simplify to always call assign_stack_local_1. (trampoline_address): Likewise. (assign_parms): Use xcalloc/xrealloc to allocate parm_reg_stack_loc. (prepare_function_start): Explicitly clear some more variables. * function.h (struct function): New elt can_garbage_collect. (mark_machine_status, mark_lang_status): Declare variables. (free_after_compilation, free_emit_status, free_varasm_status, init_varasm_status): Declare functions. * toplev.c (rest_of_compilation): Call free_after_compilation when done with the current function. * varasm.c (free_varasm_status): New function. From-SVN: r29117
1999-09-04Change memory mangement and constant pool handling for nested functions to ↵Bernd Schmidt1-19/+9
match that of normal functions; add init_machine_status mechanism. From-SVN: r29101
1999-09-04function.h (struct function): Add new element LANGUAGE.Bernd Schmidt1-0/+7
* function.h (struct function): Add new element LANGUAGE. (save_lang_status): Declare new variable. (restore_lang_status): Likewise. * function.c (save_lang_status): Define. (restore_lang_status): Likewise. (push_function_context_to): Call language-specific save function. (pop_function_context_from): Call language-specific restore function. From-SVN: r29095
1999-08-29tree.c (tree_code_name): Constify a char*.Kaveh R. Ghazi1-2/+2
* tree.c (tree_code_name): Constify a char*. * tree.h (tree_code_name, decl_printable_name): Likewise. * function.h (struct function): Likewise. * toplev.c (decl_name, decl_printable_name): Likewise. * vax/vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Likewise. * objc/objc-act.c (decl_printable_name): Remove redundant prototype. (init_objc): Remove function pointer cast. From-SVN: r28966
1999-08-09Include function.h in most files.Bernd Schmidt1-102/+382
Include function.h in most files. Remove most of the global variables duplicated in function.h. Add accessor macros for them which access current_function. Delete INLINE_HEADER rtx and related code, replace with code using struct function to store inlining related data. From-SVN: r28626
1999-08-01Backport of GC branch patches part 2: kill stmt status saving.Bernd Schmidt1-20/+1
From-SVN: r28374
1999-07-31Backport of GC branch patches part 1: kill eh status saving.Bernd Schmidt1-11/+6
From-SVN: r28357
1999-07-01except.c: Include intl.h.Richard Henderson1-0/+1
X * except.c: Include intl.h. (expand_eh_return): Set current_function_cannot_inline. (save_eh_status, restore_eh_status): Twiddle eh_return_stub_label. * function.h (struct function): Add eh_return_stub_label. * flow.c (delete_unreachable_blocks): Don't merge across EH edges. * Makefile.in (except.o): Depend on intl.h. From-SVN: r27909
1999-05-30[multiple changes]Jeff Law1-0/+29
Sun May 30 14:29:17 1999 Eric Raskin (ehr@listworks.com) * dgux.h (STARTFILE_SPEC): Fix incorrectly matched curly-braces. Sun May 30 14:19:13 1999 Jeffrey A Law (law@cygnus.com) * function.h (cleanup_label, frame_offset): Declare. (tail_recursion_label, tail_recursion_reentry): Likewise. (arg_pointer_save_area, rtl_expr_chain): Likewise. * stmt.c (cleanup_label, frame_offset): Delete extern declarations. (tail_recursion_label, tail_recursion_reentry): Likewise. (arg_pointer_save_area, rtl_expr_chain): Likewise. From-SVN: r27249
1999-02-25Flow rewrite to use basic block structures and edge lists.Richard Henderson1-0/+1
From-SVN: r25450
1999-02-08output.h (current_function_has_computed_jump): Rename from ↵Richard Henderson1-1/+1
current_function_addresses_labels. * output.h (current_function_has_computed_jump): Rename from current_function_addresses_labels. * function.h (struct function): Likewise for addresses_labels member. * rtl.h (FUNCTION_FLAGS_HAS_COMPUTED_JUMP): Likewise. * function.c (current_function_has_computed_jump): Likewise. Update all references. * integrate.c (function_cannot_inline_p): Test current_function_has_computed_jump instead of addresses_labels. (initialize_for_inline): Likewise save. (output_inline_function): Likewise restore. * expr.c (expand_expr): Don't reference addresses_labels variables. * stmt.c (expand_computed_goto): Set has_computed_jump. From-SVN: r25100
1999-01-26Merge in gcc2 snapshot 19980929. See gcc/ChangeLog and gcc/FSFChangeLog forJeffrey A Law1-0/+1
details. From-SVN: r24879
1998-11-20function.c (nonlocal_goto_handler_slots): Renamed from ↵Bernd Schmidt1-1/+1
nonlocal_goto_handler_slot; now an EXPR_LIST chain. * function.c (nonlocal_goto_handler_slots): Renamed from nonlocal_goto_handler_slot; now an EXPR_LIST chain. (push_function_context_to): Adjust for this change. (pop_function_context_from): Likewise. (init_function_start): Likewise. (expand_function_end): Likewise. * function.h (struct function): Likewise. * calls.c (expand_call): Likewise. * explow.c (allocate_dynamic_stack_space): Likewise. * expr.h (nonlocal_goto_handler_slots): Rename its declaration. * stmt.c (declare_nonlocal_label): Make a new handler slot for each label. (expand_goto): When doing a nonlocal goto, find corresponding handler slot for it. Don't put the label address in the static chain register. (expand_end_bindings): Break out nonlocal goto handling code into three new functions. (expand_nl_handler_label, expand_nl_goto_receiver, expand_nl_goto_receivers): New static functions, broken out of expand_end_bindings and adapted to create one handler per nonlocal label. * function.c (delete_handlers): Delete insn if it references any of the nonlocal goto handler slots. * i960.md (nonlocal_goto): Comment out code that modifies static_chain_rtx. * sparc.md (nonlocal_goto): Likewise. (goto_handler_and_restore_v9): Comment out. (goto_handler_and_restore_v9_sp64): Comment out. From-SVN: r23732
1998-10-22expr.c (pending_chain): Move up.Jason Merrill1-0/+1
* expr.c (pending_chain): Move up. (save_expr_status): Do save pending_chain. (restore_expr_status): And restore it. * function.h (struct function): Add pending_chain. From-SVN: r23241
1998-10-11Fine-grained control of -fcheck-memory-usage with new no_check_memory_usage ↵Ken Raeburn1-0/+1
attribute. Fine-grained control of -fcheck-memory-usage with new no_check_memory_usage attribute. Misc minor bugfixes and tests for it too. From-SVN: r22983
1998-09-15tree.h (BUILT_IN_CALLER_RETURN_ADDRESS): Unused.Richard Henderson1-2/+0
* tree.h (BUILT_IN_CALLER_RETURN_ADDRESS): Unused. Kill. (BUILT_IN_FP, BUILT_IN_SP, BUILT_IN_SET_RETURN_ADDR_REG): Kill. (BUILT_IN_EH_STUB_OLD, BUILT_IN_EH_STUB, BUILT_IN_SET_EH_REGS): Kill. (BUILT_IN_EH_RETURN, BUILT_IN_DWARF_CFA): New. * c-decl.c (init_decl_processing): Update accordingly. * expr.c (expand_builtin): Likewise. * cp/decl.c (init_decl_processing): Likewise. * rtl.h (global_rtl): Add cfa entry. (virtual_cfa_rtx, VIRTUAL_CFA_REGNUM): New. (LAST_VIRTUAL_REGISTER): Update. * emit-rtl.c (global_rtl): Add cfa entry. (init_emit): Initialize it. * function.c (cfa_offset): New. (instantiate_virtual_regs): Initialize it. (instantiate_virtual_regs_1): Instantiate virtual_cfa_rtx. (expand_function_end): Call expand_eh_return. * tm.texi (ARG_POINTER_CFA_OFFSET): New. * except.c (current_function_eh_stub_label): Kill. (current_function_eh_old_stub_label): Likwise; update all references. (expand_builtin_set_return_addr_reg): Kill. (expand_builtin_eh_stub_old, expand_builtin_eh_stub): Kill. (expand_builtin_set_eh_regs): Kill. (eh_regs): Produce a third reg for the actual handler address. (eh_return_context, eh_return_stack_adjust): New. (eh_return_handler, eh_return_stub_label): New. (init_eh_for_function): Initialize them. (expand_builtin_eh_return, expand_eh_return): New. * except.h: Update prototypes. * flow.c (find_basic_blocks_1): Update references to the stub label. * function.h (struct function): Kill stub label elements. * libgcc2.c (in_reg_window): For REG_SAVED_REG, check that the register number is one that would be in the previous window. Provide a dummy definition for non-windowed targets. (get_reg_addr): New function. (get_reg, put_reg, copy_reg): Use it. (__throw): Rely on in_reg_window, not INCOMING_REGNO. Kill stub generating code and use __builtin_eh_return. Use __builtin_dwarf_cfa. * alpha.c (alpha_eh_epilogue_sp_ofs): New. (alpha_init_expanders): Initialize it. (alpha_expand_epilogue): Use it. * alpha.h: Declare it. * alpha.md (eh_epilogue): New. * m68h.h (ARG_POINTER_CFA_OFFSET): New. * sparc.h (ARG_POINTER_CFA_OFFSET): New. From-SVN: r22436
1998-09-09except.h (current_function_eh_stub_label): Declare.Bernd Schmidt1-0/+2
* except.h (current_function_eh_stub_label): Declare. (current_function_eh_old_stub_label): Declare. * function.h (struct function): New members eh_stub_label and eh_old_stub_label. * except.c (current_function_eh_stub_label): New variable. (current_function_eh_old_stub_label): New variable. (init_eh_for_function): Clear them. (save_eh_status): Save them. (restore_eh_status): Restore them. (expand_builtin_eh_stub): Set current_function_eh_stub_label. (expand_builtin_eh_stub_old): Set current_function_eh_old_stub_label. * flow.c (find_basic_blocks_1): When handling a REG_LABEL note, don't make an edge from the block that contains it to the block starting with the label if this label is one of the eh stub labels. If eh stub labels exist, show they are reachable from the last block in the function. From-SVN: r22369
1998-07-30Function entry/exit profiling instrumentation:Ken Raeburn1-0/+1
* expr.h (profile_function_entry_libfunc, profile_function_exit_libfunc): Declare new variables. * optabs.c: Define them here. (init_optabs): Initialize them. * tree.h (struct tree_decl): New flag no_instrument_function_entry_exit. (DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT): New accessor macro. * c-decl.c (duplicate_decls): Merge it. * c-common.c (enum attrs): New value A_NO_INSTRUMENT_FUNCTION. (init_attributes): Use it for "no_instrument_function". (decl_attributes): Handle it, for functions that have not yet been compiled. Set decl flag. * flags.h (flag_instrument_function_entry_exit): Declare new variable. * toplev.c (flag_instrument_function_entry_exit): Define it here. (f_options): New option "instrument-functions". * function.h (struct function): New field instrument_entry_exit. * function.c (current_function_instrument_entry_exit): New variable. (push_function_context_to, pop_function_context_from): Save and restore. (expand_function_start): Set current_ variable, maybe emit return label and entry profile call. (expand_function_end): Maybe emit exit profile call. Testsuite: * gcc.c-torture/special/eeprof-1.c: New test, for -finstrument-functions. * gcc.c-torture/special/special.exp: Run it. From-SVN: r21495
1998-06-20flow.c (allocate_for_life_analysis, [...]): Remove declaration.H.J. Lu1-0/+2
* flow.c (allocate_for_life_analysis, init_regset_vector): Remove declaration. * function.h (get_first_block_beg): New declaration. * gbl-ctors.h (__do_global_dtors): Add prototype. * gcov-io.h (__fetch_long): New declaration. (__store_long): Likewise. (__read_long): Likewise. (__write_long): Likewise. * gcov.c (print_usage): New declaration. * Makefile.in (c-iterate.o): Depend on insn-codes.h too. From-SVN: r20631
1998-06-08function.c: Define current_function_cannot_inline.Jason Merrill1-0/+1
* function.c: Define current_function_cannot_inline. (push_function_context_to): Save it. (pop_function_context_from): Restore it. * function.h (struct function): Provide it a home. * output.h: Declare it. * integrate.c (function_cannot_inline_p): Check it. * decl.c (cp_finish_decl): Disable inlining of extern inlines with static variables. From-SVN: r20332
1998-05-28Make rtx, tree types type correct if the appropriate include files was not ↵Michael Meissner1-4/+6
included From-SVN: r20114
1998-05-14First cut of changes to utilize the new exception handling modelAndrew MacLeod1-0/+1
From-SVN: r19746
1998-04-04* Check in merge from gcc2. See ChangeLog.11 and ChangeLog.12Jeff Law1-1/+3
for details. * haifa-sched.c: Mirror recent changes from gcc2. From-SVN: r18984
1997-12-11[multiple changes]Teemu Torma1-6/+18
Thu Dec 11 20:42:18 1997 Teemu Torma <tot@trema.com> Thread-safe EH support for pthreads, DCE threads and Solaris threads. * integrate.c (expand_inline_function): If the inline fn uses eh context, make sure that the current fn has one. * toplev.c (rest_of_compilation): Call emit_eh_context. * except.c (use_eh_context): New fn. (get_eh_context_once): New fn. (call_get_eh_context): New fn. (emit_eh_context): New fn. (get_eh_context): Call either get_eh_context_once or call_get_eh_context, depending on what we have. (get_dynamic_handler_chain): Call get_eh_context_once. * except.h: Prototypes for fns above. * optabs.c (get_eh_context_libfunc): Removed. (init_optabs): Don't initialize it. * expr.h (get_eh_context_libfunc): Removed. * rtl.h, rtl.c: New reg_note REG_EH_CONTEXT. * config/pa/pa.h (CPP_SPEC): Support for -threads. * config/pa/pa-hpux10.h (LIB_SPEC): Ditto. * config/pa/t-pa (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): New multilib for -threads. * config/sparc/t-sol2: Added multilibs for -threads and made -pthreads alias to it. * config/sparc/sol2.h (CPP_SPEC, LIB_SPEC): Added -threads and -pthreads options. * libgcc-thr.h: New file. * libgcc2.c: (__get_cpp_eh_context): Removed. (struct cpp_eh_context): Removed. (struct eh_context): Replaced cpp_eh_context with generic language specific pointer. (__get_eh_info): New function. (__throw): Check eh_context::info. (__sjthrow): Ditto. * libgcc2.c: Include libgcc-thr.h. (new_eh_context, __get_eh_context, eh_pthread_initialize, eh_context_initialize, eh_context_static, eh_context_specific, eh_context_free): New functions. (get_eh_context, eh_context_key): New variables. (__sjthrow, __sjpopnthrow, __eh_pcnthrow, __throw): Use get_eh_context to get the context. (longjmp): Move the declaration inside #ifdef DONT_USE_BUILTIN_SETJMP. * frame.c: Include libgcc-thr.h. (object_mutex): Mutex to protect the object list. (find_fde, __register_frame, __register_frame_table, __deregister_frame): Hold the lock while accessing objects. * except.h (get_eh_context): Declare. * except.c (current_function_ehc): Define. (current_function_dhc, current_function_dcc): Removed. (get_eh_context): New function. (get_dynamic_handler_chain): Use get_eh_context. (get_saved_pc_ref): Ditto. (get_dynamic_cleanup_chain): Removed references to current_function_dcc. (save_eh_status, restore_eh_status): Save and restore current_function_ehc instead. * optabs.c (get_eh_context_libfunc): New variable. (init_optabs): Initialize it. * expr.h: Declare get_eh_context_libfunc. * function.h (struct function): Replaced dhc and dcc with ehc. * except.c (get_saved_pc_ref): New functions. (eh_saved_pc_rtx, eh_saved_pc): Deleted. (expand_internal_throw_indirect): Use get_saved_pc_ref() instead of eh_saved_pc. (end_eh_unwinder): Likewise. (init_eh): Remove initialization of eh_saved_pc. * optabs.c (get_saved_pc_libfunc): New variable. (init_optabs): Initialize it. * expr.h: Declare get_saved_pc_libfunc. * except.h (eh_saved_pc_rtx): Deleted. (get_saved_pc_ref): Declared. From Scott Snyder <snyder@d0sgif.fnal.gov>: * libgcc2.c (__get_saved_pc): New. (__eh_type, __eh_pc): Deleted. (__eh_pcnthrow): Use __get_saved_pc() instead of __eh_pc. (__get_dynamic_handler_chain): Move __dynamic_handler_chain inside this fcn. cp/: Thu Dec 11 20:43:33 1997 Teemu Torma <tot@trema.com> * decl.c (ptr_ptr_type_node): Define. (init_decl_processing): Initialize it. * cp-tree.h: Declare it. * exception.cc (__cp_exception_info): Use __get_eh_info. (__cp_push_exception): Ditto. (__cp_pop_exception): Ditto. From Scott Snyder <snyder@d0sgif.fnal.gov>: * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of saved_pc. (init_exception_processing): Removed saved_pc initialization. From-SVN: r17052
1997-04-24xJason Merrill1-0/+1
From-SVN: r13974
1997-04-23Add setjmp/longjmp exception handling.Mike Stump1-1/+2
From-SVN: r13968
1997-01-03(struct function): New field args_info.Richard Kenner1-1/+2
From-SVN: r13354
1996-12-07(struct function): Make frame_offset be HOST_WIDE_INT.Richard Kenner1-1/+6
(get_frame_size): Add definition. From-SVN: r13244
1996-07-23install EH codeMike Stump1-0/+8
From-SVN: r12549
1996-04-16(struct function): New field returns_pointer.Richard Kenner1-1/+2
From-SVN: r11813
1995-12-27(struct function): New field regno_pointer_align.Richard Kenner1-0/+1
From-SVN: r10867
1995-07-14(struct function): Add stdarg field.Richard Kenner1-1/+2
From-SVN: r10122
1995-06-15Update FSF address.Richard Kenner1-1/+2
From-SVN: r9961
1995-03-15Handle compilation of nested functions from another scope.Jason Merrill1-0/+10
From-SVN: r9185
1994-12-30({save_restore}_varasm_status): Add decls.Richard Kenner1-6/+10
From-SVN: r8711