re PR middle-end/85414 (ICE: in ix86_expand_prologue, at config/i386/i386.c:13810 with -Og -fgcse)

PR middle-end/85414
	* rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
	on a SUBREG.

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

From-SVN: r259433
This commit is contained in:
Jakub Jelinek 2018-04-17 11:16:48 +02:00 committed by Jakub Jelinek
parent 5bf31c642e
commit 50ffe7adc0
4 changed files with 23 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2018-04-17 Jakub Jelinek <jakub@redhat.com>
PR middle-end/85414
* rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
on a SUBREG.
2018-04-17 Martin Jambor <mjambor@suse.cz>
PR ipa/85421

View File

@ -123,9 +123,9 @@ gen_lowpart_if_possible (machine_mode mode, rtx x)
return new_rtx;
}
else if (mode != GET_MODE (x) && GET_MODE (x) != VOIDmode
else if (mode != GET_MODE (x) && GET_MODE (x) != VOIDmode && !SUBREG_P (x)
&& validate_subreg (mode, GET_MODE (x), x,
subreg_lowpart_offset (mode, GET_MODE (x))))
subreg_lowpart_offset (mode, GET_MODE (x))))
return gen_lowpart_SUBREG (mode, x);
else
return 0;

View File

@ -1,3 +1,8 @@
2018-04-17 Jakub Jelinek <jakub@redhat.com>
PR middle-end/85414
* gcc.dg/pr85414.c: New test.
2018-04-17 Martin Jambor <mjambor@suse.cz>
PR ipa/85421

View File

@ -0,0 +1,10 @@
/* PR middle-end/85414 */
/* { dg-do compile { target int128 } } */
/* { dg-options "-Og -fgcse -Wno-uninitialized" } */
int
foo (void)
{
unsigned __int128 c;
return __builtin_mul_overflow_p (59, -c, (short) 0);
}