From 2e0999a180d90e7450b3d47adad87e7e92aae5ca Mon Sep 17 00:00:00 2001 From: Mark Abraham Date: Tue, 10 Oct 2017 10:09:10 +0000 Subject: [PATCH] Test clang on ARM in nightly matrix Also suppress lots of compiler warnings from useless use of __vectorcall on this target for this compiler. ARM are targetting clang for future development, so hopefully this either isn't needed or will work in future. Either way, this change will continue to do the right thing. Change-Id: I211952a24aefee8434cc6b32322f359b2a22687b --- admin/builds/nightly-matrix.txt | 21 +++++++++++++++++++++ cmake/gmxManageSimd.cmake | 9 ++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 admin/builds/nightly-matrix.txt diff --git a/admin/builds/nightly-matrix.txt b/admin/builds/nightly-matrix.txt new file mode 100644 index 0000000000..aeca6f4b5e --- /dev/null +++ b/admin/builds/nightly-matrix.txt @@ -0,0 +1,21 @@ +# Comment line(s) preceding each configuration document the main +# intent behind that configuration, so that we can correctly judge +# whether to preserve that during maintenance decisions. +# +# Other configurations might coincidentally test such configurations +# (e.g. because they are the current default), but it is appropriate +# to intend to teach each feature (or a feature combination) exactly +# once, and for the intent to be reflected precisely in the +# configuration syntax, so that the configurations are stable even +# if the defaults change in future. +# +# The phrase "at time of release" refers to either the initial +# GROMACS release from that branch, or the next expected release +# from that branch. (We will tend not to retroactively support +# newer infrastructure in CI, unless it's either easy or of +# high impact.) + +# Test clang on ARM v8 +# Test ARM_NEON SIMD +clang-3.9 simd=ARM_NEON_ASIMD release-with-assert + diff --git a/cmake/gmxManageSimd.cmake b/cmake/gmxManageSimd.cmake index 84045516d6..c7b3f63240 100644 --- a/cmake/gmxManageSimd.cmake +++ b/cmake/gmxManageSimd.cmake @@ -512,7 +512,14 @@ if(NOT DEFINED GMX_SIMD_CALLING_CONVENTION) endif() foreach(callconv ${CALLCONV_LIST}) set(callconv_compile_var "_callconv_${callconv}") - check_c_source_compiles("int ${callconv} f(int i) {return i;} int main(void) {return f(0);}" ${callconv_compile_var}) + # Some compilers warn about targets for which attributes are + # ignored (e.g. clang on ARM), and in such cases we want this + # check to lead to using no attribute in subsequent GROMACS + # compilation, to avoid issuing the warning for lots of files. + check_c_source_compiles(" +#pragma GCC diagnostic error \"-Wignored-attributes\" +int ${callconv} f(int i) {return i;} int main(void) {return f(0);} +" ${callconv_compile_var}) if(${callconv_compile_var}) set(GMX_SIMD_CALLING_CONVENTION "${callconv}" CACHE INTERNAL "Calling convention for SIMD routines" FORCE) break() -- 2.11.4.GIT