45 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_LANAI_LANAITARGETOBJECTFILE_H10#define LLVM_LIB_TARGET_LANAI_LANAITARGETOBJECTFILE_H11 12#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"13 14namespace llvm {15class 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 24public:25 void Initialize(MCContext &Ctx, const TargetMachine &TM) override;26 27 /// Return true if this global address should be placed into small data/bss28 /// 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 llvm43 44#endif // LLVM_LIB_TARGET_LANAI_LANAITARGETOBJECTFILE_H45