mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-16 12:24:03 +00:00
Don' try to make sections in comdats SHF_MERGE.
Parts of llvm were not expecting it and we wouldn't print the entity size of the section. Given what comdats are used for, having SHF_MERGE sections would be just a small improvement, so just disable it for now. Fixes pr22463. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228196 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -166,7 +166,7 @@ static unsigned getELFSectionType(StringRef Name, SectionKind K) {
|
||||
|
||||
|
||||
static unsigned
|
||||
getELFSectionFlags(SectionKind K) {
|
||||
getELFSectionFlags(SectionKind K, bool InCOMDAT) {
|
||||
unsigned Flags = 0;
|
||||
|
||||
if (!K.isMetadata())
|
||||
@ -181,7 +181,7 @@ getELFSectionFlags(SectionKind K) {
|
||||
if (K.isThreadLocal())
|
||||
Flags |= ELF::SHF_TLS;
|
||||
|
||||
if (K.isMergeableCString() || K.isMergeableConst())
|
||||
if (!InCOMDAT && (K.isMergeableCString() || K.isMergeableConst()))
|
||||
Flags |= ELF::SHF_MERGE;
|
||||
|
||||
if (K.isMergeableCString())
|
||||
@ -211,7 +211,7 @@ const MCSection *TargetLoweringObjectFileELF::getExplicitSectionGlobal(
|
||||
Kind = getELFKindForNamedSection(SectionName, Kind);
|
||||
|
||||
StringRef Group = "";
|
||||
unsigned Flags = getELFSectionFlags(Kind);
|
||||
unsigned Flags = getELFSectionFlags(Kind, GV->hasComdat());
|
||||
if (const Comdat *C = getELFComdat(GV)) {
|
||||
Group = C->getName();
|
||||
Flags |= ELF::SHF_GROUP;
|
||||
@ -243,7 +243,7 @@ static StringRef getSectionPrefixForGlobal(SectionKind Kind) {
|
||||
const MCSection *TargetLoweringObjectFileELF::
|
||||
SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
|
||||
Mangler &Mang, const TargetMachine &TM) const {
|
||||
unsigned Flags = getELFSectionFlags(Kind);
|
||||
unsigned Flags = getELFSectionFlags(Kind, GV->hasComdat());
|
||||
|
||||
// If we have -ffunction-section or -fdata-section then we should emit the
|
||||
// global value to a uniqued section specifically for it.
|
||||
|
Reference in New Issue
Block a user