aboutsummaryrefslogtreecommitdiffstats
path: root/test/monniaux/volatile
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-10 10:06:37 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-10 10:06:37 +0100
commit80172034b52ee1dfdb9b57a25ec24b3820ed29d6 (patch)
tree2c0c781ab60aa0e57561f6ecf6a917a635cc6900 /test/monniaux/volatile
parent215a0343b8fb030ecb6367e71d9da8894c641e0e (diff)
downloadcompcert-kvx-80172034b52ee1dfdb9b57a25ec24b3820ed29d6.tar.gz
compcert-kvx-80172034b52ee1dfdb9b57a25ec24b3820ed29d6.zip
test for volatiles
Diffstat (limited to 'test/monniaux/volatile')
-rw-r--r--test/monniaux/volatile/volatile_test.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/monniaux/volatile/volatile_test.c b/test/monniaux/volatile/volatile_test.c
new file mode 100644
index 00000000..687544ec
--- /dev/null
+++ b/test/monniaux/volatile/volatile_test.c
@@ -0,0 +1,33 @@
+#include <stdint.h>
+#include <float.h>
+#include <stdio.h>
+
+#define TEST_TYPE(type, min, max) \
+ { \
+ volatile type var; \
+ var = min; \
+ if (var != min) { \
+ printf("%s: wrong min\n", #type); \
+ } \
+ var = max; \
+ if (var != max) { \
+ printf("%s: wrong max\n", #type); \
+ } \
+ }
+
+#define TEST_INT_TYPE(type, min, max) TEST_TYPE(type##_t, min, max)
+
+int main() {
+ TEST_INT_TYPE(uint8, 0, UINT8_MAX);
+ TEST_INT_TYPE(int8, INT8_MIN, INT8_MAX);
+ TEST_INT_TYPE(uint16, 0, UINT16_MAX);
+ TEST_INT_TYPE(int16, INT16_MIN, INT16_MAX);
+ TEST_INT_TYPE(uint32, 0, UINT32_MAX);
+ TEST_INT_TYPE(int32, INT32_MIN, INT32_MAX);
+ TEST_INT_TYPE(uint64, 0, UINT64_MAX);
+ TEST_INT_TYPE(int64, INT64_MIN, INT64_MAX);
+
+ TEST_TYPE(float, FLT_MIN, FLT_MAX);
+ TEST_TYPE(double, DBL_MIN, DBL_MAX);
+ return 0;
+}