Skip to content

Commit f6e98a0

Browse files
committed
Return LIT testing.
Rollback unittest to resolve CI. Clean leftovers and unify names.
1 parent ca63663 commit f6e98a0

File tree

4 files changed

+30
-20
lines changed

4 files changed

+30
-20
lines changed

clang/test/Driver/linker-wrapper-image.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -276,10 +276,17 @@
276276
// SYCL: %__sycl.tgt_device_image = type { i16, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
277277
// SYCL-NEXT: %__sycl.tgt_bin_desc = type { i16, i16, ptr, ptr, ptr }
278278

279-
// SYCL: @.sycl_offloading.device_images = internal unnamed_addr constant [0 x %__sycl.tgt_device_image] zeroinitializer
280-
// SYCL-NEXT: @.sycl_offloading.descriptor = internal constant %__sycl.tgt_bin_desc { i16 1, i16 0, ptr @.sycl_offloading.device_images, ptr null, ptr null }
281-
// SYCL-NEXT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr @sycl.descriptor_reg, ptr null }]
282-
// SYCL-NEXT: @llvm.global_dtors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr @sycl.descriptor_unreg, ptr null }]
279+
// SYCL: @.sycl_offloading.target.0 = internal unnamed_addr constant [1 x i8] zeroinitializer
280+
// SYCL-NEXT: @.sycl_offloading.opts.compile.0 = internal unnamed_addr constant [1 x i8] zeroinitializer
281+
// SYCL-NEXT: @.sycl_offloading.opts.link.0 = internal unnamed_addr constant [1 x i8] zeroinitializer
282+
// SYCL-NEXT: @.sycl_offloading.0.data = internal unnamed_addr constant [0 x i8] zeroinitializer, section ".llvm.offloading"
283+
// SYCL-NEXT: @.offloading.entry_name = internal unnamed_addr constant [5 x i8] c"stub\00", section ".llvm.rodata.offloading", align 1
284+
// SYCL-NEXT: @.offloading.entry.stub = weak constant %struct.__tgt_offload_entry { i64 0, i16 1, i16 8, i32 0, ptr null, ptr @.offloading.entry_name, i64 0, i64 0, ptr null }, section "llvm_offload_entries", align 8
285+
// SYCL-NEXT: @.sycl_offloading.entries_arr = internal constant [1 x %struct.__tgt_offload_entry] [%struct.__tgt_offload_entry { i64 0, i16 1, i16 8, i32 0, ptr null, ptr @.offloading.entry_name, i64 0, i64 0, ptr null }]
286+
// SYCL-NEXT: @.sycl_offloading.0.info = internal local_unnamed_addr constant [2 x i64] [i64 ptrtoint (ptr @.sycl_offloading.0.data to i64), i64 0], section ".tgtimg", align 16
287+
// SYCL-NEXT: @llvm.used = appending global [1 x ptr] [ptr @.sycl_offloading.0.info], section "llvm.metadata"
288+
// SYCL-NEXT: @.sycl_offloading.device_images = internal unnamed_addr constant [1 x %__sycl.tgt_device_image] [%__sycl.tgt_device_image { i16 3, i8 8, i8 0, ptr @.sycl_offloading.target.0, ptr @.sycl_offloading.opts.compile.0, ptr @.sycl_offloading.opts.link.0, ptr @.sycl_offloading.0.data, ptr @.sycl_offloading.0.data, ptr @.sycl_offloading.entries_arr, ptr getelementptr ([1 x %struct.__tgt_offload_entry], ptr @.sycl_offloading.entries_arr, i64 0, i64 1), ptr null, ptr null }]
289+
// SYCL-NEXT: @.sycl_offloading.descriptor = internal constant %__sycl.tgt_bin_desc { i16 1, i16 1, ptr @.sycl_offloading.device_images, ptr null, ptr null }
283290

284291
// SYCL: define internal void @sycl.descriptor_reg() section ".text.startup" {
285292
// SYCL-NEXT: entry:

clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -765,6 +765,19 @@ bundleOpenMP(ArrayRef<OffloadingImage> Images) {
765765
Expected<SmallVector<std::unique_ptr<MemoryBuffer>>>
766766
bundleSYCL(ArrayRef<OffloadingImage> Images) {
767767
SmallVector<std::unique_ptr<MemoryBuffer>> Buffers;
768+
if (DryRun) {
769+
// In dry-run mode there is an empty input which is insufficient for the
770+
// testing. Therefore, we return here a stub image.
771+
OffloadingImage Image;
772+
Image.TheImageKind = IMG_None;
773+
Image.TheOffloadKind = OffloadKind::OFK_SYCL;
774+
Image.StringData["symbols"] = "stub";
775+
Image.Image = MemoryBuffer::getMemBufferCopy("");
776+
SmallString<0> SerializedImage = OffloadBinary::write(Image);
777+
Buffers.emplace_back(MemoryBuffer::getMemBufferCopy(SerializedImage));
778+
return std::move(Buffers);
779+
}
780+
768781
for (const OffloadingImage &Image : Images) {
769782
// clang-sycl-linker packs outputs into one binary blob. Therefore, it is
770783
// passed to Offload Wrapper as is.

llvm/lib/Frontend/Offloading/OffloadWrapper.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -812,20 +812,19 @@ struct SYCLWrapper {
812812
std::unique_ptr<MemoryBuffer> MB = MemoryBuffer::getMemBuffer(
813813
Entries, /*BufferName*/ "", /*RequiresNullTerminator*/ false);
814814
for (line_iterator LI(*MB); !LI.is_at_eof(); ++LI) {
815-
GlobalVariable *GV = emitOffloadingEntry(
816-
M, /*Kind*/ OffloadKind::OFK_SYCL,
817-
Constant::getNullValue(PointerType::getUnqual(C)),
818-
/*Name*/ *LI, /*Size*/ 0,
819-
///*Name*/ "__sycl_offload_entry_name", /*Size*/ 0,
820-
/*Flags*/ 0, /*Data*/ 0);
815+
GlobalVariable *GV =
816+
emitOffloadingEntry(M, /*Kind*/ OffloadKind::OFK_SYCL,
817+
Constant::getNullValue(PointerType::getUnqual(C)),
818+
/*Name*/ *LI, /*Size*/ 0,
819+
/*Flags*/ 0, /*Data*/ 0);
821820
EntriesInits.push_back(GV->getInitializer());
822821
}
823822

824823
auto *Arr = ConstantArray::get(ArrayType::get(EntryTy, EntriesInits.size()),
825824
EntriesInits);
826825
auto *EntriesGV = new GlobalVariable(M, Arr->getType(), /*isConstant*/ true,
827826
GlobalVariable::InternalLinkage, Arr,
828-
"__sycl_offload_entries_arr");
827+
".sycl_offloading.entries_arr");
829828

830829
auto *EntriesB = ConstantExpr::getGetElementPtr(
831830
EntriesGV->getValueType(), EntriesGV, getSizetConstPair(0, 0));

llvm/unittests/Object/OffloadingTest.cpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,4 @@ TEST(OffloadingTest, checkOffloadingBinary) {
6464
// Ensure the size and alignment of the data is correct.
6565
EXPECT_TRUE(Binary.getSize() % OffloadBinary::getAlignment() == 0);
6666
EXPECT_TRUE(Binary.getSize() == BinaryBuffer->getBuffer().size());
67-
68-
OffloadBinary::OffloadingImage OI = Binary.getOffloadingImage();
69-
ASSERT_EQ(Data.TheImageKind, OI.TheImageKind);
70-
ASSERT_EQ(Data.TheOffloadKind, OI.TheOffloadKind);
71-
ASSERT_EQ(Data.Flags, OI.Flags);
72-
ASSERT_EQ(Data.Image->getBuffer(), OI.Image->getBuffer());
73-
for (const auto &KeyAndValue : Data.StringData)
74-
ASSERT_EQ(Data.StringData[KeyAndValue.first],
75-
OI.StringData[KeyAndValue.first]);
7667
}

0 commit comments

Comments
 (0)