Added support for gsinit packing.
[fw/sdcc] / support / regression / tests / staticinit.c
index 794b729ea69b00ea371220c6f532af8f2d4351bd..758753203d73ea536733fb9f9b5f4b3a77d0a4fc 100644 (file)
@@ -42,3 +42,73 @@ static {type} smallSparseZero[] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0
 };
 
+static {type} smallSparseZeroTail[] = {
+    1, 2, 3
+};
+
+static void
+testSmallSparseZero(void)
+{
+    ASSERT(smallSparseZero[0] == 0);
+    ASSERT(smallSparseZero[1] == 0);
+    ASSERT(smallSparseZero[2] == 0);
+    ASSERT(smallSparseZero[3] == 0);
+    ASSERT(smallSparseZero[4] == 0);
+    ASSERT(smallSparseZero[5] == 0);
+    ASSERT(smallSparseZero[6] == 0);
+    ASSERT(smallSparseZero[7] == 0);
+    ASSERT(smallSparseZero[8] == 0);
+}
+
+static {type} largeMixed[] = {
+    1, 2, 3, 4, 5, 6, 7,       /* 0-6 */
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,    /* 8*12 = 96+7 = -102 */
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1,
+    3, 4, 5, 6, 3, 4, 5, 6,    /* 8*17 = 136+7 */
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6,
+    3, 4, 5, 6, 3, 4, 5, 6
+};
+
+static void
+testLargeMixed(void)
+{
+    ASSERT(largeMixed[0] == 1);
+    ASSERT(largeMixed[1] == 2);
+    ASSERT(largeMixed[7] == 1);
+    ASSERT(largeMixed[102] == 1);
+    ASSERT(largeMixed[143] == 3);
+    ASSERT(largeMixed[143+8] == 3);
+    ASSERT(largeMixed[143+16] == 3);
+    ASSERT(largeMixed[143+1] == 4);
+    ASSERT(largeMixed[143+8+1] == 4);
+    ASSERT(largeMixed[143+16+1] == 4);
+}