summaryrefslogtreecommitdiff
path: root/test/c
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2007-10-31 17:09:12 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2007-10-31 17:09:12 +0000
commitfd04963da2f16cf22de5613bb793b0302ea99b70 (patch)
treeca8bd1f4a56b9177c59ca837481d6564a8328ef1 /test/c
parent108804d88e16b00f171c2ac546c6c1a60f3c3ff8 (diff)
Problemes d'alignement des variables globales et a l'interieur de leurs initialiseurs
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@444 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'test/c')
-rw-r--r--test/c/Makefile8
-rw-r--r--test/c/Results/initializersbin0 -> 239 bytes
-rw-r--r--test/c/initializers.c48
3 files changed, 53 insertions, 3 deletions
diff --git a/test/c/Makefile b/test/c/Makefile
index 3f4ea40..3ee10c9 100644
--- a/test/c/Makefile
+++ b/test/c/Makefile
@@ -9,10 +9,12 @@ LIBS=
TIME=xtime -o /dev/null -mintime 1.0 # Xavier's hack
#TIME=time >/dev/null # Otherwise
-PROGS=fib integr qsort fft sha1 aes almabench lists \
+BENCHS=fib integr qsort fft sha1 aes almabench lists \
binarytrees fannkuch knucleotide mandelbrot nbody \
nsieve nsievebits spectral
+PROGS=$(BENCHS) initializers
+
all_s: $(PROGS:%=%.s)
all: $(PROGS:%=%.compcert)
@@ -45,12 +47,12 @@ test_gcc:
done
time_gcc:
- @for i in $(PROGS); do \
+ @for i in $(BENCHS); do \
echo -n "$$i: "; $(TIME) ./$$i.gcc; \
done
time_compcert:
- @for i in $(PROGS); do \
+ @for i in $(BENCHS); do \
echo -n "$$i: "; $(TIME) ./$$i.compcert; \
done
diff --git a/test/c/Results/initializers b/test/c/Results/initializers
new file mode 100644
index 0000000..67be47f
--- /dev/null
+++ b/test/c/Results/initializers
Binary files differ
diff --git a/test/c/initializers.c b/test/c/initializers.c
new file mode 100644
index 0000000..da45e5b
--- /dev/null
+++ b/test/c/initializers.c
@@ -0,0 +1,48 @@
+#include <stdio.h>
+
+char x1 = 'x';
+
+int x2 = 12345;
+
+double x3 = 3.14159;
+
+char x4[4] = { 'a', 'b', 'c', 'd' };
+
+int x5[10] = { 1, 2, 3 };
+
+struct { int y; int z; } x6 = { 4, 5 };
+
+struct { int y; char z; } x7 = { 6, 'u' };
+
+struct { char y; int z; } x8 = { 'v', 7 };
+
+struct { char y[9]; double z; } x9 = { { 'a', 'b' }, 2.718 };
+
+struct {
+ struct { char y; int z; } u;
+ double v;
+} x10 = { { 'v', 7 }, 2.718 };
+
+int main(int argc, char ** argv)
+{
+ int i;
+
+ printf("x1 = '%c'\n", x1);
+ printf("x2 = %d\n", x2);
+ printf("x3 = %.5f\n", x3);
+ printf("x4 = { '%c', '%c', '%c', '%c' }\n",
+ x4[0], x4[1], x4[2], x4[3]);
+ printf("x5 = { ");
+ for (i = 0; i < 10; i++) printf("%d, ", x5[i]);
+ printf("}\n");
+ printf("x6 = { %d, %d }\n", x6.y, x6.z);
+ printf("x7 = { %d, '%c' }\n", x7.y, x7.z);
+ printf("x8 = { '%c', %d }\n", x8.y, x8.z);
+ printf("x9 = { { ");
+ for (i = 0; i < 9; i++) printf("'%c', ", x9.y[i]);
+ printf("}, %.3f }\n", x9.z);
+ printf("x10 = { { '%c', %d }, %.3f }\n",
+ x10.u.y, x10.u.z, x10.v);
+ return 0;
+}
+