summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/RISCV
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/RISCV')
-rw-r--r--llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
index 92acdd825d5..486784859bd 100644
--- a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+++ b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
@@ -146,6 +146,8 @@ public:
template <int N> bool isBareSimmNLsb0() const {
int64_t Imm;
RISCVMCExpr::VariantKind VK;
+ if (!isImm())
+ return false;
bool IsConstantImm = evaluateConstantImm(Imm, VK);
bool IsValid;
if (!IsConstantImm)
@@ -185,6 +187,8 @@ public:
bool isUImm5() const {
int64_t Imm;
RISCVMCExpr::VariantKind VK;
+ if (!isImm())
+ return false;
bool IsConstantImm = evaluateConstantImm(Imm, VK);
return IsConstantImm && isUInt<5>(Imm) && VK == RISCVMCExpr::VK_RISCV_None;
}
@@ -193,6 +197,8 @@ public:
RISCVMCExpr::VariantKind VK;
int64_t Imm;
bool IsValid;
+ if (!isImm())
+ return false;
bool IsConstantImm = evaluateConstantImm(Imm, VK);
if (!IsConstantImm)
IsValid = RISCVAsmParser::classifySymbolRef(getImm(), VK, Imm);
@@ -205,6 +211,8 @@ public:
bool isUImm12() const {
int64_t Imm;
RISCVMCExpr::VariantKind VK;
+ if (!isImm())
+ return false;
bool IsConstantImm = evaluateConstantImm(Imm, VK);
return IsConstantImm && isUInt<12>(Imm) && VK == RISCVMCExpr::VK_RISCV_None;
}
@@ -215,6 +223,8 @@ public:
RISCVMCExpr::VariantKind VK;
int64_t Imm;
bool IsValid;
+ if (!isImm())
+ return false;
bool IsConstantImm = evaluateConstantImm(Imm, VK);
if (!IsConstantImm)
IsValid = RISCVAsmParser::classifySymbolRef(getImm(), VK, Imm);
OpenPOWER on IntegriCloud