re PR middle-end/69542 (-fcompare-debug failure in simplify-rtx.c on i?86 since r232905)

PR middle-end/69542
	* lra-remat.c (calculate_local_reg_remat_bb_data): Only consider
	non-debug insns.

	* gcc.dg/torture/pr69542.c: New test.

From-SVN: r232946
This commit is contained in:
Jakub Jelinek 2016-01-28 22:01:51 +01:00 committed by Jakub Jelinek
parent d7e2ecf330
commit eb1b1f0156
4 changed files with 49 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2016-01-28 Jakub Jelinek <jakub@redhat.com>
PR middle-end/69542
* lra-remat.c (calculate_local_reg_remat_bb_data): Only consider
non-debug insns.
2016-01-28 Pat Haugen <pthaugen@us.ibm.com>
* config/rs6000/rs6000.c (output_cbranch): Don't statically predict

View File

@ -694,7 +694,7 @@ calculate_local_reg_remat_bb_data (void)
FOR_EACH_BB_FN (bb, cfun)
FOR_BB_INSNS (bb, insn)
if (INSN_P (insn))
if (NONDEBUG_INSN_P (insn))
set_bb_regs (bb, insn);
}

View File

@ -1,3 +1,8 @@
2016-01-28 Jakub Jelinek <jakub@redhat.com>
PR middle-end/69542
* gcc.dg/torture/pr69542.c: New test.
2016-01-28 Wilco Dijkstra <wdijkstr@arm.com>
* gcc.target/aarch64/ccmp_1.c: Fix test issue.

View File

@ -0,0 +1,37 @@
/* PR middle-end/69542 */
/* { dg-do compile } */
/* { dg-additional-options "-fcompare-debug" } */
typedef struct A *B;
extern int *a[];
struct C { B b; struct D *d; };
struct A { struct { struct C e[1]; long long f[1]; } u; };
struct D { int g; B h[100]; };
int b, c, e, g;
B d, f;
void foo (void) __attribute__ ((__noreturn__));
int bar (void)
{
int i = 0;
do
{
if ('E' && a[e][0] != 'V')
foo ();
struct D *k = d->u.e[0].d;
B x = k->h[i], o = f->u.e[0].b;
if (b)
return 0;
if (a[g][0] != 'E' && a[g][0] != 'V')
foo ();
struct D *n = o->u.e[0].d;
int r = x->u.f[0];
(void) r;
if (c)
foo ();
B y = n->h[x->u.f[0]];
if (i != y->u.f[0])
return 0;
i++;
}
while (1);
}