1
1

fortran ignore TKR: update for strange Intel 2016 compiler suite behavior

The Intel 2016 compiler suite apparently only partially supports the
!GCC pragmas (prior versions either didn't support it at all, or our
existing configure test was sufficient to disqualify !GCC pragma
support when compiling with the Intel compiler).

With the existing configure test, the Intel 2016 compiler suite would
*pass* the test and therefore think that it could use !GCC as the
"ignore TKR" pragma.  However, the "!GCC ATTRIBUTES NO_ARG_CHECK"
pragma doesn't work with scalar integers (although it seems to work
for the other types in this test).

This commit adds a scalar integer test to the ignore TKR pragma
configure test, which is enough to make the Intel 2016 compiler suite
fail with !GCC (this then allows configure to advance on to trying the
!DEC pragma, which *does* work properly with the Intel 2016 compiler
suite).

Thanks to Fabrice Roy for reporting the problem.

Fixes open-mpi/ompi#937.
Этот коммит содержится в:
Jeff Squyres 2015-09-24 22:14:50 -07:00
родитель 7d3321b66e
Коммит 3698621df0

Просмотреть файл

@ -13,7 +13,7 @@ dnl All rights reserved.
dnl Copyright (c) 2007 Los Alamos National Security, LLC. All rights dnl Copyright (c) 2007 Los Alamos National Security, LLC. All rights
dnl reserved. dnl reserved.
dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
dnl Copyright (c) 2009-2014 Cisco Systems, Inc. All rights reserved. dnl Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved.
dnl $COPYRIGHT$ dnl $COPYRIGHT$
dnl dnl
dnl Additional copyrights may follow dnl Additional copyrights may follow
@ -157,6 +157,7 @@ AC_DEFUN([OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB], [
complex, pointer, dimension(:,:) :: ptr complex, pointer, dimension(:,:) :: ptr
target :: buffer3 target :: buffer3
ptr => buffer3 ptr => buffer3
integer :: buffer4
! Set some known values (somewhat irrelevant for this test, but just be ! Set some known values (somewhat irrelevant for this test, but just be
! sure that the values are initialized) ! sure that the values are initialized)
@ -174,6 +175,11 @@ AC_DEFUN([OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB], [
call force_assumed_shape(buffer3, count) call force_assumed_shape(buffer3, count)
! Force a pointer call through an assumed shape (!) ! Force a pointer call through an assumed shape (!)
ptr => buffer3 ptr => buffer3
! Also try with a simple scalar integer
! (Intel 2016 compiler suite only partially supports GCC pragmas;
! they work with all the above buffer types, but fail with a
! simple scalar integer)
call foo(buffer4, count)
end program end program