diff options
author | Christophe Lyon <christophe.lyon@linaro.org> | 2016-04-25 09:59:21 +0200 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2016-05-11 09:01:31 +0000 |
commit | 2810676ebd7d618a66f5d29494c3a67016f2603f (patch) | |
tree | d7694b8bd3b548150c1fd81ca56bb3ba2a3e8797 | |
parent | 4d247e0cb0b1f54b9985086ffa54730e1a10af08 (diff) | |
download | gcc-2810676ebd7d618a66f5d29494c3a67016f2603f.tar.gz |
gcc/testsuite/
Backport from trunk r233667.
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.
Change-Id: I7c8138be3a3f4a5870e2086bdeb6a19a2d6fab55
-rw-r--r-- | gcc/testsuite/gcc.target/arm/cond_sub_restrict_it.c | 26 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/condarith_restrict_it.c | 47 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/movcond_restrict_it.c | 27 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/negscc_restrict_it.c | 19 |
4 files changed, 119 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/arm/cond_sub_restrict_it.c b/gcc/testsuite/gcc.target/arm/cond_sub_restrict_it.c new file mode 100644 index 00000000000..8411643e957 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/cond_sub_restrict_it.c @@ -0,0 +1,26 @@ +/* { 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; +} diff --git a/gcc/testsuite/gcc.target/arm/condarith_restrict_it.c b/gcc/testsuite/gcc.target/arm/condarith_restrict_it.c new file mode 100644 index 00000000000..ad0d15b0ebd --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/condarith_restrict_it.c @@ -0,0 +1,47 @@ +/* { 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; +} diff --git a/gcc/testsuite/gcc.target/arm/movcond_restrict_it.c b/gcc/testsuite/gcc.target/arm/movcond_restrict_it.c new file mode 100644 index 00000000000..f1f9cfa351b --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/movcond_restrict_it.c @@ -0,0 +1,27 @@ +/* { 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; +} diff --git a/gcc/testsuite/gcc.target/arm/negscc_restrict_it.c b/gcc/testsuite/gcc.target/arm/negscc_restrict_it.c new file mode 100644 index 00000000000..b24c6ece727 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/negscc_restrict_it.c @@ -0,0 +1,19 @@ +/* { 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 (); +} |