aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-07-31 16:17:13 +0000
committerChris Lattner <sabre@nondot.org>2009-07-31 16:17:13 +0000
commit82987bfe9b6ae85a8836c9f2d2e9f0ef9866edb1 (patch)
treec26f74a97b7df6339a8a04dcd7391cf68739b602
parent624f3b930d3fc06b86c7fa1855f127f07ad0641f (diff)
fix PR4650: we only track sizes for certain objects, so only put something
into the mergable section if it is one of our special cases. This could obviously be improved, but this is the minimal fix and restores us to the previous behavior. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77679 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/TargetLoweringObjectFile.cpp5
-rw-r--r--test/CodeGen/X86/global-sections.ll17
2 files changed, 21 insertions, 1 deletions
diff --git a/lib/Target/TargetLoweringObjectFile.cpp b/lib/Target/TargetLoweringObjectFile.cpp
index 166f120178..a42911d92b 100644
--- a/lib/Target/TargetLoweringObjectFile.cpp
+++ b/lib/Target/TargetLoweringObjectFile.cpp
@@ -340,7 +340,10 @@ getSectionFlagsAsString(SectionKind Kind, SmallVectorImpl<char> &Str) const {
Str.push_back('x');
if (Kind.isWriteable())
Str.push_back('w');
- if (Kind.isMergeableConst() || Kind.isMergeableCString())
+ if (Kind.isMergeableCString() ||
+ Kind.isMergeableConst4() ||
+ Kind.isMergeableConst8() ||
+ Kind.isMergeableConst16())
Str.push_back('M');
if (Kind.isMergeableCString())
Str.push_back('S');
diff --git a/test/CodeGen/X86/global-sections.ll b/test/CodeGen/X86/global-sections.ll
index 18a585a983..a674a3ee97 100644
--- a/test/CodeGen/X86/global-sections.ll
+++ b/test/CodeGen/X86/global-sections.ll
@@ -68,3 +68,20 @@
; DARWIN: .globl "_foo bar"
; DARWIN: .weak_definition "_foo bar"
; DARWIN: "_foo bar":
+
+; PR4650
+@G6 = weak_odr constant [1 x i8] c"\01"
+
+; LINUX: .type G6,@object
+; LINUX: .section .gnu.linkonce.r.G6,"a",@progbits
+; LINUX: .weak G6
+; LINUX: G6: # G6
+; LINUX: .size G6, 1
+; LINUX: .ascii "\001"
+
+; DARWIN: .section __TEXT,__const_coal,coalesced
+; DARWIN: .globl _G6
+; DARWIN: .weak_definition _G6
+; DARWIN:_G6:
+; DARWIN: .ascii "\001"
+