struct ScalarEvolution::ExitLimit

Declaration

struct ScalarEvolution::ExitLimit { /* full declaration omitted */ };

Description

Information about the number of loop iterations for which a loop exit's branch condition evaluates to the not-taken path. This is a temporary pair of exact and max expressions that are eventually summarized in ExitNotTakenInfo and BackedgeTakenInfo.

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1300

Member Variables

public const llvm::SCEV* ExactNotTaken
public const llvm::SCEV* MaxNotTaken
public bool MaxOrZero = false
public SmallPtrSet<const llvm::SCEVPredicate*, 4> Predicates
A set of predicate guards for this ExitLimit. The result is only valid if all of the predicates in \c Predicates evaluate to 'true' at run-time.

Method Overview

  • public ExitLimit(const llvm::SCEV * E)
  • public ExitLimit(const llvm::SCEV * E, const llvm::SCEV * M, bool MaxOrZero, ArrayRef<const SmallPtrSetImpl<const llvm::SCEVPredicate *> *> PredSetList)
  • public ExitLimit(const llvm::SCEV * E, const llvm::SCEV * M, bool MaxOrZero, const SmallPtrSetImpl<const llvm::SCEVPredicate *> & PredSet)
  • public ExitLimit(const llvm::SCEV * E, const llvm::SCEV * M, bool MaxOrZero)
  • public void addPredicate(const llvm::SCEVPredicate * P)
  • public bool hasAnyInfo() const
  • public bool hasFullInfo() const

Methods

ExitLimit(const llvm::SCEV* E)

Description

Construct either an exact exit limit from a constant, or an unknown one from a SCEVCouldNotCompute. No other types of SCEVs are allowed as arguments and asserts enforce that internally.

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1320

Parameters

const llvm::SCEV* E

ExitLimit(
    const llvm::SCEV* E,
    const llvm::SCEV* M,
    bool MaxOrZero,
    ArrayRef<const SmallPtrSetImpl<
        const llvm::SCEVPredicate*>*> PredSetList)

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1322

Parameters

const llvm::SCEV* E
const llvm::SCEV* M
bool MaxOrZero
ArrayRef<const SmallPtrSetImpl< const llvm::SCEVPredicate*>*> PredSetList

ExitLimit(
    const llvm::SCEV* E,
    const llvm::SCEV* M,
    bool MaxOrZero,
    const SmallPtrSetImpl<
        const llvm::SCEVPredicate*>& PredSet)

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1326

Parameters

const llvm::SCEV* E
const llvm::SCEV* M
bool MaxOrZero
const SmallPtrSetImpl<const llvm::SCEVPredicate*>& PredSet

ExitLimit(const llvm::SCEV* E,
          const llvm::SCEV* M,
          bool MaxOrZero)

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1329

Parameters

const llvm::SCEV* E
const llvm::SCEV* M
bool MaxOrZero

void addPredicate(const llvm::SCEVPredicate* P)

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1312

Parameters

const llvm::SCEVPredicate* P

bool hasAnyInfo() const

Description

Test whether this ExitLimit contains any computed information, or whether it's all SCEVCouldNotCompute values.

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1333

bool hasFullInfo() const

Description

Test whether this ExitLimit contains all information.

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1339