@@ -72,16 +72,22 @@ AC_DEFUN([_OMPI_FORTRAN_CHECK_IGNORE_TKR], [
72
72
ompi_fortran_ignore_tkr_predecl=!
73
73
ompi_fortran_ignore_tkr_type= real
74
74
75
- # Vendor-neutral, TYPE(*) syntax
75
+ # Vendor-neutral, TYPE(*), DIMENSION(..) syntax
76
76
OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB(
77
- [! ], [type(* )],
78
- [TYPE(* ), DIMENSION(* )],
77
+ [! ], [type(* ), DIMENSION(..)],[, ASYNCHRONOUS ],
78
+ [TYPE(* ), DIMENSION(.. )],
79
79
[internal_ignore_tkr_happy= 1], [internal_ignore_tkr_happy= 0])
80
+ # Vendor-neutral, TYPE(*), DIMENSION(*) syntax
81
+ AS_IF([test $internal_ignore_tkr_happy -eq 0],
82
+ [OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB(
83
+ [! ], [type(* ), DIMENSION(* )],[],
84
+ [TYPE(* ), DIMENSION(* )],
85
+ [internal_ignore_tkr_happy= 1], [internal_ignore_tkr_happy= 0])])
80
86
81
87
# GCC compilers
82
88
AS_IF([test $internal_ignore_tkr_happy -eq 0],
83
89
[OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB(
84
- [! GCC\$ ATTRIBUTES NO_ARG_CHECK ::], [type(* ), dimension(* )],
90
+ [! GCC\$ ATTRIBUTES NO_ARG_CHECK ::], [type(* ), dimension(* )],[],
85
91
[! GCC\$ ATTRIBUTES NO_ARG_CHECK],
86
92
[internal_ignore_tkr_happy= 1], [internal_ignore_tkr_happy= 0])])
87
93
# LLVM compilers
@@ -93,27 +99,27 @@ AC_DEFUN([_OMPI_FORTRAN_CHECK_IGNORE_TKR], [
93
99
# Intel compilers
94
100
AS_IF([test $internal_ignore_tkr_happy -eq 0],
95
101
[OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB(
96
- [! DEC\$ ATTRIBUTES NO_ARG_CHECK ::], [real, dimension(* )],
102
+ [! DEC\$ ATTRIBUTES NO_ARG_CHECK ::], [real, dimension(* )],[],
97
103
[! DEC\$ ATTRIBUTES NO_ARG_CHECK],
98
104
[internal_ignore_tkr_happy= 1], [internal_ignore_tkr_happy= 0])])
99
105
# Solaris Studio compilers
100
106
# Note that due to a compiler bug, we have been advised by Oracle to
101
107
# use the "character(*)" type
102
108
AS_IF([test $internal_ignore_tkr_happy -eq 0],
103
109
[OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB(
104
- [! \$ PRAGMA IGNORE_TKR], [character(* )],
110
+ [! \$ PRAGMA IGNORE_TKR], [character(* )],[],
105
111
[! \$ PRAGMA IGNORE_TKR],
106
112
[internal_ignore_tkr_happy= 1], [internal_ignore_tkr_happy= 0])])
107
113
# Cray compilers
108
114
AS_IF([test $internal_ignore_tkr_happy -eq 0],
109
115
[OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB(
110
- [! DIR\$ IGNORE_TKR], [real, dimension(* )],
116
+ [! DIR\$ IGNORE_TKR], [real, dimension(* )],[],
111
117
[! DIR\$ IGNORE_TKR],
112
118
[internal_ignore_tkr_happy= 1], [internal_ignore_tkr_happy= 0])])
113
119
# IBM compilers
114
120
AS_IF([test $internal_ignore_tkr_happy -eq 0],
115
121
[OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB(
116
- [! IBM* IGNORE_TKR], [real, dimension(* )],
122
+ [! IBM* IGNORE_TKR], [real, dimension(* )],[],
117
123
[! IBM* IGNORE_TKR],
118
124
[internal_ignore_tkr_happy= 1], [internal_ignore_tkr_happy= 0])])
119
125
@@ -132,13 +138,14 @@ AC_DEFUN([_OMPI_FORTRAN_CHECK_IGNORE_TKR], [
132
138
# functionality
133
139
# $1: pre-decl qualifier line -- likely a compiler directive
134
140
# $2: parameter type
135
- # $3: message for AC-MSG-CHECKING
136
- # $4: action to take if the test passes
137
- # $5: action to take if the test fails
141
+ # $3: asynchronous keyword
142
+ # $4: message for AC-MSG-CHECKING
143
+ # $5: action to take if the test passes
144
+ # $6: action to take if the test fails
138
145
AC_DEFUN([OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB], [
139
146
OPAL_VAR_SCOPE_PUSH(msg)
140
147
AC_LANG_PUSH([Fortran])
141
- AC_MSG_CHECKING([for Fortran compiler support of $3 ])
148
+ AC_MSG_CHECKING([for Fortran compiler support of $4 ])
142
149
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([],[[!
143
150
! Autoconf puts " program main" at the top
144
151
implicit none
@@ -194,35 +201,35 @@ AC_DEFUN([OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB], [
194
201
end program
195
202
196
203
subroutine force_assumed_shape(a, count)
204
+ implicit none
197
205
integer :: count
198
206
real, dimension(:,:) :: a
199
207
call foo(a, count)
200
208
end subroutine force_assumed_shape
201
209
202
- module check_ignore_tkr
203
- interface
204
- subroutine foobar(buffer, count)
205
- $1 buffer
206
- $2 , intent(in) :: buffer
210
+ module mod
211
+ interface
212
+ subroutine bar(buffer, count)
213
+ $2 , intent(in)$3 :: buffer
207
214
integer, intent(in) :: count
208
- end subroutine foobar
209
- end interface
215
+ end subroutine bar
216
+ end interface
210
217
end module
211
218
212
- subroutine bar(var )
213
- use check_ignore_tkr
214
- implicit none
215
- real , intent(inout) :: var(:, :, :)
216
-
217
- call foobar(var(1,1,1), 1 )
219
+ subroutine bogus(buffer, count )
220
+ use mod, only : bar
221
+ implicit none
222
+ $2 , intent(in) $3 :: buffer
223
+ integer, intent(in) :: count
224
+ call bar(buffer, count )
218
225
! Autoconf puts " end" after the last line
219
226
]]),
220
227
[msg= yes
221
228
ompi_fortran_ignore_tkr_predecl= " $1 "
222
229
ompi_fortran_ignore_tkr_type= " $2 "
223
- $4 ],
230
+ $5 ],
224
231
[msg= no
225
- $5 ])
232
+ $6 ])
226
233
AC_MSG_RESULT($msg )
227
234
AC_LANG_POP([Fortran])
228
235
OPAL_VAR_SCOPE_POP
0 commit comments