aboutsummaryrefslogtreecommitdiffstats
path: root/test/monniaux/frame_pointer
diff options
context:
space:
mode:
Diffstat (limited to 'test/monniaux/frame_pointer')
-rw-r--r--test/monniaux/frame_pointer/Makefile16
-rw-r--r--test/monniaux/frame_pointer/a.c9
-rw-r--r--test/monniaux/frame_pointer/b.c11
3 files changed, 36 insertions, 0 deletions
diff --git a/test/monniaux/frame_pointer/Makefile b/test/monniaux/frame_pointer/Makefile
new file mode 100644
index 00000000..ff4b187d
--- /dev/null
+++ b/test/monniaux/frame_pointer/Makefile
@@ -0,0 +1,16 @@
+whole : a.o b.o
+ ../../../ccomp $+ -o $@
+
+a.s : a.c
+ k1-cos-gcc -std=c99 -Wall -S $<
+
+b.s : b.c
+ ../../../ccomp -Wall -Wno-c11-extensions -S $<
+
+%.o : %.s
+ k1-cos-gcc -c $<
+
+clean:
+ -rm -f a.o b.o a.s b.s whole
+
+.PHONY: clean
diff --git a/test/monniaux/frame_pointer/a.c b/test/monniaux/frame_pointer/a.c
new file mode 100644
index 00000000..644ccc9b
--- /dev/null
+++ b/test/monniaux/frame_pointer/a.c
@@ -0,0 +1,9 @@
+extern unsigned get_size(void);
+extern void print_array(unsigned n, const int *t);
+
+int main() {
+ unsigned n = get_size();
+ int tab[n];
+ for(unsigned i=0; i<n; i++) tab[i] = i;
+ print_array(n, tab);
+}
diff --git a/test/monniaux/frame_pointer/b.c b/test/monniaux/frame_pointer/b.c
new file mode 100644
index 00000000..dca8fbec
--- /dev/null
+++ b/test/monniaux/frame_pointer/b.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+unsigned get_size(void) {
+ return 12;
+}
+
+void print_array(unsigned n, const int *t) {
+ for(unsigned i=0; i<n; i++) {
+ printf("%d\n", t[i]);
+ }
+}