LLVM
8.0.1
|
Implementation details of the pass manager interfaces. More...
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 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 Iter > | |
static Iter | next_or_end (const Iter &I, const Iter &End) |
template<typename Iter > | |
static auto | deref_or_none (const Iter &I, const Iter &End) -> llvm::Optional< typename std::remove_const< typename std::remove_reference< decltype(*I)>::type >::type > |
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) |
template<typename PassT , typename IRUnitT , typename AnalysisManagerT , typename... ArgTs, size_t... Ns> | |
PassT::Result | getAnalysisResultUnpackTuple (AnalysisManagerT &AM, IRUnitT &IR, std::tuple< ArgTs... > Args, llvm::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 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_stream_operator< T >::value, stream_operator_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< 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) |
template<typename LayerT > | |
std::unique_ptr< GenericLayerImpl< LayerT > > | createGenericLayer (LayerT &Layer) |
DoubleAPFloat | scalbn (DoubleAPFloat Arg, int Exp, APFloat::roundingMode RM) |
DoubleAPFloat | frexp (const DoubleAPFloat &Arg, int &Exp, APFloat::roundingMode RM) |
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
| "" | 1s | 1 s | | "ms" | 1s | 1000 ms | | "ms-" | 1s | 1000 | | "ms-n" | 1s | 1,000 |
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.
using llvm::detail::IterOfRange = typedef decltype(std::begin(std::declval<RangeT &>())) |
Definition at line 53 of file STLExtras.h.
using llvm::detail::IterValue = typedef typename std::iterator_traits<IterT>::value_type |
Definition at line 326 of file FormatProviders.h.
using llvm::detail::ValueOfRange = typedef typename std::remove_reference<decltype( *std::begin(std::declval<RangeT &>()))>::type |
Definition at line 57 of file STLExtras.h.
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 555 of file STLExtras.h.
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 1524 of file STLExtras.h.
Referenced by llvm::apply_tuple().
std::enable_if<uses_format_member<T>::value, T>::type llvm::detail::build_format_adapter | ( | T && | Item | ) |
Definition at line 132 of file FormatVariadicDetails.h.
Referenced by llvm::detail::AlignAdapter< T >::format(), llvm::detail::PadAdapter< T >::format(), llvm::detail::RepeatAdapter< T >::format(), and llvm::formatv().
std::enable_if<uses_format_provider<T>::value, provider_format_adapter<T> >::type llvm::detail::build_format_adapter | ( | T && | Item | ) |
Definition at line 139 of file FormatVariadicDetails.h.
std::enable_if<uses_stream_operator<T>::value, stream_operator_format_adapter<T> >::type llvm::detail::build_format_adapter | ( | T && | Item | ) |
Definition at line 146 of file FormatVariadicDetails.h.
std::enable_if<uses_missing_provider<T>::value, missing_format_adapter<T> >::type llvm::detail::build_format_adapter | ( | T && | Item | ) |
Definition at line 159 of file FormatVariadicDetails.h.
std::unique_ptr<GenericLayerImpl<LayerT> > llvm::detail::createGenericLayer | ( | LayerT & | Layer | ) |
Definition at line 100 of file OrcCBindingsStack.h.
|
static |
Definition at line 685 of file STLExtras.h.
IEEEFloat llvm::detail::frexp | ( | const IEEEFloat & | Val, |
int & | Exp, | ||
IEEEFloat::roundingMode | RM | ||
) |
Definition at line 3828 of file APFloat.cpp.
References llvm::APFloatBase::IEK_Inf, llvm::APFloatBase::IEK_NaN, llvm::APFloatBase::IEK_Zero, llvm::detail::IEEEFloat::ilogb, llvm::detail::IEEEFloat::makeQuiet(), and llvm::detail::IEEEFloat::scalbn.
DoubleAPFloat llvm::detail::frexp | ( | const DoubleAPFloat & | Arg, |
int & | Exp, | ||
APFloat::roundingMode | RM | ||
) |
Definition at line 4401 of file APFloat.cpp.
References llvm::lltok::APFloat, assert(), llvm::detail::DoubleAPFloat::DoubleAPFloat(), F(), llvm::APFloatBase::fcNormal, llvm::detail::DoubleAPFloat::frexp, llvm::detail::DoubleAPFloat::getCategory(), llvm::detail::IEEEFloat::getSemantics(), llvm::FPDenormal::IEEE, llvm_unreachable, and llvm::detail::DoubleAPFloat::scalbn.
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 428 of file PassManager.h.
References llvm::AMDGPU::HSAMD::Kernel::Key::Args, getAnalysisResultUnpackTuple(), and IR.
PassT::Result llvm::detail::getAnalysisResultUnpackTuple | ( | AnalysisManagerT & | AM, |
IRUnitT & | IR, | ||
std::tuple< ArgTs... > | Args, | ||
llvm::index_sequence< Ns... > | |||
) |
Actual unpacker of extra arguments in getAnalysisResult, passes only those tuple arguments that are mentioned in index_sequence.
Definition at line 413 of file PassManager.h.
References llvm::AMDGPU::HSAMD::Kernel::Key::Args, and IR.
Referenced by getAnalysisResult().
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 2773 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_code llvm::detail::hash_value | ( | const DoubleAPFloat & | Arg | ) |
Definition at line 4265 of file APFloat.cpp.
References llvm::hash_combine(), and llvm::detail::DoubleAPFloat::hash_value.
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 3789 of file APFloat.cpp.
References llvm::detail::IEEEFloat::getSemantics(), llvm::APFloatBase::IEK_Inf, llvm::APFloatBase::IEK_NaN, llvm::APFloatBase::IEK_Zero, llvm::detail::IEEEFloat::isDenormal(), llvm::detail::IEEEFloat::isInfinity(), llvm::detail::IEEEFloat::isNaN(), llvm::detail::IEEEFloat::isZero(), llvm::lfExactlyZero, llvm::fltSemantics::precision, and llvm::APFloatBase::rmNearestTiesToEven.
Referenced by llvm::detail::DoubleAPFloat::getSecond(), llvm::detail::IEEEFloat::isNegZero(), and llvm::InstCombiner::visitICmpInst().
|
inline |
Definition at line 299 of file StringExtras.h.
|
inline |
Definition at line 314 of file StringExtras.h.
|
inline |
Definition at line 333 of file StringExtras.h.
Referenced by llvm::join_items(), and join_items_impl().
|
inline |
Definition at line 336 of file StringExtras.h.
References llvm::AMDGPU::HSAMD::Kernel::Key::Args.
|
inline |
Definition at line 342 of file StringExtras.h.
References join_items_impl().
|
inline |
Definition at line 356 of file StringExtras.h.
Referenced by llvm::join_items(), and join_items_size().
Definition at line 358 of file StringExtras.h.
References llvm::AMDGPU::HSAMD::Kernel::Key::Args, and join_one_item_size().
|
inline |
Definition at line 362 of file StringExtras.h.
References join_items_size(), and join_one_item_size().
Definition at line 349 of file StringExtras.h.
Referenced by llvm::join_items(), and join_items_size().
Definition at line 350 of file StringExtras.h.
Definition at line 352 of file StringExtras.h.
|
static |
Definition at line 678 of file STLExtras.h.
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 241 of file DenseSet.h.
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 225 of file DenseSet.h.
References llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), E, and llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::size().
void llvm::detail::printBumpPtrAllocatorStats | ( | unsigned | NumSlabs, |
size_t | BytesAllocated, | ||
size_t | TotalMemory | ||
) |
Definition at line 21 of file Allocator.cpp.
References llvm::errs().
Referenced by llvm::MallocAllocator::PrintStats(), and llvm::BumpPtrAllocatorImpl< MallocAllocator, 65536 >::PrintStats().
|
inline |
Definition at line 35 of file SupportHelpers.h.
Referenced by PrintTo().
void llvm::detail::PrintTo | ( | const ExpectedHolder< T > & | Item, |
std::ostream * | Out | ||
) |
Definition at line 50 of file SupportHelpers.h.
References llvm::detail::ExpectedHolder< T >::Exp, PrintTo(), and llvm::detail::ErrorHolder::Success().
IEEEFloat llvm::detail::scalbn | ( | IEEEFloat | X, |
int | Exp, | ||
IEEEFloat::roundingMode | RoundingMode | ||
) |
Definition at line 3807 of file APFloat.cpp.
References llvm::detail::IEEEFloat::getSemantics(), llvm::detail::IEEEFloat::isNaN(), llvm::lfExactlyZero, llvm::detail::IEEEFloat::makeQuiet(), llvm::max(), llvm::fltSemantics::maxExponent, llvm::fltSemantics::minExponent, llvm::fltSemantics::precision, and X.
DoubleAPFloat llvm::detail::scalbn | ( | DoubleAPFloat | Arg, |
int | Exp, | ||
APFloat::roundingMode | RM | ||
) |
Definition at line 4395 of file APFloat.cpp.
References assert(), llvm::detail::DoubleAPFloat::DoubleAPFloat(), and llvm::detail::DoubleAPFloat::scalbn.
llvm::detail::ErrorHolder llvm::detail::TakeError | ( | llvm::Error | Err | ) |
Definition at line 16 of file Error.cpp.
Referenced by TakeExpected().
ExpectedHolder<T> llvm::detail::TakeExpected | ( | Expected< T > & | Exp | ) |
Definition at line 24 of file Error.h.
References TakeError(), and llvm::Expected< T >::takeError().
Referenced by TakeExpected().
ExpectedHolder<T> llvm::detail::TakeExpected | ( | Expected< T > && | Exp | ) |
Definition at line 28 of file Error.h.
References TakeExpected().
|
inline |
Definition at line 200 of file StringExtras.h.
References llvm::Twine::toNullTerminatedStringRef().
Referenced by llvm::to_float().