LLVM  6.0.0svn
Classes | Typedefs | Functions
llvm::detail Namespace Reference

Implementation details of the pass manager interfaces. More...

Classes

class  AlignAdapter
 
class  AlignerImpl
 
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  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
 
class  DoubleAPFloat
 
class  enumerator
 
class  enumerator_iter
 
struct  ErrorHolder
 
struct  ExpectedHolder
 
class  format_adapter
 
class  has_FormatProvider
 
struct  HasPointerLikeTypeTraits
 
struct  HasPointerLikeTypeTraits< T, decltype((sizeof(PointerLikeTypeTraits< T >)+sizeof(T)), void())>
 
class  HelperFunctions
 
class  IEEEFloat
 
struct  is_cstring
 
struct  IsPointerLike
 
struct  IsPointerLike< T * >
 
struct  LeadingZerosCounter
 
class  missing_format_adapter
 
class  OptionKey
 
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...
 
class  scope_exit
 
union  SizerImpl
 
struct  TrailingZerosCounter
 
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
 
class  value_sequence_iterator
 
struct  zip_common
 
struct  zip_first
 
class  zip_shortest
 
class  zippy
 
struct  ZipTupleType
 

Typedefs

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 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 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)
 
template<typename F , typename Tuple , std::size_t... I>
auto apply_tuple_impl (F &&f, Tuple &&t, index_sequence< I... >) -> decltype(std::forward< F >(f)(std::get< I >(std::forward< Tuple >(t))...))
 
template<typename N >
bool to_float (const Twine &T, N &Num, N(*StrTo)(const char *, char **))
 
template<typename IteratorT >
std::string join_impl (IteratorT Begin, IteratorT End, StringRef Separator, std::input_iterator_tag)
 
template<typename IteratorT >
std::string join_impl (IteratorT Begin, IteratorT End, StringRef Separator, std::forward_iterator_tag)
 
template<typename Sep >
void join_items_impl (std::string &Result, Sep Separator)
 
template<typename Sep , typename Arg >
void join_items_impl (std::string &Result, Sep Separator, const Arg &Item)
 
template<typename Sep , typename Arg1 , typename... Args>
void join_items_impl (std::string &Result, Sep Separator, const Arg1 &A1, Args &&... Items)
 
size_t join_one_item_size (char C)
 
size_t join_one_item_size (const char *S)
 
template<typename T >
size_t join_one_item_size (const T &Str)
 
size_t join_items_size ()
 
template<typename A1 >
size_t join_items_size (const A1 &A)
 
template<typename A1 , typename... Args>
size_t join_items_size (const A1 &A, Args &&... Items)
 
void printBumpPtrAllocatorStats (unsigned NumSlabs, size_t BytesAllocated, size_t TotalMemory)
 
template<typename T >
std::enable_if< uses_format_member< T >::value, T >::type build_format_adapter (T &&Item)
 
template<typename T >
std::enable_if< uses_format_provider< T >::value, provider_format_adapter< T > >::type build_format_adapter (T &&Item)
 
template<typename T >
std::enable_if< uses_missing_provider< T >::value, missing_format_adapter< T > >::type build_format_adapter (T &&Item)
 
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)
 
DoubleAPFloat scalbn (DoubleAPFloat Arg, int Exp, APFloat::roundingMode RM)
 
DoubleAPFloat frexp (const DoubleAPFloat &Arg, int &Exp, APFloat::roundingMode RM)
 

Detailed Description

Implementation details of the pass manager interfaces.

Implementation of format_provider<T> for duration types.

The options string of a duration type has the grammar:

duration_options ::= [unit][show_unit [number_options]] unit ::= h|m|s|ms|us|ns show_unit ::=+|-` number_options ::= options string for a integral or floating point type

Examples

| options | Input | Output |

| "" | 1s | 1 s | | "ms" | 1s | 1000 ms | | "ms-" | 1s | 1000 | | "ms-n" | 1s | 1,000 |

| "" | 1.0s | 1.00 s |

If the unit of the duration type is not one of the units specified above, it is still possible to format it, provided you explicitly request a display unit or you request that the unit is not displayed.

Typedef Documentation

◆ IterOfRange

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

Definition at line 48 of file STLExtras.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.

◆ ValueOfRange

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

Definition at line 52 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 373 of file STLExtras.h.

Function Documentation

◆ apply_tuple_impl()

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

Definition at line 1119 of file STLExtras.h.

Referenced by llvm::apply_tuple().

◆ build_format_adapter() [1/3]

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

◆ build_format_adapter() [2/3]

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

Definition at line 99 of file FormatVariadicDetails.h.

◆ build_format_adapter() [3/3]

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

Definition at line 106 of file FormatVariadicDetails.h.

◆ frexp() [1/2]

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

◆ frexp() [2/2]

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

◆ hash_value() [1/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 2772 of file APFloat.cpp.

References assert(), llvm::detail::IEEEFloat::convert(), llvm::APFloatBase::fcInfinity, llvm::APFloatBase::fcNaN, llvm::APFloatBase::fcZero, llvm::APInt::getRawData(), llvm::hash_combine(), llvm::hash_combine_range(), llvm::detail::IEEEFloat::isFiniteNonZero(), llvm::detail::IEEEFloat::isNaN(), llvm::fltSemantics::minExponent, llvm::APFloatBase::opInexact, llvm::APFloatBase::opOK, llvm::fltSemantics::precision, llvm::APFloatBase::rmNearestTiesToEven, and llvm::detail::IEEEFloat::subtract().

◆ hash_value() [2/2]

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

Definition at line 4262 of file APFloat.cpp.

References llvm::hash_combine(), and llvm::detail::DoubleAPFloat::hash_value.

◆ ilogb()

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

◆ join_impl() [1/2]

template<typename IteratorT >
std::string llvm::detail::join_impl ( IteratorT  Begin,
IteratorT  End,
StringRef  Separator,
std::input_iterator_tag   
)
inline

Definition at line 255 of file StringExtras.h.

Referenced by llvm::join().

◆ join_impl() [2/2]

template<typename IteratorT >
std::string llvm::detail::join_impl ( IteratorT  Begin,
IteratorT  End,
StringRef  Separator,
std::forward_iterator_tag   
)
inline

Definition at line 270 of file StringExtras.h.

References llvm::WebAssembly::End, I, and llvm::StringRef::size().

◆ join_items_impl() [1/3]

template<typename Sep >
void llvm::detail::join_items_impl ( std::string &  Result,
Sep  Separator 
)
inline

Definition at line 289 of file StringExtras.h.

Referenced by llvm::join_items(), and join_items_impl().

◆ join_items_impl() [2/3]

template<typename Sep , typename Arg >
void llvm::detail::join_items_impl ( std::string &  Result,
Sep  Separator,
const Arg Item 
)
inline

Definition at line 292 of file StringExtras.h.

References llvm::AMDGPU::HSAMD::Kernel::Key::Args.

◆ join_items_impl() [3/3]

template<typename Sep , typename Arg1 , typename... Args>
void llvm::detail::join_items_impl ( std::string &  Result,
Sep  Separator,
const Arg1 &  A1,
Args &&...  Items 
)
inline

Definition at line 298 of file StringExtras.h.

References join_items_impl().

◆ join_items_size() [1/3]

size_t llvm::detail::join_items_size ( )
inline

Definition at line 312 of file StringExtras.h.

Referenced by llvm::join_items(), and join_items_size().

◆ join_items_size() [2/3]

template<typename A1 >
size_t llvm::detail::join_items_size ( const A1 &  A)
inline

Definition at line 314 of file StringExtras.h.

References llvm::AMDGPU::HSAMD::Kernel::Key::Args, and join_one_item_size().

◆ join_items_size() [3/3]

template<typename A1 , typename... Args>
size_t llvm::detail::join_items_size ( const A1 &  A,
Args &&...  Items 
)
inline

Definition at line 318 of file StringExtras.h.

References join_items_size(), and join_one_item_size().

◆ join_one_item_size() [1/3]

size_t llvm::detail::join_one_item_size ( char  C)
inline

Definition at line 305 of file StringExtras.h.

Referenced by llvm::join_items(), and join_items_size().

◆ join_one_item_size() [2/3]

size_t llvm::detail::join_one_item_size ( const char S)
inline

Definition at line 306 of file StringExtras.h.

◆ join_one_item_size() [3/3]

template<typename T >
size_t llvm::detail::join_one_item_size ( const T Str)
inline

Definition at line 308 of file StringExtras.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

◆ PrintTo() [2/2]

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

◆ scalbn() [1/2]

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

◆ scalbn() [2/2]

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

◆ TakeError()

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

Definition at line 16 of file Error.cpp.

Referenced by TakeExpected().

◆ TakeExpected() [1/2]

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

◆ TakeExpected() [2/2]

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

Definition at line 33 of file Error.h.

References TakeExpected().

◆ to_float()

template<typename N >
bool llvm::detail::to_float ( const Twine T,
N Num,
N(*)(const char *, char **)  StrTo 
)
inline