Commit d9611f55 by Richard Biener Committed by Richard Biener

re PR tree-optimization/88415 (ICE: verify_gimple failed (error: dead STMT in EH table))

2018-12-10  Richard Biener  <rguenther@suse.de>

	PR middle-end/88415
	* gimple.c (gimple_assign_set_rhs_with_ops): Transfer EH
	info to a newly allocated stmt.

	* gcc.dg/gomp/pr88415.c: New testcase.

From-SVN: r266951
parent 48428c18
2018-12-10 Richard Biener <rguenther@suse.de>
PR middle-end/88415
* gimple.c (gimple_assign_set_rhs_with_ops): Transfer EH
info to a newly allocated stmt.
2018-12-10 Jerome Lambourg <lambourg@adacore.com>
* config/vxworksae.h (TARGET_VXWORKS_HAVE_CTORS_DTORS): Define.
......@@ -1729,16 +1729,15 @@ gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
{
unsigned new_rhs_ops = get_gimple_rhs_num_ops (code);
gimple *stmt = gsi_stmt (*gsi);
gimple *old_stmt = stmt;
/* If the new CODE needs more operands, allocate a new statement. */
if (gimple_num_ops (stmt) < new_rhs_ops + 1)
{
tree lhs = gimple_assign_lhs (stmt);
gimple *new_stmt = gimple_alloc (gimple_code (stmt), new_rhs_ops + 1);
memcpy (new_stmt, stmt, gimple_size (gimple_code (stmt)));
gimple_init_singleton (new_stmt);
gsi_replace (gsi, new_stmt, false);
stmt = new_stmt;
tree lhs = gimple_assign_lhs (old_stmt);
stmt = gimple_alloc (gimple_code (old_stmt), new_rhs_ops + 1);
memcpy (stmt, old_stmt, gimple_size (gimple_code (old_stmt)));
gimple_init_singleton (stmt);
/* The LHS needs to be reset as this also changes the SSA name
on the LHS. */
......@@ -1752,6 +1751,8 @@ gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
gimple_assign_set_rhs2 (stmt, op2);
if (new_rhs_ops > 2)
gimple_assign_set_rhs3 (stmt, op3);
if (stmt != old_stmt)
gsi_replace (gsi, stmt, true);
}
......
2018-12-10 Richard Biener <rguenther@suse.de>
PR middle-end/88415
* gcc.dg/gomp/pr88415.c: New testcase.
2018-12-10 Eric Botcazou <ebotcazou@adacore.com>
* c-c++-common/patchable_function_entry-decl.c: Pass -mcpu=gr6 for
......
/* { dg-do compile } */
/* { dg-options "-fexceptions -fnon-call-exceptions -fopenmp -fsignaling-nans -funsafe-math-optimizations -fno-associative-math" } */
void
lx (_Complex int *yn)
{
int mj;
#pragma omp for
for (mj = 0; mj < 1; ++mj)
yn[mj] += 1;
}
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