diff --git a/clang/test/OpenMP/barrier_codegen.cpp b/clang/test/OpenMP/barrier_codegen.cpp --- a/clang/test/OpenMP/barrier_codegen.cpp +++ b/clang/test/OpenMP/barrier_codegen.cpp @@ -46,7 +46,7 @@ // IRBUILDER: ; Function Attrs: nounwind // IRBUILDER-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*) # // IRBUILDER_OPT: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly -// IRBUILDER_OPT-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*) # +// IRBUILDER_OPT-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t* nofree readonly) # // CHECK: define {{.+}} [[TMAIN_INT]]( // CHECK: [[GTID:%.+]] = call i32 @__kmpc_global_thread_num([[IDENT_T]]* [[LOC]]) diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def --- a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def +++ b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def @@ -321,8 +321,6 @@ #define __OMP_RTL(Name, IsVarArg, ReturnType, ...) \ OMP_RTL(OMPRTL_##Name, #Name, IsVarArg, ReturnType, __VA_ARGS__) - - __OMP_RTL(__kmpc_barrier, false, Void, IdentPtr, Int32) __OMP_RTL(__kmpc_cancel, false, Int32, IdentPtr, Int32, Int32) __OMP_RTL(__kmpc_cancel_barrier, false, Int32, IdentPtr, Int32) @@ -336,6 +334,9 @@ __OMP_RTL(__kmpc_push_proc_bind, false, Void, IdentPtr, Int32, /* Int */ Int32) __OMP_RTL(__kmpc_serialized_parallel, false, Void, IdentPtr, Int32) __OMP_RTL(__kmpc_end_serialized_parallel, false, Void, IdentPtr, Int32) +__OMP_RTL(__kmpc_omp_reg_task_with_affinity, false, Int32, IdentPtr, Int32, + /* kmp_task_t */ VoidPtr, Int32, + /* kmp_task_affinity_info_t */ VoidPtr) __OMP_RTL(omp_get_thread_num, false, Int32, ) __OMP_RTL(omp_get_num_threads, false, Int32, ) @@ -382,8 +383,7 @@ ReduceFunctionPtr, KmpCriticalNamePtrTy) __OMP_RTL(__kmpc_reduce_nowait, false, Int32, IdentPtr, Int32, Int32, SizeTy, VoidPtr, ReduceFunctionPtr, KmpCriticalNamePtrTy) -__OMP_RTL(__kmpc_end_reduce, false, Void, IdentPtr, Int32, - KmpCriticalNamePtrTy) +__OMP_RTL(__kmpc_end_reduce, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy) __OMP_RTL(__kmpc_end_reduce_nowait, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy) @@ -466,10 +466,10 @@ /* Int */ Int32, Int64, VoidPtr) __OMP_RTL(__kmpc_omp_target_task_alloc, false, /* kmp_task_t */ VoidPtr, IdentPtr, Int32, Int32, SizeTy, SizeTy, TaskRoutineEntryPtr, Int64) -__OMP_RTL(__kmpc_taskred_modifier_init, false, VoidPtr, IdentPtr, - /* Int */ Int32, /* Int */ Int32, /* Int */ Int32, VoidPtr) -__OMP_RTL(__kmpc_taskred_init, false, VoidPtr, /* Int */ Int32, - /* Int */ Int32, VoidPtr) +__OMP_RTL(__kmpc_taskred_modifier_init, false, /* kmp_taskgroup */ VoidPtr, + IdentPtr, /* Int */ Int32, /* Int */ Int32, /* Int */ Int32, VoidPtr) +__OMP_RTL(__kmpc_taskred_init, false, /* kmp_taskgroup */ VoidPtr, + /* Int */ Int32, /* Int */ Int32, VoidPtr) __OMP_RTL(__kmpc_task_reduction_modifier_fini, false, Void, IdentPtr, /* Int */ Int32, /* Int */ Int32) __OMP_RTL(__kmpc_task_reduction_get_th_data, false, VoidPtr, Int32, VoidPtr, @@ -541,7 +541,9 @@ #undef __OMP_RTL #undef OMP_RTL +#define ParamAttrs(...) ArrayRef({__VA_ARGS__}) #define EnumAttr(Kind) Attribute::get(Ctx, Attribute::AttrKind::Kind) +#define EnumAttrInt(Kind, N) Attribute::get(Ctx, Attribute::AttrKind::Kind, N) #define AttributeSet(...) \ AttributeSet::get(Ctx, ArrayRef({__VA_ARGS__})) @@ -554,19 +556,87 @@ __OMP_ATTRS_SET(GetterAttrs, OptimisticAttributes ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(ReadOnly), - EnumAttr(NoSync), EnumAttr(NoFree), EnumAttr(InaccessibleMemOnly)) + EnumAttr(NoSync), EnumAttr(NoFree), + EnumAttr(InaccessibleMemOnly), + EnumAttr(WillReturn)) : AttributeSet(EnumAttr(NoUnwind))) __OMP_ATTRS_SET(GetterArgWriteAttrs, OptimisticAttributes ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), - EnumAttr(NoFree), EnumAttr(InaccessibleMemOrArgMemOnly)) + EnumAttr(NoFree), + EnumAttr(InaccessibleMemOrArgMemOnly), + EnumAttr(WillReturn)) : AttributeSet(EnumAttr(NoUnwind))) __OMP_ATTRS_SET(SetterAttrs, OptimisticAttributes ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(WriteOnly), - EnumAttr(NoSync), EnumAttr(NoFree), EnumAttr(InaccessibleMemOnly)) + EnumAttr(NoSync), EnumAttr(NoFree), + EnumAttr(InaccessibleMemOnly), + EnumAttr(WillReturn)) + : AttributeSet(EnumAttr(NoUnwind))) + +__OMP_ATTRS_SET(DefaultAttrs, + OptimisticAttributes + ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), + EnumAttr(WillReturn), EnumAttr(NoFree)) + : AttributeSet(EnumAttr(NoUnwind))) + +__OMP_ATTRS_SET(BarrierAttrs, + OptimisticAttributes + ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(WillReturn)) : AttributeSet(EnumAttr(NoUnwind))) +__OMP_ATTRS_SET(InaccessibleArgOnlyAttrs, + OptimisticAttributes + ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), + EnumAttr(InaccessibleMemOrArgMemOnly), + EnumAttr(WillReturn), EnumAttr(NoFree)) + : AttributeSet(EnumAttr(NoUnwind))) + +__OMP_ATTRS_SET(InaccessibleOnlyAttrs, + OptimisticAttributes + ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), + EnumAttr(InaccessibleMemOnly), + EnumAttr(WillReturn), EnumAttr(NoFree)) + : AttributeSet(EnumAttr(NoUnwind))) + +__OMP_ATTRS_SET(AllocAttrs, + OptimisticAttributes + ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), + EnumAttr(WillReturn)) + : AttributeSet(EnumAttr(NoUnwind))) + +__OMP_ATTRS_SET(ForkAttrs, OptimisticAttributes + ? AttributeSet(EnumAttr(NoUnwind)) + : AttributeSet(EnumAttr(NoUnwind))) + +__OMP_ATTRS_SET(ReadOnlyPtrAttrs, + OptimisticAttributes + ? AttributeSet(EnumAttr(ReadOnly), EnumAttr(NoFree)) + : AttributeSet()) + +__OMP_ATTRS_SET(WriteOnlyPtrAttrs, + OptimisticAttributes + ? AttributeSet(EnumAttr(WriteOnly), EnumAttr(NoFree)) + : AttributeSet()) + +__OMP_ATTRS_SET(ArgPtrAttrs, + OptimisticAttributes + ? AttributeSet(EnumAttr(NoCapture), EnumAttr(NoFree)) + : AttributeSet()) + +__OMP_ATTRS_SET(ReturnPtrAttrs, + OptimisticAttributes + ? AttributeSet(EnumAttr(NoAlias), EnumAttrInt(Alignment, 8), + EnumAttrInt(DereferenceableOrNull, 8)) + : AttributeSet()) + +__OMP_ATTRS_SET(CharPtrAttrs, + OptimisticAttributes + ? AttributeSet(EnumAttr(NoAlias), EnumAttrInt(Alignment, 1), + EnumAttrInt(DereferenceableOrNull, 1)) + : AttributeSet()) + #undef __OMP_ATTRS_SET #undef OMP_ATTRS_SET @@ -577,295 +647,306 @@ #define __OMP_RTL_ATTRS(Name, FnAttrSet, RetAttrSet, ArgAttrSets) \ OMP_RTL_ATTRS(OMPRTL_##Name, FnAttrSet, RetAttrSet, ArgAttrSets) -__OMP_RTL_ATTRS(__kmpc_barrier, AttributeSet(), AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_cancel, - AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_cancel_barrier, AttributeSet(), AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_flush, AttributeSet(), 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(), 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(omp_get_thread_num, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_num_threads, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_max_threads, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_in_parallel, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_dynamic, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_cancellation, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_nested, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_schedule, GetterArgWriteAttrs, AttributeSet(), - ArrayRef( - {AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)), - AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly))})) -__OMP_RTL_ATTRS(omp_get_thread_limit, GetterAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_barrier, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_cancel, InaccessibleArgOnlyAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_cancel_barrier, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_flush, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_fork_call, ForkAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_omp_taskwait, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_omp_taskyield, InaccessibleArgOnlyAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_push_num_threads, InaccessibleArgOnlyAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_push_proc_bind, InaccessibleArgOnlyAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_serialized_parallel, InaccessibleArgOnlyAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_end_serialized_parallel, InaccessibleArgOnlyAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_omp_reg_task_with_affinity, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs, + AttributeSet(), ReadOnlyPtrAttrs)) + +__OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_num_threads, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_max_threads, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_in_parallel, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_dynamic, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_cancellation, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_nested, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS( + omp_get_schedule, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)), + AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)))) +__OMP_RTL_ATTRS(omp_get_thread_limit, GetterAttrs, AttributeSet(), ParamAttrs()) __OMP_RTL_ATTRS(omp_get_supported_active_levels, GetterAttrs, AttributeSet(), - {}) -__OMP_RTL_ATTRS(omp_get_max_active_levels, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_level, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_ancestor_thread_num, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_team_size, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_active_level, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_in_final, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_proc_bind, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_num_places, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_num_procs, GetterAttrs, AttributeSet(), {}) + ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_max_active_levels, GetterAttrs, AttributeSet(), + ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_level, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_ancestor_thread_num, GetterAttrs, AttributeSet(), + ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_team_size, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_active_level, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_in_final, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_proc_bind, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_num_places, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_num_procs, GetterAttrs, AttributeSet(), ParamAttrs()) __OMP_RTL_ATTRS(omp_get_place_proc_ids, GetterArgWriteAttrs, AttributeSet(), - ArrayRef({AttributeSet(), - AttributeSet(EnumAttr(NoCapture), - EnumAttr(WriteOnly))})) -__OMP_RTL_ATTRS(omp_get_place_num, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_partition_num_places, GetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_get_partition_place_nums, GetterAttrs, AttributeSet(), {}) - -__OMP_RTL_ATTRS(omp_set_num_threads, SetterAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(omp_set_dynamic, SetterAttrs, AttributeSet(), {}) -__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(), {}) - -__OMP_RTL_ATTRS(__kmpc_begin, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_end, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_reduce, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_reduce_nowait, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_end_reduce, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_end_reduce_nowait, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_ordered, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_end_ordered, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_for_static_init_4, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_for_static_init_4u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_for_static_init_8, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_for_static_init_8u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_for_static_fini, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_init_4, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_init_4u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_init_8, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_init_8u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_4, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_8, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_team_static_init_4, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_team_static_init_4u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_team_static_init_8, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_team_static_init_8u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8u, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_single, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_end_single, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_omp_task_alloc, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_omp_task, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_end_taskgroup, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_taskgroup, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_omp_task_begin_if0, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_omp_task_complete_if0, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_omp_task_with_deps, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_taskloop, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_omp_target_task_alloc, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_taskred_modifier_init, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_taskred_init, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_fini, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_task_reduction_get_th_data, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_task_reduction_init, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_init, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_proxy_task_completed_ooo, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_omp_wait_deps, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_cancellationpoint, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_fork_teams, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_push_num_teams, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_copyprivate, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_threadprivate_cached, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_threadprivate_register, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_doacross_init, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_doacross_post, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_doacross_wait, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_doacross_fini, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_alloc, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_free, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_init_allocator, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_destroy_allocator, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) - -__OMP_RTL_ATTRS(__kmpc_push_target_tripcount, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_target, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_target_nowait, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_target_teams, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_target_teams_nowait, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_register_requires, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_target_data_begin, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_target_data_end, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_target_data_end_nowait, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_target_data_update, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_target_data_update_nowait, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_mapper_num_components, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_push_mapper_component, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_task_allow_completion_event, - AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) + ParamAttrs(AttributeSet(), AttributeSet(EnumAttr(NoCapture), + EnumAttr(WriteOnly)))) +__OMP_RTL_ATTRS(omp_get_place_num, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_partition_num_places, GetterAttrs, AttributeSet(), + ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_partition_place_nums, GetterAttrs, AttributeSet(), + ParamAttrs()) + +__OMP_RTL_ATTRS(omp_set_num_threads, SetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_set_dynamic, SetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_set_nested, SetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_set_schedule, SetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_set_max_active_levels, SetterAttrs, AttributeSet(), + ParamAttrs()) + +__OMP_RTL_ATTRS(__kmpc_master, InaccessibleArgOnlyAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_end_master, InaccessibleArgOnlyAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_critical, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_critical_with_hint, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_end_critical, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) + +__OMP_RTL_ATTRS(__kmpc_begin, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_end, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) + +__OMP_RTL_ATTRS(__kmpc_reduce, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + AttributeSet(), ReadOnlyPtrAttrs, AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_reduce_nowait, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + AttributeSet(), ReadOnlyPtrAttrs, AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_end_reduce, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_end_reduce_nowait, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) + +__OMP_RTL_ATTRS(__kmpc_ordered, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_end_ordered, BarrierAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) + +__OMP_RTL_ATTRS(__kmpc_for_static_init_4, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + AttributeSet(), AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_for_static_init_4u, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + AttributeSet(), AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_for_static_init_8, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + AttributeSet(), AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_for_static_init_8u, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + AttributeSet(), AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_for_static_fini, InaccessibleArgOnlyAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4, GetterArgWriteAttrs, + AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4u, GetterArgWriteAttrs, + AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8, GetterArgWriteAttrs, + AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8u, GetterArgWriteAttrs, + AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_init_4, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_init_4u, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_init_8, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_init_8u, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_next_4, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_next_8, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4, InaccessibleArgOnlyAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4u, InaccessibleArgOnlyAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, InaccessibleArgOnlyAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, InaccessibleArgOnlyAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_team_static_init_4, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_team_static_init_4u, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_team_static_init_8, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_team_static_init_8u, GetterArgWriteAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4, GetterArgWriteAttrs, + AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4u, GetterArgWriteAttrs, + AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8, GetterArgWriteAttrs, + AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8u, GetterArgWriteAttrs, + AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs)) + +__OMP_RTL_ATTRS(__kmpc_single, InaccessibleArgOnlyAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_end_single, InaccessibleArgOnlyAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) + +__OMP_RTL_ATTRS(__kmpc_omp_task_alloc, DefaultAttrs, ReturnPtrAttrs, + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + AttributeSet(), AttributeSet(), ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_omp_task, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_end_taskgroup, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_taskgroup, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_omp_task_begin_if0, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_omp_task_complete_if0, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_omp_task_with_deps, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + AttributeSet(), ReadOnlyPtrAttrs, AttributeSet(), + ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_taskloop, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + AttributeSet(), ArgPtrAttrs, ArgPtrAttrs, + AttributeSet(), AttributeSet(), AttributeSet(), + AttributeSet(), AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_omp_target_task_alloc, DefaultAttrs, ReturnPtrAttrs, + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + AttributeSet(), AttributeSet(), ReadOnlyPtrAttrs, + AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_taskred_modifier_init, DefaultAttrs, ReturnPtrAttrs, + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_taskred_init, DefaultAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_fini, BarrierAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_task_reduction_get_th_data, DefaultAttrs, CharPtrAttrs, + ParamAttrs()) +__OMP_RTL_ATTRS(__kmpc_task_reduction_init, DefaultAttrs, ReturnPtrAttrs, + ParamAttrs()) +__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_init, DefaultAttrs, + ReturnPtrAttrs, ParamAttrs()) +__OMP_RTL_ATTRS(__kmpc_proxy_task_completed_ooo, DefaultAttrs, AttributeSet(), + ParamAttrs()) + +__OMP_RTL_ATTRS(__kmpc_omp_wait_deps, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_cancellationpoint, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) + +__OMP_RTL_ATTRS(__kmpc_fork_teams, ForkAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_push_num_teams, InaccessibleArgOnlyAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) + +__OMP_RTL_ATTRS(__kmpc_copyprivate, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), + ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_threadprivate_cached, DefaultAttrs, ReturnPtrAttrs, + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_threadprivate_register, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs, + ReadOnlyPtrAttrs, ReadOnlyPtrAttrs)) + +__OMP_RTL_ATTRS(__kmpc_doacross_init, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_doacross_post, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_doacross_wait, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_doacross_fini, DefaultAttrs, AttributeSet(), + ParamAttrs(ReadOnlyPtrAttrs)) + +__OMP_RTL_ATTRS(__kmpc_alloc, DefaultAttrs, CharPtrAttrs, {}) +__OMP_RTL_ATTRS(__kmpc_free, AllocAttrs, AttributeSet(), {}) + +__OMP_RTL_ATTRS(__kmpc_init_allocator, DefaultAttrs, ReturnPtrAttrs, {}) +__OMP_RTL_ATTRS(__kmpc_destroy_allocator, AllocAttrs, AttributeSet(), {}) + +__OMP_RTL_ATTRS(__kmpc_push_target_tripcount, SetterAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_nowait, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_teams, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_teams_nowait, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_register_requires, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_begin, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_end, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_end_nowait, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_update, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_update_nowait, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_mapper_num_components, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_push_mapper_component, ForkAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_task_allow_completion_event, DefaultAttrs, + ReturnPtrAttrs, ParamAttrs(ReadOnlyPtrAttrs)) #undef __OMP_RTL_ATTRS #undef OMP_RTL_ATTRS #undef AttributeSet #undef EnumAttr +#undef EnumAttrInt +#undef ParamAttrs ///} @@ -1100,7 +1181,6 @@ #undef OMP_REQUIRES_TRAIT ///} - /// Clauses allowed per directive /// ///{ diff --git a/llvm/test/Transforms/OpenMP/add_attributes.ll b/llvm/test/Transforms/OpenMP/add_attributes.ll --- a/llvm/test/Transforms/OpenMP/add_attributes.ll +++ b/llvm/test/Transforms/OpenMP/add_attributes.ll @@ -663,6 +663,8 @@ declare void @__kmpc_proxy_task_completed_ooo(i8*) +declare i32 @__kmpc_omp_reg_task_with_affinity(%struct.ident_t*, i32, i8*, i32, i8*) + ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare dso_local void @omp_set_num_threads(i32) @@ -888,370 +890,373 @@ ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare dso_local i32 @omp_get_supported_active_levels() #0 -; CHECK-NOT: Function Attrs -; CHECK: declare void @__kmpc_barrier(%struct.ident_t*, i32) +; CHECK: ; Function Attrs: nounwind +; CHECK-NEXT: declare void @__kmpc_barrier(%struct.ident_t*, i32) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_cancel(%struct.ident_t*, i32, i32) -; CHECK-NOT: Function Attrs -; CHECK: declare i32 @__kmpc_cancel_barrier(%struct.ident_t*, i32) +; CHECK: ; Function Attrs: nounwind +; CHECK-NEXT: declare i32 @__kmpc_cancel_barrier(%struct.ident_t*, i32) -; CHECK-NOT: Function Attrs -; CHECK: declare void @__kmpc_flush(%struct.ident_t*) +; CHECK: ; Function Attrs: nounwind +; CHECK-Next: declare void @__kmpc_flush(%struct.ident_t*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_fork_call(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) -; CHECK-NOT: Function Attrs -; CHECK: declare i32 @__kmpc_omp_taskwait(%struct.ident_t*, i32) +; CHECK: ; Function Attrs: nounwind +; CHECK-NEXT: declare i32 @__kmpc_omp_taskwait(%struct.ident_t*, i32) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t*, i32, i32) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t*, i32, i32) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t*, i32, i32) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t*, i32) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_end_serialized_parallel(%struct.ident_t*, i32) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_master(%struct.ident_t*, i32) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_end_master(%struct.ident_t*, i32) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_critical(%struct.ident_t*, i32, [8 x i32]*) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t*, i32, [8 x i32]*, i32) -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_end_critical(%struct.ident_t*, i32, [8 x i32]*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_begin(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_end(%struct.ident_t*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_reduce(%struct.ident_t*, i32, i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_reduce_nowait(%struct.ident_t*, i32, i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t*, i32, [8 x i32]*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t*, i32, [8 x i32]*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_ordered(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_for_static_init_4u(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_for_static_init_8(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_for_static_init_8u(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_team_static_init_4(%struct.ident_t*, i32, i32*, i32*, i32*, i32*, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_team_static_init_4u(%struct.ident_t*, i32, i32*, i32*, i32*, i32*, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_team_static_init_8(%struct.ident_t*, i32, i32*, i64*, i64*, i64*, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_team_static_init_8u(%struct.ident_t*, i32, i32*, i64*, i64*, i64*, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32*, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_4u(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32*, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_8(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64*, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_8u(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64*, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_single(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_end_single(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_omp_task_alloc(%struct.ident_t*, i32, i32, i64, i64, i32 (i32, i8*)*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t*, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t*, i32, i32, i32*, i32, i32, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_4u(%struct.ident_t*, i32, i32, i32*, i32, i32, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_8(%struct.ident_t*, i32, i32, i32*, i64, i64, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_8u(%struct.ident_t*, i32, i32, i32*, i64, i64, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dispatch_init_4(%struct.ident_t*, i32, i32, i32, i32, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dispatch_init_4u(%struct.ident_t*, i32, i32, i32, i32, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dispatch_init_8(%struct.ident_t*, i32, i32, i64, i64, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dispatch_init_8u(%struct.ident_t*, i32, i32, i64, i64, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_4(%struct.ident_t*, i32, i32*, i32*, i32*, i32*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_4u(%struct.ident_t*, i32, i32*, i32*, i32*, i32*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_8(%struct.ident_t*, i32, i32*, i64*, i64*, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_8u(%struct.ident_t*, i32, i32*, i64*, i64*, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t*, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_omp_task_complete_if0(%struct.ident_t*, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_omp_task_with_deps(%struct.ident_t*, i32, i8*, i32, i8*, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t*, i32, i32, i8*, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t*, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t*, i32, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_taskloop(%struct.ident_t*, i32, i8*, i32, i64*, i64*, i64, i32, i32, i64, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_omp_target_task_alloc(%struct.ident_t*, i32, i32, i64, i64, i32 (i32, i8*)*, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_taskred_modifier_init(%struct.ident_t*, i32, i32, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_taskred_init(i32, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_task_reduction_modifier_fini(%struct.ident_t*, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t*, i32, i64, i8*, void (i8*, i8*)*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_threadprivate_cached(%struct.ident_t*, i32, i8*, i64, i8***) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_threadprivate_register(%struct.ident_t*, i8*, i8* (i8*)*, i8* (i8*, i8*)*, void (i8*)*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t*, i32, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t*, i32, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t*, i32, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t*, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_alloc(i32, i64, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_free(i32, i8*, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_init_allocator(i32, i8*, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_destroy_allocator(i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_push_target_tripcount(i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__tgt_target(i64, i8*, i32, i8**, i8**, i64*, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__tgt_target_nowait(i64, i8*, i32, i8**, i8**, i64*, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i32 @__tgt_target_teams(i64, i8*, i32, i8**, i8**, i64*, i64*, i32, i32) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__tgt_register_requires(i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__tgt_target_data_begin(i64, i32, i8**, i8**, i64*, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__tgt_target_data_begin_nowait(i64, i32, i8**, i8**, i64*, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__tgt_target_data_end(i64, i32, i8**, i8**, i64*, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__tgt_target_data_end_nowait(i64, i32, i8**, i8**, i64*, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__tgt_target_data_update(i64, i32, i8**, i8**, i64*, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__tgt_target_data_update_nowait(i64, i32, i8**, i8**, i64*, i64*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i64 @__tgt_mapper_num_components(i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__tgt_push_mapper_component(i8*, i8*, i8*, i64, i64) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_task_allow_completion_event(%struct.ident_t*, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_task_reduction_get_th_data(i32, i8*, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_task_reduction_init(i32, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i8* @__kmpc_task_reduction_modifier_init(i8*, i32, i32, i32, i8*) -; CHECK: Function Attrs: nounwind +; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*) -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind writeonly +; CHECK: ; Function Attrs: nounwind +; CHECK-NEXT: declare i32 @__kmpc_omp_reg_task_with_affinity(%struct.ident_t*, i32, i8*, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly ; OPTIMISTIC-NEXT: declare dso_local void @omp_set_num_threads(i32) -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind writeonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly ; OPTIMISTIC-NEXT: declare dso_local void @omp_set_dynamic(i32) -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind writeonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly ; OPTIMISTIC-NEXT: declare dso_local void @omp_set_nested(i32) -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind writeonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly ; OPTIMISTIC-NEXT: declare dso_local void @omp_set_max_active_levels(i32) -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind writeonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly ; OPTIMISTIC-NEXT: declare dso_local void @omp_set_schedule(i32, i32) -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_num_threads() #1 ; OPTIMISTIC-NOT: Function Attrs ; OPTIMISTIC: declare dso_local void @use_int(i32) -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_dynamic() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_nested() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_max_threads() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_thread_num() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_num_procs() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_in_parallel() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_in_final() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_active_level() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_level() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_ancestor_thread_num(i32) #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_team_size(i32) #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_thread_limit() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_max_active_levels() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn ; OPTIMISTIC-NEXT: declare dso_local void @omp_get_schedule(i32* nocapture writeonly, i32* nocapture writeonly) #2 ; OPTIMISTIC-NOT: Function Attrs @@ -1320,7 +1325,7 @@ ; OPTIMISTIC-NOT: Function Attrs ; OPTIMISTIC: declare dso_local i32 @omp_get_team_num() -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_cancellation() #1 ; OPTIMISTIC-NOT: Function Attrs @@ -1350,25 +1355,25 @@ ; OPTIMISTIC-NOT: Function Attrs ; OPTIMISTIC: declare dso_local i32 @omp_get_device_num() -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_proc_bind() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_num_places() #1 ; OPTIMISTIC-NOT: Function Attrs ; OPTIMISTIC: declare dso_local i32 @omp_get_place_num_procs(i32) -; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn ; OPTIMISTIC-NEXT: declare dso_local void @omp_get_place_proc_ids(i32, i32* nocapture writeonly) #2 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_place_num() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_partition_num_places() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local void @omp_get_partition_place_nums(i32*) #1 ; OPTIMISTIC-NOT: Function Attrs @@ -1413,8 +1418,311 @@ ; OPTIMISTIC-NOT: Function Attrs ; OPTIMISTIC: declare dso_local i32 @omp_pause_resource_all(i32) -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_supported_active_levels() #1 +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn +; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_supported_active_levels() + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_barrier(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_cancel(%struct.ident_t* nofree readonly, i32, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_cancel_barrier(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_flush(%struct.ident_t* nofree readonly) + +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t* nofree readonly) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__kmpc_fork_call(%struct.ident_t* nofree readonly, i32, void (i32*, i32*, ...)* nofree readonly, ...) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_taskwait(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t* nofree readonly, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t* nofree readonly, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t* nofree readonly, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_serialized_parallel(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_master(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_master(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_critical(%struct.ident_t* nofree readonly, i32, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t* nofree readonly, i32, [8 x i32]*, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_critical(%struct.ident_t* nofree readonly, i32, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_begin(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end(%struct.ident_t* nofree readonly) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_reduce(%struct.ident_t* nofree readonly, i32, i32, i64, i8* nofree readonly, void (i8*, i8*)*, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_reduce_nowait(%struct.ident_t* nofree readonly, i32, i32, i64, i8* nofree readonly, void (i8*, i8*)*, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t* nofree readonly, i32, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t* nofree readonly, i32, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_ordered(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_4(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_4u(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_8(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_8u(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_4(%struct.ident_t* nofree readonly, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_4u(%struct.ident_t* nofree readonly, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_8(%struct.ident_t* nofree readonly, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_8u(%struct.ident_t* nofree readonly, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_4(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_4u(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_8(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_8u(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_single(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_single(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare noalias align 8 dereferenceable_or_null(8) i8* @__kmpc_omp_task_alloc(%struct.ident_t* nofree readonly, i32, i32, i64, i64, i32 (i32, i8*)* nofree readonly) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t* nofree readonly, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i32, i32, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_4u(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i32, i32, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_8(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i64, i64, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_8u(%struct.ident_t* nofree readonly, i32, i32, i32* nocapture nofree, i64, i64, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_4(%struct.ident_t* nofree readonly, i32, i32, i32, i32, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_4u(%struct.ident_t* nofree readonly, i32, i32, i32, i32, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_8(%struct.ident_t* nofree readonly, i32, i32, i64, i64, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_8u(%struct.ident_t* nofree readonly, i32, i32, i64, i64, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_4(%struct.ident_t* nofree readonly, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_4u(%struct.ident_t* nofree readonly, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_8(%struct.ident_t* nofree readonly, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_8u(%struct.ident_t* nofree readonly, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t* nofree readonly, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_omp_task_complete_if0(%struct.ident_t* nofree readonly, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_task_with_deps(%struct.ident_t* nofree readonly, i32, i8*, i32, i8* nofree readonly, i32, i8* nofree readonly) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t* nofree readonly, i32, i32, i8* nofree readonly, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t* nofree readonly, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t* nofree readonly, i32, i32, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t* nofree readonly, i32, void (i32*, i32*, ...)* nofree readonly, ...) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_taskloop(%struct.ident_t* nofree readonly, i32, i8*, i32, i64* nocapture nofree, i64* nocapture nofree, i64, i32, i32, i64, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare noalias align 8 dereferenceable_or_null(8) i8* @__kmpc_omp_target_task_alloc(%struct.ident_t* nofree readonly, i32, i32, i64, i64, i32 (i32, i8*)* nofree readonly, i64) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare noalias align 8 dereferenceable_or_null(8) i8* @__kmpc_taskred_modifier_init(%struct.ident_t* nofree readonly, i32, i32, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i8* @__kmpc_taskred_init(i32, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_task_reduction_modifier_fini(%struct.ident_t* nofree readonly, i32, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t* nofree readonly, i32, i64, i8* nofree readonly, void (i8*, i8*)*, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare noalias align 8 dereferenceable_or_null(8) i8* @__kmpc_threadprivate_cached(%struct.ident_t* nofree readonly, i32, i8*, i64, i8***) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_threadprivate_register(%struct.ident_t* nofree readonly, i8*, i8* (i8*)* nofree readonly, i8* (i8*, i8*)* nofree readonly, void (i8*)* nofree readonly) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t* nofree readonly, i32, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t* nofree readonly, i32, i64* nofree readonly) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t* nofree readonly, i32, i64* nofree readonly) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t* nofree readonly, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare noalias align 1 dereferenceable_or_null(1) i8* @__kmpc_alloc(i32, i64, i8*) + +; OPTIMISTIC: ; Function Attrs: nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_free(i32, i8*, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare noalias align 8 dereferenceable_or_null(8) i8* @__kmpc_init_allocator(i32, i8*, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_destroy_allocator(i32, i8*) + +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly +; OPTIMISTIC-NEXT: declare void @__kmpc_push_target_tripcount(i64, i64) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare i32 @__tgt_target(i64, i8*, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare i32 @__tgt_target_nowait(i64, i8*, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare i32 @__tgt_target_teams(i64, i8*, i32, i8**, i8**, i64*, i64*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__tgt_register_requires(i64) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_begin(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_begin_nowait(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end_nowait(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update_nowait(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare i64 @__tgt_mapper_num_components(i8*) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__tgt_push_mapper_component(i8*, i8*, i8*, i64, i64) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare noalias align 8 dereferenceable_or_null(8) i8* @__kmpc_task_allow_completion_event(%struct.ident_t* nofree readonly, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare noalias align 1 dereferenceable_or_null(1) i8* @__kmpc_task_reduction_get_th_data(i32, i8*, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare noalias align 8 dereferenceable_or_null(8) i8* @__kmpc_task_reduction_init(i32, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare noalias align 8 dereferenceable_or_null(8) i8* @__kmpc_task_reduction_modifier_init(i8*, i32, i32, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*) -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly -; OPTIMISTIC-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*) +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_reg_task_with_affinity(%struct.ident_t* nofree readonly, i32, i8* nofree readonly, i32, i8* nofree readonly)