summaryrefslogtreecommitdiff
path: root/lib/MC/MCInstrAnalysis.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-08-08 18:56:44 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-08-08 18:56:44 +0000
commit41ab14b725c8f2bb3e54553d0d7d96ff184786b1 (patch)
tree72f291595c549382084181fd41ac671dbbee62f7 /lib/MC/MCInstrAnalysis.cpp
parentc13464f3c1148a7096356f34f33932d3e258570e (diff)
downloadllvm-41ab14b725c8f2bb3e54553d0d7d96ff184786b1.tar.gz
llvm-41ab14b725c8f2bb3e54553d0d7d96ff184786b1.tar.bz2
llvm-41ab14b725c8f2bb3e54553d0d7d96ff184786b1.tar.xz
Add MCInstrAnalysis class. This allows the targets to specify own versions of MCInstrDescs functions.
- Add overrides for ARM. - Teach llvm-objdump to use this instead of plain MCInstrDesc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137059 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCInstrAnalysis.cpp')
-rw-r--r--lib/MC/MCInstrAnalysis.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/MC/MCInstrAnalysis.cpp b/lib/MC/MCInstrAnalysis.cpp
new file mode 100644
index 0000000000..03a35c597b
--- /dev/null
+++ b/lib/MC/MCInstrAnalysis.cpp
@@ -0,0 +1,20 @@
+//===-- MCInstrAnalysis.cpp - InstrDesc target hooks ------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/MC/MCInstrAnalysis.h"
+using namespace llvm;
+
+uint64_t MCInstrAnalysis::evaluateBranch(const MCInst &Inst, uint64_t Addr,
+ uint64_t Size) const {
+ if (Info->get(Inst.getOpcode()).OpInfo[0].OperandType != MCOI::OPERAND_PCREL)
+ return -1ULL;
+
+ int64_t Imm = Inst.getOperand(0).getImm();
+ return Addr+Size+Imm;
+}