forked from OSchip/llvm-project
Redirect pointerSize query to the TargetMachine in ASMPrinter
Summary: Because llvm-dsymutil is using ASMPrinter without any MachineFunction of Module available. This change is part of a series of commits dedicated to have a single DataLayout during compilation by using always the one owned by the module. Reviewers: echristo Subscribers: yaron.keren, rafael, llvm-commits Differential Revision: http://reviews.llvm.org/D11078 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 242384
This commit is contained in:
parent
cc2f70bb3e
commit
1660cab341
|
@ -165,6 +165,9 @@ public:
|
|||
/// Return information about data layout.
|
||||
const DataLayout &getDataLayout() const;
|
||||
|
||||
/// Return the pointer size from the TargetMachine
|
||||
unsigned getPointerSize() const;
|
||||
|
||||
/// Return information about subtarget.
|
||||
const MCSubtargetInfo &getSubtargetInfo() const;
|
||||
|
||||
|
|
|
@ -140,6 +140,8 @@ const DataLayout &AsmPrinter::getDataLayout() const {
|
|||
return *TM.getDataLayout();
|
||||
}
|
||||
|
||||
unsigned AsmPrinter::getPointerSize() const { return TM.getDataLayout()->getPointerSize(); }
|
||||
|
||||
const MCSubtargetInfo &AsmPrinter::getSubtargetInfo() const {
|
||||
assert(MF && "getSubtargetInfo requires a valid MachineFunction!");
|
||||
return MF->getSubtarget<MCSubtargetInfo>();
|
||||
|
|
|
@ -264,7 +264,8 @@ void DIEInteger::EmitValue(const AsmPrinter *Asm, dwarf::Form Form) const {
|
|||
case dwarf::DW_FORM_udata: Asm->EmitULEB128(Integer); return;
|
||||
case dwarf::DW_FORM_sdata: Asm->EmitSLEB128(Integer); return;
|
||||
case dwarf::DW_FORM_addr:
|
||||
Size = Asm->getDataLayout().getPointerSize(); break;
|
||||
Size = Asm->getPointerSize();
|
||||
break;
|
||||
case dwarf::DW_FORM_ref_addr:
|
||||
Size = SizeOf(Asm, dwarf::DW_FORM_ref_addr);
|
||||
break;
|
||||
|
@ -294,10 +295,11 @@ unsigned DIEInteger::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
|||
case dwarf::DW_FORM_GNU_addr_index: return getULEB128Size(Integer);
|
||||
case dwarf::DW_FORM_udata: return getULEB128Size(Integer);
|
||||
case dwarf::DW_FORM_sdata: return getSLEB128Size(Integer);
|
||||
case dwarf::DW_FORM_addr: return AP->getDataLayout().getPointerSize();
|
||||
case dwarf::DW_FORM_addr:
|
||||
return AP->getPointerSize();
|
||||
case dwarf::DW_FORM_ref_addr:
|
||||
if (AP->OutStreamer->getContext().getDwarfVersion() == 2)
|
||||
return AP->getDataLayout().getPointerSize();
|
||||
return AP->getPointerSize();
|
||||
return sizeof(int32_t);
|
||||
default: llvm_unreachable("DIE Value form not supported yet");
|
||||
}
|
||||
|
@ -326,7 +328,7 @@ unsigned DIEExpr::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
|||
if (Form == dwarf::DW_FORM_data4) return 4;
|
||||
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
||||
if (Form == dwarf::DW_FORM_strp) return 4;
|
||||
return AP->getDataLayout().getPointerSize();
|
||||
return AP->getPointerSize();
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
@ -352,7 +354,7 @@ unsigned DIELabel::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
|||
if (Form == dwarf::DW_FORM_data4) return 4;
|
||||
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
||||
if (Form == dwarf::DW_FORM_strp) return 4;
|
||||
return AP->getDataLayout().getPointerSize();
|
||||
return AP->getPointerSize();
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
@ -375,7 +377,7 @@ unsigned DIEDelta::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
|||
if (Form == dwarf::DW_FORM_data4) return 4;
|
||||
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
||||
if (Form == dwarf::DW_FORM_strp) return 4;
|
||||
return AP->getDataLayout().getPointerSize();
|
||||
return AP->getPointerSize();
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
@ -472,7 +474,7 @@ unsigned DIEEntry::getRefAddrSize(const AsmPrinter *AP) {
|
|||
const DwarfDebug *DD = AP->getDwarfDebug();
|
||||
assert(DD && "Expected Dwarf Debug info to be available");
|
||||
if (DD->getDwarfVersion() == 2)
|
||||
return AP->getDataLayout().getPointerSize();
|
||||
return AP->getPointerSize();
|
||||
return sizeof(int32_t);
|
||||
}
|
||||
|
||||
|
@ -608,7 +610,7 @@ unsigned DIELocList::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
|||
return 4;
|
||||
if (Form == dwarf::DW_FORM_sec_offset)
|
||||
return 4;
|
||||
return AP->getDataLayout().getPointerSize();
|
||||
return AP->getPointerSize();
|
||||
}
|
||||
|
||||
/// EmitValue - Emit label value.
|
||||
|
|
Loading…
Reference in New Issue