[clang] Emit unsupported directive error (PR #70233)

Raymond Chang via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 25 10:36:26 PDT 2023


https://github.com/rkchang created https://github.com/llvm/llvm-project/pull/70233

Hello!

This PR addresses #63871. Clang should no longer crash and instead emits an error message. 
@shiltian is this what you had in mind for an error message? I think I followed everything in [1] but I did not add a unit test as this behavior should change in the future when dispatch is implemented. Also I did not find any existing unit tests that test for behavior like this.

Below is an example of the new error message:

```
test.c:6:5: error: cannot compile this OpenMP dispatch directive yet
    6 |     #pragma omp dispatch
      |     ^~~~~~~~~~~~~~~~~~~~
1 error generated.
```

Please let me know if there's anything you'd like me to change.

PS. This is my first open source contribution so if there's any etiquette or instructions I missed please let me know.

[1] https://llvm.org/docs/Contributing.html

>From 837e2882d23f998e166b7a85bf5339bab4884617 Mon Sep 17 00:00:00 2001
From: Raymond Chang <raymondkenchang at gmail.com>
Date: Thu, 12 Oct 2023 01:51:03 -0400
Subject: [PATCH] Emit unsupported directive error

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

diff --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp
index c719df1bfa05036..4eeaf9645a3eab8 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");



More information about the cfe-commits mailing list