Skip to content

Commit 4ba471d

Browse files
authored
Merge pull request #5003 from mathomp4/bugfix/nag-pic
Fixes for NAG Compiler
2 parents 9c5d201 + c4e8bac commit 4ba471d

24 files changed

+140
-104
lines changed

cmake/fc.cmake

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,31 @@ if (${F_COMPILER} STREQUAL "CRAY")
269269
endif ()
270270
endif ()
271271

272+
if (${F_COMPILER} STREQUAL "NAGFOR")
273+
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_NAG")
274+
if (INTERFACE64)
275+
set(FCOMMON_OPT "${FCOMMON_OPT} -i8")
276+
endif ()
277+
# Options from Makefile.system
278+
# -dcfuns: Enable non-standard double precision complex intrinsic functions
279+
# -ieee=full: enables all IEEE arithmetic facilities including non-stop arithmetic.
280+
# -w=obs: Suppress warning messages about obsolescent features
281+
# -thread_safe: Compile code for safe execution in a multi-threaded environment.
282+
# -recursive: Specifies that procedures are RECURSIVE by default.
283+
set(FCOMMON_OPT "${FCOMMON_OPT} -dcfuns -recursive -ieee=full -w=obs -thread_safe")
284+
# Options from Reference-LAPACK
285+
# Suppress compiler banner and summary
286+
set(FCOMMON_OPT "${FCOMMON_OPT} -quiet")
287+
# Disable other common warnings
288+
# -w=x77: Suppress warning messages about Fortran 77 features
289+
# -w=ques: Suppress warning messages about questionable usage
290+
# -w=unused: Suppress warning messages about unused variables
291+
set(FCOMMON_OPT "${FCOMMON_OPT} -w=x77 -w=ques -w=unused")
292+
if (USE_OPENMP)
293+
set(FCOMMON_OPT "${FCOMMON_OPT} -openmp")
294+
endif ()
295+
endif ()
296+
272297
# from the root Makefile - this is for lapack-netlib to compile the correct secnd file.
273298
if (${F_COMPILER} STREQUAL "GFORTRAN")
274299
set(TIMER "INT_ETIME")

cmake/lapack.cmake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1018,7 +1018,12 @@ foreach (LA_FILE ${LA_GEN_SRC})
10181018
endforeach ()
10191019

10201020
if (NOT C_LAPACK)
1021-
set_source_files_properties(${LA_SOURCES} PROPERTIES COMPILE_FLAGS "${LAPACK_FFLAGS}")
1021+
# The below line is duplicating Fortran flags but NAG has a few flags
1022+
# that cannot be specified twice. It's possible this is not needed for
1023+
# any compiler, but for safety, we only turn off for NAG
1024+
if (NOT ${F_COMPILER} STREQUAL "NAGFOR")
1025+
set_source_files_properties(${LA_SOURCES} PROPERTIES COMPILE_FLAGS "${LAPACK_FFLAGS}")
1026+
endif ()
10221027
if (${F_COMPILER} STREQUAL "GFORTRAN")
10231028
set_source_files_properties(${LA_SOURCES} PROPERTIES COMPILE_FLAGS "${LAPACK_FFLAGS} -fno-tree-vectorize")
10241029
endif()

cmake/system.cmake

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,8 @@ if (NEED_PIC)
382382
if (NOT NOFORTRAN)
383383
if (${F_COMPILER} STREQUAL "SUN")
384384
set(FCOMMON_OPT "${FCOMMON_OPT} -pic")
385+
elseif (${F_COMPILER} STREQUAL "NAGFOR")
386+
set(FCOMMON_OPT "${FCOMMON_OPT} -PIC")
385387
else ()
386388
set(FCOMMON_OPT "${FCOMMON_OPT} -fPIC")
387389
endif ()
@@ -640,17 +642,17 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
640642
endif ()
641643

642644
if (CMAKE_Fortran_COMPILER)
643-
if ("${F_COMPILER}" STREQUAL "NAG" OR "${F_COMPILER}" STREQUAL "CRAY" OR CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*")
644-
set(FILTER_FLAGS "-msse3;-mssse3;-msse4.1;-mavx;-mavx2,-mskylake-avx512")
645-
if (CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*")
646-
message(STATUS "removing fortran flags")
647-
set(FILTER_FLAGS "${FILTER_FLAGS};-m32;-m64")
645+
if ("${F_COMPILER}" STREQUAL "NAGFOR" OR "${F_COMPILER}" STREQUAL "CRAY" OR CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*")
646+
set(FILTER_FLAGS "-msse3;-mssse3;-msse4.1;-mavx;-mavx2,-mskylake-avx512")
647+
if (CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*")
648+
message(STATUS "removing fortran flags")
649+
set(FILTER_FLAGS "${FILTER_FLAGS};-m32;-m64")
650+
endif ()
651+
foreach (FILTER_FLAG ${FILTER_FLAGS})
652+
string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS})
653+
string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS})
654+
endforeach ()
648655
endif ()
649-
foreach (FILTER_FLAG ${FILTER_FLAGS})
650-
string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS})
651-
string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS})
652-
endforeach ()
653-
endif ()
654656
endif ()
655657

656658
if ("${F_COMPILER}" STREQUAL "GFORTRAN")

ctest/c_cblat1.f

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ PROGRAM CCBLAT1
4141
IF (PASS) THEN
4242
WRITE (NOUT,99998)
4343
ELSE
44-
CALL ABORT
44+
ERROR STOP
4545
END IF
4646
20 CONTINUE
4747
*
@@ -231,7 +231,7 @@ SUBROUTINE CHECK1(SFAC)
231231
CALL ITEST1(ICAMAXTEST(N,CX,INCX),ITRUE3(NP1))
232232
ELSE
233233
WRITE (NOUT,*) ' Shouldn''t be here in CHECK1'
234-
CALL ABORT
234+
ERROR STOP
235235
END IF
236236
*
237237
40 CONTINUE
@@ -515,7 +515,7 @@ SUBROUTINE CHECK2(SFAC)
515515
CALL CTEST(LENY,CY,CT10Y(1,KN,KI),CSIZE3,1.0E0)
516516
ELSE
517517
WRITE (NOUT,*) ' Shouldn''t be here in CHECK2'
518-
CALL ABORT
518+
ERROR STOP
519519
END IF
520520
*
521521
40 CONTINUE

ctest/c_cblat2.f

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ PROGRAM CBLAT2
1010
* 'CBLAT2.SNAP' NAME OF SNAPSHOT OUTPUT FILE
1111
* -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0)
1212
* F LOGICAL FLAG, T TO REWIND SNAPSHOT FILE AFTER EACH RECORD.
13-
* F LOGICAL FLAG, T TO CALL ABORT ON FAILURES.
13+
* F LOGICAL FLAG, T TO ERROR STOP ON FAILURES.
1414
* T LOGICAL FLAG, T TO TEST ERROR EXITS.
1515
* 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH
1616
* 16.0 THRESHOLD VALUE OF TEST RATIO
@@ -243,7 +243,7 @@ PROGRAM CBLAT2
243243
$ GO TO 70
244244
60 CONTINUE
245245
WRITE( NOUT, FMT = 9986 )SNAMET
246-
CALL ABORT
246+
ERROR STOP
247247
70 LTEST( I ) = LTESTT
248248
GO TO 50
249249
*
@@ -283,15 +283,15 @@ PROGRAM CBLAT2
283283
SAME = LCE( YY, YT, N )
284284
IF( .NOT.SAME.OR.ERR.NE.RZERO )THEN
285285
WRITE( NOUT, FMT = 9985 )TRANS, SAME, ERR
286-
CALL ABORT
286+
ERROR STOP
287287
END IF
288288
TRANS = 'T'
289289
CALL CMVCH( TRANS, N, N, ONE, A, NMAX, X, -1, ZERO, Y, -1, YT, G,
290290
$ YY, EPS, ERR, FATAL, NOUT, .TRUE. )
291291
SAME = LCE( YY, YT, N )
292292
IF( .NOT.SAME.OR.ERR.NE.RZERO )THEN
293293
WRITE( NOUT, FMT = 9985 )TRANS, SAME, ERR
294-
CALL ABORT
294+
ERROR STOP
295295
END IF
296296
*
297297
* Test each subroutine in turn.
@@ -419,7 +419,7 @@ PROGRAM CBLAT2
419419
$ CLOSE ( NTRA )
420420
CLOSE ( NOUT )
421421
IF( FATAL ) THEN
422-
CALL ABORT
422+
ERROR STOP
423423
END IF
424424
*
425425
10002 FORMAT( ' COLUMN-MAJOR AND ROW-MAJOR DATA LAYOUTS ARE TESTED' )

ctest/c_cblat3.f

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ PROGRAM CBLAT3
1010
* 'CBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE
1111
* -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0)
1212
* F LOGICAL FLAG, T TO REWIND SNAPSHOT FILE AFTER EACH RECORD.
13-
* F LOGICAL FLAG, T TO CALL ABORT ON FAILURES.
13+
* F LOGICAL FLAG, T TO ERROR STOP ON FAILURES.
1414
* T LOGICAL FLAG, T TO TEST ERROR EXITS.
1515
* 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH
1616
* 16.0 THRESHOLD VALUE OF TEST RATIO
@@ -194,7 +194,7 @@ PROGRAM CBLAT3
194194
$ GO TO 50
195195
40 CONTINUE
196196
WRITE( NOUT, FMT = 9990 )SNAMET
197-
CALL ABORT
197+
ERROR STOP
198198
50 LTEST( I ) = LTESTT
199199
GO TO 30
200200
*
@@ -237,7 +237,7 @@ PROGRAM CBLAT3
237237
SAME = LCE( CC, CT, N )
238238
IF( .NOT.SAME.OR.ERR.NE.RZERO )THEN
239239
WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR
240-
CALL ABORT
240+
ERROR STOP
241241
END IF
242242
TRANSB = 'C'
243243
CALL CMMCH( TRANSA, TRANSB, N, 1, N, ONE, AB, NMAX,
@@ -246,7 +246,7 @@ PROGRAM CBLAT3
246246
SAME = LCE( CC, CT, N )
247247
IF( .NOT.SAME.OR.ERR.NE.RZERO )THEN
248248
WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR
249-
CALL ABORT
249+
ERROR STOP
250250
END IF
251251
DO 120 J = 1, N
252252
AB( J, NMAX + 1 ) = N - J + 1
@@ -264,7 +264,7 @@ PROGRAM CBLAT3
264264
SAME = LCE( CC, CT, N )
265265
IF( .NOT.SAME.OR.ERR.NE.RZERO )THEN
266266
WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR
267-
CALL ABORT
267+
ERROR STOP
268268
END IF
269269
TRANSB = 'C'
270270
CALL CMMCH( TRANSA, TRANSB, N, 1, N, ONE, AB, NMAX,
@@ -273,7 +273,7 @@ PROGRAM CBLAT3
273273
SAME = LCE( CC, CT, N )
274274
IF( .NOT.SAME.OR.ERR.NE.RZERO )THEN
275275
WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR
276-
CALL ABORT
276+
ERROR STOP
277277
END IF
278278
*
279279
* Test each subroutine in turn.
@@ -386,7 +386,7 @@ PROGRAM CBLAT3
386386
$ CLOSE ( NTRA )
387387
CLOSE ( NOUT )
388388
IF( FATAL ) THEN
389-
CALL ABORT
389+
ERROR STOP
390390
END IF
391391
*
392392
10002 FORMAT( ' COLUMN-MAJOR AND ROW-MAJOR DATA LAYOUTS ARE TESTED' )

ctest/c_cblat3_3m.f

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ PROGRAM CBLAT3
1010
* 'CBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE
1111
* -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0)
1212
* F LOGICAL FLAG, T TO REWIND SNAPSHOT FILE AFTER EACH RECORD.
13-
* F LOGICAL FLAG, T TO CALL ABORT ON FAILURES.
13+
* F LOGICAL FLAG, T TO ERROR STOP ON FAILURES.
1414
* T LOGICAL FLAG, T TO TEST ERROR EXITS.
1515
* 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH
1616
* 16.0 THRESHOLD VALUE OF TEST RATIO
@@ -194,7 +194,7 @@ PROGRAM CBLAT3
194194
$ GO TO 50
195195
40 CONTINUE
196196
WRITE( NOUT, FMT = 9990 )SNAMET
197-
CALL ABORT
197+
ERROR STOP
198198
50 LTEST( I ) = LTESTT
199199
GO TO 30
200200
*
@@ -237,7 +237,7 @@ PROGRAM CBLAT3
237237
SAME = LCE( CC, CT, N )
238238
IF( .NOT.SAME.OR.ERR.NE.RZERO )THEN
239239
WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR
240-
CALL ABORT
240+
ERROR STOP
241241
END IF
242242
TRANSB = 'C'
243243
CALL CMMCH( TRANSA, TRANSB, N, 1, N, ONE, AB, NMAX,
@@ -246,7 +246,7 @@ PROGRAM CBLAT3
246246
SAME = LCE( CC, CT, N )
247247
IF( .NOT.SAME.OR.ERR.NE.RZERO )THEN
248248
WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR
249-
CALL ABORT
249+
ERROR STOP
250250
END IF
251251
DO 120 J = 1, N
252252
AB( J, NMAX + 1 ) = N - J + 1
@@ -264,7 +264,7 @@ PROGRAM CBLAT3
264264
SAME = LCE( CC, CT, N )
265265
IF( .NOT.SAME.OR.ERR.NE.RZERO )THEN
266266
WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR
267-
CALL ABORT
267+
ERROR STOP
268268
END IF
269269
TRANSB = 'C'
270270
CALL CMMCH( TRANSA, TRANSB, N, 1, N, ONE, AB, NMAX,
@@ -273,7 +273,7 @@ PROGRAM CBLAT3
273273
SAME = LCE( CC, CT, N )
274274
IF( .NOT.SAME.OR.ERR.NE.RZERO )THEN
275275
WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR
276-
CALL ABORT
276+
ERROR STOP
277277
END IF
278278
*
279279
* Test each subroutine in turn.
@@ -386,7 +386,7 @@ PROGRAM CBLAT3
386386
$ CLOSE ( NTRA )
387387
CLOSE ( NOUT )
388388
IF( FATAL ) THEN
389-
CALL ABORT
389+
ERROR STOP
390390
END IF
391391
*
392392
10002 FORMAT( ' COLUMN-MAJOR AND ROW-MAJOR DATA LAYOUTS ARE TESTED' )

ctest/c_dblat1.f

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ PROGRAM DCBLAT1
4747
IF (PASS) THEN
4848
WRITE (NOUT,99998)
4949
ELSE
50-
CALL ABORT
50+
ERROR STOP
5151
END IF
5252
20 CONTINUE
5353
*
@@ -139,7 +139,7 @@ SUBROUTINE CHECK0(SFAC)
139139
CALL STEST1(SS,DS1(K),DS1(K),SFAC)
140140
ELSE
141141
WRITE (NOUT,*) ' Shouldn''t be here in CHECK0'
142-
CALL ABORT
142+
ERROR STOP
143143
END IF
144144
20 CONTINUE
145145
40 RETURN
@@ -232,7 +232,7 @@ SUBROUTINE CHECK1(SFAC)
232232
CALL ITEST1(IDAMAXTEST(N,SX,INCX),ITRUE2(NP1))
233233
ELSE
234234
WRITE (NOUT,*) ' Shouldn''t be here in CHECK1'
235-
CALL ABORT
235+
ERROR STOP
236236
END IF
237237
60 CONTINUE
238238
80 CONTINUE
@@ -387,7 +387,7 @@ SUBROUTINE CHECK2(SFAC)
387387
CALL STEST(LENY,SY,STY,SSIZE2(1,1),1.0D0)
388388
ELSE
389389
WRITE (NOUT,*) ' Shouldn''t be here in CHECK2'
390-
CALL ABORT
390+
ERROR STOP
391391
END IF
392392
100 CONTINUE
393393
120 CONTINUE
@@ -475,7 +475,7 @@ SUBROUTINE CHECK3(SFAC)
475475
70 CONTINUE
476476
ELSE
477477
WRITE (NOUT,*) ' Shouldn''t be here in CHECK3'
478-
CALL ABORT
478+
ERROR STOP
479479
END IF
480480
40 CONTINUE
481481
60 CONTINUE

ctest/c_dblat2.f

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ PROGRAM DBLAT2
1010
* 'DBLAT2.SNAP' NAME OF SNAPSHOT OUTPUT FILE
1111
* -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0)
1212
* F LOGICAL FLAG, T TO REWIND SNAPSHOT FILE AFTER EACH RECORD.
13-
* F LOGICAL FLAG, T TO CALL ABORT ON FAILURES.
13+
* F LOGICAL FLAG, T TO ERROR STOP ON FAILURES.
1414
* T LOGICAL FLAG, T TO TEST ERROR EXITS.
1515
* 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH
1616
* 16.0 THRESHOLD VALUE OF TEST RATIO
@@ -239,7 +239,7 @@ PROGRAM DBLAT2
239239
$ GO TO 70
240240
60 CONTINUE
241241
WRITE( NOUT, FMT = 9986 )SNAMET
242-
CALL ABORT
242+
ERROR STOP
243243
70 LTEST( I ) = LTESTT
244244
GO TO 50
245245
*
@@ -279,15 +279,15 @@ PROGRAM DBLAT2
279279
SAME = LDE( YY, YT, N )
280280
IF( .NOT.SAME.OR.ERR.NE.ZERO )THEN
281281
WRITE( NOUT, FMT = 9985 )TRANS, SAME, ERR
282-
CALL ABORT
282+
ERROR STOP
283283
END IF
284284
TRANS = 'T'
285285
CALL DMVCH( TRANS, N, N, ONE, A, NMAX, X, -1, ZERO, Y, -1, YT, G,
286286
$ YY, EPS, ERR, FATAL, NOUT, .TRUE. )
287287
SAME = LDE( YY, YT, N )
288288
IF( .NOT.SAME.OR.ERR.NE.ZERO )THEN
289289
WRITE( NOUT, FMT = 9985 )TRANS, SAME, ERR
290-
CALL ABORT
290+
ERROR STOP
291291
END IF
292292
*
293293
* Test each subroutine in turn.
@@ -415,7 +415,7 @@ PROGRAM DBLAT2
415415
$ CLOSE ( NTRA )
416416
CLOSE ( NOUT )
417417
IF( FATAL ) THEN
418-
CALL ABORT
418+
ERROR STOP
419419
END IF
420420
*
421421
10002 FORMAT( ' COLUMN-MAJOR AND ROW-MAJOR DATA LAYOUTS ARE TESTED' )

0 commit comments

Comments
 (0)