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:
parent
c30b6475f4
commit
21cc5b7750
|
@ -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>
|
2017-09-30 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* config/i386/i386.c (ix86_split_idivmod): Use mode instead of
|
* config/i386/i386.c (ix86_split_idivmod): Use mode instead of
|
||||||
|
|
|
@ -476,7 +476,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;
|
||||||
|
@ -515,6 +516,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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
2017-09-30 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
Backported from mainline
|
Backported from mainline
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
Loading…
Reference in New Issue