diff options
| author | Jacques Pienaar <jpienaar@google.com> | 2016-03-31 17:58:55 +0000 |
|---|---|---|
| committer | Jacques Pienaar <jpienaar@google.com> | 2016-03-31 17:58:55 +0000 |
| commit | 4badd6aaf30859ce9b89960d8cae2b9ecd1dacca (patch) | |
| tree | 13e93cb22593cdf225ce631ee74604ca99da4bd6 /llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp | |
| parent | 99b017ae35c2a41f0970bf5c847eb8b34a696702 (diff) | |
| download | bcm5719-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.cpp | 23 |
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(); } |

