LLVM 22.0.0git
llvm::SCEVUnionPredicate Class Referencefinal

This class represents a composition of other SCEV predicates, and is the class that most clients will interact with. More...

#include "llvm/Analysis/ScalarEvolution.h"

Inheritance diagram for llvm::SCEVUnionPredicate:
[legend]

Public Member Functions

 SCEVUnionPredicate (ArrayRef< const SCEVPredicate * > Preds, ScalarEvolution &SE)
 Union predicates don't get cached so create a dummy set ID for it.
ArrayRef< const SCEVPredicate * > getPredicates () const
bool isAlwaysTrue () const override
 Implementation of the SCEVPredicate interface.
bool implies (const SCEVPredicate *N, ScalarEvolution &SE) const override
 Returns true if this predicate implies N.
void print (raw_ostream &OS, unsigned Depth) const override
 Prints a textual representation of this predicate with an indentation of Depth.
unsigned getComplexity () const override
 We estimate the complexity of a union predicate as the size number of predicates in the union.
Public Member Functions inherited from llvm::SCEVPredicate
LLVM_ABI SCEVPredicate (const FoldingSetNodeIDRef ID, SCEVPredicateKind Kind)
 SCEV predicates.
SCEVPredicateKind getKind () const
Public Member Functions inherited from llvm::FoldingSetBase::Node
 Node ()=default
void * getNextInBucket () const
void SetNextInBucket (void *N)

Static Public Member Functions

static bool classof (const SCEVPredicate *P)
 Methods for support type inquiry through isa, cast, and dyn_cast:

Additional Inherited Members

Public Types inherited from llvm::SCEVPredicate
enum  SCEVPredicateKind { P_Union , P_Compare , P_Wrap }
Protected Member Functions inherited from llvm::SCEVPredicate
 ~SCEVPredicate ()=default
 SCEVPredicate (const SCEVPredicate &)=default
SCEVPredicateoperator= (const SCEVPredicate &)=default
Protected Attributes inherited from llvm::SCEVPredicate
SCEVPredicateKind Kind

Detailed Description

This class represents a composition of other SCEV predicates, and is the class that most clients will interact with.

This is equivalent to a logical "AND" of all the predicates in the union.

NB! Unlike other SCEVPredicate sub-classes this class does not live in the ScalarEvolution::Preds folding set. This is why the add function is sound.

Definition at line 413 of file ScalarEvolution.h.

Constructor & Destructor Documentation

◆ SCEVUnionPredicate()

SCEVUnionPredicate::SCEVUnionPredicate ( ArrayRef< const SCEVPredicate * > Preds,
ScalarEvolution & SE )

Union predicates don't get cached so create a dummy set ID for it.

Definition at line 15172 of file ScalarEvolution.cpp.

References P, llvm::SCEVPredicate::P_Union, and llvm::SCEVPredicate::SCEVPredicate().

Member Function Documentation

◆ classof()

bool llvm::SCEVUnionPredicate::classof ( const SCEVPredicate * P)
inlinestatic

Methods for support type inquiry through isa, cast, and dyn_cast:

Definition at line 440 of file ScalarEvolution.h.

References P, llvm::SCEVPredicate::P_Union, and llvm::SCEVPredicate::SCEVPredicate().

◆ getComplexity()

unsigned llvm::SCEVUnionPredicate::getComplexity ( ) const
inlineoverridevirtual

We estimate the complexity of a union predicate as the size number of predicates in the union.

Reimplemented from llvm::SCEVPredicate.

Definition at line 437 of file ScalarEvolution.h.

◆ getPredicates()

ArrayRef< const SCEVPredicate * > llvm::SCEVUnionPredicate::getPredicates ( ) const
inline

Definition at line 428 of file ScalarEvolution.h.

◆ implies()

bool SCEVUnionPredicate::implies ( const SCEVPredicate * N,
ScalarEvolution & SE ) const
overridevirtual

Returns true if this predicate implies N.

Implements llvm::SCEVPredicate.

Definition at line 15184 of file ScalarEvolution.cpp.

References llvm::all_of(), llvm::any_of(), llvm::dyn_cast(), I, N, and llvm::SCEVPredicate::SCEVPredicate().

◆ isAlwaysTrue()

bool SCEVUnionPredicate::isAlwaysTrue ( ) const
overridevirtual

Implementation of the SCEVPredicate interface.

Implements llvm::SCEVPredicate.

Definition at line 15179 of file ScalarEvolution.cpp.

References llvm::all_of(), I, and llvm::SCEVPredicate::SCEVPredicate().

Referenced by dumpExampleDependence().

◆ print()

void SCEVUnionPredicate::print ( raw_ostream & OS,
unsigned Depth ) const
overridevirtual

Prints a textual representation of this predicate with an indentation of Depth.

Implements llvm::SCEVPredicate.

Definition at line 15195 of file ScalarEvolution.cpp.

References llvm::Depth.

Referenced by dumpExampleDependence().


The documentation for this class was generated from the following files: