================
@@ -2092,18 +2092,36 @@ Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder() {
 }
 
 Sema::SemaDiagnosticBuilder
-Sema::targetDiag(SourceLocation Loc, unsigned DiagID, const FunctionDecl *FD) {
+Sema::targetDiag(SourceLocation Loc, unsigned DiagID, FunctionDecl *FD) {
   FD = FD ? FD : getCurFunctionDecl();
-  if (LangOpts.OpenMP)
-    return LangOpts.OpenMPIsTargetDevice
-               ? OpenMP().diagIfOpenMPDeviceCode(Loc, DiagID, FD)
-               : OpenMP().diagIfOpenMPHostCode(Loc, DiagID, FD);
-  if (getLangOpts().CUDA)
-    return getLangOpts().CUDAIsDevice ? CUDA().DiagIfDeviceCode(Loc, DiagID)
-                                      : CUDA().DiagIfHostCode(Loc, DiagID);
-
-  if (getLangOpts().SYCLIsDevice)
+
+  if (LangOpts.OpenMP) {
+    if (LangOpts.OpenMPIsTargetDevice) {
+      return OpenMP().diagIfOpenMPDeviceCode(Loc, DiagID, FD);
+    }
+
+    SemaDiagnosticBuilder SDB = OpenMP().diagIfOpenMPHostCode(Loc, DiagID, FD);
+    if (SDB.isDeferred()) {
+      FD->setInvalidDecl();
+    }
+    return SDB;
+  }
+
+  if (getLangOpts().CUDA) {
+    if (getLangOpts().CUDAIsDevice) {
+      return CUDA().DiagIfDeviceCode(Loc, DiagID);
+    }
+
+    SemaDiagnosticBuilder SDB = CUDA().DiagIfHostCode(Loc, DiagID);
+    if (SDB.isDeferred()) {
+      FD->setInvalidDecl();
+    }
+    return SDB;
+  }
+
+  if (getLangOpts().SYCLIsDevice) {
     return SYCL().DiagIfDeviceCode(Loc, DiagID);
+  }
----------------
a-tarasyuk wrote:

@alexey-bataev removed. thanks

https://github.com/llvm/llvm-project/pull/147163
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to