• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- Error.h -------------------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_TOOLS_LLVM_EXEGESIS_ERROR_H
10 #define LLVM_TOOLS_LLVM_EXEGESIS_ERROR_H
11 
12 #include "llvm/ADT/Twine.h"
13 #include "llvm/Support/Error.h"
14 
15 namespace llvm {
16 namespace exegesis {
17 
18 // A class representing failures that happened within llvm-exegesis, they are
19 // used to report informations to the user.
20 class Failure : public StringError {
21 public:
Failure(const Twine & S)22   Failure(const Twine &S) : StringError(S, inconvertibleErrorCode()) {}
23 };
24 
25 // A class representing failures that happened during clustering calculations.
26 class ClusteringError : public ErrorInfo<ClusteringError> {
27 public:
28   static char ID;
ClusteringError(const Twine & S)29   ClusteringError(const Twine &S) : Msg(S.str()) {}
30 
31   void log(raw_ostream &OS) const override;
32 
33   std::error_code convertToErrorCode() const override;
34 
35 private:
36   std::string Msg;
37 };
38 
39 // A class representing failures that happened during snippet execution.
40 // Instead of terminating the program crashes are logged into the output.
41 class SnippetCrash : public ErrorInfo<SnippetCrash> {
42 public:
43   static char ID;
SnippetCrash(const Twine & S)44   SnippetCrash(const Twine &S) : Msg(S.str()) {}
45 
46   void log(raw_ostream &OS) const override;
47 
48   std::error_code convertToErrorCode() const override;
49 
50 private:
51   std::string Msg;
52 };
53 
54 } // namespace exegesis
55 } // namespace llvm
56 
57 #endif
58