[llvm] 09fe0c5 - [OpenMP] Add Additional Function Attribute Information to OMPKinds.def

Eric Christopher via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 17 15:08:42 PDT 2020


Hi Joseph,

I've temporarily reverted this here:

echristo at athyra ~/s/llvm-project> git push
To github.com:llvm/llvm-project.git
   ae08dbc6732..020545d386c  master -> master

as it was triggering some unused variable warnings as I mentioned in the
commit log. Normally I'd have tried to fix them, but other than removing
lines you just added I didn't spot a simple way and thought I'd let you
take a look first.

Thanks and sorry for the inconvenience.

-eric

On Fri, Jul 17, 2020 at 2:55 PM Joseph Huber via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

>
> Author: Joseph Huber
> Date: 2020-07-17T17:54:01-04:00
> New Revision: 09fe0c5ab9ca5846d6cb625e9be47fdcfe49b93c
>
> URL:
> https://github.com/llvm/llvm-project/commit/09fe0c5ab9ca5846d6cb625e9be47fdcfe49b93c
> DIFF:
> https://github.com/llvm/llvm-project/commit/09fe0c5ab9ca5846d6cb625e9be47fdcfe49b93c.diff
>
> LOG: [OpenMP] Add Additional Function Attribute Information to OMPKinds.def
>
> Summary:
> This patch adds more function attribute information to the runtime
> function definitions in OMPKinds.def. The goal is to provide sufficient
> information about OpenMP runtime functions to perform more optimizations on
> OpenMP code.
>
> Reviewers: jdoerfert
>
> Subscribers: aaron.ballman cfe-commits yaxunl guansong sstefan1
> llvm-commits
>
> Tags: #OpenMP #clang #llvm
>
> Differential Revision: https://reviews.llvm.org/D81031
>
> Added:
>
>
> Modified:
>     llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
>     llvm/test/Transforms/OpenMP/add_attributes.ll
>     llvm/test/Transforms/OpenMP/parallel_deletion.ll
>
> Removed:
>
>
>
>
> ################################################################################
> diff  --git a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
> b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
> index 0dc2b34f2e4d..bb476f6a34d4 100644
> --- a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
> +++ b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
> @@ -383,7 +383,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,
> -          Int8Ptr, Int32, Int8Ptr)
> +          /* 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, )
> @@ -430,8 +431,7 @@ __OMP_RTL(__kmpc_reduce, false, Int32, IdentPtr,
> Int32, Int32, SizeTy, VoidPtr,
>            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)
>
> @@ -514,10 +514,10 @@ __OMP_RTL(__kmpc_taskloop, false, Void, IdentPtr, /*
> Int */ Int32, VoidPtr,
>            /* 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,
> @@ -594,7 +594,9 @@ __OMP_RTL(__last, false, Void, )
>  #undef __OMP_RTL
>  #undef OMP_RTL
>
> +#define ParamAttrs(...) ArrayRef<AttributeSet>({__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<Attribute>({__VA_ARGS__}))
>
> @@ -607,19 +609,88 @@ __OMP_RTL(__last, false, Void, )
>  __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))
> +                    : 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),
> +                                   EnumAttr(NoCapture))
> +                    : AttributeSet())
> +
> +__OMP_ATTRS_SET(WriteOnlyPtrAttrs,
> +                OptimisticAttributes
> +                    ? AttributeSet(EnumAttr(WriteOnly), EnumAttr(NoFree),
> +                                   EnumAttr(NoCapture))
> +                    : AttributeSet())
> +
> +__OMP_ATTRS_SET(ArgPtrAttrs,
> +                OptimisticAttributes
> +                    ? AttributeSet(EnumAttr(NoCapture), EnumAttr(NoFree))
> +                    : AttributeSet())
> +
> +__OMP_ATTRS_SET(ReturnPtrAttrs,
> +                OptimisticAttributes
> +                    ? AttributeSet(EnumAttr(NoAlias))
> +                    : AttributeSet())
> +
> +__OMP_ATTRS_SET(ReturnAlignedPtrAttrs,
> +                OptimisticAttributes
> +                    ? AttributeSet(EnumAttr(NoAlias),
> EnumAttrInt(Alignment, 8),
> +                                   EnumAttrInt(DereferenceableOrNull, 8))
> +                    : AttributeSet())
> +
>  #undef __OMP_ATTRS_SET
>  #undef OMP_ATTRS_SET
>
> @@ -630,295 +701,309 @@ __OMP_ATTRS_SET(SetterAttrs,
>  #define __OMP_RTL_ATTRS(Name, FnAttrSet, RetAttrSet, ArgAttrSets)
>       \
>    OMP_RTL_ATTRS(OMPRTL_##Name, FnAttrSet, RetAttrSet, ArgAttrSets)
>
> -__OMP_RTL_ATTRS(__kmpc_barrier, AttributeSet(), 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>(
> -                    {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(),
> -                                        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_mapper,
> -                AttributeSet(EnumAttr(NoUnwind)),
> -                AttributeSet(), {})
> -__OMP_RTL_ATTRS(__tgt_target_nowait_mapper,
> -                AttributeSet(EnumAttr(NoUnwind)),
> -                AttributeSet(), {})
> -__OMP_RTL_ATTRS(__tgt_target_teams_mapper,
> -                AttributeSet(EnumAttr(NoUnwind)),
> -                AttributeSet(), {})
> -__OMP_RTL_ATTRS(__tgt_target_teams_nowait_mapper,
> -                AttributeSet(EnumAttr(NoUnwind)),
> -                AttributeSet(), {})
> -__OMP_RTL_ATTRS(__tgt_register_requires,
> -                AttributeSet(EnumAttr(NoUnwind)),
> -                AttributeSet(), {})
> -__OMP_RTL_ATTRS(__tgt_target_data_begin_mapper,
> -                AttributeSet(EnumAttr(NoUnwind)),
> -                AttributeSet(), {})
> -__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait_mapper,
> -                AttributeSet(EnumAttr(NoUnwind)),
> -                AttributeSet(), {})
> -__OMP_RTL_ATTRS(__tgt_target_data_end_mapper,
> -                AttributeSet(EnumAttr(NoUnwind)),
> -                AttributeSet(), {})
> -__OMP_RTL_ATTRS(__tgt_target_data_end_nowait_mapper,
> -                AttributeSet(EnumAttr(NoUnwind)),
> -                AttributeSet(), {})
> -__OMP_RTL_ATTRS(__tgt_target_data_update_mapper,
> -                AttributeSet(EnumAttr(NoUnwind)),
> -                AttributeSet(), {})
> -__OMP_RTL_ATTRS(__tgt_target_data_update_nowait_mapper,
> -                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, BarrierAttrs, AttributeSet(),
> +                ParamAttrs(ReadOnlyPtrAttrs))
> +__OMP_RTL_ATTRS(__kmpc_end_single, BarrierAttrs, 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, BarrierAttrs, AttributeSet(),
> +                ParamAttrs(ReadOnlyPtrAttrs))
> +__OMP_RTL_ATTRS(__kmpc_taskgroup, BarrierAttrs, 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,
> ReturnPtrAttrs,
> +                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, BarrierAttrs, 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, BarrierAttrs, AttributeSet(),
> +                ParamAttrs(ReadOnlyPtrAttrs))
> +__OMP_RTL_ATTRS(__kmpc_doacross_post, BarrierAttrs, AttributeSet(),
> +                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(),
> ReadOnlyPtrAttrs))
> +__OMP_RTL_ATTRS(__kmpc_doacross_wait, BarrierAttrs, AttributeSet(),
> +                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(),
> ReadOnlyPtrAttrs))
> +__OMP_RTL_ATTRS(__kmpc_doacross_fini, BarrierAttrs, AttributeSet(),
> +                ParamAttrs(ReadOnlyPtrAttrs))
> +
> +__OMP_RTL_ATTRS(__kmpc_alloc, DefaultAttrs, ReturnPtrAttrs, {})
> +__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_mapper, ForkAttrs, AttributeSet(), {})
> +__OMP_RTL_ATTRS(__tgt_target_nowait_mapper, ForkAttrs, AttributeSet(), {})
> +__OMP_RTL_ATTRS(__tgt_target_teams_mapper, ForkAttrs, AttributeSet(), {})
> +__OMP_RTL_ATTRS(__tgt_target_teams_nowait_mapper, ForkAttrs,
> AttributeSet(), {})
> +__OMP_RTL_ATTRS(__tgt_register_requires, ForkAttrs, AttributeSet(), {})
> +__OMP_RTL_ATTRS(__tgt_target_data_begin_mapper, ForkAttrs,
> AttributeSet(), {})
> +__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait_mapper, ForkAttrs,
> +        AttributeSet(), {})
> +__OMP_RTL_ATTRS(__tgt_target_data_end_mapper, ForkAttrs, AttributeSet(),
> {})
> +__OMP_RTL_ATTRS(__tgt_target_data_end_nowait_mapper, ForkAttrs,
> +        AttributeSet(), {})
> +__OMP_RTL_ATTRS(__tgt_target_data_update_mapper, ForkAttrs,
> AttributeSet(), {})
> +__OMP_RTL_ATTRS(__tgt_target_data_update_nowait_mapper, 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
>
>  ///}
>
>
> diff  --git a/llvm/test/Transforms/OpenMP/add_attributes.ll
> b/llvm/test/Transforms/OpenMP/add_attributes.ll
> index 6e10613ed43c..e92447d79fea 100644
> --- a/llvm/test/Transforms/OpenMP/add_attributes.ll
> +++ b/llvm/test/Transforms/OpenMP/add_attributes.ll
> @@ -890,373 +890,373 @@ declare void @__kmpc_proxy_task_completed_ooo(i8*)
>  ; 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) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare i32 @__kmpc_cancel(%struct.ident_t*, i32, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__kmpc_cancel(%struct.ident_t*, i32, i32) #0
>
> -; 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) #0
>
> -; 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*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_fork_call(%struct.ident_t*, i32, void
> (i32*, i32*, ...)*, ...)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_fork_call(%struct.ident_t*, i32, void
> (i32*, i32*, ...)*, ...) #0
>
> -; 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) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t*, i32,
> i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t*, i32,
> i32) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t*,
> i32, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t*,
> i32, i32) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t*, i32,
> i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t*, i32,
> i32) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t*,
> i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t*,
> i32) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare void
> @__kmpc_end_serialized_parallel(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void
> @__kmpc_end_serialized_parallel(%struct.ident_t*, i32) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare i32 @__kmpc_master(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__kmpc_master(%struct.ident_t*, i32) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare void @__kmpc_end_master(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_end_master(%struct.ident_t*, i32) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare void @__kmpc_critical(%struct.ident_t*, i32, [8 x
> i32]*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_critical(%struct.ident_t*, i32, [8 x
> i32]*) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t*,
> i32, [8 x i32]*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t*,
> i32, [8 x i32]*, i32) #0
>
> -; CHECK: Function Attrs: inaccessiblemem_or_argmemonly
> -; CHECK-NEXT: declare void @__kmpc_end_critical(%struct.ident_t*, i32, [8
> x i32]*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_end_critical(%struct.ident_t*, i32, [8
> x i32]*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_begin(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_begin(%struct.ident_t*, i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_end(%struct.ident_t*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_end(%struct.ident_t*) #0
>
> -; 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-NEXT: declare i32 @__kmpc_reduce(%struct.ident_t*, i32, i32, i64,
> i8*, void (i8*, i8*)*, [8 x i32]*) #0
>
> -; 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-NEXT: declare i32 @__kmpc_reduce_nowait(%struct.ident_t*, i32,
> i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t*, i32, [8 x
> i32]*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t*, i32, [8 x
> i32]*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t*,
> i32, [8 x i32]*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t*,
> i32, [8 x i32]*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_ordered(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_ordered(%struct.ident_t*, i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t*, i32) #0
>
> -; 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-NEXT: declare void @__kmpc_for_static_init_4(%struct.ident_t*,
> i32, i32, i32*, i32*, i32*, i32*, i32, i32) #0
>
> -; 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-NEXT: declare void @__kmpc_for_static_init_4u(%struct.ident_t*,
> i32, i32, i32*, i32*, i32*, i32*, i32, i32) #0
>
> -; 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-NEXT: declare void @__kmpc_for_static_init_8(%struct.ident_t*,
> i32, i32, i32*, i64*, i64*, i64*, i64, i64) #0
>
> -; 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-NEXT: declare void @__kmpc_for_static_init_8u(%struct.ident_t*,
> i32, i32, i32*, i64*, i64*, i64*, i64, i64) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t*, i32)
> #0
>
> -; 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-NEXT: declare void @__kmpc_team_static_init_4(%struct.ident_t*,
> i32, i32*, i32*, i32*, i32*, i32, i32) #0
>
> -; 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-NEXT: declare void @__kmpc_team_static_init_4u(%struct.ident_t*,
> i32, i32*, i32*, i32*, i32*, i32, i32) #0
>
> -; 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-NEXT: declare void @__kmpc_team_static_init_8(%struct.ident_t*,
> i32, i32*, i64*, i64*, i64*, i64, i64) #0
>
> -; 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-NEXT: declare void @__kmpc_team_static_init_8u(%struct.ident_t*,
> i32, i32*, i64*, i64*, i64*, i64, i64) #0
>
> -; 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-NEXT: declare void
> @__kmpc_dist_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*,
> i32*, i32*, i32*, i32, i32) #0
>
> -; 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-NEXT: declare void
> @__kmpc_dist_for_static_init_4u(%struct.ident_t*, i32, i32, i32*, i32*,
> i32*, i32*, i32*, i32, i32) #0
>
> -; 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-NEXT: declare void
> @__kmpc_dist_for_static_init_8(%struct.ident_t*, i32, i32, i32*, i64*,
> i64*, i64*, i64*, i64, i64) #0
>
> -; 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-NEXT: declare void
> @__kmpc_dist_for_static_init_8u(%struct.ident_t*, i32, i32, i32*, i64*,
> i64*, i64*, i64*, i64, i64) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i32 @__kmpc_single(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__kmpc_single(%struct.ident_t*, i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_end_single(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_end_single(%struct.ident_t*, i32) #0
>
> -; 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-NEXT: declare i8* @__kmpc_omp_task_alloc(%struct.ident_t*, i32,
> i32, i64, i64, i32 (i32, i8*)*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t*, i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t*, i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t*, i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t*, i32) #0
>
> -; 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-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t*,
> i32, i32, i32*, i32, i32, i32, i32) #0
>
> -; 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-NEXT: declare void
> @__kmpc_dist_dispatch_init_4u(%struct.ident_t*, i32, i32, i32*, i32, i32,
> i32, i32) #0
>
> -; 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-NEXT: declare void @__kmpc_dist_dispatch_init_8(%struct.ident_t*,
> i32, i32, i32*, i64, i64, i64, i64) #0
>
> -; 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-NEXT: declare void
> @__kmpc_dist_dispatch_init_8u(%struct.ident_t*, i32, i32, i32*, i64, i64,
> i64, i64) #0
>
> -; 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-NEXT: declare void @__kmpc_dispatch_init_4(%struct.ident_t*, i32,
> i32, i32, i32, i32, i32) #0
>
> -; 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-NEXT: declare void @__kmpc_dispatch_init_4u(%struct.ident_t*,
> i32, i32, i32, i32, i32, i32) #0
>
> -; 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-NEXT: declare void @__kmpc_dispatch_init_8(%struct.ident_t*, i32,
> i32, i64, i64, i64, i64) #0
>
> -; 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-NEXT: declare void @__kmpc_dispatch_init_8u(%struct.ident_t*,
> i32, i32, i64, i64, i64, i64) #0
>
> -; 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-NEXT: declare i32 @__kmpc_dispatch_next_4(%struct.ident_t*, i32,
> i32*, i32*, i32*, i32*) #0
>
> -; 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-NEXT: declare i32 @__kmpc_dispatch_next_4u(%struct.ident_t*, i32,
> i32*, i32*, i32*, i32*) #0
>
> -; 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-NEXT: declare i32 @__kmpc_dispatch_next_8(%struct.ident_t*, i32,
> i32*, i64*, i64*, i64*) #0
>
> -; 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-NEXT: declare i32 @__kmpc_dispatch_next_8u(%struct.ident_t*, i32,
> i32*, i64*, i64*, i64*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t*, i32)
> #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t*,
> i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t*, i32)
> #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t*,
> i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t*,
> i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t*,
> i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void
> @__kmpc_omp_task_complete_if0(%struct.ident_t*, i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void
> @__kmpc_omp_task_complete_if0(%struct.ident_t*, i32, i8*) #0
>
> -; 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-NEXT: declare i32 @__kmpc_omp_task_with_deps(%struct.ident_t*,
> i32, i8*, i32, i8*, i32, i8*) #0
>
> -; 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-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t*, i32,
> i32, i8*, i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t*,
> i32, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t*,
> i32, i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t*, i32,
> i32, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t*, i32,
> i32, i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t*, i32, void
> (i32*, i32*, ...)*, ...)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t*, i32, void
> (i32*, i32*, ...)*, ...) #0
>
> -; 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-NEXT: declare void @__kmpc_taskloop(%struct.ident_t*, i32, i8*,
> i32, i64*, i64*, i64, i32, i32, i64, i8*) #0
>
> -; 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-NEXT: declare i8* @__kmpc_omp_target_task_alloc(%struct.ident_t*,
> i32, i32, i64, i64, i32 (i32, i8*)*, i64) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i8* @__kmpc_taskred_modifier_init(%struct.ident_t*,
> i32, i32, i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i8* @__kmpc_taskred_modifier_init(%struct.ident_t*,
> i32, i32, i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i8* @__kmpc_taskred_init(i32, i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i8* @__kmpc_taskred_init(i32, i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void
> @__kmpc_task_reduction_modifier_fini(%struct.ident_t*, i32, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void
> @__kmpc_task_reduction_modifier_fini(%struct.ident_t*, i32, i32) #0
>
> -; 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-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t*, i32,
> i64, i8*, void (i8*, i8*)*, i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i8* @__kmpc_threadprivate_cached(%struct.ident_t*,
> i32, i8*, i64, i8***)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i8* @__kmpc_threadprivate_cached(%struct.ident_t*,
> i32, i8*, i64, i8***) #0
>
> -; 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-NEXT: declare void
> @__kmpc_threadprivate_register(%struct.ident_t*, i8*, i8* (i8*)*, i8* (i8*,
> i8*)*, void (i8*)*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t*, i32,
> i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t*, i32,
> i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t*, i32,
> i64*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t*, i32,
> i64*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t*, i32,
> i64*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t*, i32,
> i64*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t*, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t*, i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i8* @__kmpc_alloc(i32, i64, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i8* @__kmpc_alloc(i32, i64, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_free(i32, i8*, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_free(i32, i8*, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i8* @__kmpc_init_allocator(i32, i8*, i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i8* @__kmpc_init_allocator(i32, i8*, i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_destroy_allocator(i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_destroy_allocator(i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_push_target_tripcount(i64, i64)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_push_target_tripcount(i64, i64) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i32 @__tgt_target_mapper(i64, i8*, i32, i8**, i8**,
> i64*, i64*, i8**)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__tgt_target_mapper(i64, i8*, i32, i8**, i8**,
> i64*, i64*, i8**) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i32 @__tgt_target_nowait_mapper(i64, i8*, i32,
> i8**, i8**, i64*, i64*, i8**)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__tgt_target_nowait_mapper(i64, i8*, i32,
> i8**, i8**, i64*, i64*, i8**) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i32 @__tgt_target_teams_mapper(i64, i8*, i32, i8**,
> i8**, i64*, i64*, i8**, i32, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__tgt_target_teams_mapper(i64, i8*, i32, i8**,
> i8**, i64*, i64*, i8**, i32, i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i32 @__tgt_target_teams_nowait_mapper(i64, i8*,
> i32, i8**, i8**, i64*, i64*, i8**, i32, i32)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i32 @__tgt_target_teams_nowait_mapper(i64, i8*,
> i32, i8**, i8**, i64*, i64*, i8**, i32, i32) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__tgt_register_requires(i64)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__tgt_register_requires(i64) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__tgt_target_data_begin_mapper(i64, i32,
> i8**, i8**, i64*, i64*, i8**)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__tgt_target_data_begin_mapper(i64, i32,
> i8**, i8**, i64*, i64*, i8**) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__tgt_target_data_begin_nowait_mapper(i64,
> i32, i8**, i8**, i64*, i64*, i8**)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__tgt_target_data_begin_nowait_mapper(i64,
> i32, i8**, i8**, i64*, i64*, i8**) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__tgt_target_data_end_mapper(i64, i32, i8**,
> i8**, i64*, i64*, i8**)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__tgt_target_data_end_mapper(i64, i32, i8**,
> i8**, i64*, i64*, i8**) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__tgt_target_data_end_nowait_mapper(i64, i32,
> i8**, i8**, i64*, i64*, i8**)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__tgt_target_data_end_nowait_mapper(i64, i32,
> i8**, i8**, i64*, i64*, i8**) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__tgt_target_data_update_mapper(i64, i32,
> i8**, i8**, i64*, i64*, i8**)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__tgt_target_data_update_mapper(i64, i32,
> i8**, i8**, i64*, i64*, i8**) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__tgt_target_data_update_nowait_mapper(i64,
> i32, i8**, i8**, i64*, i64*, i8**)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__tgt_target_data_update_nowait_mapper(i64,
> i32, i8**, i8**, i64*, i64*, i8**) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i64 @__tgt_mapper_num_components(i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i64 @__tgt_mapper_num_components(i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__tgt_push_mapper_component(i8*, i8*, i8*,
> i64, i64)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__tgt_push_mapper_component(i8*, i8*, i8*,
> i64, i64) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i8*
> @__kmpc_task_allow_completion_event(%struct.ident_t*, i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i8*
> @__kmpc_task_allow_completion_event(%struct.ident_t*, i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i8* @__kmpc_task_reduction_get_th_data(i32, i8*,
> i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i8* @__kmpc_task_reduction_get_th_data(i32, i8*,
> i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i8* @__kmpc_task_reduction_init(i32, i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i8* @__kmpc_task_reduction_init(i32, i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare i8* @__kmpc_task_reduction_modifier_init(i8*, i32,
> i32, i32, i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare i8* @__kmpc_task_reduction_modifier_init(i8*, i32,
> i32, i32, i8*) #0
>
> -; CHECK: Function Attrs: nounwind
> -; CHECK-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*)
> +; CHECK: ; Function Attrs: nounwind
> +; CHECK-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*) #0
>
> -; 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_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
> @@ -1418,8 +1418,299 @@ declare void @__kmpc_proxy_task_completed_ooo(i8*)
>  ; 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-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*)
> +; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync
> nounwind readonly willreturn
> +; OPTIMISTIC-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*
> nocapture nofree readonly)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_fork_call(%struct.ident_t*
> nocapture nofree readonly, i32, void (i32*, i32*, ...)* nocapture nofree
> readonly, ...)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_taskwait(%struct.ident_t*
> nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree
> nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t*
> nocapture 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*
> nocapture 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*
> nocapture nofree readonly, i32, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree
> nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void
> @__kmpc_serialized_parallel(%struct.ident_t* nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree
> nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void
> @__kmpc_end_serialized_parallel(%struct.ident_t* nocapture nofree readonly,
> i32)
> +
> +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree
> nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare i32 @__kmpc_master(%struct.ident_t* nocapture
> nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree
> nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void @__kmpc_end_master(%struct.ident_t*
> nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_critical(%struct.ident_t*
> nocapture nofree readonly, i32, [8 x i32]*)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void
> @__kmpc_critical_with_hint(%struct.ident_t* nocapture nofree readonly, i32,
> [8 x i32]*, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_end_critical(%struct.ident_t*
> nocapture nofree readonly, i32, [8 x i32]*)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void @__kmpc_begin(%struct.ident_t* nocapture
> nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void @__kmpc_end(%struct.ident_t* nocapture
> nofree readonly)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare i32 @__kmpc_reduce(%struct.ident_t* nocapture
> nofree readonly, i32, i32, i64, i8* nocapture nofree readonly, void (i8*,
> i8*)*, [8 x i32]*)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare i32 @__kmpc_reduce_nowait(%struct.ident_t*
> nocapture nofree readonly, i32, i32, i64, i8* nocapture nofree readonly,
> void (i8*, i8*)*, [8 x i32]*)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t*
> nocapture nofree readonly, i32, [8 x i32]*)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void
> @__kmpc_end_reduce_nowait(%struct.ident_t* nocapture nofree readonly, i32,
> [8 x i32]*)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_ordered(%struct.ident_t*
> nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t*
> nocapture 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* nocapture 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* nocapture 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* nocapture 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* nocapture 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*
> nocapture 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* nocapture 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* nocapture 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* nocapture 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* nocapture 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* nocapture 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* nocapture 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* nocapture 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* nocapture nofree readonly,
> i32, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture
> nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare i32 @__kmpc_single(%struct.ident_t* nocapture
> nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_end_single(%struct.ident_t*
> nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare noalias i8*
> @__kmpc_omp_task_alloc(%struct.ident_t* nocapture nofree readonly, i32,
> i32, i64, i64, i32 (i32, i8*)* nocapture nofree readonly)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t*
> nocapture nofree readonly, i32, i8*)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t*
> nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t*
> nocapture 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* nocapture 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* nocapture 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* nocapture 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* nocapture 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*
> nocapture 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*
> nocapture 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*
> nocapture 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*
> nocapture 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*
> nocapture 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*
> nocapture 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*
> nocapture 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*
> nocapture 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*
> nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree
> nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t*
> nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree
> nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t*
> nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree
> nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t*
> nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void
> @__kmpc_omp_task_begin_if0(%struct.ident_t* nocapture nofree readonly, i32,
> i8*)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void
> @__kmpc_omp_task_complete_if0(%struct.ident_t* nocapture nofree readonly,
> i32, i8*)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare i32
> @__kmpc_omp_task_with_deps(%struct.ident_t* nocapture nofree readonly, i32,
> i8*, i32, i8* nocapture nofree readonly, i32, i8* nocapture nofree readonly)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t*
> nocapture nofree readonly, i32, i32, i8* nocapture nofree readonly, i32,
> i8*)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t*
> nocapture 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*
> nocapture nofree readonly, i32, i32, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t*
> nocapture nofree readonly, i32, void (i32*, i32*, ...)* nocapture nofree
> readonly, ...)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void @__kmpc_taskloop(%struct.ident_t*
> nocapture 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 i8*
> @__kmpc_omp_target_task_alloc(%struct.ident_t* nocapture nofree readonly,
> i32, i32, i64, i64, i32 (i32, i8*)* nocapture nofree readonly, i64)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare noalias i8*
> @__kmpc_taskred_modifier_init(%struct.ident_t* nocapture 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
> +; OPTIMISTIC-NEXT: declare void
> @__kmpc_task_reduction_modifier_fini(%struct.ident_t* nocapture nofree
> readonly, i32, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t*
> nocapture nofree readonly, i32, i64, i8* nocapture nofree readonly, void
> (i8*, i8*)*, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare noalias i8*
> @__kmpc_threadprivate_cached(%struct.ident_t* nocapture nofree readonly,
> i32, i8*, i64, i8***)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare void
> @__kmpc_threadprivate_register(%struct.ident_t* nocapture nofree readonly,
> i8*, i8* (i8*)* nocapture nofree readonly, i8* (i8*, i8*)* nocapture nofree
> readonly, void (i8*)* nocapture nofree readonly)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t*
> nocapture nofree readonly, i32, i32, i8*)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t*
> nocapture nofree readonly, i32, i64* nocapture nofree readonly)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t*
> nocapture nofree readonly, i32, i64* nocapture nofree readonly)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t*
> nocapture nofree readonly, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare noalias 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 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_mapper(i64, i8*, i32, i8**,
> i8**, i64*, i64*, i8**)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare i32 @__tgt_target_nowait_mapper(i64, i8*, i32,
> i8**, i8**, i64*, i64*, i8**)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare i32 @__tgt_target_teams_mapper(i64, i8*, i32,
> i8**, i8**, i64*, i64*, i8**, i32, i32)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare i32 @__tgt_target_teams_nowait_mapper(i64,
> i8*, i32, i8**, i8**, i64*, i64*, i8**, 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_mapper(i64, i32,
> i8**, i8**, i64*, i64*, i8**)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void
> @__tgt_target_data_begin_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*,
> i8**)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end_mapper(i64, i32,
> i8**, i8**, i64*, i64*, i8**)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end_nowait_mapper(i64,
> i32, i8**, i8**, i64*, i64*, i8**)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update_mapper(i64,
> i32, i8**, i8**, i64*, i64*, i8**)
> +
> +; OPTIMISTIC: ; Function Attrs: nounwind
> +; OPTIMISTIC-NEXT: declare void
> @__tgt_target_data_update_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*,
> i8**)
> +
> +; 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 i8*
> @__kmpc_task_allow_completion_event(%struct.ident_t* nocapture nofree
> readonly, i32, i8*)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare noalias i8*
> @__kmpc_task_reduction_get_th_data(i32, i8*, i8*)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_reduction_init(i32,
> i32, i8*)
> +
> +; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn
> +; OPTIMISTIC-NEXT: declare noalias 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*)
>
> diff  --git a/llvm/test/Transforms/OpenMP/parallel_deletion.ll
> b/llvm/test/Transforms/OpenMP/parallel_deletion.ll
> index 4d2f8e7cbc5e..07976660546f 100644
> --- a/llvm/test/Transforms/OpenMP/parallel_deletion.ll
> +++ b/llvm/test/Transforms/OpenMP/parallel_deletion.ll
> @@ -393,7 +393,7 @@ entry:
>
>  define internal void @.omp.reduction.reduction_func(i8* %arg, i8* %arg1) {
>  ; CHECK-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func
> -; CHECK-SAME: (i8* nocapture nofree nonnull readonly align 8
> dereferenceable(8) [[ARG:%.*]], i8* nocapture nofree nonnull readonly align
> 8 dereferenceable(8) [[ARG1:%.*]]) #10
> +; CHECK-SAME: (i8* nocapture nofree nonnull readonly align 8
> dereferenceable(8) [[ARG:%.*]], i8* nocapture nofree nonnull readonly align
> 8 dereferenceable(8) [[ARG1:%.*]]) #{{[0-9]+}}
>  ; CHECK-NEXT:  entry:
>  ; CHECK-NEXT:    [[TMP:%.*]] = bitcast i8* [[ARG1]] to i32**
>  ; CHECK-NEXT:    [[TMP2:%.*]] = load i32*, i32** [[TMP]], align 8
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200717/638b04c9/attachment-0001.html>


More information about the llvm-commits mailing list