From cf66c831c1e05bbea0ef859ed3ae0027c476c618 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 26 Mar 2019 14:56:30 +0000 Subject: [PATCH] tree-inline.c (remap_gimple_stmt): Cache gimple_block. 2019-03-26 Richard Biener * tree-inline.c (remap_gimple_stmt): Cache gimple_block. (copy_debug_stmt): Likewise. (expand_call_inline): Likewise. (copy_bb): Avoid redundant lookup & set of gimple_block. * gimple-low.c (lower_gimple_return): Likewise. (lower_builtin_setjmp): Likewise. From-SVN: r269946 --- gcc/ChangeLog | 9 +++++++++ gcc/gimple-low.c | 7 ++----- gcc/tree-inline.c | 14 +++++++------- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0efe8e64936..48e4c86943f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2019-03-26 Richard Biener + + * tree-inline.c (remap_gimple_stmt): Cache gimple_block. + (copy_debug_stmt): Likewise. + (expand_call_inline): Likewise. + (copy_bb): Avoid redundant lookup & set of gimple_block. + * gimple-low.c (lower_gimple_return): Likewise. + (lower_builtin_setjmp): Likewise. + 2019-03-26 Jakub Jelinek * hash-table.h (hash_table::m_gather_mem_stats): If GATHER_STATISTICS diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c index 056b0cba6cf..1ae3db0e596 100644 --- a/gcc/gimple-low.c +++ b/gcc/gimple-low.c @@ -723,8 +723,8 @@ lower_gimple_return (gimple_stmt_iterator *gsi, struct lower_data *data) if (!optimize && gimple_has_location (stmt)) DECL_ARTIFICIAL (tmp_rs.label) = 0; t = gimple_build_goto (tmp_rs.label); + /* location includes block. */ gimple_set_location (t, gimple_location (stmt)); - gimple_set_block (t, gimple_block (stmt)); gsi_insert_before (gsi, t, GSI_SAME_STMT); gsi_remove (gsi, false); } @@ -806,8 +806,8 @@ lower_builtin_setjmp (gimple_stmt_iterator *gsi) arg = build_addr (next_label); t = builtin_decl_implicit (BUILT_IN_SETJMP_SETUP); g = gimple_build_call (t, 2, gimple_call_arg (stmt, 0), arg); + /* location includes block. */ gimple_set_location (g, loc); - gimple_set_block (g, gimple_block (stmt)); gsi_insert_before (gsi, g, GSI_SAME_STMT); /* Build 'DEST = 0' and insert. */ @@ -815,7 +815,6 @@ lower_builtin_setjmp (gimple_stmt_iterator *gsi) { g = gimple_build_assign (dest, build_zero_cst (TREE_TYPE (dest))); gimple_set_location (g, loc); - gimple_set_block (g, gimple_block (stmt)); gsi_insert_before (gsi, g, GSI_SAME_STMT); } @@ -832,7 +831,6 @@ lower_builtin_setjmp (gimple_stmt_iterator *gsi) t = builtin_decl_implicit (BUILT_IN_SETJMP_RECEIVER); g = gimple_build_call (t, 1, arg); gimple_set_location (g, loc); - gimple_set_block (g, gimple_block (stmt)); gsi_insert_before (gsi, g, GSI_SAME_STMT); /* Build 'DEST = 1' and insert. */ @@ -841,7 +839,6 @@ lower_builtin_setjmp (gimple_stmt_iterator *gsi) g = gimple_build_assign (dest, fold_convert_loc (loc, TREE_TYPE (dest), integer_one_node)); gimple_set_location (g, loc); - gimple_set_block (g, gimple_block (stmt)); gsi_insert_before (gsi, g, GSI_SAME_STMT); } diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 829b984683b..cd5f07869b9 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -1776,10 +1776,10 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id) } /* If STMT has a block defined, map it to the newly constructed block. */ - if (gimple_block (copy)) + if (tree block = gimple_block (copy)) { tree *n; - n = id->decl_map->get (gimple_block (copy)); + n = id->decl_map->get (block); gcc_assert (n); gimple_set_block (copy, *n); } @@ -1951,8 +1951,8 @@ copy_bb (copy_body_data *id, basic_block bb, GF_CALL_VA_ARG_PACK. */ gimple_call_copy_flags (new_call, call_stmt); gimple_call_set_va_arg_pack (new_call, false); + /* location includes block. */ gimple_set_location (new_call, gimple_location (stmt)); - gimple_set_block (new_call, gimple_block (stmt)); gimple_call_set_lhs (new_call, gimple_call_lhs (call_stmt)); gsi_replace (©_gsi, new_call, false); @@ -2891,9 +2891,9 @@ copy_debug_stmt (gdebug *stmt, copy_body_data *id) tree t, *n; struct walk_stmt_info wi; - if (gimple_block (stmt)) + if (tree block = gimple_block (stmt)) { - n = id->decl_map->get (gimple_block (stmt)); + n = id->decl_map->get (block); gimple_set_block (stmt, n ? *n : id->block); } @@ -4589,7 +4589,7 @@ expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id) artificial decls inserted by the compiler itself. We need to either link the inlined blocks into the caller block tree or not refer to them in any way to not break GC for locations. */ - if (gimple_block (stmt)) + if (tree block = gimple_block (stmt)) { /* We do want to assign a not UNKNOWN_LOCATION BLOCK_SOURCE_LOCATION to make inlined_function_outer_scope_p return true on this BLOCK. */ @@ -4601,7 +4601,7 @@ expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id) id->block = make_node (BLOCK); BLOCK_ABSTRACT_ORIGIN (id->block) = DECL_ORIGIN (fn); BLOCK_SOURCE_LOCATION (id->block) = loc; - prepend_lexical_block (gimple_block (stmt), id->block); + prepend_lexical_block (block, id->block); } /* Local declarations will be replaced by their equivalents in this map. */ -- 2.30.2