summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-07-07 22:35:13 +0000
committerChris Lattner <sabre@nondot.org>2010-07-07 22:35:13 +0000
commit05ea2a4791a685c23100324b5abd6e0530ed9c25 (patch)
treeec215c49f3cccf21a658425f9be644afe52b9bf8
parentac5881295c28926c0849b051f4ba50ca6d8a4a79 (diff)
downloadbcm5719-llvm-05ea2a4791a685c23100324b5abd6e0530ed9c25.tar.gz
bcm5719-llvm-05ea2a4791a685c23100324b5abd6e0530ed9c25.zip
finish up support for callw: PR7195
llvm-svn: 107826
-rw-r--r--llvm/lib/MC/MachObjectWriter.cpp2
-rw-r--r--llvm/lib/Target/X86/X86MCCodeEmitter.cpp2
2 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp
index fbe068b58ec..7ca09511bde 100644
--- a/llvm/lib/MC/MachObjectWriter.cpp
+++ b/llvm/lib/MC/MachObjectWriter.cpp
@@ -33,6 +33,7 @@ static unsigned getFixupKindLog2Size(unsigned Kind) {
default: llvm_unreachable("invalid fixup kind!");
case X86::reloc_pcrel_1byte:
case FK_Data_1: return 0;
+ case X86::reloc_pcrel_2byte:
case FK_Data_2: return 1;
case X86::reloc_pcrel_4byte:
case X86::reloc_riprel_4byte:
@@ -47,6 +48,7 @@ static bool isFixupKindPCRel(unsigned Kind) {
default:
return false;
case X86::reloc_pcrel_1byte:
+ case X86::reloc_pcrel_2byte:
case X86::reloc_pcrel_4byte:
case X86::reloc_riprel_4byte:
case X86::reloc_riprel_4byte_movq_load:
diff --git a/llvm/lib/Target/X86/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/X86MCCodeEmitter.cpp
index 24c48fdd979..af1b4069936 100644
--- a/llvm/lib/Target/X86/X86MCCodeEmitter.cpp
+++ b/llvm/lib/Target/X86/X86MCCodeEmitter.cpp
@@ -201,7 +201,7 @@ EmitImmediate(const MCOperand &DispOp, unsigned Size, MCFixupKind FixupKind,
FixupKind == MCFixupKind(X86::reloc_riprel_4byte_movq_load))
ImmOffset -= 4;
if (FixupKind == MCFixupKind(X86::reloc_pcrel_2byte))
- ImmOffset -= 4;// FIXME: This should be 2, but 'as' produces an offset of 4.
+ ImmOffset -= 2;
if (FixupKind == MCFixupKind(X86::reloc_pcrel_1byte))
ImmOffset -= 1;
OpenPOWER on IntegriCloud