]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-inline.c (remap_gimple_stmt): Do not assing a BLOCK to a stmt that didn't have...
authorRichard Biener <rguenther@suse.de>
Mon, 28 Jan 2013 14:50:57 +0000 (14:50 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 28 Jan 2013 14:50:57 +0000 (14:50 +0000)
2013-01-28  Richard Biener  <rguenther@suse.de>

* tree-inline.c (remap_gimple_stmt): Do not assing a BLOCK
to a stmt that didn't have one.
(copy_phis_for_bb): Likewise for PHI arguments.
(copy_debug_stmt): Likewise for debug stmts.

From-SVN: r195509

gcc/ChangeLog
gcc/tree-inline.c

index ec0328ea317168b304abc33700f3d750e7c0d335..3bc0bd16d37f9627035d8a660f214ca77da52e03 100644 (file)
@@ -1,3 +1,10 @@
+2013-01-28  Richard Biener  <rguenther@suse.de>
+
+       * tree-inline.c (remap_gimple_stmt): Do not assing a BLOCK
+       to a stmt that didn't have one.
+       (copy_phis_for_bb): Likewise for PHI arguments.
+       (copy_debug_stmt): Likewise for debug stmts.
+
 2013-01-28  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/56034
index a7eb86a63b3564ef1f3435999e103263c55aa993..2a1b6923996625b1bd157e9e19b9e34bfb1d9dcb 100644 (file)
@@ -1198,7 +1198,6 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id)
 {
   gimple copy = NULL;
   struct walk_stmt_info wi;
-  tree new_block;
   bool skip_first = false;
 
   /* Begin by recognizing trees that we'll completely rewrite for the
@@ -1458,19 +1457,15 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id)
     }
 
   /* If STMT has a block defined, map it to the newly constructed
-     block.  When inlining we want statements without a block to
-     appear in the block of the function call.  */
-  new_block = id->block;
+     block.  */
   if (gimple_block (copy))
     {
       tree *n;
       n = (tree *) pointer_map_contains (id->decl_map, gimple_block (copy));
       gcc_assert (n);
-      new_block = *n;
+      gimple_set_block (copy, *n);
     }
 
-  gimple_set_block (copy, new_block);
-
   if (gimple_debug_bind_p (copy) || gimple_debug_source_bind_p (copy))
     return copy;
 
@@ -1987,7 +1982,6 @@ copy_phis_for_bb (basic_block bb, copy_body_data *id)
              edge old_edge = find_edge ((basic_block) new_edge->src->aux, bb);
              tree arg;
              tree new_arg;
-             tree block = id->block;
              edge_iterator ei2;
              location_t locus;
 
@@ -2015,19 +2009,18 @@ copy_phis_for_bb (basic_block bb, copy_body_data *id)
                  inserted = true;
                }
              locus = gimple_phi_arg_location_from_edge (phi, old_edge);
-             block = id->block;
              if (LOCATION_BLOCK (locus))
                {
                  tree *n;
                  n = (tree *) pointer_map_contains (id->decl_map,
                        LOCATION_BLOCK (locus));
                  gcc_assert (n);
-                 block = *n;
+                 locus = COMBINE_LOCATION_DATA (line_table, locus, *n);
                }
+             else
+               locus = LOCATION_LOCUS (locus);
 
-             add_phi_arg (new_phi, new_arg, new_edge, block ?
-                 COMBINE_LOCATION_DATA (line_table, locus, block) :
-                 LOCATION_LOCUS (locus));
+             add_phi_arg (new_phi, new_arg, new_edge, locus);
            }
        }
     }
@@ -2324,14 +2317,11 @@ copy_debug_stmt (gimple stmt, copy_body_data *id)
   tree t, *n;
   struct walk_stmt_info wi;
 
-  t = id->block;
   if (gimple_block (stmt))
     {
       n = (tree *) pointer_map_contains (id->decl_map, gimple_block (stmt));
-      if (n)
-       t = *n;
+      gimple_set_block (stmt, n ? *n : id->block);
     }
-  gimple_set_block (stmt, t);
 
   /* Remap all the operands in COPY.  */
   memset (&wi, 0, sizeof (wi));