diff --git a/llvm/lib/ObjCopy/DXContainer/DXContainerObjcopy.cpp b/llvm/lib/ObjCopy/DXContainer/DXContainerObjcopy.cpp index 95ab3d944b8f8..9557f8f8beee2 100644 --- a/llvm/lib/ObjCopy/DXContainer/DXContainerObjcopy.cpp +++ b/llvm/lib/ObjCopy/DXContainer/DXContainerObjcopy.cpp @@ -23,35 +23,37 @@ using namespace object; static Error extractPartAsObject(StringRef PartName, StringRef OutFilename, StringRef InputFilename, const Object &Obj) { - for (const Part &P : Obj.Parts) - if (P.Name == PartName) { - Object PartObj; - PartObj.Header = Obj.Header; - PartObj.Parts.push_back({P.Name, P.Data}); - PartObj.recomputeHeader(); - - auto Write = [&OutFilename, &PartObj](raw_ostream &Out) -> Error { - DXContainerWriter Writer(PartObj, Out); - if (Error E = Writer.write()) - return createFileError(OutFilename, std::move(E)); - return Error::success(); - }; - - return writeToOutput(OutFilename, Write); - } - - return createFileError(InputFilename, object_error::parse_failed, - "part '%s' not found", PartName.str().c_str()); + auto *PartIter = llvm::find_if( + Obj.Parts, [&PartName](const Part &P) { return P.Name == PartName; }); + if (PartIter == Obj.Parts.end()) + return createFileError(InputFilename, + std::make_error_code(std::errc::invalid_argument), + "part '%s' not found", PartName.str().c_str()); + + Object PartObj; + PartObj.Header = Obj.Header; + PartObj.Parts.push_back({PartIter->Name, PartIter->Data}); + PartObj.recomputeHeader(); + + auto Write = [&OutFilename, &PartObj](raw_ostream &Out) -> Error { + DXContainerWriter Writer(PartObj, Out); + if (Error E = Writer.write()) + return createFileError(OutFilename, std::move(E)); + return Error::success(); + }; + + return writeToOutput(OutFilename, Write); } static Error dumpPartToFile(StringRef PartName, StringRef Filename, StringRef InputFilename, Object &Obj) { - auto PartIter = llvm::find_if( + auto *PartIter = llvm::find_if( Obj.Parts, [&PartName](const Part &P) { return P.Name == PartName; }); if (PartIter == Obj.Parts.end()) return createFileError(Filename, std::make_error_code(std::errc::invalid_argument), "part '%s' not found", PartName.str().c_str()); + ArrayRef Contents = PartIter->Data; // The DXContainer format is a bit odd because the part-specific headers are // contained inside the part data itself. For parts that contain LLVM bitcode @@ -80,16 +82,15 @@ static Error dumpPartToFile(StringRef PartName, StringRef Filename, static Error handleArgs(const CommonConfig &Config, Object &Obj) { for (StringRef Flag : Config.DumpSection) { - auto [SecName, FileName] = Flag.split("="); - if (Error E = dumpPartToFile(SecName, FileName, Config.InputFilename, Obj)) + auto [SectionName, FileName] = Flag.split("="); + if (Error E = + dumpPartToFile(SectionName, FileName, Config.InputFilename, Obj)) return E; } // Extract all sections before any modifications. for (StringRef Flag : Config.ExtractSection) { - StringRef SectionName; - StringRef FileName; - std::tie(SectionName, FileName) = Flag.split('='); + auto [SectionName, FileName] = Flag.split('='); if (Error E = extractPartAsObject(SectionName, FileName, Config.InputFilename, Obj)) return E; diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/copy-basic.test b/llvm/test/tools/llvm-objcopy/DXContainer/copy-basic.yaml similarity index 100% rename from llvm/test/tools/llvm-objcopy/DXContainer/copy-basic.test rename to llvm/test/tools/llvm-objcopy/DXContainer/copy-basic.yaml diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/copy-headers.test b/llvm/test/tools/llvm-objcopy/DXContainer/copy-headers.yaml similarity index 100% rename from llvm/test/tools/llvm-objcopy/DXContainer/copy-headers.test rename to llvm/test/tools/llvm-objcopy/DXContainer/copy-headers.yaml diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/extract-section-basic.test b/llvm/test/tools/llvm-objcopy/DXContainer/extract-section-basic.yaml similarity index 100% rename from llvm/test/tools/llvm-objcopy/DXContainer/extract-section-basic.test rename to llvm/test/tools/llvm-objcopy/DXContainer/extract-section-basic.yaml diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/extract-section-errs.test b/llvm/test/tools/llvm-objcopy/DXContainer/extract-section-errs.yaml similarity index 100% rename from llvm/test/tools/llvm-objcopy/DXContainer/extract-section-errs.test rename to llvm/test/tools/llvm-objcopy/DXContainer/extract-section-errs.yaml diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/extract-section-headers.test b/llvm/test/tools/llvm-objcopy/DXContainer/extract-section-headers.yaml similarity index 100% rename from llvm/test/tools/llvm-objcopy/DXContainer/extract-section-headers.test rename to llvm/test/tools/llvm-objcopy/DXContainer/extract-section-headers.yaml diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/only-section-headers.test b/llvm/test/tools/llvm-objcopy/DXContainer/only-section-headers.yaml similarity index 100% rename from llvm/test/tools/llvm-objcopy/DXContainer/only-section-headers.test rename to llvm/test/tools/llvm-objcopy/DXContainer/only-section-headers.yaml diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/reading-errs.test b/llvm/test/tools/llvm-objcopy/DXContainer/reading-errs.yaml similarity index 100% rename from llvm/test/tools/llvm-objcopy/DXContainer/reading-errs.test rename to llvm/test/tools/llvm-objcopy/DXContainer/reading-errs.yaml diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/remove-headers.test b/llvm/test/tools/llvm-objcopy/DXContainer/remove-headers.yaml similarity index 100% rename from llvm/test/tools/llvm-objcopy/DXContainer/remove-headers.test rename to llvm/test/tools/llvm-objcopy/DXContainer/remove-headers.yaml diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/remove-root-signature.test b/llvm/test/tools/llvm-objcopy/DXContainer/remove-root-signature.yaml similarity index 100% rename from llvm/test/tools/llvm-objcopy/DXContainer/remove-root-signature.test rename to llvm/test/tools/llvm-objcopy/DXContainer/remove-root-signature.yaml