@@ -257,6 +257,19 @@ bool BackendConsumer::LinkInModules(llvm::Module *M, bool ShouldLinkFiles) {
257
257
CurLinkModule = LM.Module .get ();
258
258
bool Err;
259
259
260
+ auto DoLink = [&](auto &Mod) {
261
+ if (LM.Internalize ) {
262
+ Err = Linker::linkModules (
263
+ *M, std::move (Mod), LM.LinkFlags ,
264
+ [](llvm::Module &M, const llvm::StringSet<> &GVS) {
265
+ internalizeModule (M, [&GVS](const llvm::GlobalValue &GV) {
266
+ return !GV.hasName () || (GVS.count (GV.getName ()) == 0 );
267
+ });
268
+ });
269
+ } else
270
+ Err = Linker::linkModules (*M, std::move (Mod), LM.LinkFlags );
271
+ };
272
+
260
273
// Create a Clone to move to the linker, which preserves the original
261
274
// linking modules, allowing them to be linked again in the future
262
275
if (ClRelinkBuiltinBitcodePostop) {
@@ -267,35 +280,11 @@ bool BackendConsumer::LinkInModules(llvm::Module *M, bool ShouldLinkFiles) {
267
280
268
281
std::unique_ptr<llvm::Module> Clone = llvm::CloneModule (*LM.Module );
269
282
270
- if (LM.Internalize ) {
271
- Err = Linker::linkModules (
272
- *M, std::move (Clone), LM.LinkFlags ,
273
- [](llvm::Module &M, const llvm::StringSet<> &GVS) {
274
- internalizeModule (M, [&GVS](const llvm::GlobalValue &GV) {
275
- return !GV.hasName () || (GVS.count (GV.getName ()) == 0 );
276
- });
277
- });
278
- } else
279
- Err = Linker::linkModules (*M, std::move (Clone), LM.LinkFlags );
280
-
281
- if (Err)
282
- return true ;
283
+ DoLink (Clone);
283
284
}
284
285
// Otherwise we can link (and clean up) the original modules
285
286
else {
286
- if (LM.Internalize ) {
287
- Err = Linker::linkModules (
288
- *M, std::move (LM.Module ), LM.LinkFlags ,
289
- [](llvm::Module &M, const llvm::StringSet<> &GVS) {
290
- internalizeModule (M, [&GVS](const llvm::GlobalValue &GV) {
291
- return !GV.hasName () || (GVS.count (GV.getName ()) == 0 );
292
- });
293
- });
294
- } else
295
- Err = Linker::linkModules (*M, std::move (LM.Module ), LM.LinkFlags );
296
-
297
- if (Err)
298
- return true ;
287
+ DoLink (LM.Module );
299
288
}
300
289
}
301
290
0 commit comments