https://github.com/pradt2 created 
https://github.com/llvm/llvm-project/pull/127439

This addresses issue #113094 

>From cfea7537eea19c4cff89d1e2a35dff2caff00106 Mon Sep 17 00:00:00 2001
From: pradt2 <12902844+pra...@users.noreply.github.com>
Date: Sun, 16 Feb 2025 00:22:42 -0800
Subject: [PATCH 1/3] [clang]: fix __neon_vector__type support when using
 OpenMP offloading

---
 clang/lib/Sema/SemaType.cpp | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp
index 1fa5239a597c8..5efcceddc78f9 100644
--- a/clang/lib/Sema/SemaType.cpp
+++ b/clang/lib/Sema/SemaType.cpp
@@ -8336,12 +8336,11 @@ static bool verifyValidIntegerConstantExpr(Sema &S, 
const ParsedAttr &Attr,
 /// match one of the standard Neon vector types.
 static void HandleNeonVectorTypeAttr(QualType &CurType, const ParsedAttr &Attr,
                                      Sema &S, VectorKind VecKind) {
-  bool IsTargetCUDAAndHostARM = false;
-  if (S.getLangOpts().CUDAIsDevice) {
-    const TargetInfo *AuxTI = S.getASTContext().getAuxTargetInfo();
-    IsTargetCUDAAndHostARM =
-        AuxTI && (AuxTI->getTriple().isAArch64() || 
AuxTI->getTriple().isARM());
-  }
+  const TargetInfo *AuxTI = S.getASTContext().getAuxTargetInfo();
+  bool IsArm = AuxTI->getTriple().isAArch64() || AuxTI->getTriple().isARM();
+
+  bool IsTargetCUDAAndHostARM = IsArm && S.getLangOpts().CUDAIsDevice;
+  bool IsTargetOpenMPDeviceAndHostARM = IsArm && 
S.getLangOpts().OpenMPIsTargetDevice;
 
   // Target must have NEON (or MVE, whose vectors are similar enough
   // not to need a separate attribute)
@@ -8376,7 +8375,7 @@ static void HandleNeonVectorTypeAttr(QualType &CurType, 
const ParsedAttr &Attr,
 
   // Only certain element types are supported for Neon vectors.
   if (!isPermittedNeonBaseType(CurType, VecKind, S) &&
-      !IsTargetCUDAAndHostARM) {
+      !IsTargetCUDAAndHostARM && !IsTargetOpenMPDeviceAndHostARM) {
     S.Diag(Attr.getLoc(), diag::err_attribute_invalid_vector_type) << CurType;
     Attr.setInvalid();
     return;

>From c50c5a9a6bc043037428630afbc160f8c580eb1d Mon Sep 17 00:00:00 2001
From: pradt2 <12902844+pra...@users.noreply.github.com>
Date: Sun, 16 Feb 2025 00:54:52 -0800
Subject: [PATCH 2/3] [clang]: fix __neon_vector__type support when using
 OpenMP offloading

---
 clang/lib/Sema/SemaType.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp
index 5efcceddc78f9..0c5cfdbba8d3d 100644
--- a/clang/lib/Sema/SemaType.cpp
+++ b/clang/lib/Sema/SemaType.cpp
@@ -8337,7 +8337,7 @@ static bool verifyValidIntegerConstantExpr(Sema &S, const 
ParsedAttr &Attr,
 static void HandleNeonVectorTypeAttr(QualType &CurType, const ParsedAttr &Attr,
                                      Sema &S, VectorKind VecKind) {
   const TargetInfo *AuxTI = S.getASTContext().getAuxTargetInfo();
-  bool IsArm = AuxTI->getTriple().isAArch64() || AuxTI->getTriple().isARM();
+  bool IsArm = AuxTI && (AuxTI->getTriple().isAArch64() || 
AuxTI->getTriple().isARM());
 
   bool IsTargetCUDAAndHostARM = IsArm && S.getLangOpts().CUDAIsDevice;
   bool IsTargetOpenMPDeviceAndHostARM = IsArm && 
S.getLangOpts().OpenMPIsTargetDevice;

>From 55e4d444572da286fdd4218178c6bc03c3e56b5b Mon Sep 17 00:00:00 2001
From: pradt2 <12902844+pra...@users.noreply.github.com>
Date: Sun, 16 Feb 2025 01:51:12 -0800
Subject: [PATCH 3/3] [clang]: fix __neon_vector__type support when using
 OpenMP offloading

---
 clang/test/Sema/bug113094.cpp | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 clang/test/Sema/bug113094.cpp

diff --git a/clang/test/Sema/bug113094.cpp b/clang/test/Sema/bug113094.cpp
new file mode 100644
index 0000000000000..0900db9efb041
--- /dev/null
+++ b/clang/test/Sema/bug113094.cpp
@@ -0,0 +1,6 @@
+// RUN: %clang -fopenmp --offload-arch=sm_90 -nocudalib -target 
aarch64-unknown-linux-gnu -c -Xclang -verify %s
+// REQUIRES: aarch64-registered-target
+
+// expected-no-diagnostics
+
+typedef __attribute__ ((__neon_vector_type__ (4))) float __f32x4_t;

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to