Home | History | Annotate | Line # | Download | only in Lanai
      1 //===-- LanaiTargetObjectFile.h - Lanai Object Info -----------------------===//
      2 //
      3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
      4 // See https://llvm.org/LICENSE.txt for license information.
      5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
      6 //
      7 //===----------------------------------------------------------------------===//
      8 
      9 #ifndef LLVM_LIB_TARGET_LANAI_LANAITARGETOBJECTFILE_H
     10 #define LLVM_LIB_TARGET_LANAI_LANAITARGETOBJECTFILE_H
     11 
     12 #include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
     13 
     14 namespace llvm {
     15 class LanaiTargetObjectFile : public TargetLoweringObjectFileELF {
     16   MCSection *SmallDataSection;
     17   MCSection *SmallBSSSection;
     18 
     19   bool isGlobalInSmallSection(const GlobalObject *GO, const TargetMachine &TM,
     20                               SectionKind Kind) const;
     21   bool isGlobalInSmallSectionImpl(const GlobalObject *GO,
     22                                   const TargetMachine &TM) const;
     23 
     24 public:
     25   void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
     26 
     27   /// Return true if this global address should be placed into small data/bss
     28   /// section.
     29   bool isGlobalInSmallSection(const GlobalObject *GO,
     30                               const TargetMachine &TM) const;
     31 
     32   MCSection *SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind,
     33                                     const TargetMachine &TM) const override;
     34 
     35   /// Return true if this constant should be placed into small data section.
     36   bool isConstantInSmallSection(const DataLayout &DL, const Constant *CN) const;
     37 
     38   MCSection *getSectionForConstant(const DataLayout &DL, SectionKind Kind,
     39                                    const Constant *C,
     40                                    Align &Alignment) const override;
     41 };
     42 } // end namespace llvm
     43 
     44 #endif // LLVM_LIB_TARGET_LANAI_LANAITARGETOBJECTFILE_H
     45