[PATCH] D75223: [clang-offload-wrapper] Lower priority of __tgt_register_lib in favor of __tgt_register_requires
George Rokos via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 3 12:37:37 PST 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rGfca49fe8e34f: [clang-offload-wrapper] Lower priority of __tgt_register_lib in favor of… (authored by grokos).
Changed prior to commit:
https://reviews.llvm.org/D75223?vs=246870&id=247991#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D75223/new/
https://reviews.llvm.org/D75223
Files:
clang/test/Driver/clang-offload-wrapper.c
clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp
Index: clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp
===================================================================
--- clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp
+++ clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp
@@ -262,7 +262,12 @@
Builder.CreateRetVoid();
// Add this function to constructors.
- appendToGlobalCtors(M, Func, 0);
+ // Set priority to 1 so that __tgt_register_lib is executed AFTER
+ // __tgt_register_requires (we want to know what requirements have been
+ // asked for before we load a libomptarget plugin so that by the time the
+ // plugin is loaded it can report how many devices there are which can
+ // satisfy these requirements).
+ appendToGlobalCtors(M, Func, /*Priority*/ 1);
}
void createUnregisterFunction(GlobalVariable *BinDesc) {
@@ -283,7 +288,8 @@
Builder.CreateRetVoid();
// Add this function to global destructors.
- appendToGlobalDtors(M, Func, 0);
+ // Match priority of __tgt_register_lib
+ appendToGlobalDtors(M, Func, /*Priority*/ 1);
}
public:
Index: clang/test/Driver/clang-offload-wrapper.c
===================================================================
--- clang/test/Driver/clang-offload-wrapper.c
+++ clang/test/Driver/clang-offload-wrapper.c
@@ -39,8 +39,8 @@
// CHECK-IR: [[DESC:@.+]] = internal constant [[DESCTY]] { i32 1, [[IMAGETY]]* getelementptr inbounds ([1 x [[IMAGETY]]], [1 x [[IMAGETY]]]* [[IMAGES]], i64 0, i64 0), [[ENTTY]]* [[ENTBEGIN]], [[ENTTY]]* [[ENTEND]] }
-// CHECK-IR: @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* [[REGFN:@.+]], i8* null }]
-// CHECK-IR: @llvm.global_dtors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* [[UNREGFN:@.+]], i8* null }]
+// CHECK-IR: @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* [[REGFN:@.+]], i8* null }]
+// CHECK-IR: @llvm.global_dtors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* [[UNREGFN:@.+]], i8* null }]
// CHECK-IR: define internal void [[REGFN]]()
// CHECK-IR: call void @__tgt_register_lib([[DESCTY]]* [[DESC]])
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D75223.247991.patch
Type: text/x-patch
Size: 2270 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200303/12e2bcb8/attachment.bin>
More information about the cfe-commits
mailing list