LLVM 24.0.0git
llvm::SCEVUseT< SCEVPtrT > Struct Template Reference

#include "llvm/Analysis/ScalarEvolution.h"

Inheritance diagram for llvm::SCEVUseT< SCEVPtrT >:
[legend]

Public Types

using Base = PointerIntPair<SCEVPtrT, 2>

Public Member Functions

 SCEVUseT ()
 SCEVUseT (SCEVPtrT S)
 SCEVUseT (SCEVPtrT S, SCEVFlags Flags)
 Construct with SCEVFlags; only NUW/NSW are encoded, NW is dropped.
template<typename OtherPtrT, typename = std::enable_if_t< std::is_convertible_v<OtherPtrT, SCEVPtrT>>>
 SCEVUseT (const SCEVUseT< OtherPtrT > &Other)
 operator SCEVPtrT () const
SCEVPtrT operator-> () const
bool isCanonical () const
 Returns true if the SCEVUse is canonical, i.e.
bool hasUseFlags () const
 Returns true if this use itself carries use-specific no-wrap flags.
const SCEV * getCanonical () const
 Return the canonical SCEV for this SCEVUse.
SCEVFlags getNoWrapFlags (SCEVFlags Mask=SCEVFlags::FlagsNoWrapMask) const
 Return the flags for this SCEVUse, which is the union of the use-specific flags and the underlying SCEV's flags, masked by Mask.
SCEVFlags getUseNoWrapFlags () const
 Return only the use-specific flags without the underlying SCEV's flags.
SCEVFlags getUseFlags () const
bool operator== (const SCEVUseT &RHS) const
bool operator!= (const SCEVUseT &RHS) const
bool operator> (const SCEVUseT &RHS) const
bool operator== (const SCEV *RHS) const
bool operator!= (const SCEV *RHS) const
void print (raw_ostream &OS) const
 Print out the internal representation of this scalar to the specified stream.
void dump () const
 This method is used for debugging.
const SCEV * getCanonical () const
void * getOpaqueValue () const
SCEVPtrT getPointer () const

Friends

struct PointerLikeTypeTraits< SCEVUseT >

Detailed Description

template<typename SCEVPtrT = const SCEV *>
struct llvm::SCEVUseT< SCEVPtrT >

Definition at line 123 of file ScalarEvolution.h.

Member Typedef Documentation

◆ Base

template<typename SCEVPtrT = const SCEV *>
using llvm::SCEVUseT< SCEVPtrT >::Base = PointerIntPair<SCEVPtrT, 2>

Definition at line 124 of file ScalarEvolution.h.

Constructor & Destructor Documentation

◆ SCEVUseT() [1/4]

template<typename SCEVPtrT = const SCEV *>
llvm::SCEVUseT< SCEVPtrT >::SCEVUseT ( )
inline

Definition at line 128 of file ScalarEvolution.h.

◆ SCEVUseT() [2/4]

template<typename SCEVPtrT = const SCEV *>
llvm::SCEVUseT< SCEVPtrT >::SCEVUseT ( SCEVPtrT S)
inline

Definition at line 129 of file ScalarEvolution.h.

◆ SCEVUseT() [3/4]

template<typename SCEVPtrT>
llvm::SCEVUseT< SCEVPtrT >::SCEVUseT ( SCEVPtrT S,
SCEVFlags Flags )
inline

Construct with SCEVFlags; only NUW/NSW are encoded, NW is dropped.

S must be an expression supporting flags. Only flags not already present on S are added. Note that the expression may gain flags also part of the SCEVUse later, via setFlags.

Definition at line 1007 of file ScalarEvolutionExpressions.h.

References assert(), llvm::cast(), llvm::FlagsNoWrapMask, llvm::isa(), and llvm::PointerIntPair< SCEVPtrT, 2 >::setInt().

◆ SCEVUseT() [4/4]

template<typename SCEVPtrT = const SCEV *>
template<typename OtherPtrT, typename = std::enable_if_t< std::is_convertible_v<OtherPtrT, SCEVPtrT>>>
llvm::SCEVUseT< SCEVPtrT >::SCEVUseT ( const SCEVUseT< OtherPtrT > & Other)
inline

Definition at line 137 of file ScalarEvolution.h.

Member Function Documentation

◆ dump()

template<typename SCEVPtrT>
LLVM_DUMP_METHOD void llvm::SCEVUseT< SCEVPtrT >::dump ( ) const

This method is used for debugging.

Definition at line 2806 of file ScalarEvolution.h.

References llvm::dbgs(), LLVM_DUMP_METHOD, and llvm::print().

◆ getCanonical() [1/2]

template<typename SCEVPtrT = const SCEV *>
const SCEV * llvm::SCEVUseT< SCEVPtrT >::getCanonical ( ) const

Return the canonical SCEV for this SCEVUse.

Referenced by llvm::SCEVUseT< const SCEV * >::isCanonical().

◆ getCanonical() [2/2]

const SCEV * llvm::SCEVUseT< constSCEV * >::getCanonical ( ) const
inline

Definition at line 2790 of file ScalarEvolution.h.

◆ getNoWrapFlags()

template<typename SCEVPtrT>
SCEVFlags llvm::SCEVUseT< SCEVPtrT >::getNoWrapFlags ( SCEVFlags Mask = SCEVFlags::FlagsNoWrapMask) const
inline

Return the flags for this SCEVUse, which is the union of the use-specific flags and the underlying SCEV's flags, masked by Mask.

Definition at line 1020 of file ScalarEvolutionExpressions.h.

References llvm::dyn_cast(), llvm::FlagNone, llvm::PointerIntPair< SCEVPtrT, 2 >::getPointer(), and getUseNoWrapFlags().

◆ getOpaqueValue()

◆ getPointer()

◆ getUseFlags()

template<typename SCEVPtrT = const SCEV *>
SCEVFlags llvm::SCEVUseT< SCEVPtrT >::getUseFlags ( ) const
inline

◆ getUseNoWrapFlags()

template<typename SCEVPtrT = const SCEV *>
SCEVFlags llvm::SCEVUseT< SCEVPtrT >::getUseNoWrapFlags ( ) const
inline

Return only the use-specific flags without the underlying SCEV's flags.

Definition at line 158 of file ScalarEvolution.h.

Referenced by getNoWrapFlags(), and print().

◆ hasUseFlags()

template<typename SCEVPtrT = const SCEV *>
bool llvm::SCEVUseT< SCEVPtrT >::hasUseFlags ( ) const
inline

Returns true if this use itself carries use-specific no-wrap flags.

Definition at line 148 of file ScalarEvolution.h.

◆ isCanonical()

template<typename SCEVPtrT = const SCEV *>
bool llvm::SCEVUseT< SCEVPtrT >::isCanonical ( ) const
inline

Returns true if the SCEVUse is canonical, i.e.

no SCEVUse flags set in any operands.

Definition at line 145 of file ScalarEvolution.h.

◆ operator SCEVPtrT()

template<typename SCEVPtrT = const SCEV *>
llvm::SCEVUseT< SCEVPtrT >::operator SCEVPtrT ( ) const
inline

Definition at line 140 of file ScalarEvolution.h.

◆ operator!=() [1/2]

template<typename SCEVPtrT = const SCEV *>
bool llvm::SCEVUseT< SCEVPtrT >::operator!= ( const SCEV * RHS) const
inline

Definition at line 177 of file ScalarEvolution.h.

◆ operator!=() [2/2]

template<typename SCEVPtrT = const SCEV *>
bool llvm::SCEVUseT< SCEVPtrT >::operator!= ( const SCEVUseT< SCEVPtrT > & RHS) const
inline

Definition at line 172 of file ScalarEvolution.h.

◆ operator->()

template<typename SCEVPtrT = const SCEV *>
SCEVPtrT llvm::SCEVUseT< SCEVPtrT >::operator-> ( ) const
inline

Definition at line 141 of file ScalarEvolution.h.

◆ operator==() [1/2]

template<typename SCEVPtrT = const SCEV *>
bool llvm::SCEVUseT< SCEVPtrT >::operator== ( const SCEV * RHS) const
inline

Definition at line 176 of file ScalarEvolution.h.

◆ operator==() [2/2]

template<typename SCEVPtrT = const SCEV *>
bool llvm::SCEVUseT< SCEVPtrT >::operator== ( const SCEVUseT< SCEVPtrT > & RHS) const
inline

Definition at line 168 of file ScalarEvolution.h.

◆ operator>()

template<typename SCEVPtrT = const SCEV *>
bool llvm::SCEVUseT< SCEVPtrT >::operator> ( const SCEVUseT< SCEVPtrT > & RHS) const
inline

Definition at line 174 of file ScalarEvolution.h.

◆ print()

template<typename SCEVPtrT>
void llvm::SCEVUseT< SCEVPtrT >::print ( raw_ostream & OS) const

Print out the internal representation of this scalar to the specified stream.

This should really only be used for debugging purposes.

Definition at line 2795 of file ScalarEvolution.h.

References llvm::SCEV::FlagNSW, llvm::SCEV::FlagNUW, getPointer(), getUseNoWrapFlags(), and llvm::Value::print().

◆ PointerLikeTypeTraits< SCEVUseT >

template<typename SCEVPtrT = const SCEV *>
friend struct PointerLikeTypeTraits< SCEVUseT >
friend

Definition at line 184 of file ScalarEvolution.h.


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