diff --git a/docs/WritingAnLLVMBackend.html b/docs/WritingAnLLVMBackend.html index 388e706046d..29dc1127c57 100644 --- a/docs/WritingAnLLVMBackend.html +++ b/docs/WritingAnLLVMBackend.html @@ -2080,8 +2080,8 @@ SparcTargetAsmInfo::SparcTargetAsmInfo(const SparcTargetMachine &TM) {

The X86 assembly printer implementation (X86TargetAsmInfo) is an -example where the target specific TargetAsmInfo class uses overridden -methods: ExpandInlineAsm and PreferredEHDataFormat. +example where the target specific TargetAsmInfo class uses an +overridden methods: ExpandInlineAsm.

diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h index 5574ad5bc6b..958a701cefc 100644 --- a/include/llvm/Target/TargetAsmInfo.h +++ b/include/llvm/Target/TargetAsmInfo.h @@ -383,11 +383,6 @@ namespace llvm { /// length. virtual unsigned getInlineAsmLength(const char *Str) const; - /// PreferredEHDataFormat - This hook allows the target to select data - /// format used for encoding pointers in exception handling data. - virtual unsigned PreferredEHDataFormat() const; - - /// getSLEB128Size - Compute the number of bytes required for a signed /// leb128 value. static unsigned getSLEB128Size(int Value); diff --git a/lib/Target/TargetAsmInfo.cpp b/lib/Target/TargetAsmInfo.cpp index e961f2ad74f..cb835e630f0 100644 --- a/lib/Target/TargetAsmInfo.cpp +++ b/lib/Target/TargetAsmInfo.cpp @@ -140,10 +140,6 @@ unsigned TargetAsmInfo::getInlineAsmLength(const char *Str) const { return Length; } -unsigned TargetAsmInfo::PreferredEHDataFormat() const { - return dwarf::DW_EH_PE_absptr; -} - unsigned TargetAsmInfo::getULEB128Size(unsigned Value) { unsigned Size = 0; do { diff --git a/lib/Target/X86/X86TargetAsmInfo.cpp b/lib/Target/X86/X86TargetAsmInfo.cpp index 4c9030845a0..db9cf905c4f 100644 --- a/lib/Target/X86/X86TargetAsmInfo.cpp +++ b/lib/Target/X86/X86TargetAsmInfo.cpp @@ -86,14 +86,6 @@ X86DarwinTargetAsmInfo::X86DarwinTargetAsmInfo(const X86TargetMachine &TM): ".section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support"; } -unsigned X86DarwinTargetAsmInfo::PreferredEHDataFormat() const { - const X86Subtarget *Subtarget = &TM.getSubtarget(); - if (Subtarget->getDarwinVers() > 9) - return DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4; - - return DW_EH_PE_absptr; -} - const char * X86DarwinTargetAsmInfo::getEHGlobalPrefix() const { const X86Subtarget* Subtarget = &TM.getSubtarget(); @@ -138,70 +130,6 @@ X86ELFTargetAsmInfo::X86ELFTargetAsmInfo(const X86TargetMachine &TM) : NonexecutableStackDirective = "\t.section\t.note.GNU-stack,\"\",@progbits"; } -unsigned -X86ELFTargetAsmInfo::PreferredEHDataFormat() const { - CodeModel::Model CM = TM.getCodeModel(); - bool is64Bit = TM.getSubtarget().is64Bit(); - - if (TM.getRelocationModel() == Reloc::PIC_) { - unsigned Format = 0; - - if (!is64Bit) - // 32 bit targets always encode pointers as 4 bytes - Format = DW_EH_PE_sdata4; - else { - // 64 bit targets encode pointers in 4 bytes iff: - // - code model is small OR - // - code model is medium and we're emitting externally visible symbols - // or any code symbols - if (CM == CodeModel::Small || CM == CodeModel::Medium) - Format = DW_EH_PE_sdata4; - else - Format = DW_EH_PE_sdata8; - } - - Format |= DW_EH_PE_indirect; - return (Format | DW_EH_PE_pcrel); - } - - if (is64Bit && CM == CodeModel::Small) - return DW_EH_PE_udata4; - return DW_EH_PE_absptr; -} - - -unsigned -X86COFFTargetAsmInfo::PreferredEHDataFormat() const { - CodeModel::Model CM = TM.getCodeModel(); - bool is64Bit = TM.getSubtarget().is64Bit(); - - if (TM.getRelocationModel() == Reloc::PIC_) { - unsigned Format = 0; - - if (!is64Bit) - // 32 bit targets always encode pointers as 4 bytes - Format = DW_EH_PE_sdata4; - else { - // 64 bit targets encode pointers in 4 bytes iff: - // - code model is small OR - // - code model is medium and we're emitting externally visible symbols - // or any code symbols - if (CM == CodeModel::Small || CM == CodeModel::Medium) - Format = DW_EH_PE_sdata4; - else - Format = DW_EH_PE_sdata8; - } - - Format |= DW_EH_PE_indirect; - return (Format | DW_EH_PE_pcrel); - } - - if (is64Bit && CM == CodeModel::Small) - return DW_EH_PE_udata4; - return DW_EH_PE_absptr; -} - - X86WinTargetAsmInfo::X86WinTargetAsmInfo(const X86TargetMachine &TM): X86TargetAsmInfo(TM) { diff --git a/lib/Target/X86/X86TargetAsmInfo.h b/lib/Target/X86/X86TargetAsmInfo.h index 3cc027185c9..f7113b3e5ed 100644 --- a/lib/Target/X86/X86TargetAsmInfo.h +++ b/lib/Target/X86/X86TargetAsmInfo.h @@ -37,21 +37,14 @@ namespace llvm { struct X86DarwinTargetAsmInfo : public X86TargetAsmInfo { explicit X86DarwinTargetAsmInfo(const X86TargetMachine &TM); - virtual unsigned PreferredEHDataFormat() const; virtual const char *getEHGlobalPrefix() const; }; struct X86ELFTargetAsmInfo : public X86TargetAsmInfo { explicit X86ELFTargetAsmInfo(const X86TargetMachine &TM); - virtual unsigned PreferredEHDataFormat() const; }; - struct X86COFFTargetAsmInfo : public X86TargetAsmInfo { - explicit X86COFFTargetAsmInfo(const X86TargetMachine &TM) : - X86TargetAsmInfo(TM) {} - virtual unsigned PreferredEHDataFormat() const; - }; - + typedef X86TargetAsmInfo X86COFFTargetAsmInfo; struct X86WinTargetAsmInfo : public X86TargetAsmInfo { explicit X86WinTargetAsmInfo(const X86TargetMachine &TM);