[OpenMP] Adding InaccessibleMemOnly and InaccessibleMemOrArgMemOnly for runtime calls.

Summary: Attempt to add more attributes for runtime calls.

Reviewers: jdoerfertA, ggeorgakoudis, lebedev.ri, dreachem

Subscribers:
This commit is contained in:
Stefan Stipanovic 2020-03-03 20:32:22 +01:00
parent 3270ea9042
commit 9989b859ef
1 changed files with 50 additions and 4 deletions

View File

@ -250,17 +250,17 @@ __OMP_RTL(__last, false, Void, )
__OMP_ATTRS_SET(GetterAttrs,
OptimisticAttributes
? AttributeSet(EnumAttr(NoUnwind), EnumAttr(ReadOnly),
EnumAttr(NoSync), EnumAttr(NoFree))
EnumAttr(NoSync), EnumAttr(NoFree), EnumAttr(InaccessibleMemOnly))
: AttributeSet(EnumAttr(NoUnwind)))
__OMP_ATTRS_SET(GetterArgWriteAttrs,
OptimisticAttributes
? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync),
EnumAttr(NoFree))
EnumAttr(NoFree), EnumAttr(InaccessibleMemOrArgMemOnly))
: AttributeSet(EnumAttr(NoUnwind)))
__OMP_ATTRS_SET(SetterAttrs,
OptimisticAttributes
? AttributeSet(EnumAttr(NoUnwind), EnumAttr(WriteOnly),
EnumAttr(NoSync), EnumAttr(NoFree))
EnumAttr(NoSync), EnumAttr(NoFree), EnumAttr(InaccessibleMemOnly))
: AttributeSet(EnumAttr(NoUnwind)))
#undef __OMP_ATTRS_SET
@ -273,10 +273,40 @@ __OMP_ATTRS_SET(SetterAttrs,
#define __OMP_RTL_ATTRS(Name, FnAttrSet, RetAttrSet, ArgAttrSets) \
OMP_RTL_ATTRS(OMPRTL_##Name, FnAttrSet, RetAttrSet, ArgAttrSets)
__OMP_RTL_ATTRS(__kmpc_barrier,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_cancel,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_cancel_barrier,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_flush,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterAttrs, AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_fork_call, AttributeSet(EnumAttr(NoUnwind)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_omp_taskwait,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_omp_taskyield,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_push_num_threads,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_push_proc_bind,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_serialized_parallel,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_end_serialized_parallel,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterAttrs, AttributeSet(), {})
__OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, AttributeSet(), {})
__OMP_RTL_ATTRS(omp_get_num_threads, GetterAttrs, AttributeSet(), {})
__OMP_RTL_ATTRS(omp_get_max_threads, GetterAttrs, AttributeSet(), {})
@ -314,6 +344,22 @@ __OMP_RTL_ATTRS(omp_set_nested, SetterAttrs, AttributeSet(), {})
__OMP_RTL_ATTRS(omp_set_schedule, SetterAttrs, AttributeSet(), {})
__OMP_RTL_ATTRS(omp_set_max_active_levels, SetterAttrs, AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_master,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_end_master,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_critical,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_critical_with_hint,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
__OMP_RTL_ATTRS(__kmpc_end_critical,
AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),
AttributeSet(), {})
#undef __OMP_RTL_ATTRS
#undef OMP_RTL_ATTRS
#undef AttributeSet