diff --git a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp index c406ba382c28a..0c8b551879e24 100644 --- a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp +++ b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp @@ -282,10 +282,9 @@ struct RISCVOperand : public MCParsedAsmOperand { bool IsRV64; - bool IsGPRAsFPR; - struct RegOp { MCRegister RegNum; + bool IsGPRAsFPR; }; struct ImmOp { @@ -362,12 +361,13 @@ struct RISCVOperand : public MCParsedAsmOperand { RISCVMCRegisterClasses[RISCV::GPRRegClassID].contains(Reg.RegNum); } - bool isGPRAsFPR() const { return isGPR() && IsGPRAsFPR; } + bool isGPRAsFPR() const { return isGPR() && Reg.IsGPRAsFPR; } - bool isGPRF64AsFPR() const { return isGPR() && IsGPRAsFPR && IsRV64; } + bool isGPRF64AsFPR() const { return isGPR() && Reg.IsGPRAsFPR && IsRV64; } bool isGPRPF64AsFPR() const { - return isGPR() && IsGPRAsFPR && !IsRV64 && !((Reg.RegNum - RISCV::X0) & 1); + return isGPR() && Reg.IsGPRAsFPR && !IsRV64 && + !((Reg.RegNum - RISCV::X0) & 1); } static bool evaluateConstantImm(const MCExpr *Expr, int64_t &Imm, @@ -867,10 +867,10 @@ struct RISCVOperand : public MCParsedAsmOperand { bool IsGPRAsFPR = false) { auto Op = std::make_unique(KindTy::Register); Op->Reg.RegNum = RegNo; + Op->Reg.IsGPRAsFPR = IsGPRAsFPR; Op->StartLoc = S; Op->EndLoc = E; Op->IsRV64 = IsRV64; - Op->IsGPRAsFPR = IsGPRAsFPR; return Op; }