brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 550aac7 Raw
60 lines · c
1//===-- HexagonTargetObjectFile.h -----------------------------------------===//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_HEXAGON_HEXAGONTARGETOBJECTFILE_H10#define LLVM_LIB_TARGET_HEXAGON_HEXAGONTARGETOBJECTFILE_H11 12#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"13#include "llvm/MC/MCSectionELF.h"14 15namespace llvm {16  class Type;17 18  class HexagonTargetObjectFile : public TargetLoweringObjectFileELF {19  public:20    void Initialize(MCContext &Ctx, const TargetMachine &TM) override;21 22    MCSection *SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind,23                                      const TargetMachine &TM) const override;24 25    MCSection *getExplicitSectionGlobal(const GlobalObject *GO,26                                        SectionKind Kind,27                                        const TargetMachine &TM) const override;28 29    bool isGlobalInSmallSection(const GlobalObject *GO,30                                const TargetMachine &TM) const;31 32    bool isSmallDataEnabled(const TargetMachine &TM) const;33 34    unsigned getSmallDataSize() const;35 36    bool shouldPutJumpTableInFunctionSection(bool UsesLabelDifference,37                                             const Function &F) const override;38 39    const Function *getLutUsedFunction(const GlobalObject *GO) const;40 41  private:42    MCSectionELF *SmallDataSection;43    MCSectionELF *SmallBSSSection;44 45    unsigned getSmallestAddressableSize(const Type *Ty, const GlobalValue *GV,46        const TargetMachine &TM) const;47 48    MCSection *selectSmallSectionForGlobal(const GlobalObject *GO,49                                           SectionKind Kind,50                                           const TargetMachine &TM) const;51 52    MCSection *selectSectionForLookupTable(const GlobalObject *GO,53                                           const TargetMachine &TM,54                                           const Function *Fn) const;55  };56 57} // namespace llvm58 59#endif60