From: Jan Hubicka Date: Mon, 23 Apr 2007 09:53:59 +0000 (+0200) Subject: function.c (init_function_start): Don't init line number info. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c90533c60b73e09d46adbd2b3f14d1697a37eeb3;p=platform%2Fupstream%2Fgcc.git function.c (init_function_start): Don't init line number info. * function.c (init_function_start): Don't init line number info. (expand_function_end): Update. (reset_block_changes, record_block_change, finalize_block_changes, check_block_change, free_block_changes): Kill. * function.h (reset_block_changes, record_block_change, finalize_block_changes, check_block_change, free_block_changes): Remove prototypes. (struct function): Remove ib_boundaries_block. * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw): Use curr_insn_locator to initialize locator. (emit_line_note): Remove. * cfgexpand.c (expand_gimple_cond_expr): Update. (construct_exit_block): Likewise. (tree_expand_cfg): Initialize/finalize locators. * expr.c (expand_expr_real): Update. * cfglayout.c (line_locators_locs, line_locators_lines, file_locators_locs, file_locators_files): Remove. (set_block_levels): Move to cfgexpand.c. (insn_locators_initialize): Remove. (pass_insn_locators_initialize): Remove. (locations_locators_locs, locations_locators_vals): New static vars. (curr_location, last_location, curr_block, last_block, curr_rtl_loc): Likewise. (insn_locators_alloc, insn_locators_finalize, set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator): New functions. (locator_location): New. (locator_line, locator_file): Rewrite. * rtl.h (emit_line_note): Kill. (insn_locators_alloc, insn_locators_finalize, set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator): Declare. * tree-inline.c (initialize_cfun): Do not initialize ib_boundaries_block. * passes.c (pass_insn_locators_initialize): Remove. From-SVN: r124061 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a99d0c8..2aeab937 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,41 @@ +2007-04-23 Jan Hubicka + + * function.c (init_function_start): Don't init line number info. + (expand_function_end): Update. + (reset_block_changes, record_block_change, finalize_block_changes, + check_block_change, free_block_changes): Kill. + * function.h (reset_block_changes, record_block_change, + finalize_block_changes, check_block_change, free_block_changes): Remove + prototypes. + (struct function): Remove ib_boundaries_block. + * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw): + Use curr_insn_locator to initialize locator. + (emit_line_note): Remove. + * cfgexpand.c (expand_gimple_cond_expr): Update. + (construct_exit_block): Likewise. + (tree_expand_cfg): Initialize/finalize locators. + * expr.c (expand_expr_real): Update. + * cfglayout.c (line_locators_locs, line_locators_lines, + file_locators_locs, file_locators_files): Remove. + (set_block_levels): Move to cfgexpand.c. + (insn_locators_initialize): Remove. + (pass_insn_locators_initialize): Remove. + (locations_locators_locs, locations_locators_vals): New static vars. + (curr_location, last_location, curr_block, last_block, curr_rtl_loc): + Likewise. + (insn_locators_alloc, insn_locators_finalize, + set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator): + New functions. + (locator_location): New. + (locator_line, locator_file): Rewrite. + * rtl.h (emit_line_note): Kill. + (insn_locators_alloc, insn_locators_finalize, + set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator): + Declare. + * tree-inline.c (initialize_cfun): Do not initialize + ib_boundaries_block. + * passes.c (pass_insn_locators_initialize): Remove. + 2007-04-22 Andrew Pinski PR middle-end/31448 diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index b0ea1fc..490532a 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -1265,8 +1265,8 @@ expand_gimple_cond_expr (basic_block bb, tree stmt) extract_true_false_edges_from_block (bb, &true_edge, &false_edge); if (EXPR_LOCUS (stmt)) { - emit_line_note (*(EXPR_LOCUS (stmt))); - record_block_change (TREE_BLOCK (stmt)); + set_curr_insn_source_location (*(EXPR_LOCUS (stmt))); + set_curr_insn_block (TREE_BLOCK (stmt)); } /* These flags have no purpose in RTL land. */ @@ -1281,7 +1281,7 @@ expand_gimple_cond_expr (basic_block bb, tree stmt) add_reg_br_prob_note (last, true_edge->probability); maybe_dump_rtl_for_tree_stmt (stmt, last); if (EXPR_LOCUS (then_exp)) - emit_line_note (*(EXPR_LOCUS (then_exp))); + set_curr_insn_source_location (*(EXPR_LOCUS (then_exp))); return NULL; } if (TREE_CODE (else_exp) == GOTO_EXPR && IS_EMPTY_STMT (then_exp)) @@ -1290,7 +1290,7 @@ expand_gimple_cond_expr (basic_block bb, tree stmt) add_reg_br_prob_note (last, false_edge->probability); maybe_dump_rtl_for_tree_stmt (stmt, last); if (EXPR_LOCUS (else_exp)) - emit_line_note (*(EXPR_LOCUS (else_exp))); + set_curr_insn_source_location (*(EXPR_LOCUS (else_exp))); return NULL; } gcc_assert (TREE_CODE (then_exp) == GOTO_EXPR @@ -1322,7 +1322,7 @@ expand_gimple_cond_expr (basic_block bb, tree stmt) maybe_dump_rtl_for_tree_stmt (stmt, last2); if (EXPR_LOCUS (else_exp)) - emit_line_note (*(EXPR_LOCUS (else_exp))); + set_curr_insn_source_location (*(EXPR_LOCUS (else_exp))); return new_bb; } @@ -1610,6 +1610,19 @@ construct_init_block (void) return init_block; } +/* For each lexical block, set BLOCK_NUMBER to the depth at which it is + found in the block tree. */ + +static void +set_block_levels (tree block, int level) +{ + while (block) + { + BLOCK_NUMBER (block) = level; + set_block_levels (BLOCK_SUBBLOCKS (block), level + 1); + block = BLOCK_CHAIN (block); + } +} /* Create a block containing landing pads and similar stuff. */ @@ -1634,7 +1647,7 @@ construct_exit_block (void) input_location = cfun->function_end_locus; /* The following insns belong to the top scope. */ - record_block_change (DECL_INITIAL (current_function_decl)); + set_curr_insn_block (DECL_INITIAL (current_function_decl)); /* Generate rtl for function exit. */ expand_function_end (); @@ -1762,8 +1775,16 @@ tree_expand_cfg (void) /* Some backends want to know that we are expanding to RTL. */ currently_expanding_to_rtl = 1; - /* Prepare the rtl middle end to start recording block changes. */ - reset_block_changes (); + insn_locators_alloc (); + if (!DECL_BUILT_IN (current_function_decl)) + set_curr_insn_source_location (DECL_SOURCE_LOCATION (current_function_decl)); + set_curr_insn_block (DECL_INITIAL (current_function_decl)); + prologue_locator = curr_insn_locator (); + + /* Make sure first insn is a note even if we don't want linenums. + This makes sure the first insn will never be deleted. + Also, final expects a note to appear there. */ + emit_note (NOTE_INSN_DELETED); /* Mark arrays indexed with non-constant indices with TREE_ADDRESSABLE. */ discover_nonconstant_array_refs (); @@ -1810,6 +1831,8 @@ tree_expand_cfg (void) bb = expand_gimple_basic_block (bb); construct_exit_block (); + set_curr_insn_block (DECL_INITIAL (current_function_decl)); + insn_locators_finalize (); /* We're done expanding trees to RTL. */ currently_expanding_to_rtl = 0; @@ -1840,8 +1863,6 @@ tree_expand_cfg (void) more CONCATs anywhere. */ generating_concat_p = 0; - finalize_block_changes (); - if (dump_file) { fprintf (dump_file, @@ -1872,6 +1893,9 @@ tree_expand_cfg (void) return_label = NULL; naked_return_label = NULL; free_histograms (); + /* Tag the blocks with a depth number so that change_scope can find + the common parent easily. */ + set_block_levels (DECL_INITIAL (cfun->decl), 0); return 0; } diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c index 0178431..c4ad2a8 100644 --- a/gcc/cfglayout.c +++ b/gcc/cfglayout.c @@ -48,7 +48,6 @@ static void record_effective_endpoints (void); static rtx label_for_bb (basic_block); static void fixup_reorder_chain (void); -static void set_block_levels (tree, int); static void change_scope (rtx, tree, tree); void verify_insn_chain (void); @@ -232,120 +231,105 @@ record_effective_endpoints (void) than the following one. Similarly for the other properties. */ static VEC(int,heap) *block_locators_locs; static GTY(()) VEC(tree,gc) *block_locators_blocks; -static VEC(int,heap) *line_locators_locs; -static VEC(int,heap) *line_locators_lines; -static VEC(int,heap) *file_locators_locs; -static GTY(()) varray_type file_locators_files; +static VEC(int,heap) *locations_locators_locs; +DEF_VEC_O(location_t); +DEF_VEC_ALLOC_O(location_t,heap); +static VEC(location_t,heap) *locations_locators_vals; int prologue_locator; int epilogue_locator; -/* During the RTL expansion the lexical blocks and line numbers are - represented via INSN_NOTEs. Replace them by representation using - INSN_LOCATORs. */ +/* Hold current location information and last location information, so the + datastructures are built lazilly only when some instructions in given + place are needed. */ +location_t curr_location, last_location; +static tree curr_block, last_block; +static int curr_rtl_loc = -1; -unsigned int -insn_locators_initialize (void) +/* Allocate insn locator datastructure. */ +void +insn_locators_alloc (void) { - tree block = NULL; - tree last_block = NULL; - rtx insn, next; - int loc = 0; - int line_number = 0, last_line_number = 0; - const char *file_name = NULL, *last_file_name = NULL; - prologue_locator = epilogue_locator = 0; block_locators_locs = VEC_alloc (int, heap, 32); block_locators_blocks = VEC_alloc (tree, gc, 32); - line_locators_locs = VEC_alloc (int, heap, 32); - line_locators_lines = VEC_alloc (int, heap, 32); - file_locators_locs = VEC_alloc (int, heap, 32); - VARRAY_CHAR_PTR_INIT (file_locators_files, 32, "file_locators_files"); - - for (insn = get_insns (); insn; insn = next) - { - int active = 0; - - next = NEXT_INSN (insn); - - if (NOTE_P (insn)) - { - gcc_assert (NOTE_LINE_NUMBER (insn) != NOTE_INSN_BLOCK_BEG - && NOTE_LINE_NUMBER (insn) != NOTE_INSN_BLOCK_END); - if (NOTE_LINE_NUMBER (insn) > 0) - { - expanded_location xloc; - NOTE_EXPANDED_LOCATION (xloc, insn); - line_number = xloc.line; - file_name = xloc.file; - delete_insn (insn); - } - } - else - active = (active_insn_p (insn) - && GET_CODE (PATTERN (insn)) != ADDR_VEC - && GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC); - - check_block_change (insn, &block); + locations_locators_locs = VEC_alloc (int, heap, 32); + locations_locators_vals = VEC_alloc (location_t, heap, 32); + +#ifdef USE_MAPPED_LOCATION + last_location = -1; + curr_location = -1; +#else + last_location.line = -1; + curr_location.line = -1; +#endif + curr_block = NULL; + last_block = NULL; + curr_rtl_loc = 0; +} - if (active - || !next - || (!prologue_locator && file_name)) - { - if (last_block != block) - { - loc++; - VEC_safe_push (int, heap, block_locators_locs, loc); - VEC_safe_push (tree, gc, block_locators_blocks, block); - last_block = block; - } - if (last_line_number != line_number) - { - loc++; - VEC_safe_push (int, heap, line_locators_locs, loc); - VEC_safe_push (int, heap, line_locators_lines, line_number); - last_line_number = line_number; - } - if (last_file_name != file_name) - { - loc++; - VEC_safe_push (int, heap, file_locators_locs, loc); - VARRAY_PUSH_CHAR_PTR (file_locators_files, (char *) file_name); - last_file_name = file_name; - } - if (!prologue_locator && file_name) - prologue_locator = loc; - if (!next) - epilogue_locator = loc; - if (active) - INSN_LOCATOR (insn) = loc; - } - } +/* At the end of emit stage, clear current location. */ +void +insn_locators_finalize (void) +{ + if (curr_rtl_loc >= 0) + epilogue_locator = curr_insn_locator (); + curr_rtl_loc = -1; +} - /* Tag the blocks with a depth number so that change_scope can find - the common parent easily. */ - set_block_levels (DECL_INITIAL (cfun->decl), 0); +/* Set current location. */ +void +set_curr_insn_source_location (location_t location) +{ + gcc_assert (curr_rtl_loc >= 0); +#ifdef USE_MAPPED_LOCATION + if (location == last_location) + return; +#else + if (location.file && last_location.file + && !strcmp (location.file, last_location.file) + && location.line == last_location.line) + return; +#endif + curr_location = location; +} - free_block_changes (); - return 0; +/* Set current scope block. */ +void +set_curr_insn_block (tree b) +{ + gcc_assert (curr_rtl_loc >= 0); + if (b) + curr_block = b; } -struct tree_opt_pass pass_insn_locators_initialize = +/* Return current insn locator. */ +int +curr_insn_locator (void) { - "locators", /* name */ - NULL, /* gate */ - insn_locators_initialize, /* execute */ - NULL, /* sub */ - NULL, /* next */ - 0, /* static_pass_number */ - 0, /* tv_id */ - 0, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_dump_func, /* todo_flags_finish */ - 0 /* letter */ -}; + if (curr_rtl_loc == -1) + return 0; + if (last_block != curr_block) + { + curr_rtl_loc++; + VEC_safe_push (int, heap, block_locators_locs, curr_rtl_loc); + VEC_safe_push (tree, gc, block_locators_blocks, curr_block); + last_block = curr_block; + } +#ifdef USE_MAPPED_LOCATION + if (last_location != curr_location) +#else + if (last_location.file != curr_location.file + || last_location.line != curr_location.line) +#endif + { + curr_rtl_loc++; + VEC_safe_push (int, heap, locations_locators_locs, curr_rtl_loc); + VEC_safe_push (location_t, heap, locations_locators_vals, &curr_location); + last_location = curr_location; + } + return curr_rtl_loc; +} static unsigned int into_cfg_layout_mode (void) @@ -401,20 +385,6 @@ struct tree_opt_pass pass_outof_cfg_layout_mode = TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; - -/* For each lexical block, set BLOCK_NUMBER to the depth at which it is - found in the block tree. */ - -static void -set_block_levels (tree block, int level) -{ - while (block) - { - BLOCK_NUMBER (block) = level; - set_block_levels (BLOCK_SUBBLOCKS (block), level + 1); - block = BLOCK_CHAIN (block); - } -} /* Return sope resulting from combination of S1 and S2. */ static tree @@ -514,18 +484,16 @@ insn_scope (rtx insn) } /* Return line number of the statement specified by the locator. */ -int -locator_line (int loc) +static location_t +locator_location (int loc) { - int max = VEC_length (int, line_locators_locs); + int max = VEC_length (int, locations_locators_locs); int min = 0; - if (!max || !loc) - return 0; while (1) { int pos = (min + max) / 2; - int tmp = VEC_index (int, line_locators_locs, pos); + int tmp = VEC_index (int, locations_locators_locs, pos); if (tmp <= loc && min != pos) min = pos; @@ -537,7 +505,19 @@ locator_line (int loc) break; } } - return VEC_index (int, line_locators_lines, min); + return *VEC_index (location_t, locations_locators_vals, min); +} + +/* Return source line of the statement that produced this insn. */ +int +locator_line (int loc) +{ + expanded_location xloc; + if (!loc) + return 0; + else + xloc = expand_location (locator_location (loc)); + return xloc.line; } /* Return line number of the statement that produced this insn. */ @@ -551,27 +531,12 @@ insn_line (rtx insn) const char * locator_file (int loc) { - int max = VEC_length (int, file_locators_locs); - int min = 0; - - if (!max || !loc) - return NULL; - while (1) - { - int pos = (min + max) / 2; - int tmp = VEC_index (int, file_locators_locs, pos); - - if (tmp <= loc && min != pos) - min = pos; - else if (tmp > loc && max != pos) - max = pos; - else - { - min = pos; - break; - } - } - return VARRAY_CHAR_PTR (file_locators_files, min); + expanded_location xloc; + if (!loc) + return 0; + else + xloc = expand_location (locator_location (loc)); + return xloc.file; } /* Return source file of the statement that produced this insn. */ diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 16fa6c5..e816026 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -3336,7 +3336,7 @@ make_insn_raw (rtx pattern) INSN_CODE (insn) = -1; LOG_LINKS (insn) = NULL; REG_NOTES (insn) = NULL; - INSN_LOCATOR (insn) = 0; + INSN_LOCATOR (insn) = curr_insn_locator (); BLOCK_FOR_INSN (insn) = NULL; #ifdef ENABLE_RTL_CHECKING @@ -3369,7 +3369,7 @@ make_jump_insn_raw (rtx pattern) LOG_LINKS (insn) = NULL; REG_NOTES (insn) = NULL; JUMP_LABEL (insn) = NULL; - INSN_LOCATOR (insn) = 0; + INSN_LOCATOR (insn) = curr_insn_locator (); BLOCK_FOR_INSN (insn) = NULL; return insn; @@ -3390,7 +3390,7 @@ make_call_insn_raw (rtx pattern) LOG_LINKS (insn) = NULL; REG_NOTES (insn) = NULL; CALL_INSN_FUNCTION_USAGE (insn) = NULL; - INSN_LOCATOR (insn) = 0; + INSN_LOCATOR (insn) = curr_insn_locator (); BLOCK_FOR_INSN (insn) = NULL; return insn; @@ -4460,42 +4460,6 @@ emit_barrier (void) return barrier; } -/* Make line numbering NOTE insn for LOCATION add it to the end - of the doubly-linked list, but only if line-numbers are desired for - debugging info and it doesn't match the previous one. */ - -rtx -emit_line_note (location_t location) -{ - rtx note; - -#ifdef USE_MAPPED_LOCATION - if (location == last_location) - return NULL_RTX; -#else - if (location.file && last_location.file - && !strcmp (location.file, last_location.file) - && location.line == last_location.line) - return NULL_RTX; -#endif - last_location = location; - - if (no_line_numbers) - { - cur_insn_uid++; - return NULL_RTX; - } - -#ifdef USE_MAPPED_LOCATION - note = emit_note ((int) location); -#else - note = emit_note (location.line); - NOTE_SOURCE_FILE (note) = location.file; -#endif - - return note; -} - /* Emit a copy of note ORIG. */ rtx diff --git a/gcc/expr.c b/gcc/expr.c index e239f4c..c8b211d 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -6777,14 +6777,14 @@ expand_expr_real (tree exp, rtx target, enum machine_mode tmode, information. It would be better of the diagnostic routines used the file/line information embedded in the tree nodes rather than globals. */ - if (cfun && cfun->ib_boundaries_block && EXPR_HAS_LOCATION (exp)) + if (cfun && EXPR_HAS_LOCATION (exp)) { location_t saved_location = input_location; input_location = EXPR_LOCATION (exp); - emit_line_note (input_location); + set_curr_insn_source_location (input_location); /* Record where the insns produced belong. */ - record_block_change (TREE_BLOCK (exp)); + set_curr_insn_block (TREE_BLOCK (exp)); ret = expand_expr_real_1 (exp, target, tmode, modifier, alt_rtl); diff --git a/gcc/function.c b/gcc/function.c index f0a2dd6..7004793 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -3843,18 +3843,6 @@ init_function_start (tree subr) { prepare_function_start (subr); - /* Prevent ever trying to delete the first instruction of a - function. Also tell final how to output a linenum before the - function prologue. Note linenums could be missing, e.g. when - compiling a Java .class file. */ - if (! DECL_IS_BUILTIN (subr)) - emit_line_note (DECL_SOURCE_LOCATION (subr)); - - /* Make sure first insn is a note even if we don't want linenums. - This makes sure the first insn will never be deleted. - Also, final expects a note to appear there. */ - emit_note (NOTE_INSN_DELETED); - /* Warn if this value is an aggregate type, regardless of which calling convention we are using for it. */ if (AGGREGATE_TYPE_P (TREE_TYPE (DECL_RESULT (subr)))) @@ -4305,7 +4293,7 @@ expand_function_end (void) /* Output a linenumber for the end of the function. SDB depends on this. */ force_next_line_note (); - emit_line_note (input_location); + set_curr_insn_source_location (input_location); /* Before the return label (if any), clobber the return registers so that they are not propagated live to the rest of @@ -5348,62 +5336,6 @@ reposition_prologue_and_epilogue_notes (rtx f ATTRIBUTE_UNUSED) #endif /* HAVE_prologue or HAVE_epilogue */ } -/* Resets insn_block_boundaries array. */ - -void -reset_block_changes (void) -{ - cfun->ib_boundaries_block = VEC_alloc (tree, gc, 100); - VEC_quick_push (tree, cfun->ib_boundaries_block, NULL_TREE); -} - -/* Record the boundary for BLOCK. */ -void -record_block_change (tree block) -{ - int i, n; - tree last_block; - - if (!block) - return; - - if(!cfun->ib_boundaries_block) - return; - - last_block = VEC_pop (tree, cfun->ib_boundaries_block); - n = get_max_uid (); - for (i = VEC_length (tree, cfun->ib_boundaries_block); i < n; i++) - VEC_safe_push (tree, gc, cfun->ib_boundaries_block, last_block); - - VEC_safe_push (tree, gc, cfun->ib_boundaries_block, block); -} - -/* Finishes record of boundaries. */ -void -finalize_block_changes (void) -{ - record_block_change (DECL_INITIAL (current_function_decl)); -} - -/* For INSN return the BLOCK it belongs to. */ -void -check_block_change (rtx insn, tree *block) -{ - unsigned uid = INSN_UID (insn); - - if (uid >= VEC_length (tree, cfun->ib_boundaries_block)) - return; - - *block = VEC_index (tree, cfun->ib_boundaries_block, uid); -} - -/* Releases the ib_boundaries_block records. */ -void -free_block_changes (void) -{ - VEC_free (tree, gc, cfun->ib_boundaries_block); -} - /* Returns the name of the current function. */ const char * current_function_name (void) diff --git a/gcc/function.h b/gcc/function.h index f176d85..a5afd1b 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -347,9 +347,6 @@ struct function GTY(()) /* Line number of the end of the function. */ location_t function_end_locus; - /* Array mapping insn uids to blocks. */ - VEC(tree,gc) *ib_boundaries_block; - /* The variables unexpanded so far. */ tree unexpanded_var_list; @@ -552,11 +549,6 @@ extern void number_blocks (tree); extern void clear_block_marks (tree); extern tree blocks_nreverse (tree); -extern void reset_block_changes (void); -extern void record_block_change (tree); -extern void finalize_block_changes (void); -extern void check_block_change (rtx, tree *); -extern void free_block_changes (void); /* Return size needed for stack frame based on slots so far allocated. This size counts from zero. It is not rounded to STACK_BOUNDARY; diff --git a/gcc/passes.c b/gcc/passes.c index 11b1198..9650e89 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -654,7 +654,6 @@ init_optimization_passes (void) struct tree_opt_pass **p = &pass_rest_of_compilation.sub; NEXT_PASS (pass_init_function); NEXT_PASS (pass_jump); - NEXT_PASS (pass_insn_locators_initialize); NEXT_PASS (pass_rtl_eh); NEXT_PASS (pass_initial_value_sets); NEXT_PASS (pass_unshare_all_rtl); diff --git a/gcc/rtl.h b/gcc/rtl.h index 81ed8bc..2ba7c8a 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -1562,7 +1562,6 @@ extern rtx emit_label (rtx); extern rtx emit_barrier (void); extern rtx emit_note (int); extern rtx emit_note_copy (rtx); -extern rtx emit_line_note (location_t); extern rtx make_insn_raw (rtx); extern rtx make_jump_insn_raw (rtx); extern void add_function_usage_to (rtx, rtx); @@ -2298,4 +2297,10 @@ extern const struct rtl_hooks general_rtl_hooks; /* Keep this for the nonce. */ #define gen_lowpart rtl_hooks.gen_lowpart +extern void insn_locators_alloc (void); +extern void insn_locators_finalize (void); +extern void set_curr_insn_source_location (location_t); +extern void set_curr_insn_block (tree); +extern int curr_insn_locator (void); + #endif /* ! GCC_RTL_H */ diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index ff76b75..3b47eff 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -1117,7 +1117,6 @@ initialize_cfun (tree new_fndecl, tree callee_fndecl, gcov_type count, new_cfun->unexpanded_var_list = NULL; new_cfun->cfg = NULL; new_cfun->decl = new_fndecl /*= copy_node (callee_fndecl)*/; - new_cfun->ib_boundaries_block = NULL; DECL_STRUCT_FUNCTION (new_fndecl) = new_cfun; push_cfun (new_cfun); init_empty_tree_cfg (); diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 1b92f8c..cc686bb 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -329,7 +329,6 @@ extern struct tree_opt_pass pass_fixup_cfg; extern struct tree_opt_pass pass_init_function; extern struct tree_opt_pass pass_jump; -extern struct tree_opt_pass pass_insn_locators_initialize; extern struct tree_opt_pass pass_rtl_eh; extern struct tree_opt_pass pass_initial_value_sets; extern struct tree_opt_pass pass_unshare_all_rtl;