[clang] 7af0eff - Revert "[OpenMP] Allow exceptions in target regions when offloading to GPUs"
via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 29 16:01:25 PDT 2023
Author: antonrydahl
Date: 2023-08-29T15:59:47-07:00
New Revision: 7af0eff5405bb88dc96c0b19892da0fbb44db433
URL: https://github.com/llvm/llvm-project/commit/7af0eff5405bb88dc96c0b19892da0fbb44db433
DIFF: https://github.com/llvm/llvm-project/commit/7af0eff5405bb88dc96c0b19892da0fbb44db433.diff
LOG: Revert "[OpenMP] Allow exceptions in target regions when offloading to GPUs"
This reverts commit 4c62e943b7178127861ca39163a0ed4caeb14943.
Added:
Modified:
clang/include/clang/Basic/DiagnosticCommonKinds.td
clang/include/clang/Basic/DiagnosticGroups.td
clang/lib/CodeGen/CGException.cpp
clang/lib/Sema/SemaExprCXX.cpp
clang/lib/Sema/SemaStmt.cpp
clang/test/OpenMP/nvptx_target_exceptions_messages.cpp
Removed:
clang/test/OpenMP/amdgpu_exceptions.cpp
clang/test/OpenMP/amdgpu_throw.cpp
clang/test/OpenMP/amdgpu_throw_trap.cpp
clang/test/OpenMP/amdgpu_try_catch.cpp
clang/test/OpenMP/nvptx_exceptions.cpp
clang/test/OpenMP/nvptx_throw.cpp
clang/test/OpenMP/nvptx_throw_trap.cpp
clang/test/OpenMP/nvptx_try_catch.cpp
clang/test/OpenMP/x86_target_exceptions.cpp
clang/test/OpenMP/x86_target_throw.cpp
clang/test/OpenMP/x86_target_try_catch.cpp
################################################################################
diff --git a/clang/include/clang/Basic/DiagnosticCommonKinds.td b/clang/include/clang/Basic/DiagnosticCommonKinds.td
index f2df283c74829f..cd72e254ea3b1a 100644
--- a/clang/include/clang/Basic/DiagnosticCommonKinds.td
+++ b/clang/include/clang/Basic/DiagnosticCommonKinds.td
@@ -425,13 +425,4 @@ def err_opencl_extension_and_feature_
diff ers : Error<
"options %0 and %1 are set to
diff erent values">;
def err_opencl_feature_requires : Error<
"feature %0 requires support of %1 feature">;
-
-def warn_throw_not_valid_on_target : Warning<
- "target '%0' does not support exception handling;"
- " 'throw' is assumed to be never reached">,
- InGroup<OpenMPTargetException>;
-def warn_try_not_valid_on_target : Warning<
- "target '%0' does not support exception handling;"
- " 'catch' block is ignored">,
- InGroup<OpenMPTargetException>;
}
diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td
index 00c458fb23e73e..d1aa51393ef357 100644
--- a/clang/include/clang/Basic/DiagnosticGroups.td
+++ b/clang/include/clang/Basic/DiagnosticGroups.td
@@ -1292,10 +1292,9 @@ def OpenMPTarget : DiagGroup<"openmp-target", [OpenMPMapping]>;
def OpenMPPre51Compat : DiagGroup<"pre-openmp-51-compat">;
def OpenMP51Ext : DiagGroup<"openmp-51-extensions">;
def OpenMPExtensions : DiagGroup<"openmp-extensions">;
-def OpenMPTargetException : DiagGroup<"openmp-target-exception">;
def OpenMP : DiagGroup<"openmp", [
SourceUsesOpenMP, OpenMPClauses, OpenMPLoopForm, OpenMPTarget,
- OpenMPMapping, OpenMP51Ext, OpenMPExtensions, OpenMPTargetException
+ OpenMPMapping, OpenMP51Ext, OpenMPExtensions
]>;
// Backend warnings.
diff --git a/clang/lib/CodeGen/CGException.cpp b/clang/lib/CodeGen/CGException.cpp
index 3996f2948349cb..9cb7d4c7731deb 100644
--- a/clang/lib/CodeGen/CGException.cpp
+++ b/clang/lib/CodeGen/CGException.cpp
@@ -440,15 +440,6 @@ llvm::Value *CodeGenFunction::getSelectorFromSlot() {
void CodeGenFunction::EmitCXXThrowExpr(const CXXThrowExpr *E,
bool KeepInsertionPoint) {
- // If the exception is being emitted in an OpenMP target region,
- // and the target is a GPU, we do not support exception handling.
- // Therefore, we emit a trap which will abort the program, and
- // prompt a warning indicating that a trap will be emitted.
- const llvm::Triple &T = Target.getTriple();
- if (CGM.getLangOpts().OpenMPIsTargetDevice && (T.isNVPTX() || T.isAMDGCN())) {
- EmitTrapCall(llvm::Intrinsic::trap);
- return;
- }
if (const Expr *SubExpr = E->getSubExpr()) {
QualType ThrowType = SubExpr->getType();
if (ThrowType->isObjCObjectPointerType()) {
@@ -618,16 +609,9 @@ void CodeGenFunction::EmitEndEHSpec(const Decl *D) {
}
void CodeGenFunction::EmitCXXTryStmt(const CXXTryStmt &S) {
- const llvm::Triple &T = Target.getTriple();
- // If we encounter a try statement on in an OpenMP target region offloaded to
- // a GPU, we treat it as a basic block.
- const bool IsTargetDevice =
- (CGM.getLangOpts().OpenMPIsTargetDevice && (T.isNVPTX() || T.isAMDGCN()));
- if (!IsTargetDevice)
- EnterCXXTryStmt(S);
+ EnterCXXTryStmt(S);
EmitStmt(S.getTryBlock());
- if (!IsTargetDevice)
- ExitCXXTryStmt(S);
+ ExitCXXTryStmt(S);
}
void CodeGenFunction::EnterCXXTryStmt(const CXXTryStmt &S, bool IsFnTryBlock) {
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 472fbdbdb5d0e6..a6e0a8abf81b9a 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -864,21 +864,13 @@ Sema::ActOnCXXThrow(Scope *S, SourceLocation OpLoc, Expr *Ex) {
ExprResult Sema::BuildCXXThrow(SourceLocation OpLoc, Expr *Ex,
bool IsThrownVarInScope) {
- const llvm::Triple &T = Context.getTargetInfo().getTriple();
- const bool IsOpenMPGPUTarget =
- getLangOpts().OpenMPIsTargetDevice && (T.isNVPTX() || T.isAMDGCN());
- // Don't report an error if 'throw' is used in system headers or in an OpenMP
- // target region compiled for a GPU architecture.
- if (!IsOpenMPGPUTarget && !getLangOpts().CXXExceptions &&
+ // Don't report an error if 'throw' is used in system headers.
+ if (!getLangOpts().CXXExceptions &&
!getSourceManager().isInSystemHeader(OpLoc) && !getLangOpts().CUDA) {
// Delay error emission for the OpenMP device code.
targetDiag(OpLoc, diag::err_exceptions_disabled) << "throw";
}
- // In OpenMP target regions, we replace 'throw' with a trap on GPU targets.
- if (IsOpenMPGPUTarget)
- targetDiag(OpLoc, diag::warn_throw_not_valid_on_target) << T.str();
-
// Exceptions aren't allowed in CUDA device code.
if (getLangOpts().CUDA)
CUDADiagIfDeviceCode(OpLoc, diag::err_cuda_device_exceptions)
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp
index 88ea3f1c3349dd..70a549938d080d 100644
--- a/clang/lib/Sema/SemaStmt.cpp
+++ b/clang/lib/Sema/SemaStmt.cpp
@@ -4471,22 +4471,13 @@ class CatchTypePublicBases {
/// handlers and creates a try statement from them.
StmtResult Sema::ActOnCXXTryBlock(SourceLocation TryLoc, Stmt *TryBlock,
ArrayRef<Stmt *> Handlers) {
- const llvm::Triple &T = Context.getTargetInfo().getTriple();
- const bool IsOpenMPGPUTarget =
- getLangOpts().OpenMPIsTargetDevice && (T.isNVPTX() || T.isAMDGCN());
- // Don't report an error if 'try' is used in system headers or in an OpenMP
- // target region compiled for a GPU architecture.
- if (!IsOpenMPGPUTarget && !getLangOpts().CXXExceptions &&
+ // Don't report an error if 'try' is used in system headers.
+ if (!getLangOpts().CXXExceptions &&
!getSourceManager().isInSystemHeader(TryLoc) && !getLangOpts().CUDA) {
// Delay error emission for the OpenMP device code.
targetDiag(TryLoc, diag::err_exceptions_disabled) << "try";
}
- // In OpenMP target regions, we assume that catch is never reached on GPU
- // targets.
- if (IsOpenMPGPUTarget)
- targetDiag(TryLoc, diag::warn_try_not_valid_on_target) << T.str();
-
// Exceptions aren't allowed in CUDA device code.
if (getLangOpts().CUDA)
CUDADiagIfDeviceCode(TryLoc, diag::err_cuda_device_exceptions)
diff --git a/clang/test/OpenMP/amdgpu_exceptions.cpp b/clang/test/OpenMP/amdgpu_exceptions.cpp
deleted file mode 100644
index d0104247de98ae..00000000000000
--- a/clang/test/OpenMP/amdgpu_exceptions.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// REQUIRES: amdgpu-registered-target
-
-/**
- * The first four lines test that a warning is produced when enabling
- * -Wopenmp-target-exception no matter what combination of -fexceptions and
- * -fcxx-exceptions are set, as we want OpenMP to always allow exceptions in the
- * target region but emit a warning instead.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-
-/**
- * The following four lines test that no warning is emitted when providing
- * -Wno-openmp-target-exception no matter the combination of -fexceptions and
- * -fcxx-exceptions.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-
-/**
- * Finally we should test that we only ignore exceptions in the OpenMP
- * offloading tool-chain
-*/
-
-// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa %s -emit-llvm -S -verify=noexceptions -o -
-
-// noexceptions-error at 37 {{cannot use 'try' with exceptions disabled}}
-// noexceptions-error at 38 {{cannot use 'throw' with exceptions disabled}}
-
-#pragma omp declare target
-int foo(void) {
- int error = -1;
- try { // with-warning {{target 'amdgcn-amd-amdhsa' does not support exception handling; 'catch' block is ignored}}
- throw 404; // with-warning {{target 'amdgcn-amd-amdhsa' does not support exception handling; 'throw' is assumed to be never reached}}
- }
- catch (int e){
- error = e;
- }
- return error;
-}
-#pragma omp end declare target
-// without-no-diagnostics
diff --git a/clang/test/OpenMP/amdgpu_throw.cpp b/clang/test/OpenMP/amdgpu_throw.cpp
deleted file mode 100644
index 9afa7261a511b2..00000000000000
--- a/clang/test/OpenMP/amdgpu_throw.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// REQUIRES: amdgpu-registered-target
-
-/**
- * The first four lines test that a warning is produced when enabling
- * -Wopenmp-target-exception no matter what combination of -fexceptions and
- * -fcxx-exceptions are set, as we want OpenMP to always allow exceptions in the
- * target region but emit a warning instead.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-
-/**
- * The following four lines test that no warning is emitted when providing
- * -Wno-openmp-target-exception no matter the combination of -fexceptions and
- * -fcxx-exceptions.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-
-/**
- * Finally we should test that we only ignore exceptions in the OpenMP
- * offloading tool-chain
-*/
-
-// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa %s -emit-llvm -S -verify=noexceptions -o -
-
-// noexceptions-error at 35 {{cannot use 'throw' with exceptions disabled}}
-
-#pragma omp declare target
-void foo(void) {
- throw 404; // with-warning {{target 'amdgcn-amd-amdhsa' does not support exception handling; 'throw' is assumed to be never reached}}
-}
-#pragma omp end declare target
-// without-no-diagnostics
diff --git a/clang/test/OpenMP/amdgpu_throw_trap.cpp b/clang/test/OpenMP/amdgpu_throw_trap.cpp
deleted file mode 100644
index f1152f78bec192..00000000000000
--- a/clang/test/OpenMP/amdgpu_throw_trap.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-// REQUIRES: amdgpu-registered-target
-
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device %s -emit-llvm -S -Wno-openmp-target-exception -o - | FileCheck -check-prefix=DEVICE %s
-// RUN: %clang_cc1 -fopenmp -triple x86_64-pc-linux-gnu -fopenmp-is-target-device -fcxx-exceptions %s -emit-llvm -S -Wno-openmp-target-exception -o - | FileCheck -check-prefix=HOST %s
-// DEVICE: s_trap
-// DEVICE-NOT: __cxa_throw
-// HOST: __cxa_throw
-// HOST-NOT: s_trap
-#pragma omp declare target
-void foo(void) {
- throw 404;
-}
-#pragma omp end declare target
diff --git a/clang/test/OpenMP/amdgpu_try_catch.cpp b/clang/test/OpenMP/amdgpu_try_catch.cpp
deleted file mode 100644
index b82656400270d5..00000000000000
--- a/clang/test/OpenMP/amdgpu_try_catch.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// REQUIRES: amdgpu-registered-target
-
-/**
- * The first four lines test that a warning is produced when enabling
- * -Wopenmp-target-exception no matter what combination of -fexceptions and
- * -fcxx-exceptions are set, as we want OpenMP to always allow exceptions in the
- * target region but emit a warning instead.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-
-/**
- * The following four lines test that no warning is emitted when providing
- * -Wno-openmp-target-exception no matter the combination of -fexceptions and
- * -fcxx-exceptions.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fcxx-exceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple amdgcn-amd-amdhsa -fopenmp-is-target-device %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-
-/**
- * Finally we should test that we only ignore exceptions in the OpenMP
- * offloading tool-chain
-*/
-
-// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa %s -emit-llvm -S -verify=noexceptions -o -
-
-// noexceptions-error at 36 {{cannot use 'try' with exceptions disabled}}
-
-#pragma omp declare target
-int foo(void) {
- int error = -1;
- try { // with-warning {{target 'amdgcn-amd-amdhsa' does not support exception handling; 'catch' block is ignored}}
- error = 1;
- }
- catch (int e){
- error = e;
- }
- return error;
-}
-#pragma omp end declare target
-// without-no-diagnostics
diff --git a/clang/test/OpenMP/nvptx_exceptions.cpp b/clang/test/OpenMP/nvptx_exceptions.cpp
deleted file mode 100644
index 89f62dc33e47a4..00000000000000
--- a/clang/test/OpenMP/nvptx_exceptions.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// REQUIRES: nvptx-registered-target
-
-/**
- * The first four lines test that a warning is produced when enabling
- * -Wopenmp-target-exception no matter what combination of -fexceptions and
- * -fcxx-exceptions are set, as we want OpenMP to always allow exceptions in the
- * target region but emit a warning instead.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-
-/**
- * The following four lines test that no warning is emitted when providing
- * -Wno-openmp-target-exception no matter the combination of -fexceptions and
- * -fcxx-exceptions.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-
-/**
- * Finally we should test that we only ignore exceptions in the OpenMP
- * offloading tool-chain
-*/
-
-// RUN: %clang_cc1 -triple nvptx64 %s -emit-llvm -S -verify=noexceptions -o -
-
-// noexceptions-error at 37 {{cannot use 'try' with exceptions disabled}}
-// noexceptions-error at 38 {{cannot use 'throw' with exceptions disabled}}
-
-#pragma omp declare target
-int foo(void) {
- int error = -1;
- try { // with-warning {{target 'nvptx64' does not support exception handling; 'catch' block is ignored}}
- throw 404; // with-warning {{target 'nvptx64' does not support exception handling; 'throw' is assumed to be never reached}}
- }
- catch (int e){
- error = e;
- }
- return error;
-}
-#pragma omp end declare target
-// without-no-diagnostics
diff --git a/clang/test/OpenMP/nvptx_target_exceptions_messages.cpp b/clang/test/OpenMP/nvptx_target_exceptions_messages.cpp
index 5d1d46cadff260..9f267f5606e2d7 100644
--- a/clang/test/OpenMP/nvptx_target_exceptions_messages.cpp
+++ b/clang/test/OpenMP/nvptx_target_exceptions_messages.cpp
@@ -34,7 +34,7 @@ T FA() {
#pragma omp declare target
struct S {
int a;
- S(int a) : a(a) { throw 1; } // expected-warning {{target 'nvptx64-unknown-unknown' does not support exception handling; 'throw' is assumed to be never reached}}
+ S(int a) : a(a) { throw 1; } // expected-error {{cannot use 'throw' with exceptions disabled}}
};
int foo() { return 0; }
@@ -57,7 +57,7 @@ int maini1() {
static long aaa = 23;
a = foo() + bar() + b + c + d + aa + aaa + FA<int>(); // expected-note{{called by 'maini1'}}
if (!a)
- throw "Error"; // expected-warning {{target 'nvptx64-unknown-unknown' does not support exception handling; 'throw' is assumed to be never reached}}
+ throw "Error"; // expected-error {{cannot use 'throw' with exceptions disabled}}
}
} catch(...) {
}
@@ -67,14 +67,14 @@ int maini1() {
int baz3() { return 2 + baz2(); }
int baz2() {
#pragma omp target
- try { // expected-warning {{target 'nvptx64-unknown-unknown' does not support exception handling; 'catch' block is ignored}}
+ try { // expected-error {{cannot use 'try' with exceptions disabled}}
++c;
} catch (...) {
}
return 2 + baz3();
}
-int baz1() { throw 1; } // expected-warning {{target 'nvptx64-unknown-unknown' does not support exception handling; 'throw' is assumed to be never reached}}
+int baz1() { throw 1; } // expected-error {{cannot use 'throw' with exceptions disabled}}
int foobar1();
int foobar2();
@@ -85,7 +85,7 @@ int (*B)() = &foobar2;
#pragma omp end declare target
int foobar1() { throw 1; }
-int foobar2() { throw 1; } // expected-warning {{target 'nvptx64-unknown-unknown' does not support exception handling; 'throw' is assumed to be never reached}}
+int foobar2() { throw 1; } // expected-error {{cannot use 'throw' with exceptions disabled}}
int foobar3();
@@ -95,7 +95,7 @@ int (*C)() = &foobar3; // expected-warning {{declaration is not declared in any
int (*D)() = C; // expected-note {{used here}}
// host-note at -1 {{used here}}
#pragma omp end declare target
-int foobar3() { throw 1; } // expected-warning {{target 'nvptx64-unknown-unknown' does not support exception handling; 'throw' is assumed to be never reached}}
+int foobar3() { throw 1; } // expected-error {{cannot use 'throw' with exceptions disabled}}
// Check no infinite recursion in deferred diagnostic emitter.
long E = (long)&E;
diff --git a/clang/test/OpenMP/nvptx_throw.cpp b/clang/test/OpenMP/nvptx_throw.cpp
deleted file mode 100644
index f17f75b401007b..00000000000000
--- a/clang/test/OpenMP/nvptx_throw.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// REQUIRES: nvptx-registered-target
-
-/**
- * The first four lines test that a warning is produced when enabling
- * -Wopenmp-target-exception no matter what combination of -fexceptions and
- * -fcxx-exceptions are set, as we want OpenMP to always allow exceptions in the
- * target region but emit a warning instead.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-
-/**
- * The following four lines test that no warning is emitted when providing
- * -Wno-openmp-target-exception no matter the combination of -fexceptions and
- * -fcxx-exceptions.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-
-/**
- * Finally we should test that we only ignore exceptions in the OpenMP
- * offloading tool-chain
-*/
-
-// RUN: %clang_cc1 -triple nvptx64 %s -emit-llvm -S -verify=noexceptions -o -
-
-// noexceptions-error at 35 {{cannot use 'throw' with exceptions disabled}}
-
-#pragma omp declare target
-void foo(void) {
- throw 404; // with-warning {{target 'nvptx64' does not support exception handling; 'throw' is assumed to be never reached}}
-}
-#pragma omp end declare target
-// without-no-diagnostics
diff --git a/clang/test/OpenMP/nvptx_throw_trap.cpp b/clang/test/OpenMP/nvptx_throw_trap.cpp
deleted file mode 100644
index c1c76c4e1b18c9..00000000000000
--- a/clang/test/OpenMP/nvptx_throw_trap.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-// REQUIRES: nvptx-registered-target
-
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device %s -emit-llvm -S -Wno-openmp-target-exception -o - | FileCheck -check-prefix=DEVICE %s
-// RUN: %clang_cc1 -fopenmp -triple x86_64-pc-linux-gnu -fopenmp-is-target-device -fcxx-exceptions %s -emit-llvm -S -Wno-openmp-target-exception -o - | FileCheck -check-prefix=HOST %s
-// DEVICE: trap;
-// DEVICE-NOT: __cxa_throw
-// HOST: __cxa_throw
-// HOST-NOT: trap;
-#pragma omp declare target
-void foo(void) {
- throw 404;
-}
-#pragma omp end declare target
diff --git a/clang/test/OpenMP/nvptx_try_catch.cpp b/clang/test/OpenMP/nvptx_try_catch.cpp
deleted file mode 100644
index c57aa91d851a4c..00000000000000
--- a/clang/test/OpenMP/nvptx_try_catch.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// REQUIRES: nvptx-registered-target
-
-/**
- * The first four lines test that a warning is produced when enabling
- * -Wopenmp-target-exception no matter what combination of -fexceptions and
- * -fcxx-exceptions are set, as we want OpenMP to always allow exceptions in the
- * target region but emit a warning instead.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device %s -emit-llvm -S -verify=with -Wopenmp-target-exception -analyze
-
-/**
- * The following four lines test that no warning is emitted when providing
- * -Wno-openmp-target-exception no matter the combination of -fexceptions and
- * -fcxx-exceptions.
-*/
-
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fcxx-exceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device -fexceptions %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-// RUN: %clang_cc1 -fopenmp -triple nvptx64 -fopenmp-is-target-device %s -emit-llvm -S -verify=without -Wno-openmp-target-exception -analyze
-
-/**
- * Finally we should test that we only ignore exceptions in the OpenMP
- * offloading tool-chain
-*/
-
-// RUN: %clang_cc1 -triple nvptx64 %s -emit-llvm -S -verify=noexceptions -o -
-
-// noexceptions-error at 36 {{cannot use 'try' with exceptions disabled}}
-
-#pragma omp declare target
-int foo(void) {
- int error = -1;
- try { // with-warning {{target 'nvptx64' does not support exception handling; 'catch' block is ignored}}
- error = 1;
- }
- catch (int e){
- error = e;
- }
- return error;
-}
-#pragma omp end declare target
-// without-no-diagnostics
diff --git a/clang/test/OpenMP/x86_target_exceptions.cpp b/clang/test/OpenMP/x86_target_exceptions.cpp
deleted file mode 100644
index effa76f0016dbe..00000000000000
--- a/clang/test/OpenMP/x86_target_exceptions.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// REQUIRES: x86-registered-target
-
-// RUN: %clang_cc1 -fopenmp -triple x86_64-pc-linux-gnu -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify -Wopenmp-target-exception -analyze
-#pragma omp declare target
-int foo(void) {
- int error = -1;
- try {
- throw 404;
- }
- catch (int e){
- error = e;
- }
- return error;
-}
-#pragma omp end declare target
-// expected-no-diagnostics
diff --git a/clang/test/OpenMP/x86_target_throw.cpp b/clang/test/OpenMP/x86_target_throw.cpp
deleted file mode 100644
index b55775287daa69..00000000000000
--- a/clang/test/OpenMP/x86_target_throw.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-// REQUIRES: x86-registered-target
-
-// RUN: %clang_cc1 -fopenmp -triple x86_64-pc-linux-gnu -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify -Wopenmp-target-exception -analyze
-#pragma omp declare target
-void foo(void) {
- throw 404;
-}
-#pragma omp end declare target
-// expected-no-diagnostics
diff --git a/clang/test/OpenMP/x86_target_try_catch.cpp b/clang/test/OpenMP/x86_target_try_catch.cpp
deleted file mode 100644
index f18e6aaf99f90a..00000000000000
--- a/clang/test/OpenMP/x86_target_try_catch.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// REQUIRES: x86-registered-target
-
-// RUN: %clang_cc1 -fopenmp -triple x86_64-pc-linux-gnu -fopenmp-is-target-device -fcxx-exceptions -fexceptions %s -emit-llvm -S -verify -Wopenmp-target-exception -analyze
-#pragma omp declare target
-int foo(void) {
- int error = -1;
- try {
- error = 1;
- }
- catch (int e){
- error = e;
- }
- return error;
-}
-#pragma omp end declare target
-// expected-no-diagnostics
More information about the cfe-commits
mailing list