[llvm] r265032 - [lanai] isBrImm should accept any non-constant immediate.
Jacques Pienaar via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 31 10:58:56 PDT 2016
Author: jpienaar
Date: Thu Mar 31 12:58:55 2016
New Revision: 265032
URL: http://llvm.org/viewvc/llvm-project?rev=265032&view=rev
Log:
[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
Added:
llvm/trunk/test/MC/Lanai/ctrl-instructions.s
Modified:
llvm/trunk/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
Modified: llvm/trunk/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp?rev=265032&r1=265031&r2=265032&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp Thu Mar 31 12:58:55 2016
@@ -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(); }
Added: llvm/trunk/test/MC/Lanai/ctrl-instructions.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Lanai/ctrl-instructions.s?rev=265032&view=auto
==============================================================================
--- llvm/trunk/test/MC/Lanai/ctrl-instructions.s (added)
+++ llvm/trunk/test/MC/Lanai/ctrl-instructions.s Thu Mar 31 12:58:55 2016
@@ -0,0 +1,13 @@
+// RUN: llvm-mc -triple lanai-unknown-unknown -show-encoding -o - %s | FileCheck %s
+
+// CHECK: bt .Ltmp0 ! encoding: [0b1110000A,A,A,A]
+// CHECK-NEXT: ! fixup A - offset: 0, value: .Ltmp0, kind: FIXUP_LANAI_25
+ bt 1f
+ nop
+1:
+
+// CHECK: bt foo ! encoding: [0b1110000A,A,A,A]
+// CHECK-NEXT: ! fixup A - offset: 0, value: foo, kind: FIXUP_LANAI_25
+ bt foo
+ nop
+
More information about the llvm-commits
mailing list