[llvm] [ThinLTO] Don't convert functions to declarations if `force-import-all` is enabled (PR #134541)

Steven Wu via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 8 12:08:26 PDT 2025


================
@@ -1701,13 +1701,16 @@ void llvm::thinLTOFinalizeInModule(Module &TheModule,
     if (NewLinkage == GV.getLinkage())
       return;
 
+    bool ForceImportFunction = isa<Function>(GV) && ForceImportAll;
+
     // Check for a non-prevailing def that has interposable linkage
     // (e.g. non-odr weak or linkonce). In that case we can't simply
     // convert to available_externally, since it would lose the
     // interposable property and possibly get inlined. Simply drop
     // the definition in that case.
     if (GlobalValue::isAvailableExternallyLinkage(NewLinkage) &&
-        GlobalValue::isInterposableLinkage(GV.getLinkage())) {
+        GlobalValue::isInterposableLinkage(GV.getLinkage()) &&
+        !ForceImportFunction) {
----------------
cachemeifyoucan wrote:

The goes back to my question before, that is if AMD GPU should use other linkage than `weak`? If you want to allow inlining in all cases and interposability is not going to happen, maybe use `weak_odr`? The better fix is probably fix the IRGen to use `weak_odr` in the places of `weak`, rather than introduce a spec violation with this flag.

https://github.com/llvm/llvm-project/pull/134541


More information about the llvm-commits mailing list