42 lines
1 KiB
Fortran
42 lines
1 KiB
Fortran
|
! Test that actual logical arguments convert to the right kind when it is non-default
|
||
|
! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s
|
||
|
! RUN: %flang_fc1 -fdebug-unparse -fdefault-integer-8 %s 2>&1 | FileCheck %s --check-prefixes CHECK-8
|
||
|
|
||
|
module m
|
||
|
interface foog
|
||
|
subroutine foo4(l)
|
||
|
logical(kind=4), intent(in) :: l
|
||
|
end subroutine foo4
|
||
|
|
||
|
subroutine foo8(l)
|
||
|
logical(kind=8), intent(in) :: l
|
||
|
end subroutine foo8
|
||
|
end interface foog
|
||
|
end module m
|
||
|
|
||
|
program main
|
||
|
use m
|
||
|
integer :: x(10), y
|
||
|
! CHECK: CALL foo(.true._4)
|
||
|
! CHECK-8: CALL foo(logical(.true._4,kind=8))
|
||
|
call foo(1 < 2)
|
||
|
! CHECK: CALL fooa(x>y)
|
||
|
! CHECK-8: CALL fooa(logical(x>y,kind=8))
|
||
|
call fooa(x > y)
|
||
|
|
||
|
! Ensure that calls to interfaces call the correct subroutine
|
||
|
! CHECK: CALL foo4(.true._4)
|
||
|
! CHECK-8: CALL foo8(.true._8)
|
||
|
call foog(.true.)
|
||
|
|
||
|
contains
|
||
|
subroutine foo(l)
|
||
|
logical :: l
|
||
|
end subroutine foo
|
||
|
|
||
|
subroutine fooa(l)
|
||
|
logical :: l(10)
|
||
|
end subroutine fooa
|
||
|
|
||
|
end program main
|