[llvm] r257181 - [ThinLTO] Use new in-place symbol changes for exporting module

Mehdi Amini via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 8 09:15:40 PST 2016


> On Jan 8, 2016, at 9:06 AM, Teresa Johnson via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> Author: tejohnson
> Date: Fri Jan  8 11:06:29 2016
> New Revision: 257181
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=257181&view=rev
> Log:
> [ThinLTO] Use new in-place symbol changes for exporting module
> 
> Due to the new in-place ThinLTO symbol handling support added in
> r257174, we now invoke renameModuleForThinLTO on the current
> module from within the FunctionImport pass.

While this is simpler, this make the FunctionImporter doing more than just importing. It couples two steps.
Might not be that important, but does not seem straightforward to me either.

— 
Mehdi




> 
> Additionally, renameModuleForThinLTO no longer needs to return the
> Module as it is performing the renaming in place on the one provided.
> 
> This commit will be immediately preceeded by a companion clang patch to
> remove its invocation of renameModuleForThinLTO.
> 
> Modified:
>    llvm/trunk/include/llvm/Linker/Linker.h
>    llvm/trunk/lib/Linker/LinkModules.cpp
>    llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp
> 
> Modified: llvm/trunk/include/llvm/Linker/Linker.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Linker/Linker.h?rev=257181&r1=257180&r2=257181&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Linker/Linker.h (original)
> +++ llvm/trunk/include/llvm/Linker/Linker.h Fri Jan  8 11:06:29 2016
> @@ -69,8 +69,7 @@ public:
> 
> /// Perform in-place global value handling on the given Module for
> /// exported local functions renamed and promoted for ThinLTO.
> -std::unique_ptr<Module> renameModuleForThinLTO(std::unique_ptr<Module> M,
> -                                               const FunctionInfoIndex *Index);
> +bool renameModuleForThinLTO(Module &M, const FunctionInfoIndex *Index);
> 
> } // End llvm namespace
> 
> 
> Modified: llvm/trunk/lib/Linker/LinkModules.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Linker/LinkModules.cpp?rev=257181&r1=257180&r2=257181&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Linker/LinkModules.cpp (original)
> +++ llvm/trunk/lib/Linker/LinkModules.cpp Fri Jan  8 11:06:29 2016
> @@ -863,13 +863,9 @@ bool Linker::linkModules(Module &Dest, s
>   return L.linkInModule(std::move(Src), Flags);
> }
> 
> -std::unique_ptr<Module>
> -llvm::renameModuleForThinLTO(std::unique_ptr<Module> M,
> -                             const FunctionInfoIndex *Index) {
> -  ThinLTOGlobalProcessing ThinLTOProcessing(*M, Index);
> -  if (ThinLTOProcessing.run())
> -    return nullptr;
> -  return M;
> +bool llvm::renameModuleForThinLTO(Module &M, const FunctionInfoIndex *Index) {
> +  ThinLTOGlobalProcessing ThinLTOProcessing(M, Index);
> +  return ThinLTOProcessing.run();
> }
> 
> //===----------------------------------------------------------------------===//
> 
> Modified: llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp?rev=257181&r1=257180&r2=257181&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp Fri Jan  8 11:06:29 2016
> @@ -413,14 +413,19 @@ public:
>       Index = IndexPtr.get();
>     }
> 
> +    // First we need to promote to global scope and rename any local values that
> +    // are potentially exported to other modules.
> +    if (renameModuleForThinLTO(M, Index)) {
> +      errs() << "Error renaming module\n";
> +      return false;
> +    }
> +
>     // Perform the import now.
>     auto ModuleLoader = [&M](StringRef Identifier) {
>       return loadFile(Identifier, M.getContext());
>     };
>     FunctionImporter Importer(*Index, ModuleLoader);
>     return Importer.importFunctions(M);
> -
> -    return false;
>   }
> };
> } // anonymous namespace
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list