[clang] dbe63e3 - [Clang][OpenMP] throw compilation error instead of crash in Stmt::OMPScopeDirectiveClass case (#77535) (#84135)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Jun 9 14:29:45 PDT 2024
Author: Puelloc
Date: 2024-06-09T14:29:41-07:00
New Revision: dbe63e3d4dc9e4a53c95a6f8fd24c071d0a603e2
URL: https://github.com/llvm/llvm-project/commit/dbe63e3d4dc9e4a53c95a6f8fd24c071d0a603e2
DIFF: https://github.com/llvm/llvm-project/commit/dbe63e3d4dc9e4a53c95a6f8fd24c071d0a603e2.diff
LOG: [Clang][OpenMP] throw compilation error instead of crash in Stmt::OMPScopeDirectiveClass case (#77535) (#84135)
Fix #77535, Change unstable assertion into compilation error, and add a
test for it.
Added:
clang/test/OpenMP/error_unsupport_feature.c
Modified:
clang/lib/CodeGen/CGStmt.cpp
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp
index 41ac511c52f51..39222c0e65353 100644
--- a/clang/lib/CodeGen/CGStmt.cpp
+++ b/clang/lib/CodeGen/CGStmt.cpp
@@ -414,7 +414,8 @@ void CodeGenFunction::EmitStmt(const Stmt *S, ArrayRef<const Attr *> Attrs) {
CGM.ErrorUnsupported(S, "OpenMP dispatch directive");
break;
case Stmt::OMPScopeDirectiveClass:
- llvm_unreachable("scope not supported with FE outlining");
+ CGM.ErrorUnsupported(S, "scope with FE outlining");
+ break;
case Stmt::OMPMaskedDirectiveClass:
EmitOMPMaskedDirective(cast<OMPMaskedDirective>(*S));
break;
diff --git a/clang/test/OpenMP/error_unsupport_feature.c b/clang/test/OpenMP/error_unsupport_feature.c
new file mode 100644
index 0000000000000..611a8b4639c44
--- /dev/null
+++ b/clang/test/OpenMP/error_unsupport_feature.c
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -emit-llvm -verify -fopenmp %s
+
+int main () {
+ int r = 0;
+#pragma omp scope reduction(+:r) // expected-error {{cannot compile this scope with FE outlining yet}}
+ r++;
+ return r;
+}
More information about the cfe-commits
mailing list