blob: b2daaaa9d364dc48b9ce6d79a7e68e9ff9c277b4 [file] [log] [blame]
Mandeep Singh Grang98bc25a2018-03-24 18:37:19 +00001//===-- RISCVTargetObjectFile.h - RISCV Object Info -*- C++ ---------*-===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// 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
Mandeep Singh Grang98bc25a2018-03-24 18:37:19 +00006//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIB_TARGET_RISCV_RISCVTARGETOBJECTFILE_H
10#define LLVM_LIB_TARGET_RISCV_RISCVTARGETOBJECTFILE_H
11
12#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
13
14namespace llvm {
15class RISCVTargetMachine;
16
17/// This implementation is used for RISCV ELF targets.
18class RISCVELFTargetObjectFile : public TargetLoweringObjectFileELF {
Shiva Chen7cc03bd2019-04-11 04:59:13 +000019 MCSection *SmallDataSection;
20 MCSection *SmallBSSSection;
21 unsigned SSThreshold = 8;
22
23public:
Mandeep Singh Grang98bc25a2018-03-24 18:37:19 +000024 void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
Shiva Chen7cc03bd2019-04-11 04:59:13 +000025
26 /// Return true if this global address should be placed into small data/bss
27 /// section.
28 bool isGlobalInSmallSection(const GlobalObject *GO,
29 const TargetMachine &TM) const;
30
31 MCSection *SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind,
32 const TargetMachine &TM) const override;
33
34 /// Return true if this constant should be placed into small data section.
35 bool isConstantInSmallSection(const DataLayout &DL, const Constant *CN) const;
36
37 MCSection *getSectionForConstant(const DataLayout &DL, SectionKind Kind,
38 const Constant *C,
39 unsigned &Align) const override;
40
41 void getModuleMetadata(Module &M) override;
42
43 bool isInSmallSection(uint64_t Size) const;
Mandeep Singh Grang98bc25a2018-03-24 18:37:19 +000044};
45
46} // end namespace llvm
47
48#endif