diff options
| author | Rui Ueyama <ruiu@google.com> | 2014-12-10 00:33:00 +0000 |
|---|---|---|
| committer | Rui Ueyama <ruiu@google.com> | 2014-12-10 00:33:00 +0000 |
| commit | 00eb257f2e908e5ec81bbe00aeeb42ea4aa4fd79 (patch) | |
| tree | ecd3def36561bcc8ade871e50674266fa47c7611 /lld/lib/Driver/Driver.cpp | |
| parent | f3108ce3e8fa2f6440810512d53d84ed869569fb (diff) | |
| download | bcm5719-llvm-00eb257f2e908e5ec81bbe00aeeb42ea4aa4fd79.tar.gz bcm5719-llvm-00eb257f2e908e5ec81bbe00aeeb42ea4aa4fd79.zip | |
Re-commit r223330: Rewrite InputGraph's Group
llvm-svn: 223867
Diffstat (limited to 'lld/lib/Driver/Driver.cpp')
| -rw-r--r-- | lld/lib/Driver/Driver.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/lld/lib/Driver/Driver.cpp b/lld/lib/Driver/Driver.cpp index 148d1003218..b26ab251659 100644 --- a/lld/lib/Driver/Driver.cpp +++ b/lld/lib/Driver/Driver.cpp @@ -62,9 +62,6 @@ bool Driver::link(LinkingContext &context, raw_ostream &diagnostics) { if (std::error_code ec = ie->parse(context, stream)) { if (FileNode *fileNode = dyn_cast<FileNode>(ie.get())) stream << fileNode->errStr(ec) << "\n"; - else if (dyn_cast<Group>(ie.get())) - // FIXME: We need a better diagnostics here - stream << "Cannot parse group input element\n"; else llvm_unreachable("Unknown type of input element"); fail = true; @@ -83,21 +80,24 @@ bool Driver::link(LinkingContext &context, raw_ostream &diagnostics) { if (fail) return false; - std::unique_ptr<SimpleFileNode> fileNode( - new SimpleFileNode("Internal Files")); - InputGraph::FileVectorT internalFiles; context.createInternalFiles(internalFiles); - - if (internalFiles.size()) - fileNode->addFiles(std::move(internalFiles)); + for (auto i = internalFiles.rbegin(), e = internalFiles.rend(); i != e; ++i) { + context.getInputGraph().addInputElementFront( + llvm::make_unique<SimpleFileNode>("internal", std::move(*i))); + } // Give target a chance to add files. InputGraph::FileVectorT implicitFiles; context.createImplicitFiles(implicitFiles); - if (implicitFiles.size()) - fileNode->addFiles(std::move(implicitFiles)); - context.getInputGraph().addInputElementFront(std::move(fileNode)); + for (auto i = implicitFiles.rbegin(), e = implicitFiles.rend(); i != e; ++i) { + context.getInputGraph().addInputElementFront( + llvm::make_unique<SimpleFileNode>("implicit", std::move(*i))); + } + + // Give target a chance to sort the input files. + // Mach-O uses this chance to move all object files before library files. + context.maybeSortInputFiles(); // Do core linking. ScopedTask resolveTask(getDefaultDomain(), "Resolve"); |

