1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
/*========================== begin_copyright_notice ============================
Copyright (C) 2020-2021 Intel Corporation
SPDX-License-Identifier: MIT
============================= end_copyright_notice ===========================*/
#ifndef VC_SUPPORT_STATUS_H
#define VC_SUPPORT_STATUS_H
#include "vc/Support/StatusCode.h"
#include <llvm/Support/Error.h>
#include <system_error>
namespace vc {
class DynLoadError final : public llvm::ErrorInfo<DynLoadError> {
public:
static char ID;
private:
std::string Message;
public:
DynLoadError(llvm::StringRef Msg) : Message(Msg.str()) {}
void log(llvm::raw_ostream &OS) const override;
std::error_code convertToErrorCode() const override {
return make_error_code(errc::dynamic_load_fail);
}
};
class SymbolLookupError final : public llvm::ErrorInfo<SymbolLookupError> {
public:
static char ID;
private:
std::string Library;
std::string Symbol;
public:
SymbolLookupError(llvm::StringRef Lib, llvm::StringRef Sym)
: Library(Lib.str()), Symbol(Sym.str()) {}
void log(llvm::raw_ostream &OS) const override;
std::error_code convertToErrorCode() const override {
return make_error_code(errc::symbol_not_found);
}
};
class BadSpirvError final : public llvm::ErrorInfo<BadSpirvError> {
public:
static char ID;
private:
std::string Message;
public:
BadSpirvError(llvm::StringRef Msg) : Message(Msg.str()) {}
void log(llvm::raw_ostream &OS) const override;
std::error_code convertToErrorCode() const override {
return make_error_code(errc::bad_spirv);
}
};
class BadBitcodeError final : public llvm::ErrorInfo<BadBitcodeError> {
public:
static char ID;
private:
std::string Message;
public:
BadBitcodeError(llvm::StringRef Msg) : Message(Msg.str()) {}
void log(llvm::raw_ostream &OS) const override;
std::error_code convertToErrorCode() const override {
return make_error_code(errc::bad_bitcode);
}
};
class InvalidModuleError final : public llvm::ErrorInfo<InvalidModuleError> {
public:
static char ID;
void log(llvm::raw_ostream &OS) const override;
std::error_code convertToErrorCode() const override {
return make_error_code(errc::invalid_module);
}
};
class TargetMachineError final : public llvm::ErrorInfo<TargetMachineError> {
public:
static char ID;
void log(llvm::raw_ostream &OS) const override;
std::error_code convertToErrorCode() const override {
return make_error_code(errc::target_machine_not_created);
}
};
class NotVCError final : public llvm::ErrorInfo<NotVCError> {
public:
static char ID;
void log(llvm::raw_ostream &OS) const override;
std::error_code convertToErrorCode() const override {
return make_error_code(errc::not_vc_codegen);
}
};
class OptionError final : public llvm::ErrorInfo<OptionError> {
public:
static char ID;
private:
std::string BadOption;
bool IsInternal;
public:
OptionError(llvm::StringRef BadOpt, bool IsInternal_)
: BadOption(BadOpt.str()), IsInternal(IsInternal_) {}
bool isInternal() const { return IsInternal; }
void log(llvm::raw_ostream &OS) const override;
std::error_code convertToErrorCode() const override {
const errc c =
IsInternal ? errc::invalid_internal_option : errc::invalid_api_option;
return make_error_code(c);
}
};
class OutputBinaryCreationError final
: public llvm::ErrorInfo<OutputBinaryCreationError> {
public:
static char ID;
private:
std::string Message;
public:
OutputBinaryCreationError(llvm::StringRef Msg) : Message{Msg.str()} {}
void log(llvm::raw_ostream &OS) const override;
std::error_code convertToErrorCode() const override {
return make_error_code(errc::output_not_created);
}
};
} // namespace vc
#endif
|