| Index: src/assembler_ia32.h
|
| diff --git a/src/assembler_ia32.h b/src/assembler_ia32.h
|
| index 08347c460d3142c2e621a3ec2fcd4876222b1852..3e73574391a4b003c280dfbaec5bf6b5b9e0e933 100644
|
| --- a/src/assembler_ia32.h
|
| +++ b/src/assembler_ia32.h
|
| @@ -32,8 +32,6 @@
|
|
|
| namespace Ice {
|
|
|
| -class Assembler;
|
| -
|
| using RegX8632::GPRRegister;
|
| using RegX8632::XmmRegister;
|
| using RegX8632::ByteRegister;
|
| @@ -45,22 +43,6 @@ const int MAX_NOP_SIZE = 8;
|
|
|
| enum ScaleFactor { TIMES_1 = 0, TIMES_2 = 1, TIMES_4 = 2, TIMES_8 = 3 };
|
|
|
| -class DisplacementRelocation : public AssemblerFixup {
|
| - DisplacementRelocation(const DisplacementRelocation &) = delete;
|
| - DisplacementRelocation &operator=(const DisplacementRelocation &) = delete;
|
| -
|
| -public:
|
| - static DisplacementRelocation *create(Assembler *Asm, FixupKind Kind,
|
| - const Constant *Sym) {
|
| - return new (Asm->Allocate<DisplacementRelocation>())
|
| - DisplacementRelocation(Kind, Sym);
|
| - }
|
| -
|
| -private:
|
| - DisplacementRelocation(FixupKind Kind, const Constant *Sym)
|
| - : AssemblerFixup(Kind, Sym) {}
|
| -};
|
| -
|
| class Immediate {
|
| Immediate(const Immediate &) = delete;
|
| Immediate &operator=(const Immediate &) = delete;
|
| @@ -70,10 +52,8 @@ public:
|
|
|
| Immediate(RelocOffsetT offset, AssemblerFixup *fixup)
|
| : value_(offset), fixup_(fixup) {
|
| - // Use the Offset in the "value" for now. If the symbol is part of
|
| - // ".bss", then the relocation's symbol will be plain ".bss" and
|
| - // the value will need to be adjusted further to be sym's
|
| - // bss offset + Offset.
|
| + // Use the Offset in the "value" for now. If we decide to process fixups,
|
| + // we'll need to patch that offset with the true value.
|
| }
|
|
|
| int32_t value() const { return value_; }
|
| @@ -253,10 +233,8 @@ public:
|
| static Address Absolute(RelocOffsetT Offset, AssemblerFixup *fixup) {
|
| Address result;
|
| result.SetModRM(0, RegX8632::Encoded_Reg_ebp);
|
| - // Use the Offset in the displacement for now. If the symbol is part of
|
| - // ".bss", then the relocation's symbol will be plain .bss and the
|
| - // displacement will need to be adjusted further to be sym's
|
| - // bss offset + Offset.
|
| + // Use the Offset in the displacement for now. If we decide to process
|
| + // fixups later, we'll need to patch up the emitted displacement.
|
| result.SetDisp32(Offset);
|
| result.SetFixup(fixup);
|
| return result;
|
| @@ -381,6 +359,11 @@ public:
|
| Label *GetOrCreateLocalLabel(SizeT Number);
|
| void BindLocalLabel(SizeT Number);
|
|
|
| + bool fixupIsPCRel(FixupKind Kind) const override {
|
| + // Currently assuming this is the only PC-rel relocation type used.
|
| + return Kind == llvm::ELF::R_386_PC32;
|
| + }
|
| +
|
| // Operations to emit GPR instructions (and dispatch on operand type).
|
| typedef void (AssemblerX86::*TypedEmitGPR)(Type, GPRRegister);
|
| typedef void (AssemblerX86::*TypedEmitAddr)(Type, const Address &);
|
|
|