Commit f6b4dc28 by Richard Biener Committed by Richard Biener

re PR middle-end/67563 (verify_flow_info failed)

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.

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

From-SVN: r227788
parent 6ec0e5b9
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> 2015-09-15 Alan Lawrence <alan.lawrence@arm.com>
* config/aarch64/aarch64.c (aarch64_simd_attr_length_rglist): Update * config/aarch64/aarch64.c (aarch64_simd_attr_length_rglist): Update
......
...@@ -548,7 +548,7 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr) ...@@ -548,7 +548,7 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
unlink_stmt_vdef (stmt); unlink_stmt_vdef (stmt);
release_defs (stmt); release_defs (stmt);
} }
gsi_replace (si_p, gimple_build_nop (), true); gsi_replace (si_p, gimple_build_nop (), false);
return; return;
} }
} }
...@@ -589,7 +589,7 @@ replace_call_with_value (gimple_stmt_iterator *gsi, tree val) ...@@ -589,7 +589,7 @@ replace_call_with_value (gimple_stmt_iterator *gsi, tree val)
unlink_stmt_vdef (stmt); unlink_stmt_vdef (stmt);
release_ssa_name (vdef); 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 /* 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) ...@@ -608,7 +608,7 @@ replace_call_with_call_and_fold (gimple_stmt_iterator *gsi, gimple repl)
gimple_set_vuse (repl, gimple_vuse (stmt)); gimple_set_vuse (repl, gimple_vuse (stmt));
SSA_NAME_DEF_STMT (gimple_vdef (repl)) = repl; SSA_NAME_DEF_STMT (gimple_vdef (repl)) = repl;
} }
gsi_replace (gsi, repl, true); gsi_replace (gsi, repl, false);
fold_stmt (gsi); fold_stmt (gsi);
} }
...@@ -655,7 +655,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi, ...@@ -655,7 +655,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
unlink_stmt_vdef (stmt); unlink_stmt_vdef (stmt);
release_ssa_name (vdef); release_ssa_name (vdef);
} }
gsi_replace (gsi, repl, true); gsi_replace (gsi, repl, false);
return true; return true;
} }
...@@ -668,7 +668,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi, ...@@ -668,7 +668,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
release_ssa_name (gimple_vdef (stmt)); release_ssa_name (gimple_vdef (stmt));
if (!lhs) if (!lhs)
{ {
gsi_replace (gsi, gimple_build_nop (), true); gsi_replace (gsi, gimple_build_nop (), false);
return true; return true;
} }
goto done; goto done;
...@@ -750,7 +750,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi, ...@@ -750,7 +750,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt; SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt;
if (!lhs) if (!lhs)
{ {
gsi_replace (gsi, new_stmt, true); gsi_replace (gsi, new_stmt, false);
return true; return true;
} }
gsi_insert_before (gsi, new_stmt, GSI_SAME_STMT); gsi_insert_before (gsi, new_stmt, GSI_SAME_STMT);
...@@ -1030,7 +1030,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi, ...@@ -1030,7 +1030,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt; SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt;
if (!lhs) if (!lhs)
{ {
gsi_replace (gsi, new_stmt, true); gsi_replace (gsi, new_stmt, false);
return true; return true;
} }
gsi_insert_before (gsi, new_stmt, GSI_SAME_STMT); gsi_insert_before (gsi, new_stmt, GSI_SAME_STMT);
...@@ -1048,7 +1048,7 @@ done: ...@@ -1048,7 +1048,7 @@ done:
dest = force_gimple_operand_gsi (gsi, dest, false, NULL_TREE, true, dest = force_gimple_operand_gsi (gsi, dest, false, NULL_TREE, true,
GSI_SAME_STMT); GSI_SAME_STMT);
gimple repl = gimple_build_assign (lhs, dest); gimple repl = gimple_build_assign (lhs, dest);
gsi_replace (gsi, repl, true); gsi_replace (gsi, repl, false);
return true; return true;
} }
...@@ -1130,7 +1130,7 @@ gimple_fold_builtin_memset (gimple_stmt_iterator *gsi, tree c, tree len) ...@@ -1130,7 +1130,7 @@ gimple_fold_builtin_memset (gimple_stmt_iterator *gsi, tree c, tree len)
if (gimple_call_lhs (stmt)) if (gimple_call_lhs (stmt))
{ {
gimple asgn = gimple_build_assign (gimple_call_lhs (stmt), dest); gimple asgn = gimple_build_assign (gimple_call_lhs (stmt), dest);
gsi_replace (gsi, asgn, true); gsi_replace (gsi, asgn, false);
} }
else else
{ {
...@@ -1980,7 +1980,7 @@ gimple_fold_builtin_stpcpy (gimple_stmt_iterator *gsi) ...@@ -1980,7 +1980,7 @@ gimple_fold_builtin_stpcpy (gimple_stmt_iterator *gsi)
gsi_insert_seq_before (gsi, stmts, GSI_SAME_STMT); gsi_insert_seq_before (gsi, stmts, GSI_SAME_STMT);
gassign *ret = gimple_build_assign (gimple_call_lhs (stmt), gassign *ret = gimple_build_assign (gimple_call_lhs (stmt),
POINTER_PLUS_EXPR, dest, tem); POINTER_PLUS_EXPR, dest, tem);
gsi_replace (gsi, ret, true); gsi_replace (gsi, ret, false);
/* Finally fold the memcpy call. */ /* Finally fold the memcpy call. */
gimple_stmt_iterator gsi2 = *gsi; gimple_stmt_iterator gsi2 = *gsi;
gsi_prev (&gsi2); gsi_prev (&gsi2);
...@@ -3062,7 +3062,7 @@ gimple_fold_call (gimple_stmt_iterator *gsi, bool inplace) ...@@ -3062,7 +3062,7 @@ gimple_fold_call (gimple_stmt_iterator *gsi, bool inplace)
&& tree_int_cst_le (gimple_call_arg (stmt, 1), && tree_int_cst_le (gimple_call_arg (stmt, 1),
gimple_call_arg (stmt, 2)))) gimple_call_arg (stmt, 2))))
{ {
gsi_replace (gsi, gimple_build_nop (), true); gsi_replace (gsi, gimple_build_nop (), false);
unlink_stmt_vdef (stmt); unlink_stmt_vdef (stmt);
release_defs (stmt); release_defs (stmt);
return true; return true;
......
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> 2015-09-14 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR fortran/67460 PR fortran/67460
......
/* { 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); }
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