[flang-commits] [flang] [flang][cuda] Do not consider kernel result as host variable (PR #190626)
via flang-commits
flang-commits at lists.llvm.org
Mon Apr 6 09:24:28 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-semantics
Author: Valentin Clement (バレンタイン クレメン) (clementval)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/190626.diff
2 Files Affected:
- (modified) flang/lib/Semantics/check-cuda.cpp (+2-2)
- (modified) flang/test/Semantics/cuf25.cuf (+8)
``````````diff
diff --git a/flang/lib/Semantics/check-cuda.cpp b/flang/lib/Semantics/check-cuda.cpp
index eb91eb8bac81c..e45f9fb8265e5 100644
--- a/flang/lib/Semantics/check-cuda.cpp
+++ b/flang/lib/Semantics/check-cuda.cpp
@@ -138,13 +138,13 @@ struct FindHostArray
using Base::operator();
Result operator()(const evaluate::Component &x) const {
const Symbol &symbol{x.GetLastSymbol()};
- if (symbol.IsFuncResult()) {
+ const Symbol &baseSymbol{x.base().GetFirstSymbol()};
+ if (symbol.IsFuncResult() || baseSymbol.IsFuncResult()) {
return nullptr;
}
if (!IsHostArray(symbol)) {
return nullptr;
}
- const Symbol &baseSymbol{x.base().GetFirstSymbol()};
if (IsDummy(baseSymbol) && IsCUDADeviceContext(&baseSymbol.owner())) {
return nullptr;
}
diff --git a/flang/test/Semantics/cuf25.cuf b/flang/test/Semantics/cuf25.cuf
index 084ad3ccd4d1c..541a67a0542b1 100644
--- a/flang/test/Semantics/cuf25.cuf
+++ b/flang/test/Semantics/cuf25.cuf
@@ -4,6 +4,9 @@ module m
type bar
integer, allocatable :: m(:)
end type
+ type r1
+ real :: origin(3)
+ end type r1
contains
attributes(global) subroutine g1( a )
type(bar) :: a
@@ -11,4 +14,9 @@ contains
a%m(i) = i
return
end subroutine
+ attributes(device) function rayConstructor(origin, dir) result(r)
+ real :: origin(3), dir(3)
+ type(r1) :: r
+ r%origin = origin
+ end function
end module m
``````````
</details>
https://github.com/llvm/llvm-project/pull/190626
More information about the flang-commits
mailing list