Flags |= ELF::SHF_GROUP;
}
- bool EmitUniqueSection = false;
-
- // If we have -ffunction-sections or -fdata-sections then we should emit the
- // global value to a uniqued section of the same name.
- if (!(Flags & ELF::SHF_MERGE) && !Kind.isCommon()) {
- if (Kind.isText())
- EmitUniqueSection = TM.getFunctionSections();
- else
- EmitUniqueSection = TM.getDataSections();
- }
- EmitUniqueSection |= GO->hasComdat();
-
// A section can have at most one associated section. Put each global with
// MD_associated in a unique section.
+ unsigned UniqueID = MCContext::GenericSectionID;
const MCSymbolELF *AssociatedSymbol = getAssociatedSymbol(GO, TM);
if (AssociatedSymbol) {
- EmitUniqueSection = true;
+ UniqueID = NextUniqueID++;
Flags |= ELF::SHF_LINK_ORDER;
}
- unsigned UniqueID = MCContext::GenericSectionID;
- if (EmitUniqueSection)
- UniqueID = NextUniqueID++;
-
MCSectionELF *Section = getContext().getELFSection(
SectionName, getELFSectionType(SectionName, Kind), Flags,
getEntrySizeForKind(Kind), Group, UniqueID, AssociatedSymbol);
-; RUN: llc -data-sections=1 -mtriple x86_64-pc-linux-gnu < %s | FileCheck %s --check-prefix=DSECTIONS --check-prefix=CHECK
-; RUN: llc -data-sections=0 -mtriple x86_64-pc-linux-gnu < %s | FileCheck %s --check-prefix=NDSECTIONS --check-prefix=CHECK
+; RUN: llc -data-sections=1 -mtriple x86_64-pc-linux-gnu < %s | FileCheck %s
+; RUN: llc -data-sections=0 -mtriple x86_64-pc-linux-gnu < %s | FileCheck %s
@a = global i32 1
@b = global i32 2, !associated !0
@j = global i32 1, section "bbb", !associated !4
@k = global i32 1, !associated !4
!4 = !{i32* @h}
-; NDSECTIONS-DAG: .section aaa,"aw",@progbits
-; NDSECTIONS-DAG: .section bbb,"awo",@progbits,h,unique,1
-; NDSECTIONS-DAG: .section bbb,"awo",@progbits,h,unique,2
-
-; DSECTIONS-DAG: .section aaa,"aw",@progbits,unique,1
-; DSECTIONS-DAG: .section bbb,"awo",@progbits,h,unique,2
-; DSECTIONS-DAG: .section bbb,"awo",@progbits,h,unique,3
-
+; CHECK-DAG: .section aaa,"aw",@progbits
+; CHECK-DAG: .section bbb,"awo",@progbits,h,unique,1
+; CHECK-DAG: .section bbb,"awo",@progbits,h,unique,2
; CHECK-DAG: .section .data.k,"awo",@progbits,h
; Non-GlobalValue metadata.
@n = alias i32, i32* inttoptr (i64 add (i64 ptrtoint (i32* @a to i64), i64 1297036692682702848) to i32*)
@o = global i32 1, section "eee", !associated !7
!7 = !{i32* @n}
-; NDSECTIONS-DAG: .section eee,"awo",@progbits,n,unique,3
-; DSECTIONS-DAG: .section eee,"awo",@progbits,n,unique,6
+; CHECK-DAG: .section eee,"awo",@progbits,n,unique,3
+++ /dev/null
-; RUN: llc < %s -mtriple=x86_64-pc-linux -function-sections=1 -data-sections=1 | FileCheck %s -check-prefix=SECTIONS
-; RUN: llc < %s -mtriple=x86_64-pc-linux -function-sections=0 -data-sections=0 | FileCheck %s -check-prefix=NSECTIONS
-
-define void @f() section "aaa" { ret void }
-define void @g() section "aaa" { ret void }
-
-define void @h() { ret void }
-
-@x = global i32 1, section "aaa"
-@y = global i32 1, section "aaa"
-@z = global i32 1
-
-define void @i() section "aaa" { ret void }
-
-@w = global i32 1, section "aaa"
-
-; NSECTIONS: .section aaa,"ax",@progbits
-; NSECTIONS-NOT: {{\.section|\.text|\.data}}
-; NSECTIONS: f:
-; NSECTIONS-NOT: {{\.section|\.text|\.data}}
-; NSECTIONS: g:
-; NSECTIONS: .text
-; NSECTIONS-NOT: {{\.section|\.text|\.data}}
-; NSECTIONS: h:
-; NSECTIONS: .section aaa,"ax",@progbits
-; NSECTIONS-NOT: {{\.section|\.text|\.data}}
-; NSECTIONS: i:
-; NSECTIONS-NOT: {{\.section|\.text|\.data}}
-; NSECTIONS: x:
-; NSECTIONS-NOT: {{\.section|\.text|\.data}}
-; NSECTIONS: y:
-; NSECTIONS: .data
-; NSECTIONS-NOT: {{\.section|\.text|\.data}}
-; NSECTIONS: z:
-; NSECTIONS: .section aaa,"ax",@progbits
-; NSECTIONS-NOT: {{\.section|\.text|\.data}}
-; NSECTIONS: w:
-
-
-; SECTIONS: .section aaa,"ax",@progbits,unique,1
-; SECTIONS-NOT: {{\.section|\.text|\.data}}
-; SECTIONS: f:
-; SECTIONS: .section aaa,"ax",@progbits,unique,2
-; SECTIONS-NOT: {{\.section|\.text|\.data}}
-; SECTIONS: g:
-; SECTIONS: .section .text.h,"ax",@progbits
-; SECTIONS-NOT: {{\.section|\.text|\.data}}
-; SECTIONS: h:
-; SECTIONS: .section aaa,"ax",@progbits,unique,3
-; SECTIONS-NOT: {{\.section|\.text|\.data}}
-; SECTIONS: i:
-; SECTIONS: .section aaa,"aw",@progbits,unique,4
-; SECTIONS-NOT: {{\.section|\.text|\.data}}
-; SECTIONS: x:
-; SECTIONS: .section aaa,"aw",@progbits,unique,5
-; SECTIONS-NOT: {{\.section|\.text|\.data}}
-; SECTIONS: y:
-; SECTIONS: .section .data.z,"aw",@progbits
-; SECTIONS-NOT: {{\.section|\.text|\.data}}
-; SECTIONS: z:
-; SECTIONS: .section aaa,"aw",@progbits,unique,6
-; SECTIONS-NOT: {{\.section|\.text|\.data}}
-; SECTIONS: w:
-
-