projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added the flag to mark instructions which are really 2-address instructions in
[oota-llvm.git]
/
lib
/
Target
/
X86
/
X86CodeEmitter.cpp
diff --git
a/lib/Target/X86/X86CodeEmitter.cpp
b/lib/Target/X86/X86CodeEmitter.cpp
index 7b0f1bfb4434efc992132232480b1c351142b65c..4039f34a051fae8568195dcb4f28ec9a22232649 100644
(file)
--- a/
lib/Target/X86/X86CodeEmitter.cpp
+++ b/
lib/Target/X86/X86CodeEmitter.cpp
@@
-11,6
+11,7
@@
#include "llvm/CodeGen/MachineCodeEmitter.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineCodeEmitter.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/Value.h"
namespace {
class Emitter : public FunctionPass {
namespace {
class Emitter : public FunctionPass {
@@
-224,7
+225,12
@@
void Emitter::emitInstruction(MachineInstr &MI) {
MCE.emitByte(BaseOpcode + getX86RegNum(MI.getOperand(0).getReg()));
if (MI.getNumOperands() == 2) {
unsigned Size = 4;
MCE.emitByte(BaseOpcode + getX86RegNum(MI.getOperand(0).getReg()));
if (MI.getNumOperands() == 2) {
unsigned Size = 4;
- emitConstant(MI.getOperand(1).getImmedValue(), Size);
+ if (Value *V = MI.getOperand(1).getVRegValueOrNull()) {
+ assert(Size == 4 && "Don't know how to emit non-pointer values!");
+ MCE.emitGlobalAddress(cast<GlobalValue>(V));
+ } else {
+ emitConstant(MI.getOperand(1).getImmedValue(), Size);
+ }
}
break;
case X86II::MRMDestReg:
}
break;
case X86II::MRMDestReg: