LLVM API Documentation

HexagonTargetObjectFile.h
Go to the documentation of this file.
00001 //===-- HexagonTargetAsmInfo.h - Hexagon asm properties --------*- C++ -*--===//
00002 //
00003 //                     The LLVM Compiler Infrastructure
00004 //
00005 // This file is distributed under the University of Illinois Open Source
00006 // License. See LICENSE.TXT for details.
00007 //
00008 //===----------------------------------------------------------------------===//
00009 
00010 #ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONTARGETOBJECTFILE_H
00011 #define LLVM_LIB_TARGET_HEXAGON_HEXAGONTARGETOBJECTFILE_H
00012 
00013 #include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
00014 #include "llvm/MC/MCSectionELF.h"
00015 
00016 namespace llvm {
00017 
00018   class HexagonTargetObjectFile : public TargetLoweringObjectFileELF {
00019     const MCSectionELF *SmallDataSection;
00020     const MCSectionELF *SmallBSSSection;
00021   public:
00022     void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
00023 
00024     /// IsGlobalInSmallSection - Return true if this global address should be
00025     /// placed into small data/bss section.
00026     bool IsGlobalInSmallSection(const GlobalValue *GV,
00027                                 const TargetMachine &TM,
00028                                 SectionKind Kind) const;
00029     bool IsGlobalInSmallSection(const GlobalValue *GV,
00030                                 const TargetMachine &TM) const;
00031 
00032     bool IsSmallDataEnabled () const;
00033     const MCSection *SelectSectionForGlobal(const GlobalValue *GV,
00034                                         SectionKind Kind, Mangler &Mang,
00035                                         const TargetMachine &TM) const override;
00036   };
00037 
00038 } // namespace llvm
00039 
00040 #endif