aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/XCore
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/XCore')
-rw-r--r--lib/Target/XCore/XCoreISelLowering.cpp3
-rw-r--r--lib/Target/XCore/XCoreTargetObjectFile.cpp10
-rw-r--r--lib/Target/XCore/XCoreTargetObjectFile.h3
3 files changed, 10 insertions, 6 deletions
diff --git a/lib/Target/XCore/XCoreISelLowering.cpp b/lib/Target/XCore/XCoreISelLowering.cpp
index 78734630ad..24d9f9b6bb 100644
--- a/lib/Target/XCore/XCoreISelLowering.cpp
+++ b/lib/Target/XCore/XCoreISelLowering.cpp
@@ -56,8 +56,7 @@ getTargetNodeName(unsigned Opcode) const
}
XCoreTargetLowering::XCoreTargetLowering(XCoreTargetMachine &XTM)
- : TargetLowering(XTM,
- new XCoreTargetObjectFile(XTM.getSubtargetImpl()->isXS1A())),
+ : TargetLowering(XTM, new XCoreTargetObjectFile()),
TM(XTM),
Subtarget(*XTM.getSubtargetImpl()) {
diff --git a/lib/Target/XCore/XCoreTargetObjectFile.cpp b/lib/Target/XCore/XCoreTargetObjectFile.cpp
index 964ec82d57..c28a33589d 100644
--- a/lib/Target/XCore/XCoreTargetObjectFile.cpp
+++ b/lib/Target/XCore/XCoreTargetObjectFile.cpp
@@ -8,10 +8,14 @@
//===----------------------------------------------------------------------===//
#include "XCoreTargetObjectFile.h"
+#include "XCoreSubtarget.h"
+#include "llvm/Target/TargetMachine.h"
using namespace llvm;
-XCoreTargetObjectFile::XCoreTargetObjectFile(bool isXS1A) {
+void XCoreTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM){
+ TargetLoweringObjectFileELF::Initialize(Ctx, TM);
+
TextSection = getOrCreateSection("\t.text", true, SectionKind::Text);
DataSection = getOrCreateSection("\t.dp.data", false, SectionKind::DataRel);
BSSSection_ = getOrCreateSection("\t.dp.bss", false, SectionKind::BSS);
@@ -22,11 +26,11 @@ XCoreTargetObjectFile::XCoreTargetObjectFile(bool isXS1A) {
TLSDataSection = DataSection;
TLSBSSSection = BSSSection_;
- if (isXS1A)
+ if (TM.getSubtarget<XCoreSubtarget>().isXS1A())
// FIXME: Why is this writable ("datarel")???
ReadOnlySection = getOrCreateSection("\t.dp.rodata", false,
SectionKind::DataRel);
else
ReadOnlySection = getOrCreateSection("\t.cp.rodata", false,
SectionKind::ReadOnly);
-}
+} \ No newline at end of file
diff --git a/lib/Target/XCore/XCoreTargetObjectFile.h b/lib/Target/XCore/XCoreTargetObjectFile.h
index af40e11f89..7efb990b79 100644
--- a/lib/Target/XCore/XCoreTargetObjectFile.h
+++ b/lib/Target/XCore/XCoreTargetObjectFile.h
@@ -16,8 +16,9 @@ namespace llvm {
class XCoreTargetObjectFile : public TargetLoweringObjectFileELF {
public:
- XCoreTargetObjectFile(bool isXS1A);
+ void Initialize(MCContext &Ctx, const TargetMachine &TM);
+
// TODO: Classify globals as xcore wishes.
};
} // end namespace llvm