From 4e27ffc166bc4a3c0d3e895781d609cf8b6feca0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Fri, 26 Mar 2021 12:33:36 +0100
Subject: [PATCH] [wp] added test for large arrays

---
 src/plugins/wp/tests/wp_plugin/bigarray.c     | 30 +++++++++++++++++++
 .../wp_plugin/oracle/bigarray.0.res.oracle    | 20 +++++++++++++
 .../wp_plugin/oracle/bigarray.1.res.oracle    | 13 ++++++++
 3 files changed, 63 insertions(+)
 create mode 100644 src/plugins/wp/tests/wp_plugin/bigarray.c
 create mode 100644 src/plugins/wp/tests/wp_plugin/oracle/bigarray.0.res.oracle
 create mode 100644 src/plugins/wp/tests/wp_plugin/oracle/bigarray.1.res.oracle

diff --git a/src/plugins/wp/tests/wp_plugin/bigarray.c b/src/plugins/wp/tests/wp_plugin/bigarray.c
new file mode 100644
index 00000000000..266998147bf
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/bigarray.c
@@ -0,0 +1,30 @@
+/* run.config
+   OPT: -cpp-extra-args="-DFIT"
+   OPT: -cpp-extra-args="-DLARGE"
+ */
+
+/* run.config_qualif
+   DONTRUN:
+*/
+
+#include <stdint.h>
+#ifdef FIT
+#define SIZE (SIZE_MAX / sizeof(int))
+#endif
+#ifdef LARGE
+#define SIZE SIZE_MAX
+#endif
+
+/*@
+  assigns \result \from p[0..n-1];
+*/
+int f(int *p, int n)
+{
+  int s = 0;
+  int tmp[SIZE];
+  /*@ loop assigns i,s, tmp[..]; */
+  for (int i = 0; i < n; i++) {
+    s+= p[i]; tmp[i] = s;
+  }
+  return s;
+}
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/bigarray.0.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/bigarray.0.res.oracle
new file mode 100644
index 00000000000..c62b8402ac0
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/oracle/bigarray.0.res.oracle
@@ -0,0 +1,20 @@
+# frama-c -wp [...]
+[kernel] Parsing tests/wp_plugin/bigarray.c (with preprocessing)
+[kernel] tests/wp_plugin/bigarray.c:26: Warning: 
+  Cannot represent length of array as an attribute
+[wp] Running WP plugin...
+[wp] Warning: Missing RTE guards
+------------------------------------------------------------
+  Function f
+------------------------------------------------------------
+
+Goal Loop assigns (file tests/wp_plugin/bigarray.c, line 25):
+Prove: true.
+
+------------------------------------------------------------
+
+Goal Assigns nothing in 'f':
+Effect at line 26
+Prove: true.
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_plugin/oracle/bigarray.1.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/bigarray.1.res.oracle
new file mode 100644
index 00000000000..08244d758f0
--- /dev/null
+++ b/src/plugins/wp/tests/wp_plugin/oracle/bigarray.1.res.oracle
@@ -0,0 +1,13 @@
+# frama-c -wp [...]
+[kernel] Parsing tests/wp_plugin/bigarray.c (with preprocessing)
+[kernel] tests/wp_plugin/bigarray.c:26: Warning: 
+  Cannot represent length of array as an attribute
+[wp] Running WP plugin...
+[wp] Warning: Missing RTE guards
+[wp] tests/wp_plugin/bigarray.c:26: Warning: 
+  Array size too large (0xFFFFFFFFFFFFFFFF)
+[wp] tests/wp_plugin/bigarray.c:27: Warning: 
+  Array size too large (0xFFFFFFFFFFFFFFFF)
+[wp] tests/wp_plugin/bigarray.c:19: User Error: 
+  Array size too large (0xFFFFFFFFFFFFFFFF)
+[kernel] Plug-in wp aborted: invalid user input.
-- 
GitLab