xref: /minix3/external/bsd/llvm/dist/llvm/lib/Target/Hexagon/HexagonTargetObjectFile.h (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1f4a2713aSLionel Sambuc //===-- HexagonTargetAsmInfo.h - Hexagon asm properties --------*- C++ -*--===//
2f4a2713aSLionel Sambuc //
3f4a2713aSLionel Sambuc //                     The LLVM Compiler Infrastructure
4f4a2713aSLionel Sambuc //
5f4a2713aSLionel Sambuc // This file is distributed under the University of Illinois Open Source
6f4a2713aSLionel Sambuc // License. See LICENSE.TXT for details.
7f4a2713aSLionel Sambuc //
8f4a2713aSLionel Sambuc //===----------------------------------------------------------------------===//
9f4a2713aSLionel Sambuc 
10*0a6a1f1dSLionel Sambuc #ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONTARGETOBJECTFILE_H
11*0a6a1f1dSLionel Sambuc #define LLVM_LIB_TARGET_HEXAGON_HEXAGONTARGETOBJECTFILE_H
12f4a2713aSLionel Sambuc 
13f4a2713aSLionel Sambuc #include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
14f4a2713aSLionel Sambuc #include "llvm/MC/MCSectionELF.h"
15f4a2713aSLionel Sambuc 
16f4a2713aSLionel Sambuc namespace llvm {
17f4a2713aSLionel Sambuc 
18f4a2713aSLionel Sambuc   class HexagonTargetObjectFile : public TargetLoweringObjectFileELF {
19f4a2713aSLionel Sambuc     const MCSectionELF *SmallDataSection;
20f4a2713aSLionel Sambuc     const MCSectionELF *SmallBSSSection;
21f4a2713aSLionel Sambuc   public:
22*0a6a1f1dSLionel Sambuc     void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
23f4a2713aSLionel Sambuc 
24f4a2713aSLionel Sambuc     /// IsGlobalInSmallSection - Return true if this global address should be
25f4a2713aSLionel Sambuc     /// placed into small data/bss section.
26f4a2713aSLionel Sambuc     bool IsGlobalInSmallSection(const GlobalValue *GV,
27f4a2713aSLionel Sambuc                                 const TargetMachine &TM,
28f4a2713aSLionel Sambuc                                 SectionKind Kind) const;
29f4a2713aSLionel Sambuc     bool IsGlobalInSmallSection(const GlobalValue *GV,
30f4a2713aSLionel Sambuc                                 const TargetMachine &TM) const;
31f4a2713aSLionel Sambuc 
32f4a2713aSLionel Sambuc     bool IsSmallDataEnabled () const;
33f4a2713aSLionel Sambuc     const MCSection *SelectSectionForGlobal(const GlobalValue *GV,
34*0a6a1f1dSLionel Sambuc                                         SectionKind Kind, Mangler &Mang,
35*0a6a1f1dSLionel Sambuc                                         const TargetMachine &TM) const override;
36f4a2713aSLionel Sambuc   };
37f4a2713aSLionel Sambuc 
38f4a2713aSLionel Sambuc } // namespace llvm
39f4a2713aSLionel Sambuc 
40f4a2713aSLionel Sambuc #endif
41