This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG6fa35541a0af: [NFC][ThinLTO] Change command line passing to EmbedBitcodeInModule (authored by mtrofin).
Changed prior to commit: https://reviews.llvm.org/D90330?vs=301372&id=301387#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D90330/new/ https://reviews.llvm.org/D90330 Files: clang/lib/CodeGen/BackendUtil.cpp llvm/include/llvm/Bitcode/BitcodeWriter.h llvm/include/llvm/LTO/LTOBackend.h llvm/lib/Bitcode/Writer/BitcodeWriter.cpp llvm/lib/LTO/LTOBackend.cpp
Index: llvm/lib/LTO/LTOBackend.cpp =================================================================== --- llvm/lib/LTO/LTOBackend.cpp +++ llvm/lib/LTO/LTOBackend.cpp @@ -358,7 +358,7 @@ bool opt(const Config &Conf, TargetMachine *TM, unsigned Task, Module &Mod, bool IsThinLTO, ModuleSummaryIndex *ExportSummary, const ModuleSummaryIndex *ImportSummary, - const std::vector<uint8_t> *CmdArgs = nullptr) { + const std::vector<uint8_t> &CmdArgs) { if (EmbedBitcode == LTOBitcodeEmbedding::EmbedPostMergePreOptimized) { // FIXME: the motivation for capturing post-merge bitcode and command line // is replicating the compilation environment from bitcode, without needing @@ -368,13 +368,14 @@ // It's not very clear how the above motivation would map in the // linker-based case, so we currently don't plumb the command line args in // that case. - if (CmdArgs == nullptr) + if (CmdArgs.empty()) LLVM_DEBUG( dbgs() << "Post-(Thin)LTO merge bitcode embedding was requested, but " "command line arguments are not available"); llvm::EmbedBitcodeInModule(Mod, llvm::MemoryBufferRef(), /*EmbedBitcode*/ true, - /*EmbedMarker*/ false, CmdArgs); + /*EmbedMarker*/ false, + /*Cmdline*/ CmdArgs); } // FIXME: Plumb the combined index into the new pass manager. if (!Conf.OptPipeline.empty()) @@ -397,7 +398,8 @@ if (EmbedBitcode == LTOBitcodeEmbedding::EmbedOptimized) llvm::EmbedBitcodeInModule(Mod, llvm::MemoryBufferRef(), /*EmbedBitcode*/ true, - /*EmbedMarker*/ false, /*CmdArgs*/ nullptr); + /*EmbedMarker*/ false, + /*CmdArgs*/ std::vector<uint8_t>()); std::unique_ptr<ToolOutputFile> DwoOut; SmallString<1024> DwoFile(Conf.SplitDwarfOutput); @@ -522,7 +524,8 @@ if (!C.CodeGenOnly) { if (!opt(C, TM.get(), 0, *Mod, /*IsThinLTO=*/false, - /*ExportSummary=*/&CombinedIndex, /*ImportSummary=*/nullptr)) + /*ExportSummary=*/&CombinedIndex, /*ImportSummary=*/nullptr, + /*CmdArgs*/ std::vector<uint8_t>())) return Error::success(); } @@ -561,7 +564,7 @@ const FunctionImporter::ImportMapTy &ImportList, const GVSummaryMapTy &DefinedGlobals, MapVector<StringRef, BitcodeModule> &ModuleMap, - const std::vector<uint8_t> *CmdArgs) { + const std::vector<uint8_t> &CmdArgs) { Expected<const Target *> TOrErr = initAndLookupTarget(Conf, Mod); if (!TOrErr) return TOrErr.takeError(); Index: llvm/lib/Bitcode/Writer/BitcodeWriter.cpp =================================================================== --- llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -4819,7 +4819,7 @@ void llvm::EmbedBitcodeInModule(llvm::Module &M, llvm::MemoryBufferRef Buf, bool EmbedBitcode, bool EmbedMarker, - const std::vector<uint8_t> *CmdArgs) { + const std::vector<uint8_t> &CmdArgs) { // Save llvm.compiler.used and remove it. SmallVector<Constant *, 2> UsedArray; SmallPtrSet<GlobalValue *, 4> UsedGlobals; @@ -4878,8 +4878,8 @@ // Skip if only bitcode needs to be embedded. if (EmbedMarker) { // Embed command-line options. - ArrayRef<uint8_t> CmdData(const_cast<uint8_t *>(CmdArgs->data()), - CmdArgs->size()); + ArrayRef<uint8_t> CmdData(const_cast<uint8_t *>(CmdArgs.data()), + CmdArgs.size()); llvm::Constant *CmdConstant = llvm::ConstantDataArray::get(M.getContext(), CmdData); GV = new llvm::GlobalVariable(M, CmdConstant->getType(), true, Index: llvm/include/llvm/LTO/LTOBackend.h =================================================================== --- llvm/include/llvm/LTO/LTOBackend.h +++ llvm/include/llvm/LTO/LTOBackend.h @@ -45,7 +45,7 @@ const FunctionImporter::ImportMapTy &ImportList, const GVSummaryMapTy &DefinedGlobals, MapVector<StringRef, BitcodeModule> &ModuleMap, - const std::vector<uint8_t> *CmdArgs = nullptr); + const std::vector<uint8_t> &CmdArgs = std::vector<uint8_t>()); Error finalizeOptimizationRemarks( std::unique_ptr<ToolOutputFile> DiagOutputFile); Index: llvm/include/llvm/Bitcode/BitcodeWriter.h =================================================================== --- llvm/include/llvm/Bitcode/BitcodeWriter.h +++ llvm/include/llvm/Bitcode/BitcodeWriter.h @@ -152,14 +152,18 @@ const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex = nullptr); - /// Save a copy of the llvm IR as data in the __LLVM,__bitcode section. + /// If EmbedBitcode is set, save a copy of the llvm IR as data in the + /// __LLVM,__bitcode section (.llvmbc on non-MacOS). /// If available, pass the serialized module via the Buf parameter. If not, /// pass an empty (default-initialized) MemoryBufferRef, and the serialization /// will be handled by this API. The same behavior happens if the provided Buf /// is not bitcode (i.e. if it's invalid data or even textual LLVM assembly). + /// If EmbedMarker is set, the command line is also exported in + /// the corresponding section (__LLVM,_cmdline / .llvmcmd) - even if CmdArgs + /// were empty. void EmbedBitcodeInModule(Module &M, MemoryBufferRef Buf, bool EmbedBitcode, bool EmbedMarker, - const std::vector<uint8_t> *CmdArgs); + const std::vector<uint8_t> &CmdArgs); } // end namespace llvm Index: clang/lib/CodeGen/BackendUtil.cpp =================================================================== --- clang/lib/CodeGen/BackendUtil.cpp +++ clang/lib/CodeGen/BackendUtil.cpp @@ -1625,7 +1625,7 @@ if (Error E = thinBackend(Conf, -1, AddStream, *M, *CombinedIndex, ImportList, ModuleToDefinedGVSummaries[M->getModuleIdentifier()], - ModuleMap, &CGOpts.CmdArgs)) { + ModuleMap, CGOpts.CmdArgs)) { handleAllErrors(std::move(E), [&](ErrorInfoBase &EIB) { errs() << "Error running ThinLTO backend: " << EIB.message() << '\n'; }); @@ -1709,5 +1709,5 @@ llvm::EmbedBitcodeInModule( *M, Buf, CGOpts.getEmbedBitcode() != CodeGenOptions::Embed_Marker, CGOpts.getEmbedBitcode() != CodeGenOptions::Embed_Bitcode, - &CGOpts.CmdArgs); + CGOpts.CmdArgs); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits