summaryrefslogtreecommitdiff
path: root/libgfortran/acinclude.m4
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2017-01-19 15:41:15 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2017-01-19 15:41:15 +0000
commitd6c831fb02edf685d688511de4d6c8084e490d66 (patch)
tree4bae35124712f9ca92f86fa84595ae73858cd929 /libgfortran/acinclude.m4
parent46fd36c9240ff9d05c93734cf5aa3ffae8f7f566 (diff)
downloadgcc-d6c831fb02edf685d688511de4d6c8084e490d66.tar.gz
PR target/79127
* acinclude.m4 (LIBGFOR_CHECK_AVX512F): Ensure the test clobbers some zmm16+ registers to verify they are handled by unwind info properly if needed. * configure: Regenerated. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@244636 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran/acinclude.m4')
-rw-r--r--libgfortran/acinclude.m49
1 files changed, 8 insertions, 1 deletions
diff --git a/libgfortran/acinclude.m4 b/libgfortran/acinclude.m4
index 9a7f461af3c..34e14071aeb 100644
--- a/libgfortran/acinclude.m4
+++ b/libgfortran/acinclude.m4
@@ -437,7 +437,14 @@ AC_DEFUN([LIBGFOR_CHECK_AVX512F], [
typedef double __m512d __attribute__ ((__vector_size__ (64)));
__m512d _mm512_add (__m512d a)
{
- return __builtin_ia32_addpd512_mask (a, a, a, 1, 4);
+ __m512d b = __builtin_ia32_addpd512_mask (a, a, a, 1, 4);
+ /* For -m64/-mx32 also verify that code will work even if
+ the target uses call saved zmm16+ and needs to emit
+ unwind info for them (e.g. on mingw). See PR79127. */
+#ifdef __x86_64__
+ asm volatile ("" : : : "zmm16", "zmm17", "zmm18", "zmm19");
+#endif
+ return b;
}]], [[]])],
AC_DEFINE(HAVE_AVX512F, 1,
[Define if AVX512f instructions can be compiled.]),