LLVMのバージョン12に向けてリポジトリではブランチが切られている。私の自作LLVMバックエンド分は現在LLVM11をベースとしているが、LLVM12に乗せ換えることによりどの程度の差分が発生するのかを確認した。
- LLVMのバックエンドターゲットの登録方法が変わっている。
add_llvm_component_group()
をCMakeLists.txt
に適用する必要がある。
diff --git a/llvm/lib/Target/MYRISCVX/CMakeLists.txt b/llvm/lib/Target/MYRISCVX/CMakeLists.txt index 97850d0e6044..b742f694c612 100644 --- a/llvm/lib/Target/MYRISCVX/CMakeLists.txt +++ b/llvm/lib/Target/MYRISCVX/CMakeLists.txt @@ -1,3 +1,5 @@ +add_llvm_component_group(MYRISCVX)
- サブターゲットとして、CPU以外にTuneCPUという引数を追加する必要がある。これがどういう意味なのかはちゃんと調べていない。
diff --git a/llvm/lib/Target/MYRISCVX/MCTargetDesc/MYRISCVXMCTargetDesc.cpp b/llvm/lib/Target/MYRISCVX/MCTargetDesc/MYRISCVXMCTargetDesc.cpp index c4dc6e7cbfd5..f924d3d52a8d 100644 --- a/llvm/lib/Target/MYRISCVX/MCTargetDesc/MYRISCVXMCTargetDesc.cpp +++ b/llvm/lib/Target/MYRISCVX/MCTargetDesc/MYRISCVXMCTargetDesc.cpp @@ -65,9 +65,10 @@ static MCRegisterInfo *createMYRISCVXMCRegisterInfo(const Triple &TT) { // @{ MYRISCVXMC_TargetDesc_cpp_createMYRISCVXMCSubtargetInfo static MCSubtargetInfo *createMYRISCVXMCSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS) { + std::string CPUName = std::string(CPU); if (CPU.empty()) CPU = TT.isArch64Bit() ? "cpu-rv64" : "cpu-rv32"; - return createMYRISCVXMCSubtargetInfoImpl(TT, CPU, FS); + return createMYRISCVXMCSubtargetInfoImpl(TT, CPU, /*TuneCPU*/ CPUName, FS); } // @} MYRISCVXMC_TargetDesc_cpp_createMYRISCVXMCSubtargetInfo
-MYRISCVXSubtarget::MYRISCVXSubtarget(const Triple &TT, StringRef &CPU, +MYRISCVXSubtarget::MYRISCVXSubtarget(const Triple &TT, StringRef &CPU, StringRef TuneCPU, StringRef &FS, const MYRISCVXTargetMachine &_TM) : - MYRISCVXGenSubtargetInfo(TT, CPU, FS), + MYRISCVXGenSubtargetInfo(TT, CPU, TuneCPU, FS), TM(_TM), TargetTriple(TT), TSInfo(), InstrInfo(), - FrameLowering(initializeSubtargetDependencies(CPU, FS, TM)), + FrameLowering(initializeSubtargetDependencies(CPU, TuneCPU, FS, TM)), TLInfo(TM, *this), RegInfo(*this, getHwMode()) { }
Ctx.createNameTempSymbol()
のAPIの仕様が変わっている。
diff --git a/llvm/lib/Target/MYRISCVX/AsmParser/MYRISCVXAsmParser.cpp b/llvm/lib/Target/MYRISCVX/AsmParser/MYRISCVXAsmParser.cpp index 9af4443ecf64..74f9852950b2 100644 --- a/llvm/lib/Target/MYRISCVX/AsmParser/MYRISCVXAsmParser.cpp +++ b/llvm/lib/Target/MYRISCVX/AsmParser/MYRISCVXAsmParser.cpp @@ -447,8 +447,7 @@ void MYRISCVXAsmParser::expandPseudoLLA(MCInst &Inst, SMLoc IDLoc, MCContext &Ctx = getContext(); - MCSymbol *TmpLabel = Ctx.createTempSymbol( - "pcrel_hi", /* AlwaysAddSuffix */ true, /* CanBeUnnamed */ false); + MCSymbol *TmpLabel = Ctx.createNamedTempSymbol("pcrel_hi"); Out.emitLabel(TmpLabel); MCOperand DestReg = Inst.getOperand(0); @@ -494,8 +493,7 @@ void MYRISCVXAsmParser::expandPseudoLA(MCInst &Inst, SMLoc IDLoc, if (getContext().getObjectFileInfo()->isPositionIndependent()) { unsigned GOTLoadOpcode = isRV64() ? MYRISCVX::LD : MYRISCVX::LW; - MCSymbol *TmpLabel = Ctx.createTempSymbol( - "pcrel_hi", /* AlwaysAddSuffix */ true, /* CanBeUnnamed */ false); + MCSymbol *TmpLabel = Ctx.createNamedTempSymbol("pcrel_hi"); Out.emitLabel(TmpLabel);