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.
31 lines
1.1 KiB
Fortran
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
|