Commit e75210d6 by Bill Schmidt Committed by William Schmidt

re PR tree-optimization/82337 (ICE: SSA corruption at tree-ssa-coalesce.c:1010)

[gcc]

2017-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR tree-optimization/82337
	* gimple-ssa-strength-reduction.c (find_phi_def): Don't record a
	phi definition if the PHI result appears in an abnormal PHI.
	(find_basis_for_base_expr): Don't record a basis if the LHS of the
	basis appears in an abnormal PHI.

[gcc]

2017-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR tree-optimization/82337
	* gcc.c-torture/compile/pr82337.c: New file.

From-SVN: r253293
parent eafa7a90
2017-09-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/82337
* gimple-ssa-strength-reduction.c (find_phi_def): Don't record a
phi definition if the PHI result appears in an abnormal PHI.
(find_basis_for_base_expr): Don't record a basis if the LHS of the
basis appears in an abnormal PHI.
2017-09-29 Richard Biener <rguenther@suse.de> 2017-09-29 Richard Biener <rguenther@suse.de>
* graphite-isl-ast-to-gimple.c * graphite-isl-ast-to-gimple.c
...@@ -488,7 +488,8 @@ find_phi_def (tree base) ...@@ -488,7 +488,8 @@ find_phi_def (tree base)
c = base_cand_from_table (base); c = base_cand_from_table (base);
if (!c || c->kind != CAND_PHI) if (!c || c->kind != CAND_PHI
|| SSA_NAME_OCCURS_IN_ABNORMAL_PHI (gimple_phi_result (c->cand_stmt)))
return 0; return 0;
return c->cand_num; return c->cand_num;
...@@ -557,6 +558,11 @@ find_basis_for_base_expr (slsr_cand_t c, tree base_expr) ...@@ -557,6 +558,11 @@ find_basis_for_base_expr (slsr_cand_t c, tree base_expr)
gimple_bb (one_basis->cand_stmt))) gimple_bb (one_basis->cand_stmt)))
continue; continue;
tree lhs = gimple_assign_lhs (one_basis->cand_stmt);
if (lhs && TREE_CODE (lhs) == SSA_NAME
&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs))
continue;
if (!basis || basis->cand_num < one_basis->cand_num) if (!basis || basis->cand_num < one_basis->cand_num)
basis = one_basis; basis = one_basis;
} }
......
2017-09-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/82337
* gcc.c-torture/compile/pr82337.c: New file.
2017-09-29 Javier Miranda <miranda@adacore.com> 2017-09-29 Javier Miranda <miranda@adacore.com>
* gnat.dg/unchecked_union3.adb: New testcase. * gnat.dg/unchecked_union3.adb: New testcase.
......
/* PR82337: SLSR needs to prevent abnormal SSA names from
serving as a basis. */
char *a, *b, *c;
struct d {
short e;
char f[];
};
extern void j (void);
void
g() {
struct d *h;
char *i;
int d;
do {
i = h->f + d;
20 ? j() : 0;
i = c;
if (__builtin_setjmp (h))
b = h->f + d;
d = (int)(*i);
} while (a);
}
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