class TLSVariableHoistPass

Declaration

class TLSVariableHoistPass : public PassInfoMixin { /* full declaration omitted */ };

Description

A CRTP mix-in to automatically provide informational APIs needed for passes. This provides some boilerplate for types that are passes.

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:103

Inherits from: PassInfoMixin

Member Variables

private llvm::DominatorTree* DT
private llvm::LoopInfo* LI
private llvm::TLSVariableHoistPass::TLSCandMapType TLSCandMap

Method Overview

  • private void collectTLSCandidate(llvm::Instruction * Inst)
  • private void collectTLSCandidates(llvm::Function & Fn)
  • private BasicBlock::iterator findInsertPos(llvm::Function & Fn, llvm::GlobalVariable * GV, llvm::BasicBlock *& PosBB)
  • private llvm::Instruction * genBitCastInst(llvm::Function & Fn, llvm::GlobalVariable * GV)
  • private llvm::Instruction * getDomInst(llvm::Instruction * I1, llvm::Instruction * I2)
  • private llvm::Instruction * getNearestLoopDomInst(llvm::BasicBlock * BB, llvm::Loop * L)
  • public llvm::PreservedAnalyses run(llvm::Function & F, llvm::FunctionAnalysisManager & AM)
  • public bool runImpl(llvm::Function & F, llvm::DominatorTree & DT, llvm::LoopInfo & LI)
  • private bool tryReplaceTLSCandidate(llvm::Function & Fn, llvm::GlobalVariable * GV)
  • private bool tryReplaceTLSCandidates(llvm::Function & Fn)

Methods

void collectTLSCandidate(llvm::Instruction* Inst)

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:119

Parameters

llvm::Instruction* Inst

void collectTLSCandidates(llvm::Function& Fn)

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:118

Parameters

llvm::Function& Fn

BasicBlock::iterator findInsertPos(
    llvm::Function& Fn,
    llvm::GlobalVariable* GV,
    llvm::BasicBlock*& PosBB)

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:122

Parameters

llvm::Function& Fn
llvm::GlobalVariable* GV
llvm::BasicBlock*& PosBB

llvm::Instruction* genBitCastInst(
    llvm::Function& Fn,
    llvm::GlobalVariable* GV)

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:124

Parameters

llvm::Function& Fn
llvm::GlobalVariable* GV

llvm::Instruction* getDomInst(
    llvm::Instruction* I1,
    llvm::Instruction* I2)

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:121

Parameters

llvm::Instruction* I1
llvm::Instruction* I2

llvm::Instruction* getNearestLoopDomInst(
    llvm::BasicBlock* BB,
    llvm::Loop* L)

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:120

Parameters

llvm::BasicBlock* BB
llvm::Loop* L

llvm::PreservedAnalyses run(
    llvm::Function& F,
    llvm::FunctionAnalysisManager& AM)

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:105

Parameters

llvm::Function& F
llvm::FunctionAnalysisManager& AM

bool runImpl(llvm::Function& F,
             llvm::DominatorTree& DT,
             llvm::LoopInfo& LI)

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:108

Parameters

llvm::Function& F
llvm::DominatorTree& DT
llvm::LoopInfo& LI

bool tryReplaceTLSCandidate(
    llvm::Function& Fn,
    llvm::GlobalVariable* GV)

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:126

Parameters

llvm::Function& Fn
llvm::GlobalVariable* GV

bool tryReplaceTLSCandidates(llvm::Function& Fn)

Declared at: llvm/include/llvm/Transforms/Scalar/TLSVariableHoist.h:125

Parameters

llvm::Function& Fn