summaryrefslogtreecommitdiff
path: root/support/regression/tests/bug-2761.c
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
committerXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
commit268a53de823a6750d6256ee1fb1e7707b4b45740 (patch)
tree42c1799a9a82b2f7d9790ee9fe181d72a7274751 /support/regression/tests/bug-2761.c
downloadsdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'support/regression/tests/bug-2761.c')
-rw-r--r--support/regression/tests/bug-2761.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/support/regression/tests/bug-2761.c b/support/regression/tests/bug-2761.c
new file mode 100644
index 0000000..872310c
--- /dev/null
+++ b/support/regression/tests/bug-2761.c
@@ -0,0 +1,43 @@
+/* bug-2761.c
+ Incomplete use vector from lospre confused live range separation
+ */
+
+#include <testfwk.h>
+
+int *dot;
+int *dol;
+int fchange;
+
+int array[4] = {0, 1, 2, 3};
+
+void rdelete(int *ad1, int *ad2)
+{
+ register int *a1, *a2, *a3;
+
+ a1 = ad1;
+ a2 = ad2+1;
+ a3 = dol;
+ dol -= a2 - a1;
+ do {
+ *a1++ = *a2++;
+ } while (a2 <= a3);
+ a1 = ad1;
+ if (a1 > dol)
+ a1 = dol;
+ dot = a1;
+ fchange = 1;
+}
+
+void testBug(void)
+{
+ dol = array + 2;
+ rdelete(array + 0, array + 0);
+
+ ASSERT(array[0] == 1);
+ ASSERT(array[1] == 2);
+ ASSERT(array[2] == 2);
+ ASSERT(array[3] == 3);
+
+ ASSERT(dot == array + 0);
+}
+