mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-21 18:24:23 +00:00
Remove DataLayout from TargetLoweringObjectFile, redirect to Module
Summary: 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, jholewinski Differential Revision: http://reviews.llvm.org/D11079 From: Mehdi Amini <mehdi.amini@apple.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242385 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -58,9 +58,8 @@ MCSymbol *TargetLoweringObjectFileELF::getCFIPersonalitySymbol(
|
||||
report_fatal_error("We do not support this DWARF encoding yet!");
|
||||
}
|
||||
|
||||
void TargetLoweringObjectFileELF::emitPersonalityValue(MCStreamer &Streamer,
|
||||
const TargetMachine &TM,
|
||||
const MCSymbol *Sym) const {
|
||||
void TargetLoweringObjectFileELF::emitPersonalityValue(
|
||||
MCStreamer &Streamer, const DataLayout &DL, const MCSymbol *Sym) const {
|
||||
SmallString<64> NameData("DW.ref.");
|
||||
NameData += Sym->getName();
|
||||
MCSymbolELF *Label =
|
||||
@ -72,9 +71,9 @@ void TargetLoweringObjectFileELF::emitPersonalityValue(MCStreamer &Streamer,
|
||||
unsigned Flags = ELF::SHF_ALLOC | ELF::SHF_WRITE | ELF::SHF_GROUP;
|
||||
MCSection *Sec = getContext().getELFSection(NameData, ELF::SHT_PROGBITS,
|
||||
Flags, 0, Label->getName());
|
||||
unsigned Size = TM.getDataLayout()->getPointerSize();
|
||||
unsigned Size = DL.getPointerSize();
|
||||
Streamer.SwitchSection(Sec);
|
||||
Streamer.EmitValueToAlignment(TM.getDataLayout()->getPointerABIAlignment());
|
||||
Streamer.EmitValueToAlignment(DL.getPointerABIAlignment());
|
||||
Streamer.EmitSymbolAttribute(Label, MCSA_ELF_TypeObject);
|
||||
const MCExpr *E = MCConstantExpr::create(Size, getContext());
|
||||
Streamer.emitELFSize(Label, E);
|
||||
@ -282,8 +281,8 @@ selectELFSectionForGlobal(MCContext &Ctx, const GlobalValue *GV,
|
||||
// We also need alignment here.
|
||||
// FIXME: this is getting the alignment of the character, not the
|
||||
// alignment of the global!
|
||||
unsigned Align =
|
||||
TM.getDataLayout()->getPreferredAlignment(cast<GlobalVariable>(GV));
|
||||
unsigned Align = GV->getParent()->getDataLayout().getPreferredAlignment(
|
||||
cast<GlobalVariable>(GV));
|
||||
|
||||
std::string SizeSpec = ".rodata.str" + utostr(EntrySize) + ".";
|
||||
Name = SizeSpec + utostr(Align);
|
||||
@ -350,9 +349,8 @@ bool TargetLoweringObjectFileELF::shouldPutJumpTableInFunctionSection(
|
||||
|
||||
/// Given a mergeable constant with the specified size and relocation
|
||||
/// information, return a section that it should be placed in.
|
||||
MCSection *
|
||||
TargetLoweringObjectFileELF::getSectionForConstant(SectionKind Kind,
|
||||
const Constant *C) const {
|
||||
MCSection *TargetLoweringObjectFileELF::getSectionForConstant(
|
||||
const DataLayout &DL, SectionKind Kind, const Constant *C) const {
|
||||
if (Kind.isMergeableConst4() && MergeableConst4Section)
|
||||
return MergeableConst4Section;
|
||||
if (Kind.isMergeableConst8() && MergeableConst8Section)
|
||||
@ -589,14 +587,16 @@ MCSection *TargetLoweringObjectFileMachO::SelectSectionForGlobal(
|
||||
|
||||
// FIXME: Alignment check should be handled by section classifier.
|
||||
if (Kind.isMergeable1ByteCString() &&
|
||||
TM.getDataLayout()->getPreferredAlignment(cast<GlobalVariable>(GV)) < 32)
|
||||
GV->getParent()->getDataLayout().getPreferredAlignment(
|
||||
cast<GlobalVariable>(GV)) < 32)
|
||||
return CStringSection;
|
||||
|
||||
// Do not put 16-bit arrays in the UString section if they have an
|
||||
// externally visible label, this runs into issues with certain linker
|
||||
// versions.
|
||||
if (Kind.isMergeable2ByteCString() && !GV->hasExternalLinkage() &&
|
||||
TM.getDataLayout()->getPreferredAlignment(cast<GlobalVariable>(GV)) < 32)
|
||||
GV->getParent()->getDataLayout().getPreferredAlignment(
|
||||
cast<GlobalVariable>(GV)) < 32)
|
||||
return UStringSection;
|
||||
|
||||
// With MachO only variables whose corresponding symbol starts with 'l' or
|
||||
@ -634,9 +634,8 @@ MCSection *TargetLoweringObjectFileMachO::SelectSectionForGlobal(
|
||||
return DataSection;
|
||||
}
|
||||
|
||||
MCSection *
|
||||
TargetLoweringObjectFileMachO::getSectionForConstant(SectionKind Kind,
|
||||
const Constant *C) const {
|
||||
MCSection *TargetLoweringObjectFileMachO::getSectionForConstant(
|
||||
const DataLayout &DL, SectionKind Kind, const Constant *C) const {
|
||||
// If this constant requires a relocation, we have to put it in the data
|
||||
// segment, not in the text segment.
|
||||
if (Kind.isDataRel() || Kind.isReadOnlyWithRel())
|
||||
@ -740,7 +739,7 @@ const MCExpr *TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(
|
||||
// non_lazy_ptr stubs.
|
||||
SmallString<128> Name;
|
||||
StringRef Suffix = "$non_lazy_ptr";
|
||||
Name += DL->getPrivateGlobalPrefix();
|
||||
Name += MMI->getModule()->getDataLayout().getPrivateGlobalPrefix();
|
||||
Name += Sym->getName();
|
||||
Name += Suffix;
|
||||
MCSymbol *Stub = Ctx.getOrCreateSymbol(Name);
|
||||
@ -1043,7 +1042,7 @@ void TargetLoweringObjectFileCOFF::emitLinkerFlagsForGlobal(
|
||||
raw_string_ostream FlagOS(Flag);
|
||||
Mang.getNameWithPrefix(FlagOS, GV, false);
|
||||
FlagOS.flush();
|
||||
if (Flag[0] == DL->getGlobalPrefix())
|
||||
if (Flag[0] == GV->getParent()->getDataLayout().getGlobalPrefix())
|
||||
OS << Flag.substr(1);
|
||||
else
|
||||
OS << Flag;
|
||||
|
Reference in New Issue
Block a user