Update getSectionForConstant() to to allow mergable sections to be nulled out
authorRichard Osborne <richard@xmos.com>
Mon, 17 Aug 2009 16:37:11 +0000 (16:37 +0000)
committerRichard Osborne <richard@xmos.com>
Mon, 17 Aug 2009 16:37:11 +0000 (16:37 +0000)
if not supported by the ELF subtarget.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79249 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/TargetLoweringObjectFile.cpp
test/CodeGen/XCore/constants.ll [new file with mode: 0644]

index d64cf07b01ea601271ed3a5710ad4b018a869eb9..8e1351bc065ed9485a51619e4d8261c03460f501 100644 (file)
@@ -609,11 +609,11 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
 /// should be placed in.
 const MCSection *TargetLoweringObjectFileELF::
 getSectionForConstant(SectionKind Kind) const {
-  if (Kind.isMergeableConst4())
+  if (Kind.isMergeableConst4() && MergeableConst4Section)
     return MergeableConst4Section;
-  if (Kind.isMergeableConst8())
+  if (Kind.isMergeableConst8() && MergeableConst8Section)
     return MergeableConst8Section;
-  if (Kind.isMergeableConst16())
+  if (Kind.isMergeableConst16() && MergeableConst16Section)
     return MergeableConst16Section;
   if (Kind.isReadOnly())
     return ReadOnlySection;
diff --git a/test/CodeGen/XCore/constants.ll b/test/CodeGen/XCore/constants.ll
new file mode 100644 (file)
index 0000000..2aee6a2
--- /dev/null
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc -march=xcore -mcpu=xs1b-generic | FileCheck %s
+
+; CHECK: .section .cp.rodata,"ac",@progbits
+; CHECK: .LCPI1_0:
+; CHECK: .long 12345678
+; CHECK: f:
+; CHECK: ldw r0, cp[.LCPI1_0]
+define i32 @f() {
+entry:
+       ret i32 12345678
+}