aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2014-11-26 15:50:36 +0100
committerXavier Leroy <xavier.leroy@inria.fr>2014-11-26 15:50:36 +0100
commitc3b615f875ed2cf8418453c79c4621d2dc61b0a0 (patch)
tree8e125450f2313e35d36618ac8c1dfca62688afc3 /test
parent1ccc058794381d7d7c2ff704786009019489001d (diff)
downloadcompcert-c3b615f875ed2cf8418453c79c4621d2dc61b0a0.tar.gz
compcert-c3b615f875ed2cf8418453c79c4621d2dc61b0a0.zip
Wrong handling of block-local function declarations (in Elab.ml).
Diffstat (limited to 'test')
-rw-r--r--test/regression/Makefile3
-rw-r--r--test/regression/Results/decl11
-rw-r--r--test/regression/decl1.c21
3 files changed, 24 insertions, 1 deletions
diff --git a/test/regression/Makefile b/test/regression/Makefile
index f4f96233..5c601211 100644
--- a/test/regression/Makefile
+++ b/test/regression/Makefile
@@ -16,7 +16,8 @@ TESTS=int32 int64 floats floats-basics \
expr1 expr6 funptr2 initializers initializers2 initializers3 \
volatile1 volatile2 volatile3 \
funct3 expr5 struct7 struct8 struct11 casts1 casts2 char1 \
- sizeof1 sizeof2 binops bool for1 switch switch2 compound
+ sizeof1 sizeof2 binops bool for1 switch switch2 compound \
+ decl1
# Can run, but only in compiled mode, and have reference output in Results
diff --git a/test/regression/Results/decl1 b/test/regression/Results/decl1
new file mode 100644
index 00000000..fa8248b0
--- /dev/null
+++ b/test/regression/Results/decl1
@@ -0,0 +1 @@
+Result is 2
diff --git a/test/regression/decl1.c b/test/regression/decl1.c
new file mode 100644
index 00000000..d2aedba7
--- /dev/null
+++ b/test/regression/decl1.c
@@ -0,0 +1,21 @@
+#include <stdio.h>
+
+/* Local function declarations */
+
+int f (int p)
+{
+ p = p + 1;
+ return p;
+}
+
+int main (int argc, char **argv)
+{
+ int (*p)();
+ int f();
+ int i;
+
+ p = f;
+ i = (*p)(1);
+ printf("Result is %d\n", i);
+ return 0;
+}