LLVM  4.0.0
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 <ScalarEvolution.h>

Inheritance diagram for llvm::SCEVUnionPredicate:
[legend]
Collaboration diagram for llvm::SCEVUnionPredicate:
[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::FoldingSetImpl::Node
 Node ()
 
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 374 of file ScalarEvolution.h.

Constructor & Destructor Documentation

SCEVUnionPredicate::SCEVUnionPredicate ( )

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

Definition at line 10326 of file ScalarEvolution.cpp.

Member Function Documentation

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

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

Definition at line 409 of file ScalarEvolution.h.

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

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

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

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

Definition at line 387 of file ScalarEvolution.h.

Referenced by llvm::SCEVExpander::expandUnionPredicate().

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

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

Definition at line 10335 of file ScalarEvolution.cpp.

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

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

Returns true if this predicate implies N.

Implements llvm::SCEVPredicate.

Definition at line 10342 of file ScalarEvolution.cpp.

References llvm::all_of().

Referenced by add(), and llvm::PredicatedScalarEvolution::addPredicate().

bool SCEVUnionPredicate::isAlwaysTrue ( ) const
overridevirtual

Implementation of the SCEVPredicate interface.

Implements llvm::SCEVPredicate.

Definition at line 10329 of file ScalarEvolution.cpp.

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

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

References print().

Referenced by print(), and PrintLoopInfo().


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