mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 00:32:55 +00:00
Undo most of r54519.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54534 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0dabb7e8f3
commit
42ccc21ce7
@ -30,8 +30,7 @@ namespace llvm {
|
||||
const Section* DataCoalSection;
|
||||
|
||||
explicit DarwinTargetAsmInfo(const TargetMachine &TM);
|
||||
virtual const Section* SelectSectionForGlobal(const GlobalValue *GV,
|
||||
bool NoCoalesce = false) const;
|
||||
virtual const Section* SelectSectionForGlobal(const GlobalValue *GV) const;
|
||||
virtual std::string UniqueSectionForGlobal(const GlobalValue* GV,
|
||||
SectionKind::Kind kind) const;
|
||||
const Section* MergeableConstSection(const GlobalVariable *GV) const;
|
||||
|
@ -26,8 +26,7 @@ namespace llvm {
|
||||
struct ELFTargetAsmInfo: public virtual TargetAsmInfo {
|
||||
explicit ELFTargetAsmInfo(const TargetMachine &TM);
|
||||
|
||||
virtual const Section* SelectSectionForGlobal(const GlobalValue *GV,
|
||||
bool NoCoalesce = false) const;
|
||||
virtual const Section* SelectSectionForGlobal(const GlobalValue *GV) const;
|
||||
virtual std::string PrintSectionFlags(unsigned flags) const;
|
||||
const Section* MergeableConstSection(const GlobalVariable *GV) const;
|
||||
inline const Section* MergeableConstSection(const Type *Ty) const;
|
||||
|
@ -544,10 +544,8 @@ namespace llvm {
|
||||
const char* name = NULL) const;
|
||||
|
||||
/// SectionForGlobal - This hooks returns proper section name for given
|
||||
/// global with all necessary flags and marks. If NoCoalesce is true,
|
||||
/// do not use coalesced section.
|
||||
virtual std::string SectionForGlobal(const GlobalValue *GV,
|
||||
bool NoCoalesce = false) const;
|
||||
/// global with all necessary flags and marks.
|
||||
virtual std::string SectionForGlobal(const GlobalValue *GV) const;
|
||||
|
||||
// Helper methods for SectionForGlobal
|
||||
virtual std::string UniqueSectionForGlobal(const GlobalValue* GV,
|
||||
@ -555,8 +553,7 @@ namespace llvm {
|
||||
|
||||
virtual std::string PrintSectionFlags(unsigned flags) const { return ""; }
|
||||
|
||||
virtual const Section* SelectSectionForGlobal(const GlobalValue *GV,
|
||||
bool NoCoalesce = false) const;
|
||||
virtual const Section* SelectSectionForGlobal(const GlobalValue *GV) const;
|
||||
|
||||
virtual const Section* SelectSectionForMachineConst(const Type *Ty) const;
|
||||
|
||||
|
@ -863,8 +863,7 @@ void ARMAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool NoCoalesc = PCRelGVs.count(GVar);
|
||||
std::string SectionName = TAI->SectionForGlobal(GVar, NoCoalesc);
|
||||
std::string SectionName = TAI->SectionForGlobal(GVar);
|
||||
std::string name = Mang->getValueName(GVar);
|
||||
Constant *C = GVar->getInitializer();
|
||||
const Type *Type = C->getType();
|
||||
@ -901,7 +900,7 @@ void ARMAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
|
||||
if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it.
|
||||
|
||||
if (TAI->getLCOMMDirective() != NULL) {
|
||||
if (NoCoalesc || GVar->hasInternalLinkage()) {
|
||||
if (PCRelGVs.count(GVar) || GVar->hasInternalLinkage()) {
|
||||
O << TAI->getLCOMMDirective() << name << "," << Size;
|
||||
if (Subtarget->isTargetDarwin())
|
||||
O << "," << Align;
|
||||
|
@ -51,15 +51,14 @@ DarwinTargetAsmInfo::DarwinTargetAsmInfo(const TargetMachine &TM) {
|
||||
}
|
||||
|
||||
const Section*
|
||||
DarwinTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV,
|
||||
bool NoCoalesce) const {
|
||||
DarwinTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
|
||||
SectionKind::Kind Kind = SectionKindForGlobal(GV);
|
||||
bool CanCoalesce = !NoCoalesce && GV->isWeakForLinker();
|
||||
bool isWeak = GV->isWeakForLinker();
|
||||
bool isNonStatic = (DTM->getRelocationModel() != Reloc::Static);
|
||||
|
||||
switch (Kind) {
|
||||
case SectionKind::Text:
|
||||
if (CanCoalesce)
|
||||
if (isWeak)
|
||||
return TextCoalSection;
|
||||
else
|
||||
return getTextSection_();
|
||||
@ -68,18 +67,18 @@ DarwinTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV,
|
||||
case SectionKind::BSS:
|
||||
case SectionKind::ThreadBSS:
|
||||
if (cast<GlobalVariable>(GV)->isConstant())
|
||||
return (CanCoalesce ? ConstDataCoalSection : ConstDataSection);
|
||||
return (isWeak ? ConstDataCoalSection : ConstDataSection);
|
||||
else
|
||||
return (CanCoalesce ? DataCoalSection : getDataSection_());
|
||||
return (isWeak ? DataCoalSection : getDataSection_());
|
||||
case SectionKind::ROData:
|
||||
return (CanCoalesce ? ConstDataCoalSection :
|
||||
return (isWeak ? ConstDataCoalSection :
|
||||
(isNonStatic ? ConstDataSection : getReadOnlySection_()));
|
||||
case SectionKind::RODataMergeStr:
|
||||
return (CanCoalesce ?
|
||||
return (isWeak ?
|
||||
ConstDataCoalSection :
|
||||
MergeableStringSection(cast<GlobalVariable>(GV)));
|
||||
case SectionKind::RODataMergeConst:
|
||||
return (CanCoalesce ?
|
||||
return (isWeak ?
|
||||
ConstDataCoalSection:
|
||||
MergeableConstSection(cast<GlobalVariable>(GV)));
|
||||
default:
|
||||
|
@ -40,8 +40,7 @@ ELFTargetAsmInfo::ELFTargetAsmInfo(const TargetMachine &TM) {
|
||||
}
|
||||
|
||||
const Section*
|
||||
ELFTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV,
|
||||
bool NoCoalesce) const {
|
||||
ELFTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
|
||||
SectionKind::Kind Kind = SectionKindForGlobal(GV);
|
||||
|
||||
if (const Function *F = dyn_cast<Function>(GV)) {
|
||||
|
@ -82,7 +82,7 @@ SectionKindForGlobal(const GlobalValue *GV) const {
|
||||
}
|
||||
|
||||
const Section* MipsTargetAsmInfo::
|
||||
SelectSectionForGlobal(const GlobalValue *GV, bool NoCoalesce) const {
|
||||
SelectSectionForGlobal(const GlobalValue *GV) const {
|
||||
SectionKind::Kind K = SectionKindForGlobal(GV);
|
||||
const GlobalVariable *GVA = dyn_cast<GlobalVariable>(GV);
|
||||
|
||||
|
@ -40,8 +40,7 @@ namespace llvm {
|
||||
SectionFlagsForGlobal(const GlobalValue *GV = NULL,
|
||||
const char* name = NULL) const;
|
||||
|
||||
virtual const Section* SelectSectionForGlobal(const GlobalValue *GV,
|
||||
bool NoCoalesce) const;
|
||||
virtual const Section* SelectSectionForGlobal(const GlobalValue *GV) const;
|
||||
|
||||
private:
|
||||
const MipsSubtarget *Subtarget;
|
||||
|
@ -272,7 +272,7 @@ TargetAsmInfo::SectionFlagsForGlobal(const GlobalValue *GV,
|
||||
}
|
||||
|
||||
std::string
|
||||
TargetAsmInfo::SectionForGlobal(const GlobalValue *GV, bool NoCoalesce) const {
|
||||
TargetAsmInfo::SectionForGlobal(const GlobalValue *GV) const {
|
||||
const Section* S;
|
||||
// Select section name
|
||||
if (GV->hasSection()) {
|
||||
@ -282,7 +282,7 @@ TargetAsmInfo::SectionForGlobal(const GlobalValue *GV, bool NoCoalesce) const {
|
||||
S = getNamedSection(GV->getSection().c_str(), Flags);
|
||||
} else {
|
||||
// Use default section depending on the 'type' of global
|
||||
S = SelectSectionForGlobal(GV, NoCoalesce);
|
||||
S = SelectSectionForGlobal(GV);
|
||||
}
|
||||
|
||||
if (!S->isNamed())
|
||||
@ -295,8 +295,8 @@ TargetAsmInfo::SectionForGlobal(const GlobalValue *GV, bool NoCoalesce) const {
|
||||
}
|
||||
|
||||
// Lame default implementation. Calculate the section name for global.
|
||||
const Section* TargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV,
|
||||
bool NoCoalesce) const {
|
||||
const Section*
|
||||
TargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
|
||||
SectionKind::Kind Kind = SectionKindForGlobal(GV);
|
||||
|
||||
if (GV->isWeakForLinker()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user