diff --git a/lib/Target/Hexagon/MCTargetDesc/HexagonMCInst.cpp b/lib/Target/Hexagon/MCTargetDesc/HexagonMCInst.cpp index 30da7d1b02f..6fef41809d9 100644 --- a/lib/Target/Hexagon/MCTargetDesc/HexagonMCInst.cpp +++ b/lib/Target/Hexagon/MCTargetDesc/HexagonMCInst.cpp @@ -17,10 +17,9 @@ using namespace llvm; -std::unique_ptr HexagonMCInst::MCII; - -HexagonMCInst::HexagonMCInst() : MCInst() {} -HexagonMCInst::HexagonMCInst(MCInstrDesc const &mcid) : MCInst() {} +HexagonMCInst::HexagonMCInst() : MCII (createHexagonMCInstrInfo ()) {} +HexagonMCInst::HexagonMCInst(MCInstrDesc const &mcid) : + MCII (createHexagonMCInstrInfo ()){} void HexagonMCInst::AppendImplicitOperands(MCInst &MCI) { MCI.addOperand(MCOperand::CreateImm(0)); diff --git a/lib/Target/Hexagon/MCTargetDesc/HexagonMCInst.h b/lib/Target/Hexagon/MCTargetDesc/HexagonMCInst.h index 5c9a5bd86d4..5aaa59e0f7c 100644 --- a/lib/Target/Hexagon/MCTargetDesc/HexagonMCInst.h +++ b/lib/Target/Hexagon/MCTargetDesc/HexagonMCInst.h @@ -23,9 +23,8 @@ namespace llvm { class MCOperand; class HexagonMCInst : public MCInst { - friend void ::LLVMInitializeHexagonTargetMC(); // Used to access TSFlags - static std::unique_ptr MCII; + std::unique_ptr MCII; public: explicit HexagonMCInst(); diff --git a/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp b/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp index ae5a22bdb01..0c911fd6999 100644 --- a/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp +++ b/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp @@ -36,7 +36,7 @@ using namespace llvm; #define GET_REGINFO_MC_DESC #include "HexagonGenRegisterInfo.inc" -static MCInstrInfo *createHexagonMCInstrInfo() { +MCInstrInfo *llvm::createHexagonMCInstrInfo() { MCInstrInfo *X = new MCInstrInfo(); InitHexagonMCInstrInfo(X); return X; @@ -116,7 +116,6 @@ extern "C" void LLVMInitializeHexagonTargetMC() { // Register the MC instruction info. TargetRegistry::RegisterMCInstrInfo(TheHexagonTarget, createHexagonMCInstrInfo); - HexagonMCInst::MCII.reset (createHexagonMCInstrInfo()); // Register the MC register info. TargetRegistry::RegisterMCRegInfo(TheHexagonTarget, diff --git a/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h b/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h index 02fd5161d24..f074b6555ba 100644 --- a/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h +++ b/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h @@ -30,6 +30,8 @@ class raw_ostream; extern Target TheHexagonTarget; +MCInstrInfo *createHexagonMCInstrInfo(); + MCCodeEmitter *createHexagonMCCodeEmitter(MCInstrInfo const &MCII, MCRegisterInfo const &MRI, MCSubtargetInfo const &MST,