From 3de3e4a967a5ec95482a7ce89c9a4d35aa714fd1 Mon Sep 17 00:00:00 2001 From: Victor Khimenko Date: Wed, 19 Oct 2016 18:16:39 +0200 Subject: 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 --- Android.mk | 3 +-- stm-arm-neon-ref.h | 2 +- 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); \ -- cgit v1.2.3