summaryrefslogtreecommitdiffstats
path: root/lld/lib/Passes/RoundTripYAMLPass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lld/lib/Passes/RoundTripYAMLPass.cpp')
-rw-r--r--lld/lib/Passes/RoundTripYAMLPass.cpp8
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());
OpenPOWER on IntegriCloud