SVF
Public Member Functions | Public Attributes | List of all members
SVF::PTASCEV Class Reference

#include <DataFlowUtil.h>

Public Member Functions

 PTASCEV ()
 
 PTASCEV (const Value *p, const SCEV *s, ScalarEvolution *SE)
 Constructor. More...
 
 PTASCEV (const PTASCEV &ptase)
 Copy Constructor. More...
 
virtual ~PTASCEV ()
 Destructor. More...
 
bool operator< (const PTASCEV &rhs) const
 
PTASCEVoperator= (const PTASCEV &rhs)
 Overloading operator=. More...
 
bool operator== (const PTASCEV &rhs) const
 Overloading operator==. More...
 
bool operator!= (const PTASCEV &rhs) const
 Overloading operator==. More...
 

Public Attributes

const SCEVscev
 
const Valuestart
 
const Valuestep
 
const Valueptr
 
bool inloop
 
unsigned tripcount
 

Detailed Description

Wrapper for SCEV collected from function pass ScalarEvolution

Definition at line 43 of file DataFlowUtil.h.

Constructor & Destructor Documentation

◆ PTASCEV() [1/3]

SVF::PTASCEV::PTASCEV ( )
inline

Definition at line 47 of file DataFlowUtil.h.

47 :scev(nullptr), start(nullptr), step(nullptr),ptr(nullptr),inloop(false),tripcount(0) {}
const Value * ptr
Definition: DataFlowUtil.h:76
const Value * step
Definition: DataFlowUtil.h:75
const SCEV * scev
Definition: DataFlowUtil.h:73
const Value * start
Definition: DataFlowUtil.h:74
unsigned tripcount
Definition: DataFlowUtil.h:78

◆ PTASCEV() [2/3]

SVF::PTASCEV::PTASCEV ( const Value p,
const SCEV s,
ScalarEvolution SE 
)
inline

Constructor.

Definition at line 50 of file DataFlowUtil.h.

50  : scev(s),start(nullptr), step(nullptr), ptr(p), inloop(false), tripcount(0)
51  {
52  if(const SCEVAddRecExpr* ar = SVFUtil::dyn_cast<SCEVAddRecExpr>(s))
53  {
54  if (const SCEVConstant *startExpr = SVFUtil::dyn_cast<SCEVConstant>(ar->getStart()))
55  start = startExpr->getValue();
56  if (const SCEVConstant *stepExpr = SVFUtil::dyn_cast<SCEVConstant>(ar->getStepRecurrence(*SE)))
57  step = stepExpr->getValue();
58  tripcount = SE->getSmallConstantTripCount(const_cast<Loop*>(ar->getLoop()));
59  inloop = true;
60  }
61  }
const Value * ptr
Definition: DataFlowUtil.h:76
const Value * step
Definition: DataFlowUtil.h:75
llvm::SCEVAddRecExpr SCEVAddRecExpr
Definition: BasicTypes.h:187
llvm::SCEVConstant SCEVConstant
Definition: BasicTypes.h:188
const SCEV * scev
Definition: DataFlowUtil.h:73
const Value * start
Definition: DataFlowUtil.h:74
unsigned tripcount
Definition: DataFlowUtil.h:78

◆ PTASCEV() [3/3]

SVF::PTASCEV::PTASCEV ( const PTASCEV ptase)
inline

Copy Constructor.

Definition at line 63 of file DataFlowUtil.h.

63  : scev(ptase.scev), start(ptase.start), step(ptase.step), ptr(ptase.ptr), inloop(ptase.inloop),tripcount(ptase.tripcount)
64  {
65 
66  }
const Value * ptr
Definition: DataFlowUtil.h:76
const Value * step
Definition: DataFlowUtil.h:75
const SCEV * scev
Definition: DataFlowUtil.h:73
const Value * start
Definition: DataFlowUtil.h:74
unsigned tripcount
Definition: DataFlowUtil.h:78

◆ ~PTASCEV()

virtual SVF::PTASCEV::~PTASCEV ( )
inlinevirtual

Destructor.

Definition at line 69 of file DataFlowUtil.h.

70  {
71  }

Member Function Documentation

◆ operator!=()

bool SVF::PTASCEV::operator!= ( const PTASCEV rhs) const
inline

Overloading operator==.

Definition at line 114 of file DataFlowUtil.h.

115  {
116  return !(*this==rhs);
117  }

◆ operator<()

bool SVF::PTASCEV::operator< ( const PTASCEV rhs) const
inline

Enable compare operator to avoid duplicated item insertion in map or set to be noted that two vectors can also overload operator()

Definition at line 82 of file DataFlowUtil.h.

83  {
84  if(start!=rhs.start)
85  return start < rhs.start;
86  else if(step!=rhs.step)
87  return step < rhs.step;
88  else if(ptr!=rhs.ptr)
89  return ptr < rhs.ptr;
90  else if(tripcount!=rhs.tripcount)
91  return tripcount < rhs.tripcount;
92  else
93  return inloop < rhs.inloop;
94  }
const Value * ptr
Definition: DataFlowUtil.h:76
const Value * step
Definition: DataFlowUtil.h:75
const Value * start
Definition: DataFlowUtil.h:74
unsigned tripcount
Definition: DataFlowUtil.h:78

◆ operator=()

PTASCEV& SVF::PTASCEV::operator= ( const PTASCEV rhs)
inline

Overloading operator=.

Definition at line 96 of file DataFlowUtil.h.

97  {
98  if(*this!=rhs)
99  {
100  start = rhs.start;
101  step = rhs.step;
102  ptr = rhs.ptr;
103  tripcount = rhs.tripcount;
104  inloop = rhs.inloop;
105  }
106  return *this;
107  }
const Value * ptr
Definition: DataFlowUtil.h:76
const Value * step
Definition: DataFlowUtil.h:75
const Value * start
Definition: DataFlowUtil.h:74
unsigned tripcount
Definition: DataFlowUtil.h:78

◆ operator==()

bool SVF::PTASCEV::operator== ( const PTASCEV rhs) const
inline

Overloading operator==.

Definition at line 109 of file DataFlowUtil.h.

110  {
111  return (start == rhs.start && step == rhs.step && ptr == rhs.ptr && tripcount == rhs.tripcount && inloop == rhs.inloop);
112  }
const Value * ptr
Definition: DataFlowUtil.h:76
const Value * step
Definition: DataFlowUtil.h:75
const Value * start
Definition: DataFlowUtil.h:74
unsigned tripcount
Definition: DataFlowUtil.h:78

Member Data Documentation

◆ inloop

bool SVF::PTASCEV::inloop

Definition at line 77 of file DataFlowUtil.h.

◆ ptr

const Value* SVF::PTASCEV::ptr

Definition at line 76 of file DataFlowUtil.h.

◆ scev

const SCEV* SVF::PTASCEV::scev

Definition at line 73 of file DataFlowUtil.h.

◆ start

const Value* SVF::PTASCEV::start

Definition at line 74 of file DataFlowUtil.h.

◆ step

const Value* SVF::PTASCEV::step

Definition at line 75 of file DataFlowUtil.h.

◆ tripcount

unsigned SVF::PTASCEV::tripcount

Definition at line 78 of file DataFlowUtil.h.


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