calls.c (emit_call_1): Don't use REG_ALWAYS_RETURN.
* calls.c (emit_call_1): Don't use REG_ALWAYS_RETURN. (emit_library_call_value_1): Don't use LCT_ALWAYS_RETURN and REG_ALWAYS_RETURN. * cfgrtl.c (need_fake_edge_p): Likewise. * combine.c (distribute_notes): Likewise. * emit-rtl.c (try_split): Likewise. * recog.c (peephole2_opimize): Likewise. * reg-notes.def (ALWAYS_RETURN): Remove. * rtl.h (LCT_ALWAYS_RETURN): Remove. * tree-cfg.c (need_fake_edge_p): Don't use ECF_ALWAYS_RETURN. * tree.h (ECF_ALWAYS_RETURN): Remove. From-SVN: r95690
This commit is contained in:
parent
ac5205bd7d
commit
321cf1f25e
10 changed files with 18 additions and 20 deletions
|
@ -1,3 +1,17 @@
|
|||
2005-02-28 Kazu Hirata <kazu@cs.umass.edu>
|
||||
|
||||
* calls.c (emit_call_1): Don't use REG_ALWAYS_RETURN.
|
||||
(emit_library_call_value_1): Don't use LCT_ALWAYS_RETURN and
|
||||
REG_ALWAYS_RETURN.
|
||||
* cfgrtl.c (need_fake_edge_p): Likewise.
|
||||
* combine.c (distribute_notes): Likewise.
|
||||
* emit-rtl.c (try_split): Likewise.
|
||||
* recog.c (peephole2_opimize): Likewise.
|
||||
* reg-notes.def (ALWAYS_RETURN): Remove.
|
||||
* rtl.h (LCT_ALWAYS_RETURN): Remove.
|
||||
* tree-cfg.c (need_fake_edge_p): Don't use ECF_ALWAYS_RETURN.
|
||||
* tree.h (ECF_ALWAYS_RETURN): Remove.
|
||||
|
||||
2005-02-28 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR middle-end/19874
|
||||
|
|
|
@ -395,9 +395,6 @@ emit_call_1 (rtx funexp, tree fntree, tree fndecl ATTRIBUTE_UNUSED,
|
|||
if (ecf_flags & ECF_NORETURN)
|
||||
REG_NOTES (call_insn) = gen_rtx_EXPR_LIST (REG_NORETURN, const0_rtx,
|
||||
REG_NOTES (call_insn));
|
||||
if (ecf_flags & ECF_ALWAYS_RETURN)
|
||||
REG_NOTES (call_insn) = gen_rtx_EXPR_LIST (REG_ALWAYS_RETURN, const0_rtx,
|
||||
REG_NOTES (call_insn));
|
||||
|
||||
if (ecf_flags & ECF_RETURNS_TWICE)
|
||||
{
|
||||
|
@ -3234,9 +3231,6 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
|
|||
case LCT_THROW:
|
||||
flags = ECF_NORETURN;
|
||||
break;
|
||||
case LCT_ALWAYS_RETURN:
|
||||
flags = ECF_ALWAYS_RETURN;
|
||||
break;
|
||||
case LCT_RETURNS_TWICE:
|
||||
flags = ECF_RETURNS_TWICE;
|
||||
break;
|
||||
|
|
|
@ -2892,7 +2892,6 @@ need_fake_edge_p (rtx insn)
|
|||
if ((CALL_P (insn)
|
||||
&& !SIBLING_CALL_P (insn)
|
||||
&& !find_reg_note (insn, REG_NORETURN, NULL)
|
||||
&& !find_reg_note (insn, REG_ALWAYS_RETURN, NULL)
|
||||
&& !CONST_OR_PURE_CALL_P (insn)))
|
||||
return true;
|
||||
|
||||
|
|
|
@ -11886,7 +11886,6 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
|
|||
}
|
||||
break;
|
||||
|
||||
case REG_ALWAYS_RETURN:
|
||||
case REG_NORETURN:
|
||||
case REG_SETJMP:
|
||||
/* These notes must remain with the call. It should not be
|
||||
|
|
|
@ -3206,7 +3206,6 @@ try_split (rtx pat, rtx trial, int last)
|
|||
|
||||
case REG_NORETURN:
|
||||
case REG_SETJMP:
|
||||
case REG_ALWAYS_RETURN:
|
||||
insn = insn_last;
|
||||
while (insn != NULL_RTX)
|
||||
{
|
||||
|
|
|
@ -3070,7 +3070,6 @@ peephole2_optimize (FILE *dump_file ATTRIBUTE_UNUSED)
|
|||
{
|
||||
case REG_NORETURN:
|
||||
case REG_SETJMP:
|
||||
case REG_ALWAYS_RETURN:
|
||||
REG_NOTES (new_insn)
|
||||
= gen_rtx_EXPR_LIST (REG_NOTE_KIND (note),
|
||||
XEXP (note, 0),
|
||||
|
|
|
@ -167,6 +167,3 @@ REG_NOTE (CROSSING_JUMP)
|
|||
/* This kind of note is generated at each to `setjmp', and similar
|
||||
functions that can return twice. */
|
||||
REG_NOTE (SETJMP)
|
||||
|
||||
/* Indicate calls that always returns. */
|
||||
REG_NOTE (ALWAYS_RETURN)
|
||||
|
|
|
@ -2099,8 +2099,7 @@ enum libcall_type
|
|||
LCT_PURE_MAKE_BLOCK = 4,
|
||||
LCT_NORETURN = 5,
|
||||
LCT_THROW = 6,
|
||||
LCT_ALWAYS_RETURN = 7,
|
||||
LCT_RETURNS_TWICE = 8
|
||||
LCT_RETURNS_TWICE = 7
|
||||
};
|
||||
|
||||
extern void emit_library_call (rtx, enum libcall_type, enum machine_mode, int,
|
||||
|
|
|
@ -5327,7 +5327,7 @@ need_fake_edge_p (tree t)
|
|||
tree call;
|
||||
|
||||
/* NORETURN and LONGJMP calls already have an edge to exit.
|
||||
CONST, PURE and ALWAYS_RETURN calls do not need one.
|
||||
CONST and PURE calls do not need one.
|
||||
We don't currently check for CONST and PURE here, although
|
||||
it would be a good idea, because those attributes are
|
||||
figured out from the RTL in mark_constant_function, and
|
||||
|
@ -5335,7 +5335,7 @@ need_fake_edge_p (tree t)
|
|||
leads to different results from -fbranch-probabilities. */
|
||||
call = get_call_expr_in (t);
|
||||
if (call
|
||||
&& !(call_expr_flags (call) & (ECF_NORETURN | ECF_ALWAYS_RETURN)))
|
||||
&& !(call_expr_flags (call) & ECF_NORETURN))
|
||||
return true;
|
||||
|
||||
if (TREE_CODE (t) == ASM_EXPR
|
||||
|
|
|
@ -3688,10 +3688,8 @@ extern rtx emit_line_note (location_t);
|
|||
/* Nonzero if this is a call to a function that returns with the stack
|
||||
pointer depressed. */
|
||||
#define ECF_SP_DEPRESSED 256
|
||||
/* Nonzero if this call is known to always return. */
|
||||
#define ECF_ALWAYS_RETURN 512
|
||||
/* Create libcall block around the call. */
|
||||
#define ECF_LIBCALL_BLOCK 1024
|
||||
#define ECF_LIBCALL_BLOCK 512
|
||||
|
||||
extern int flags_from_decl_or_type (tree);
|
||||
extern int call_expr_flags (tree);
|
||||
|
|
Loading…
Add table
Reference in a new issue