LLVM 20.0.0git
Classes | Public Member Functions | Static Public Member Functions | List of all members
llvm::ConstraintSystem Class Reference

#include "llvm/Analysis/ConstraintSystem.h"

Public Member Functions

 ConstraintSystem ()
 
 ConstraintSystem (ArrayRef< Value * > FunctionArgs)
 
 ConstraintSystem (const DenseMap< Value *, unsigned > &Value2Index)
 
bool addVariableRow (ArrayRef< int64_t > R)
 
DenseMap< Value *, unsigned > & getValue2Index ()
 
const DenseMap< Value *, unsigned > & getValue2Index () const
 
bool addVariableRowFill (ArrayRef< int64_t > R)
 
bool mayHaveSolution ()
 Returns true if there may be a solution for the constraints in the system.
 
bool isConditionImplied (SmallVector< int64_t, 8 > R) const
 
SmallVector< int64_t > getLastConstraint () const
 
void popLastConstraint ()
 
void popLastNVariables (unsigned N)
 
unsigned size () const
 Returns the number of rows in the constraint system.
 
void dump () const
 Print the constraints in the system.
 

Static Public Member Functions

static SmallVector< int64_t, 8 > negate (SmallVector< int64_t, 8 > R)
 
static SmallVector< int64_t, 8 > negateOrEqual (SmallVector< int64_t, 8 > R)
 Multiplies each coefficient in the given vector by -1.
 
static SmallVector< int64_t, 8 > toStrictLessThan (SmallVector< int64_t, 8 > R)
 Converts the given vector to form a strict less than inequality.
 

Detailed Description

Definition at line 22 of file ConstraintSystem.h.

Constructor & Destructor Documentation

◆ ConstraintSystem() [1/3]

llvm::ConstraintSystem::ConstraintSystem ( )
inline

Definition at line 66 of file ConstraintSystem.h.

◆ ConstraintSystem() [2/3]

llvm::ConstraintSystem::ConstraintSystem ( ArrayRef< Value * >  FunctionArgs)
inline

◆ ConstraintSystem() [3/3]

llvm::ConstraintSystem::ConstraintSystem ( const DenseMap< Value *, unsigned > &  Value2Index)
inline

Definition at line 73 of file ConstraintSystem.h.

Member Function Documentation

◆ addVariableRow()

bool llvm::ConstraintSystem::addVariableRow ( ArrayRef< int64_t >  R)
inline

◆ addVariableRowFill()

bool llvm::ConstraintSystem::addVariableRowFill ( ArrayRef< int64_t >  R)
inline

Definition at line 100 of file ConstraintSystem.h.

References addVariableRow(), llvm::all_of(), and llvm::CallingConv::C.

Referenced by dumpConstraint().

◆ dump()

void ConstraintSystem::dump ( ) const

Print the constraints in the system.

Definition at line 159 of file ConstraintSystem.cpp.

References llvm::dbgs(), LLVM_DEBUG, and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by dumpConstraint(), and mayHaveSolution().

◆ getLastConstraint()

SmallVector< int64_t > llvm::ConstraintSystem::getLastConstraint ( ) const
inline

◆ getValue2Index() [1/2]

DenseMap< Value *, unsigned > & llvm::ConstraintSystem::getValue2Index ( )
inline

Definition at line 95 of file ConstraintSystem.h.

◆ getValue2Index() [2/2]

const DenseMap< Value *, unsigned > & llvm::ConstraintSystem::getValue2Index ( ) const
inline

Definition at line 96 of file ConstraintSystem.h.

◆ isConditionImplied()

bool ConstraintSystem::isConditionImplied ( SmallVector< int64_t, 8 >  R) const

Definition at line 194 of file ConstraintSystem.cpp.

References llvm::all_of(), llvm::CallingConv::C, and negate().

◆ mayHaveSolution()

bool ConstraintSystem::mayHaveSolution ( )

Returns true if there may be a solution for the constraints in the system.

Definition at line 186 of file ConstraintSystem.cpp.

References llvm::dbgs(), dump(), and LLVM_DEBUG.

◆ negate()

static SmallVector< int64_t, 8 > llvm::ConstraintSystem::negate ( SmallVector< int64_t, 8 >  R)
inlinestatic

Definition at line 113 of file ConstraintSystem.h.

References negateOrEqual().

Referenced by isConditionImplied().

◆ negateOrEqual()

static SmallVector< int64_t, 8 > llvm::ConstraintSystem::negateOrEqual ( SmallVector< int64_t, 8 >  R)
inlinestatic

Multiplies each coefficient in the given vector by -1.

Does not modify the original vector.

Parameters
RThe vector of coefficients to be negated.

Definition at line 124 of file ConstraintSystem.h.

References llvm::CallingConv::C, and llvm::MulOverflow().

Referenced by negate().

◆ popLastConstraint()

void llvm::ConstraintSystem::popLastConstraint ( )
inline

◆ popLastNVariables()

void llvm::ConstraintSystem::popLastNVariables ( unsigned  N)
inline

Definition at line 155 of file ConstraintSystem.h.

References assert(), and N.

◆ size()

unsigned llvm::ConstraintSystem::size ( ) const
inline

Returns the number of rows in the constraint system.

Definition at line 161 of file ConstraintSystem.h.

References llvm::SmallVectorBase< Size_T >::size().

◆ toStrictLessThan()

static SmallVector< int64_t, 8 > llvm::ConstraintSystem::toStrictLessThan ( SmallVector< int64_t, 8 >  R)
inlinestatic

Converts the given vector to form a strict less than inequality.

Does not modify the original vector.

Parameters
RThe vector of coefficients to be converted.

Definition at line 136 of file ConstraintSystem.h.

References llvm::SubOverflow().


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