Skip to content

Commit b7908e3

Browse files
authored
[NFC][MC][CodeEmitterGen] Extract error reporting into a helper function (#159778)
Extract error reporting code emitted by CodeEmitterGen into MCCodeEmitter static members functions. Additionally, remove unused ErrorHandling.h header from several files.
1 parent 57e3f02 commit b7908e3

File tree

12 files changed

+33
-29
lines changed

12 files changed

+33
-29
lines changed

llvm/include/llvm/MC/MCCodeEmitter.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ namespace llvm {
1616
class MCFixup;
1717
class MCInst;
1818
class MCSubtargetInfo;
19-
class raw_ostream;
2019
template<typename T> class SmallVectorImpl;
2120

2221
/// MCCodeEmitter - Generic instruction encoding interface.
@@ -36,6 +35,12 @@ class LLVM_ABI MCCodeEmitter {
3635
virtual void encodeInstruction(const MCInst &Inst, SmallVectorImpl<char> &CB,
3736
SmallVectorImpl<MCFixup> &Fixups,
3837
const MCSubtargetInfo &STI) const = 0;
38+
39+
protected:
40+
// Helper function used by CodeEmitterGen for error reporting.
41+
[[noreturn]] static void reportUnsupportedInst(const MCInst &Inst);
42+
[[noreturn]] static void reportUnsupportedOperand(const MCInst &Inst,
43+
unsigned OpNum);
3944
};
4045

4146
} // end namespace llvm

llvm/lib/MC/MCCodeEmitter.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,28 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "llvm/MC/MCCodeEmitter.h"
10+
#include "llvm/MC/MCInst.h"
11+
#include "llvm/Support/ErrorHandling.h"
12+
#include "llvm/Support/raw_ostream.h"
13+
#include <string>
1014

1115
using namespace llvm;
1216

1317
MCCodeEmitter::MCCodeEmitter() = default;
1418

1519
MCCodeEmitter::~MCCodeEmitter() = default;
20+
21+
void MCCodeEmitter::reportUnsupportedInst(const MCInst &Inst) {
22+
std::string Msg;
23+
raw_string_ostream OS(Msg);
24+
OS << "Unsupported instruction : " << Inst;
25+
reportFatalInternalError(Msg.c_str());
26+
}
27+
28+
void MCCodeEmitter::reportUnsupportedOperand(const MCInst &Inst,
29+
unsigned OpNum) {
30+
std::string Msg;
31+
raw_string_ostream OS(Msg);
32+
OS << "Unsupported instruction operand : \"" << Inst << "\"[" << OpNum << "]";
33+
reportFatalInternalError(Msg.c_str());
34+
}

llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#include "llvm/MC/MCSubtargetInfo.h"
2626
#include "llvm/Support/Casting.h"
2727
#include "llvm/Support/EndianStream.h"
28-
#include "llvm/Support/ErrorHandling.h"
2928
#include <cassert>
3029
#include <cstdint>
3130

llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
#include "llvm/Support/Casting.h"
3131
#include "llvm/Support/Compiler.h"
3232
#include "llvm/Support/EndianStream.h"
33-
#include "llvm/Support/ErrorHandling.h"
3433
#include "llvm/Support/MathExtras.h"
3534
#include "llvm/TargetParser/Triple.h"
3635
#include <cassert>

llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#include "llvm/Support/Compiler.h"
2626
#include "llvm/Support/Debug.h"
2727
#include "llvm/Support/EndianStream.h"
28-
#include "llvm/Support/ErrorHandling.h"
2928
#include "llvm/Support/raw_ostream.h"
3029
#include <cassert>
3130
#include <cstddef>

llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
#include "llvm/MC/MCSubtargetInfo.h"
2929
#include "llvm/Support/Casting.h"
3030
#include "llvm/Support/EndianStream.h"
31-
#include "llvm/Support/ErrorHandling.h"
3231
#include "llvm/Support/raw_ostream.h"
3332
#include <cassert>
3433
#include <cstdint>

llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#include "llvm/MC/MCRegisterInfo.h"
2323
#include "llvm/Support/Casting.h"
2424
#include "llvm/Support/EndianStream.h"
25-
#include "llvm/Support/ErrorHandling.h"
2625
#include "llvm/Support/MathExtras.h"
2726
#include "llvm/TargetParser/Triple.h"
2827
#include <cassert>

llvm/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
#include "llvm/MC/MCSymbol.h"
2929
#include "llvm/Support/Casting.h"
3030
#include "llvm/Support/EndianStream.h"
31-
#include "llvm/Support/ErrorHandling.h"
3231
#include <cassert>
3332
#include <cstdint>
3433

llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
#include "llvm/MC/MCInstrInfo.h"
2222
#include "llvm/MC/MCRegisterInfo.h"
2323
#include "llvm/MC/MCSubtargetInfo.h"
24-
#include "llvm/Support/ErrorHandling.h"
2524
#include <cassert>
2625
#include <cstdint>
2726

llvm/lib/Target/VE/MCTargetDesc/VEMCCodeEmitter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#include "llvm/MC/MCSubtargetInfo.h"
2626
#include "llvm/MC/MCSymbol.h"
2727
#include "llvm/Support/EndianStream.h"
28-
#include "llvm/Support/ErrorHandling.h"
2928
#include <cassert>
3029
#include <cstdint>
3130

0 commit comments

Comments
 (0)