tree-inline.c (remap_gimple_stmt): Cache gimple_block.
authorRichard Biener <rguenther@suse.de>
Tue, 26 Mar 2019 14:56:30 +0000 (14:56 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 26 Mar 2019 14:56:30 +0000 (14:56 +0000)
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

gcc/ChangeLog
gcc/gimple-low.c
gcc/tree-inline.c

index 0efe8e649364f76a9205eb75e6db2fb694a382a3..48e4c86943feaaad6f35349e5cabfd8ea2046a35 100644 (file)
@@ -1,3 +1,12 @@
+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
index 056b0cba6cfc714532692242077eb328d7ea1869..1ae3db0e59687924ec440bc6880cad7f55abe40d 100644 (file)
@@ -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);
     }
 
index 829b984683ba2f16b07aa8c669b2357442270aee..cd5f07869b9113c3eb68395fa31ee14ce7401644 100644 (file)
@@ -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.  */