From 612931c4b0928cfd059a6affae6fc359f7f26d31 Mon Sep 17 00:00:00 2001 From: Valentin Clement Date: Tue, 17 Dec 2024 15:23:35 -0800 Subject: [PATCH] [flang][cuda] Relax host array check for cuda constant --- flang/lib/Semantics/check-cuda.cpp | 1 + flang/test/Semantics/cuf09.cuf | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/flang/lib/Semantics/check-cuda.cpp b/flang/lib/Semantics/check-cuda.cpp index 15ee5f32f69b1..bec3969c7a26b 100644 --- a/flang/lib/Semantics/check-cuda.cpp +++ b/flang/lib/Semantics/check-cuda.cpp @@ -114,6 +114,7 @@ struct FindHostArray (!details->cudaDataAttr() || (details->cudaDataAttr() && *details->cudaDataAttr() != common::CUDADataAttr::Device && + *details->cudaDataAttr() != common::CUDADataAttr::Constant && *details->cudaDataAttr() != common::CUDADataAttr::Managed && *details->cudaDataAttr() != common::CUDADataAttr::Shared && *details->cudaDataAttr() != common::CUDADataAttr::Unified))) { diff --git a/flang/test/Semantics/cuf09.cuf b/flang/test/Semantics/cuf09.cuf index 7452ee7cd7dc6..b45ca6d7d1a9d 100644 --- a/flang/test/Semantics/cuf09.cuf +++ b/flang/test/Semantics/cuf09.cuf @@ -1,6 +1,7 @@ ! RUN: %python %S/test_errors.py %s %flang_fc1 module m integer :: m(100) + integer, constant :: c(10) integer, parameter :: p(5) = [1,2,3,4,5] contains attributes(device) subroutine devsub @@ -42,6 +43,12 @@ module m i = threadIdx%x a(i) = s(10) ! ok, a is device and s is shared end subroutine + + attributes(global) subroutine cstarray(a) + integer, device :: a(10) + i = threadIdx%x + a(i) = c(10) ! ok, a is device and c is constant + end subroutine end program main