Commit 69c32ec8 by Jan Hubicka Committed by Jan Hubicka

gengtype.c (write_root): Param_is argument is OK.

	* gengtype.c (write_root): Param_is argument is OK.
	* expr.c (expand_expr_real_1): Update call of get_exception_*.
	* function.h: Include varray.h
	(rtl_eh): New stucture based on except.c one.
	(call_site_record): New forward declaration and vector type.
	* calls.c (emit_call_1): Do not call
	note_current_region_may_contain_throw.
	* except.c (eh_status): Remove cur_region, try_region since they are
	unused.
	Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
	exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
	sjlj_fc, sjlj_exit_after to rth_eh in function.h. 
	Remove call_site_data_used, call_site_data_size.
	Turn call_site_record into vector in function.h.
	(note_current_region_may_contain_throw): Remove.
	(get_exception_pointer, get_exception_filter): Do not take struct
	function argument; update.
	(add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
	add_ttypes_entry, add_ehspec_entry, assign_filter_values,
	build_post_landing_pads, dw2_build_landing_pads,
	sjlj_assign_call_site_values, sjlj_mark_call_sites,
	sjlj_emit_function_enter, sjlj_emit_function_enter, 
	sjlj_emit_function_exit, sjlj_emit_dispatch_table,
	sjlj_build_landing_pads, finish_eh_generation,
	remove_exception_handler_label, remove_eh_handler,
	maybe_remove_eh_handler, add_reachable_handler,
	reachable_handlers, expand_builtin_eh_return,
	expand_eh_return, add_action_record, collect_one_action_chain,
	add_call_site, convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
	sjlj_output_call_site_table, output_function_exception_table,
	* except.h (note_current_region_may_contain_throw): Remove
	(get_exception_pointer, get_exception_filter): Do not take struct
	function argument.
	* Makefile.in (GTFILES): Put varargs before struct function.

From-SVN: r134328
parent b48a6531
2008-04-15 Jan Hubicka <jh@suse.cz>
* gengtype.c (write_root): Param_is argument is OK.
* expr.c (expand_expr_real_1): Update call of get_exception_*.
* function.h: Include varray.h
(rtl_eh): New stucture based on except.c one.
(call_site_record): New forward declaration and vector type.
* calls.c (emit_call_1): Do not call
note_current_region_may_contain_throw.
* except.c (eh_status): Remove cur_region, try_region since they are
unused.
Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
sjlj_fc, sjlj_exit_after to rth_eh in function.h.
Remove call_site_data_used, call_site_data_size.
Turn call_site_record into vector in function.h.
(note_current_region_may_contain_throw): Remove.
(get_exception_pointer, get_exception_filter): Do not take struct
function argument; update.
(add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
add_ttypes_entry, add_ehspec_entry, assign_filter_values,
build_post_landing_pads, dw2_build_landing_pads,
sjlj_assign_call_site_values, sjlj_mark_call_sites,
sjlj_emit_function_enter, sjlj_emit_function_enter,
sjlj_emit_function_exit, sjlj_emit_dispatch_table,
sjlj_build_landing_pads, finish_eh_generation,
remove_exception_handler_label, remove_eh_handler,
maybe_remove_eh_handler, add_reachable_handler,
reachable_handlers, expand_builtin_eh_return,
expand_eh_return, add_action_record, collect_one_action_chain,
add_call_site, convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
sjlj_output_call_site_table, output_function_exception_table,
* except.h (note_current_region_may_contain_throw): Remove
(get_exception_pointer, get_exception_filter): Do not take struct
function argument.
* Makefile.in (GTFILES): Put varargs before struct function.
2008-04-15 Eric Botcazou <ebotcazou@adacore.com>
* tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
......
......@@ -3107,8 +3107,8 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
$(host_xm_file_list) \
$(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \
$(srcdir)/alias.h $(srcdir)/coverage.c $(srcdir)/rtl.h \
$(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/function.h $(srcdir)/libfuncs.h $(SYMTAB_H) \
$(srcdir)/real.h $(srcdir)/varray.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \
$(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/varray.h $(srcdir)/libfuncs.h $(SYMTAB_H) \
$(srcdir)/real.h $(srcdir)/function.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \
$(srcdir)/fixed-value.h \
$(srcdir)/ipa-reference.h $(srcdir)/output.h $(srcdir)/cfgloop.h \
$(srcdir)/cselib.h $(srcdir)/basic-block.h $(srcdir)/cgraph.h \
......
......@@ -389,7 +389,6 @@ emit_call_1 (rtx funexp, tree fntree, tree fndecl ATTRIBUTE_UNUSED,
if (rn > 0)
REG_NOTES (call_insn) = gen_rtx_EXPR_LIST (REG_EH_REGION, GEN_INT (rn),
REG_NOTES (call_insn));
note_current_region_may_contain_throw ();
}
if (ecf_flags & ECF_NORETURN)
......
......@@ -35,7 +35,6 @@ extern int doing_eh (int);
/* Note that the current EH region (if any) may contain a throw, or a
call to a function which itself may contain a throw. */
extern void note_eh_region_may_contain_throw (struct eh_region *);
extern void note_current_region_may_contain_throw (void);
/* Invokes CALLBACK for every exception handler label. Only used by old
loop hackery; should not be used by new code. */
......@@ -78,8 +77,8 @@ extern rtx expand_builtin_dwarf_sp_column (void);
extern void expand_builtin_eh_return (tree, tree);
extern void expand_eh_return (void);
extern rtx expand_builtin_extend_pointer (tree);
extern rtx get_exception_pointer (struct function *);
extern rtx get_exception_filter (struct function *);
extern rtx get_exception_pointer (void);
extern rtx get_exception_filter (void);
typedef tree (*duplicate_eh_regions_map) (tree, void *);
extern int duplicate_eh_regions (struct function *, duplicate_eh_regions_map,
void *, int, int);
......
......@@ -9180,10 +9180,10 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
return const0_rtx;
case EXC_PTR_EXPR:
return get_exception_pointer (cfun);
return get_exception_pointer ();
case FILTER_EXPR:
return get_exception_filter (cfun);
return get_exception_filter ();
case FDESC_EXPR:
/* Function descriptors are not valid except for as
......
......@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "hashtab.h"
#include "varray.h"
/* Stack of pending (incomplete) sequences saved by `start_sequence'.
Each element describes one pending sequence.
......@@ -136,6 +137,34 @@ struct expr_status GTY(())
rtx x_forced_labels;
};
typedef struct call_site_record *call_site_record;
DEF_VEC_P(call_site_record);
DEF_VEC_ALLOC_P(call_site_record, gc);
/* RTL representation of exception handling. */
struct rtl_eh GTY(())
{
rtx filter;
rtx exc_ptr;
int built_landing_pads;
rtx ehr_stackadj;
rtx ehr_handler;
rtx ehr_label;
rtx sjlj_fc;
rtx sjlj_exit_after;
htab_t GTY ((param_is (struct ehl_map_entry))) exception_handler_label_map;
VEC(tree,gc) *ttype_data;
varray_type ehspec_data;
varray_type action_record_data;
VEC(call_site_record,gc) *call_site_record;
};
#define pending_stack_adjust (crtl->expr.x_pending_stack_adjust)
#define inhibit_defer_pop (crtl->expr.x_inhibit_defer_pop)
#define saveregs_value (crtl->expr.x_saveregs_value)
......@@ -146,6 +175,7 @@ struct expr_status GTY(())
struct gimple_df;
struct temp_slot;
typedef struct temp_slot *temp_slot_p;
struct call_site_record;
DEF_VEC_P(temp_slot_p);
DEF_VEC_ALLOC_P(temp_slot_p,gc);
......@@ -227,6 +257,7 @@ struct rtl_data GTY(())
struct varasm_status varasm;
struct incoming_args args;
struct function_subsections subsections;
struct rtl_eh eh;
/* For function.c */
......
......@@ -2980,6 +2980,8 @@ write_root (outf_p f, pair_p v, type_p type, const char *name, int has_length,
skip_p = 1;
else if (strcmp (o->name, "desc") == 0)
desc = o->info;
else if (strcmp (o->name, "param_is") == 0)
;
else
error_at_line (line,
"field `%s' of global `%s' has unknown option `%s'",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment