backport: re PR rtl-optimization/49619 (ICE in simplify_subreg, at simplify-rtx.c:5362)

Backport from mainline
	2011-07-04  Jakub Jelinek  <jakub@redhat.com>

	PR rtl-optimization/49619
	* combine.c (combine_simplify_rtx): In PLUS -> IOR simplification
	pass VOIDmode as op0_mode to recursive call.

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

From-SVN: r176485
This commit is contained in:
Jakub Jelinek 2011-07-19 21:32:12 +02:00 committed by Jakub Jelinek
parent 26d5e2ee02
commit 1ae304212d
4 changed files with 25 additions and 1 deletions

View File

@ -1,6 +1,12 @@
2011-07-19 Jakub Jelinek <jakub@redhat.com>
Backport from mainline
2011-07-04 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/49619
* combine.c (combine_simplify_rtx): In PLUS -> IOR simplification
pass VOIDmode as op0_mode to recursive call.
2011-05-27 Jakub Jelinek <jakub@redhat.com>
PR c++/49165

View File

@ -4983,7 +4983,7 @@ combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int in_dest)
{
/* Try to simplify the expression further. */
rtx tor = simplify_gen_binary (IOR, mode, XEXP (x, 0), XEXP (x, 1));
temp = combine_simplify_rtx (tor, mode, in_dest);
temp = combine_simplify_rtx (tor, VOIDmode, in_dest);
/* If we could, great. If not, do not go ahead with the IOR
replacement, since PLUS appears in many special purpose

View File

@ -1,6 +1,11 @@
2011-07-19 Jakub Jelinek <jakub@redhat.com>
Backport from mainline
2011-07-04 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/49619
* gcc.dg/pr49619.c: New test.
2011-05-27 Jakub Jelinek <jakub@redhat.com>
PR c++/49165

View File

@ -0,0 +1,13 @@
/* PR rtl-optimization/49619 */
/* { dg-do compile } */
/* { dg-options "-O -fno-tree-fre" } */
extern int a, b;
void
foo (int x)
{
a = 2;
b = 0;
b = (a && ((a = 1, 0 >= b) || (short) (x + (b & x))));
}