aboutsummaryrefslogtreecommitdiffstats
path: root/test/regression/builtins-x86.c
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@college-de-france.fr>2019-07-07 17:39:54 +0200
committerXavier Leroy <xavierleroy@users.noreply.github.com>2019-07-17 09:17:28 +0200
commit7cd0af8ba5d737fa9c45bb9fa454b38e9704097a (patch)
treecd348fa06266cfffeeadc5d5c61f4cd7fe80a7f8 /test/regression/builtins-x86.c
parent633e60ed36c07c4b6cb4b1dc93b9eea312882ceb (diff)
downloadcompcert-kvx-7cd0af8ba5d737fa9c45bb9fa454b38e9704097a.tar.gz
compcert-kvx-7cd0af8ba5d737fa9c45bb9fa454b38e9704097a.zip
When testing builtin functions, prevent constant propagation
Now that some builtin functions have known semantics, constant propagation can happen in this test. This defeats the purpose, which is to check that the correct processor instructions are generated. To prevent this constant propagation, we move the initialized variables to global scope. Since they are not "const", their values are not known to the optimizer.
Diffstat (limited to 'test/regression/builtins-x86.c')
-rw-r--r--test/regression/builtins-x86.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/test/regression/builtins-x86.c b/test/regression/builtins-x86.c
index 1ba213e7..6233f9fd 100644
--- a/test/regression/builtins-x86.c
+++ b/test/regression/builtins-x86.c
@@ -2,18 +2,19 @@
#include <stdio.h>
+unsigned int x = 0x12345678;
+unsigned int y = 0xDEADBEEF;
+unsigned long long xx = 0x1234567812345678ULL;
+unsigned long long yy = 0x1234567800000000ULL;
+unsigned long long zz = 0x123456789ABCDEF0ULL;
+double a = 3.14159;
+double b = 2.718;
+double c = 1.414;
+unsigned short s = 0x1234;
+
int main(int argc, char ** argv)
{
- unsigned int x = 0x12345678;
- unsigned int y = 0xDEADBEEF;
- unsigned long long xx = 0x1234567812345678ULL;
- unsigned long long yy = 0x1234567800000000ULL;
- unsigned long long zz = 0x123456789ABCDEF0ULL;
unsigned z;
- double a = 3.14159;
- double b = 2.718;
- double c = 1.414;
- unsigned short s = 0x1234;
printf("bswap(%x) = %x\n", x, __builtin_bswap(x));
printf("bswap16(%x) = %x\n", s, __builtin_bswap16(s));