re PR rtl-optimization/80112 (ICE in doloop_condition_get at loop-doloop.c:158)

PR rtl-optimization/80112
	* loop-doloop.c (doloop_condition_get): Don't check condition
	if cmp isn't SET with IF_THEN_ELSE src.

	* gcc.dg/pr80112.c: New test.

From-SVN: r246441
This commit is contained in:
Jakub Jelinek 2017-03-24 14:37:01 +01:00 committed by Jakub Jelinek
parent f0d7b52d4f
commit 5601068416
4 changed files with 39 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2017-03-24 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/80112
* loop-doloop.c (doloop_condition_get): Don't check condition
if cmp isn't SET with IF_THEN_ELSE src.
2017-03-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/80158

View File

@ -153,10 +153,13 @@ doloop_condition_get (rtx_insn *doloop_pat)
}
else
inc = PATTERN (prev_insn);
/* We expect the condition to be of the form (reg != 0) */
cond = XEXP (SET_SRC (cmp), 0);
if (GET_CODE (cond) != NE || XEXP (cond, 1) != const0_rtx)
return 0;
if (GET_CODE (cmp) == SET && GET_CODE (SET_SRC (cmp)) == IF_THEN_ELSE)
{
/* We expect the condition to be of the form (reg != 0) */
cond = XEXP (SET_SRC (cmp), 0);
if (GET_CODE (cond) != NE || XEXP (cond, 1) != const0_rtx)
return 0;
}
}
else
{

View File

@ -1,3 +1,8 @@
2017-03-24 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/80112
* gcc.dg/pr80112.c: New test.
2017-03-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* c-c++-common/Wimplicit-fallthrough-7.c: Adjust dg-warning

View File

@ -0,0 +1,21 @@
/* PR rtl-optimization/80112 */
/* { dg-do compile } */
/* { dg-options "-Os -fmodulo-sched" } */
void **a;
void
foo (int c)
{
void *d[] = {&&e, &&f};
a = d;
switch (c)
{
f:
c = 9;
/* FALLTHRU */
case 9:
goto *a++;
e:;
}
}