mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-20 03:23:01 +02:00
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
da5196c5c1
commit
336db4aec7
@ -165,6 +165,9 @@ public:
|
|||||||
/// Return information about data layout.
|
/// Return information about data layout.
|
||||||
const DataLayout &getDataLayout() const;
|
const DataLayout &getDataLayout() const;
|
||||||
|
|
||||||
|
/// Return the pointer size from the TargetMachine
|
||||||
|
unsigned getPointerSize() const;
|
||||||
|
|
||||||
/// Return information about subtarget.
|
/// Return information about subtarget.
|
||||||
const MCSubtargetInfo &getSubtargetInfo() const;
|
const MCSubtargetInfo &getSubtargetInfo() const;
|
||||||
|
|
||||||
|
@ -140,6 +140,8 @@ const DataLayout &AsmPrinter::getDataLayout() const {
|
|||||||
return *TM.getDataLayout();
|
return *TM.getDataLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned AsmPrinter::getPointerSize() const { return TM.getDataLayout()->getPointerSize(); }
|
||||||
|
|
||||||
const MCSubtargetInfo &AsmPrinter::getSubtargetInfo() const {
|
const MCSubtargetInfo &AsmPrinter::getSubtargetInfo() const {
|
||||||
assert(MF && "getSubtargetInfo requires a valid MachineFunction!");
|
assert(MF && "getSubtargetInfo requires a valid MachineFunction!");
|
||||||
return MF->getSubtarget<MCSubtargetInfo>();
|
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_udata: Asm->EmitULEB128(Integer); return;
|
||||||
case dwarf::DW_FORM_sdata: Asm->EmitSLEB128(Integer); return;
|
case dwarf::DW_FORM_sdata: Asm->EmitSLEB128(Integer); return;
|
||||||
case dwarf::DW_FORM_addr:
|
case dwarf::DW_FORM_addr:
|
||||||
Size = Asm->getDataLayout().getPointerSize(); break;
|
Size = Asm->getPointerSize();
|
||||||
|
break;
|
||||||
case dwarf::DW_FORM_ref_addr:
|
case dwarf::DW_FORM_ref_addr:
|
||||||
Size = SizeOf(Asm, dwarf::DW_FORM_ref_addr);
|
Size = SizeOf(Asm, dwarf::DW_FORM_ref_addr);
|
||||||
break;
|
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_GNU_addr_index: return getULEB128Size(Integer);
|
||||||
case dwarf::DW_FORM_udata: return getULEB128Size(Integer);
|
case dwarf::DW_FORM_udata: return getULEB128Size(Integer);
|
||||||
case dwarf::DW_FORM_sdata: return getSLEB128Size(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:
|
case dwarf::DW_FORM_ref_addr:
|
||||||
if (AP->OutStreamer->getContext().getDwarfVersion() == 2)
|
if (AP->OutStreamer->getContext().getDwarfVersion() == 2)
|
||||||
return AP->getDataLayout().getPointerSize();
|
return AP->getPointerSize();
|
||||||
return sizeof(int32_t);
|
return sizeof(int32_t);
|
||||||
default: llvm_unreachable("DIE Value form not supported yet");
|
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_data4) return 4;
|
||||||
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
||||||
if (Form == dwarf::DW_FORM_strp) return 4;
|
if (Form == dwarf::DW_FORM_strp) return 4;
|
||||||
return AP->getDataLayout().getPointerSize();
|
return AP->getPointerSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#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_data4) return 4;
|
||||||
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
||||||
if (Form == dwarf::DW_FORM_strp) return 4;
|
if (Form == dwarf::DW_FORM_strp) return 4;
|
||||||
return AP->getDataLayout().getPointerSize();
|
return AP->getPointerSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#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_data4) return 4;
|
||||||
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
||||||
if (Form == dwarf::DW_FORM_strp) return 4;
|
if (Form == dwarf::DW_FORM_strp) return 4;
|
||||||
return AP->getDataLayout().getPointerSize();
|
return AP->getPointerSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
@ -472,7 +474,7 @@ unsigned DIEEntry::getRefAddrSize(const AsmPrinter *AP) {
|
|||||||
const DwarfDebug *DD = AP->getDwarfDebug();
|
const DwarfDebug *DD = AP->getDwarfDebug();
|
||||||
assert(DD && "Expected Dwarf Debug info to be available");
|
assert(DD && "Expected Dwarf Debug info to be available");
|
||||||
if (DD->getDwarfVersion() == 2)
|
if (DD->getDwarfVersion() == 2)
|
||||||
return AP->getDataLayout().getPointerSize();
|
return AP->getPointerSize();
|
||||||
return sizeof(int32_t);
|
return sizeof(int32_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -608,7 +610,7 @@ unsigned DIELocList::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
|||||||
return 4;
|
return 4;
|
||||||
if (Form == dwarf::DW_FORM_sec_offset)
|
if (Form == dwarf::DW_FORM_sec_offset)
|
||||||
return 4;
|
return 4;
|
||||||
return AP->getDataLayout().getPointerSize();
|
return AP->getPointerSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// EmitValue - Emit label value.
|
/// EmitValue - Emit label value.
|
||||||
|
Loading…
Reference in New Issue
Block a user