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