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  AlignAdapter
 
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... >
 
class  ErrorAdapter
 
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...
 
class  format_adapter
 
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 >
 
class  has_FormatProvider
 
class  has_StreamOperator
 
struct  HasPointerLikeTypeTraits
 
struct  HasPointerLikeTypeTraits< T, decltype((sizeof(PointerLikeTypeTraits< T >)+sizeof(T)), void())>
 
class  HelperFunctions
 
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  is_cstring
 
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  MachinePassConcept
 
struct  MachinePassModel
 
class  missing_format_adapter
 
class  PadAdapter
 
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  provider_format_adapter
 
class  PtrUseVisitorBase
 Implementation of non-dependent functionality for PtrUseVisitor. More...
 
struct  PunnedPointer
 
struct  range_item_has_provider
 
struct  RecordKeeperImpl
 This class represents the internal implementation of the RecordKeeper. More...
 
class  RepeatAdapter
 
class  ResultHasInvalidateMethod
 SFINAE metafunction for computing whether ResultT provides an invalidate member function. More...
 
struct  SafeIntIterator
 
class  scope_exit
 
class  stream_operator_format_adapter
 
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 > >
 
struct  use_char_formatter
 
struct  use_double_formatter
 
struct  use_integral_formatter
 
struct  use_pointer_formatter
 
struct  use_string_formatter
 
struct  uses_format_member
 
struct  uses_format_provider
 
struct  uses_missing_provider
 
struct  uses_stream_operator
 
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 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<typename IterT >
using IterValue = typename std::iterator_traits< IterT >::value_type
 
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.
 
template<typename T , typename U >
bool canTypeFitValue (const U Value)
 
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<typename T >
std::enable_if_t< uses_format_member< T >::value, Tbuild_format_adapter (T &&Item)
 
template<typename T >
std::enable_if_t< uses_format_provider< T >::value, provider_format_adapter< T > > build_format_adapter (T &&Item)
 
template<typename T >
std::enable_if_t< uses_stream_operator< T >::value, stream_operator_format_adapter< T > > build_format_adapter (T &&Item)
 
template<typename T >
std::enable_if_t< uses_missing_provider< T >::value, missing_format_adapter< T > > build_format_adapter (T &&)
 
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 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_size

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

Definition at line 1700 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 1864 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 1872 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 2222 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 2558 of file STLExtras.h.

◆ IterOfRange

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

Definition at line 94 of file ADL.h.

◆ IterValue

template<typename IterT >
using llvm::detail::IterValue = typedef typename std::iterator_traits<IterT>::value_type

Definition at line 326 of file FormatProviders.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 1648 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 97 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 694 of file STLExtras.h.

Function Documentation

◆ 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 2433 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 2448 of file STLExtras.h.

References all_of_zip_predicate_first(), and value.

Referenced by llvm::all_of_zip().

◆ build_format_adapter() [1/4]

template<typename T >
std::enable_if_t< uses_missing_provider< T >::value, missing_format_adapter< T > > llvm::detail::build_format_adapter ( T &&  )

Definition at line 156 of file FormatVariadicDetails.h.

◆ build_format_adapter() [2/4]

template<typename T >
std::enable_if_t< uses_format_member< T >::value, T > llvm::detail::build_format_adapter ( T &&  Item)

◆ build_format_adapter() [3/4]

template<typename T >
std::enable_if_t< uses_format_provider< T >::value, provider_format_adapter< T > > llvm::detail::build_format_adapter ( T &&  Item)

Definition at line 137 of file FormatVariadicDetails.h.

◆ build_format_adapter() [4/4]

template<typename T >
std::enable_if_t< uses_stream_operator< T >::value, stream_operator_format_adapter< T > > llvm::detail::build_format_adapter ( T &&  Item)

Definition at line 144 of file FormatVariadicDetails.h.

◆ canTypeFitValue()

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

Definition at line 113 of file Sequence.h.

◆ 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 903 of file STLExtras.h.

References End, and I.

◆ 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().

◆ 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 4543 of file APFloat.cpp.

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

Referenced by frexp().

◆ 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 159 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 144 of file PassManager.h.

References IR.

Referenced by getAnalysisResult().

◆ hash_value() [1/2]

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

Definition at line 4980 of file APFloat.cpp.

◆ hash_value() [2/2]

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 3393 of file APFloat.cpp.

◆ 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 4504 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

◆ next_or_end()

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

Definition at line 896 of file STLExtras.h.

References End, and I.

◆ operator!=() [1/2]

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/2]

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 1367 of file STLExtras.h.

◆ operator==() [1/2]

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, and RHS.

◆ operator==() [2/2]

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 1359 of file STLExtras.h.

◆ 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 5129 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 5129 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 4522 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 1489 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

◆ HasFreeFunctionSize

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

Definition at line 1704 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 1868 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 1877 of file STLExtras.h.