struct MemoryOpRemark

Declaration

struct MemoryOpRemark { /* full declaration omitted */ };

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:34

Member Variables

public llvm::OptimizationRemarkEmitter& ORE
public llvm::StringRef RemarkPass
public const llvm::DataLayout& DL
public const llvm::TargetLibraryInfo& TLI

Method Overview

  • public MemoryOpRemark(llvm::OptimizationRemarkEmitter & ORE, llvm::StringRef RemarkPass, const llvm::DataLayout & DL, const llvm::TargetLibraryInfo & TLI)
  • public static bool canHandle(const llvm::Instruction * I, const llvm::TargetLibraryInfo & TLI)
  • protected virtual llvm::DiagnosticKind diagnosticKind() const
  • protected virtual std::string explainSource(llvm::StringRef Type) const
  • private template <typename... Ts>std::unique_ptr<DiagnosticInfoIROptimization> makeRemark(Ts... Args)
  • protected virtual llvm::StringRef remarkName(llvm::MemoryOpRemark::RemarkKind RK) const
  • public void visit(const llvm::Instruction * I)
  • private void visitCall(const llvm::CallInst & CI)
  • private template <typename FTy>void visitCallee(FTy F, bool KnownLibCall, llvm::DiagnosticInfoIROptimization & R)
  • private void visitIntrinsicCall(const llvm::IntrinsicInst & II)
  • private void visitKnownLibCall(const llvm::CallInst & CI, llvm::LibFunc LF, llvm::DiagnosticInfoIROptimization & R)
  • private void visitPtr(llvm::Value * V, bool IsSrc, llvm::DiagnosticInfoIROptimization & R)
  • private void visitSizeOperand(llvm::Value * V, llvm::DiagnosticInfoIROptimization & R)
  • private void visitStore(const llvm::StoreInst & SI)
  • private void visitUnknown(const llvm::Instruction & I)
  • private void visitVariable(const llvm::Value * V, SmallVectorImpl<llvm::MemoryOpRemark::VariableInfo> & Result)
  • public virtual ~MemoryOpRemark()

Methods

MemoryOpRemark(
    llvm::OptimizationRemarkEmitter& ORE,
    llvm::StringRef RemarkPass,
    const llvm::DataLayout& DL,
    const llvm::TargetLibraryInfo& TLI)

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:40

Parameters

llvm::OptimizationRemarkEmitter& ORE
llvm::StringRef RemarkPass
const llvm::DataLayout& DL
const llvm::TargetLibraryInfo& TLI

static bool canHandle(
    const llvm::Instruction* I,
    const llvm::TargetLibraryInfo& TLI)

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:47

Parameters

const llvm::Instruction* I
const llvm::TargetLibraryInfo& TLI

Returns

true iff the instruction is understood by MemoryOpRemark.

virtual llvm::DiagnosticKind diagnosticKind()
    const

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:57

virtual std::string explainSource(
    llvm::StringRef Type) const

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:52

Parameters

llvm::StringRef Type

template <typename... Ts>
std::unique_ptr<DiagnosticInfoIROptimization>
makeRemark(Ts... Args)

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:61

Templates

Ts

Parameters

Ts... Args

virtual llvm::StringRef remarkName(
    llvm::MemoryOpRemark::RemarkKind RK) const

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:55

Parameters

llvm::MemoryOpRemark::RemarkKind RK

void visit(const llvm::Instruction* I)

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:49

Parameters

const llvm::Instruction* I

void visitCall(const llvm::CallInst& CI)

Description

Emit a remark using information from known function calls.

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:70

Parameters

const llvm::CallInst& CI

template <typename FTy>
void visitCallee(
    FTy F,
    bool KnownLibCall,
    llvm::DiagnosticInfoIROptimization& R)

Description

Add callee information to a remark: whether it's known, the function name, etc.

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:75

Templates

FTy

Parameters

FTy F
bool KnownLibCall
llvm::DiagnosticInfoIROptimization& R

void visitIntrinsicCall(
    const llvm::IntrinsicInst& II)

Description

Emit a remark using information from known intrinsic calls.

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:68

Parameters

const llvm::IntrinsicInst& II

void visitKnownLibCall(
    const llvm::CallInst& CI,
    llvm::LibFunc LF,
    llvm::DiagnosticInfoIROptimization& R)

Description

Add operand information to a remark based on knowledge we have for known libcalls.

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:78

Parameters

const llvm::CallInst& CI
llvm::LibFunc LF
llvm::DiagnosticInfoIROptimization& R

void visitPtr(
    llvm::Value* V,
    bool IsSrc,
    llvm::DiagnosticInfoIROptimization& R)

Description

Gather more information about \p V as a variable. This can be debug info, information from the alloca, etc. Since \p V can represent more than a single variable, they will all be added to the remark.

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:91

Parameters

llvm::Value* V
bool IsSrc
llvm::DiagnosticInfoIROptimization& R

void visitSizeOperand(
    llvm::Value* V,
    llvm::DiagnosticInfoIROptimization& R)

Description

Add the memory operation size to a remark.

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:81

Parameters

llvm::Value* V
llvm::DiagnosticInfoIROptimization& R

void visitStore(const llvm::StoreInst& SI)

Description

Emit a remark using information from the store's destination, size, etc.

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:64

Parameters

const llvm::StoreInst& SI

void visitUnknown(const llvm::Instruction& I)

Description

Emit a generic auto-init remark.

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:66

Parameters

const llvm::Instruction& I

void visitVariable(
    const llvm::Value* V,
    SmallVectorImpl<
        llvm::MemoryOpRemark::VariableInfo>&
        Result)

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:92

Parameters

const llvm::Value* V
SmallVectorImpl< llvm::MemoryOpRemark::VariableInfo>& Result

virtual ~MemoryOpRemark()

Declared at: llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h:44