msmpi: Avoid Fortran 2008 idioms in Fortran 90 module

`TYPE(*), DIMENSION(..)` is a Fortran 2008 idiom. Using it in this module
causes issues downstream in Fortran 90 projects.
See, e.g.: https://github.com/ElmerCSC/elmerfem/pull/559

Use an extension of gfortran to mark polymorphic types in a way that is
compatible with Fortran 90.

Flang doesn't support polymorphic types currently. It fails when trying
to use them with an error like the following:
```
error: loc("C:/msys64/home/Markus/test_ignore_flang.f90":43:3): C:/M/B/src/flang-18.1.8.src/lib/Lower/CallInterface.cpp:949: not yet implemented: support for polymorphic types
LLVM ERROR: aborting
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: C:/msys64/clang64/bin/flang -fc1 -triple x86_64-w64-windows-gnu -emit-obj -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -target-cpu x86-64 -mframe-pointer=none -o test_ignore_flang.o -x f95-cpp-input test_ignore_flang.f90
```
Don't include subroutines with polymorphic types in the MPI module for
LLVM Flang for the time being.
This commit is contained in:
Markus Mützel
2024-09-03 13:22:51 +02:00
parent 02adbe6958
commit e73359f891
2 changed files with 307 additions and 146 deletions

View File

@@ -4,7 +4,7 @@ _realname=msmpi
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=10.1.1
pkgrel=12
pkgrel=13
pkgdesc="Microsoft MPI SDK (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64')
@@ -37,7 +37,7 @@ source=(
sha256sums=('17086fb1cf949251e4ae1549a06d292c58e468c822cca3ac1851e57e79d8ab20'
'baee3f18f38650e7182956baa0d3d8f8e5c26d8603ccee4871a4dbd160c13660'
'66185a4d47ca1a27df2340d3d8d28787e72db54b184f20430ed1e1d7c9244371'
'35db255509be337b02f6f00c1031c2ee5c5a1bb8780ee2b6ad5c7fced540bd8c'
'5fbdb4109bb5d0badf24c4aaeeaa98009d4a7eaf4e595ecfa4bc3e750176299f'
'edd76b5096bd31052be13e2d3306d931277d9c983b147ecf8aef0761d4ae8fb3'
'126bb8230844ad1de5f7e368c12008d2eea9831cb149b4a6952c775c08b294a2'
'fd18184993872fc4eaea825e85f974dca4b020598d838c424c6c112c2328cf2a'
@@ -86,7 +86,7 @@ build() {
# FORTRAN90 MPI modules
if [[ ${MINGW_PACKAGE_PREFIX} != *-clang-* || ${MSYSTEM} == CLANG64 ]]; then
bin/mpifort -c -Jinclude ${srcdir}/mpi.f90
bin/mpifort -c -Jinclude -cpp ${srcdir}/mpi.f90
rm mpi.o
fi
}

File diff suppressed because it is too large Load Diff