Peter Klausler b01ab5318e
[flang][CUDA] Apply intrinsic operator overrides (#151018)
Fortran's intrinsic numeric and relational operators can be overridden
with explicit interfaces so long as one or more of the dummy arguments
have the DEVICE attribute. Semantics already allows this without
complaint, but fails to replace the operations with the defined specific
procedure calls when analyzing expressions.
2025-07-30 11:41:40 -07:00

37 lines
968 B
Plaintext

! RUN: %python %S/test_errors.py %s %flang_fc1
module mod1
contains
attributes(global) subroutine sub1(adev)
real :: adev(10)
integer :: tid
tid = threadIdx%x
! Use to crash the compiler. Make sure we have the proper semantic error.
!ERROR: Actual argument for 'i=' has bad type 'REAL(4)'
adev(tid + 1) = scale(real(tid), 2.0)
end subroutine sub1
end module
subroutine sub1()
real, device :: adev(10), bdev(10)
real :: ahost(10)
!ERROR: More than one reference to a CUDA object on the right hand side of the assignment
ahost = adev + bdev
ahost = adev + adev
end subroutine
logical function compare_h(a,b)
!ERROR: Derived type 'h' not found
type(h) :: a, b
!ERROR: 'a' is not an object of derived type; it is implicitly typed
!ERROR: 'b' is not an object of derived type; it is implicitly typed
compare_h = (a%h .eq. b%h)
end
attributes(global) subroutine sub2()
if (threadIdx%x == 1) print *, "I'm number one"
end subroutine