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>
|
||||
|
||||
* 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);
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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