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 16namespace 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