forked from OSchip/llvm-project
Convert lld Pass::runOnFile to llvm::Error from std::error_code. NFC.
Pretty mechanical change here. Just replacing all the std::error_code() with llvm::Error() and make_dynamic_error_code with make_error<GenericError> llvm-svn: 264917
This commit is contained in:
parent
a5a6378700
commit
c73c9d273d
|
@ -13,6 +13,7 @@
|
|||
#include "lld/Core/Atom.h"
|
||||
#include "lld/Core/File.h"
|
||||
#include "lld/Core/Reference.h"
|
||||
#include "llvm/Support/Error.h"
|
||||
#include <vector>
|
||||
|
||||
namespace lld {
|
||||
|
@ -33,7 +34,7 @@ public:
|
|||
virtual ~Pass() { }
|
||||
|
||||
/// Do the actual work of the Pass.
|
||||
virtual std::error_code perform(SimpleFile &mergedFile) = 0;
|
||||
virtual llvm::Error perform(SimpleFile &mergedFile) = 0;
|
||||
|
||||
protected:
|
||||
// Only subclassess can be instantiated.
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
#include "lld/Core/LLVM.h"
|
||||
#include "lld/Core/Pass.h"
|
||||
#include "llvm/Support/Error.h"
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
|
@ -31,11 +32,11 @@ public:
|
|||
_passes.push_back(std::move(pass));
|
||||
}
|
||||
|
||||
std::error_code runOnFile(SimpleFile &file) {
|
||||
llvm::Error runOnFile(SimpleFile &file) {
|
||||
for (std::unique_ptr<Pass> &pass : _passes)
|
||||
if (std::error_code EC = pass->perform(file))
|
||||
if (llvm::Error EC = pass->perform(file))
|
||||
return EC;
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "llvm/Option/Arg.h"
|
||||
#include "llvm/Option/Option.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Error.h"
|
||||
#include "llvm/Support/Format.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
@ -1183,9 +1184,12 @@ bool link(llvm::ArrayRef<const char *> args, raw_ostream &diagnostics) {
|
|||
ScopedTask passTask(getDefaultDomain(), "Passes");
|
||||
PassManager pm;
|
||||
ctx.addPasses(pm);
|
||||
if (std::error_code ec = pm.runOnFile(*merged)) {
|
||||
diagnostics << "Failed to write file '" << ctx.outputPath()
|
||||
<< "': " << ec.message() << "\n";
|
||||
if (auto ec = pm.runOnFile(*merged)) {
|
||||
// FIXME: This should be passed to logAllUnhandledErrors but it needs
|
||||
// to be passed a Twine instead of a string.
|
||||
diagnostics << "Failed to run passes on file '" << ctx.outputPath()
|
||||
<< "': ";
|
||||
logAllUnhandledErrors(std::move(ec), diagnostics, std::string());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -281,7 +281,7 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
std::error_code perform(SimpleFile &mergedFile) override {
|
||||
llvm::Error perform(SimpleFile &mergedFile) override {
|
||||
DEBUG(llvm::dbgs() << "MachO Compact Unwind pass\n");
|
||||
|
||||
std::map<const Atom *, CompactUnwindEntry> unwindLocs;
|
||||
|
@ -298,7 +298,7 @@ private:
|
|||
|
||||
// Skip rest of pass if no unwind info.
|
||||
if (unwindLocs.empty() && dwarfFrames.empty())
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
|
||||
// FIXME: if there are more than 4 personality functions then we need to
|
||||
// defer to DWARF info for the ones we don't put in the list. They should
|
||||
|
@ -353,7 +353,7 @@ private:
|
|||
return atom->contentType() == DefinedAtom::typeCompactUnwindInfo;
|
||||
});
|
||||
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
}
|
||||
|
||||
void collectCompactUnwindEntries(
|
||||
|
|
|
@ -98,7 +98,7 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
std::error_code perform(SimpleFile &mergedFile) override {
|
||||
llvm::Error perform(SimpleFile &mergedFile) override {
|
||||
// Scan all references in all atoms.
|
||||
for (const DefinedAtom *atom : mergedFile.defined()) {
|
||||
for (const Reference *ref : *atom) {
|
||||
|
@ -134,7 +134,7 @@ private:
|
|||
for (const GOTEntryAtom *slot : entries)
|
||||
mergedFile.addAtom(*slot);
|
||||
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
}
|
||||
|
||||
bool shouldReplaceTargetWithGOTAtom(const Atom *target, bool canBypassGOT) {
|
||||
|
|
|
@ -439,7 +439,7 @@ void LayoutPass::undecorate(SimpleFile::DefinedAtomRange &atomRange,
|
|||
}
|
||||
|
||||
/// Perform the actual pass
|
||||
std::error_code LayoutPass::perform(SimpleFile &mergedFile) {
|
||||
llvm::Error LayoutPass::perform(SimpleFile &mergedFile) {
|
||||
DEBUG(llvm::dbgs() << "******** Laying out atoms:\n");
|
||||
// sort the atoms
|
||||
ScopedTask task(getDefaultDomain(), "LayoutPass");
|
||||
|
@ -473,7 +473,7 @@ std::error_code LayoutPass::perform(SimpleFile &mergedFile) {
|
|||
});
|
||||
|
||||
DEBUG(llvm::dbgs() << "******** Finished laying out atoms\n");
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
}
|
||||
|
||||
void addLayoutPass(PassManager &pm, const MachOLinkingContext &ctx) {
|
||||
|
|
|
@ -66,7 +66,7 @@ public:
|
|||
LayoutPass(const Registry ®istry, SortOverride sorter);
|
||||
|
||||
/// Sorts atoms in mergedFile by content type then by command line order.
|
||||
std::error_code perform(SimpleFile &mergedFile) override;
|
||||
llvm::Error perform(SimpleFile &mergedFile) override;
|
||||
|
||||
~LayoutPass() override = default;
|
||||
|
||||
|
|
|
@ -99,11 +99,11 @@ public:
|
|||
_file.setOrdinal(_ctx.getNextOrdinalAndIncrement());
|
||||
}
|
||||
|
||||
std::error_code perform(SimpleFile &mergedFile) override {
|
||||
llvm::Error perform(SimpleFile &mergedFile) override {
|
||||
// Add the image info.
|
||||
mergedFile.addAtom(*getImageInfo());
|
||||
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -47,7 +47,7 @@ public:
|
|||
_file.setOrdinal(_ctx.getNextOrdinalAndIncrement());
|
||||
}
|
||||
|
||||
std::error_code perform(SimpleFile &mergedFile) override {
|
||||
llvm::Error perform(SimpleFile &mergedFile) override {
|
||||
// Scan all references in all atoms.
|
||||
for (const DefinedAtom *atom : mergedFile.defined()) {
|
||||
for (const Reference *ref : *atom) {
|
||||
|
@ -66,7 +66,7 @@ public:
|
|||
}
|
||||
// Exit early if no shims needed.
|
||||
if (_targetToShim.empty())
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
|
||||
// Sort shim atoms so the layout order is stable.
|
||||
std::vector<const DefinedAtom *> shims;
|
||||
|
@ -83,7 +83,7 @@ public:
|
|||
for (const DefinedAtom *shim : shims)
|
||||
mergedFile.addAtom(*shim);
|
||||
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -215,10 +215,10 @@ public:
|
|||
_file.setOrdinal(_ctx.getNextOrdinalAndIncrement());
|
||||
}
|
||||
|
||||
std::error_code perform(SimpleFile &mergedFile) override {
|
||||
llvm::Error perform(SimpleFile &mergedFile) override {
|
||||
// Skip this pass if output format uses text relocations instead of stubs.
|
||||
if (!this->noTextRelocs())
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
|
||||
// Scan all references in all atoms.
|
||||
for (const DefinedAtom *atom : mergedFile.defined()) {
|
||||
|
@ -245,7 +245,7 @@ public:
|
|||
|
||||
// Exit early if no stubs needed.
|
||||
if (_targetToUses.empty())
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
|
||||
// First add help-common and GOT slots used by lazy binding.
|
||||
SimpleDefinedAtom *helperCommonAtom =
|
||||
|
@ -323,7 +323,7 @@ public:
|
|||
lazyOffset += target->name().size() + 12;
|
||||
}
|
||||
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -72,7 +72,7 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
std::error_code perform(SimpleFile &mergedFile) override {
|
||||
llvm::Error perform(SimpleFile &mergedFile) override {
|
||||
bool allowTLV = _ctx.minOS("10.7", "1.0");
|
||||
|
||||
for (const DefinedAtom *atom : mergedFile.defined()) {
|
||||
|
@ -81,7 +81,7 @@ private:
|
|||
continue;
|
||||
|
||||
if (!allowTLV)
|
||||
return make_dynamic_error_code(
|
||||
return llvm::make_error<GenericError>(
|
||||
"targeted OS version does not support use of thread local "
|
||||
"variables in " + atom->name() + " for architecture " +
|
||||
_ctx.archName());
|
||||
|
@ -107,7 +107,7 @@ private:
|
|||
for (const TLVPEntryAtom *slot : entries)
|
||||
mergedFile.addAtom(*slot);
|
||||
|
||||
return std::error_code();
|
||||
return llvm::Error();
|
||||
}
|
||||
|
||||
const DefinedAtom *makeTLVPEntry(const Atom *target) {
|
||||
|
|
Loading…
Reference in New Issue