use XCore-specific section with xcore specific cp/dp flags to restore
authorChris Lattner <sabre@nondot.org>
Sat, 15 Aug 2009 06:09:35 +0000 (06:09 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 15 Aug 2009 06:09:35 +0000 (06:09 +0000)
support for globals going into the appropriate sections with the flags.

This hopefully finishes unbreaking the previous behavior that I broke before.

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

lib/Target/XCore/XCoreTargetObjectFile.cpp
test/CodeGen/XCore/globals.ll
test/CodeGen/XCore/tls.ll

index 9415f5127dc3f868f22fc836feee44b26e65108c..767611218a968526f011176365235944577cf765 100644 (file)
@@ -9,7 +9,7 @@
 
 #include "XCoreTargetObjectFile.h"
 #include "XCoreSubtarget.h"
-#include "llvm/MC/MCSectionELF.h"
+#include "MCSectionXCore.h"
 #include "llvm/Target/TargetMachine.h"
 using namespace llvm;
 
@@ -17,12 +17,22 @@ using namespace llvm;
 void XCoreTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM){
   TargetLoweringObjectFileELF::Initialize(Ctx, TM);
 
-  DataSection = getELFSection(".dp.data", MCSectionELF::SHT_PROGBITS, 
-                              MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE,
-                              SectionKind::getDataRel());
-  BSSSection = getELFSection(".dp.bss", MCSectionELF::SHT_NOBITS,
-                              MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE,
-                              SectionKind::getBSS());
+  DataSection =
+    MCSectionXCore::Create(".dp.data", MCSectionELF::SHT_PROGBITS, 
+                           MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE |
+                           MCSectionXCore::SHF_DP_SECTION,
+                           SectionKind::getDataRel(), false, getContext());
+  BSSSection =
+    MCSectionXCore::Create(".dp.bss", MCSectionELF::SHT_NOBITS,
+                           MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE |
+                           MCSectionXCore::SHF_DP_SECTION,
+                           SectionKind::getBSS(), false, getContext());
+  
+  // For now, disable lowering of mergable sections, just drop everything into
+  // ReadOnly.
+  MergeableConst4Section = 0;
+  MergeableConst8Section = 0;
+  MergeableConst16Section = 0;
   
   // TLS globals are lowered in the backend to arrays indexed by the current
   // thread id. After lowering they require no special handling by the linker
@@ -31,13 +41,15 @@ void XCoreTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM){
   TLSBSSSection = BSSSection;
   
   if (TM.getSubtarget<XCoreSubtarget>().isXS1A())
-    // FIXME: Why is this writable ("datarel")???
-    ReadOnlySection = 
-      getELFSection(".dp.rodata", MCSectionELF::SHT_PROGBITS,
-                    MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE,
-                    SectionKind::getDataRel());
+    ReadOnlySection =   // FIXME: Why is this a writable section for XS1A?
+      MCSectionXCore::Create(".dp.rodata", MCSectionELF::SHT_PROGBITS,
+                             MCSectionELF::SHF_ALLOC | MCSectionELF::SHF_WRITE |
+                             MCSectionXCore::SHF_DP_SECTION,
+                             SectionKind::getDataRel(), false, getContext());
   else
     ReadOnlySection = 
-      getELFSection(".cp.rodata", MCSectionELF::SHT_PROGBITS, 
-                    MCSectionELF::SHF_ALLOC, SectionKind::getReadOnly());
+      MCSectionXCore::Create(".cp.rodata", MCSectionELF::SHT_PROGBITS,
+                             MCSectionELF::SHF_ALLOC |
+                             MCSectionXCore::SHF_CP_SECTION,
+                             SectionKind::getReadOnly(), false, getContext());
 }
index 07d56a1a3a6bb7de24e35fc1b2a93a7b569fa960..c3d5f52e68c1146cb7bdaf634c177723c1e6c191 100644 (file)
@@ -1,5 +1,4 @@
 ; RUN: llvm-as < %s | llc -march=xcore -mcpu=xs1b-generic | FileCheck %s
-; XFAIL: *
 
 define i32 *@addr_G1() {
 entry:
index d645608c48f04468acf92082f8ebdd719ab62aeb..8f35268d4647a774d80eac7bf47fcd7c9bf5b526 100644 (file)
@@ -1,5 +1,4 @@
 ; RUN: llvm-as < %s | llc -march=xcore -mcpu=xs1b-generic | FileCheck %s
-; XFAIL: *
 
 define i32 *@addr_G() {
 entry: