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 @@ -336,6 +336,8 @@ __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, + VoidPtr, Int32, VoidPtr) __OMP_RTL(omp_get_thread_num, false, Int32, ) __OMP_RTL(omp_get_num_threads, false, Int32, ) @@ -554,17 +556,54 @@ __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))) #undef __OMP_ATTRS_SET @@ -577,30 +616,20 @@ #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_barrier, BarrierAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_cancel, InaccessibleArgOnlyAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_cancel_barrier, BarrierAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_flush, BarrierAttrs, 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)), +__OMP_RTL_ATTRS(__kmpc_fork_call, AttributeSet(EnumAttr(NoUnwind)), AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_omp_taskwait, BarrierAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_omp_taskyield, InaccessibleArgOnlyAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_push_num_threads, InaccessibleArgOnlyAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_push_proc_bind, InaccessibleArgOnlyAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_serialized_parallel, InaccessibleArgOnlyAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_end_serialized_parallel, InaccessibleArgOnlyAttrs, 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)), +__OMP_RTL_ATTRS(__kmpc_omp_reg_task_with_affinity, DefaultAttrs, AttributeSet(), {}) __OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, AttributeSet(), {}) @@ -640,226 +669,145 @@ __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_master, InaccessibleArgOnlyAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_end_master, InaccessibleArgOnlyAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_critical, BarrierAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_critical_with_hint, BarrierAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_end_critical, BarrierAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_begin, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_end, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_begin, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_end, DefaultAttrs, 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_reduce, BarrierAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_reduce_nowait, BarrierAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_end_reduce, BarrierAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_end_reduce_nowait, BarrierAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_ordered, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_end_ordered, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_ordered, BarrierAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_end_ordered, BarrierAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_for_static_init_4, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_for_static_init_4, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_for_static_init_4u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_for_static_init_4u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_for_static_init_8, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_for_static_init_8, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_for_static_init_8u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_for_static_init_8u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_for_static_fini, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_for_static_fini, InaccessibleArgOnlyAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_init_4, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_init_4, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_init_4u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_init_4u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_init_8, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_init_8, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_init_8u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_init_8u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_4, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_next_4, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_8, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_next_8, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4, InaccessibleArgOnlyAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4u, InaccessibleArgOnlyAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, InaccessibleArgOnlyAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, InaccessibleArgOnlyAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_team_static_init_4, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_team_static_init_4, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_team_static_init_4u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_team_static_init_4u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_team_static_init_8, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_team_static_init_8, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_team_static_init_8u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_team_static_init_8u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8u, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8u, GetterArgWriteAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_single, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_end_single, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_single, InaccessibleArgOnlyAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_end_single, InaccessibleArgOnlyAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_omp_task_alloc, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_omp_task, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_omp_task_alloc, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_omp_task, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_end_taskgroup, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_taskgroup, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_omp_task_begin_if0, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_omp_task_complete_if0, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_omp_task_with_deps, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_taskloop, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_omp_target_task_alloc, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_taskred_modifier_init, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_taskred_init, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_fini, BarrierAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_end_taskgroup, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_task_reduction_get_th_data, DefaultAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_taskgroup, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_task_reduction_init, DefaultAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_omp_task_begin_if0, AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_init, DefaultAttrs, 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)), +__OMP_RTL_ATTRS(__kmpc_proxy_task_completed_ooo, DefaultAttrs, 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_omp_wait_deps, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_cancellationpoint, DefaultAttrs, 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_fork_teams, AttributeSet(EnumAttr(NoUnwind)), AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_push_num_teams, InaccessibleArgOnlyAttrs, 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_copyprivate, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_threadprivate_cached, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_threadprivate_register, DefaultAttrs, 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_doacross_init, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_doacross_post, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_doacross_wait, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_doacross_fini, DefaultAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_alloc, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_free, AttributeSet(EnumAttr(NoUnwind)), - AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_alloc, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_free, AllocAttrs, 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_init_allocator, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_destroy_allocator, AllocAttrs, 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)), +__OMP_RTL_ATTRS(__kmpc_push_target_tripcount, SetterAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_nowait, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_teams, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_teams_nowait, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_register_requires, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_begin, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait, DefaultAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__tgt_push_mapper_component, - AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__tgt_target_data_end, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_end_nowait, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_update, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_target_data_update_nowait, DefaultAttrs, AttributeSet(), {}) -__OMP_RTL_ATTRS(__kmpc_task_allow_completion_event, - AttributeSet(EnumAttr(NoUnwind)), +__OMP_RTL_ATTRS(__tgt_mapper_num_components, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__tgt_push_mapper_component, DefaultAttrs, AttributeSet(), {}) +__OMP_RTL_ATTRS(__kmpc_task_allow_completion_event, DefaultAttrs, AttributeSet(), {}) #undef __OMP_RTL_ATTRS 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: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_supported_active_levels() #1 -; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_barrier(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_cancel(%struct.ident_t*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_cancel_barrier(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_flush(%struct.ident_t*) + +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn ; OPTIMISTIC-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__kmpc_fork_call(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_taskwait(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_serialized_parallel(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_master(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_master(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_critical(%struct.ident_t*, i32, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t*, i32, [8 x i32]*, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_critical(%struct.ident_t*, i32, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_begin(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end(%struct.ident_t*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_reduce(%struct.ident_t*, i32, i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_reduce_nowait(%struct.ident_t*, i32, i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t*, i32, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t*, i32, [8 x i32]*) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_ordered(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_4u(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_8(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_8u(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_4(%struct.ident_t*, i32, i32*, i32*, i32*, i32*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_4u(%struct.ident_t*, i32, i32*, i32*, i32*, i32*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_8(%struct.ident_t*, i32, i32*, i64*, i64*, i64*, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_8u(%struct.ident_t*, i32, i32*, i64*, i64*, i64*, 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*, i32, i32, i32*, i32*, i32*, i32*, i32*, 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*, i32, i32, i32*, i32*, i32*, i32*, i32*, 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*, i32, i32, i32*, i64*, i64*, i64*, i64*, 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*, i32, i32, i32*, i64*, i64*, i64*, i64*, i64, i64) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_single(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_single(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i8* @__kmpc_omp_task_alloc(%struct.ident_t*, i32, i32, i64, i64, i32 (i32, i8*)*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t*, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t*, i32, i32, i32*, 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*, i32, i32, i32*, 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*, i32, i32, i32*, 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*, i32, i32, i32*, 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*, 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*, 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*, 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*, 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*, i32, i32*, i32*, i32*, i32*) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_4u(%struct.ident_t*, i32, i32*, i32*, i32*, i32*) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_8(%struct.ident_t*, i32, i32*, i64*, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_8u(%struct.ident_t*, i32, i32*, i64*, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t*, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_omp_task_complete_if0(%struct.ident_t*, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_task_with_deps(%struct.ident_t*, i32, i8*, i32, i8*, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t*, i32, i32, i8*, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t*, i32, i32, i32) + +; OPTIMISTIC: ; Function Attrs: nounwind +; OPTIMISTIC-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_taskloop(%struct.ident_t*, i32, i8*, i32, i64*, i64*, i64, i32, i32, i64, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i8* @__kmpc_omp_target_task_alloc(%struct.ident_t*, i32, i32, i64, i64, i32 (i32, i8*)*, i64) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i8* @__kmpc_taskred_modifier_init(%struct.ident_t*, 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*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t*, i32, i64, i8*, void (i8*, i8*)*, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i8* @__kmpc_threadprivate_cached(%struct.ident_t*, i32, i8*, i64, i8***) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_threadprivate_register(%struct.ident_t*, i8*, i8* (i8*)*, i8* (i8*, i8*)*, void (i8*)*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t*, i32, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t*, i32, i64*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t*, i32, i64*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t*, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare 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 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: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__tgt_target(i64, i8*, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__tgt_target_nowait(i64, i8*, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__tgt_target_teams(i64, i8*, i32, i8**, i8**, i64*, i64*, i32, i32) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__tgt_register_requires(i64) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_begin(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_begin_nowait(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end_nowait(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update_nowait(i64, i32, i8**, i8**, i64*, i64*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i64 @__tgt_mapper_num_components(i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare void @__tgt_push_mapper_component(i8*, i8*, i8*, i64, i64) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i8* @__kmpc_task_allow_completion_event(%struct.ident_t*, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i8* @__kmpc_task_reduction_get_th_data(i32, i8*, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i8* @__kmpc_task_reduction_init(i32, i32, i8*) + +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare 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: nofree nosync nounwind willreturn +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_reg_task_with_affinity(%struct.ident_t*, i32, i8*, i32, i8*)