* src/regression/init0.c: new test for initialized arrays of function
[fw/sdcc] / src / regression / init0.c
diff --git a/src/regression/init0.c b/src/regression/init0.c
new file mode 100644 (file)
index 0000000..fc711e4
--- /dev/null
@@ -0,0 +1,45 @@
+#include "gpsim_assert.h"
+
+unsigned failures = 0;
+
+void
+done(void)
+{
+    ASSERT(MANGLE(failures) == 0);
+    PASSED();
+}
+
+typedef void (void_void_f)(void);
+
+void
+foo(void) {
+    failures--;
+}
+
+void
+bar(void) {
+    failures -= 2;
+}
+
+static void_void_f *
+funcs[] = {
+    &foo,
+    &bar,
+    (void *)0
+};
+
+void
+main(void)
+{
+    void_void_f **ptr;
+    failures = 3;
+
+    ptr = &funcs[0];
+    while (*ptr) {
+        (**ptr)();
+        ptr++;
+    } // while
+
+    done();
+}
+