LLVM  8.0.1
Public Member Functions | Static Public Member Functions | List of all members
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:
Inheritance graph
[legend]
Collaboration diagram for llvm::SCEVUnionPredicate:
Collaboration graph
[legend]

Public Member Functions

 SCEVUnionPredicate ()
 Union predicates don't get cached so create a dummy set ID for it. More...
 
const SmallVectorImpl< const SCEVPredicate * > & getPredicates () const
 
void add (const SCEVPredicate *N)
 Adds a predicate to this union. More...
 
ArrayRef< const SCEVPredicate * > getPredicatesForExpr (const SCEV *Expr)
 Returns a reference to a vector containing all predicates which apply to Expr. More...
 
bool isAlwaysTrue () const override
 Implementation of the SCEVPredicate interface. More...
 
bool implies (const SCEVPredicate *N) const override
 Returns true if this predicate implies N. More...
 
void print (raw_ostream &OS, unsigned Depth) const override
 Prints a textual representation of this predicate with an indentation of Depth. More...
 
const SCEVgetExpr () const override
 Returns the SCEV to which this predicate applies, or nullptr if this is a SCEVUnionPredicate. More...
 
unsigned getComplexity () const override
 We estimate the complexity of a union predicate as the size number of predicates in the union. More...
 
- Public Member Functions inherited from llvm::SCEVPredicate
 SCEVPredicate (const FoldingSetNodeIDRef ID, SCEVPredicateKind Kind)
 SCEV predicates. More...
 
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: More...
 

Additional Inherited Members

- Public Types inherited from llvm::SCEVPredicate
enum  SCEVPredicateKind { P_Union, P_Equal, 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 381 of file ScalarEvolution.h.

Constructor & Destructor Documentation

◆ SCEVUnionPredicate()

SCEVUnionPredicate::SCEVUnionPredicate ( )

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

Definition at line 12228 of file ScalarEvolution.cpp.

Member Function Documentation

◆ add()

void SCEVUnionPredicate::add ( const SCEVPredicate N)

◆ classof()

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

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

Definition at line 417 of file ScalarEvolution.h.

References llvm::SCEVPredicate::getKind().

◆ 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 414 of file ScalarEvolution.h.

References llvm::SmallVectorBase::size().

Referenced by isLoadConditional().

◆ getExpr()

const SCEV * SCEVUnionPredicate::getExpr ( ) const
overridevirtual

Returns the SCEV to which this predicate applies, or nullptr if this is a SCEVUnionPredicate.

Implements llvm::SCEVPredicate.

Definition at line 12258 of file ScalarEvolution.cpp.

◆ getPredicates()

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

◆ getPredicatesForExpr()

ArrayRef< const SCEVPredicate * > SCEVUnionPredicate::getPredicatesForExpr ( const SCEV Expr)

Returns a reference to a vector containing all predicates which apply to Expr.

Definition at line 12237 of file ScalarEvolution.cpp.

References llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), and I.

Referenced by llvm::ScalarEvolution::getWrapPredicate().

◆ implies()

bool SCEVUnionPredicate::implies ( const SCEVPredicate N) const
overridevirtual

◆ isAlwaysTrue()

bool SCEVUnionPredicate::isAlwaysTrue ( ) const
overridevirtual

Implementation of the SCEVPredicate interface.

Implements llvm::SCEVPredicate.

Definition at line 12231 of file ScalarEvolution.cpp.

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

Referenced by llvm::LoopVersioning::annotateInstWithNoAlias(), and isLoadConditional().

◆ 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 12260 of file ScalarEvolution.cpp.

Referenced by PrintLoopInfo().


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