diff options
Diffstat (limited to 'llvm/lib/Target/RISCV/Utils/RISCVBaseInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/RISCV/Utils/RISCVBaseInfo.cpp | 24 | 
1 files changed, 14 insertions, 10 deletions
diff --git a/llvm/lib/Target/RISCV/Utils/RISCVBaseInfo.cpp b/llvm/lib/Target/RISCV/Utils/RISCVBaseInfo.cpp index 432ebb294d46..43b1f8b80c5f 100644 --- a/llvm/lib/Target/RISCV/Utils/RISCVBaseInfo.cpp +++ b/llvm/lib/Target/RISCV/Utils/RISCVBaseInfo.cpp @@ -12,16 +12,7 @@ namespace RISCVSysReg {  namespace RISCVABI {  ABI computeTargetABI(const Triple &TT, FeatureBitset FeatureBits,                       StringRef ABIName) { -  auto TargetABI = StringSwitch<ABI>(ABIName) -                       .Case("ilp32", ABI_ILP32) -                       .Case("ilp32f", ABI_ILP32F) -                       .Case("ilp32d", ABI_ILP32D) -                       .Case("ilp32e", ABI_ILP32E) -                       .Case("lp64", ABI_LP64) -                       .Case("lp64f", ABI_LP64F) -                       .Case("lp64d", ABI_LP64D) -                       .Default(ABI_Unknown); - +  auto TargetABI = getTargetABI(ABIName);    bool IsRV64 = TT.isArch64Bit();    bool IsRV32E = FeatureBits[RISCV::FeatureRV32E]; @@ -58,6 +49,19 @@ ABI computeTargetABI(const Triple &TT, FeatureBitset FeatureBits,    return ABI_ILP32;  } +ABI getTargetABI(StringRef ABIName) { +  auto TargetABI = StringSwitch<ABI>(ABIName) +                       .Case("ilp32", ABI_ILP32) +                       .Case("ilp32f", ABI_ILP32F) +                       .Case("ilp32d", ABI_ILP32D) +                       .Case("ilp32e", ABI_ILP32E) +                       .Case("lp64", ABI_LP64) +                       .Case("lp64f", ABI_LP64F) +                       .Case("lp64d", ABI_LP64D) +                       .Default(ABI_Unknown); +  return TargetABI; +} +  // To avoid the BP value clobbered by a function call, we need to choose a  // callee saved register to save the value. RV32E only has X8 and X9 as callee  // saved registers and X8 will be used as fp. So we choose X9 as bp.  | 
