aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Khimenko <khim@google.com>2016-10-19 18:16:39 +0200
committerVictor Khimenko <khim@google.com>2016-10-19 18:19:08 +0200
commit3de3e4a967a5ec95482a7ce89c9a4d35aa714fd1 (patch)
treecaab76f809b04379747a7d9613139c9b03a47308
parent80ce7f34ad0694d93355c86c2e30c91fd52f42cb (diff)
downloadplatform_external_arm-neon-tests-3de3e4a967a5ec95482a7ce89c9a4d35aa714fd1.tar.gz
platform_external_arm-neon-tests-3de3e4a967a5ec95482a7ce89c9a4d35aa714fd1.tar.bz2
platform_external_arm-neon-tests-3de3e4a967a5ec95482a7ce89c9a4d35aa714fd1.zip
Make arm-neon-tests buildable with optimization.
If arguments are not marked as volatile then Clang sometimes manages to elide intrinsics entirely which makes test useless as CPU test. Worse: if saturating intrinsic is eliminated then nothing touches FPSCR.Q anymore thus tests fail. Test: tests ARE tests! Bug: 27353392 Change-Id: Iaf555a068118250d12d7cc259c4124dfcf90601e
-rw-r--r--Android.mk3
-rw-r--r--stm-arm-neon-ref.h2
2 files changed, 2 insertions, 3 deletions
diff --git a/Android.mk b/Android.mk
index 4bf3c75..ccd824a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -50,8 +50,7 @@ ARM_NEON_TESTS_EXPECTED_INPUT = expected_input4gcc.txt
# TODO(b/27353392): remove -O0 flag when clang would stop miscompiling
# arm-neon-tests.
ARM_NEON_TESTS_CFLAGS = -DREFFILE=\"$(ARM_NEON_TESTS_REFGCCARM)\" \
- -DGCCTESTS_FILE=\"$(ARM_NEON_TESTS_EXPECTED_INPUT)\" \
- -O0
+ -DGCCTESTS_FILE=\"$(ARM_NEON_TESTS_EXPECTED_INPUT)\"
include $(CLEAR_VARS)
LOCAL_MODULE := arm_neon_tests_arm
diff --git a/stm-arm-neon-ref.h b/stm-arm-neon-ref.h
index 2f2d255..e9bbe3c 100644
--- a/stm-arm-neon-ref.h
+++ b/stm-arm-neon-ref.h
@@ -661,7 +661,7 @@ static void clean_results (void)
/* Helpers to declare variables of various types */
#define DECL_VARIABLE(VAR, T1, W, N) \
- VECT_TYPE(T1, W, N) VECT_VAR(VAR, T1, W, N)
+ volatile VECT_TYPE(T1, W, N) VECT_VAR(VAR, T1, W, N)
#define DECL_VARIABLE_64BITS_SIGNED_VARIANTS(VAR) \
DECL_VARIABLE(VAR, int, 8, 8); \