OSDN Git Service
(root)
/
android-x86
/
external-llvm.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
eeb8408
)
Fix ARM 'B' instruction encoding for ARM JIT
author
Jush Lu
<jush.msn@gmail.com>
Sat, 9 Apr 2011 10:32:31 +0000
(18:32 +0800)
committer
Jush Lu
<jush.msn@gmail.com>
Sat, 9 Apr 2011 10:32:31 +0000
(18:32 +0800)
lib/Target/ARM/ARMCodeEmitter.cpp
patch
|
blob
|
history
diff --git
a/lib/Target/ARM/ARMCodeEmitter.cpp
b/lib/Target/ARM/ARMCodeEmitter.cpp
index
9ecf292
..
4e71f1e
100644
(file)
--- a/
lib/Target/ARM/ARMCodeEmitter.cpp
+++ b/
lib/Target/ARM/ARMCodeEmitter.cpp
@@
-899,6
+899,9
@@
void ARMCodeEmitter::emitPseudoInstruction(const MachineInstr &MI) {
switch (Opcode) {
default:
llvm_unreachable("ARMCodeEmitter::emitPseudoInstruction");
+ case ARM::B:
+ emitBranchInstruction(MI);
+ break;
case ARM::BR_JTr:
case ARM::BR_JTm:
case ARM::BR_JTadd:
@@
-1541,6
+1544,10
@@
void ARMCodeEmitter::emitBranchInstruction(const MachineInstr &MI) {
// Part of binary is determined by TableGn.
unsigned Binary = getBinaryCodeForInstr(MI);
+ if (TID.Opcode == ARM::B) {
+ Binary = 0xEA000000;
+ }
+
// Set the conditional execution predicate
Binary |= II->getPredicate(&MI) << ARMII::CondShift;