summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
diff options
context:
space:
mode:
authorJacques Pienaar <jpienaar@google.com>2016-03-31 17:58:55 +0000
committerJacques Pienaar <jpienaar@google.com>2016-03-31 17:58:55 +0000
commit4badd6aaf30859ce9b89960d8cae2b9ecd1dacca (patch)
tree13e93cb22593cdf225ce631ee74604ca99da4bd6 /llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
parent99b017ae35c2a41f0970bf5c847eb8b34a696702 (diff)
downloadbcm5719-llvm-4badd6aaf30859ce9b89960d8cae2b9ecd1dacca.tar.gz
bcm5719-llvm-4badd6aaf30859ce9b89960d8cae2b9ecd1dacca.zip
[lanai] isBrImm should accept any non-constant immediate.
isBrImm should accept any non-constant immediate. Previously it was only accepting LanaiMCExpr ones which was wrong. Differential Revision: http://reviews.llvm.org/D18571 llvm-svn: 265032
Diffstat (limited to 'llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp')
-rw-r--r--llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp23
1 files changed, 6 insertions, 17 deletions
diff --git a/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp b/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
index 13f8779d6bd..8742cc9b85a 100644
--- a/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
+++ b/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
@@ -195,23 +195,12 @@ public:
return false;
// Constant case
- if (const MCConstantExpr *ConstExpr = dyn_cast<MCConstantExpr>(Imm.Value)) {
- int64_t Value = ConstExpr->getValue();
- // Check if value fits in 25 bits with 2 least significant bits 0.
- return isShiftedUInt<23, 2>(static_cast<int32_t>(Value));
- }
-
- // Symbolic reference expression
- if (const LanaiMCExpr *SymbolRefExpr = dyn_cast<LanaiMCExpr>(Imm.Value))
- return SymbolRefExpr->getKind() == LanaiMCExpr::VK_Lanai_None;
-
- // Binary expression
- if (const MCBinaryExpr *BinaryExpr = dyn_cast<MCBinaryExpr>(Imm.Value))
- if (const LanaiMCExpr *SymbolRefExpr =
- dyn_cast<LanaiMCExpr>(BinaryExpr->getLHS()))
- return SymbolRefExpr->getKind() == LanaiMCExpr::VK_Lanai_None;
-
- return false;
+ const MCConstantExpr *MCE = dyn_cast<MCConstantExpr>(Imm.Value);
+ if (!MCE)
+ return true;
+ int64_t Value = MCE->getValue();
+ // Check if value fits in 25 bits with 2 least significant bits 0.
+ return isShiftedUInt<23, 2>(static_cast<int32_t>(Value));
}
bool isBrTarget() { return isBrImm() || isToken(); }
OpenPOWER on IntegriCloud