diff options
author | Chris Lattner <sabre@nondot.org> | 2002-12-04 06:45:19 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-12-04 06:45:19 +0000 |
commit | 6425a502a61a1af0d0434ea05f10c7455c32385d (patch) | |
tree | cdbf805b276d97df3adefe8fbd41a49eb1a7b60b /llvm/lib/Target/X86/MachineCodeEmitter.cpp | |
parent | 57f055f2f2e7f099f2bd6769ba0e23d9eef16c16 (diff) | |
download | bcm5719-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.cpp | 8 |
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: |