re PR rtl-optimization/79780 (ICE in rtl_verify_bb_insns, at cfgrtl.c:2661 (error: flow control insn inside a basic block))
PR rtl-optimization/79780 * cprop.c (one_cprop_pass): When second and further conditional trap in a single basic block is turned into an unconditional trap, turn it into a deleted note to avoid RTL verification failures. * gcc.c-torture/compile/pr79780.c: New test. From-SVN: r245843
This commit is contained in:
parent
35a4e4ed81
commit
fe792dd82f
@ -1,3 +1,10 @@
|
||||
2017-03-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/79780
|
||||
* cprop.c (one_cprop_pass): When second and further conditional trap
|
||||
in a single basic block is turned into an unconditional trap, turn it
|
||||
into a deleted note to avoid RTL verification failures.
|
||||
|
||||
2017-03-02 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* fold-const.c (const_binop): Use ulow () instead of elt (0).
|
||||
|
16
gcc/cprop.c
16
gcc/cprop.c
@ -1852,12 +1852,22 @@ one_cprop_pass (void)
|
||||
if (! NOTE_P (insn) && ! insn->deleted ())
|
||||
mark_oprs_set (insn);
|
||||
|
||||
if (!was_uncond_trap && !seen_uncond_trap
|
||||
if (!was_uncond_trap
|
||||
&& GET_CODE (PATTERN (insn)) == TRAP_IF
|
||||
&& XEXP (PATTERN (insn), 0) == const1_rtx)
|
||||
{
|
||||
seen_uncond_trap = true;
|
||||
uncond_traps.safe_push (insn);
|
||||
/* If we have already seen an unconditional trap
|
||||
earlier, the rest of the bb is going to be removed
|
||||
as unreachable. Just turn it into a note, so that
|
||||
RTL verification doesn't complain about it before
|
||||
it is finally removed. */
|
||||
if (seen_uncond_trap)
|
||||
set_insn_deleted (insn);
|
||||
else
|
||||
{
|
||||
seen_uncond_trap = true;
|
||||
uncond_traps.safe_push (insn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2017-03-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/79780
|
||||
* gcc.c-torture/compile/pr79780.c: New test.
|
||||
|
||||
2017-03-02 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/79345
|
||||
|
48
gcc/testsuite/gcc.c-torture/compile/pr79780.c
Normal file
48
gcc/testsuite/gcc.c-torture/compile/pr79780.c
Normal file
@ -0,0 +1,48 @@
|
||||
/* PR rtl-optimization/79780 */
|
||||
|
||||
int t3, iy, f4, oi, gn;
|
||||
|
||||
void
|
||||
foo (long long int mh)
|
||||
{
|
||||
int pi = 0;
|
||||
|
||||
if (iy != 0)
|
||||
for (;;)
|
||||
f4 = 0;
|
||||
|
||||
if (t3 != 0)
|
||||
{
|
||||
while (mh != 0LL)
|
||||
{
|
||||
while (mh < 1LL)
|
||||
++mh;
|
||||
++mh;
|
||||
}
|
||||
for (;;)
|
||||
;
|
||||
for (oi = 0; oi < 1; ++oi)
|
||||
{
|
||||
n3:;
|
||||
}
|
||||
gn = iy = 1;
|
||||
}
|
||||
|
||||
f4 = 0;
|
||||
|
||||
if (pi - (mh != 0LL) == 0)
|
||||
if (mh != 1LL)
|
||||
{
|
||||
oi = t3 = 0;
|
||||
if (mh == 0LL)
|
||||
++pi;
|
||||
}
|
||||
|
||||
if (iy != 0 && pi != 0)
|
||||
{
|
||||
t3 = 0;
|
||||
goto n3;
|
||||
}
|
||||
|
||||
t3 /= 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user