Establish a set of optional usage warnings, and enable some only in "-pedantic" mode that, in our subjective experience with application codes, seem to issue frequently without indicating usage that really needs to be corrected. By default, with this patch the compiler should appear to be somewhat less persnickety but not less informative. Differential Revision: https://reviews.llvm.org/D150710
58 lines
2.9 KiB
Fortran
58 lines
2.9 KiB
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1 -Werror -pedantic
|
|
! This test is responsible for checking the fix for passing non-variables as
|
|
! actual arguments to subroutines/functions whose corresponding dummy argument
|
|
! expects a VOLATILE variable
|
|
! c.f. llvm-project GitHub issue #58973
|
|
|
|
module m
|
|
contains
|
|
subroutine vol_dum_int(my_int)
|
|
integer, volatile :: my_int
|
|
end subroutine vol_dum_int
|
|
|
|
subroutine vol_dum_real(my_real)
|
|
real, volatile :: my_real
|
|
end subroutine vol_dum_real
|
|
|
|
subroutine vol_dum_complex(my_complex)
|
|
complex, volatile :: my_complex
|
|
end subroutine vol_dum_complex
|
|
|
|
subroutine vol_dum_int_arr(my_int_arr)
|
|
integer, dimension(2,2), volatile :: my_int_arr
|
|
end subroutine vol_dum_int_arr
|
|
|
|
subroutine test_all_subprograms()
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_int=' is not a variable
|
|
call vol_dum_int(6)
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_int=' is not a variable
|
|
call vol_dum_int(6+12)
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_int=' is not a variable
|
|
call vol_dum_int(6*12)
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_int=' is not a variable
|
|
call vol_dum_int(-6/2)
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_real=' is not a variable
|
|
call vol_dum_real(3.141592653)
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_real=' is not a variable
|
|
call vol_dum_real(3.141592653 + (-10.6e-11))
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_real=' is not a variable
|
|
call vol_dum_real(3.141592653 * 10.6e-11)
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_real=' is not a variable
|
|
call vol_dum_real(3.141592653 / (-10.6e-11))
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_complex=' is not a variable
|
|
call vol_dum_complex((1., 3.2))
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_complex=' is not a variable
|
|
call vol_dum_complex((1., 3.2) + (-2., 3.14))
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_complex=' is not a variable
|
|
call vol_dum_complex((1., 3.2) * (-2., 3.14))
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_complex=' is not a variable
|
|
call vol_dum_complex((1., 3.2) / (-2., 3.14))
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_int_arr=' is not a variable
|
|
call vol_dum_int_arr((/ 1, 2, 3, 4 /))
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_int_arr=' is not a variable
|
|
call vol_dum_int_arr(reshape((/ 1, 2, 3, 4 /), (/ 2, 2/)))
|
|
!WARNING: actual argument associated with VOLATILE dummy argument 'my_int_arr=' is not a variable
|
|
call vol_dum_int_arr((/ 1, 2, 3, 4 /))
|
|
end subroutine test_all_subprograms
|
|
end module m
|