Skip to content

Commit 9ecb19f

Browse files
committed
[Xtensa] Use ctors for Xtensa target by default
1 parent c57eb25 commit 9ecb19f

File tree

4 files changed

+55
-1
lines changed

4 files changed

+55
-1
lines changed

llvm/lib/Target/Xtensa/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ add_llvm_target(XtensaCodeGen
2525
XtensaSizeReductionPass.cpp
2626
XtensaSubtarget.cpp
2727
XtensaTargetMachine.cpp
28+
XtensaTargetObjectFile.cpp
2829
)
2930

3031
add_subdirectory(AsmParser)

llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
//===----------------------------------------------------------------------===//
1414

1515
#include "XtensaTargetMachine.h"
16+
#include "XtensaTargetObjectFile.h"
1617
#include "llvm/CodeGen/Passes.h"
1718
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
1819
#include "llvm/CodeGen/TargetPassConfig.h"
@@ -43,6 +44,10 @@ static Reloc::Model getEffectiveRelocModel(bool JIT,
4344
return *RM;
4445
}
4546

47+
static std::unique_ptr<TargetLoweringObjectFile> createTLOF() {
48+
return std::make_unique<XtensaElfTargetObjectFile>();
49+
}
50+
4651
XtensaTargetMachine::XtensaTargetMachine(const Target &T, const Triple &TT,
4752
StringRef CPU, StringRef FS,
4853
const TargetOptions &Options,
@@ -53,7 +58,7 @@ XtensaTargetMachine::XtensaTargetMachine(const Target &T, const Triple &TT,
5358
: LLVMTargetMachine(T, computeDataLayout(TT, CPU, Options, isLittle), TT,
5459
CPU, FS, Options, getEffectiveRelocModel(JIT, RM),
5560
getEffectiveCodeModel(CM, CodeModel::Small), OL),
56-
TLOF(std::make_unique<TargetLoweringObjectFileELF>()),
61+
TLOF(createTLOF()),
5762
Subtarget(TT, std::string(CPU), std::string(FS), *this) {
5863
initAsmInfo();
5964
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//===-- llvm/Target/XtensaTargetObjectFile.cpp - Xtensa Object Info Impl --===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#include "XtensaTargetObjectFile.h"
10+
#include "llvm/MC/MCContext.h"
11+
#include "llvm/Target/TargetMachine.h"
12+
13+
using namespace llvm;
14+
15+
//===----------------------------------------------------------------------===//
16+
// ELF Target
17+
//===----------------------------------------------------------------------===//
18+
19+
void XtensaElfTargetObjectFile::Initialize(MCContext &Ctx,
20+
const TargetMachine &TM) {
21+
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
22+
InitializeELF(false);
23+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//===- llvm/Target/XtensaTargetObjectFile.h - Xtensa Object Info -*- C++ -*-==//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef LLVM_LIB_TARGET_XTENSA_XTENSATARGETOBJECTFILE_H
10+
#define LLVM_LIB_TARGET_XTENSA_XTENSATARGETOBJECTFILE_H
11+
12+
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
13+
14+
namespace llvm {
15+
16+
class XtensaElfTargetObjectFile : public TargetLoweringObjectFileELF {
17+
public:
18+
XtensaElfTargetObjectFile() : TargetLoweringObjectFileELF() {}
19+
20+
void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
21+
};
22+
23+
} // end namespace llvm
24+
25+
#endif // LLVM_LIB_TARGET_XTENSA_XTENSATARGETOBJECTFILE_H

0 commit comments

Comments
 (0)