aboutsummaryrefslogtreecommitdiff
path: root/gcc/except.c
AgeCommit message (Collapse)AuthorFilesLines
1999-09-10Fix too small buffer problem found by ia64 port.Jim Wilson1-3/+8
* except.c (start_dynamic_handler): Compute size using STACK_SAVEAREA_MODE. From-SVN: r29275
1999-09-09Add a missing GC rootBernd Schmidt1-0/+2
From-SVN: r29236
1999-09-09except.c (find_all_handler_type_matches): Free the list if we found no matches.Richard Henderson1-0/+6
* except.c (find_all_handler_type_matches): Free the list if we found no matches. From-SVN: r29227
1999-09-09combine.c (SUBST): Break out to a real function do_SUBST.Richard Henderson1-1/+1
* combine.c (SUBST): Break out to a real function do_SUBST. (SUBST_INT): Likewise. * gcse.c (free_pre_mem): Free `temp_bitmap'. (pre_insert): Free `inserted'. * loop.c (basic_induction_var): Always set `location'. * function.c (expand_function_end): Add initial_trampoline as a root. * rtl.h (init_varasm_once): Declare. * toplev.c (compile_file): Call it. * ggc-simple.c (ggc_mark_string_ptr): New. (ggc_add_string_root): New. (ggc_collect): Disable collection avoidance temporarily. * ggc.h (ggc_add_string_root): Declare. * except.c (create_rethrow_ref): Use ggc_alloc_string. * optabs.c (init_libfuncs): Likewise. * varasm.c (named_section): Use ggc_alloc_string. (make_function_rtl): Likewise. (make_decl_rtl): Likewise. (assemble_static_space): Likewise. (assemble_trampoline_template): Likewise. (output_constant_def): Likewise. (force_const_mem): Likewise. (mark_const_hash_entry): New. (mark_pool_sym_hash_table): New. (mark_varasm_state): Use it. (init_varasm_once): New. * expr.h (init_one_libfunc): Declare. * optabs.c (init_one_libfunc): New. (init_optabs): Use it. * config/gofast.h: Likewise. * config/sparc/sol2.h (INIT_SUBTARGET_OPTABS): Likewise. * config/sparc/sparc.h (INIT_TARGET_OPTABS): Likewise. From-SVN: r29226
1999-09-07emit-rtl.c (free_emit_status): Take decl as a parameter.Mark Mitchell1-1/+41
* 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-07Commit parts that were missing in Mark's last commitBernd Schmidt1-0/+2
From-SVN: r29164
1999-09-07c-aux-info.c (concat): Don't define.Kaveh R. Ghazi1-23/+13
* c-aux-info.c (concat): Don't define. * cccp.c (my_strerror): Likewise. All callers changed to use xstrerror instead. (do_include): Call xstrdup, not xmalloc/strcpy. (grow_outbuf): Don't check if xrealloc returns NULL, it can't. (xmalloc, xrealloc, xcalloc, xstrdup): Don't define. * collect2.c (my_strsignal): Likewise. All callers changed to use strsignal instead. (locatelib): Call xstrdup, not xmalloc/strcpy. * 1750a.h (ASM_OUTPUT_INTERNAL_LABEL): Call xmalloc, not malloc. * dsp16xx.c (override_options): Call xstrdup, not xmalloc/strcpy. * i370.h (ASM_DECLARE_FUNCTION_NAME): Call xmalloc, not malloc. * mips.c (build_mips16_call_stub): Call xstrdup, not xmalloc/strcpy. * cppinit.c (cpp_options_init): Call xcalloc, not xmalloc/bzero. * dwarfout.c (dwarfout_init): Call concat, not xmalloc/strcpy/... * except.c (new_eh_region_entry): Call xmalloc/xrealloc, not malloc/realloc. (find_all_handler_type_matches): Likewise. Don't check return value. (get_new_handler, init_insn_eh_region, process_nestinfo): Call xmalloc, not malloc. (init_eh_nesting_info): Likewise. Call xcalloc, not xmalloc/bzero. * gcc.c (xstrerror, xmalloc, xrealloc): Don't define. (init_spec): Call xcalloc, not xmalloc/bzero. (set_spec): Call xstrdup, not save_string. (record_temp_file): Call xstrdup, not xmalloc/strcpy. (find_a_file): Call xstrdup, not xmalloc/strcpy. (process_command): Call xstrdup, not save_string. (main): Call xcalloc, not xmalloc/bzero. * gcov.c (xmalloc): Don't define. (create_program_flow_graph): Call xcalloc, not xmalloc/bzero. (scan_for_source_files): Call xstrdup, not xmalloc/strcpy. (output_data): Call xcalloc, not xmalloc/bzero. * haifa-sched.c (schedule_insns): Call xcalloc, not xmalloc/bzero. * mips-tdump.c (xmalloc): Don't define. (print_symbol): Call xmalloc, not malloc. (read_tfile): Call xcalloc, not calloc. * mips-tfile.c (xfree, my_strsignal, xmalloc, xcalloc, xrealloc): Don't define. All callers of xfree/my_strsignal changed to use free/strsignal instead. (allocate_cluster): Call xcalloc, not calloc. * objc/objc-act.c (lang_init): Call concat, not xmalloc/strcpy/... Fix memory leak, free allocated memory. * prefix.c (translate_name): Call xstrdup, not save_string. (update_path): Likewise. * profile.c (branch_prob): Call xstrdup, not xmalloc/strcpy. * protoize.c (xstrerror, xmalloc, xrealloc, xfree, savestring2): Don't define. Callers of xfree/savestring2 changed to use free/concat instead. * reload1.c (reload): Call xcalloc, not xmalloc/bzero. (init_elim_table): Likewise. * resource.c (init_resource_info): Likewise. * stupid.c (stupid_life_analysis): Likewise. * toplev.c (xmalloc, xcalloc, xrealloc, xstrdup): Don't define. (open_dump_file): Call concat, not xmalloc/strcpy/... (clean_dump_file): Likewise. (compile_file): Call xstrdup, not xmalloc/strcpy. From-SVN: r29148
1999-09-05Makefile.in (tree.o): Depend on ggc.h.Richard Henderson1-1/+75
* 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-02dwarf2out.c (dwarf2out_line): Constify `lastfile'.Richard Henderson1-1/+1
* dwarf2out.c (dwarf2out_line): Constify `lastfile'. * except.c (expand_rethrow): Remove unused variable. * expr.c (do_jump_by_parts_greater_rtx): Likewise. * flow.c (replace_insns): Likewise. (create_edge_list, verify_edge_list): Likewise. * gcse.c (cprop_cc0_jump): Protect declaration with HAVE_cc0. * genemit.c (gen_expand): Only emit `operands[N]' decl if there is special code to run. (main): Don't define operands to emit_operand. * genrecog.c (main): Don't emit an empty peephole2_insn function. * rtl.h (NOTE_BASIC_BLOCK): Use X0BBDEF. * alpha/alpha.h (normal_memory_operand): Declare. (reg_no_subreg_operand): Declare. * alpha/elf.h (ASM_DECLARE_OBJECT_NAME): Use HOST_WIDE_INT_PRINT_DEC. From-SVN: r29061
1999-09-02except.c (expand_fixup_region_end): Do not peek at INSN_UID ↵Jeffrey A Law1-2/+5
(node->entry->outer_context) for flag_new_exceptions. * except.c (expand_fixup_region_end): Do not peek at INSN_UID (node->entry->outer_context) for flag_new_exceptions. From-SVN: r29047
1999-08-26system.h: Don't redefine abort or trim_filename.Zack Weinberg1-1/+4
1999-08-25 22:10 -0700 Zack Weinberg <zack@bitmover.com> * system.h: Don't redefine abort or trim_filename. * rtl.h: Define abort to fancy_abort (__FILE__, __LINE__, 0) or fancy_abort (__FILE__, __LINE__, __FUNCTION__) depending on whether or not __FUNCTION__ is available. * tree.h: Duplicate rtl.h's definition of abort, for files that don't include rtl.h. Delete all code to perform type checking with a compiler other than GCC. * varray.h: Delete all code to perform type checking with a compiler other than GCC. Make VARRAY_CHECK() always evaluate its arguments exactly once, using a statement expression. Adjust the VARRAY_<type> accessor macros to match. * toplev.h (fatal_insn, fatal_insn_not_found): Kill. (_fatal_insn, _fatal_insn_not_found): New fns, take info on caller's location. Define fatal_insn and fatal_insn_not_found as macros that use _fatal_insn and _fatal_insn_not_found. (fancy_abort, trim_filename): Kill prototypes. * rtl.c (trim_filename): Move here from toplev.c. (fancy_abort): New function. (DIR_SEPARATOR): Provide default definition. * tree.c (tree_check_failed, tree_class_check_failed): Go through fancy_abort. (tree_check, tree_class_check, cst_or_constructor_check, expr_check): Delete. * varray.c (varray_check_failed): New function. * toplev.c (fatal_insn, fatal_insn_not_found): Replace with _fatal_insn and _fatal_insn_not_found. Go through fancy_abort. (trim_filename, fancy_abort): Delete. * builtins.c (expand_builtin_args_info): Report ICE with abort. * except.c (start_catch_handler): Report ICE with error/abort combo. * final.c (output_operand_lossage): Likewise. * flow.c (verify_flow_info): Likewise. * gcc.c: Prototype fatal. * gengenrtl.c: Undef abort after including rtl.h not system.h. * genattr.c, genattrtab.c, genemit.c, genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c, genrecog.c: Don't define fancy_abort. From-SVN: r28889
1999-08-10except.h (eh_nesting_info): Add new structure defintion.Andrew MacLeod1-21/+319
Tue Aug 10 10:47:42 EDT 1999 Andrew MacLeod <amacleod@cygnus.com> * except.h (eh_nesting_info): Add new structure defintion. (init_eh_nesting_info, free_eh_nesting_info): Add function prototypes. (reachable_handlers, update_rethrow_references): Add function prototypes. * rtl.h (struct rtvec_def): Update comments. REG_EH_RETHROW takes a rethrow symbol instead of an integer exception region number. * flow.c (Make_edges): Use new exception nesting routines to determine which handlers are reachable from a CALL or asynchronous insn. Dont add an edge for calls with a REG_EH_REGION of -1 to non-local goto receivers. (delete_eh_regions): Update rethrow labels, and don't delete regions which are the target of a rethrow. * except.c (struct func_eh_entry): Add rethrow_ref field, now we can avoid overloading the SYMBOL_REF_USED flag. (rethrow_symbol_map): Use new rethrow_ref field. (rethrow_used): Use new rethrow_ref field. (expand_rethrow): REG_EH_RETHROW now has a SYMBOL_REF instead of an integer. Fix formatting. (output_exception_table_entry): Use new rethrow_ref field. (can_throw): Check for EH_REGION_NOTE before deciding whether a CALL can throw or not. (scan_region): Call rethrow_used() instead of accessing data structure. (update_rethrow_references): New function to make sure only regions which are still targets of a rethrow are flagged as such. (process_nestinfo): New static function to initialize a handler list for a specific region. (init_eh_nesting_info): New function to allocate and initialize the list of all EH handlers reachable from all regions. (reachable_handlers): New function to retrieve the list of handlers reachable from a specific region and insn. (free_eh_nesting_info): New function to dispose of a list of reachable handlers. From-SVN: r28647
1999-08-09print-tree.c (print_node): Print base for OFFSET_TYPEs.Jason Merrill1-18/+14
* print-tree.c (print_node): Print base for OFFSET_TYPEs. * except.c (expand_eh_region_start_for_decl): Always start a new block. * stmt.c (is_eh_region): Make sure current_function is present, too. From-SVN: r28621
1999-07-31Backport of GC branch patches part 1: kill eh status saving.Bernd Schmidt1-111/+2
From-SVN: r28357
1999-07-26except.c (start_dynamic_cleanup): Use force_operand on the buffer's address.Richard Henderson1-1/+3
* except.c (start_dynamic_cleanup): Use force_operand on the buffer's address. From-SVN: r28282
1999-07-01except.c: Include intl.h.Richard Henderson1-0/+5
� * 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: r27908
1999-04-15except.c (start_catch_hadler): Be sure rtime_address is Pmode if ↵Donn Terry1-0/+3
POINTERS_EXTEND_UNSIGNED. * except.c (start_catch_hadler): Be sure rtime_address is Pmode if POINTERS_EXTEND_UNSIGNED. From-SVN: r26478
1999-04-15except.c (expand_eh_return): Force pointers to proper mode if ↵Donn Terry1-0/+6
POINTERS_EXTEND_UNSIGNED. * except.c (expand_eh_return): Force pointers to proper mode if POINTERS_EXTEND_UNSIGNED. From-SVN: r26477
1999-03-29except.c (start_dynamic_handler): Force jmp_buf address to and operand ↵Richard Henderson1-1/+1
before moving to memory. * except.c (start_dynamic_handler): Force jmp_buf address to and operand before moving to memory. From-SVN: r26058
1999-02-25Flow rewrite to use basic block structures and edge lists.Richard Henderson1-2/+8
From-SVN: r25450
1999-02-14except.c (start_catch_handler): Use emit_cmp_and_jump_insns.Jeffrey A Law1-3/+3
* except.c (start_catch_handler): Use emit_cmp_and_jump_insns. * explow.c (probe_stack_range): Likewise. * expmed.c (do_cmp_and_jump): Likewise. * expr.c (store_expr, expand_expr, expand_builtin): Likewise. (do_tablejump): Likewise. * stmt.c (expand_expr_stmt, expand_end_case): Likewise. (do_jump_if_equal, emit_case_nodes): Likewise. * optabs.c (emit_cmp_and_jump_insns): Clarify comments. If UNSIGNEDP, then convert comparison to an unsigned code before emitting the jump. (expand_float, expand_fix): Use emit_cmp_and_jump_insns. From-SVN: r25205
1998-12-23Warning fixes:Kaveh R. Ghazi1-1/+0
* alias.c (record_alias_subset): Remove ignored `&'. (init_alias_once): Likewise. * c-lex.c (UNGETC): Cast first argument of comma expression to void. * config/mips/mips.c (mips_asm_file_end): Cast the result of fwrite to `int' when comparing against one. * config/mips/mips.h (CAN_ELIMINATE): Add parens around && within ||. (INITIAL_ELIMINATION_OFFSET): Add braces to avoid ambiguous `else'. * cse.c (rehash_using_reg): Change type of variable `i' to unsigned int. * dwarf2out.c (initial_return_save): Cast -1 to unsigned before assigning it to one. * except.c (duplicate_eh_handlers): Remove unused variable `tmp'. * final.c (final_scan_insn): Likewise for variable `i'. (output_asm_insn): Cast a char to unsigned char when used as an array index. * gcse.c (compute_pre_ppinout): Cast -1 to SBITMAP_ELT_TYPE when assigning it to one. * loop.c (strength_reduce): Remove unused variables `count' and `temp'. * recog.c (preprocess_constraints): Cast a char to unsigned char when used as an array index. * regmove.c (find_matches): Likewise. * reload1.c (calculate_needs): Add default case in switch. (eliminate_regs_in_insn): Initialize variable `offset'. (set_offsets_for_label): Change type of variable `i' to unsigned. (reload_as_needed): Wrap variable `i' in macro check on AUTO_INC_DEC || INSN_CLOBBERS_REGNO_P. * scan-decls.c (scan_decls): Mark parameters `argc' and `argv' with ATTRIBUTE_UNUSED. Cast variable `start_written' to size_t when comparing against one. * stor-layout.c (layout_decl): Cast maximum_field_alignment to unsigned when comparing against one. Likewise for GET_MODE_ALIGNMENT(). (layout_record): Cast record_align to int when comparing against a signed value. (layout_type): Cast TYPE_ALIGN() to int when comparing against a signed value. * tree.c (get_identifier): Cast variable `len' to unsigned when comparing against one. (maybe_get_identifier): Likewise From-SVN: r24403
1998-12-09except.c (duplicate_eh_handlers, [...]): Function pointer parameters changed ↵Kaveh R. Ghazi1-2/+2
to use the PARAMS() macro. * except.c (duplicate_eh_handlers, rethrow_symbol_map): Function pointer parameters changed to use the PARAMS() macro. From-SVN: r24204
1998-12-09except.h (struct handler_info): Add handler_number fieldAndrew MacLeod1-7/+6
* except.h (struct handler_info): Add handler_number field * except.c (gen_exception_label): EH labels no longer need to be on the permanent obstack. (get_new_handler): Set the label number field. (output_exception_table_entry): Regenerate handler label reference from the label number field. (init_eh): Remove a blank line * integrate.c (get_label_from_map): Labels no longer need to be on the permanent obstack. From-SVN: r24203
1998-12-08See ChangeLog..Andrew MacLeod1-27/+201
Tue Dec 8 15:32:56 EST 1998 Andrew MacLeod <amacleod@cygnus.com> See ChangeLog.. These are the files that were changed: * eh-common.h (struct eh_context): Add table_index for rethrows. * rtl.h (enum reg_note): Add REG_EH_REGION and REG_EH_RETHROW reg notes. * rtl.c (reg_note_name): Add strings for new reg_note enums. * expr.h (rethrow_libfunc): New library decl. * optabs.c (rethrow_libfunc): Initialize. * except.h (struct eh_entry): Add new field 'rethrow_label'. * except.c (create_rethrow_ref): New function to create a single * flow.c (make_edges): Add different edges for rethrow calls, * integrate.c (save_for_inline_eh_labelmap): New callback routine to * libgcc2.c (find_exception_handler): Generalize to enable it to * cp/except.c * cp/exception.cc From-SVN: r24194
1998-12-03* except.c (set_exception_version_code): Argument is an "int".Jeffrey A Law1-1/+1
From-SVN: r24085
1998-11-29except.c (add_new_handler): Complain about additional handlers after one ↵Jason Merrill1-2/+7
that catches everything. * except.c (add_new_handler): Complain about additional handlers after one that catches everything. From-SVN: r23990
1998-11-11Fix x86 __throw -O0 -fpic compiler abort.Jim Wilson1-1/+3
* except.c (expand_eh_return): Readd force_operand call lost in Sept 15 change. From-SVN: r23606
1998-11-05except.c (expand_fixup_region_end): Make sure outer context labels are not ↵Andrew MacLeod1-0/+22
issued in an inner context during cleanups. Thu Nov 5 07:57:45 EST 1998 Andrew MacLeod <amacleod@cygnus.com> * except.c (expand_fixup_region_end): Make sure outer context labels are not issued in an inner context during cleanups. From-SVN: r23538
1998-10-29except.c (emit_eh_context): Make the EH context register stay alive at -O0 ↵Andrew MacLeod1-0/+8
so stupid.c doesn't get confused. Thu Oct 29 14:10:22 EST 1998 Andrew MacLeod <amacleod@cygnus.com> * except.c (emit_eh_context): Make the EH context register stay alive at -O0 so stupid.c doesn't get confused. From-SVN: r23423
1998-09-21expr.h (eh_rtime_match_libfunc): New extern declaration.Andrew MacLeod1-3/+2
Mon Sep 21 17:15:26 EDT 1998 Andrew MacLeod <amacleod@cygnus.com> * expr.h (eh_rtime_match_libfunc): New extern declaration. * optabs.c (init_optabs): Set eh_rtime_match_libfunc. * except.c (start_catch_handler): Use eh_rtime_match_libfunc. * libgcc2.c (__eh_rtime_match): Always return 0 if the matcher is NULL. Only include <stdio.h> if inhibit_libc is not defined. From-SVN: r22532
1998-09-17[multiple changes]Andrew MacLeod1-4/+4
Thu Sep 17 16:42:16 EDT 1998 Andrew MacLeod <amacleod@cygnus.com> * except.c (start_catch_handler): Issue 'fatal' instead of 'error' and re-align some code. * libgcc2.c (__eh_rtime_match): fprintf a runtime error. Use <stdio.h>. 1998-09-17 Andrew MacLeod <amacleod@cygnus.com> * exception.cc (__cplus_type_matcher): realign some code. From-SVN: r22462
1998-09-15tree.h (BUILT_IN_CALLER_RETURN_ADDRESS): Unused.Richard Henderson1-121/+121
* 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-15[multiple changes]Andrew MacLeod1-3/+52
Tue Sep 15 14:10:54 EDT 1998 Andrew MacLeod <amacleod@cygnus.com> * except.h (struct eh_entry): Add false_label field. (end_catch_handler): Add prototype. * except.c (push_eh_entry): Set false_label field to NULL_RTX. (start_catch_handler): When using old style exceptions, issue runtime typematch code before continuing with the handler. (end_catch_handler): New function, generates label after handler if needed by older style exceptions. (expand_start_all_catch): No need to check for new style exceptions. (output_exception_table_entry): Only output the first handler label for old style exceptions. * libgcc2.c (__eh_rtime_match): New routine to lump runtime matching mechanism into one function, if a runtime matcher is provided. 1998-09-15 Andrew MacLeod <amacleod@cygnus.com> * cp/except.c (expand_start_catch_block): No need to check for new exception model. (process_start_catch_block_old): Deleted. (process_start_catch_block): Add call to start_decl_1(). (expand_end_catch_block): Add call to end_catch_handler(). * cp/exception.cc (__cplus_type_matcher): Only check the exception language if there is an exception table. From-SVN: r22425
1998-09-09except.h (current_function_eh_stub_label): Declare.Bernd Schmidt1-0/+16
* 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-08-17c-decl.c (init_decl_processing): Remove unneeded &.Kaveh R. Ghazi1-11/+5
* c-decl.c (init_decl_processing): Remove unneeded &. * alpha.h (alpha_initialize_trampoline): Provide prototype. * except.c (set_exception_lang_code, set_exception_version_code): Change parameter from `short' to `int' to avoid using a gcc extension. * except.h (set_exception_lang_code, set_exception_version_code): Likewise for prototypes. * flow.c (count_reg_references): Remove unused variables `regno' and `i'. * gcse.c (hash_scan_insn): Declare parameter `in_libcall_block'. * prefix.c (translate_name): Cast the result of `alloca'. * varray.h (VARRAY_FREE): Reimplement as a `do-while(0)' statement. Co-Authored-By: Jeffrey A Law <law@cygnus.com> From-SVN: r21781
1998-08-11except.c (set_exception_lang_code, [...]): Use prototype-style definition if ↵John Carr1-0/+8
__STDC__, to match declaration in except.h. * except.c (set_exception_lang_code, set_exception_version_code): Use prototype-style definition if __STDC__, to match declaration in except.h. * genemit.c: Change FAIL and DONE macros not to use loops. From-SVN: r21675
1998-06-29Warning fixes:Kaveh R. Ghazi1-1/+2
* Makefile.in (fix-header): Don't needlessly depend on cpperror.o. * alias.c (CHECK_ALIAS_SETS_FOR_CONSISTENCY): Cast expansion to void since it is evaluated in a comma list. * mips.h (ASM_GENERATE_INTERNAL_LABEL): Always sprintf `NUM' argument as a long and cast `NUM' to long to ensure it is of the proper width. Wrap macro arguments in parens when they appear in the expansion. * sol2.h (ASM_GENERATE_INTERNAL_LABEL): Likewise. * sparc.h (ASM_GENERATE_INTERNAL_LABEL): Likewise. (ASM_DECLARE_RESULT): Fix fprintf format specifier to match function argument return type. (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_FP_P, REGNO_OK_FOR_CCFP_P): Use `(unsigned)' not `U'. * cpplib.c (cpp_message_from_errno): Remove unneeded argument to cpp_message. * dbxout.c: Fix the comments after an #endif to reflect the actual condition tested in the preceding #if. * except.c (find_all_handler_type_matches): Switch to old-style function definition. * expr.c (expand_builtin): Remove unused variable `type' twice. * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Cast -1 before comparing it to an unsigned long. * haifa-sched.c (print_insn_chain): Remove unused function. * objc/objc-act.c (build_msg_pool_reference): Hide prototype and definition. * toplev.c: When testing whether to include dbxout.h, also include it when XCOFF_DEBUGGING_INFO is defined. * unroll.c (unroll_loop): Add parentheses around assignment used as truth value. From-SVN: r20801
1998-06-25[multiple changes]Andrew MacLeod1-1/+65
Thu Jun 25 16:59:18 EDT 1998 Andrew MacLeod <amacleod@cygnus.com> * except.h (CATCH_ALL_TYPE): Definition moved to eh-common.h. (find_all_handler_type_matches): Add function prototype. * eh-common.h (CATCH_ALL_TYPE): Definition added. * except.c (find_all_handler_type_matches): Add function to find all runtime type info in the exception table. (output_exception_table_entry): Special case for CATCH_ALL_TYPE. 1998-06-25 Andrew MacLeod <amacleod@cygnus.com> * cp-tree.h (mark_all_runtime_matches): Add function prototype. * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED flag for all function decls which are in the exception table. * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match. * decl2.c (finish_file): Call mark_all_runtime_matches to make sure code is emitted for any referenced rtti function. From-SVN: r20718
1998-06-24except.c (start_catch_handler): Do nothing if EH is not on.Andrew MacLeod1-3/+10
Wed Jun 24 09:14:04 EDT 1998 Andrew MacLeod <amacleod@cygnus.com> * except.c (start_catch_handler): Do nothing if EH is not on. From-SVN: r20695
1998-06-23Have -fnew-exceptions actually use the runtime field, and not generate ↵Andrew MacLeod1-2/+6
runtime checking code inside each handler. Have -fnew-exceptions actually use the runtime field, and not generate runtime checking code inside each handler. THis works at low opt, but not with optimization at the moment. Tue Jun 23 10:06:07 EDT 1998 Andrew MacLeod (amacleod@cygnus.com) * eh-common.h (struct __eh_info): Remove coerced value field. * libgcc2.c (find_exception_handler): Don't set coerced_value field. * except.c (get_dynamic_handler_chain, get_dynamic_cleanup_chain): Use POINTER_SIZE instead of Pmode. (expand_start_all_catch): Call start_catch_handler() if we are not using new style exceptions. 1998-06-22 Andrew MacLeod (amacleod@cygnus.com) * parse.y (function_try_block): Don't call start_catch_handler. * except.c (call_eh_info): Remove coerced field from declaration. (build_eh_type_type_ref): New function to create an address of a rtti function for the new style exception tables. (expand_start_catch_block): Split function, this contains the common part. (process_start_catch_block_old): New function to perform the rest of expand_start_catch_block under old style exceptions. (process_start_catch_block_old): New function to perform the rest of expand_start_catch_block under new style exceptions. (expand_end_catch_block): Only pop the false label off the stack under the old style of exceptions. * semantics.c (finish_try_block): Don't call start_catch_handler. * exception.cc (struct cp_eh_info): Add original_value field. (__cplus_type_matcher): Perform type matching on the original exception value, and if we have a match, set the current value. (__cp_push_exception): Set the original expcetion value. From-SVN: r20671
1998-06-19except.c (jumpif_rtx): Put declaration and definition inside a suitable #ifdef.Jeffrey A Law1-12/+4
* except.c (jumpif_rtx): Put declaration and definition inside a suitable #ifdef. (jumpifnot_rtx): Delete dead function. From-SVN: r20626
1998-06-19except.c (jumpif_rtx): Make static and add prototype.Jeffrey A Law1-2/+5
* except.c (jumpif_rtx): Make static and add prototype. (jumpifnot_rtx): Likewise. From-SVN: r20622
1998-06-18Warning fixes:Kaveh R. Ghazi1-1/+1
* Makefile.in (c-lang.o): Depend on output.h. * c-lang.c: Include output.h. * sparc.c (sparc_builtin_saveregs): Remove unused variable `fntype'. * except.c (expand_builtin_eh_stub): Likewise for variable `jump_to'. * genrecog.c (write_subroutine): When writing insn-recog.c, mark variables `insn', `pnum_clobbers', `x[0 .. max_depth]' and `tem' with ATTRIBUTE_UNUSED. * regmove.c (copy_src_to_dest): Make function static to match its prototype. * reload1.c Include hard-reg-set.h before rtl.h to get macro HARD_CONST. Include machmode.h before hard-reg-set.h. * rtl.h: Prototype `retry_global_alloc' and wrap with macro HARD_CONST to protect usage of typedef HARD_REG_SET. * tree.c: Prototype `_obstack_allocated_p'. * varasm.c: Wrap prototype of `asm_output_aligned_bss' in macro BSS_SECTION_ASM_OP. From-SVN: r20556
1998-06-17except.c (add_new_handler): fix bug in finding last region handler.Andrew MacLeod1-1/+2
Wed Jun 17 16:25:38 EDT 1998 Andrew MacLeod (amacleod@cygnus.com) * except.c (add_new_handler): fix bug in finding last region handler. * libgcc2.c (find_exception_handler): Pass exception table pointer to runtime type matcher, not the match info field. From-SVN: r20541
1998-06-17eh-common.h (struct eh_context): Add comment for hidden use of field ↵Andrew MacLeod1-1/+4
dynamic_handler_chain. * eh-common.h (struct eh_context): Add comment for hidden use of field dynamic_handler_chain. * except.c (get_dynamic_handler_chain): Comment on, and use the correct offset of the dynamic_handler_chain field. From-SVN: r20540
1998-06-11Fix m68k build failure.Jim Wilson1-2/+2
* except.c (expand_builtin_eh_stub): Call emit_move_insn rather than calling gen_rtx_SET. From-SVN: r20431
1998-06-09Minor tweaks.Andrew MacLeod1-11/+6
* except.c (expand_start_catch): Rename to start_catch_handler. (expand_end_catch): Delete function. (expand_end_all_catch): Remove catch status that expand_end_catch use to do. * except.h (expand_start_catch): Rename prototype. (expand_end_catch): Delete prototype. * semantics.c (finish_try_block): Rename expand_start_catch, and delete expand_end_catch. * parse.y (function_try_block): Rename expand_start_catch, and delete expand_end_catch. * except.c (expand_end_eh_spec): Rename expand_start_catch, and delete expand_end_catch. From-SVN: r20379
1998-06-08[multiple changes]Andrew MacLeod1-40/+50
Thu Jun 8 14:16:15 EDT 1998 Andrew MacLeod <amacleod@cygnus.com> * eh-common.h: Remove NEW_EH_MODEL compile time flag, and replace with flag_new_exceptions runtime flag. (struct old_exception_table): New struct which represents what the exception table looks like without the new model. (NEW_EH_RUNTIME): New value used as a tag in the exception table to flag that this is a new style table. * except.h: Remove compile time flag NEW_EH_MODEL. (expand_builtin_eh_stub_old): New prototype. * tree.h (enum built_in_function): Add BUILT_IN_EH_STUB_OLD. * expr.c (expand_builtin): New builtin func BUILT_IN_EH_STUB_OLD. * c-decl.c (init_decl_processing): Add new builtin function __builtin_eh_stub_old. * final.c (final_scan_insn): Replace compile time flag NEW_EH_MODEL. * flags.h (flag_new_exceptions): New runtime flag. * toplev.c (flag_new_exceptions): Initialize default to 0, -fnew-exceptions sets to 1. * except.c (output_exception_table_entry): Output New style exception identifier into table, and replace compile time flag NEW_EH_MODEL with runtime flag flag_new_exceptions. (output_exception_table): Replace compile time flag NEW_EH_MODEL. (expand_builtin_eh_stub_old): Duplicates original functionality of expand_builtin_eh_stub. (expand_builtin_eh_stub): Replace compile time flag NEW_EH_MODEL. * libgcc2.c (find_exception_handler): Remove NEW_EH_MODEL #ifdefs. (old_find_exception_handler): New func, same as find_exception_handler except it works on the old style exception table. (__throw): Replace NEW_EH_MODEL. Detect new model based on presence of identifier in the exception table, and call appropriate routines. 1998-06-08 Andrew MacLeod <amacleod@cygnus.com> * except.c (init_exception_processing): Remove NEW_EH_MODEL compile time flag. Call __cp_eh_info instead of __cp_exception_info. * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag. (__cp_exception_info): Return offset into cp_eh_info structure to match what use to be the start of this structure. (__cp_eh_info): New function to return a pointer to cp_eh_info struct. (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL compile time flag. (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call __cp_eh_info instead of __cp_exception_info. From-SVN: r20336
1998-05-28Flow now removes exception regions when their handlers are all removed.Andrew MacLeod1-0/+28
From-SVN: r20115