Commit cd7bbceb by Kyrylo Tkachov Committed by Kyrylo Tkachov

[ARM] Tests for arm_restrict_it patterns in thumb2.md

	* gcc.target/arm/cond_sub_restrict_it.c: New test.
	* gcc.target/arm/condarith_restrict_it.c: Likewise.
	* gcc.target/arm/movcond_restrict_it.c: Likewise.
	* gcc.target/arm/negscc_restrict_it.c: Likewise.

From-SVN: r233667
parent 86715b09
2016-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/arm/cond_sub_restrict_it.c: New test.
* gcc.target/arm/condarith_restrict_it.c: Likewise.
* gcc.target/arm/movcond_restrict_it.c: Likewise.
* gcc.target/arm/negscc_restrict_it.c: Likewise.
2016-02-24 Jakub Jelinek <jakub@redhat.com>
PR middle-end/69915
......
/* { dg-do run } */
/* { dg-require-effective-target arm_thumb2_ok } */
/* { dg-options "-mthumb -O -mrestrict-it" } */
int a;
__attribute__((noinline, noclone)) int
fn1 (int c, int d)
{
a -= c == d;
return a;
}
int
main (void)
{
a = 10;
if (fn1 (4, 4) != 9)
__builtin_abort ();
a = 5;
if (fn1 (3, 4) != 5)
__builtin_abort ();
return 0;
}
/* { dg-do run } */
/* { dg-require-effective-target arm_thumb2_ok } */
/* { dg-options "-mthumb -O2 -mrestrict-it" } */
__attribute__ ((noinline, noclone)) void
fn2 ()
{
__builtin_printf ("4");
}
enum
{
ONE = 1,
TWO
} a;
int b;
__attribute__ ((noinline, noclone)) int
fn1 ()
{
int c = b == 0;
if (a <= ONE)
if (b == 0)
fn2 ();
if (a)
if (c)
a = 0;
return a;
}
int
main (void)
{
a = ONE;
b = 1;
if (fn1 () != ONE)
__builtin_abort ();
a = TWO;
b = 0;
if (fn1 () != 0)
__builtin_abort ();
return 0;
}
/* { dg-do run } */
/* { dg-require-effective-target arm_thumb2_ok } */
/* { dg-options "-mthumb -O3 -mrestrict-it" } */
int a;
__attribute__ ((noinline, noclone)) int
fn1 (int c, int d)
{
if (c > d)
a = 1;
else
a = -1;
return a;
}
int
main (void)
{
if (fn1 (4, 5) != -1)
__builtin_abort ();
if (fn1 (5, 4) != 1)
__builtin_abort ();
return 0;
}
/* { dg-do run } */
/* { dg-require-effective-target arm_thumb2_ok } */
/* { dg-options "-mthumb -O2 -mrestrict-it" } */
__attribute__ ((noinline, noclone)) int
fn1 (int a, int b)
{
return (a == b ? 0 : -1);
}
int
main (void)
{
if (fn1 (3, 3) != 0)
__builtin_abort ();
if (fn1 (6, 7) != -1)
__builtin_abort ();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment