[flang-commits] [flang] fe5f6f5 - [flang][cuda] Allow pointer object with the managed attribute (#177304)

via flang-commits flang-commits at lists.llvm.org
Thu Jan 22 07:30:14 PST 2026


Author: Valentin Clement (バレンタイン クレメン)
Date: 2026-01-22T08:30:09-07:00
New Revision: fe5f6f5be884619318df02523f970dc7d9a7dc9d

URL: https://github.com/llvm/llvm-project/commit/fe5f6f5be884619318df02523f970dc7d9a7dc9d
DIFF: https://github.com/llvm/llvm-project/commit/fe5f6f5be884619318df02523f970dc7d9a7dc9d.diff

LOG: [flang][cuda] Allow pointer object with the managed attribute (#177304)

Added: 
    

Modified: 
    flang/lib/Semantics/check-declarations.cpp
    flang/test/Semantics/cuf03.cuf

Removed: 
    


################################################################################
diff  --git a/flang/lib/Semantics/check-declarations.cpp b/flang/lib/Semantics/check-declarations.cpp
index 684c1dcc98fa3..8a616f444b437 100644
--- a/flang/lib/Semantics/check-declarations.cpp
+++ b/flang/lib/Semantics/check-declarations.cpp
@@ -1188,10 +1188,10 @@ void CheckHelper::CheckObjectEntity(
       }
       break;
     case common::CUDADataAttr::Managed:
-      if (!IsAutomatic(symbol) && !IsAllocatable(symbol) &&
+      if (!IsAutomatic(symbol) && !IsAllocatableOrPointer(symbol) &&
           !details.isDummy() && !evaluate::IsExplicitShape(symbol)) {
         messages_.Say(
-            "Object '%s' with ATTRIBUTES(MANAGED) must also be allocatable, automatic, explicit shape, or a dummy argument"_err_en_US,
+            "Object '%s' with ATTRIBUTES(MANAGED) must also be allocatable, pointer, automatic, explicit shape, or a dummy argument"_err_en_US,
             symbol.name());
       }
       break;

diff  --git a/flang/test/Semantics/cuf03.cuf b/flang/test/Semantics/cuf03.cuf
index d2a189f419299..49b74e9a6e6a1 100644
--- a/flang/test/Semantics/cuf03.cuf
+++ b/flang/test/Semantics/cuf03.cuf
@@ -35,8 +35,7 @@ module m
   real, managed :: mm ! ok
   real, managed :: mmi = 1. ! ok
   real, managed, allocatable :: mml ! ok
-  !ERROR: Object 'mmp' with ATTRIBUTES(MANAGED) must also be allocatable, automatic, explicit shape, or a dummy argument
-  real, managed, pointer :: mmp(:)
+  real, managed, pointer :: mmp(:) ! ok
   real, managed, target :: mmt
   !WARNING: Object 'mp' with ATTRIBUTES(PINNED) should also be allocatable [-Wcuda-usage]
   real, pinned :: mp


        


More information about the flang-commits mailing list