Tests/FortranModules: add a test case for #25223

This commit is contained in:
Ben Boeckel
2023-09-18 19:58:49 -04:00
parent 45513c1a69
commit 619aca80ae
7 changed files with 81 additions and 0 deletions

View File

@@ -127,3 +127,4 @@ if(CMake_TEST_Fortran_SUBMODULES)
endif()
add_subdirectory(Issue25112)
add_subdirectory(Issue25223)

View File

@@ -0,0 +1,15 @@
# See https://gist.github.com/scivision/8e3070319f0577f7d3efcba863638cae
set(CMAKE_Fortran_MODULE_DIRECTORY "${PROJECT_BINARY_DIR}/include")
add_library(m1 OBJECT m1.f90)
add_library(m2 OBJECT m2.f90)
target_link_libraries(m2 PRIVATE m1)
add_library(m3 OBJECT m3.f90)
target_link_libraries(m3 PRIVATE m2)
add_library(m4 OBJECT m4.f90)
target_link_libraries(m4 PRIVATE m3)
add_executable(main25223 main.f90)
target_link_libraries(main25223 PRIVATE m4 m3 m2 m1)

View File

@@ -0,0 +1,11 @@
module m1
implicit none
contains
pure real function pi()
pi = 4*atan(1.)
end function
end module m1

View File

@@ -0,0 +1,13 @@
module m2
use m1, only : pi
implicit none
contains
pure real function twopi()
twopi = 2*pi()
end function
end module

View File

@@ -0,0 +1,13 @@
module m3
use m2, only : twopi
implicit none
contains
pure real function fourpi()
fourpi = 2*twopi()
end function
end module

View File

@@ -0,0 +1,13 @@
module m4
use m3, only : fourpi
implicit none
contains
pure real function halfpi()
halfpi = fourpi() / 8.0
end function
end module

View File

@@ -0,0 +1,15 @@
program main
use m1, only : pi
use m4, only : halfpi
implicit none
real :: rpi, rhalfpi
rpi = pi() / 2
rhalfpi = halfpi()
print '(a,ES15.8)', 'floating point precision loss: ', rpi - rhalfpi
end program