Author: Paul Kirth Date: 2025-06-26T16:04:39-07:00 New Revision: 030f3fe713fd8b264c6b3547832d480900840738
URL: https://github.com/llvm/llvm-project/commit/030f3fe713fd8b264c6b3547832d480900840738 DIFF: https://github.com/llvm/llvm-project/commit/030f3fe713fd8b264c6b3547832d480900840738.diff LOG: Revert "[llvm][EmbedBitcodePass] Prevent modifying the module with ThinLTO (#…" This reverts commit 55c7d5cdadc4dd0fab843992e0fb31ef7ea6fda4. Added: Modified: llvm/lib/Transforms/IPO/EmbedBitcodePass.cpp llvm/test/Transforms/EmbedBitcode/embed-wpd.ll Removed: ################################################################################ diff --git a/llvm/lib/Transforms/IPO/EmbedBitcodePass.cpp b/llvm/lib/Transforms/IPO/EmbedBitcodePass.cpp index 5e8b2a4e3d842..73f567734a91b 100644 --- a/llvm/lib/Transforms/IPO/EmbedBitcodePass.cpp +++ b/llvm/lib/Transforms/IPO/EmbedBitcodePass.cpp @@ -16,7 +16,6 @@ #include "llvm/Support/raw_ostream.h" #include "llvm/TargetParser/Triple.h" #include "llvm/Transforms/IPO/ThinLTOBitcodeWriter.h" -#include "llvm/Transforms/Utils/Cloning.h" #include "llvm/Transforms/Utils/ModuleUtils.h" #include <string> @@ -34,11 +33,8 @@ PreservedAnalyses EmbedBitcodePass::run(Module &M, ModuleAnalysisManager &AM) { std::string Data; raw_string_ostream OS(Data); - // Clone the module with Thin LTO, since ThinLTOBitcodeWriterPass changes - // vtable linkage that would break the non-lto object code for FatLTO. if (IsThinLTO) - ThinLTOBitcodeWriterPass(OS, /*ThinLinkOS=*/nullptr) - .run(*llvm::CloneModule(M), AM); + ThinLTOBitcodeWriterPass(OS, /*ThinLinkOS=*/nullptr).run(M, AM); else BitcodeWriterPass(OS, /*ShouldPreserveUseListOrder=*/false, EmitLTOSummary) .run(M, AM); diff --git a/llvm/test/Transforms/EmbedBitcode/embed-wpd.ll b/llvm/test/Transforms/EmbedBitcode/embed-wpd.ll index 54931be42b4eb..f1f7712f54039 100644 --- a/llvm/test/Transforms/EmbedBitcode/embed-wpd.ll +++ b/llvm/test/Transforms/EmbedBitcode/embed-wpd.ll @@ -1,13 +1,12 @@ ; RUN: opt --mtriple x86_64-unknown-linux-gnu < %s -passes="embed-bitcode<thinlto>" -S | FileCheck %s -; CHECK: $_ZTV3Foo = comdat any +; CHECK-NOT: $_ZTV3Foo = comdat any $_ZTV3Foo = comdat any $_ZTI3Foo = comdat any -;; ThinLTOBitcodeWriter will remove the vtable for Foo, and make it an external symbol -; CHECK: @_ZTV3Foo = linkonce_odr hidden unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr @_ZTI3Foo, ptr @_ZN3FooD2Ev, ptr @_ZN3FooD0Ev, ptr @_ZNKSt13runtime_error4whatEv] }, comdat, align 8, !type !0, !type !1, !type !2, !type !3, !type !4, !type !5 -; CHECK-NOT: @foo = external unnamed_addr constant { [5 x ptr] }, align 8 +; CHECK: @_ZTV3Foo = external hidden unnamed_addr constant { [5 x ptr] }, align 8 +; CHECK: @_ZTI3Foo = linkonce_odr hidden constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS3Foo, ptr @_ZTISt13runtime_error }, comdat, align 8 ; CHECK: @llvm.embedded.object = private constant {{.*}}, section ".llvm.lto", align 1 ; CHECK: @llvm.compiler.used = appending global [1 x ptr] [ptr @llvm.embedded.object], section "llvm.metadata" @_ZTV3Foo = linkonce_odr hidden unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr @_ZTI3Foo, ptr @_ZN3FooD2Ev, ptr @_ZN3FooD0Ev, ptr @_ZNKSt13runtime_error4whatEv] }, comdat, align 8, !type !0, !type !1, !type !2, !type !3, !type !4, !type !5 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits