21#define GEN_OMP_CLAUSE_DESCRIPTORS
23#undef GEN_OMP_CLAUSE_DESCRIPTORS
30#define GEN_OMP_MODIFIER_DESCRIPTORS
32#undef GEN_OMP_MODIFIER_DESCRIPTORS
37#define GET_THING_OR_EMPTY(Thing, Member) \
38 template <typename DetailsTy> \
39 static Thing get##Thing##OrEmpty(const DetailsTy &D, unsigned V) { \
40 V = std::max(V, 45u); \
41 if (auto Found = D.find(V); Found != D.end()) \
42 return Found->second.Member; \
51#undef GET_THING_OR_EMPTY
54 return getPropertiesOrEmpty(
Details, V);
57 return getDirectivesOrEmpty(
Details, V);
60 return getModifiersOrEmpty(
Details, V);
63 return getPropertiesOrEmpty(
Details, V);
66 return getClausesOrEmpty(
Details, V);
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
This file defines the DenseMap class.
#define GET_THING_OR_EMPTY(Thing, Member)
EnumSet< Modifier, Modifier_enumSize > Modifiers
LLVM_ABI const descriptor::Clause & getDescriptor(llvm::omp::Clause C)
llvm::omp::ClauseSet Clauses
const DescriptorMap< Clause, descriptor::Clause > & getClauseMap()
EnumSet< Property, Property_enumSize > Properties
LLVM_ABI Properties getProperties(Clause C, unsigned Version)
DenseMap< Enum, DescriptorTy > DescriptorMap
const DescriptorMap< Modifier, descriptor::Modifier > & getModifierMap()
llvm::omp::DirectiveSet Directives
LLVM_ABI Properties getProperties(unsigned V) const
LLVM_ABI Modifiers getModifiers(unsigned V) const
LLVM_ABI Directives getDirectives(unsigned V) const
DetailsMap< details::Clause > Details
LLVM_ABI Clauses getClauses(unsigned V) const
LLVM_ABI Properties getProperties(unsigned V) const