retdec
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
retdec::llvmir2hll::CallInfo Class Referenceabstract

Base class for all classes storing information about a function call. More...

#include <call_info_obtainer.h>

Inheritance diagram for retdec::llvmir2hll::CallInfo:
Inheritance graph
[legend]
Collaboration diagram for retdec::llvmir2hll::CallInfo:
Collaboration graph
[legend]

Public Member Functions

virtual ~CallInfo ()=default
 
ShPtr< CallExprgetCall () const
 Returns the function call for which the piece of information has been computed. More...
 
virtual bool isNeverRead (ShPtr< Variable > var) const =0
 Returns true if var is never read in the call, false otherwise. More...
 
virtual bool mayBeRead (ShPtr< Variable > var) const =0
 Returns true if var may be read in the call, false otherwise. More...
 
virtual bool isAlwaysRead (ShPtr< Variable > var) const =0
 Returns true if var is always read in the call, false otherwise. More...
 
virtual bool isNeverModified (ShPtr< Variable > var) const =0
 Returns true if there is no assign into var in the call, false otherwise. More...
 
virtual bool mayBeModified (ShPtr< Variable > var) const =0
 Returns true if the value of var may be changed in the call, false otherwise. More...
 
virtual bool isAlwaysModified (ShPtr< Variable > var) const =0
 Returns true if the value of var is always changed in the call, false otherwise. More...
 
virtual bool valueIsNeverChanged (ShPtr< Variable > var) const =0
 Returns true if the value of var is never changed in the call, false otherwise. More...
 
virtual bool isAlwaysModifiedBeforeRead (ShPtr< Variable > var) const =0
 Returns true if the given variable is modified prior to being read in the call, false otherwise. More...
 

Protected Member Functions

 CallInfo (ShPtr< CallExpr > call)
 Constructs a new piece of information about the given function call. More...
 

Protected Attributes

ShPtr< CallExprcall
 Function call for which this piece of information is computed. More...
 

Friends

class CallInfoObtainer
 

Additional Inherited Members

- Private Member Functions inherited from retdec::utils::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 

Detailed Description

Base class for all classes storing information about a function call.

Instances of this class have reference object semantics.

Constructor & Destructor Documentation

◆ ~CallInfo()

virtual retdec::llvmir2hll::CallInfo::~CallInfo ( )
virtualdefault

◆ CallInfo()

retdec::llvmir2hll::CallInfo::CallInfo ( ShPtr< CallExpr call)
explicitprotected

Constructs a new piece of information about the given function call.

Member Function Documentation

◆ getCall()

ShPtr< CallExpr > retdec::llvmir2hll::CallInfo::getCall ( ) const

Returns the function call for which the piece of information has been computed.

◆ isAlwaysModified()

virtual bool retdec::llvmir2hll::CallInfo::isAlwaysModified ( ShPtr< Variable var) const
pure virtual

Returns true if the value of var is always changed in the call, false otherwise.

"Always changed" means that every time the function is called, var has a new assigned value. The new value may, however, be the same as the old value.

Implemented in retdec::llvmir2hll::PessimCallInfo, and retdec::llvmir2hll::OptimCallInfo.

◆ isAlwaysModifiedBeforeRead()

virtual bool retdec::llvmir2hll::CallInfo::isAlwaysModifiedBeforeRead ( ShPtr< Variable var) const
pure virtual

Returns true if the given variable is modified prior to being read in the call, false otherwise.

When this function returns true, it doesn't mean that the variable is actually read or modified in the call. It only means that if the variable is read in the call, then it has been assigned a value before this read.

Implemented in retdec::llvmir2hll::PessimCallInfo, and retdec::llvmir2hll::OptimCallInfo.

◆ isAlwaysRead()

virtual bool retdec::llvmir2hll::CallInfo::isAlwaysRead ( ShPtr< Variable var) const
pure virtual

Returns true if var is always read in the call, false otherwise.

"Always read" means that every time the function is called, var is read.

Implemented in retdec::llvmir2hll::PessimCallInfo, and retdec::llvmir2hll::OptimCallInfo.

◆ isNeverModified()

virtual bool retdec::llvmir2hll::CallInfo::isNeverModified ( ShPtr< Variable var) const
pure virtual

Returns true if there is no assign into var in the call, false otherwise.

Implemented in retdec::llvmir2hll::PessimCallInfo, and retdec::llvmir2hll::OptimCallInfo.

◆ isNeverRead()

virtual bool retdec::llvmir2hll::CallInfo::isNeverRead ( ShPtr< Variable var) const
pure virtual

Returns true if var is never read in the call, false otherwise.

Implemented in retdec::llvmir2hll::PessimCallInfo, and retdec::llvmir2hll::OptimCallInfo.

◆ mayBeModified()

virtual bool retdec::llvmir2hll::CallInfo::mayBeModified ( ShPtr< Variable var) const
pure virtual

Returns true if the value of var may be changed in the call, false otherwise.

Implemented in retdec::llvmir2hll::PessimCallInfo, and retdec::llvmir2hll::OptimCallInfo.

◆ mayBeRead()

virtual bool retdec::llvmir2hll::CallInfo::mayBeRead ( ShPtr< Variable var) const
pure virtual

Returns true if var may be read in the call, false otherwise.

Implemented in retdec::llvmir2hll::PessimCallInfo, and retdec::llvmir2hll::OptimCallInfo.

◆ valueIsNeverChanged()

virtual bool retdec::llvmir2hll::CallInfo::valueIsNeverChanged ( ShPtr< Variable var) const
pure virtual

Returns true if the value of var is never changed in the call, false otherwise.

"Never changed" means that a new value may be assigned to var in the call, but when the called function returns, the value of var is always its original value.

Implemented in retdec::llvmir2hll::PessimCallInfo, and retdec::llvmir2hll::OptimCallInfo.

Friends And Related Function Documentation

◆ CallInfoObtainer

friend class CallInfoObtainer
friend

Member Data Documentation

◆ call

ShPtr<CallExpr> retdec::llvmir2hll::CallInfo::call
protected

Function call for which this piece of information is computed.


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