LLVM  8.0.1
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
llvm::SCEVPredicate Class Referenceabstract

This class represents an assumption made using SCEV expressions which can be checked at run-time. More...

#include "llvm/Analysis/ScalarEvolution.h"

Inheritance diagram for llvm::SCEVPredicate:
Inheritance graph
[legend]
Collaboration diagram for llvm::SCEVPredicate:
Collaboration graph
[legend]

Public Types

enum  SCEVPredicateKind { P_Union, P_Equal, P_Wrap }
 

Public Member Functions

 SCEVPredicate (const FoldingSetNodeIDRef ID, SCEVPredicateKind Kind)
 SCEV predicates. More...
 
SCEVPredicateKind getKind () const
 
virtual unsigned getComplexity () const
 Returns the estimated complexity of this predicate. More...
 
virtual bool isAlwaysTrue () const =0
 Returns true if the predicate is always true. More...
 
virtual bool implies (const SCEVPredicate *N) const =0
 Returns true if this predicate implies N. More...
 
virtual void print (raw_ostream &OS, unsigned Depth=0) const =0
 Prints a textual representation of this predicate with an indentation of Depth. More...
 
virtual const SCEVgetExpr () const =0
 Returns the SCEV to which this predicate applies, or nullptr if this is a SCEVUnionPredicate. More...
 
- Public Member Functions inherited from llvm::FoldingSetBase::Node
 Node ()=default
 
void * getNextInBucket () const
 
void SetNextInBucket (void *N)
 

Protected Member Functions

 ~SCEVPredicate ()=default
 
 SCEVPredicate (const SCEVPredicate &)=default
 
SCEVPredicateoperator= (const SCEVPredicate &)=default
 

Protected Attributes

SCEVPredicateKind Kind
 

Friends

struct FoldingSetTrait< SCEVPredicate >
 

Detailed Description

This class represents an assumption made using SCEV expressions which can be checked at run-time.

Definition at line 182 of file ScalarEvolution.h.

Member Enumeration Documentation

◆ SCEVPredicateKind

Enumerator
P_Union 
P_Equal 
P_Wrap 

Definition at line 190 of file ScalarEvolution.h.

Constructor & Destructor Documentation

◆ ~SCEVPredicate()

llvm::SCEVPredicate::~SCEVPredicate ( )
protecteddefault

◆ SCEVPredicate() [1/2]

llvm::SCEVPredicate::SCEVPredicate ( const SCEVPredicate )
protecteddefault

◆ SCEVPredicate() [2/2]

SCEVPredicate::SCEVPredicate ( const FoldingSetNodeIDRef  ID,
SCEVPredicateKind  Kind 
)

SCEV predicates.

Definition at line 12146 of file ScalarEvolution.cpp.

Member Function Documentation

◆ getComplexity()

virtual unsigned llvm::SCEVPredicate::getComplexity ( ) const
inlinevirtual

Returns the estimated complexity of this predicate.

This is roughly measured in the number of run-time checks required.

Reimplemented in llvm::SCEVUnionPredicate.

Definition at line 205 of file ScalarEvolution.h.

References llvm::Depth, llvm::HexagonMCInstrInfo::getExpr(), N, and llvm::SCEV::print().

◆ getExpr()

virtual const SCEV* llvm::SCEVPredicate::getExpr ( ) const
pure virtual

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

Implemented in llvm::SCEVUnionPredicate, llvm::SCEVWrapPredicate, and llvm::SCEVEqualPredicate.

Referenced by llvm::SCEVUnionPredicate::add(), and llvm::SCEVUnionPredicate::implies().

◆ getKind()

SCEVPredicateKind llvm::SCEVPredicate::getKind ( ) const
inline

◆ implies()

virtual bool llvm::SCEVPredicate::implies ( const SCEVPredicate N) const
pure virtual

Returns true if this predicate implies N.

Implemented in llvm::SCEVUnionPredicate, llvm::SCEVWrapPredicate, and llvm::SCEVEqualPredicate.

Referenced by llvm::SCEVUnionPredicate::implies().

◆ isAlwaysTrue()

virtual bool llvm::SCEVPredicate::isAlwaysTrue ( ) const
pure virtual

Returns true if the predicate is always true.

This means that no assumptions were made and nothing needs to be checked at run-time.

Implemented in llvm::SCEVUnionPredicate, llvm::SCEVWrapPredicate, and llvm::SCEVEqualPredicate.

Referenced by llvm::SCEVUnionPredicate::isAlwaysTrue().

◆ operator=()

SCEVPredicate& llvm::SCEVPredicate::operator= ( const SCEVPredicate )
protecteddefault

◆ print()

virtual void llvm::SCEVPredicate::print ( raw_ostream OS,
unsigned  Depth = 0 
) const
pure virtual

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

Implemented in llvm::SCEVUnionPredicate, llvm::SCEVWrapPredicate, and llvm::SCEVEqualPredicate.

Referenced by llvm::operator<<().

Friends And Related Function Documentation

◆ FoldingSetTrait< SCEVPredicate >

friend struct FoldingSetTrait< SCEVPredicate >
friend

Definition at line 183 of file ScalarEvolution.h.

Member Data Documentation

◆ Kind

SCEVPredicateKind llvm::SCEVPredicate::Kind
protected

Definition at line 193 of file ScalarEvolution.h.


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