summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/MachineCodeEmitter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-12-04 06:45:19 +0000
committerChris Lattner <sabre@nondot.org>2002-12-04 06:45:19 +0000
commit6425a502a61a1af0d0434ea05f10c7455c32385d (patch)
treecdbf805b276d97df3adefe8fbd41a49eb1a7b60b /llvm/lib/Target/X86/MachineCodeEmitter.cpp
parent57f055f2f2e7f099f2bd6769ba0e23d9eef16c16 (diff)
downloadbcm5719-llvm-6425a502a61a1af0d0434ea05f10c7455c32385d.tar.gz
bcm5719-llvm-6425a502a61a1af0d0434ea05f10c7455c32385d.zip
Add support for referencing global variables/functions
llvm-svn: 4907
Diffstat (limited to 'llvm/lib/Target/X86/MachineCodeEmitter.cpp')
-rw-r--r--llvm/lib/Target/X86/MachineCodeEmitter.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/MachineCodeEmitter.cpp b/llvm/lib/Target/X86/MachineCodeEmitter.cpp
index 7b0f1bfb443..d54da1db40e 100644
--- a/llvm/lib/Target/X86/MachineCodeEmitter.cpp
+++ b/llvm/lib/Target/X86/MachineCodeEmitter.cpp
@@ -11,6 +11,7 @@
#include "llvm/CodeGen/MachineCodeEmitter.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/Value.h"
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;
- emitConstant(MI.getOperand(1).getImmedValue(), Size);
+ if (Value *V = MI.getOperand(1).getVRegValue()) {
+ 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:
OpenPOWER on IntegriCloud