LLVM 19.0.0git
Classes | Typedefs | Functions | Variables
llvm::detail Namespace Reference

These are wrappers over isa* function that allow them to be used in generic algorithms such as llvm:all_of, llvm::none_of, etc. More...

Classes

class  AllocatorHolder
 
class  AllocatorHolder< Alloc & >
 
struct  AnalysisPassConcept
 Abstract concept of an analysis pass. More...
 
struct  AnalysisPassModel
 Wrapper to model the analysis pass concept. More...
 
struct  AnalysisResultConcept
 Abstract concept of an analysis result. More...
 
struct  AnalysisResultModel
 Wrapper to model the analysis result concept. More...
 
struct  AnalysisResultModel< IRUnitT, PassT, ResultT, InvalidatorT, false >
 Specialization of AnalysisResultModel which provides the default invalidate functionality. More...
 
struct  AnalysisResultModel< IRUnitT, PassT, ResultT, InvalidatorT, true >
 Specialization of AnalysisResultModel which delegates invalidate handling to ResultT. More...
 
class  BCField
 Convenience base for all kinds of bitcode abbreviation fields. More...
 
class  BCRecordCoding
 Helper class for dealing with a scalar element in the middle of a record. More...
 
class  BCRecordCoding< BCArray< ElementTy > >
 Helper class for dealing with an array at the end of a record. More...
 
class  BCRecordCoding< BCBlob >
 Helper class for dealing with a blob at the end of a record. More...
 
class  BCRecordCoding< ElementTy >
 Helper class for dealing with a scalar element at the end of a record. More...
 
struct  CanOutputToOStream
 
struct  CanOutputToOStream< T, std::void_t< decltype(std::declval< std::ostream & >()<< std::declval< T >())> >
 
struct  CheckedInt
 
class  concat_range
 Helper to store a sequence of ranges being concatenated and access them. More...
 
struct  ConstantLog2
 A tiny meta function to compute the log2 of a compile time constant. More...
 
struct  ConstantLog2< 1 >
 
struct  DenseMapPair
 
struct  DenseSetEmpty
 
class  DenseSetImpl
 Base class for DenseSet and DenseSmallSet. More...
 
class  DenseSetPair
 
struct  detector
 
struct  detector< std::void_t< Op< Args... > >, Op, Args... >
 
class  DoubleAPFloat
 
struct  enumerator_result
 Tuple-like type for zip_enumerator dereference. More...
 
struct  enumerator_result< std::size_t, Refs... >
 
struct  ErrorHolder
 
class  ErrorMatchesMono
 
class  ErrorMessageMatches
 
struct  ExpectedHolder
 
class  first_or_second_type
 Return a reference to the first or second member of a reference. More...
 
struct  fwd_or_bidi_tag
 Helper which sets its type member to forward_iterator_tag if the category of IterT does not derive from bidirectional_iterator_tag, and to bidirectional_iterator_tag otherwise. More...
 
struct  fwd_or_bidi_tag_impl
 
struct  fwd_or_bidi_tag_impl< true >
 
struct  HasPointerLikeTypeTraits
 
struct  HasPointerLikeTypeTraits< T, decltype((sizeof(PointerLikeTypeTraits< T >)+sizeof(T)), void())>
 
class  IEEEFloat
 
struct  index_iterator
 
struct  index_stream
 Infinite stream of increasing 0-based size_t indices. More...
 
class  indexed_accessor_range_base
 The class represents the base of a range of indexed_accessor_iterators. More...
 
struct  is_array
 A type trait whose value field is true if the given type is a BCArray (of any element kind). More...
 
struct  IsaAndPresentCheckPredicate
 
struct  IsaCheckPredicate
 
struct  IsPointerLike
 
struct  IsPointerLike< T * >
 
struct  last_type
 A type trait whose type field is the last of its template parameters. More...
 
struct  last_type< Head >
 
struct  LeadingZerosCounter
 
struct  MachinePassModel
 
struct  PassConcept
 Template for the abstract base class used to dispatch polymorphically over pass objects. More...
 
struct  PassModel
 A template wrapper used to implement the polymorphic API. More...
 
struct  PointerSumTypeHelper
 A helper template for implementing PointerSumType. More...
 
struct  PopulationCounter
 
struct  PopulationCounter< T, 8 >
 
class  PtrUseVisitorBase
 Implementation of non-dependent functionality for PtrUseVisitor. More...
 
struct  PunnedPointer
 
struct  RecordKeeperImpl
 This class represents the internal implementation of the RecordKeeper. More...
 
class  ResultHasInvalidateMethod
 SFINAE metafunction for computing whether ResultT provides an invalidate member function. More...
 
struct  SafeIntIterator
 
class  scope_exit
 
class  SlowDynamicAPInt
 A simple class providing dynamic arbitrary-precision arithmetic. More...
 
class  StringMapEntryMatcher
 
class  StringMapEntryMatcherImpl
 
struct  TrailingZerosCounter
 
union  trivial_helper
 
struct  TypesAreDistinct
 
struct  TypesAreDistinct< T >
 
class  TypeSwitchBase
 
class  UniqueFunctionBase
 
struct  unit
 
struct  unit< std::micro >
 
struct  unit< std::milli >
 
struct  unit< std::nano >
 
struct  unit< std::ratio< 1 > >
 
struct  unit< std::ratio< 3600 > >
 
struct  unit< std::ratio< 60 > >
 
class  ValueIsMatcher
 
class  ValueMatchesMono
 
class  ValueMatchesPoly
 
struct  Visitor
 
struct  Visitor< HeadT >
 
struct  Visitor< HeadT, TailTs... >
 
struct  zip_common
 
struct  zip_enumerator
 Zippy iterator that uses the second iterator for comparisons. More...
 
struct  zip_first
 
class  zip_longest_iterator
 
class  zip_longest_range
 
struct  zip_shortest
 
struct  ZipLongestItemType
 
struct  ZipLongestTupleType
 
class  zippy
 
struct  ZippyIteratorTuple
 Helper to obtain the iterator types for the tuple storage within zippy. More...
 
struct  ZippyIteratorTuple< ItType, const std::tuple< Args... >, std::index_sequence< Ns... > >
 Partial specialization for const tuple storage. More...
 
struct  ZippyIteratorTuple< ItType, std::tuple< Args... >, std::index_sequence< Ns... > >
 Partial specialization for non-const tuple storage. More...
 
struct  ZipTupleType
 

Typedefs

template<typename RangeT >
using IterOfRange = decltype(adl_begin(std::declval< RangeT & >()))
 
template<typename RangeT >
using ValueOfRange = std::remove_reference_t< decltype(*adl_begin(std::declval< RangeT & >()))>
 
template<typename T >
using EnableIfTrivial = std::enable_if_t< std::is_trivially_move_constructible< T >::value &&std::is_trivially_destructible< T >::value >
 
template<typename CallableT , typename ThisT >
using EnableUnlessSameType = std::enable_if_t<!std::is_same< remove_cvref_t< CallableT >, ThisT >::value >
 
template<typename CallableT , typename Ret , typename... Params>
using EnableIfCallable = std::enable_if_t< std::disjunction< std::is_void< Ret >, std::is_same< decltype(std::declval< CallableT >()(std::declval< Params >()...)), Ret >, std::is_same< const decltype(std::declval< CallableT >()(std::declval< Params >()...)), Ret >, std::is_convertible< decltype(std::declval< CallableT >()(std::declval< Params >()...)), Ret > >::value >
 
template<typename Range >
using check_has_free_function_rbegin = decltype(adl_rbegin(std::declval< Range & >()))
 
template<typename ZipType , typename ReferenceTupleType , typename... Iters>
using zip_traits = iterator_facade_base< ZipType, std::common_type_t< std::bidirectional_iterator_tag, typename std::iterator_traits< Iters >::iterator_category... >, ReferenceTupleType, typename std::iterator_traits< std::tuple_element_t< 0, std::tuple< Iters... > > >::difference_type, ReferenceTupleType *, ReferenceTupleType >
 
template<typename T >
using sort_trivially_copyable = std::conjunction< std::is_pointer< T >, std::is_trivially_copyable< typename std::iterator_traits< T >::value_type > >
 
template<typename Range >
using check_has_free_function_size = decltype(adl_size(std::declval< Range & >()))
 
template<typename Range , typename Element >
using check_has_member_contains_t = decltype(std::declval< Range & >().contains(std::declval< const Element & >()))
 
template<typename Range , typename Element >
using check_has_member_find_t = decltype(std::declval< Range & >().find(std::declval< const Element & >()) !=std::declval< Range & >().end())
 
template<typename... Iters>
using EnumeratorTupleType = enumerator_result< decltype(*declval< Iters >())... >
 
template<typename T >
using has_sizeof = decltype(sizeof(T))
 
template<typename... Types>
using has_blob = std::is_same< BCBlob, typename last_type< int, Types... >::type >
 A type trait whose value field is true if the last type is BCBlob.
 
template<typename... Types>
using has_array = is_array< typename last_type< int, Types... >::type >
 A type trait whose value field is true if the last type is a BCArray (of any element kind).
 
template<typename OptionalDerived , typename Default >
using SelfType = std::conditional_t< std::is_same_v< OptionalDerived, void >, Default, OptionalDerived >
 A helper to derive the type to use with Self for cast traits, when the provided CRTP derived type is allowed to be void.
 
template<class BlockT >
using has_hoist_check = decltype(&BlockT::isLegalToHoistInto)
 
template<class BlockT >
using detect_has_hoist_check = llvm::is_detected< has_hoist_check, BlockT >
 

Functions

hash_code hash_value (const IEEEFloat &Arg)
 
int ilogb (const IEEEFloat &Arg)
 
IEEEFloat scalbn (IEEEFloat X, int Exp, IEEEFloat::roundingMode)
 
IEEEFloat frexp (const IEEEFloat &Val, int &Exp, IEEEFloat::roundingMode RM)
 
hash_code hash_value (const DoubleAPFloat &Arg)
 
DoubleAPFloat scalbn (const DoubleAPFloat &Arg, int Exp, IEEEFloat::roundingMode RM)
 
DoubleAPFloat frexp (const DoubleAPFloat &X, int &Exp, IEEEFloat::roundingMode)
 
static unsigned combineHashValue (unsigned a, unsigned b)
 Simplistic combination of 32-bit hash values into 32-bit hash values.
 
template<typename ValueT , typename MapTy , typename ValueInfoT >
bool operator== (const DenseSetImpl< ValueT, MapTy, ValueInfoT > &LHS, const DenseSetImpl< ValueT, MapTy, ValueInfoT > &RHS)
 Equality comparison for DenseSet.
 
template<typename ValueT , typename MapTy , typename ValueInfoT >
bool operator!= (const DenseSetImpl< ValueT, MapTy, ValueInfoT > &LHS, const DenseSetImpl< ValueT, MapTy, ValueInfoT > &RHS)
 Inequality comparison for DenseSet.
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool divWouldOverflow (int64_t X, int64_t Y)
 
template<typename T , typename U >
bool canTypeFitValue (const U Value)
 
raw_ostreamoperator<< (raw_ostream &OS, const SlowDynamicAPInt &X)
 
SlowDynamicAPInt mod (const SlowDynamicAPInt &LHS, const SlowDynamicAPInt &RHS)
 Returns the remainder of dividing LHS by RHS.
 
SlowDynamicAPInt lcm (const SlowDynamicAPInt &A, const SlowDynamicAPInt &B)
 Returns the least common multiple of A and B.
 
SlowDynamicAPInt abs (const SlowDynamicAPInt &X)
 Redeclarations of friend declarations above to make it discoverable by lookups.
 
SlowDynamicAPInt ceilDiv (const SlowDynamicAPInt &LHS, const SlowDynamicAPInt &RHS)
 
SlowDynamicAPInt floorDiv (const SlowDynamicAPInt &LHS, const SlowDynamicAPInt &RHS)
 
SlowDynamicAPInt gcd (const SlowDynamicAPInt &A, const SlowDynamicAPInt &B)
 
hash_code hash_value (const SlowDynamicAPInt &X)
 
SlowDynamicAPIntoperator+= (SlowDynamicAPInt &A, int64_t B)
 
SlowDynamicAPIntoperator-= (SlowDynamicAPInt &A, int64_t B)
 
SlowDynamicAPIntoperator*= (SlowDynamicAPInt &A, int64_t B)
 
SlowDynamicAPIntoperator/= (SlowDynamicAPInt &A, int64_t B)
 
SlowDynamicAPIntoperator%= (SlowDynamicAPInt &A, int64_t B)
 
bool operator== (const SlowDynamicAPInt &A, int64_t B)
 
bool operator!= (const SlowDynamicAPInt &A, int64_t B)
 
bool operator> (const SlowDynamicAPInt &A, int64_t B)
 
bool operator< (const SlowDynamicAPInt &A, int64_t B)
 
bool operator<= (const SlowDynamicAPInt &A, int64_t B)
 
bool operator>= (const SlowDynamicAPInt &A, int64_t B)
 
SlowDynamicAPInt operator+ (const SlowDynamicAPInt &A, int64_t B)
 
SlowDynamicAPInt operator- (const SlowDynamicAPInt &A, int64_t B)
 
SlowDynamicAPInt operator* (const SlowDynamicAPInt &A, int64_t B)
 
SlowDynamicAPInt operator/ (const SlowDynamicAPInt &A, int64_t B)
 
SlowDynamicAPInt operator% (const SlowDynamicAPInt &A, int64_t B)
 
bool operator== (int64_t A, const SlowDynamicAPInt &B)
 
bool operator!= (int64_t A, const SlowDynamicAPInt &B)
 
bool operator> (int64_t A, const SlowDynamicAPInt &B)
 
bool operator< (int64_t A, const SlowDynamicAPInt &B)
 
bool operator<= (int64_t A, const SlowDynamicAPInt &B)
 
bool operator>= (int64_t A, const SlowDynamicAPInt &B)
 
SlowDynamicAPInt operator+ (int64_t A, const SlowDynamicAPInt &B)
 
SlowDynamicAPInt operator- (int64_t A, const SlowDynamicAPInt &B)
 
SlowDynamicAPInt operator* (int64_t A, const SlowDynamicAPInt &B)
 
SlowDynamicAPInt operator/ (int64_t A, const SlowDynamicAPInt &B)
 
SlowDynamicAPInt operator% (int64_t A, const SlowDynamicAPInt &B)
 
template<typename Iter >
Iter next_or_end (const Iter &I, const Iter &End)
 
template<typename Iter >
auto deref_or_none (const Iter &I, const Iter &End) -> std::optional< std::remove_const_t< std::remove_reference_t< decltype(*I)> > >
 
template<typename OtherT , typename DerivedT , typename BaseT , typename T , typename PointerT , typename ReferenceT >
bool operator== (const indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT > &lhs, const OtherT &rhs)
 Compare this range with another.
 
template<typename OtherT , typename DerivedT , typename BaseT , typename T , typename PointerT , typename ReferenceT >
bool operator!= (const indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT > &lhs, const OtherT &rhs)
 
template<typename Predicate , typename... Args>
bool all_of_zip_predicate_first (Predicate &&P, Args &&...args)
 
template<typename... ArgsThenPredicate, size_t... InputIndexes>
bool all_of_zip_predicate_last (std::tuple< ArgsThenPredicate... > argsThenPredicate, std::index_sequence< InputIndexes... >)
 
template<typename FieldTy >
static void emitOps (llvm::BitCodeAbbrev &abbrev)
 Attaches the last field to an abbreviation.
 
template<typename FieldTy , typename Next , typename... Rest>
static void emitOps (llvm::BitCodeAbbrev &abbrev)
 Attaches fields to an abbreviation.
 
template<typename PassT , typename IRUnitT , typename AnalysisManagerT , typename... ArgTs, size_t... Ns>
PassT::Result getAnalysisResultUnpackTuple (AnalysisManagerT &AM, IRUnitT &IR, std::tuple< ArgTs... > Args, std::index_sequence< Ns... >)
 Actual unpacker of extra arguments in getAnalysisResult, passes only those tuple arguments that are mentioned in index_sequence.
 
template<typename PassT , typename IRUnitT , typename... AnalysisArgTs, typename... MainArgTs>
PassT::Result getAnalysisResult (AnalysisManager< IRUnitT, AnalysisArgTs... > &AM, IRUnitT &IR, std::tuple< MainArgTs... > Args)
 Helper for partial unpacking of extra arguments in getAnalysisResult.
 
void printBumpPtrAllocatorStats (unsigned NumSlabs, size_t BytesAllocated, size_t TotalMemory)
 
template<typename T >
bool isPresent (const T &t)
 
template<typename T >
decltype(auto) unwrapValue (T &t)
 
template<typename Range >
auto reverse_if_helper (Range &&R, std::integral_constant< bool, false >)
 
template<typename Range >
auto reverse_if_helper (Range &&R, std::integral_constant< bool, true >)
 
template<bool B, typename Range >
auto reverse_if (Range &&R)
 
template<class BlockT >
bool isLegalToHoistInto (BlockT *Block)
 SFINAE functions that dispatch to the isLegalToHoistInto member function or return false, if it doesn't exist.
 
ErrorHolder TakeError (Error Err)
 
template<typename T >
ExpectedHolder< TTakeExpected (Expected< T > &Exp)
 
template<typename T >
ExpectedHolder< TTakeExpected (Expected< T > &&Exp)
 
void PrintTo (const ErrorHolder &Err, std::ostream *Out)
 
template<typename T >
void PrintTo (const ExpectedHolder< T > &Item, std::ostream *Out)
 
static void tcSetLeastSignificantBits (APInt::WordType *dst, unsigned parts, unsigned bits)
 
DoubleAPFloat scalbn (const DoubleAPFloat &Arg, int Exp, APFloat::roundingMode RM)
 
DoubleAPFloat frexp (const DoubleAPFloat &Arg, int &Exp, APFloat::roundingMode RM)
 

Variables

template<typename Range >
static constexpr bool HasFreeFunctionRBegin
 
template<typename Range >
static constexpr bool HasFreeFunctionSize
 
template<typename Range , typename Element >
static constexpr bool HasMemberContains
 
template<typename Range , typename Element >
static constexpr bool HasMemberFind
 

Detailed Description

These are wrappers over isa* function that allow them to be used in generic algorithms such as llvm:all_of, llvm::none_of, etc.

This is accomplished by exposing the isa* functions through function objects with a generic function call operator.

Typedef Documentation

◆ check_has_free_function_rbegin

template<typename Range >
using llvm::detail::check_has_free_function_rbegin = typedef decltype(adl_rbegin(std::declval<Range &>()))

Definition at line 410 of file STLExtras.h.

◆ check_has_free_function_size

template<typename Range >
using llvm::detail::check_has_free_function_size = typedef decltype(adl_size(std::declval<Range &>()))

Definition at line 1691 of file STLExtras.h.

◆ check_has_member_contains_t

template<typename Range , typename Element >
using llvm::detail::check_has_member_contains_t = typedef decltype(std::declval<Range &>().contains(std::declval<const Element &>()))

Definition at line 1855 of file STLExtras.h.

◆ check_has_member_find_t

template<typename Range , typename Element >
using llvm::detail::check_has_member_find_t = typedef decltype(std::declval<Range &>().find(std::declval<const Element &>()) != std::declval<Range &>().end())

Definition at line 1863 of file STLExtras.h.

◆ detect_has_hoist_check

template<class BlockT >
using llvm::detail::detect_has_hoist_check = typedef llvm::is_detected<has_hoist_check, BlockT>

Definition at line 179 of file GenericLoopInfoImpl.h.

◆ EnableIfCallable

template<typename CallableT , typename Ret , typename... Params>
using llvm::detail::EnableIfCallable = typedef std::enable_if_t<std::disjunction< std::is_void<Ret>, std::is_same<decltype(std::declval<CallableT>()(std::declval<Params>()...)), Ret>, std::is_same<const decltype(std::declval<CallableT>()( std::declval<Params>()...)), Ret>, std::is_convertible<decltype(std::declval<CallableT>()( std::declval<Params>()...)), Ret> >::value>

Definition at line 69 of file FunctionExtras.h.

◆ EnableIfTrivial

template<typename T >
using llvm::detail::EnableIfTrivial = typedef std::enable_if_t<std::is_trivially_move_constructible<T>::value && std::is_trivially_destructible<T>::value>

Definition at line 62 of file FunctionExtras.h.

◆ EnableUnlessSameType

template<typename CallableT , typename ThisT >
using llvm::detail::EnableUnlessSameType = typedef std::enable_if_t<!std::is_same<remove_cvref_t<CallableT>, ThisT>::value>

Definition at line 66 of file FunctionExtras.h.

◆ EnumeratorTupleType

template<typename... Iters>
using llvm::detail::EnumeratorTupleType = typedef enumerator_result<decltype(*declval<Iters>())...>

Definition at line 2207 of file STLExtras.h.

◆ has_array

template<typename... Types>
using llvm::detail::has_array = typedef is_array<typename last_type<int, Types...>::type>

A type trait whose value field is true if the last type is a BCArray (of any element kind).

Definition at line 350 of file BitcodeConvenience.h.

◆ has_blob

template<typename... Types>
using llvm::detail::has_blob = typedef std::is_same<BCBlob, typename last_type<int, Types...>::type>

A type trait whose value field is true if the last type is BCBlob.

Definition at line 332 of file BitcodeConvenience.h.

◆ has_hoist_check

template<class BlockT >
using llvm::detail::has_hoist_check = typedef decltype(&BlockT::isLegalToHoistInto)

Definition at line 176 of file GenericLoopInfoImpl.h.

◆ has_sizeof

template<typename T >
using llvm::detail::has_sizeof = typedef decltype(sizeof(T))

Definition at line 2543 of file STLExtras.h.

◆ IterOfRange

template<typename RangeT >
using llvm::detail::IterOfRange = typedef decltype(adl_begin(std::declval<RangeT &>()))

Definition at line 126 of file ADL.h.

◆ SelfType

template<typename OptionalDerived , typename Default >
using llvm::detail::SelfType = typedef std::conditional_t<std::is_same_v<OptionalDerived, void>, Default, OptionalDerived>

A helper to derive the type to use with Self for cast traits, when the provided CRTP derived type is allowed to be void.

Definition at line 321 of file Casting.h.

◆ sort_trivially_copyable

template<typename T >
using llvm::detail::sort_trivially_copyable = typedef std::conjunction< std::is_pointer<T>, std::is_trivially_copyable<typename std::iterator_traits<T>::value_type> >

Definition at line 1639 of file STLExtras.h.

◆ ValueOfRange

template<typename RangeT >
using llvm::detail::ValueOfRange = typedef std::remove_reference_t<decltype(*adl_begin(std::declval<RangeT &>()))>

Definition at line 129 of file ADL.h.

◆ zip_traits

template<typename ZipType , typename ReferenceTupleType , typename... Iters>
using llvm::detail::zip_traits = typedef iterator_facade_base< ZipType, std::common_type_t< std::bidirectional_iterator_tag, typename std::iterator_traits<Iters>::iterator_category...>, ReferenceTupleType, typename std::iterator_traits< std::tuple_element_t<0, std::tuple<Iters...> >>::difference_type, ReferenceTupleType *, ReferenceTupleType>

Definition at line 685 of file STLExtras.h.

Function Documentation

◆ abs()

SlowDynamicAPInt llvm::detail::abs ( const SlowDynamicAPInt X)

Redeclarations of friend declarations above to make it discoverable by lookups.

Definition at line 190 of file SlowDynamicAPInt.cpp.

References X.

Referenced by lcm().

◆ all_of_zip_predicate_first()

template<typename Predicate , typename... Args>
bool llvm::detail::all_of_zip_predicate_first ( Predicate &&  P,
Args &&...  args 
)

Definition at line 2418 of file STLExtras.h.

References args, llvm::sys::path::const_iterator::end, P, and llvm::zip().

Referenced by all_of_zip_predicate_last().

◆ all_of_zip_predicate_last()

template<typename... ArgsThenPredicate, size_t... InputIndexes>
bool llvm::detail::all_of_zip_predicate_last ( std::tuple< ArgsThenPredicate... >  argsThenPredicate,
std::index_sequence< InputIndexes... >   
)

Definition at line 2433 of file STLExtras.h.

References all_of_zip_predicate_first(), and value.

Referenced by llvm::all_of_zip().

◆ canTypeFitValue()

template<typename T , typename U >
bool llvm::detail::canTypeFitValue ( const Value)

Definition at line 113 of file Sequence.h.

◆ ceilDiv()

SlowDynamicAPInt llvm::detail::ceilDiv ( const SlowDynamicAPInt LHS,
const SlowDynamicAPInt RHS 
)

◆ combineHashValue()

static unsigned llvm::detail::combineHashValue ( unsigned  a,
unsigned  b 
)
inlinestatic

◆ deref_or_none()

template<typename Iter >
auto llvm::detail::deref_or_none ( const Iter &  I,
const Iter &  End 
) -> std::optional< std::remove_const_t<std::remove_reference_t<decltype(*I)>>>

Definition at line 894 of file STLExtras.h.

References End, and I.

◆ divWouldOverflow()

LLVM_ATTRIBUTE_ALWAYS_INLINE bool llvm::detail::divWouldOverflow ( int64_t  X,
int64_t  Y 
)

Definition at line 236 of file DynamicAPInt.h.

References X, and Y.

Referenced by llvm::DynamicAPInt::operator/(), and llvm::DynamicAPInt::operator/=().

◆ emitOps() [1/2]

template<typename FieldTy >
static void llvm::detail::emitOps ( llvm::BitCodeAbbrev abbrev)
static

Attaches the last field to an abbreviation.

This is the base case for emitOps.

See also
BCRecordLayout::emitAbbrev

Definition at line 166 of file BitcodeConvenience.h.

Referenced by llvm::BCGenericRecordLayout< IDField, Fields >::emitAbbrev(), and emitOps().

◆ emitOps() [2/2]

template<typename FieldTy , typename Next , typename... Rest>
static void llvm::detail::emitOps ( llvm::BitCodeAbbrev abbrev)
static

Attaches fields to an abbreviation.

This is the recursive case for emitOps.

See also
BCRecordLayout::emitAbbrev

Definition at line 176 of file BitcodeConvenience.h.

References emitOps().

◆ floorDiv()

SlowDynamicAPInt llvm::detail::floorDiv ( const SlowDynamicAPInt LHS,
const SlowDynamicAPInt RHS 
)

◆ frexp() [1/3]

DoubleAPFloat llvm::detail::frexp ( const DoubleAPFloat Arg,
int &  Exp,
APFloat::roundingMode  RM 
)

◆ frexp() [2/3]

DoubleAPFloat llvm::detail::frexp ( const DoubleAPFloat X,
int &  Exp,
IEEEFloat::roundingMode  RM 
)

◆ frexp() [3/3]

IEEEFloat llvm::detail::frexp ( const IEEEFloat Val,
int &  Exp,
IEEEFloat::roundingMode  RM 
)

Definition at line 4608 of file APFloat.cpp.

References ilogb(), llvm::Quiet, and llvm::scalbn().

Referenced by frexp().

◆ gcd()

SlowDynamicAPInt llvm::detail::gcd ( const SlowDynamicAPInt A,
const SlowDynamicAPInt B 
)

Definition at line 217 of file SlowDynamicAPInt.cpp.

References A, assert(), B, getMaxWidth(), and llvm::APIntOps::GreatestCommonDivisor().

Referenced by lcm().

◆ getAnalysisResult()

template<typename PassT , typename IRUnitT , typename... AnalysisArgTs, typename... MainArgTs>
PassT::Result llvm::detail::getAnalysisResult ( AnalysisManager< IRUnitT, AnalysisArgTs... > &  AM,
IRUnitT &  IR,
std::tuple< MainArgTs... >  Args 
)

Helper for partial unpacking of extra arguments in getAnalysisResult.

Arguments passed in tuple come from PassManager, so they might have extra arguments after those AnalysisManager's ExtraArgTs ones that we need to pass to getResult.

Definition at line 142 of file PassManager.h.

References getAnalysisResultUnpackTuple(), and IR.

◆ getAnalysisResultUnpackTuple()

template<typename PassT , typename IRUnitT , typename AnalysisManagerT , typename... ArgTs, size_t... Ns>
PassT::Result llvm::detail::getAnalysisResultUnpackTuple ( AnalysisManagerT &  AM,
IRUnitT &  IR,
std::tuple< ArgTs... >  Args,
std::index_sequence< Ns... >   
)

Actual unpacker of extra arguments in getAnalysisResult, passes only those tuple arguments that are mentioned in index_sequence.

Definition at line 127 of file PassManager.h.

References IR.

Referenced by getAnalysisResult().

◆ hash_value() [1/3]

hash_code llvm::detail::hash_value ( const DoubleAPFloat Arg)

Definition at line 5045 of file APFloat.cpp.

◆ hash_value() [2/3]

hash_code llvm::detail::hash_value ( const IEEEFloat Arg)

Note that the use of hash codes for floating point values is in general frought with peril. Equality is hard to define for these values. For example, should negative and positive zero hash to different codes? Are they equal or not? This hash value implementation specifically emphasizes producing different codes for different inputs in order to be used in canonicalization and memoization. As such, equality is bitwiseIsEqual, and 0 != -0.

Definition at line 3411 of file APFloat.cpp.

Referenced by hash_value().

◆ hash_value() [3/3]

hash_code llvm::detail::hash_value ( const SlowDynamicAPInt X)

Definition at line 26 of file SlowDynamicAPInt.cpp.

References hash_value(), and X.

◆ ilogb()

int llvm::detail::ilogb ( const IEEEFloat Arg)

Because the radix of APFloat is 2, this is equivalent to floor(log2(x)). For special APFloat values, this returns special error codes:

NaN -> IEK_NaN 0 -> IEK_Zero Inf -> IEK_Inf

Definition at line 4569 of file APFloat.cpp.

Referenced by frexp().

◆ isLegalToHoistInto()

template<class BlockT >
bool llvm::detail::isLegalToHoistInto ( BlockT *  Block)

SFINAE functions that dispatch to the isLegalToHoistInto member function or return false, if it doesn't exist.

Definition at line 183 of file GenericLoopInfoImpl.h.

References llvm::Block.

Referenced by llvm::LoopBase< BlockT, LoopT >::getLoopPreheader().

◆ isPresent()

template<typename T >
bool llvm::detail::isPresent ( const T t)
inline

◆ lcm()

SlowDynamicAPInt llvm::detail::lcm ( const SlowDynamicAPInt A,
const SlowDynamicAPInt B 
)

Returns the least common multiple of A and B.

Definition at line 226 of file SlowDynamicAPInt.cpp.

References A, abs(), B, gcd(), X, and Y.

◆ mod()

SlowDynamicAPInt llvm::detail::mod ( const SlowDynamicAPInt LHS,
const SlowDynamicAPInt RHS 
)

Returns the remainder of dividing LHS by RHS.

is always non-negative.

The RHS is always expected to be positive, and the result is always non-negative.

Definition at line 211 of file SlowDynamicAPInt.cpp.

References assert(), LHS, and RHS.

◆ next_or_end()

template<typename Iter >
Iter llvm::detail::next_or_end ( const Iter &  I,
const Iter &  End 
)

Definition at line 887 of file STLExtras.h.

References End, and I.

◆ operator!=() [1/4]

template<typename ValueT , typename MapTy , typename ValueInfoT >
bool llvm::detail::operator!= ( const DenseSetImpl< ValueT, MapTy, ValueInfoT > &  LHS,
const DenseSetImpl< ValueT, MapTy, ValueInfoT > &  RHS 
)

Inequality comparison for DenseSet.

Equivalent to !(LHS == RHS). See operator== for performance notes.

Definition at line 259 of file DenseSet.h.

References LHS, and RHS.

◆ operator!=() [2/4]

template<typename OtherT , typename DerivedT , typename BaseT , typename T , typename PointerT , typename ReferenceT >
bool llvm::detail::operator!= ( const indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT > &  lhs,
const OtherT &  rhs 
)

Definition at line 1358 of file STLExtras.h.

◆ operator!=() [3/4]

bool llvm::detail::operator!= ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 52 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator!=() [4/4]

bool llvm::detail::operator!= ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 86 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator%() [1/2]

SlowDynamicAPInt llvm::detail::operator% ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 79 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator%() [2/2]

SlowDynamicAPInt llvm::detail::operator% ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 113 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator%=()

SlowDynamicAPInt & llvm::detail::operator%= ( SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 45 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator*() [1/2]

SlowDynamicAPInt llvm::detail::operator* ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 73 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator*() [2/2]

SlowDynamicAPInt llvm::detail::operator* ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 107 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator*=()

SlowDynamicAPInt & llvm::detail::operator*= ( SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 39 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator+() [1/2]

SlowDynamicAPInt llvm::detail::operator+ ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 67 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator+() [2/2]

SlowDynamicAPInt llvm::detail::operator+ ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 101 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator+=()

SlowDynamicAPInt & llvm::detail::operator+= ( SlowDynamicAPInt A,
int64_t  B 
)

Convenience operator overloads for int64_t.


Convenience operator overloads for int64_t.

Definition at line 33 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator-() [1/2]

SlowDynamicAPInt llvm::detail::operator- ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 70 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator-() [2/2]

SlowDynamicAPInt llvm::detail::operator- ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 104 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator-=()

SlowDynamicAPInt & llvm::detail::operator-= ( SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 36 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator/() [1/2]

SlowDynamicAPInt llvm::detail::operator/ ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 76 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator/() [2/2]

SlowDynamicAPInt llvm::detail::operator/ ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 110 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator/=()

SlowDynamicAPInt & llvm::detail::operator/= ( SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 42 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator<() [1/2]

bool llvm::detail::operator< ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 58 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator<() [2/2]

bool llvm::detail::operator< ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 92 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator<<()

raw_ostream & llvm::detail::operator<< ( raw_ostream OS,
const SlowDynamicAPInt X 
)
inline

Definition at line 78 of file SlowDynamicAPInt.h.

References OS, and X.

◆ operator<=() [1/2]

bool llvm::detail::operator<= ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 61 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator<=() [2/2]

bool llvm::detail::operator<= ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 95 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator==() [1/4]

template<typename ValueT , typename MapTy , typename ValueInfoT >
bool llvm::detail::operator== ( const DenseSetImpl< ValueT, MapTy, ValueInfoT > &  LHS,
const DenseSetImpl< ValueT, MapTy, ValueInfoT > &  RHS 
)

Equality comparison for DenseSet.

Iterates over elements of LHS confirming that each element is also a member of RHS, and that RHS contains no additional values. Equivalent to N calls to RHS.count. Amortized complexity is linear, worst case is O(N^2) (if every hash collides).

Definition at line 243 of file DenseSet.h.

References E, LHS, llvm::operator==(), and RHS.

◆ operator==() [2/4]

template<typename OtherT , typename DerivedT , typename BaseT , typename T , typename PointerT , typename ReferenceT >
bool llvm::detail::operator== ( const indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT > &  lhs,
const OtherT &  rhs 
)

Compare this range with another.

FIXME: Make me a member function instead of friend when it works in C++20.

Definition at line 1350 of file STLExtras.h.

References llvm::operator==().

◆ operator==() [3/4]

bool llvm::detail::operator== ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 49 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator==() [4/4]

bool llvm::detail::operator== ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 83 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator>() [1/2]

bool llvm::detail::operator> ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 55 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator>() [2/2]

bool llvm::detail::operator> ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 89 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator>=() [1/2]

bool llvm::detail::operator>= ( const SlowDynamicAPInt A,
int64_t  B 
)

Definition at line 64 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ operator>=() [2/2]

bool llvm::detail::operator>= ( int64_t  A,
const SlowDynamicAPInt B 
)

Definition at line 98 of file SlowDynamicAPInt.cpp.

References A, and B.

◆ printBumpPtrAllocatorStats()

void llvm::detail::printBumpPtrAllocatorStats ( unsigned  NumSlabs,
size_t  BytesAllocated,
size_t  TotalMemory 
)

◆ PrintTo() [1/2]

void llvm::detail::PrintTo ( const ErrorHolder Err,
std::ostream *  Out 
)
inline

Definition at line 38 of file SupportHelpers.h.

References Info, and OS.

Referenced by PrintTo().

◆ PrintTo() [2/2]

template<typename T >
void llvm::detail::PrintTo ( const ExpectedHolder< T > &  Item,
std::ostream *  Out 
)

◆ reverse_if()

template<bool B, typename Range >
auto llvm::detail::reverse_if ( Range &&  R)

Definition at line 46 of file CFGDiff.h.

References reverse_if_helper().

◆ reverse_if_helper() [1/2]

template<typename Range >
auto llvm::detail::reverse_if_helper ( Range &&  R,
std::integral_constant< bool, false >   
)

Definition at line 37 of file CFGDiff.h.

Referenced by reverse_if().

◆ reverse_if_helper() [2/2]

template<typename Range >
auto llvm::detail::reverse_if_helper ( Range &&  R,
std::integral_constant< bool, true  
)

Definition at line 42 of file CFGDiff.h.

References llvm::reverse().

◆ scalbn() [1/3]

DoubleAPFloat llvm::detail::scalbn ( const DoubleAPFloat Arg,
int  Exp,
APFloat::roundingMode  RM 
)

Definition at line 5194 of file APFloat.cpp.

References assert(), scalbn(), and llvm::semPPCDoubleDouble.

◆ scalbn() [2/3]

DoubleAPFloat llvm::detail::scalbn ( const DoubleAPFloat Arg,
int  Exp,
IEEEFloat::roundingMode  RM 
)

Definition at line 5194 of file APFloat.cpp.

References assert(), scalbn(), and llvm::semPPCDoubleDouble.

◆ scalbn() [3/3]

IEEEFloat llvm::detail::scalbn ( IEEEFloat  X,
int  Exp,
IEEEFloat::roundingMode  RoundingMode 
)

Definition at line 4587 of file APFloat.cpp.

References llvm::lfExactlyZero, and X.

Referenced by frexp(), and scalbn().

◆ TakeError()

llvm::detail::ErrorHolder llvm::detail::TakeError ( llvm::Error  Err)

Definition at line 13 of file Error.cpp.

References llvm::handleAllErrors(), and Info.

Referenced by TakeExpected().

◆ TakeExpected() [1/2]

template<typename T >
ExpectedHolder< T > llvm::detail::TakeExpected ( Expected< T > &&  Exp)

Definition at line 26 of file Error.h.

References TakeExpected().

◆ TakeExpected() [2/2]

template<typename T >
ExpectedHolder< T > llvm::detail::TakeExpected ( Expected< T > &  Exp)

Definition at line 22 of file Error.h.

References TakeError().

Referenced by TakeExpected().

◆ tcSetLeastSignificantBits()

static void llvm::detail::tcSetLeastSignificantBits ( APInt::WordType dst,
unsigned  parts,
unsigned  bits 
)
static

Definition at line 1505 of file APFloat.cpp.

References llvm::APInt::APINT_BITS_PER_WORD.

Referenced by llvm::detail::IEEEFloat::convertToInteger().

◆ unwrapValue()

template<typename T >
decltype(auto) llvm::detail::unwrapValue ( T t)
inline

Variable Documentation

◆ HasFreeFunctionRBegin

template<typename Range >
constexpr bool llvm::detail::HasFreeFunctionRBegin
staticconstexpr
Initial value:
=
is_detected<check_has_free_function_rbegin, Range>::value

Definition at line 414 of file STLExtras.h.

◆ HasFreeFunctionSize

template<typename Range >
constexpr bool llvm::detail::HasFreeFunctionSize
staticconstexpr
Initial value:
=
is_detected<check_has_free_function_size, Range>::value

Definition at line 1695 of file STLExtras.h.

◆ HasMemberContains

template<typename Range , typename Element >
constexpr bool llvm::detail::HasMemberContains
staticconstexpr
Initial value:
=
is_detected<check_has_member_contains_t, Range, Element>::value

Definition at line 1859 of file STLExtras.h.

◆ HasMemberFind

template<typename Range , typename Element >
constexpr bool llvm::detail::HasMemberFind
staticconstexpr
Initial value:
=
is_detected<check_has_member_find_t, Range, Element>::value

Definition at line 1868 of file STLExtras.h.