aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/ext-elim-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/ext-elim-1.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/ext-elim-1.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/ext-elim-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/ext-elim-1.c
new file mode 100644
index 000000000..5e899a235
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/ext-elim-1.c
@@ -0,0 +1,39 @@
+/* PR rtl-optimization/51924 */
+/* Testcase by Zdenek Sojka <zsojka@seznam.cz> */
+
+/* { dg-do run } */
+/* { dg-options "-O -free -fno-rename-registers -ftree-vectorize -funroll-loops" } */
+
+typedef __UINT64_TYPE__ uint64_t;
+
+uint64_t __attribute__ ((noinline, noclone))
+bn_sub_words (uint64_t * r, const uint64_t * a, const uint64_t * b, int n)
+{
+ uint64_t t1, t2;
+ unsigned c = 0;
+
+ while (n)
+ {
+ t1 = a[0];
+ t2 = b[0];
+ r[0] = (t1 - t2 - c);
+ if (t1 != t2)
+ c = (t1 < t2);
+ a++;
+ b++;
+ r++;
+ n--;
+ }
+ return (c);
+}
+
+int
+main (void)
+{
+ uint64_t r[2];
+ uint64_t a[2] = { -1, -1 };
+ uint64_t b[2] = { 0, 0 };
+ if (bn_sub_words (r, a, b, 2) != 0)
+ __builtin_abort ();
+ return 0;
+}