re PR rtl-optimization/65693 (ICE in assign_by_spills, at lra-assigns.c:1419)

PR target/65693
	* config/i386/i386.md (*udivmod<mode>4_pow2): Allow
	any pow2 integer in between 2 and 0x80000000U inclusive.

	* gcc.target/i386/pr65693.c: New test.

From-SVN: r221942
This commit is contained in:
Jakub Jelinek 2015-04-09 09:28:54 +02:00 committed by Jakub Jelinek
parent 9a165842d1
commit da0b9df9a8
4 changed files with 25 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-04-09 Jakub Jelinek <jakub@redhat.com>
PR target/65693
* config/i386/i386.md (*udivmod<mode>4_pow2): Allow
any pow2 integer in between 2 and 0x80000000U inclusive.
2015-04-08 Segher Boessenkool <segher@kernel.crashing.org>
PR rtl-optimization/65693

View File

@ -7340,7 +7340,7 @@
(set (match_operand:SWI48 1 "register_operand" "=r")
(umod:SWI48 (match_dup 2) (match_dup 3)))
(clobber (reg:CC FLAGS_REG))]
"UINTVAL (operands[3]) - 2 < <MODE_SIZE> * BITS_PER_UNIT
"IN_RANGE (INTVAL (operands[3]), 2, HOST_WIDE_INT_UC (0x80000000))
&& (UINTVAL (operands[3]) & (UINTVAL (operands[3]) - 1)) == 0"
"#"
"&& 1"

View File

@ -1,3 +1,8 @@
2015-04-09 Jakub Jelinek <jakub@redhat.com>
PR target/65693
* gcc.target/i386/pr65693.c: New test.
2015-04-08 Ilya Enkovich <ilya.enkovich@intel.com>
* gcc.dg/lto/chkp-static-bounds_0.c: New.

View File

@ -0,0 +1,13 @@
/* PR target/65693 */
/* { dg-do compile } */
/* { dg-options "-O2" } */
int a;
void
foo (int (*fn) (int, int, int), unsigned int b)
{
unsigned long *c = (unsigned long *) __builtin_alloca (b);
a = *c;
register int d asm ("edx") = fn (0, 0, d);
}