summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/egcs/gcc/emit-rtl.c8
-rw-r--r--gnu/egcs/gcc/integrate.c27
-rw-r--r--gnu/egcs/gcc/rtl.def2
-rw-r--r--gnu/egcs/gcc/rtl.h5
4 files changed, 6 insertions, 36 deletions
diff --git a/gnu/egcs/gcc/emit-rtl.c b/gnu/egcs/gcc/emit-rtl.c
index ccf077120cc..54cee163738 100644
--- a/gnu/egcs/gcc/emit-rtl.c
+++ b/gnu/egcs/gcc/emit-rtl.c
@@ -1651,8 +1651,7 @@ gen_inline_header_rtx (first_insn, first_parm_insn, first_labelno,
pops_args, stack_slots, forced_labels, function_flags,
outgoing_args_size, original_arg_vector,
original_decl_initial, regno_rtx, regno_flag,
- regno_align, parm_reg_stack_loc,
- nonlocal_goto_handler_labels)
+ regno_align, parm_reg_stack_loc)
rtx first_insn, first_parm_insn;
int first_labelno, last_labelno, max_parm_regnum, max_regnum, args_size;
int pops_args;
@@ -1666,7 +1665,6 @@ gen_inline_header_rtx (first_insn, first_parm_insn, first_labelno,
char *regno_flag;
char *regno_align;
rtvec parm_reg_stack_loc;
- rtx nonlocal_goto_handler_labels;
{
rtx header = gen_rtx_INLINE_HEADER (VOIDmode,
cur_insn_uid++, NULL_RTX,
@@ -1678,9 +1676,7 @@ gen_inline_header_rtx (first_insn, first_parm_insn, first_labelno,
original_arg_vector,
original_decl_initial,
regno_rtx, regno_flag, regno_align,
- parm_reg_stack_loc,
- nonlocal_goto_handler_labels,
- nonlocal_goto_handler_labels);
+ parm_reg_stack_loc);
return header;
}
diff --git a/gnu/egcs/gcc/integrate.c b/gnu/egcs/gcc/integrate.c
index 4165611e480..33a96c40f91 100644
--- a/gnu/egcs/gcc/integrate.c
+++ b/gnu/egcs/gcc/integrate.c
@@ -151,10 +151,6 @@ function_cannot_inline_p (fndecl)
if (current_function_contains_functions)
return N_("function with nested functions cannot be inline");
- if (forced_labels)
- return
- N_("function with label addresses used in initializers cannot inline");
-
if (current_function_cannot_inline)
return current_function_cannot_inline;
@@ -429,8 +425,7 @@ initialize_for_inline (fndecl, min_labelno, max_labelno, max_reg, copy)
arg_vector, (rtx) DECL_INITIAL (fndecl),
(rtvec) regno_reg_rtx, regno_pointer_flag,
regno_pointer_align,
- (rtvec) parm_reg_stack_loc,
- nonlocal_goto_handler_labels);
+ (rtvec) parm_reg_stack_loc);
}
/* Subroutine for `save_for_inline{copying,nocopy}'. Finishes up the
@@ -751,15 +746,6 @@ save_for_inline_copying (fndecl)
REG_NOTES (insn_map[INSN_UID (insn)])
= copy_for_inline (REG_NOTES (insn));
- /* Now adjust nonlocal_goto_handler_labels list */
- copy = NULL_RTX;
- for (insn = nonlocal_goto_handler_labels; insn ; insn = XEXP (insn, 1))
- if (label_map[CODE_LABEL_NUMBER (XEXP (insn,0))] != NULL_RTX)
- copy = gen_rtx_EXPR_LIST (VOIDmode,
- label_map[CODE_LABEL_NUMBER (XEXP (insn,0))],
- copy);
- NONLOCAL_GOTO_LABELS_TRAN(head) = copy;
-
NEXT_INSN (last_insn) = NULL;
finish_inline (fndecl, head);
@@ -2144,14 +2130,6 @@ expand_inline_function (fndecl, parms, target, ignore, type,
REG_NOTES (map->insn_map[INSN_UID (insn)]) = tem;
}
- /* Now copy nonlocal_goto_handler_list from the function being
- inlined into the current list. */
- for (insn = NONLOCAL_GOTO_LABELS_TRAN(header); insn ; insn = XEXP (insn, 1))
- if ( map->label_map[CODE_LABEL_NUMBER (XEXP (insn,0))] != NULL_RTX)
- nonlocal_goto_handler_labels = gen_rtx_EXPR_LIST (VOIDmode,
- map->label_map[CODE_LABEL_NUMBER (XEXP (insn,0))],
- nonlocal_goto_handler_labels);
-
if (local_return_label)
emit_label (local_return_label);
@@ -3424,10 +3402,9 @@ output_inline_function (fndecl)
regno_pointer_align = INLINE_REGNO_POINTER_ALIGN (head);
max_parm_reg = MAX_PARMREG (head);
parm_reg_stack_loc = (rtx *) PARMREG_STACK_LOC (head);
-
+
stack_slot_list = STACK_SLOT_LIST (head);
forced_labels = FORCED_LABELS (head);
- nonlocal_goto_handler_labels = NONLOCAL_GOTO_LABELS (head);
if (FUNCTION_FLAGS (head) & FUNCTION_FLAGS_HAS_COMPUTED_JUMP)
current_function_has_computed_jump = 1;
diff --git a/gnu/egcs/gcc/rtl.def b/gnu/egcs/gcc/rtl.def
index 0d9e08abd8e..7b8c84571f0 100644
--- a/gnu/egcs/gcc/rtl.def
+++ b/gnu/egcs/gcc/rtl.def
@@ -396,7 +396,7 @@ DEF_RTL_EXPR(NOTE, "note", "iuusn", 'x')
it contains helps to build the mapping function between the rtx's of
the function to be inlined and the current function being expanded. */
-DEF_RTL_EXPR(INLINE_HEADER, "inline_header", "iuuuiiiiiieeiiEeEssEee", 'x')
+DEF_RTL_EXPR(INLINE_HEADER, "inline_header", "iuuuiiiiiieeiiEeEssE", 'x')
/* ----------------------------------------------------------------------
Top level constituents of INSN, JUMP_INSN and CALL_INSN.
diff --git a/gnu/egcs/gcc/rtl.h b/gnu/egcs/gcc/rtl.h
index 7f61a54b577..0f43e87dc75 100644
--- a/gnu/egcs/gcc/rtl.h
+++ b/gnu/egcs/gcc/rtl.h
@@ -704,8 +704,6 @@ extern char *note_insn_name[];
#define INLINE_REGNO_POINTER_FLAG(RTX) ((RTX)->fld[17].rtstr)
#define INLINE_REGNO_POINTER_ALIGN(RTX) ((RTX)->fld[18].rtstr)
#define PARMREG_STACK_LOC(RTX) ((RTX)->fld[19].rtvec)
-#define NONLOCAL_GOTO_LABELS(RTX) ((RTX)->fld[20].rtx)
-#define NONLOCAL_GOTO_LABELS_TRAN(RTX) ((RTX)->fld[21].rtx)
/* In FUNCTION_FLAGS we save some variables computed when emitting the code
for the function and which must be `or'ed into the current flag values when
@@ -938,8 +936,7 @@ extern rtx gen_label_rtx PROTO((void));
extern rtx gen_inline_header_rtx PROTO((rtx, rtx, int, int, int, int,
int, int, rtx, rtx, int, int,
rtvec, rtx,
- rtvec, char *, char *, rtvec,
- rtx));
+ rtvec, char *, char *, rtvec));
extern rtx gen_lowpart_common PROTO((enum machine_mode, rtx));
extern rtx gen_lowpart PROTO((enum machine_mode, rtx));
extern rtx gen_lowpart_if_possible PROTO((enum machine_mode, rtx));