mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-29 03:44:49 +08:00
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
This commit is contained in:
parent
3ec6bad360
commit
0519ce3019
@ -1,3 +1,9 @@
|
|||||||
|
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>
|
2000-05-25 Richard Henderson <rth@cygnus.com>
|
||||||
|
|
||||||
* flow.c (mark_set_1): Don't record conditionally dead memory.
|
* 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 start_dynamic_handler PARAMS ((void));
|
||||||
static void expand_rethrow PARAMS ((rtx));
|
static void expand_rethrow PARAMS ((rtx));
|
||||||
static void output_exception_table_entry PARAMS ((FILE *, int));
|
static void output_exception_table_entry PARAMS ((FILE *, int));
|
||||||
static int can_throw PARAMS ((rtx));
|
|
||||||
static rtx scan_region PARAMS ((rtx, int, int *));
|
static rtx scan_region PARAMS ((rtx, int, int *));
|
||||||
static void eh_regs PARAMS ((rtx *, rtx *, rtx *, int));
|
static void eh_regs PARAMS ((rtx *, rtx *, rtx *, int));
|
||||||
static void set_insn_eh_region PARAMS ((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
|
/* This section is for the exception handling specific optimization
|
||||||
pass. First are the internal routines, and then the main
|
pass. */
|
||||||
optimization pass. */
|
|
||||||
|
|
||||||
/* Determine if the given INSN can throw an exception. */
|
/* Determine if the given INSN can throw an exception. */
|
||||||
|
|
||||||
static int
|
int
|
||||||
can_throw (insn)
|
can_throw (insn)
|
||||||
rtx insn;
|
rtx insn;
|
||||||
{
|
{
|
||||||
|
@ -439,6 +439,10 @@ extern struct label_node *outer_context_label_stack;
|
|||||||
|
|
||||||
extern rtx exception_handler_labels;
|
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. */
|
/* Return nonzero if nothing in this function can throw. */
|
||||||
|
|
||||||
extern int nothrow_function_p PARAMS ((void));
|
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;
|
rtx this_jump_insn = insn;
|
||||||
|
|
||||||
next = NEXT_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))
|
switch (GET_CODE (insn))
|
||||||
{
|
{
|
||||||
case CODE_LABEL:
|
case CODE_LABEL:
|
||||||
|
Loading…
Reference in New Issue
Block a user