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 const MCSectionELF *SmallDataSection; 20 const MCSectionELF *SmallBSSSection; 21 public: 22 void Initialize(MCContext &Ctx, const TargetMachine &TM) override; 23 24 /// IsGlobalInSmallSection - Return true if this global address should be 25 /// placed into small data/bss section. 26 bool IsGlobalInSmallSection(const GlobalValue *GV, 27 const TargetMachine &TM, 28 SectionKind Kind) const; 29 bool IsGlobalInSmallSection(const GlobalValue *GV, 30 const TargetMachine &TM) const; 31 32 bool IsSmallDataEnabled () const; 33 const MCSection *SelectSectionForGlobal(const GlobalValue *GV, 34 SectionKind Kind, Mangler &Mang, 35 const TargetMachine &TM) const override; 36 }; 37 38 } // namespace llvm 39 40 #endif 41