2015-09-15 Richard Biener <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Sep 2015 12:37:19 +0000 (12:37 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Sep 2015 12:37:19 +0000 (12:37 +0000)
PR middle-end/67563
* gimple-fold.c (gimplify_and_update_call_from_tree): Do not
transfer EH info from old to new stmt.
(replace_call_with_value): Likewise.
(replace_call_with_call_and_fold): Likewise.
(gimple_fold_builtin_memory_op): Likewise.
(gimple_fold_builtin_memset): Likewise.
(gimple_fold_builtin_stpcpy): Likewise.
(gimple_fold_call): Likewise.

* gcc.dg/pr67563.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227788 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gimple-fold.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr67563.c [new file with mode: 0644]

index d4db5af..ea2ebd0 100644 (file)
@@ -1,3 +1,15 @@
+2015-09-15  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/67563
+       * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
+       transfer EH info from old to new stmt.
+       (replace_call_with_value): Likewise.
+       (replace_call_with_call_and_fold): Likewise.
+       (gimple_fold_builtin_memory_op): Likewise.
+       (gimple_fold_builtin_memset): Likewise.
+       (gimple_fold_builtin_stpcpy): Likewise.
+       (gimple_fold_call): Likewise.
+
 2015-09-15  Alan Lawrence  <alan.lawrence@arm.com>
 
        * config/aarch64/aarch64.c (aarch64_simd_attr_length_rglist): Update
index c79f9b3..ac9f46c 100644 (file)
@@ -548,7 +548,7 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
              unlink_stmt_vdef (stmt);
              release_defs (stmt);
            }
-         gsi_replace (si_p, gimple_build_nop (), true);
+         gsi_replace (si_p, gimple_build_nop (), false);
          return;
        }
     }
@@ -589,7 +589,7 @@ replace_call_with_value (gimple_stmt_iterator *gsi, tree val)
       unlink_stmt_vdef (stmt);
       release_ssa_name (vdef);
     }
-  gsi_replace (gsi, repl, true);
+  gsi_replace (gsi, repl, false);
 }
 
 /* Replace the call at *GSI with the new call REPL and fold that
@@ -608,7 +608,7 @@ replace_call_with_call_and_fold (gimple_stmt_iterator *gsi, gimple repl)
       gimple_set_vuse (repl, gimple_vuse (stmt));
       SSA_NAME_DEF_STMT (gimple_vdef (repl)) = repl;
     }
-  gsi_replace (gsi, repl, true);
+  gsi_replace (gsi, repl, false);
   fold_stmt (gsi);
 }
 
@@ -655,7 +655,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
          unlink_stmt_vdef (stmt);
          release_ssa_name (vdef);
        }
-      gsi_replace (gsi, repl, true);
+      gsi_replace (gsi, repl, false);
       return true;
     }
 
@@ -668,7 +668,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
        release_ssa_name (gimple_vdef (stmt));
       if (!lhs)
        {
-         gsi_replace (gsi, gimple_build_nop (), true);
+         gsi_replace (gsi, gimple_build_nop (), false);
          return true;
        }
       goto done;
@@ -750,7 +750,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
                        SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt;
                      if (!lhs)
                        {
-                         gsi_replace (gsi, new_stmt, true);
+                         gsi_replace (gsi, new_stmt, false);
                          return true;
                        }
                      gsi_insert_before (gsi, new_stmt, GSI_SAME_STMT);
@@ -1030,7 +1030,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
        SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt;
       if (!lhs)
        {
-         gsi_replace (gsi, new_stmt, true);
+         gsi_replace (gsi, new_stmt, false);
          return true;
        }
       gsi_insert_before (gsi, new_stmt, GSI_SAME_STMT);
@@ -1048,7 +1048,7 @@ done:
   dest = force_gimple_operand_gsi (gsi, dest, false, NULL_TREE, true,
                                   GSI_SAME_STMT);
   gimple repl = gimple_build_assign (lhs, dest);
-  gsi_replace (gsi, repl, true);
+  gsi_replace (gsi, repl, false);
   return true;
 }
 
@@ -1130,7 +1130,7 @@ gimple_fold_builtin_memset (gimple_stmt_iterator *gsi, tree c, tree len)
   if (gimple_call_lhs (stmt))
     {
       gimple asgn = gimple_build_assign (gimple_call_lhs (stmt), dest);
-      gsi_replace (gsi, asgn, true);
+      gsi_replace (gsi, asgn, false);
     }
   else
     {
@@ -1980,7 +1980,7 @@ gimple_fold_builtin_stpcpy (gimple_stmt_iterator *gsi)
   gsi_insert_seq_before (gsi, stmts, GSI_SAME_STMT);
   gassign *ret = gimple_build_assign (gimple_call_lhs (stmt),
                                      POINTER_PLUS_EXPR, dest, tem);
-  gsi_replace (gsi, ret, true);
+  gsi_replace (gsi, ret, false);
   /* Finally fold the memcpy call.  */
   gimple_stmt_iterator gsi2 = *gsi;
   gsi_prev (&gsi2);
@@ -3062,7 +3062,7 @@ gimple_fold_call (gimple_stmt_iterator *gsi, bool inplace)
                  && tree_int_cst_le (gimple_call_arg (stmt, 1),
                                      gimple_call_arg (stmt, 2))))
            {
-             gsi_replace (gsi, gimple_build_nop (), true);
+             gsi_replace (gsi, gimple_build_nop (), false);
              unlink_stmt_vdef (stmt);
              release_defs (stmt);
              return true;
index 69722d0..2355856 100644 (file)
@@ -1,3 +1,8 @@
+2015-09-15  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/67563
+       * gcc.dg/pr67563.c: New testcase.
+
 2015-09-14  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
        PR fortran/67460
diff --git a/gcc/testsuite/gcc.dg/pr67563.c b/gcc/testsuite/gcc.dg/pr67563.c
new file mode 100644 (file)
index 0000000..34a78a2
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fexceptions" } */
+
+static void
+emit_package (int p1)
+{
+  int a;
+  int b[0];
+  a = __fprintf_chk (0, 0, "");
+}
+void emit_lua () { emit_package (0); }