Commit 8ebcad86 by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/68157 (internal compiler error: in…

re PR tree-optimization/68157 (internal compiler error: in reassoc_stmt_dominates_stmt_p, at tree-ssa-reassoc.c:1287)

	PR tree-optimization/68157
	* tree-ssa-reassoc.c (attempt_builtin_powi): Set uid of
	pow_stmt or mul_stmt from stmt's uid.
	(reassociate_bb): Set uid of mul_stmt from stmt's uid.

	* g++.dg/opt/pr68157.C: New test.

From-SVN: r230530
parent 7d4c4fde
2015-11-18 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/68157
* tree-ssa-reassoc.c (attempt_builtin_powi): Set uid of
pow_stmt or mul_stmt from stmt's uid.
(reassociate_bb): Set uid of mul_stmt from stmt's uid.
2015-11-18 Martin Liska <mliska@suse.cz> 2015-11-18 Martin Liska <mliska@suse.cz>
* haifa-sched.c (haifa_finish_h_i_d): Release reg_set_list. * haifa-sched.c (haifa_finish_h_i_d): Release reg_set_list.
2015-11-18 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/68157
* g++.dg/opt/pr68157.C: New test.
2015-11-18 Richard Biener <rguenther@suse.de> 2015-11-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/67790 PR tree-optimization/67790
......
// PR tree-optimization/68157
// { dg-do compile }
// { dg-options "-Ofast" }
double a, b, c, d;
int h, foo ();
void
bar ()
{
while (foo ())
{
double e = b * a * a;
double f = b * d;
if (h)
c = e + f;
}
}
...@@ -4441,6 +4441,7 @@ attempt_builtin_powi (gimple *stmt, vec<operand_entry *> *ops) ...@@ -4441,6 +4441,7 @@ attempt_builtin_powi (gimple *stmt, vec<operand_entry *> *ops)
power)); power));
gimple_call_set_lhs (pow_stmt, iter_result); gimple_call_set_lhs (pow_stmt, iter_result);
gimple_set_location (pow_stmt, gimple_location (stmt)); gimple_set_location (pow_stmt, gimple_location (stmt));
gimple_set_uid (pow_stmt, gimple_uid (stmt));
gsi_insert_before (&gsi, pow_stmt, GSI_SAME_STMT); gsi_insert_before (&gsi, pow_stmt, GSI_SAME_STMT);
if (dump_file && (dump_flags & TDF_DETAILS)) if (dump_file && (dump_flags & TDF_DETAILS))
...@@ -4524,6 +4525,7 @@ attempt_builtin_powi (gimple *stmt, vec<operand_entry *> *ops) ...@@ -4524,6 +4525,7 @@ attempt_builtin_powi (gimple *stmt, vec<operand_entry *> *ops)
mul_stmt = gimple_build_assign (target_ssa, MULT_EXPR, mul_stmt = gimple_build_assign (target_ssa, MULT_EXPR,
op1, op2); op1, op2);
gimple_set_location (mul_stmt, gimple_location (stmt)); gimple_set_location (mul_stmt, gimple_location (stmt));
gimple_set_uid (mul_stmt, gimple_uid (stmt));
gsi_insert_before (&gsi, mul_stmt, GSI_SAME_STMT); gsi_insert_before (&gsi, mul_stmt, GSI_SAME_STMT);
rf1->repr = target_ssa; rf1->repr = target_ssa;
...@@ -4541,6 +4543,7 @@ attempt_builtin_powi (gimple *stmt, vec<operand_entry *> *ops) ...@@ -4541,6 +4543,7 @@ attempt_builtin_powi (gimple *stmt, vec<operand_entry *> *ops)
power)); power));
gimple_call_set_lhs (pow_stmt, iter_result); gimple_call_set_lhs (pow_stmt, iter_result);
gimple_set_location (pow_stmt, gimple_location (stmt)); gimple_set_location (pow_stmt, gimple_location (stmt));
gimple_set_uid (pow_stmt, gimple_uid (stmt));
gsi_insert_before (&gsi, pow_stmt, GSI_SAME_STMT); gsi_insert_before (&gsi, pow_stmt, GSI_SAME_STMT);
} }
...@@ -4552,6 +4555,7 @@ attempt_builtin_powi (gimple *stmt, vec<operand_entry *> *ops) ...@@ -4552,6 +4555,7 @@ attempt_builtin_powi (gimple *stmt, vec<operand_entry *> *ops)
mul_stmt = gimple_build_assign (new_result, MULT_EXPR, mul_stmt = gimple_build_assign (new_result, MULT_EXPR,
result, iter_result); result, iter_result);
gimple_set_location (mul_stmt, gimple_location (stmt)); gimple_set_location (mul_stmt, gimple_location (stmt));
gimple_set_uid (mul_stmt, gimple_uid (stmt));
gsi_insert_before (&gsi, mul_stmt, GSI_SAME_STMT); gsi_insert_before (&gsi, mul_stmt, GSI_SAME_STMT);
gimple_set_visited (mul_stmt, true); gimple_set_visited (mul_stmt, true);
result = new_result; result = new_result;
...@@ -4908,6 +4912,7 @@ reassociate_bb (basic_block bb) ...@@ -4908,6 +4912,7 @@ reassociate_bb (basic_block bb)
mul_stmt = gimple_build_assign (lhs, MULT_EXPR, mul_stmt = gimple_build_assign (lhs, MULT_EXPR,
powi_result, target_ssa); powi_result, target_ssa);
gimple_set_location (mul_stmt, gimple_location (stmt)); gimple_set_location (mul_stmt, gimple_location (stmt));
gimple_set_uid (mul_stmt, gimple_uid (stmt));
gsi_insert_after (&gsi, mul_stmt, GSI_NEW_STMT); gsi_insert_after (&gsi, mul_stmt, GSI_NEW_STMT);
} }
} }
......
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