re PR rtl-optimization/79194 (ICE in rtl_verify_bb_insns, at cfgrtl.c:2661 (error: flow control insn inside a basic block))

2017-01-27  Bernd Schmidt  <bschmidt@redhat.com>

	PR rtl-optimization/79194
	* cprop.c (one_cprop_pass): Move deletion of code after unconditional
	traps before call to bypass_conditional_jumps.

	PR rtl-optimization/79194
	* gcc.dg/torture/pr79194.c: New test.

From-SVN: r244993
This commit is contained in:
Bernd Schmidt 2017-01-27 12:40:44 -07:00 committed by Jeff Law
parent d8321b33d3
commit 711ce02129
4 changed files with 55 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2017-01-27 Bernd Schmidt <bschmidt@redhat.com>
PR rtl-optimization/79194
* cprop.c (one_cprop_pass): Move deletion of code after unconditional
traps before call to bypass_conditional_jumps.
2017-01-27 Vladimir Makarov <vmakarov@redhat.com>
PR tree-optimization/71374

View File

@ -1863,8 +1863,6 @@ one_cprop_pass (void)
}
}
changed |= bypass_conditional_jumps ();
while (!uncond_traps.is_empty ())
{
rtx_insn *insn = uncond_traps.pop ();
@ -1873,6 +1871,8 @@ one_cprop_pass (void)
emit_barrier_after_bb (to_split);
}
changed |= bypass_conditional_jumps ();
FREE_REG_SET (reg_set_bitmap);
free_cprop_mem ();
}

View File

@ -1,3 +1,8 @@
2017-01-27 Bernd Schmidt <bschmidt@redhat.com>
PR rtl-optimization/79194
* gcc.dg/torture/pr79194.c: New test.
2017-01-27 Vladimir Makarov <vmakarov@redhat.com>
PR tree-optimization/71374

View File

@ -0,0 +1,42 @@
/* { dg-do compile } */
int iw, vr;
void
d9 (unsigned int j3, long long int f5, int kp)
{
int *qb = &kp;
if (kp != 0)
{
long long int oq;
unsigned int tl = 0;
for (j3 = 0; j3 < 1; ++j3)
qb = &tl;
goto ed;
l7:
oq = 1;
while (oq < 2)
oq *= j3;
ed:
do
{
oq -= *qb;
if (oq != 0)
{
long long int ie = j3 & f5;
int ws = (j3 != 0 && kp != 0);
tl = ie > ws;
iw = vr = tl;
}
else
tl = (kp != 0 && (0 % 0) != 0); /* { dg-warning "division by zero" } */
}
while (tl != 0);
}
goto l7;
}