re PR rtl-optimization/64255 (failures with -O2 optimization on i >= 0 ? (unsigned long) i : - (unsigned long) i)

PR rtl-optimization/64255
	* gcc.c-torture/execute/pr64255.c: New test.

	PR rtl-optimization/64260
	* gcc.c-torture/execute/pr64260.c: New test.

From-SVN: r218665
This commit is contained in:
Jakub Jelinek 2014-12-12 13:43:34 +01:00 committed by Jakub Jelinek
parent 69aef6dcdc
commit ef53f36f96
3 changed files with 61 additions and 0 deletions

View file

@ -1,3 +1,11 @@
2014-12-12 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/64255
* gcc.c-torture/execute/pr64255.c: New test.
PR rtl-optimization/64260
* gcc.c-torture/execute/pr64260.c: New test.
2014-12-12 Zhenqiang Chen <zhenqiang.chen@arm.com>
* gcc.dg/pr64007.c: New test.

View file

@ -0,0 +1,28 @@
/* PR rtl-optimization/64255 */
__attribute__((noinline, noclone)) void
bar (long i, unsigned long j)
{
if (i != 1 || j != 1)
__builtin_abort ();
}
__attribute__((noinline, noclone)) void
foo (long i)
{
unsigned long j;
if (!i)
return;
j = i >= 0 ? (unsigned long) i : - (unsigned long) i;
if ((i >= 0 ? (unsigned long) i : - (unsigned long) i) != j)
__builtin_abort ();
bar (i, j);
}
int
main ()
{
foo (1);
return 0;
}

View file

@ -0,0 +1,25 @@
/* PR rtl-optimization/64260 */
int a = 1, b;
void
foo (char p)
{
int t = 0;
for (; b < 1; b++)
{
int *s = &a;
if (--t)
*s &= p;
*s &= 1;
}
}
int
main ()
{
foo (0);
if (a != 0)
__builtin_abort ();
return 0;
}