mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-13 09:33:50 +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:
parent
54a6137379
commit
e247dd2839
@ -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.
|
||||
|
8
test/CodeGen/X86/global-sections-comdat.ll
Normal file
8
test/CodeGen/X86/global-sections-comdat.ll
Normal file
@ -0,0 +1,8 @@
|
||||
; RUN: llc < %s -mtriple=i386-unknown-linux | FileCheck %s -check-prefix=LINUX
|
||||
; RUN: llc < %s -mtriple=i386-unknown-linux -data-sections | FileCheck %s -check-prefix=LINUX-SECTIONS
|
||||
|
||||
$G16 = comdat any
|
||||
@G16 = unnamed_addr constant i32 42, comdat
|
||||
|
||||
; LINUX: .section .rodata.G16,"aG",@progbits,G16,comdat
|
||||
; LINUX-SECTIONS: .section .rodata.G16,"aG",@progbits,G16,comdat
|
Loading…
x
Reference in New Issue
Block a user