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

[gcc]

2017-10-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	Backport from mainline
	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-10-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

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

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

From-SVN: r253359
This commit is contained in:
Bill Schmidt 2017-10-02 18:07:45 +00:00 committed by William Schmidt
parent c30b6475f4
commit 21cc5b7750
4 changed files with 51 additions and 1 deletions

View File

@ -1,3 +1,14 @@
2017-10-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline
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-30 Jakub Jelinek <jakub@redhat.com>
* config/i386/i386.c (ix86_split_idivmod): Use mode instead of

View File

@ -476,7 +476,8 @@ find_phi_def (tree 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 c->cand_num;
@ -515,6 +516,11 @@ find_basis_for_base_expr (slsr_cand_t c, tree base_expr)
gimple_bb (one_basis->cand_stmt)))
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)
basis = one_basis;
}

View File

@ -1,3 +1,11 @@
2017-10-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline
2017-09-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/82337
* gcc.c-torture/compile/pr82337.c: New file.
2017-09-30 Jakub Jelinek <jakub@redhat.com>
Backported from mainline

View File

@ -0,0 +1,25 @@
/* 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);
}