llvm-project/flang/test/Semantics/function-result-extent-max.f90
Andre Kuhlenschmidt 283c2e8d7c
[flang][semantics] fix issue with equality of min/max in module files (#145824)
Convert all binary calls of min/max to extremum operations, so that
extremums generated by the compiler compare equal, and user min/max
calls also compare equal.

Fixes #133646

Originally opened as #144162 but I accidentally pushed a merge in such a
way that a bunch of code owners got added to the review. This is just
rebasing the original work on main and fixing the failing tests.
2025-06-26 12:15:57 -07:00

31 lines
1.1 KiB
Fortran

!RUN: %flang_fc1 -cpp -DFILE1 -DFILE2 %s | FileCheck %s --allow-empty
!RUN: %flang_fc1 -cpp -DFILE1 %s | FileCheck %s --allow-empty && %flang_fc1 -cpp -DFILE2 %s | FileCheck %s --allow-empty
!CHECK-NOT: error
!CHECK-NOT: warning
#ifdef FILE1
module function_with_max_result_extent_module
implicit none
public :: function_with_max_result_extent
interface function_with_max_result_extent
pure module function function_with_max_result_extent(n) result(res)
integer, intent(in) :: n
integer :: res(max(n, 0))
end function function_with_max_result_extent
end interface function_with_max_result_extent
end module function_with_max_result_extent_module
#endif
#ifdef FILE2
submodule (function_with_max_result_extent_module) function_with_max_result_extent_submodule
implicit none
contains
pure module function function_with_max_result_extent(n) result(res)
integer, intent(in) :: n
integer :: res(max(n, 0))
res(:) = 0
end function function_with_max_result_extent
end submodule function_with_max_result_extent_submodule
#endif