<div dir="ltr">Hi Joseph,<div><br></div><div>I've temporarily reverted this here:</div><div><br></div><div>echristo@athyra ~/s/llvm-project> git push<br>To github.com:llvm/llvm-project.git<br>   ae08dbc6732..020545d386c  master -> master<br></div><div><br></div><div>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.</div><div><br></div><div>Thanks and sorry for the inconvenience.</div><div><br></div><div>-eric</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 17, 2020 at 2:55 PM Joseph Huber via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: Joseph Huber<br>
Date: 2020-07-17T17:54:01-04:00<br>
New Revision: 09fe0c5ab9ca5846d6cb625e9be47fdcfe49b93c<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/09fe0c5ab9ca5846d6cb625e9be47fdcfe49b93c" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/09fe0c5ab9ca5846d6cb625e9be47fdcfe49b93c</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/09fe0c5ab9ca5846d6cb625e9be47fdcfe49b93c.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/09fe0c5ab9ca5846d6cb625e9be47fdcfe49b93c.diff</a><br>
<br>
LOG: [OpenMP] Add Additional Function Attribute Information to OMPKinds.def<br>
<br>
Summary:<br>
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.<br>
<br>
Reviewers: jdoerfert<br>
<br>
Subscribers: aaron.ballman cfe-commits yaxunl guansong sstefan1 llvm-commits<br>
<br>
Tags: #OpenMP #clang #llvm<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D81031" rel="noreferrer" target="_blank">https://reviews.llvm.org/D81031</a><br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    llvm/include/llvm/Frontend/OpenMP/OMPKinds.def<br>
    llvm/test/Transforms/OpenMP/add_attributes.ll<br>
    llvm/test/Transforms/OpenMP/parallel_deletion.ll<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def<br>
index 0dc2b34f2e4d..bb476f6a34d4 100644<br>
--- a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def<br>
+++ b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def<br>
@@ -383,7 +383,8 @@ __OMP_RTL(__kmpc_push_proc_bind, false, Void, IdentPtr, Int32, /* Int */ Int32)<br>
 __OMP_RTL(__kmpc_serialized_parallel, false, Void, IdentPtr, Int32)<br>
 __OMP_RTL(__kmpc_end_serialized_parallel, false, Void, IdentPtr, Int32)<br>
 __OMP_RTL(__kmpc_omp_reg_task_with_affinity, false, Int32, IdentPtr, Int32,<br>
-          Int8Ptr, Int32, Int8Ptr)<br>
+          /* kmp_task_t */ VoidPtr, Int32,<br>
+          /* kmp_task_affinity_info_t */ VoidPtr)<br>
<br>
 __OMP_RTL(omp_get_thread_num, false, Int32, )<br>
 __OMP_RTL(omp_get_num_threads, false, Int32, )<br>
@@ -430,8 +431,7 @@ __OMP_RTL(__kmpc_reduce, false, Int32, IdentPtr, Int32, Int32, SizeTy, VoidPtr,<br>
           ReduceFunctionPtr, KmpCriticalNamePtrTy)<br>
 __OMP_RTL(__kmpc_reduce_nowait, false, Int32, IdentPtr, Int32, Int32, SizeTy,<br>
           VoidPtr, ReduceFunctionPtr, KmpCriticalNamePtrTy)<br>
-__OMP_RTL(__kmpc_end_reduce, false, Void, IdentPtr, Int32,<br>
-          KmpCriticalNamePtrTy)<br>
+__OMP_RTL(__kmpc_end_reduce, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy)<br>
 __OMP_RTL(__kmpc_end_reduce_nowait, false, Void, IdentPtr, Int32,<br>
           KmpCriticalNamePtrTy)<br>
<br>
@@ -514,10 +514,10 @@ __OMP_RTL(__kmpc_taskloop, false, Void, IdentPtr, /* Int */ Int32, VoidPtr,<br>
           /* Int */ Int32, Int64, VoidPtr)<br>
 __OMP_RTL(__kmpc_omp_target_task_alloc, false, /* kmp_task_t */ VoidPtr,<br>
           IdentPtr, Int32, Int32, SizeTy, SizeTy, TaskRoutineEntryPtr, Int64)<br>
-__OMP_RTL(__kmpc_taskred_modifier_init, false, VoidPtr, IdentPtr,<br>
-          /* Int */ Int32, /* Int */ Int32, /* Int */ Int32, VoidPtr)<br>
-__OMP_RTL(__kmpc_taskred_init, false, VoidPtr, /* Int */ Int32,<br>
-          /* Int */ Int32, VoidPtr)<br>
+__OMP_RTL(__kmpc_taskred_modifier_init, false, /* kmp_taskgroup */ VoidPtr,<br>
+          IdentPtr, /* Int */ Int32, /* Int */ Int32, /* Int */ Int32, VoidPtr)<br>
+__OMP_RTL(__kmpc_taskred_init, false, /* kmp_taskgroup */ VoidPtr,<br>
+          /* Int */ Int32, /* Int */ Int32, VoidPtr)<br>
 __OMP_RTL(__kmpc_task_reduction_modifier_fini, false, Void, IdentPtr,<br>
           /* Int */ Int32, /* Int */ Int32)<br>
 __OMP_RTL(__kmpc_task_reduction_get_th_data, false, VoidPtr, Int32, VoidPtr,<br>
@@ -594,7 +594,9 @@ __OMP_RTL(__last, false, Void, )<br>
 #undef __OMP_RTL<br>
 #undef OMP_RTL<br>
<br>
+#define ParamAttrs(...) ArrayRef<AttributeSet>({__VA_ARGS__})<br>
 #define EnumAttr(Kind) Attribute::get(Ctx, Attribute::AttrKind::Kind)<br>
+#define EnumAttrInt(Kind, N) Attribute::get(Ctx, Attribute::AttrKind::Kind, N)<br>
 #define AttributeSet(...)                                                      \<br>
   AttributeSet::get(Ctx, ArrayRef<Attribute>({__VA_ARGS__}))<br>
<br>
@@ -607,19 +609,88 @@ __OMP_RTL(__last, false, Void, )<br>
 __OMP_ATTRS_SET(GetterAttrs,<br>
                 OptimisticAttributes<br>
                     ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(ReadOnly),<br>
-                                   EnumAttr(NoSync), EnumAttr(NoFree), EnumAttr(InaccessibleMemOnly))<br>
+                                   EnumAttr(NoSync), EnumAttr(NoFree),<br>
+                                   EnumAttr(InaccessibleMemOnly),<br>
+                                   EnumAttr(WillReturn))<br>
                     : AttributeSet(EnumAttr(NoUnwind)))<br>
 __OMP_ATTRS_SET(GetterArgWriteAttrs,<br>
                 OptimisticAttributes<br>
                     ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync),<br>
-                                   EnumAttr(NoFree), EnumAttr(InaccessibleMemOrArgMemOnly))<br>
+                                   EnumAttr(NoFree),<br>
+                                   EnumAttr(InaccessibleMemOrArgMemOnly),<br>
+                                   EnumAttr(WillReturn))<br>
                     : AttributeSet(EnumAttr(NoUnwind)))<br>
 __OMP_ATTRS_SET(SetterAttrs,<br>
                 OptimisticAttributes<br>
                     ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(WriteOnly),<br>
-                                   EnumAttr(NoSync), EnumAttr(NoFree), EnumAttr(InaccessibleMemOnly))<br>
+                                   EnumAttr(NoSync), EnumAttr(NoFree),<br>
+                                   EnumAttr(InaccessibleMemOnly),<br>
+                                   EnumAttr(WillReturn))<br>
+                    : AttributeSet(EnumAttr(NoUnwind)))<br>
+<br>
+__OMP_ATTRS_SET(DefaultAttrs,<br>
+                OptimisticAttributes<br>
+                    ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync),<br>
+                                   EnumAttr(WillReturn), EnumAttr(NoFree))<br>
+                    : AttributeSet(EnumAttr(NoUnwind)))<br>
+<br>
+__OMP_ATTRS_SET(BarrierAttrs,<br>
+                OptimisticAttributes<br>
+                    ? AttributeSet(EnumAttr(NoUnwind))<br>
+                    : AttributeSet(EnumAttr(NoUnwind)))<br>
+<br>
+__OMP_ATTRS_SET(InaccessibleArgOnlyAttrs,<br>
+                OptimisticAttributes<br>
+                    ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync),<br>
+                                   EnumAttr(InaccessibleMemOrArgMemOnly),<br>
+                                   EnumAttr(WillReturn), EnumAttr(NoFree))<br>
+                    : AttributeSet(EnumAttr(NoUnwind)))<br>
+<br>
+__OMP_ATTRS_SET(InaccessibleOnlyAttrs,<br>
+                OptimisticAttributes<br>
+                    ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync),<br>
+                                   EnumAttr(InaccessibleMemOnly),<br>
+                                   EnumAttr(WillReturn), EnumAttr(NoFree))<br>
+                    : AttributeSet(EnumAttr(NoUnwind)))<br>
+<br>
+__OMP_ATTRS_SET(AllocAttrs,<br>
+                OptimisticAttributes<br>
+                    ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync),<br>
+                                   EnumAttr(WillReturn))<br>
                     : AttributeSet(EnumAttr(NoUnwind)))<br>
<br>
+__OMP_ATTRS_SET(ForkAttrs, OptimisticAttributes<br>
+                               ? AttributeSet(EnumAttr(NoUnwind))<br>
+                               : AttributeSet(EnumAttr(NoUnwind)))<br>
+<br>
+__OMP_ATTRS_SET(ReadOnlyPtrAttrs,<br>
+                OptimisticAttributes<br>
+                    ? AttributeSet(EnumAttr(ReadOnly), EnumAttr(NoFree),<br>
+                                   EnumAttr(NoCapture))<br>
+                    : AttributeSet())<br>
+<br>
+__OMP_ATTRS_SET(WriteOnlyPtrAttrs,<br>
+                OptimisticAttributes<br>
+                    ? AttributeSet(EnumAttr(WriteOnly), EnumAttr(NoFree),<br>
+                                   EnumAttr(NoCapture))<br>
+                    : AttributeSet())<br>
+<br>
+__OMP_ATTRS_SET(ArgPtrAttrs,<br>
+                OptimisticAttributes<br>
+                    ? AttributeSet(EnumAttr(NoCapture), EnumAttr(NoFree))<br>
+                    : AttributeSet())<br>
+<br>
+__OMP_ATTRS_SET(ReturnPtrAttrs,<br>
+                OptimisticAttributes<br>
+                    ? AttributeSet(EnumAttr(NoAlias))<br>
+                    : AttributeSet())<br>
+<br>
+__OMP_ATTRS_SET(ReturnAlignedPtrAttrs,<br>
+                OptimisticAttributes<br>
+                    ? AttributeSet(EnumAttr(NoAlias), EnumAttrInt(Alignment, 8),<br>
+                                   EnumAttrInt(DereferenceableOrNull, 8))<br>
+                    : AttributeSet())<br>
+<br>
 #undef __OMP_ATTRS_SET<br>
 #undef OMP_ATTRS_SET<br>
<br>
@@ -630,295 +701,309 @@ __OMP_ATTRS_SET(SetterAttrs,<br>
 #define __OMP_RTL_ATTRS(Name, FnAttrSet, RetAttrSet, ArgAttrSets)              \<br>
   OMP_RTL_ATTRS(OMPRTL_##Name, FnAttrSet, RetAttrSet, ArgAttrSets)<br>
<br>
-__OMP_RTL_ATTRS(__kmpc_barrier, AttributeSet(), AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_cancel,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_cancel_barrier, AttributeSet(), AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_flush, AttributeSet(), AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_fork_call, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_omp_taskwait, AttributeSet(), AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_omp_taskyield,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_push_num_threads,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_push_proc_bind,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_serialized_parallel,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_end_serialized_parallel,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_num_threads, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_max_threads, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_in_parallel, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_dynamic, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_cancellation, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_nested, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_schedule, GetterArgWriteAttrs, AttributeSet(),<br>
-                ArrayRef<AttributeSet>(<br>
-                    {AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)),<br>
-                     AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly))}))<br>
-__OMP_RTL_ATTRS(omp_get_thread_limit, GetterAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__kmpc_barrier, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_cancel, InaccessibleArgOnlyAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_cancel_barrier, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_flush, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_fork_call, ForkAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_omp_taskwait, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_omp_taskyield, InaccessibleArgOnlyAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_push_num_threads, InaccessibleArgOnlyAttrs,<br>
+                AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_push_proc_bind, InaccessibleArgOnlyAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_serialized_parallel, InaccessibleArgOnlyAttrs,<br>
+                AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_end_serialized_parallel, InaccessibleArgOnlyAttrs,<br>
+                AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_omp_reg_task_with_affinity, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs,<br>
+                           AttributeSet(), ReadOnlyPtrAttrs))<br>
+<br>
+__OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_num_threads, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_max_threads, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_in_parallel, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_dynamic, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_cancellation, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_nested, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(<br>
+    omp_get_schedule, GetterArgWriteAttrs, AttributeSet(),<br>
+    ParamAttrs(AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)),<br>
+               AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly))))<br>
+__OMP_RTL_ATTRS(omp_get_thread_limit, GetterAttrs, AttributeSet(), ParamAttrs())<br>
 __OMP_RTL_ATTRS(omp_get_supported_active_levels, GetterAttrs, AttributeSet(),<br>
-                {})<br>
-__OMP_RTL_ATTRS(omp_get_max_active_levels, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_level, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_ancestor_thread_num, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_team_size, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_active_level, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_in_final, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_proc_bind, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_num_places, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_num_procs, GetterAttrs, AttributeSet(), {})<br>
+                ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_max_active_levels, GetterAttrs, AttributeSet(),<br>
+                ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_level, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_ancestor_thread_num, GetterAttrs, AttributeSet(),<br>
+                ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_team_size, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_active_level, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_in_final, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_proc_bind, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_num_places, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_num_procs, GetterAttrs, AttributeSet(), ParamAttrs())<br>
 __OMP_RTL_ATTRS(omp_get_place_proc_ids, GetterArgWriteAttrs, AttributeSet(),<br>
-                ArrayRef<AttributeSet>({AttributeSet(),<br>
-                                        AttributeSet(EnumAttr(NoCapture),<br>
-                                                     EnumAttr(WriteOnly))}))<br>
-__OMP_RTL_ATTRS(omp_get_place_num, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_partition_num_places, GetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_get_partition_place_nums, GetterAttrs, AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(omp_set_num_threads, SetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_set_dynamic, SetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_set_nested, SetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_set_schedule, SetterAttrs, AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(omp_set_max_active_levels, SetterAttrs, AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_master,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_end_master,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_critical,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_critical_with_hint,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_end_critical,<br>
-                AttributeSet(EnumAttr(InaccessibleMemOrArgMemOnly)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_begin, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_end, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_reduce, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_reduce_nowait, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_end_reduce, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_end_reduce_nowait, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_ordered, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_end_ordered, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_for_static_init_4, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_for_static_init_4u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_for_static_init_8, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_for_static_init_8u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_for_static_fini, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_init_4, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_init_4u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_init_8, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_init_8u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_next_4, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_next_8, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_team_static_init_4, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_team_static_init_4u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_team_static_init_8, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_team_static_init_8u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8u, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_single, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_end_single, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_omp_task_alloc, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_omp_task, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_end_taskgroup, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_taskgroup, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_omp_task_begin_if0, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_omp_task_complete_if0, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_omp_task_with_deps, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_taskloop, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_omp_target_task_alloc,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_taskred_modifier_init,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_taskred_init,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_fini,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_task_reduction_get_th_data,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_task_reduction_init,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_init,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_proxy_task_completed_ooo,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_omp_wait_deps, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_cancellationpoint, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_fork_teams, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_push_num_teams, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_copyprivate, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_threadprivate_cached, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_threadprivate_register, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_doacross_init, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_doacross_post, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_doacross_wait, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_doacross_fini, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_alloc, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_free, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_init_allocator, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_destroy_allocator, AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-<br>
-__OMP_RTL_ATTRS(__kmpc_push_target_tripcount,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_target_mapper,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_target_nowait_mapper,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_target_teams_mapper,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_target_teams_nowait_mapper,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_register_requires,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_target_data_begin_mapper,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait_mapper,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_target_data_end_mapper,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_target_data_end_nowait_mapper,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_target_data_update_mapper,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_target_data_update_nowait_mapper,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_mapper_num_components,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__tgt_push_mapper_component,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
-__OMP_RTL_ATTRS(__kmpc_task_allow_completion_event,<br>
-                AttributeSet(EnumAttr(NoUnwind)),<br>
-                AttributeSet(), {})<br>
+                ParamAttrs(AttributeSet(), AttributeSet(EnumAttr(NoCapture),<br>
+                                                        EnumAttr(WriteOnly))))<br>
+__OMP_RTL_ATTRS(omp_get_place_num, GetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_partition_num_places, GetterAttrs, AttributeSet(),<br>
+                ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_get_partition_place_nums, GetterAttrs, AttributeSet(),<br>
+                ParamAttrs())<br>
+<br>
+__OMP_RTL_ATTRS(omp_set_num_threads, SetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_set_dynamic, SetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_set_nested, SetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_set_schedule, SetterAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(omp_set_max_active_levels, SetterAttrs, AttributeSet(),<br>
+                ParamAttrs())<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_master, InaccessibleArgOnlyAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_end_master, InaccessibleArgOnlyAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_critical, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_critical_with_hint, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_end_critical, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet()))<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_begin, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_end, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_reduce, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           AttributeSet(), ReadOnlyPtrAttrs, AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_reduce_nowait, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           AttributeSet(), ReadOnlyPtrAttrs, AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_end_reduce, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_end_reduce_nowait, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet()))<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_ordered, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_end_ordered, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_for_static_init_4, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,<br>
+                           AttributeSet(), AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_for_static_init_4u, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,<br>
+                           AttributeSet(), AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_for_static_init_8, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,<br>
+                           AttributeSet(), AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_for_static_init_8u, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,<br>
+                           AttributeSet(), AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_for_static_fini, InaccessibleArgOnlyAttrs,<br>
+                AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4, GetterArgWriteAttrs,<br>
+                AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4u, GetterArgWriteAttrs,<br>
+                AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8, GetterArgWriteAttrs,<br>
+                AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8u, GetterArgWriteAttrs,<br>
+                AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_init_4, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_init_4u, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_init_8, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_init_8u, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_next_4, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs,<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs,<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_next_8, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs,<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs,<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4, InaccessibleArgOnlyAttrs,<br>
+                AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4u, InaccessibleArgOnlyAttrs,<br>
+                AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, InaccessibleArgOnlyAttrs,<br>
+                AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, InaccessibleArgOnlyAttrs,<br>
+                AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_team_static_init_4, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs,<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_team_static_init_4u, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs,<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_team_static_init_8, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs,<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_team_static_init_8u, GetterArgWriteAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs,<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4, GetterArgWriteAttrs,<br>
+                AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,<br>
+                           ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4u, GetterArgWriteAttrs,<br>
+                AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,<br>
+                           ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8, GetterArgWriteAttrs,<br>
+                AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,<br>
+                           ArgPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8u, GetterArgWriteAttrs,<br>
+                AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,<br>
+                           ArgPtrAttrs))<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_single, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_end_single, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_omp_task_alloc, DefaultAttrs, ReturnPtrAttrs,<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           AttributeSet(), AttributeSet(), ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_omp_task, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_end_taskgroup, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_taskgroup, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_omp_task_begin_if0, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_omp_task_complete_if0, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_omp_task_with_deps, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           AttributeSet(), ReadOnlyPtrAttrs, AttributeSet(),<br>
+                           ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_taskloop, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           AttributeSet(), ArgPtrAttrs, ArgPtrAttrs,<br>
+                           AttributeSet(), AttributeSet(), AttributeSet(),<br>
+                           AttributeSet(), AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_omp_target_task_alloc, DefaultAttrs, ReturnPtrAttrs,<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           AttributeSet(), AttributeSet(), ReadOnlyPtrAttrs,<br>
+                           AttributeSet()))<br>
+__OMP_RTL_ATTRS(__kmpc_taskred_modifier_init, DefaultAttrs, ReturnPtrAttrs,<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_taskred_init, DefaultAttrs, AttributeSet(), ParamAttrs())<br>
+__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_fini, BarrierAttrs,<br>
+                AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_task_reduction_get_th_data, DefaultAttrs, ReturnPtrAttrs,<br>
+                ParamAttrs())<br>
+__OMP_RTL_ATTRS(__kmpc_task_reduction_init, DefaultAttrs, ReturnPtrAttrs,<br>
+                ParamAttrs())<br>
+__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_init, DefaultAttrs,<br>
+                ReturnPtrAttrs, ParamAttrs())<br>
+__OMP_RTL_ATTRS(__kmpc_proxy_task_completed_ooo, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs())<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_omp_wait_deps, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_cancellationpoint, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_fork_teams, ForkAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_push_num_teams, InaccessibleArgOnlyAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_copyprivate, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),<br>
+                           ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_threadprivate_cached, DefaultAttrs, ReturnPtrAttrs,<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_threadprivate_register, DefaultAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs,<br>
+                           ReadOnlyPtrAttrs, ReadOnlyPtrAttrs))<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_doacross_init, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_doacross_post, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_doacross_wait, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs))<br>
+__OMP_RTL_ATTRS(__kmpc_doacross_fini, BarrierAttrs, AttributeSet(),<br>
+                ParamAttrs(ReadOnlyPtrAttrs))<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_alloc, DefaultAttrs, ReturnPtrAttrs, {})<br>
+__OMP_RTL_ATTRS(__kmpc_free, AllocAttrs, AttributeSet(), {})<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_init_allocator, DefaultAttrs, ReturnPtrAttrs, {})<br>
+__OMP_RTL_ATTRS(__kmpc_destroy_allocator, AllocAttrs, AttributeSet(), {})<br>
+<br>
+__OMP_RTL_ATTRS(__kmpc_push_target_tripcount, SetterAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_target_mapper, ForkAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_target_nowait_mapper, ForkAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_target_teams_mapper, ForkAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_target_teams_nowait_mapper, ForkAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_register_requires, ForkAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_target_data_begin_mapper, ForkAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait_mapper, ForkAttrs,<br>
+        AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_target_data_end_mapper, ForkAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_target_data_end_nowait_mapper, ForkAttrs,<br>
+        AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_target_data_update_mapper, ForkAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_target_data_update_nowait_mapper, ForkAttrs,<br>
+        AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_mapper_num_components, ForkAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__tgt_push_mapper_component, ForkAttrs, AttributeSet(), {})<br>
+__OMP_RTL_ATTRS(__kmpc_task_allow_completion_event, DefaultAttrs,<br>
+                ReturnPtrAttrs, ParamAttrs(ReadOnlyPtrAttrs))<br>
<br>
 #undef __OMP_RTL_ATTRS<br>
 #undef OMP_RTL_ATTRS<br>
 #undef AttributeSet<br>
 #undef EnumAttr<br>
+#undef EnumAttrInt<br>
+#undef ParamAttrs<br>
<br>
 ///}<br>
<br>
<br>
diff  --git a/llvm/test/Transforms/OpenMP/add_attributes.ll b/llvm/test/Transforms/OpenMP/add_attributes.ll<br>
index 6e10613ed43c..e92447d79fea 100644<br>
--- a/llvm/test/Transforms/OpenMP/add_attributes.ll<br>
+++ b/llvm/test/Transforms/OpenMP/add_attributes.ll<br>
@@ -890,373 +890,373 @@ declare void @__kmpc_proxy_task_completed_ooo(i8*)<br>
 ; CHECK: ; Function Attrs: nounwind<br>
 ; CHECK-NEXT: declare dso_local i32 @omp_get_supported_active_levels() #0<br>
<br>
-; CHECK-NOT: Function Attrs<br>
-; CHECK: declare void @__kmpc_barrier(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_barrier(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare i32 @__kmpc_cancel(%struct.ident_t*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_cancel(%struct.ident_t*, i32, i32) #0<br>
<br>
-; CHECK-NOT: Function Attrs<br>
-; CHECK: declare i32 @__kmpc_cancel_barrier(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_cancel_barrier(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK-NOT: Function Attrs<br>
-; CHECK: declare void @__kmpc_flush(%struct.ident_t*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_flush(%struct.ident_t*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_fork_call(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_fork_call(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) #0<br>
<br>
-; CHECK-NOT: Function Attrs<br>
-; CHECK: declare i32 @__kmpc_omp_taskwait(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_omp_taskwait(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare void @__kmpc_end_serialized_parallel(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_end_serialized_parallel(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare i32 @__kmpc_master(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_master(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare void @__kmpc_end_master(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_end_master(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare void @__kmpc_critical(%struct.ident_t*, i32, [8 x i32]*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_critical(%struct.ident_t*, i32, [8 x i32]*) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t*, i32, [8 x i32]*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t*, i32, [8 x i32]*, i32) #0<br>
<br>
-; CHECK: Function Attrs: inaccessiblemem_or_argmemonly<br>
-; CHECK-NEXT: declare void @__kmpc_end_critical(%struct.ident_t*, i32, [8 x i32]*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_end_critical(%struct.ident_t*, i32, [8 x i32]*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_begin(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_begin(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_end(%struct.ident_t*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_end(%struct.ident_t*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_reduce(%struct.ident_t*, i32, i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_reduce(%struct.ident_t*, i32, i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_reduce_nowait(%struct.ident_t*, i32, i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_reduce_nowait(%struct.ident_t*, i32, i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t*, i32, [8 x i32]*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t*, i32, [8 x i32]*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t*, i32, [8 x i32]*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t*, i32, [8 x i32]*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_ordered(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_ordered(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_for_static_init_4u(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_for_static_init_4u(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_for_static_init_8(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_for_static_init_8(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_for_static_init_8u(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_for_static_init_8u(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_team_static_init_4(%struct.ident_t*, i32, i32*, i32*, i32*, i32*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_team_static_init_4(%struct.ident_t*, i32, i32*, i32*, i32*, i32*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_team_static_init_4u(%struct.ident_t*, i32, i32*, i32*, i32*, i32*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_team_static_init_4u(%struct.ident_t*, i32, i32*, i32*, i32*, i32*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_team_static_init_8(%struct.ident_t*, i32, i32*, i64*, i64*, i64*, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_team_static_init_8(%struct.ident_t*, i32, i32*, i64*, i64*, i64*, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_team_static_init_8u(%struct.ident_t*, i32, i32*, i64*, i64*, i64*, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_team_static_init_8u(%struct.ident_t*, i32, i32*, i64*, i64*, i64*, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_4u(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_4u(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_8(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64*, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_8(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64*, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_8u(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64*, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_8u(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64*, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_single(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_single(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_end_single(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_end_single(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_omp_task_alloc(%struct.ident_t*, i32, i32, i64, i64, i32 (i32, i8*)*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_omp_task_alloc(%struct.ident_t*, i32, i32, i64, i64, i32 (i32, i8*)*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t*, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t*, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t*, i32, i32, i32*, i32, i32, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t*, i32, i32, i32*, i32, i32, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_4u(%struct.ident_t*, i32, i32, i32*, i32, i32, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_4u(%struct.ident_t*, i32, i32, i32*, i32, i32, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_8(%struct.ident_t*, i32, i32, i32*, i64, i64, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_8(%struct.ident_t*, i32, i32, i32*, i64, i64, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_8u(%struct.ident_t*, i32, i32, i32*, i64, i64, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_8u(%struct.ident_t*, i32, i32, i32*, i64, i64, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dispatch_init_4(%struct.ident_t*, i32, i32, i32, i32, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dispatch_init_4(%struct.ident_t*, i32, i32, i32, i32, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dispatch_init_4u(%struct.ident_t*, i32, i32, i32, i32, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dispatch_init_4u(%struct.ident_t*, i32, i32, i32, i32, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dispatch_init_8(%struct.ident_t*, i32, i32, i64, i64, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dispatch_init_8(%struct.ident_t*, i32, i32, i64, i64, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dispatch_init_8u(%struct.ident_t*, i32, i32, i64, i64, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dispatch_init_8u(%struct.ident_t*, i32, i32, i64, i64, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_4(%struct.ident_t*, i32, i32*, i32*, i32*, i32*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_4(%struct.ident_t*, i32, i32*, i32*, i32*, i32*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_4u(%struct.ident_t*, i32, i32*, i32*, i32*, i32*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_4u(%struct.ident_t*, i32, i32*, i32*, i32*, i32*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_8(%struct.ident_t*, i32, i32*, i64*, i64*, i64*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_8(%struct.ident_t*, i32, i32*, i64*, i64*, i64*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_8u(%struct.ident_t*, i32, i32*, i64*, i64*, i64*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_8u(%struct.ident_t*, i32, i32*, i64*, i64*, i64*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t*, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t*, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_omp_task_complete_if0(%struct.ident_t*, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_omp_task_complete_if0(%struct.ident_t*, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_omp_task_with_deps(%struct.ident_t*, i32, i8*, i32, i8*, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_omp_task_with_deps(%struct.ident_t*, i32, i8*, i32, i8*, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t*, i32, i32, i8*, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t*, i32, i32, i8*, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t*, i32, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t*, i32, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_taskloop(%struct.ident_t*, i32, i8*, i32, i64*, i64*, i64, i32, i32, i64, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_taskloop(%struct.ident_t*, i32, i8*, i32, i64*, i64*, i64, i32, i32, i64, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_omp_target_task_alloc(%struct.ident_t*, i32, i32, i64, i64, i32 (i32, i8*)*, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_omp_target_task_alloc(%struct.ident_t*, i32, i32, i64, i64, i32 (i32, i8*)*, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_taskred_modifier_init(%struct.ident_t*, i32, i32, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_taskred_modifier_init(%struct.ident_t*, i32, i32, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_taskred_init(i32, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_taskred_init(i32, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_task_reduction_modifier_fini(%struct.ident_t*, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_task_reduction_modifier_fini(%struct.ident_t*, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t*, i32, i64, i8*, void (i8*, i8*)*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t*, i32, i64, i8*, void (i8*, i8*)*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_threadprivate_cached(%struct.ident_t*, i32, i8*, i64, i8***)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_threadprivate_cached(%struct.ident_t*, i32, i8*, i64, i8***) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_threadprivate_register(%struct.ident_t*, i8*, i8* (i8*)*, i8* (i8*, i8*)*, void (i8*)*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_threadprivate_register(%struct.ident_t*, i8*, i8* (i8*)*, i8* (i8*, i8*)*, void (i8*)*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t*, i32, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t*, i32, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t*, i32, i64*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t*, i32, i64*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t*, i32, i64*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t*, i32, i64*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t*, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t*, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_alloc(i32, i64, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_alloc(i32, i64, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_free(i32, i8*, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_free(i32, i8*, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_init_allocator(i32, i8*, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_init_allocator(i32, i8*, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_destroy_allocator(i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_destroy_allocator(i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_push_target_tripcount(i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_push_target_tripcount(i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__tgt_target_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__tgt_target_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__tgt_target_nowait_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__tgt_target_nowait_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__tgt_target_teams_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__tgt_target_teams_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i32 @__tgt_target_teams_nowait_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i32, i32)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i32 @__tgt_target_teams_nowait_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i32, i32) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__tgt_register_requires(i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__tgt_register_requires(i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__tgt_target_data_begin_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__tgt_target_data_begin_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__tgt_target_data_begin_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__tgt_target_data_begin_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__tgt_target_data_end_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__tgt_target_data_end_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__tgt_target_data_end_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__tgt_target_data_end_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__tgt_target_data_update_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__tgt_target_data_update_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__tgt_target_data_update_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__tgt_target_data_update_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i64 @__tgt_mapper_num_components(i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i64 @__tgt_mapper_num_components(i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__tgt_push_mapper_component(i8*, i8*, i8*, i64, i64)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__tgt_push_mapper_component(i8*, i8*, i8*, i64, i64) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_task_allow_completion_event(%struct.ident_t*, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_task_allow_completion_event(%struct.ident_t*, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_task_reduction_get_th_data(i32, i8*, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_task_reduction_get_th_data(i32, i8*, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_task_reduction_init(i32, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_task_reduction_init(i32, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare i8* @__kmpc_task_reduction_modifier_init(i8*, i32, i32, i32, i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare i8* @__kmpc_task_reduction_modifier_init(i8*, i32, i32, i32, i8*) #0<br>
<br>
-; CHECK: Function Attrs: nounwind<br>
-; CHECK-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*)<br>
+; CHECK: ; Function Attrs: nounwind<br>
+; CHECK-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*) #0<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind writeonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly<br>
 ; OPTIMISTIC-NEXT: declare dso_local void @omp_set_num_threads(i32)<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind writeonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly<br>
 ; OPTIMISTIC-NEXT: declare dso_local void @omp_set_dynamic(i32)<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind writeonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly<br>
 ; OPTIMISTIC-NEXT: declare dso_local void @omp_set_nested(i32)<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind writeonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly<br>
 ; OPTIMISTIC-NEXT: declare dso_local void @omp_set_max_active_levels(i32)<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind writeonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly<br>
 ; OPTIMISTIC-NEXT: declare dso_local void @omp_set_schedule(i32, i32)<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_num_threads() #1<br>
<br>
 ; OPTIMISTIC-NOT: Function Attrs<br>
 ; OPTIMISTIC: declare dso_local void @use_int(i32)<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_dynamic() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_nested() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_max_threads() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_thread_num() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_num_procs() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_in_parallel() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_in_final() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_active_level() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_level() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_ancestor_thread_num(i32) #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_team_size(i32) #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_thread_limit() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_max_active_levels() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local void @omp_get_schedule(i32* nocapture writeonly, i32* nocapture writeonly) #2<br>
<br>
 ; OPTIMISTIC-NOT: Function Attrs<br>
@@ -1418,8 +1418,299 @@ declare void @__kmpc_proxy_task_completed_ooo(i8*)<br>
 ; OPTIMISTIC-NOT: Function Attrs<br>
 ; OPTIMISTIC: declare dso_local i32 @omp_pause_resource_all(i32)<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
 ; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_supported_active_levels() #1<br>
<br>
-; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly<br>
-; OPTIMISTIC-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*)<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind readonly willreturn<br>
+; OPTIMISTIC-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t* nocapture nofree readonly)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_fork_call(%struct.ident_t* nocapture nofree readonly, i32, void (i32*, i32*, ...)* nocapture nofree readonly, ...)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_taskwait(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t* nocapture nofree readonly, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t* nocapture nofree readonly, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t* nocapture nofree readonly, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_end_serialized_parallel(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare i32 @__kmpc_master(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_end_master(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_critical(%struct.ident_t* nocapture nofree readonly, i32, [8 x i32]*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t* nocapture nofree readonly, i32, [8 x i32]*, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_end_critical(%struct.ident_t* nocapture nofree readonly, i32, [8 x i32]*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_begin(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_end(%struct.ident_t* nocapture nofree readonly)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; 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]*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; 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]*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t* nocapture nofree readonly, i32, [8 x i32]*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t* nocapture nofree readonly, i32, [8 x i32]*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_ordered(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare i32 @__kmpc_single(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_end_single(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t* nocapture nofree readonly, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i32, i32, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_4u(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i32, i32, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_8(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i64, i64, i64, i64)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_8u(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i64, i64, i64, i64)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_4(%struct.ident_t* nocapture nofree readonly, i32, i32, i32, i32, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_4u(%struct.ident_t* nocapture nofree readonly, i32, i32, i32, i32, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_8(%struct.ident_t* nocapture nofree readonly, i32, i32, i64, i64, i64, i64)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_8u(%struct.ident_t* nocapture nofree readonly, i32, i32, i64, i64, i64, i64)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t* nocapture nofree readonly, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_omp_task_complete_if0(%struct.ident_t* nocapture nofree readonly, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t* nocapture nofree readonly, i32, i32, i8* nocapture nofree readonly, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t* nocapture nofree readonly, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblemem_or_argmemonly nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t* nocapture nofree readonly, i32, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t* nocapture nofree readonly, i32, void (i32*, i32*, ...)* nocapture nofree readonly, ...)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; 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*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_taskred_modifier_init(%struct.ident_t* nocapture nofree readonly, i32, i32, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare i8* @__kmpc_taskred_init(i32, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_task_reduction_modifier_fini(%struct.ident_t* nocapture nofree readonly, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t* nocapture nofree readonly, i32, i64, i8* nocapture nofree readonly, void (i8*, i8*)*, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_threadprivate_cached(%struct.ident_t* nocapture nofree readonly, i32, i8*, i64, i8***)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; 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)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t* nocapture nofree readonly, i32, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t* nocapture nofree readonly, i32, i64* nocapture nofree readonly)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t* nocapture nofree readonly, i32, i64* nocapture nofree readonly)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t* nocapture nofree readonly, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_alloc(i32, i64, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_free(i32, i8*, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_init_allocator(i32, i8*, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_destroy_allocator(i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_push_target_tripcount(i64, i64)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare i32 @__tgt_target_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare i32 @__tgt_target_nowait_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare i32 @__tgt_target_teams_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare i32 @__tgt_target_teams_nowait_mapper(i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i32, i32)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__tgt_register_requires(i64)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__tgt_target_data_begin_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__tgt_target_data_begin_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update_nowait_mapper(i64, i32, i8**, i8**, i64*, i64*, i8**)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare i64 @__tgt_mapper_num_components(i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nounwind<br>
+; OPTIMISTIC-NEXT: declare void @__tgt_push_mapper_component(i8*, i8*, i8*, i64, i64)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_allow_completion_event(%struct.ident_t* nocapture nofree readonly, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_reduction_get_th_data(i32, i8*, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_reduction_init(i32, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_reduction_modifier_init(i8*, i32, i32, i32, i8*)<br>
+<br>
+; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn<br>
+; OPTIMISTIC-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*)<br>
<br>
diff  --git a/llvm/test/Transforms/OpenMP/parallel_deletion.ll b/llvm/test/Transforms/OpenMP/parallel_deletion.ll<br>
index 4d2f8e7cbc5e..07976660546f 100644<br>
--- a/llvm/test/Transforms/OpenMP/parallel_deletion.ll<br>
+++ b/llvm/test/Transforms/OpenMP/parallel_deletion.ll<br>
@@ -393,7 +393,7 @@ entry:<br>
<br>
 define internal void @.omp.reduction.reduction_func(i8* %arg, i8* %arg1) {<br>
 ; CHECK-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func<br>
-; CHECK-SAME: (i8* nocapture nofree nonnull readonly align 8 dereferenceable(8) [[ARG:%.*]], i8* nocapture nofree nonnull readonly align 8 dereferenceable(8) [[ARG1:%.*]]) #10<br>
+; CHECK-SAME: (i8* nocapture nofree nonnull readonly align 8 dereferenceable(8) [[ARG:%.*]], i8* nocapture nofree nonnull readonly align 8 dereferenceable(8) [[ARG1:%.*]]) #{{[0-9]+}}<br>
 ; CHECK-NEXT:  entry:<br>
 ; CHECK-NEXT:    [[TMP:%.*]] = bitcast i8* [[ARG1]] to i32**<br>
 ; CHECK-NEXT:    [[TMP2:%.*]] = load i32*, i32** [[TMP]], align 8<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>