struct AAPointerInfo

Declaration

struct AAPointerInfo : public AbstractAttribute { /* full declaration omitted */ };

Description

An abstract interface for struct information.

Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4911

Inherits from: AbstractAttribute

Member Variables

public static const char ID
Unique ID (due to the unique address)

Inherited from AADepGraphNode:

protected Deps

Inherited from IRPosition:

public static EmptyKey
public static TombstoneKey

Method Overview

  • public AAPointerInfo(const llvm::IRPosition & IRP)
  • public static bool classof(const llvm::AbstractAttribute * AA)
  • public static llvm::AAPointerInfo & createForPosition(const llvm::IRPosition & IRP, llvm::Attributor & A)
  • public virtual bool forallInterferingAccesses(llvm::AAPointerInfo::OffsetAndSize OAS, function_ref<bool (const llvm::AAPointerInfo::Access &, bool)> CB) const
  • public virtual bool forallInterferingAccesses(llvm::Attributor & A, const llvm::AbstractAttribute & QueryingAA, llvm::Instruction & I, function_ref<bool (const llvm::AAPointerInfo::Access &, bool)> CB, bool & HasBeenWrittenTo) const
  • public const char * getIdAddr() const
  • public const std::string getName() const

Inherited from AbstractAttribute:

Inherited from AADepGraphNode:

Inherited from IRPosition:

Methods

AAPointerInfo(const llvm::IRPosition& IRP)

Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4912

Parameters

const llvm::IRPosition& IRP

static bool classof(
    const llvm::AbstractAttribute* AA)

Description

This function should return true if the type of the \p AA is AAPointerInfo

Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:5094

Parameters

const llvm::AbstractAttribute* AA

static llvm::AAPointerInfo& createForPosition(
    const llvm::IRPosition& IRP,
    llvm::Attributor& A)

Description

Create an abstract attribute view for the position \p IRP.

Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:5030

Parameters

const llvm::IRPosition& IRP
llvm::Attributor& A

virtual bool forallInterferingAccesses(
    llvm::AAPointerInfo::OffsetAndSize OAS,
    function_ref<
        bool(const llvm::AAPointerInfo::Access&,
             bool)> CB) const

Description

Call \p CB on all accesses that might interfere with \p OAS and return true if all such accesses were known and the callback returned true for all of them, false otherwise. An access interferes with an offset-size pair if it might read or write that memory region.

Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:5077

Parameters

llvm::AAPointerInfo::OffsetAndSize OAS
function_ref<bool( const llvm::AAPointerInfo::Access&, bool)> CB

virtual bool forallInterferingAccesses(
    llvm::Attributor& A,
    const llvm::AbstractAttribute& QueryingAA,
    llvm::Instruction& I,
    function_ref<
        bool(const llvm::AAPointerInfo::Access&,
             bool)> CB,
    bool& HasBeenWrittenTo) const

Description

Call \p CB on all accesses that might interfere with \p I and return true if all such accesses were known and the callback returned true for all of them, false otherwise. In contrast to forallInterferingAccesses this function will perform reasoning to exclude write accesses that cannot affect the load even if they on the surface look as if they would. The flag \p HasBeenWrittenTo will be set to true if we know that \p I does not read the intial value of the underlying memory.

Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:5088

Parameters

llvm::Attributor& A
const llvm::AbstractAttribute& QueryingAA
llvm::Instruction& I
function_ref<bool( const llvm::AAPointerInfo::Access&, bool)> CB
bool& HasBeenWrittenTo

const char* getIdAddr() const

Description

See AbstractAttribute::getIdAddr()

Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:5036

const std::string getName() const

Description

See AbstractAttribute::getName()

Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:5033