diff options
-rw-r--r-- | gnu/egcs/gcc/emit-rtl.c | 8 | ||||
-rw-r--r-- | gnu/egcs/gcc/integrate.c | 27 | ||||
-rw-r--r-- | gnu/egcs/gcc/rtl.def | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/rtl.h | 5 |
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)); |