!RUN: %flang_fc1 -fdebug-unparse %s | FileCheck %s module rgbCUDA type rgb real v(3) end type interface assignment (=) module procedure rgbEqR3 end interface interface operator(*) module procedure rgbTimesR end interface contains attributes(device) subroutine rgbEqR3(rgbout, rin) type(rgb), intent(out) :: rgbout real(4), intent(in) :: rin(3) rgbout%v = rin end attributes(device) function rgbTimesR(rgbin, rin) result(res) type(rgb), intent(in) :: rgbin real(4), intent(in) :: rin real(4) :: res(3) res = rgbin%v * rin end attributes(device) function color() result(res) type(rgb) :: res real :: attenuation !CHECK: CALL rgbeqr3(res,[REAL(4)::0._4,0._4,0._4]) res = [0.0, 0.0, 0.0] attenuation = 0.5 !CHECK: CALL rgbeqr3(res,rgbtimesr(res,attenuation)) res = res * attenuation end end