#ifndef LLVM_FRONTEND_OPENMP_CLAUSET_H
#define LLVM_FRONTEND_OPENMP_CLAUSET_H
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Frontend/OpenMP/OMP.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <iterator>
#include <optional>
#include <tuple>
#include <type_traits>
#include <utility>
#include <variant>
#define ENUM …
#define OPT …
#define CLAUSET_SCOPED_ENUM_MEMBER_CONVERT(Ov, Tv) …
#define CLAUSET_UNSCOPED_ENUM_MEMBER_CONVERT(Ov, Tv) …
#define CLAUSET_ENUM_CONVERT(func, OtherE, ThisE, Maps) …
namespace detail {
template <typename T> struct is_variant { … };
is_variant<std::variant<Ts...>>;
is_variant_v;
template <typename...> struct UnionOfTwo;
UnionOfTwo<std::variant<Types1...>, std::variant<Types2...>>;
}
namespace tomp {
type
ListT;
ObjectT;
ObjectListT;
IteratorT;
template <
typename ContainerTy, typename FunctionTy,
typename ElemTy = typename llvm::remove_cvref_t<ContainerTy>::value_type,
typename ResultTy = std::invoke_result_t<FunctionTy, ElemTy>>
ListT<ResultTy> makeList(ContainerTy &&container, FunctionTy &&func) { … }
namespace clause {
operator==;
template <typename T, typename I, typename E>
struct AbsentT { … };
template <typename T, typename I, typename E>
struct AcqRelT { … };
template <typename T, typename I, typename E>
struct AcquireT { … };
template <typename T, typename I, typename E>
struct AdjustArgsT { … };
template <typename T, typename I, typename E>
struct AffinityT { … };
template <typename T, typename I, typename E>
struct AlignT { … };
template <typename T, typename I, typename E>
struct AlignedT { … };
template <typename T, typename I, typename E>
struct AllocatorT;
template <typename T, typename I, typename E>
struct AllocateT { … };
template <typename T, typename I, typename E>
struct AllocatorT { … };
template <typename T, typename I, typename E>
struct AppendArgsT { … };
template <typename T, typename I, typename E>
struct AtT { … };
template <typename T, typename I, typename E>
struct AtomicDefaultMemOrderT { … };
template <typename T, typename I, typename E>
struct BindT { … };
template <typename T, typename I, typename E>
struct CaptureT { … };
template <typename T, typename I, typename E>
struct CollapseT { … };
template <typename T, typename I, typename E>
struct CompareT { … };
template <typename T, typename I, typename E>
struct ContainsT { … };
template <typename T, typename I, typename E>
struct CopyinT { … };
template <typename T, typename I, typename E>
struct CopyprivateT { … };
template <typename T, typename I, typename E>
struct DefaultT { … };
template <typename T, typename I, typename E>
struct DefaultmapT { … };
template <typename T, typename I, typename E>
struct DoacrossT;
template <typename T, typename I, typename E>
struct DependT { … };
template <typename T, typename I, typename E>
struct DestroyT { … };
template <typename T, typename I, typename E>
struct DetachT { … };
template <typename T, typename I, typename E>
struct DeviceT { … };
template <typename T, typename I, typename E>
struct DeviceTypeT { … };
template <typename T, typename I, typename E>
struct DistScheduleT { … };
template <typename T, typename I, typename E>
struct DoacrossT { … };
template <typename T, typename I, typename E>
struct DynamicAllocatorsT { … };
template <typename T, typename I, typename E>
struct EnterT { … };
template <typename T, typename I, typename E>
struct ExclusiveT { … };
template <typename T, typename I, typename E>
struct FailT { … };
template <typename T, typename I, typename E>
struct FilterT { … };
template <typename T, typename I, typename E>
struct FinalT { … };
template <typename T, typename I, typename E>
struct FirstprivateT { … };
template <typename T, typename I, typename E>
struct FromT { … };
template <typename T, typename I, typename E>
struct FullT { … };
template <typename T, typename I, typename E>
struct GrainsizeT { … };
template <typename T, typename I, typename E>
struct HasDeviceAddrT { … };
template <typename T, typename I, typename E>
struct HintT { … };
template <typename T, typename I, typename E>
struct HoldsT { … };
template <typename T, typename I, typename E>
struct IfT { … };
template <typename T, typename I, typename E>
struct InbranchT { … };
template <typename T, typename I, typename E>
struct InclusiveT { … };
template <typename T, typename I, typename E>
struct IndirectT { … };
template <typename T, typename I, typename E>
struct InitT { … };
template <typename T, typename I, typename E>
struct InitializerT { … };
template <typename T, typename I, typename E>
struct InReductionT { … };
template <typename T, typename I, typename E>
struct IsDevicePtrT { … };
template <typename T, typename I, typename E>
struct LastprivateT { … };
template <typename T, typename I, typename E>
struct LinearT { … };
template <typename T, typename I, typename E>
struct LinkT { … };
template <typename T, typename I, typename E>
struct MapT { … };
template <typename T, typename I, typename E>
struct MatchT { … };
template <typename T, typename I, typename E>
struct MergeableT { … };
template <typename T, typename I, typename E>
struct MessageT { … };
template <typename T, typename I, typename E>
struct NocontextT { … };
template <typename T, typename I, typename E>
struct NogroupT { … };
template <typename T, typename I, typename E>
struct NontemporalT { … };
template <typename T, typename I, typename E>
struct NoOpenmpT { … };
template <typename T, typename I, typename E>
struct NoOpenmpRoutinesT { … };
template <typename T, typename I, typename E>
struct NoParallelismT { … };
template <typename T, typename I, typename E>
struct NotinbranchT { … };
template <typename T, typename I, typename E>
struct NovariantsT { … };
template <typename T, typename I, typename E>
struct NowaitT { … };
template <typename T, typename I, typename E>
struct NumTasksT { … };
template <typename T, typename I, typename E>
struct NumTeamsT { … };
template <typename T, typename I, typename E>
struct NumThreadsT { … };
template <typename T, typename I, typename E>
struct OmpxAttributeT { … };
template <typename T, typename I, typename E>
struct OmpxBareT { … };
template <typename T, typename I, typename E>
struct OmpxDynCgroupMemT { … };
template <typename T, typename I, typename E>
struct OrderT { … };
template <typename T, typename I, typename E>
struct OrderedT { … };
template <typename T, typename I, typename E>
struct OtherwiseT { … };
template <typename T, typename I, typename E>
struct PartialT { … };
template <typename T, typename I, typename E>
struct PriorityT { … };
template <typename T, typename I, typename E>
struct PrivateT { … };
template <typename T, typename I, typename E>
struct ProcBindT { … };
template <typename T, typename I, typename E>
struct ReadT { … };
template <typename T, typename I, typename E>
struct ReductionT { … };
template <typename T, typename I, typename E>
struct RelaxedT { … };
template <typename T, typename I, typename E>
struct ReleaseT { … };
template <typename T, typename I, typename E>
struct ReverseOffloadT { … };
template <typename T, typename I, typename E>
struct SafelenT { … };
template <typename T, typename I, typename E>
struct ScheduleT { … };
template <typename T, typename I, typename E>
struct SeqCstT { … };
template <typename T, typename I, typename E>
struct SeverityT { … };
template <typename T, typename I, typename E>
struct SharedT { … };
template <typename T, typename I, typename E>
struct SimdT { … };
template <typename T, typename I, typename E>
struct SimdlenT { … };
template <typename T, typename I, typename E>
struct SizesT { … };
template <typename T, typename I, typename E>
struct TaskReductionT { … };
template <typename T, typename I, typename E>
struct ThreadLimitT { … };
template <typename T, typename I, typename E>
struct ThreadsT { … };
template <typename T, typename I, typename E>
struct ToT { … };
template <typename T, typename I, typename E>
struct UnifiedAddressT { … };
template <typename T, typename I, typename E>
struct UnifiedSharedMemoryT { … };
template <typename T, typename I, typename E>
struct UniformT { … };
template <typename T, typename I, typename E>
struct UnknownT { … };
template <typename T, typename I, typename E>
struct UntiedT { … };
template <typename T, typename I, typename E>
struct UpdateT { … };
template <typename T, typename I, typename E>
struct UseT { … };
template <typename T, typename I, typename E>
struct UseDeviceAddrT { … };
template <typename T, typename I, typename E>
struct UseDevicePtrT { … };
template <typename T, typename I, typename E>
struct UsesAllocatorsT { … };
template <typename T, typename I, typename E>
struct WeakT { … };
template <typename T, typename I, typename E>
struct WhenT { … };
template <typename T, typename I, typename E>
struct WriteT { … };
ExtensionClausesT;
EmptyClausesT;
IncompleteClausesT;
TupleClausesT;
UnionClausesT;
WrapperClausesT;
UnionOfAllClausesT;
}
operator==;
template <typename TypeType, typename IdType, typename ExprType,
typename... Extras>
struct ClauseT { … };
template <typename ClauseType> struct DirectiveWithClauses { … };
}
#undef OPT
#undef ENUM
#endif