re PR rtl-optimization/52170 (ICE in trunc_int_for_mode, at explow.c:57 during simplify_plus_minus)

2012-02-08  Richard Guenther  <rguenther@suse.de>

	PR rtl-optimization/52170
	* simplify-rtx.c (simplify_plus_minus): Use CONSTM1_RTX to
	properly handle integer vector modes.

	* gcc.dg/torture/pr52170.c: New testcase.

From-SVN: r184007
This commit is contained in:
Richard Guenther 2012-02-08 13:29:22 +00:00 committed by Richard Biener
parent 9e66e106ab
commit ea72cc1dca
4 changed files with 29 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2012-02-08 Richard Guenther <rguenther@suse.de>
PR rtl-optimization/52170
* simplify-rtx.c (simplify_plus_minus): Use CONSTM1_RTX to
properly handle integer vector modes.
2012-02-08 Jakub Jelinek <jakub@redhat.com>
PR gcov-profile/52150

View File

@ -3947,7 +3947,7 @@ simplify_plus_minus (enum rtx_code code, enum machine_mode mode, rtx op0,
/* ~a -> (-a - 1) */
if (n_ops != 7)
{
ops[n_ops].op = constm1_rtx;
ops[n_ops].op = CONSTM1_RTX (mode);
ops[n_ops++].neg = this_neg;
ops[i].op = XEXP (this_op, 0);
ops[i].neg = !this_neg;

View File

@ -1,3 +1,8 @@
2012-02-08 Richard Guenther <rguenther@suse.de>
PR rtl-optimization/52170
* gcc.dg/torture/pr52170.c: New testcase.
2012-02-08 Jakub Jelinek <jakub@redhat.com>
PR gcov-profile/52150

View File

@ -0,0 +1,17 @@
/* { dg-do compile } */
typedef unsigned char uint8_t ;
typedef unsigned long uint32_t;
void f0a(uint32_t * result, uint32_t * arg1)
{
int idx;
for (idx=0;idx<96;idx += 1)
{
uint8_t temp_5;
uint8_t temp_6;
temp_5 = ~(*arg1);
temp_6 = (*arg1) + 1 - temp_5;
result[idx] = temp_6;
}
}