Index: src/assembler_ia32.cpp |
diff --git a/src/assembler_ia32.cpp b/src/assembler_ia32.cpp |
index 30b84e8546dabd4880571ee8ef11198539604635..8feb7fef3aef198302055a96b4706a522eed7e40 100644 |
--- a/src/assembler_ia32.cpp |
+++ b/src/assembler_ia32.cpp |
@@ -31,31 +31,21 @@ class DirectCallRelocation : public AssemblerFixup { |
public: |
static DirectCallRelocation *create(Assembler *Asm, FixupKind Kind, |
- const ConstantRelocatable *Sym) { |
+ const Constant *Sym) { |
return new (Asm->Allocate<DirectCallRelocation>()) |
DirectCallRelocation(Kind, Sym); |
} |
private: |
- DirectCallRelocation(FixupKind Kind, const ConstantRelocatable *Sym) |
+ DirectCallRelocation(FixupKind Kind, const Constant *Sym) |
: AssemblerFixup(Kind, Sym) {} |
}; |
-Address Address::ofConstPool(GlobalContext *Ctx, Assembler *Asm, |
- const Constant *Imm) { |
- // We should make this much lighter-weight. E.g., just record the const pool |
- // entry ID. |
- std::string Buffer; |
- llvm::raw_string_ostream StrBuf(Buffer); |
- Type Ty = Imm->getType(); |
- assert(llvm::isa<ConstantFloat>(Imm) || llvm::isa<ConstantDouble>(Imm)); |
- StrBuf << ".L$" << Ty << "$" << Imm->getPoolEntryID(); |
+Address Address::ofConstPool(Assembler *Asm, const Constant *Imm) { |
+ AssemblerFixup *Fixup = |
+ x86::DisplacementRelocation::create(Asm, FK_Abs_4, Imm); |
const RelocOffsetT Offset = 0; |
- const bool SuppressMangling = true; |
- Constant *Sym = Ctx->getConstantSym(Offset, StrBuf.str(), SuppressMangling); |
- AssemblerFixup *Fixup = x86::DisplacementRelocation::create( |
- Asm, FK_Abs_4, llvm::cast<ConstantRelocatable>(Sym)); |
- return x86::Address::Absolute(Fixup); |
+ return x86::Address::Absolute(Offset, Fixup); |
} |
AssemblerX86::~AssemblerX86() { |