diff options
Diffstat (limited to 'lld/lib/Passes/RoundTripYAMLPass.cpp')
-rw-r--r-- | lld/lib/Passes/RoundTripYAMLPass.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lld/lib/Passes/RoundTripYAMLPass.cpp b/lld/lib/Passes/RoundTripYAMLPass.cpp index 13698c34584..f2c859a5743 100644 --- a/lld/lib/Passes/RoundTripYAMLPass.cpp +++ b/lld/lib/Passes/RoundTripYAMLPass.cpp @@ -45,8 +45,12 @@ void RoundTripYAMLPass::perform(std::unique_ptr<MutableFile> &mergedFile) { if (buff->getBufferSize() < MAX_YAML_FILE_SIZE) { std::unique_ptr<MemoryBuffer> mb(buff.take()); - _context.getYAMLReader().parseFile(mb, _yamlFile); - mergedFile.reset(new FileToMutable(_context, *_yamlFile[0].get())); + error_code ec = _context.registry().parseFile(mb, _yamlFile); + assert(!ec && "yaml reader not registered"); + File *objFile = _yamlFile[0].get(); + const File *obj = dyn_cast<const File>(objFile); + assert(obj && "yaml generated file is not an relocatable file"); + mergedFile.reset(new FileToMutable(_context, *obj)); } llvm::sys::fs::remove(tmpYAMLFile.str()); |