Commit cf66c831 by Richard Biener Committed by Richard Biener

tree-inline.c (remap_gimple_stmt): Cache gimple_block.

2019-03-26  Richard Biener  <rguenther@suse.de>

	* 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
parent ecbb1530
2019-03-26 Richard Biener <rguenther@suse.de>
* 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 <jakub@redhat.com>
* hash-table.h (hash_table::m_gather_mem_stats): If GATHER_STATISTICS
......
......@@ -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);
}
......
......@@ -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 (&copy_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. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment