1234285Sdim//===-- HexagonTargetAsmInfo.h - Hexagon asm properties --------*- C++ -*--===// 2234285Sdim// 3234285Sdim// The LLVM Compiler Infrastructure 4234285Sdim// 5234285Sdim// This file is distributed under the University of Illinois Open Source 6234285Sdim// License. See LICENSE.TXT for details. 7234285Sdim// 8234285Sdim//===----------------------------------------------------------------------===// 9234285Sdim 10234285Sdim#ifndef HexagonTARGETOBJECTFILE_H 11234285Sdim#define HexagonTARGETOBJECTFILE_H 12234285Sdim 13234285Sdim#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h" 14234285Sdim#include "llvm/MC/MCSectionELF.h" 15234285Sdim 16234285Sdimnamespace llvm { 17234285Sdim 18234285Sdim class HexagonTargetObjectFile : public TargetLoweringObjectFileELF { 19234285Sdim const MCSectionELF *SmallDataSection; 20234285Sdim const MCSectionELF *SmallBSSSection; 21234285Sdim public: 22234285Sdim virtual void Initialize(MCContext &Ctx, const TargetMachine &TM); 23234285Sdim 24234285Sdim /// IsGlobalInSmallSection - Return true if this global address should be 25234285Sdim /// placed into small data/bss section. 26234285Sdim bool IsGlobalInSmallSection(const GlobalValue *GV, 27234285Sdim const TargetMachine &TM, 28234285Sdim SectionKind Kind) const; 29234285Sdim bool IsGlobalInSmallSection(const GlobalValue *GV, 30234285Sdim const TargetMachine &TM) const; 31234285Sdim 32263509Sdim bool IsSmallDataEnabled () const; 33234285Sdim const MCSection* SelectSectionForGlobal(const GlobalValue *GV, 34234285Sdim SectionKind Kind, 35234285Sdim Mangler *Mang, 36234285Sdim const TargetMachine &TM) const; 37234285Sdim }; 38234285Sdim 39234285Sdim} // namespace llvm 40234285Sdim 41234285Sdim#endif 42