Commit 0519ce30 by Mark Mitchell Committed by Mark Mitchell

except.h (can_throw): Declare it.

	* except.h (can_throw): Declare it.
	* except.c (can_throw): Give it external linkage.
	* resource.c (find_dead_or_set_registers): Use can_throw.

From-SVN: r34178
parent 3ec6bad3
2000-05-25 Mark Mitchell <mark@codesourcery.com>
* except.h (can_throw): Declare it.
* except.c (can_throw): Give it external linkage.
* resource.c (find_dead_or_set_registers): Use can_throw.
2000-05-25 Richard Henderson <rth@cygnus.com>
* flow.c (mark_set_1): Don't record conditionally dead memory.
......@@ -463,7 +463,6 @@ static void start_dynamic_cleanup PARAMS ((tree, tree));
static void start_dynamic_handler PARAMS ((void));
static void expand_rethrow PARAMS ((rtx));
static void output_exception_table_entry PARAMS ((FILE *, int));
static int can_throw PARAMS ((rtx));
static rtx scan_region PARAMS ((rtx, int, int *));
static void eh_regs PARAMS ((rtx *, rtx *, rtx *, int));
static void set_insn_eh_region PARAMS ((rtx *, int));
......@@ -2688,12 +2687,11 @@ free_eh_status (f)
}
/* This section is for the exception handling specific optimization
pass. First are the internal routines, and then the main
optimization pass. */
pass. */
/* Determine if the given INSN can throw an exception. */
static int
int
can_throw (insn)
rtx insn;
{
......
......@@ -439,6 +439,10 @@ extern struct label_node *outer_context_label_stack;
extern rtx exception_handler_labels;
/* Determine if the given INSN can throw an exception. */
extern int can_throw PARAMS ((rtx));
/* Return nonzero if nothing in this function can throw. */
extern int nothrow_function_p PARAMS ((void));
......
......@@ -422,6 +422,14 @@ find_dead_or_set_registers (target, res, jump_target, jump_count, set, needed)
rtx this_jump_insn = insn;
next = NEXT_INSN (insn);
/* If this instruction can throw an exception, then we don't
know where we might end up next. That means that we have to
assume that whatever we have already marked as live really is
live. */
if (can_throw (insn))
break;
switch (GET_CODE (insn))
{
case CODE_LABEL:
......
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