[PATCH] D147097: [SYCL] Always set NoUnwind attribute for SYCL.
Harald van Dijk via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 29 06:57:45 PDT 2023
hvdijk updated this revision to Diff 509355.
hvdijk added a comment.
Forgot to update the call to `foo()` to call `bar()` instead.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D147097/new/
https://reviews.llvm.org/D147097
Files:
clang/lib/CodeGen/CGCall.cpp
clang/test/CodeGenSYCL/convergent.cpp
clang/test/CodeGenSYCL/function-attrs.cpp
Index: clang/test/CodeGenSYCL/function-attrs.cpp
===================================================================
--- clang/test/CodeGenSYCL/function-attrs.cpp
+++ clang/test/CodeGenSYCL/function-attrs.cpp
@@ -1,11 +1,18 @@
// RUN: %clang_cc1 -fsycl-is-device -emit-llvm -disable-llvm-passes \
-// RUN: -triple spir64 -emit-llvm %s -o - | FileCheck %s
+// RUN: -triple spir64 -fexceptions -emit-llvm %s -o - | FileCheck %s
-// CHECK-DAG: Function Attrs:
-// CHECK-DAG-SAME: convergent
-// CHECK-DAG-NEXT: define void @_Z3foov
-void foo() {
- int a = 1;
+int foo();
+
+// CHECK: define dso_local spir_func void @_Z3barv() [[BAR:#[0-9]+]]
+// CHECK: attributes [[BAR]] =
+// CHECK-SAME: convergent
+// CHECK-SAME: nounwind
+void bar() {
+ int a = foo();
+}
+
+int foo() {
+ return 1;
}
template <typename Name, typename Func>
@@ -14,6 +21,6 @@
}
int main() {
- kernel_single_task<class fake_kernel>([] { foo(); });
+ kernel_single_task<class fake_kernel>([] { bar(); });
return 0;
}
Index: clang/lib/CodeGen/CGCall.cpp
===================================================================
--- clang/lib/CodeGen/CGCall.cpp
+++ clang/lib/CodeGen/CGCall.cpp
@@ -1971,10 +1971,9 @@
}
// TODO: NoUnwind attribute should be added for other GPU modes HIP,
- // SYCL, OpenMP offload. AFAIK, none of them support exceptions in device
- // code.
+ // OpenMP offload. AFAIK, neither of them support exceptions in device code.
if ((getLangOpts().CUDA && getLangOpts().CUDAIsDevice) ||
- getLangOpts().OpenCL) {
+ getLangOpts().OpenCL || getLangOpts().SYCLIsDevice) {
FuncAttrs.addAttribute(llvm::Attribute::NoUnwind);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D147097.509355.patch
Type: text/x-patch
Size: 1663 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230329/3449566f/attachment.bin>
More information about the cfe-commits
mailing list