LLVM  13.0.0git
Classes | Typedefs | Functions
llvm::detail Namespace Reference

Classes

class  AlignAdapter
 
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, PreservedAnalysesT, InvalidatorT, false >
 Specialization of AnalysisResultModel which provides the default invalidate functionality. More...
 
struct  AnalysisResultModel< IRUnitT, PassT, ResultT, PreservedAnalysesT, 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  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 >
 
union  copy_construction_triviality_helper
 Internal utility to detect trivial copy construction. More...
 
struct  DenseMapPair
 
struct  DenseSetEmpty
 
class  DenseSetImpl
 Base class for DenseSet and DenseSmallSet. More...
 
class  DenseSetPair
 
struct  detector
 
struct  detector< void_t< Op< Args... > >, Op, Args... >
 
class  DoubleAPFloat
 
class  enumerator
 
class  enumerator_iter
 
class  ErrorAdapter
 
struct  ErrorHolder
 
class  ErrorMatchesMono
 
class  ErrorMessageMatches
 
struct  ExpectedHolder
 
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
 
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  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
 
class  missing_format_adapter
 
union  move_construction_triviality_helper
 Internal utility to detect trivial move construction. More...
 
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  range_item_has_provider
 
class  RepeatAdapter
 
struct  result_pair
 
class  ResultHasInvalidateMethod
 SFINAE metafunction for computing whether ResultT provides an invalidate member function. More...
 
struct  SafeIntIterator
 
class  scope_exit
 
class  stream_operator_format_adapter
 
struct  TrailingZerosCounter
 
union  trivial_helper
 
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  WaymarkingTraits
 
struct  zip_common
 
struct  zip_first
 
class  zip_longest_iterator
 
class  zip_longest_range
 
class  zip_shortest
 
struct  ZipLongestItemType
 
struct  ZipLongestTupleType
 
class  zippy
 
struct  ZipTupleType
 

Typedefs

template<typename T >
using EnableIfTrivial = std::enable_if_t< llvm::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::is_void< Ret >::value||std::is_convertible< decltype(std::declval< CallableT >()(std::declval< Params >()...)), Ret >::value >
 
template<typename RangeT >
using IterOfRange = decltype(std::begin(std::declval< RangeT & >()))
 
template<typename RangeT >
using ValueOfRange = typename std::remove_reference< decltype(*std::begin(std::declval< RangeT & >()))>::type
 
template<typename... >
using void_t = void
 
template<typename Callable , typename... Args>
using is_invocable = decltype(std::declval< Callable & >()(std::declval< Args >()...))
 
template<typename ZipType , typename... Iters>
using zip_traits = iterator_facade_base< ZipType, typename std::common_type< std::bidirectional_iterator_tag, typename std::iterator_traits< Iters >::iterator_category... >::type, typename ZipTupleType< Iters... >::type, typename std::iterator_traits< typename std::tuple_element< 0, std::tuple< Iters... > >::type >::difference_type, typename ZipTupleType< Iters... >::type *, typename ZipTupleType< Iters... >::type >
 
template<typename T >
using sort_trivially_copyable = conjunction< std::is_pointer< T >, std::is_trivially_copyable< typename std::iterator_traits< T >::value_type > >
 
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. More...
 
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). More...
 
template<typename IterT >
using IterValue = typename std::iterator_traits< IterT >::value_type
 

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)
 
static unsigned combineHashValue (unsigned a, unsigned b)
 Simplistic combination of 32-bit hash values into 32-bit hash values. More...
 
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. More...
 
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. More...
 
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) -> llvm::Optional< std::remove_const_t< std::remove_reference_t< decltype(*I)>>>
 
template<typename F , typename Tuple , std::size_t... I>
decltype(auto) apply_tuple_impl (F &&f, Tuple &&t, std::index_sequence< I... >)
 
template<typename FieldTy >
static void emitOps (llvm::BitCodeAbbrev &abbrev)
 Attaches the last field to an abbreviation. More...
 
template<typename FieldTy , typename Next , typename... Rest>
static void emitOps (llvm::BitCodeAbbrev &abbrev)
 Attaches fields to an abbreviation. More...
 
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. More...
 
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. More...
 
void printBumpPtrAllocatorStats (unsigned NumSlabs, size_t BytesAllocated, size_t TotalMemory)
 
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, T > build_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 &&)
 
ErrorHolder TakeError (Error Err)
 
template<typename T >
ExpectedHolder< T > TakeExpected (Expected< T > &Exp)
 
template<typename T >
ExpectedHolder< T > TakeExpected (Expected< T > &&Exp)
 
void PrintTo (const ErrorHolder &Err, std::ostream *Out)
 
template<typename T >
void PrintTo (const ExpectedHolder< T > &Item, std::ostream *Out)
 
DoubleAPFloat scalbn (const DoubleAPFloat &Arg, int Exp, APFloat::roundingMode RM)
 
DoubleAPFloat frexp (const DoubleAPFloat &Arg, int &Exp, APFloat::roundingMode RM)
 

Typedef Documentation

◆ EnableIfCallable

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

Definition at line 71 of file FunctionExtras.h.

◆ EnableIfTrivial

template<typename T >
using llvm::detail::EnableIfTrivial = typedef std::enable_if_t<llvm::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 65 of file FunctionExtras.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 349 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 331 of file BitcodeConvenience.h.

◆ is_invocable

template<typename Callable , typename... Args>
using llvm::detail::is_invocable = typedef decltype(std::declval<Callable &>()(std::declval<Args>()...))

Definition at line 98 of file STLExtras.h.

◆ IterOfRange

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

Definition at line 52 of file STLExtras.h.

◆ IterValue

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

Definition at line 325 of file FormatProviders.h.

◆ sort_trivially_copyable

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

Definition at line 1467 of file STLExtras.h.

◆ ValueOfRange

template<typename RangeT >
using llvm::detail::ValueOfRange = typedef typename std::remove_reference<decltype( *std::begin(std::declval<RangeT &>()))>::type

Definition at line 56 of file STLExtras.h.

◆ void_t

template<typename... >
using llvm::detail::void_t = typedef void

Definition at line 75 of file STLExtras.h.

◆ zip_traits

template<typename ZipType , typename... Iters>
using llvm::detail::zip_traits = typedef iterator_facade_base< ZipType, typename std::common_type<std::bidirectional_iterator_tag, typename std::iterator_traits< Iters>::iterator_category...>::type, typename ZipTupleType<Iters...>::type, typename std::iterator_traits<typename std::tuple_element< 0, std::tuple<Iters...> >::type>::difference_type, typename ZipTupleType<Iters...>::type *, typename ZipTupleType<Iters...>::type>

Definition at line 609 of file STLExtras.h.

Function Documentation

◆ apply_tuple_impl()

template<typename F , typename Tuple , std::size_t... I>
decltype(auto) llvm::detail::apply_tuple_impl ( F &&  f,
Tuple &&  t,
std::index_sequence< I... >   
)

Definition at line 1964 of file STLExtras.h.

References f().

Referenced by llvm::apply_tuple().

◆ 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 30 of file Sequence.h.

References llvm::max(), and llvm::min().

◆ 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 
) -> llvm::Optional< std::remove_const_t<std::remove_reference_t<decltype(*I)>>>

Definition at line 743 of file STLExtras.h.

◆ 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 165 of file BitcodeConvenience.h.

Referenced by llvm::BCGenericRecordLayout< BCLiteral< RecordCode >, 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 175 of file BitcodeConvenience.h.

References emitOps().

◆ frexp() [1/2]

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

◆ frexp() [2/2]

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

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

References llvm::AMDGPU::HSAMD::Kernel::Key::Args, 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 421 of file PassManager.h.

References llvm::AMDGPU::HSAMD::Kernel::Key::Args, and IR.

Referenced by getAnalysisResult().

◆ hash_value() [1/2]

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

Definition at line 4641 of file APFloat.cpp.

References Arg, llvm::hash_combine(), and hash_value().

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

References Arg, llvm::hash_combine(), and llvm::hash_combine_range().

Referenced by hash_value().

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

References Arg, llvm::APFloatBase::IEK_Inf, llvm::APFloatBase::IEK_NaN, llvm::APFloatBase::IEK_Zero, llvm::lfExactlyZero, and llvm::APFloatBase::rmNearestTiesToEven.

Referenced by llvm::InstCombinerImpl::foldFCmpIntToFPConst(), frexp(), and llvm::isKnownNeverInfinity().

◆ next_or_end()

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

Definition at line 736 of file STLExtras.h.

◆ operator!=()

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.

◆ operator==()

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 llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), E, and llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::size().

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

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

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

Definition at line 4771 of file APFloat.cpp.

References Arg, assert(), llvm::AArch64::RM, scalbn(), and llvm::semPPCDoubleDouble.

◆ scalbn() [2/2]

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

Definition at line 4183 of file APFloat.cpp.

References llvm::lfExactlyZero, llvm::max(), llvm::min(), and X.

Referenced by frexp(), and scalbn().

◆ TakeError()

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

Definition at line 15 of file Error.cpp.

Referenced by TakeExpected().

◆ TakeExpected() [1/2]

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

Definition at line 27 of file Error.h.

References TakeExpected().

◆ TakeExpected() [2/2]

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

Definition at line 23 of file Error.h.

References TakeError().

Referenced by TakeExpected().