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

Reply via email to