#include "LanaiTargetObjectFile.h"
#include "LanaiSubtarget.h"
#include "LanaiTargetMachine.h"
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCSectionELF.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Target/TargetMachine.h"
usingnamespacellvm;
static cl::opt<unsigned> SSThreshold(
"lanai-ssection-threshold", cl::Hidden,
cl::desc("Small data and bss section threshold size (default=0)"),
cl::init(0));
void LanaiTargetObjectFile::Initialize(MCContext &Ctx,
const TargetMachine &TM) { … }
static bool isInSmallSection(uint64_t Size) { … }
bool LanaiTargetObjectFile::isGlobalInSmallSection(
const GlobalObject *GO, const TargetMachine &TM) const { … }
bool LanaiTargetObjectFile::isGlobalInSmallSection(const GlobalObject *GO,
const TargetMachine &TM,
SectionKind Kind) const { … }
bool LanaiTargetObjectFile::isGlobalInSmallSectionImpl(
const GlobalObject *GO, const TargetMachine &TM) const { … }
MCSection *LanaiTargetObjectFile::SelectSectionForGlobal(
const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const { … }
bool LanaiTargetObjectFile::isConstantInSmallSection(const DataLayout &DL,
const Constant *CN) const { … }
MCSection *LanaiTargetObjectFile::getSectionForConstant(
const DataLayout &DL, SectionKind Kind, const Constant *C,
Align &Alignment) const { … }