[clang] 85b2e9c - [Clang][OpenMP] Emit unsupported directive error (#70233)

via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 24 13:28:36 PST 2023


Author: Raymond Chang
Date: 2023-11-24T16:28:32-05:00
New Revision: 85b2e9c02295a54100d41207cddce5908b8c513f

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

LOG: [Clang][OpenMP] Emit unsupported directive error (#70233)

Hello!

This PR fixes #63871. Clang should no longer crash and instead emits an
error message.

Below is an example of the new error message:

```
~/dev/fork-llvm-project omp_dispatch_unimpl
❯ ./install/bin/clang -fopenmp  -c -emit-llvm -Xclang -disable-llvm-passes test.c
test.c:6:5: error: cannot compile this OpenMP dispatch directive yet
    6 |     #pragma omp dispatch
      |     ^~~~~~~~~~~~~~~~~~~~
1 error generated.
```

Added: 
    clang/test/OpenMP/dispatch_unsupported.c

Modified: 
    clang/lib/CodeGen/CGStmt.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp
index a7100c8fae2eff9..a5cb80640641bb2 100644
--- a/clang/lib/CodeGen/CGStmt.cpp
+++ b/clang/lib/CodeGen/CGStmt.cpp
@@ -407,7 +407,7 @@ void CodeGenFunction::EmitStmt(const Stmt *S, ArrayRef<const Attr *> Attrs) {
     EmitOMPInteropDirective(cast<OMPInteropDirective>(*S));
     break;
   case Stmt::OMPDispatchDirectiveClass:
-    llvm_unreachable("Dispatch directive not supported yet.");
+    CGM.ErrorUnsupported(S, "OpenMP dispatch directive");
     break;
   case Stmt::OMPScopeDirectiveClass:
     llvm_unreachable("scope not supported with FE outlining");

diff  --git a/clang/test/OpenMP/dispatch_unsupported.c b/clang/test/OpenMP/dispatch_unsupported.c
new file mode 100644
index 000000000000000..92f555e4b414f4e
--- /dev/null
+++ b/clang/test/OpenMP/dispatch_unsupported.c
@@ -0,0 +1,7 @@
+// RUN: %clang_cc1 -emit-llvm -fopenmp -disable-llvm-passes %s -verify=expected
+
+// expected-error at +2 {{cannot compile this OpenMP dispatch directive yet}} 
+void a(){
+    #pragma omp dispatch
+    a();
+}


        


More information about the cfe-commits mailing list