re PR target/49186 (optimize problem with unsigned long long value.)

PR target/49186
	* config/sh/sh.c (expand_cbranchdi4): Set msw_skip when the high
	part of the second operand is 0.
	* gcc.c-torture/execute/pr49186.c: New.

From-SVN: r174667
This commit is contained in:
Kaz Kojima 2011-06-05 21:53:25 +00:00
parent 6e98bff4dc
commit a13dc62afe
4 changed files with 36 additions and 1 deletions

View File

@ -1,3 +1,12 @@
2011-06-05 Kaz Kojima <kkojima@gcc.gnu.org>
Backport from mainline
2011-05-30 Kaz Kojima <kkojima@gcc.gnu.org>
PR target/49186
* config/sh/sh.c (expand_cbranchdi4): Set msw_skip when the high
part of the second operand is 0.
2011-05-29 Richard Sandiford <rdsandiford@googlemail.com>
PR target/43700

View File

@ -1600,7 +1600,10 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code comparison)
else if (op2h != CONST0_RTX (SImode))
msw_taken = LTU;
else
break;
{
msw_skip = swap_condition (LTU);
break;
}
msw_skip = swap_condition (msw_taken);
}
break;

View File

@ -1,3 +1,11 @@
2011-06-05 Kaz Kojima <kkojima@gcc.gnu.org>
Backport from mainline
2011-05-30 Kaz Kojima <kkojima@gcc.gnu.org>
PR target/49186
* gcc.c-torture/execute/pr49186.c: New.
2011-05-29 Richard Sandiford <rdsandiford@googlemail.com>
* gcc.target/mips/reg-var-1.c: New test.

View File

@ -0,0 +1,15 @@
/* PR target/49186 */
extern void abort (void);
int
main ()
{
int x;
unsigned long long uv = 0x1000000001ULL;
x = (uv < 0x80) ? 1 : ((uv < 0x800) ? 2 : 3);
if (x != 3)
abort ();
return 0;
}