Index: clang/test/OpenMP/barrier_codegen.cpp =================================================================== --- clang/test/OpenMP/barrier_codegen.cpp +++ clang/test/OpenMP/barrier_codegen.cpp @@ -42,11 +42,11 @@ return tmain(argc) + tmain(argv[0][0]) + a; } -// CLANGCG: declare i32 @__kmpc_global_thread_num(ptr) +// CLANGCG: declare zeroext i32 @__kmpc_global_thread_num(ptr) // IRBUILDER: ; Function Attrs: nounwind -// IRBUILDER-NEXT: declare i32 @__kmpc_global_thread_num(ptr) # +// IRBUILDER-NEXT: declare zeroext i32 @__kmpc_global_thread_num(ptr) # // IRBUILDER_OPT: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -// IRBUILDER_OPT-NEXT: declare i32 @__kmpc_global_thread_num(ptr nocapture nofree readonly) # +// IRBUILDER_OPT-NEXT: declare zeroext i32 @__kmpc_global_thread_num(ptr nocapture nofree readonly) # // CHECK: define {{.+}} [[TMAIN_INT]]( // CHECK: [[GTID:%.+]] = call i32 @__kmpc_global_thread_num(ptr [[LOC]]) Index: llvm/include/llvm/Analysis/TargetLibraryInfo.h =================================================================== --- llvm/include/llvm/Analysis/TargetLibraryInfo.h +++ llvm/include/llvm/Analysis/TargetLibraryInfo.h @@ -395,6 +395,20 @@ return Attribute::None; } + // Helper to create an AttributeList for args (and ret val) which all have + // the same signedness. + AttributeList getAttrList(LLVMContext *C, ArrayRef ArgNos, + bool Signed, bool Ret = false) const { + AttributeList AL; + if (auto AK = getExtAttrForI32Param(Signed)) + for (auto ArgNo : ArgNos) + AL = AL.addParamAttribute(*C, ArgNo, AK); + if (Ret) + if (auto AK = getExtAttrForI32Return(Signed)) + AL = AL.addRetAttribute(*C, AK); + return AL; + } + /// Returns extension attribute kind to be used for i32 return values /// corresponding to C-level int or unsigned int. May be zeroext, signext, /// or none. Index: llvm/include/llvm/Frontend/OpenMP/OMPKinds.def =================================================================== --- llvm/include/llvm/Frontend/OpenMP/OMPKinds.def +++ llvm/include/llvm/Frontend/OpenMP/OMPKinds.def @@ -594,6 +594,9 @@ ? AttributeSet(EnumAttr(NoAlias)) : AttributeSet()) +__OMP_ATTRS_SET(ZExt, AttributeSet(EnumAttr(ZExt))) +__OMP_ATTRS_SET(SExt, AttributeSet(EnumAttr(SExt))) + #if 0 __OMP_ATTRS_SET(ReturnAlignedPtrAttrs, OptimisticAttributes @@ -613,313 +616,296 @@ OMP_RTL_ATTRS(OMPRTL_##Name, FnAttrSet, RetAttrSet, ArgAttrSets) __OMP_RTL_ATTRS(__kmpc_barrier, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_barrier_simple_spmd, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_barrier_simple_generic, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_warp_active_thread_mask, BarrierAttrs, AttributeSet(), ParamAttrs()) __OMP_RTL_ATTRS(__kmpc_syncwarp, BarrierAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(__kmpc_cancel, InaccessibleArgOnlyAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_cancel_barrier, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_cancel, InaccessibleArgOnlyAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt)) +__OMP_RTL_ATTRS(__kmpc_cancel_barrier, BarrierAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_flush, BarrierAttrs, AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterAttrs, AttributeSet(), +__OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterAttrs, ZExt, ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_get_hardware_thread_id_in_block, GetterAttrs, ZExt, + ParamAttrs()) __OMP_RTL_ATTRS(__kmpc_fork_call, ForkAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_omp_taskwait, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_omp_taskyield, InaccessibleArgOnlyAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_omp_taskwait, BarrierAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) +__OMP_RTL_ATTRS(__kmpc_omp_taskyield, InaccessibleArgOnlyAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, SExt)) __OMP_RTL_ATTRS(__kmpc_push_num_threads, InaccessibleArgOnlyAttrs, - AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, ZExt, SExt)) __OMP_RTL_ATTRS(__kmpc_push_proc_bind, InaccessibleArgOnlyAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_serialized_parallel, InaccessibleArgOnlyAttrs, - AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_end_serialized_parallel, InaccessibleArgOnlyAttrs, - AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_omp_reg_task_with_affinity, DefaultAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs, - AttributeSet(), ReadOnlyPtrAttrs)) - -__OMP_RTL_ATTRS(__kmpc_get_hardware_num_blocks, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(__kmpc_get_hardware_num_threads_in_block, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(__kmpc_get_warp_size, GetterAttrs, AttributeSet(), ParamAttrs()) - -__OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_num_threads, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_max_threads, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_in_parallel, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_dynamic, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_cancellation, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_nested, GetterAttrs, AttributeSet(), ParamAttrs()) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, SExt)) +__OMP_RTL_ATTRS(__kmpc_omp_reg_task_with_affinity, DefaultAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ReadOnlyPtrAttrs, + ZExt, ReadOnlyPtrAttrs)) + +__OMP_RTL_ATTRS(__kmpc_get_hardware_num_blocks, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(__kmpc_get_hardware_num_threads_in_block, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(__kmpc_get_warp_size, GetterAttrs, ZExt, ParamAttrs()) + +__OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_num_threads, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_max_threads, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_in_parallel, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_dynamic, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_cancellation, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_nested, GetterAttrs, ZExt, ParamAttrs()) __OMP_RTL_ATTRS( omp_get_schedule, GetterArgWriteAttrs, AttributeSet(), ParamAttrs(AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)), AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)))) -__OMP_RTL_ATTRS(omp_get_thread_limit, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_supported_active_levels, GetterAttrs, AttributeSet(), - ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_max_active_levels, GetterAttrs, AttributeSet(), - ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_level, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_ancestor_thread_num, GetterAttrs, AttributeSet(), - ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_team_size, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_active_level, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_in_final, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_proc_bind, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_num_places, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_num_procs, GetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_thread_limit, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_supported_active_levels, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_max_active_levels, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_level, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_ancestor_thread_num, GetterAttrs, ZExt, ParamAttrs(ZExt)) +__OMP_RTL_ATTRS(omp_get_team_size, GetterAttrs, ZExt, ParamAttrs(ZExt)) +__OMP_RTL_ATTRS(omp_get_active_level, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_in_final, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_proc_bind, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_num_places, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_num_procs, GetterAttrs, ZExt, ParamAttrs()) __OMP_RTL_ATTRS(omp_get_place_proc_ids, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(AttributeSet(), AttributeSet(EnumAttr(NoCapture), - EnumAttr(WriteOnly)))) -__OMP_RTL_ATTRS(omp_get_place_num, GetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_get_partition_num_places, GetterAttrs, AttributeSet(), - ParamAttrs()) + ParamAttrs(ZExt, AttributeSet(EnumAttr(NoCapture), + EnumAttr(WriteOnly)))) +__OMP_RTL_ATTRS(omp_get_place_num, GetterAttrs, ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(omp_get_partition_num_places, GetterAttrs, ZExt, ParamAttrs()) __OMP_RTL_ATTRS(omp_get_partition_place_nums, GetterAttrs, AttributeSet(), ParamAttrs()) __OMP_RTL_ATTRS(omp_get_wtime, GetterArgWriteAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_set_num_threads, SetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_set_dynamic, SetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_set_nested, SetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(omp_set_schedule, SetterAttrs, AttributeSet(), ParamAttrs()) +__OMP_RTL_ATTRS(omp_set_num_threads, SetterAttrs, AttributeSet(), + ParamAttrs(ZExt)) +__OMP_RTL_ATTRS(omp_set_dynamic, SetterAttrs, AttributeSet(), ParamAttrs(ZExt)) +__OMP_RTL_ATTRS(omp_set_nested, SetterAttrs, AttributeSet(), ParamAttrs(ZExt)) +__OMP_RTL_ATTRS(omp_set_schedule, SetterAttrs, AttributeSet(), + ParamAttrs(ZExt, ZExt)) __OMP_RTL_ATTRS(omp_set_max_active_levels, SetterAttrs, AttributeSet(), - ParamAttrs()) + ParamAttrs(ZExt)) -__OMP_RTL_ATTRS(__kmpc_master, InaccessibleArgOnlyAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_master, InaccessibleArgOnlyAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_end_master, InaccessibleArgOnlyAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_masked, InaccessibleArgOnlyAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) +__OMP_RTL_ATTRS(__kmpc_masked, InaccessibleArgOnlyAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_end_masked, InaccessibleArgOnlyAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_critical, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, AttributeSet())) __OMP_RTL_ATTRS(__kmpc_critical_with_hint, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, AttributeSet(), ZExt)) __OMP_RTL_ATTRS(__kmpc_end_critical, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, AttributeSet())) __OMP_RTL_ATTRS(__kmpc_begin, DefaultAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_end, DefaultAttrs, AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_reduce, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - AttributeSet(), ReadOnlyPtrAttrs, AttributeSet())) -__OMP_RTL_ATTRS(__kmpc_reduce_nowait, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - AttributeSet(), ReadOnlyPtrAttrs, AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_reduce, BarrierAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, AttributeSet(), + ReadOnlyPtrAttrs, AttributeSet())) +__OMP_RTL_ATTRS(__kmpc_reduce_nowait, BarrierAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, AttributeSet(), + ReadOnlyPtrAttrs, AttributeSet())) __OMP_RTL_ATTRS(__kmpc_end_reduce, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, AttributeSet())) __OMP_RTL_ATTRS(__kmpc_end_reduce_nowait, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, AttributeSet())) __OMP_RTL_ATTRS(__kmpc_ordered, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_end_ordered, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_for_static_init_4, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, - AttributeSet(), AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_for_static_init_4u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, - AttributeSet(), AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_for_static_init_8, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, AttributeSet(), AttributeSet())) __OMP_RTL_ATTRS(__kmpc_for_static_init_8u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, AttributeSet(), AttributeSet())) __OMP_RTL_ATTRS(__kmpc_for_static_fini, InaccessibleArgOnlyAttrs, - AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_distribute_static_init_4, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, - AttributeSet(), AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_distribute_static_init_4u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, - AttributeSet(), AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_distribute_static_init_8, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, AttributeSet(), AttributeSet())) __OMP_RTL_ATTRS(__kmpc_distribute_static_init_8u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, AttributeSet(), AttributeSet())) __OMP_RTL_ATTRS(__kmpc_distribute_static_fini, InaccessibleArgOnlyAttrs, - AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, ZExt, + ZExt, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, ZExt, + ZExt, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_dispatch_init_4, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ZExt, ZExt, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_dispatch_init_4u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ZExt, ZExt, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_dispatch_init_8, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_dispatch_init_8u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_4, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_8, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt)) +__OMP_RTL_ATTRS(__kmpc_dispatch_next_4, GetterArgWriteAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, GetterArgWriteAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_next_8, GetterArgWriteAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, GetterArgWriteAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_dispatch_fini_4, InaccessibleArgOnlyAttrs, - AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_dispatch_fini_4u, InaccessibleArgOnlyAttrs, - AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, InaccessibleArgOnlyAttrs, - AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, InaccessibleArgOnlyAttrs, - AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_team_static_init_4, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_team_static_init_4u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_team_static_init_8, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_team_static_init_8u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, - ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, - ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, + ArgPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, - ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8u, GetterArgWriteAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, - ArgPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ArgPtrAttrs, + ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_single, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_single, BarrierAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_end_single, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_omp_task_alloc, DefaultAttrs, ReturnPtrAttrs, - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - AttributeSet(), AttributeSet(), ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_omp_task, DefaultAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, AttributeSet(), + AttributeSet(), ReadOnlyPtrAttrs)) +__OMP_RTL_ATTRS(__kmpc_omp_task, DefaultAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, AttributeSet())) __OMP_RTL_ATTRS(__kmpc_end_taskgroup, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_taskgroup, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_omp_task_begin_if0, DefaultAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_omp_task_complete_if0, DefaultAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_omp_task_with_deps, DefaultAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - AttributeSet(), ReadOnlyPtrAttrs, AttributeSet(), - ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) +__OMP_RTL_ATTRS(__kmpc_omp_task_with_deps, DefaultAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, AttributeSet(), ZExt, + ReadOnlyPtrAttrs, ZExt, ReadOnlyPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_taskloop, DefaultAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - AttributeSet(), ArgPtrAttrs, ArgPtrAttrs, - AttributeSet(), AttributeSet(), AttributeSet(), - AttributeSet(), AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet(), SExt, + ArgPtrAttrs, ArgPtrAttrs, AttributeSet(), SExt, SExt)) __OMP_RTL_ATTRS(__kmpc_omp_target_task_alloc, DefaultAttrs, ReturnPtrAttrs, - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - AttributeSet(), AttributeSet(), ReadOnlyPtrAttrs, - AttributeSet())) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, AttributeSet(), + AttributeSet(), ReadOnlyPtrAttrs, AttributeSet())) __OMP_RTL_ATTRS(__kmpc_taskred_modifier_init, DefaultAttrs, ReturnPtrAttrs, - ParamAttrs(ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_taskred_init, DefaultAttrs, AttributeSet(), ParamAttrs()) + ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SExt)) +__OMP_RTL_ATTRS(__kmpc_taskred_init, DefaultAttrs, AttributeSet(), + ParamAttrs(SExt, SExt)) __OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_fini, BarrierAttrs, - AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) __OMP_RTL_ATTRS(__kmpc_task_reduction_get_th_data, DefaultAttrs, ReturnPtrAttrs, - ParamAttrs()) + ParamAttrs(ZExt)) __OMP_RTL_ATTRS(__kmpc_task_reduction_init, DefaultAttrs, ReturnPtrAttrs, - ParamAttrs()) + ParamAttrs(ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_init, DefaultAttrs, - ReturnPtrAttrs, ParamAttrs()) + ReturnPtrAttrs, ParamAttrs(AttributeSet(), ZExt, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_proxy_task_completed_ooo, DefaultAttrs, AttributeSet(), ParamAttrs()) __OMP_RTL_ATTRS(__kmpc_omp_wait_deps, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ReadOnlyPtrAttrs)) -__OMP_RTL_ATTRS(__kmpc_cancellationpoint, DefaultAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ReadOnlyPtrAttrs, ZExt)) +__OMP_RTL_ATTRS(__kmpc_cancellationpoint, DefaultAttrs, ZExt, + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_fork_teams, ForkAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ReadOnlyPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_push_num_teams, InaccessibleArgOnlyAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_copyprivate, DefaultAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), - ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, AttributeSet(), + ReadOnlyPtrAttrs, AttributeSet(), ZExt)) __OMP_RTL_ATTRS(__kmpc_threadprivate_cached, DefaultAttrs, ReturnPtrAttrs, - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_threadprivate_register, DefaultAttrs, AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs, ReadOnlyPtrAttrs, ReadOnlyPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_doacross_init, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ZExt)) __OMP_RTL_ATTRS(__kmpc_doacross_post, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ReadOnlyPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_doacross_wait, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt, ReadOnlyPtrAttrs)) __OMP_RTL_ATTRS(__kmpc_doacross_fini, BarrierAttrs, AttributeSet(), - ParamAttrs(ReadOnlyPtrAttrs)) + ParamAttrs(ReadOnlyPtrAttrs, ZExt)) __OMP_RTL_ATTRS(__kmpc_alloc_shared, AttributeSet( EnumAttr(NoUnwind), @@ -928,52 +914,99 @@ __OMP_RTL_ATTRS(__kmpc_free_shared, DeviceAllocAttrs, AttributeSet(), ParamAttrs(AttributeSet(EnumAttr(NoCapture), EnumAttr(AllocatedPointer)))) -__OMP_RTL_ATTRS(__kmpc_alloc, DefaultAttrs, ReturnPtrAttrs, ParamAttrs()) +__OMP_RTL_ATTRS(__kmpc_alloc, DefaultAttrs, ReturnPtrAttrs, ParamAttrs(SExt)) __OMP_RTL_ATTRS(__kmpc_aligned_alloc, DefaultAttrs, ReturnPtrAttrs, - ParamAttrs()) -__OMP_RTL_ATTRS(__kmpc_free, AllocAttrs, AttributeSet(), ParamAttrs()) + ParamAttrs(SExt)) +__OMP_RTL_ATTRS(__kmpc_free, AllocAttrs, AttributeSet(), ParamAttrs(SExt)) + +__OMP_RTL_ATTRS(__tgt_interop_init, AttributeSet(), AttributeSet(), + ParamAttrs(AttributeSet(), ZExt, AttributeSet(), AttributeSet(), + ZExt, ZExt, AttributeSet(), ZExt)) +__OMP_RTL_ATTRS(__tgt_interop_destroy, AttributeSet(), AttributeSet(), + ParamAttrs(AttributeSet(), ZExt, AttributeSet(), ZExt, ZExt, + AttributeSet(), ZExt)) +__OMP_RTL_ATTRS(__tgt_interop_use, AttributeSet(), AttributeSet(), + ParamAttrs(AttributeSet(), ZExt, AttributeSet(), ZExt, ZExt, + AttributeSet(), ZExt)) __OMP_RTL_ATTRS(__kmpc_init_allocator, DefaultAttrs, ReturnPtrAttrs, - ParamAttrs()) + ParamAttrs(SExt, AttributeSet(), SExt)) __OMP_RTL_ATTRS(__kmpc_destroy_allocator, AllocAttrs, AttributeSet(), - ParamAttrs()) + ParamAttrs(SExt)) __OMP_RTL_ATTRS(__kmpc_push_target_tripcount_mapper, SetterAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(__tgt_target_mapper, ForkAttrs, AttributeSet(), ParamAttrs()) -__OMP_RTL_ATTRS(__tgt_target_nowait_mapper, ForkAttrs, AttributeSet(), - ParamAttrs()) -__OMP_RTL_ATTRS(__tgt_target_teams_mapper, ForkAttrs, AttributeSet(), - ParamAttrs()) -__OMP_RTL_ATTRS(__tgt_target_teams_nowait_mapper, ForkAttrs, AttributeSet(), - ParamAttrs()) -__OMP_RTL_ATTRS(__tgt_target_kernel, ForkAttrs, AttributeSet(), - ParamAttrs()) -__OMP_RTL_ATTRS(__tgt_target_kernel_nowait, ForkAttrs, AttributeSet(), - ParamAttrs()) +__OMP_RTL_ATTRS(__tgt_target_mapper, ForkAttrs, ZExt, + ParamAttrs(AttributeSet(),AttributeSet(),AttributeSet(), ZExt)) +__OMP_RTL_ATTRS(__tgt_target_nowait_mapper, ForkAttrs, ZExt, + ParamAttrs(AttributeSet(), AttributeSet(), AttributeSet(), ZExt, + AttributeSet(), AttributeSet(), AttributeSet(), + AttributeSet(), AttributeSet(), AttributeSet(), + ZExt, AttributeSet(), ZExt)) +__OMP_RTL_ATTRS(__tgt_target_teams_mapper, ForkAttrs, ZExt, + ParamAttrs(AttributeSet(), AttributeSet(), AttributeSet(), ZExt, + AttributeSet(), AttributeSet(), AttributeSet(), + AttributeSet(), AttributeSet(), AttributeSet(), ZExt, + ZExt)) +__OMP_RTL_ATTRS(__tgt_target_teams_nowait_mapper, ForkAttrs, ZExt, + ParamAttrs(AttributeSet(), AttributeSet(), AttributeSet(), ZExt, + AttributeSet(), AttributeSet(), AttributeSet(), + AttributeSet(), AttributeSet(), AttributeSet(), + ZExt, ZExt, ZExt, AttributeSet(), ZExt)) +__OMP_RTL_ATTRS(__tgt_target_kernel, ForkAttrs, ZExt, + ParamAttrs(AttributeSet(), AttributeSet(), ZExt, ZExt)) +__OMP_RTL_ATTRS(__tgt_target_kernel_nowait, ForkAttrs, ZExt, + ParamAttrs(AttributeSet(), AttributeSet(), ZExt, ZExt, + AttributeSet(), AttributeSet(), ZExt, AttributeSet(), + ZExt)) __OMP_RTL_ATTRS(__tgt_register_requires, ForkAttrs, AttributeSet(), ParamAttrs()) __OMP_RTL_ATTRS(__tgt_target_data_begin_mapper, ForkAttrs, AttributeSet(), - ParamAttrs()) -__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait_mapper, ForkAttrs, - AttributeSet(), ParamAttrs()) + ParamAttrs(AttributeSet(), AttributeSet(), ZExt)) +__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait_mapper, ForkAttrs, AttributeSet(), + ParamAttrs(AttributeSet(), AttributeSet(), ZExt)) +__OMP_RTL_ATTRS(__tgt_target_data_begin_mapper_issue, AttributeSet(), + AttributeSet(), + ParamAttrs(AttributeSet(), AttributeSet(), ZExt)) __OMP_RTL_ATTRS(__tgt_target_data_end_mapper, ForkAttrs, AttributeSet(), - ParamAttrs()) -__OMP_RTL_ATTRS(__tgt_target_data_end_nowait_mapper, ForkAttrs, - AttributeSet(), ParamAttrs()) + ParamAttrs(AttributeSet(), AttributeSet(), ZExt)) +__OMP_RTL_ATTRS(__tgt_target_data_end_nowait_mapper, ForkAttrs, AttributeSet(), + ParamAttrs(AttributeSet(), AttributeSet(), ZExt)) __OMP_RTL_ATTRS(__tgt_target_data_update_mapper, ForkAttrs, AttributeSet(), - ParamAttrs()) -__OMP_RTL_ATTRS(__tgt_target_data_update_nowait_mapper, ForkAttrs, - AttributeSet(), ParamAttrs()) + ParamAttrs(AttributeSet(), AttributeSet(), ZExt)) +__OMP_RTL_ATTRS(__tgt_target_data_update_nowait_mapper, ForkAttrs, AttributeSet(), + ParamAttrs(AttributeSet(), AttributeSet(), ZExt)) __OMP_RTL_ATTRS(__tgt_mapper_num_components, ForkAttrs, AttributeSet(), ParamAttrs()) __OMP_RTL_ATTRS(__tgt_push_mapper_component, ForkAttrs, AttributeSet(), ParamAttrs()) __OMP_RTL_ATTRS(__kmpc_task_allow_completion_event, DefaultAttrs, - ReturnPtrAttrs, ParamAttrs(ReadOnlyPtrAttrs)) + ReturnPtrAttrs, ParamAttrs(ReadOnlyPtrAttrs, SExt)) +__OMP_RTL_ATTRS(__kmpc_target_init, AttributeSet(), ZExt, ParamAttrs()) __OMP_RTL_ATTRS(__kmpc_parallel_51, AlwaysInlineAttrs, AttributeSet(), - ParamAttrs()) + ParamAttrs(AttributeSet(), ZExt, ZExt, ZExt, ZExt)) +__OMP_RTL_ATTRS(__kmpc_serialized_parallel, InaccessibleArgOnlyAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, ZExt)) +__OMP_RTL_ATTRS(__kmpc_end_serialized_parallel, InaccessibleArgOnlyAttrs, + AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, ZExt)) +__OMP_RTL_ATTRS(__kmpc_shuffle_int32, AttributeSet(), ZExt, + ParamAttrs(ZExt, ZExt, ZExt)) +__OMP_RTL_ATTRS(__kmpc_nvptx_parallel_reduce_nowait_v2, AttributeSet(), ZExt, + ParamAttrs(AttributeSet(), ZExt, ZExt)) +__OMP_RTL_ATTRS(__kmpc_nvptx_end_reduce_nowait, AttributeSet(), AttributeSet(), + ParamAttrs(ZExt)) +__OMP_RTL_ATTRS(__kmpc_nvptx_teams_reduce_nowait_v2, AttributeSet(), ZExt, + ParamAttrs(AttributeSet(), ZExt, AttributeSet(), ZExt)) + +__OMP_RTL_ATTRS(__kmpc_shuffle_int64, AttributeSet(), AttributeSet(), + ParamAttrs(AttributeSet(), ZExt, ZExt)) + +__OMP_RTL_ATTRS(__kmpc_parallel_level, AttributeSet(), ZExt, ParamAttrs()) +__OMP_RTL_ATTRS(__kmpc_is_spmd_exec_mode, AttributeSet(), ZExt, ParamAttrs()) + +__OMP_RTL_ATTRS(__kmpc_is_generic_main_thread_id, AttributeSet(), ZExt, + ParamAttrs(ZExt)) #undef __OMP_RTL_ATTRS #undef OMP_RTL_ATTRS Index: llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp =================================================================== --- llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -712,7 +712,7 @@ private: friend struct FunctionStackPoisoner; - void initializeCallbacks(Module &M); + void initializeCallbacks(Module &M, const TargetLibraryInfo *TLI); bool LooksLikeCodeInBug11395(Instruction *I); bool GlobalIsLinkerInitialized(GlobalVariable *G); @@ -2484,7 +2484,7 @@ return true; } -void AddressSanitizer::initializeCallbacks(Module &M) { +void AddressSanitizer::initializeCallbacks(Module &M, const TargetLibraryInfo *TLI) { IRBuilder<> IRB(*C); // Create __asan_report* callbacks. // IsWrite, TypeSize and Exp are encoded in the function name. @@ -2496,18 +2496,24 @@ SmallVector Args2 = {IntptrTy, IntptrTy}; SmallVector Args1{1, IntptrTy}; + AttributeList AL2; + AttributeList AL1; if (Exp) { Type *ExpType = Type::getInt32Ty(*C); Args2.push_back(ExpType); Args1.push_back(ExpType); + if (auto AK = TLI->getExtAttrForI32Param(false)) { + AL2 = AL2.addParamAttribute(*C, 2, AK); + AL1 = AL1.addParamAttribute(*C, 1, AK); + } } AsanErrorCallbackSized[AccessIsWrite][Exp] = M.getOrInsertFunction( kAsanReportErrorTemplate + ExpStr + TypeStr + "_n" + EndingStr, - FunctionType::get(IRB.getVoidTy(), Args2, false)); + FunctionType::get(IRB.getVoidTy(), Args2, false), AL2); AsanMemoryAccessCallbackSized[AccessIsWrite][Exp] = M.getOrInsertFunction( ClMemoryAccessCallbackPrefix + ExpStr + TypeStr + "N" + EndingStr, - FunctionType::get(IRB.getVoidTy(), Args2, false)); + FunctionType::get(IRB.getVoidTy(), Args2, false), AL2); for (size_t AccessSizeIndex = 0; AccessSizeIndex < kNumberOfAccessSizes; AccessSizeIndex++) { @@ -2515,12 +2521,12 @@ AsanErrorCallback[AccessIsWrite][Exp][AccessSizeIndex] = M.getOrInsertFunction( kAsanReportErrorTemplate + ExpStr + Suffix + EndingStr, - FunctionType::get(IRB.getVoidTy(), Args1, false)); + FunctionType::get(IRB.getVoidTy(), Args1, false), AL1); AsanMemoryAccessCallback[AccessIsWrite][Exp][AccessSizeIndex] = M.getOrInsertFunction( ClMemoryAccessCallbackPrefix + ExpStr + Suffix + EndingStr, - FunctionType::get(IRB.getVoidTy(), Args1, false)); + FunctionType::get(IRB.getVoidTy(), Args1, false), AL1); } } } @@ -2536,6 +2542,7 @@ IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IntptrTy); AsanMemset = M.getOrInsertFunction(MemIntrinCallbackPrefix + "memset", + TLI->getAttrList(C, {1}, false), IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IRB.getInt32Ty(), IntptrTy); @@ -2551,9 +2558,11 @@ ArrayType::get(IRB.getInt8Ty(), 0)); AMDGPUAddressShared = M.getOrInsertFunction( - kAMDGPUAddressSharedName, IRB.getInt1Ty(), IRB.getInt8PtrTy()); + kAMDGPUAddressSharedName, TLI->getAttrList(C, {}, false, true/*Ret*/), + IRB.getInt1Ty(), IRB.getInt8PtrTy()); AMDGPUAddressPrivate = M.getOrInsertFunction( - kAMDGPUAddressPrivateName, IRB.getInt1Ty(), IRB.getInt8PtrTy()); + kAMDGPUAddressPrivateName, TLI->getAttrList(C, {}, false, true/*Ret*/), + IRB.getInt1Ty(), IRB.getInt8PtrTy()); } bool AddressSanitizer::maybeInsertAsanInitAtFunctionEntry(Function &F) { @@ -2662,7 +2671,7 @@ LLVM_DEBUG(dbgs() << "ASAN instrumenting:\n" << F << "\n"); - initializeCallbacks(*F.getParent()); + initializeCallbacks(*F.getParent(), TLI); FunctionStateRAII CleanupObj(this); Index: llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp =================================================================== --- llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp +++ llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp @@ -623,10 +623,11 @@ } bool GCOVProfiler::AddFlushBeforeForkAndExec() { + const TargetLibraryInfo *TLI = nullptr; SmallVector Forks; SmallVector Execs; for (auto &F : M->functions()) { - auto *TLI = &GetTLI(F); + TLI = TLI == nullptr ? &GetTLI(F) : TLI; for (auto &I : instructions(F)) { if (CallInst *CI = dyn_cast(&I)) { if (Function *Callee = CI->getCalledFunction()) { @@ -655,7 +656,8 @@ // We've a fork so just reset the counters in the child process FunctionType *FTy = FunctionType::get(Builder.getInt32Ty(), {}, false); - FunctionCallee GCOVFork = M->getOrInsertFunction("__gcov_fork", FTy); + FunctionCallee GCOVFork = M->getOrInsertFunction("__gcov_fork", FTy, + TLI->getAttrList(Ctx, {}, true, true/*Ret*/)); F->setCalledFunction(GCOVFork); // We split just after the fork to have a counter for the lines after @@ -1021,11 +1023,8 @@ Type::getInt32Ty(*Ctx), // uint32_t checksum }; FunctionType *FTy = FunctionType::get(Type::getVoidTy(*Ctx), Args, false); - AttributeList AL; - if (auto AK = TLI->getExtAttrForI32Param(false)) - AL = AL.addParamAttribute(*Ctx, 2, AK); - FunctionCallee Res = M->getOrInsertFunction("llvm_gcda_start_file", FTy, AL); - return Res; + return M->getOrInsertFunction("llvm_gcda_start_file", FTy, + TLI->getAttrList(Ctx, {1, 2}, false)); } FunctionCallee GCOVProfiler::getEmitFunctionFunc(const TargetLibraryInfo *TLI) { @@ -1035,13 +1034,8 @@ Type::getInt32Ty(*Ctx), // uint32_t cfg_checksum }; FunctionType *FTy = FunctionType::get(Type::getVoidTy(*Ctx), Args, false); - AttributeList AL; - if (auto AK = TLI->getExtAttrForI32Param(false)) { - AL = AL.addParamAttribute(*Ctx, 0, AK); - AL = AL.addParamAttribute(*Ctx, 1, AK); - AL = AL.addParamAttribute(*Ctx, 2, AK); - } - return M->getOrInsertFunction("llvm_gcda_emit_function", FTy); + return M->getOrInsertFunction("llvm_gcda_emit_function", FTy, + TLI->getAttrList(Ctx, {0, 1, 2}, false)); } FunctionCallee GCOVProfiler::getEmitArcsFunc(const TargetLibraryInfo *TLI) { @@ -1050,10 +1044,8 @@ Type::getInt64PtrTy(*Ctx), // uint64_t *counters }; FunctionType *FTy = FunctionType::get(Type::getVoidTy(*Ctx), Args, false); - AttributeList AL; - if (auto AK = TLI->getExtAttrForI32Param(false)) - AL = AL.addParamAttribute(*Ctx, 0, AK); - return M->getOrInsertFunction("llvm_gcda_emit_arcs", FTy, AL); + return M->getOrInsertFunction("llvm_gcda_emit_arcs", FTy, + TLI->getAttrList(Ctx, {0}, false)); } FunctionCallee GCOVProfiler::getSummaryInfoFunc() { Index: llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp =================================================================== --- llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp +++ llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp @@ -546,9 +546,9 @@ friend struct VarArgSystemZHelper; void initializeModule(Module &M); - void initializeCallbacks(Module &M); - void createKernelApi(Module &M); - void createUserspaceApi(Module &M); + void initializeCallbacks(Module &M, const TargetLibraryInfo &TLI); + void createKernelApi(Module &M, const TargetLibraryInfo &TLI); + void createUserspaceApi(Module &M, const TargetLibraryInfo &TLI); /// True if we're compiling the Linux kernel. bool CompileKernel; @@ -737,7 +737,7 @@ } /// Create KMSAN API callbacks. -void MemorySanitizer::createKernelApi(Module &M) { +void MemorySanitizer::createKernelApi(Module &M, const TargetLibraryInfo &TLI) { IRBuilder<> IRB(*C); // These will be initialized in insertKmsanPrologue(). @@ -749,8 +749,10 @@ VAArgOriginTLS = nullptr; VAArgOverflowSizeTLS = nullptr; - WarningFn = M.getOrInsertFunction("__msan_warning", IRB.getVoidTy(), - IRB.getInt32Ty()); + WarningFn = M.getOrInsertFunction("__msan_warning", + TLI.getAttrList(C, {0}, false), + IRB.getVoidTy(), IRB.getInt32Ty()); + // Requests the per-task context state (kmsan_context_state*) from the // runtime library. MsanContextStateTy = StructType::get( @@ -801,7 +803,7 @@ } /// Insert declarations for userspace-specific functions and globals. -void MemorySanitizer::createUserspaceApi(Module &M) { +void MemorySanitizer::createUserspaceApi(Module &M, const TargetLibraryInfo &TLI) { IRBuilder<> IRB(*C); // Create the callback. @@ -810,8 +812,9 @@ if (TrackOrigins) { StringRef WarningFnName = Recover ? "__msan_warning_with_origin" : "__msan_warning_with_origin_noreturn"; - WarningFn = - M.getOrInsertFunction(WarningFnName, IRB.getVoidTy(), IRB.getInt32Ty()); + WarningFn = M.getOrInsertFunction(WarningFnName, + TLI.getAttrList(C, {0}, false), + IRB.getVoidTy(), IRB.getInt32Ty()); } else { StringRef WarningFnName = Recover ? "__msan_warning" : "__msan_warning_noreturn"; @@ -848,25 +851,14 @@ AccessSizeIndex++) { unsigned AccessSize = 1 << AccessSizeIndex; std::string FunctionName = "__msan_maybe_warning_" + itostr(AccessSize); - SmallVector, 2> MaybeWarningFnAttrs; - MaybeWarningFnAttrs.push_back(std::make_pair( - AttributeList::FirstArgIndex, Attribute::get(*C, Attribute::ZExt))); - MaybeWarningFnAttrs.push_back(std::make_pair( - AttributeList::FirstArgIndex + 1, Attribute::get(*C, Attribute::ZExt))); MaybeWarningFn[AccessSizeIndex] = M.getOrInsertFunction( - FunctionName, AttributeList::get(*C, MaybeWarningFnAttrs), - IRB.getVoidTy(), IRB.getIntNTy(AccessSize * 8), IRB.getInt32Ty()); + FunctionName, TLI.getAttrList(C, {0, 1}, false), IRB.getVoidTy(), + IRB.getIntNTy(AccessSize * 8), IRB.getInt32Ty()); FunctionName = "__msan_maybe_store_origin_" + itostr(AccessSize); - SmallVector, 2> MaybeStoreOriginFnAttrs; - MaybeStoreOriginFnAttrs.push_back(std::make_pair( - AttributeList::FirstArgIndex, Attribute::get(*C, Attribute::ZExt))); - MaybeStoreOriginFnAttrs.push_back(std::make_pair( - AttributeList::FirstArgIndex + 2, Attribute::get(*C, Attribute::ZExt))); MaybeStoreOriginFn[AccessSizeIndex] = M.getOrInsertFunction( - FunctionName, AttributeList::get(*C, MaybeStoreOriginFnAttrs), - IRB.getVoidTy(), IRB.getIntNTy(AccessSize * 8), IRB.getInt8PtrTy(), - IRB.getInt32Ty()); + FunctionName, TLI.getAttrList(C, {0, 2}, false), IRB.getVoidTy(), + IRB.getIntNTy(AccessSize * 8), IRB.getInt8PtrTy(), IRB.getInt32Ty()); } MsanSetAllocaOriginWithDescriptionFn = M.getOrInsertFunction( @@ -880,7 +872,7 @@ } /// Insert extern declaration of runtime-provided functions and globals. -void MemorySanitizer::initializeCallbacks(Module &M) { +void MemorySanitizer::initializeCallbacks(Module &M, const TargetLibraryInfo &TLI) { // Only do this once. if (CallbacksInitialized) return; @@ -888,29 +880,30 @@ IRBuilder<> IRB(*C); // Initialize callbacks that are common for kernel and userspace // instrumentation. - MsanChainOriginFn = M.getOrInsertFunction("__msan_chain_origin", - IRB.getInt32Ty(), IRB.getInt32Ty()); - MsanSetOriginFn = - M.getOrInsertFunction("__msan_set_origin", IRB.getVoidTy(), - IRB.getInt8PtrTy(), IntptrTy, IRB.getInt32Ty()); + MsanChainOriginFn = M.getOrInsertFunction( + "__msan_chain_origin", TLI.getAttrList(C, {0}, false, true/*Ret*/), + IRB.getInt32Ty(), IRB.getInt32Ty()); + MsanSetOriginFn = M.getOrInsertFunction( + "__msan_set_origin", TLI.getAttrList(C, {2}, false), IRB.getVoidTy(), + IRB.getInt8PtrTy(), IntptrTy, IRB.getInt32Ty()); MemmoveFn = M.getOrInsertFunction("__msan_memmove", IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IntptrTy); MemcpyFn = M.getOrInsertFunction("__msan_memcpy", IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IntptrTy); - MemsetFn = - M.getOrInsertFunction("__msan_memset", IRB.getInt8PtrTy(), - IRB.getInt8PtrTy(), IRB.getInt32Ty(), IntptrTy); + MemsetFn = M.getOrInsertFunction( + "__msan_memset", TLI.getAttrList(C, {1}, false), IRB.getInt8PtrTy(), + IRB.getInt8PtrTy(), IRB.getInt32Ty(), IntptrTy); MsanInstrumentAsmStoreFn = M.getOrInsertFunction("__msan_instrument_asm_store", IRB.getVoidTy(), PointerType::get(IRB.getInt8Ty(), 0), IntptrTy); if (CompileKernel) { - createKernelApi(M); + createKernelApi(M, TLI); } else { - createUserspaceApi(M); + createUserspaceApi(M, TLI); } CallbacksInitialized = true; } @@ -1139,7 +1132,7 @@ // It's easier to remove unreachable blocks than deal with missing shadow. removeUnreachableBlocks(F); - MS.initializeCallbacks(*F.getParent()); + MS.initializeCallbacks(*F.getParent(), TLI); FnPrologueEnd = IRBuilder<>(F.getEntryBlock().getFirstNonPHI()) .CreateIntrinsic(Intrinsic::donothing, {}, {}); Index: llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp =================================================================== --- llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp +++ llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp @@ -132,7 +132,7 @@ unsigned Flags = 0; }; - void initialize(Module &M); + void initialize(Module &M, const TargetLibraryInfo &TLI); bool instrumentLoadOrStore(const InstructionInfo &II, const DataLayout &DL); bool instrumentAtomic(Instruction *I, const DataLayout &DL); bool instrumentMemIntrinsic(Instruction *I); @@ -195,13 +195,14 @@ insertModuleCtor(M); return PreservedAnalyses::none(); } -void ThreadSanitizer::initialize(Module &M) { +void ThreadSanitizer::initialize(Module &M, const TargetLibraryInfo &TLI) { const DataLayout &DL = M.getDataLayout(); - IntptrTy = DL.getIntPtrType(M.getContext()); + LLVMContext &Ctx = M.getContext(); + IntptrTy = DL.getIntPtrType(Ctx); - IRBuilder<> IRB(M.getContext()); + IRBuilder<> IRB(Ctx); AttributeList Attr; - Attr = Attr.addFnAttribute(M.getContext(), Attribute::NoUnwind); + Attr = Attr.addFnAttribute(Ctx, Attribute::NoUnwind); // Initialize the callbacks. TsanFuncEntry = M.getOrInsertFunction("__tsan_func_entry", Attr, IRB.getVoidTy(), IRB.getInt8PtrTy()); @@ -211,7 +212,7 @@ IRB.getVoidTy()); TsanIgnoreEnd = M.getOrInsertFunction("__tsan_ignore_thread_end", Attr, IRB.getVoidTy()); - IntegerType *OrdTy = IRB.getInt32Ty(); + IntegerType *OrdTy = IRB.getInt32Ty(); //NB Affects function prototypes. for (size_t i = 0; i < kNumberOfAccessSizes; ++i) { const unsigned ByteSize = 1U << i; const unsigned BitSize = ByteSize * 8; @@ -260,12 +261,16 @@ TsanUnalignedCompoundRW[i] = M.getOrInsertFunction( UnalignedCompoundRWName, Attr, IRB.getVoidTy(), IRB.getInt8PtrTy()); - Type *Ty = Type::getIntNTy(M.getContext(), BitSize); + Type *Ty = Type::getIntNTy(Ctx, BitSize); Type *PtrTy = Ty->getPointerTo(); SmallString<32> AtomicLoadName("__tsan_atomic" + BitSizeStr + "_load"); { AttributeList AL = Attr; - AL = AL.addParamAttribute(M.getContext(), 1, Attribute::ZExt); + if (auto AK = TLI.getExtAttrForI32Param(false)) + AL = AL.addParamAttribute(Ctx, 1, AK); + if (BitSize <= 32) + if (auto AK = TLI.getExtAttrForI32Return(false)) + AL = AL.addRetAttribute(Ctx, AK); TsanAtomicLoad[i] = M.getOrInsertFunction(AtomicLoadName, AL, Ty, PtrTy, OrdTy); } @@ -273,8 +278,11 @@ SmallString<32> AtomicStoreName("__tsan_atomic" + BitSizeStr + "_store"); { AttributeList AL = Attr; - AL = AL.addParamAttribute(M.getContext(), 1, Attribute::ZExt); - AL = AL.addParamAttribute(M.getContext(), 2, Attribute::ZExt); + if (auto AK = TLI.getExtAttrForI32Param(false)) { + if (BitSize <= 32) + AL = AL.addParamAttribute(Ctx, 1, AK); + AL = AL.addParamAttribute(Ctx, 2, AK); + } TsanAtomicStore[i] = M.getOrInsertFunction( AtomicStoreName, AL, IRB.getVoidTy(), PtrTy, Ty, OrdTy); } @@ -302,8 +310,14 @@ SmallString<32> RMWName("__tsan_atomic" + itostr(BitSize) + NamePart); { AttributeList AL = Attr; - AL = AL.addParamAttribute(M.getContext(), 1, Attribute::ZExt); - AL = AL.addParamAttribute(M.getContext(), 2, Attribute::ZExt); + if (BitSize <= 32) + if (auto AK = TLI.getExtAttrForI32Return(false)) + AL = AL.addRetAttribute(Ctx, AK); + if (auto AK = TLI.getExtAttrForI32Param(false)) { + if (BitSize <= 32) + AL = AL.addParamAttribute(Ctx, 1, AK); + AL = AL.addParamAttribute(Ctx, 2, AK); + } TsanAtomicRMW[Op][i] = M.getOrInsertFunction(RMWName, AL, Ty, PtrTy, Ty, OrdTy); } @@ -313,10 +327,17 @@ "_compare_exchange_val"); { AttributeList AL = Attr; - AL = AL.addParamAttribute(M.getContext(), 1, Attribute::ZExt); - AL = AL.addParamAttribute(M.getContext(), 2, Attribute::ZExt); - AL = AL.addParamAttribute(M.getContext(), 3, Attribute::ZExt); - AL = AL.addParamAttribute(M.getContext(), 4, Attribute::ZExt); + if (BitSize <= 32) + if (auto AK = TLI.getExtAttrForI32Return(false)) + AL = AL.addRetAttribute(Ctx, AK); + if (auto AK = TLI.getExtAttrForI32Param(false)) { + if (BitSize <= 32) { + AL = AL.addParamAttribute(Ctx, 1, AK); + AL = AL.addParamAttribute(Ctx, 2, AK); + } + AL = AL.addParamAttribute(Ctx, 3, AK); + AL = AL.addParamAttribute(Ctx, 4, AK); + } TsanAtomicCAS[i] = M.getOrInsertFunction(AtomicCASName, AL, Ty, PtrTy, Ty, Ty, OrdTy, OrdTy); } @@ -328,13 +349,15 @@ IRB.getVoidTy(), IRB.getInt8PtrTy()); { AttributeList AL = Attr; - AL = AL.addParamAttribute(M.getContext(), 0, Attribute::ZExt); + if (auto AK = TLI.getExtAttrForI32Param(false)) + AL = AL.addParamAttribute(Ctx, 0, AK); TsanAtomicThreadFence = M.getOrInsertFunction("__tsan_atomic_thread_fence", AL, IRB.getVoidTy(), OrdTy); } { AttributeList AL = Attr; - AL = AL.addParamAttribute(M.getContext(), 0, Attribute::ZExt); + if (auto AK = TLI.getExtAttrForI32Param(false)) + AL = AL.addParamAttribute(Ctx, 0, AK); TsanAtomicSignalFence = M.getOrInsertFunction("__tsan_atomic_signal_fence", AL, IRB.getVoidTy(), OrdTy); } @@ -345,9 +368,14 @@ MemcpyFn = M.getOrInsertFunction("__tsan_memcpy", Attr, IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IntptrTy); - MemsetFn = - M.getOrInsertFunction("__tsan_memset", Attr, IRB.getInt8PtrTy(), + { + AttributeList AL = Attr; + if (auto AK = TLI.getExtAttrForI32Param(false)) + AL = AL.addParamAttribute(Ctx, 1, AK); + MemsetFn = + M.getOrInsertFunction("__tsan_memset", AL, IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IRB.getInt32Ty(), IntptrTy); + } } static bool isVtableAccess(Instruction *I) { @@ -516,7 +544,7 @@ if (F.hasFnAttribute(Attribute::DisableSanitizerInstrumentation)) return false; - initialize(*F.getParent()); + initialize(*F.getParent(), TLI); SmallVector AllLoadsAndStores; SmallVector LocalLoadsAndStores; SmallVector AtomicAccesses; Index: llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg.ll =================================================================== --- llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg.ll +++ llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg.ll @@ -188,3 +188,12 @@ ; CHECK: store {{.*}} @__msan_va_arg_tls {{.*}} 24 ; CHECK: store {{.*}} @__msan_va_arg_tls {{.*}} 32 ; CHECK: store {{.*}} 0, {{.*}} @__msan_va_arg_overflow_size_tls + +; CHECK: declare void @__msan_maybe_warning_1(i8 zeroext, i32 zeroext) +; CHECK: declare void @__msan_maybe_store_origin_1(i8 zeroext, ptr, i32 zeroext) +; CHECK: declare void @__msan_maybe_warning_2(i16 zeroext, i32 zeroext) +; CHECK: declare void @__msan_maybe_store_origin_2(i16 zeroext, ptr, i32 zeroext) +; CHECK: declare void @__msan_maybe_warning_4(i32 zeroext, i32 zeroext) +; CHECK: declare void @__msan_maybe_store_origin_4(i32 zeroext, ptr, i32 zeroext) +; CHECK: declare void @__msan_maybe_warning_8(i64 zeroext, i32 zeroext) +; CHECK: declare void @__msan_maybe_store_origin_8(i64 zeroext, ptr, i32 zeroext) Index: llvm/test/Instrumentation/MemorySanitizer/msan_basic.ll =================================================================== --- llvm/test/Instrumentation/MemorySanitizer/msan_basic.ll +++ llvm/test/Instrumentation/MemorySanitizer/msan_basic.ll @@ -2,7 +2,6 @@ ; RUN: opt < %s --passes='module(msan)' -msan-check-access-address=0 -S | FileCheck -allow-deprecated-dag-overlap %s --check-prefixes=CHECK,NOORIGINS --implicit-check-not="call void @__msan_warning" ; RUN: opt < %s -msan-check-access-address=0 -msan-track-origins=1 -S -passes='module(msan)' 2>&1 | FileCheck -allow-deprecated-dag-overlap -check-prefixes=CHECK,ORIGINS %s --implicit-check-not="call void @__msan_warning" ; RUN: opt < %s -passes='module(msan)' -msan-check-access-address=0 -msan-track-origins=1 -S | FileCheck -allow-deprecated-dag-overlap -check-prefixes=CHECK,ORIGINS %s --implicit-check-not="call void @__msan_warning" -; RUN: opt < %s -passes='module(msan)' -msan-instrumentation-with-call-threshold=0 -msan-track-origins=1 -S | FileCheck -allow-deprecated-dag-overlap -check-prefixes=CHECK-CALLS %s --implicit-check-not="call void @__msan_warning" target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" @@ -1032,13 +1031,4 @@ ; CHECK-LABEL: define internal void @msan.module_ctor() #[[#ATTR:]] { ; CHECK: call void @__msan_init() -; CHECK-CALLS: declare void @__msan_maybe_warning_1(i8 zeroext, i32 zeroext) -; CHECK-CALLS: declare void @__msan_maybe_store_origin_1(i8 zeroext, ptr, i32 zeroext) -; CHECK-CALLS: declare void @__msan_maybe_warning_2(i16 zeroext, i32 zeroext) -; CHECK-CALLS: declare void @__msan_maybe_store_origin_2(i16 zeroext, ptr, i32 zeroext) -; CHECK-CALLS: declare void @__msan_maybe_warning_4(i32 zeroext, i32 zeroext) -; CHECK-CALLS: declare void @__msan_maybe_store_origin_4(i32 zeroext, ptr, i32 zeroext) -; CHECK-CALLS: declare void @__msan_maybe_warning_8(i64 zeroext, i32 zeroext) -; CHECK-CALLS: declare void @__msan_maybe_store_origin_8(i64 zeroext, ptr, i32 zeroext) - ; CHECK: attributes #[[#ATTR]] = { nounwind } Index: llvm/test/Transforms/OpenMP/add_attributes.ll =================================================================== --- llvm/test/Transforms/OpenMP/add_attributes.ll +++ llvm/test/Transforms/OpenMP/add_attributes.ll @@ -670,64 +670,64 @@ attributes #0 = { noinline cold } ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local void @omp_set_num_threads(i32) +; CHECK-NEXT: declare dso_local void @omp_set_num_threads(i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local void @omp_set_dynamic(i32) +; CHECK-NEXT: declare dso_local void @omp_set_dynamic(i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local void @omp_set_nested(i32) +; CHECK-NEXT: declare dso_local void @omp_set_nested(i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local void @omp_set_max_active_levels(i32) +; CHECK-NEXT: declare dso_local void @omp_set_max_active_levels(i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local void @omp_set_schedule(i32, i32) +; CHECK-NEXT: declare dso_local void @omp_set_schedule(i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_num_threads() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_num_threads() ; CHECK-NOT: Function Attrs ; CHECK: declare dso_local void @use_int(i32) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_dynamic() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_dynamic() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_nested() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_nested() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_max_threads() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_max_threads() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_thread_num() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_thread_num() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_num_procs() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_num_procs() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_in_parallel() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_in_parallel() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_in_final() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_in_final() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_active_level() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_active_level() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_level() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_level() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_ancestor_thread_num(i32) +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_ancestor_thread_num(i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_team_size(i32) +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_team_size(i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_thread_limit() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_thread_limit() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_max_active_levels() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_max_active_levels() ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare dso_local void @omp_get_schedule(i32* nocapture writeonly, i32* nocapture writeonly) @@ -799,7 +799,7 @@ ; CHECK: declare dso_local i32 @omp_get_team_num() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_cancellation() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_cancellation() ; CHECK-NOT: Function Attrs ; CHECK: declare dso_local i32 @omp_get_initial_device() @@ -829,22 +829,22 @@ ; CHECK: declare dso_local i32 @omp_get_device_num() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_proc_bind() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_proc_bind() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_num_places() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_num_places() ; CHECK-NOT: Function Attrs ; CHECK: declare dso_local i32 @omp_get_place_num_procs(i32) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local void @omp_get_place_proc_ids(i32, i32* nocapture writeonly) +; CHECK-NEXT: declare dso_local void @omp_get_place_proc_ids(i32 zeroext, i32* nocapture writeonly) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_place_num() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_place_num() ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_partition_num_places() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_partition_num_places() ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare dso_local void @omp_get_partition_place_nums(i32*) @@ -892,256 +892,256 @@ ; CHECK: declare dso_local i32 @omp_pause_resource_all(i32) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare dso_local i32 @omp_get_supported_active_levels() +; CHECK-NEXT: declare dso_local zeroext i32 @omp_get_supported_active_levels() ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_barrier(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_barrier(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_cancel(%struct.ident_t*, i32, i32) +; CHECK-NEXT: declare zeroext i32 @__kmpc_cancel(%struct.ident_t*, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare i32 @__kmpc_cancel_barrier(%struct.ident_t*, i32) +; CHECK-NEXT: declare zeroext i32 @__kmpc_cancel_barrier(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: convergent nounwind ; CHECK-NEXT: declare void @__kmpc_flush(%struct.ident_t*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t*) +; CHECK-NEXT: declare zeroext i32 @__kmpc_global_thread_num(%struct.ident_t*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_fork_call(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) +; CHECK-NEXT: declare void @__kmpc_fork_call(%struct.ident_t*, i32 zeroext, void (i32*, i32*, ...)*, ...) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare i32 @__kmpc_omp_taskwait(%struct.ident_t*, i32) +; CHECK-NEXT: declare zeroext i32 @__kmpc_omp_taskwait(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t*, i32, i32) +; CHECK-NEXT: declare zeroext i32 @__kmpc_omp_taskyield(%struct.ident_t*, i32 zeroext, i32 signext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t*, i32, i32) +; CHECK-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t*, i32 zeroext, i32 signext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t*, i32, i32) +; CHECK-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t*, i32 zeroext, i32 signext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_end_serialized_parallel(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_end_serialized_parallel(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_master(%struct.ident_t*, i32) +; CHECK-NEXT: declare zeroext i32 @__kmpc_master(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_end_master(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_end_master(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_critical(%struct.ident_t*, i32, [8 x i32]*) +; CHECK-NEXT: declare void @__kmpc_critical(%struct.ident_t*, i32 zeroext, [8 x i32]*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t*, i32, [8 x i32]*, i32) +; CHECK-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t*, i32 zeroext, [8 x i32]*, i32 zeroext) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_end_critical(%struct.ident_t*, i32, [8 x i32]*) +; CHECK-NEXT: declare void @__kmpc_end_critical(%struct.ident_t*, i32 zeroext, [8 x i32]*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_begin(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_begin(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_end(%struct.ident_t*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare i32 @__kmpc_reduce(%struct.ident_t*, i32, i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*) +; CHECK-NEXT: declare zeroext i32 @__kmpc_reduce(%struct.ident_t*, i32 zeroext, i32 zeroext, i64, i8*, void (i8*, i8*)*, [8 x i32]*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare i32 @__kmpc_reduce_nowait(%struct.ident_t*, i32, i32, i64, i8*, void (i8*, i8*)*, [8 x i32]*) +; CHECK-NEXT: declare zeroext i32 @__kmpc_reduce_nowait(%struct.ident_t*, i32 zeroext, i32 zeroext, i64, i8*, void (i8*, i8*)*, [8 x i32]*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t*, i32, [8 x i32]*) +; CHECK-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t*, i32 zeroext, [8 x i32]*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t*, i32, [8 x i32]*) +; CHECK-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t*, i32 zeroext, [8 x i32]*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_ordered(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_ordered(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) +; CHECK-NEXT: declare void @__kmpc_for_static_init_4(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i32*, i32*, i32*, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_for_static_init_4u(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) +; CHECK-NEXT: declare void @__kmpc_for_static_init_4u(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i32*, i32*, i32*, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_for_static_init_8(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64, i64) +; CHECK-NEXT: declare void @__kmpc_for_static_init_8(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i64*, i64*, i64*, i64, i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_for_static_init_8u(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64, i64) +; CHECK-NEXT: declare void @__kmpc_for_static_init_8u(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i64*, i64*, i64*, i64, i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_team_static_init_4(%struct.ident_t*, i32, i32*, i32*, i32*, i32*, i32, i32) +; CHECK-NEXT: declare void @__kmpc_team_static_init_4(%struct.ident_t*, i32 zeroext, i32*, i32*, i32*, i32*, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_team_static_init_4u(%struct.ident_t*, i32, i32*, i32*, i32*, i32*, i32, i32) +; CHECK-NEXT: declare void @__kmpc_team_static_init_4u(%struct.ident_t*, i32 zeroext, i32*, i32*, i32*, i32*, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_team_static_init_8(%struct.ident_t*, i32, i32*, i64*, i64*, i64*, i64, i64) +; CHECK-NEXT: declare void @__kmpc_team_static_init_8(%struct.ident_t*, i32 zeroext, i32*, i64*, i64*, i64*, i64, i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_team_static_init_8u(%struct.ident_t*, i32, i32*, i64*, i64*, i64*, i64, i64) +; CHECK-NEXT: declare void @__kmpc_team_static_init_8u(%struct.ident_t*, i32 zeroext, i32*, i64*, i64*, i64*, i64, i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32*, i32, i32) +; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_4(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i32*, i32*, i32*, i32*, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_4u(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32*, i32, i32) +; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_4u(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i32*, i32*, i32*, i32*, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_8(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64*, i64, i64) +; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_8(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i64*, i64*, i64*, i64*, i64, i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_8u(%struct.ident_t*, i32, i32, i32*, i64*, i64*, i64*, i64*, i64, i64) +; CHECK-NEXT: declare void @__kmpc_dist_for_static_init_8u(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i64*, i64*, i64*, i64*, i64, i64) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare i32 @__kmpc_single(%struct.ident_t*, i32) +; CHECK-NEXT: declare zeroext i32 @__kmpc_single(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_end_single(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_end_single(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_omp_task_alloc(%struct.ident_t*, i32, i32, i64, i64, i32 (i32, i8*)*) +; CHECK-NEXT: declare i8* @__kmpc_omp_task_alloc(%struct.ident_t*, i32 zeroext, i32 zeroext, i64, i64, i32 (i32, i8*)*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t*, i32, i8*) +; CHECK-NEXT: declare zeroext i32 @__kmpc_omp_task(%struct.ident_t*, i32 zeroext, i8*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t*, i32, i32, i32*, i32, i32, i32, i32) +; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_4u(%struct.ident_t*, i32, i32, i32*, i32, i32, i32, i32) +; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_4u(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_8(%struct.ident_t*, i32, i32, i32*, i64, i64, i64, i64) +; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_8(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i64, i64, i64, i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_8u(%struct.ident_t*, i32, i32, i32*, i64, i64, i64, i64) +; CHECK-NEXT: declare void @__kmpc_dist_dispatch_init_8u(%struct.ident_t*, i32 zeroext, i32 zeroext, i32*, i64, i64, i64, i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dispatch_init_4(%struct.ident_t*, i32, i32, i32, i32, i32, i32) +; CHECK-NEXT: declare void @__kmpc_dispatch_init_4(%struct.ident_t*, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dispatch_init_4u(%struct.ident_t*, i32, i32, i32, i32, i32, i32) +; CHECK-NEXT: declare void @__kmpc_dispatch_init_4u(%struct.ident_t*, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dispatch_init_8(%struct.ident_t*, i32, i32, i64, i64, i64, i64) +; CHECK-NEXT: declare void @__kmpc_dispatch_init_8(%struct.ident_t*, i32 zeroext, i32 zeroext, i64, i64, i64, i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dispatch_init_8u(%struct.ident_t*, i32, i32, i64, i64, i64, i64) +; CHECK-NEXT: declare void @__kmpc_dispatch_init_8u(%struct.ident_t*, i32 zeroext, i32 zeroext, i64, i64, i64, i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_4(%struct.ident_t*, i32, i32*, i32*, i32*, i32*) +; CHECK-NEXT: declare zeroext i32 @__kmpc_dispatch_next_4(%struct.ident_t*, i32 zeroext, i32*, i32*, i32*, i32*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_4u(%struct.ident_t*, i32, i32*, i32*, i32*, i32*) +; CHECK-NEXT: declare zeroext i32 @__kmpc_dispatch_next_4u(%struct.ident_t*, i32 zeroext, i32*, i32*, i32*, i32*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_8(%struct.ident_t*, i32, i32*, i64*, i64*, i64*) +; CHECK-NEXT: declare zeroext i32 @__kmpc_dispatch_next_8(%struct.ident_t*, i32 zeroext, i32*, i64*, i64*, i64*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_dispatch_next_8u(%struct.ident_t*, i32, i32*, i64*, i64*, i64*) +; CHECK-NEXT: declare zeroext i32 @__kmpc_dispatch_next_8u(%struct.ident_t*, i32 zeroext, i32*, i64*, i64*, i64*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t*, i32, i8*) +; CHECK-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t*, i32 zeroext, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_omp_task_complete_if0(%struct.ident_t*, i32, i8*) +; CHECK-NEXT: declare void @__kmpc_omp_task_complete_if0(%struct.ident_t*, i32 zeroext, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_omp_task_with_deps(%struct.ident_t*, i32, i8*, i32, i8*, i32, i8*) +; CHECK-NEXT: declare zeroext i32 @__kmpc_omp_task_with_deps(%struct.ident_t*, i32 zeroext, i8*, i32 zeroext, i8*, i32 zeroext, i8*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t*, i32, i32, i8*, i32, i8*) +; CHECK-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t*, i32 zeroext, i32 zeroext, i8*, i32 zeroext, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t*, i32, i32) +; CHECK-NEXT: declare zeroext i32 @__kmpc_cancellationpoint(%struct.ident_t*, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t*, i32, i32, i32) +; CHECK-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t*, i32 zeroext, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) +; CHECK-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t*, i32 zeroext, void (i32*, i32*, ...)*, ...) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_taskloop(%struct.ident_t*, i32, i8*, i32, i64*, i64*, i64, i32, i32, i64, i8*) +; CHECK-NEXT: declare void @__kmpc_taskloop(%struct.ident_t*, i32 signext, i8*, i32 signext, i64*, i64*, i64, i32 signext, i32 signext, i64, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_omp_target_task_alloc(%struct.ident_t*, i32, i32, i64, i64, i32 (i32, i8*)*, i64) +; CHECK-NEXT: declare i8* @__kmpc_omp_target_task_alloc(%struct.ident_t*, i32 zeroext, i32 zeroext, i64, i64, i32 (i32, i8*)*, i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_taskred_modifier_init(%struct.ident_t*, i32, i32, i32, i8*) +; CHECK-NEXT: declare i8* @__kmpc_taskred_modifier_init(%struct.ident_t*, i32 signext, i32 signext, i32 signext, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_taskred_init(i32, i32, i8*) +; CHECK-NEXT: declare i8* @__kmpc_taskred_init(i32 signext, i32 signext, i8*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_task_reduction_modifier_fini(%struct.ident_t*, i32, i32) +; CHECK-NEXT: declare void @__kmpc_task_reduction_modifier_fini(%struct.ident_t*, i32 signext, i32 signext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t*, i32, i64, i8*, void (i8*, i8*)*, i32) +; CHECK-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t*, i32 zeroext, i64, i8*, void (i8*, i8*)*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_threadprivate_cached(%struct.ident_t*, i32, i8*, i64, i8***) +; CHECK-NEXT: declare i8* @__kmpc_threadprivate_cached(%struct.ident_t*, i32 zeroext, i8*, i64, i8***) ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_threadprivate_register(%struct.ident_t*, i8*, i8* (i8*)*, i8* (i8*, i8*)*, void (i8*)*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t*, i32, i32, i8*) +; CHECK-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t*, i32 zeroext, i32 zeroext, i8*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t*, i32, i64*) +; CHECK-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t*, i32 zeroext, i64*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t*, i32, i64*) +; CHECK-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t*, i32 zeroext, i64*) ; CHECK: ; Function Attrs: convergent nounwind -; CHECK-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t*, i32) +; CHECK-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t*, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_alloc(i32, i64, i8*) +; CHECK-NEXT: declare i8* @__kmpc_alloc(i32 signext, i64, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_free(i32, i8*, i8*) +; CHECK-NEXT: declare void @__kmpc_free(i32 signext, i8*, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_init_allocator(i32, i8*, i32, i8*) +; CHECK-NEXT: declare i8* @__kmpc_init_allocator(i32 signext, i8*, i32 signext, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__kmpc_destroy_allocator(i32, i8*) +; CHECK-NEXT: declare void @__kmpc_destroy_allocator(i32 signext, i8*) ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_push_target_tripcount_mapper(%struct.ident_t*, i64, i64) @@ -1153,37 +1153,37 @@ ; CHECK-NEXT: declare void @__kmpc_syncwarp(i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__tgt_target_mapper(%struct.ident_t*, i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; CHECK-NEXT: declare zeroext i32 @__tgt_target_mapper(%struct.ident_t*, i64, i8*, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__tgt_target_nowait_mapper(%struct.ident_t*, i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i8**, i32, i8*, i32, i8*) +; CHECK-NEXT: declare zeroext i32 @__tgt_target_nowait_mapper(%struct.ident_t*, i64, i8*, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**, i32 zeroext, i8*, i32 zeroext, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__tgt_target_teams_mapper(%struct.ident_t*, i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i8**, i32, i32) +; CHECK-NEXT: declare zeroext i32 @__tgt_target_teams_mapper(%struct.ident_t*, i64, i8*, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**, i32 zeroext, i32 zeroext) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i32 @__tgt_target_teams_nowait_mapper(%struct.ident_t*, i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i8**, i32, i32, i32, i8*, i32, i8*) +; CHECK-NEXT: declare zeroext i32 @__tgt_target_teams_nowait_mapper(%struct.ident_t*, i64, i8*, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**, i32 zeroext, i32 zeroext, i32 zeroext, i8*, i32 zeroext, i8*) ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__tgt_register_requires(i64) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__tgt_target_data_begin_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; CHECK-NEXT: declare void @__tgt_target_data_begin_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__tgt_target_data_begin_nowait_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; CHECK-NEXT: declare void @__tgt_target_data_begin_nowait_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__tgt_target_data_end_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; CHECK-NEXT: declare void @__tgt_target_data_end_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__tgt_target_data_end_nowait_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; CHECK-NEXT: declare void @__tgt_target_data_end_nowait_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__tgt_target_data_update_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; CHECK-NEXT: declare void @__tgt_target_data_update_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare void @__tgt_target_data_update_nowait_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; CHECK-NEXT: declare void @__tgt_target_data_update_nowait_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare i64 @__tgt_mapper_num_components(i8*) @@ -1192,82 +1192,82 @@ ; CHECK-NEXT: declare void @__tgt_push_mapper_component(i8*, i8*, i8*, i64, i64, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_task_allow_completion_event(%struct.ident_t*, i32, i8*) +; CHECK-NEXT: declare i8* @__kmpc_task_allow_completion_event(%struct.ident_t*, i32 signext, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_task_reduction_get_th_data(i32, i8*, i8*) +; CHECK-NEXT: declare i8* @__kmpc_task_reduction_get_th_data(i32 zeroext, i8*, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_task_reduction_init(i32, i32, i8*) +; CHECK-NEXT: declare i8* @__kmpc_task_reduction_init(i32 zeroext, i32 zeroext, i8*) ; CHECK: ; Function Attrs: nounwind -; CHECK-NEXT: declare i8* @__kmpc_task_reduction_modifier_init(i8*, i32, i32, i32, i8*) +; CHECK-NEXT: declare i8* @__kmpc_task_reduction_modifier_init(i8*, i32 zeroext, i32 zeroext, i32 zeroext, i8*) ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*) ; CHECK: ; Function Attrs: cold convergent noinline nounwind -; CHECK-NEXT: declare void @__kmpc_barrier_simple_spmd(%struct.ident_t* nocapture nofree readonly, i32) +; CHECK-NEXT: declare void @__kmpc_barrier_simple_spmd(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: write) -; OPTIMISTIC-NEXT: declare dso_local void @omp_set_num_threads(i32) +; OPTIMISTIC-NEXT: declare dso_local void @omp_set_num_threads(i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: write) -; OPTIMISTIC-NEXT: declare dso_local void @omp_set_dynamic(i32) +; OPTIMISTIC-NEXT: declare dso_local void @omp_set_dynamic(i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: write) -; OPTIMISTIC-NEXT: declare dso_local void @omp_set_nested(i32) +; OPTIMISTIC-NEXT: declare dso_local void @omp_set_nested(i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: write) -; OPTIMISTIC-NEXT: declare dso_local void @omp_set_max_active_levels(i32) +; OPTIMISTIC-NEXT: declare dso_local void @omp_set_max_active_levels(i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: write) -; OPTIMISTIC-NEXT: declare dso_local void @omp_set_schedule(i32, i32) +; OPTIMISTIC-NEXT: declare dso_local void @omp_set_schedule(i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_num_threads() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_num_threads() ; OPTIMISTIC-NOT: Function Attrs ; OPTIMISTIC: declare dso_local void @use_int(i32) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_dynamic() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_dynamic() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_nested() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_nested() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_max_threads() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_max_threads() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_thread_num() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_thread_num() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_num_procs() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_num_procs() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_in_parallel() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_in_parallel() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_in_final() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_in_final() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_active_level() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_active_level() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_level() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_level() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_ancestor_thread_num(i32) +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_ancestor_thread_num(i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_team_size(i32) +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_team_size(i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_thread_limit() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_thread_limit() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_max_active_levels() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_max_active_levels() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) ; OPTIMISTIC-NEXT: declare dso_local void @omp_get_schedule(i32* nocapture writeonly, i32* nocapture writeonly) @@ -1339,7 +1339,7 @@ ; OPTIMISTIC: declare dso_local i32 @omp_get_team_num() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_cancellation() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_cancellation() ; OPTIMISTIC-NOT: Function Attrs ; OPTIMISTIC: declare dso_local i32 @omp_get_initial_device() @@ -1369,22 +1369,22 @@ ; OPTIMISTIC: declare dso_local i32 @omp_get_device_num() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_proc_bind() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_proc_bind() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_num_places() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_num_places() ; OPTIMISTIC-NOT: Function Attrs ; OPTIMISTIC: declare dso_local i32 @omp_get_place_num_procs(i32) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare dso_local void @omp_get_place_proc_ids(i32, i32* nocapture writeonly) +; OPTIMISTIC-NEXT: declare dso_local void @omp_get_place_proc_ids(i32 zeroext, i32* nocapture writeonly) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_place_num() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_place_num() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_partition_num_places() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_partition_num_places() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) ; OPTIMISTIC-NEXT: declare dso_local void @omp_get_partition_place_nums(i32*) @@ -1432,244 +1432,244 @@ ; OPTIMISTIC: declare dso_local i32 @omp_pause_resource_all(i32) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare dso_local i32 @omp_get_supported_active_levels() +; OPTIMISTIC-NEXT: declare dso_local zeroext i32 @omp_get_supported_active_levels() ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: read) -; OPTIMISTIC-NEXT: declare i32 @__kmpc_global_thread_num(%struct.ident_t* nocapture nofree readonly) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_global_thread_num(%struct.ident_t* nocapture nofree readonly) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_fork_call(%struct.ident_t* nocapture nofree readonly, i32, void (i32*, i32*, ...)* nocapture nofree readonly, ...) +; OPTIMISTIC-NEXT: declare void @__kmpc_fork_call(%struct.ident_t* nocapture nofree readonly, i32 zeroext, void (i32*, i32*, ...)* nocapture nofree readonly, ...) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_taskwait(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_omp_taskwait(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_taskyield(%struct.ident_t* nocapture nofree readonly, i32, i32) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_omp_taskyield(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 signext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t* nocapture nofree readonly, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_push_num_threads(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 signext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t* nocapture nofree readonly, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_push_proc_bind(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 signext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_serialized_parallel(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_end_serialized_parallel(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_end_serialized_parallel(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare i32 @__kmpc_master(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_master(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_end_master(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_end_master(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_critical(%struct.ident_t* nocapture nofree readonly, i32, [8 x i32]*) +; OPTIMISTIC-NEXT: declare void @__kmpc_critical(%struct.ident_t* nocapture nofree readonly, i32 zeroext, [8 x i32]*) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t* nocapture nofree readonly, i32, [8 x i32]*, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_critical_with_hint(%struct.ident_t* nocapture nofree readonly, i32 zeroext, [8 x i32]*, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_end_critical(%struct.ident_t* nocapture nofree readonly, i32, [8 x i32]*) +; OPTIMISTIC-NEXT: declare void @__kmpc_end_critical(%struct.ident_t* nocapture nofree readonly, i32 zeroext, [8 x i32]*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare void @__kmpc_begin(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_begin(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn ; OPTIMISTIC-NEXT: declare void @__kmpc_end(%struct.ident_t* nocapture nofree readonly) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare i32 @__kmpc_reduce(%struct.ident_t* nocapture nofree readonly, i32, i32, i64, i8* nocapture nofree readonly, void (i8*, i8*)*, [8 x i32]*) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_reduce(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i64, i8* nocapture nofree readonly, void (i8*, i8*)*, [8 x i32]*) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare i32 @__kmpc_reduce_nowait(%struct.ident_t* nocapture nofree readonly, i32, i32, i64, i8* nocapture nofree readonly, void (i8*, i8*)*, [8 x i32]*) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_reduce_nowait(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i64, i8* nocapture nofree readonly, void (i8*, i8*)*, [8 x i32]*) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t* nocapture nofree readonly, i32, [8 x i32]*) +; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce(%struct.ident_t* nocapture nofree readonly, i32 zeroext, [8 x i32]*) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t* nocapture nofree readonly, i32, [8 x i32]*) +; OPTIMISTIC-NEXT: declare void @__kmpc_end_reduce_nowait(%struct.ident_t* nocapture nofree readonly, i32 zeroext, [8 x i32]*) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_ordered(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_ordered(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_end_ordered(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_4(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_4(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_4u(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_4u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_8(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_8(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_8u(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_init_8u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_for_static_fini(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_4(%struct.ident_t* nocapture nofree readonly, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_4(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_4u(%struct.ident_t* nocapture nofree readonly, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_4u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_8(%struct.ident_t* nocapture nofree readonly, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_8(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_8u(%struct.ident_t* nocapture nofree readonly, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) +; OPTIMISTIC-NEXT: declare void @__kmpc_team_static_init_8u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_4(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_4(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_4u(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_4u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_8(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_8(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_8u(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_for_static_init_8u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64, i64) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare i32 @__kmpc_single(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_single(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_end_single(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_end_single(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_omp_task_alloc(%struct.ident_t* nocapture nofree readonly, i32, i32, i64, i64, i32 (i32, i8*)* nocapture nofree readonly) +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_omp_task_alloc(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i64, i64, i32 (i32, i8*)* nocapture nofree readonly) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_task(%struct.ident_t* nocapture nofree readonly, i32, i8*) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_omp_task(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i8*) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_end_taskgroup(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_taskgroup(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i32, i32, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_4(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_4u(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i32, i32, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_4u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_8(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i64, i64, i64, i64) +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_8(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i64, i64, i64, i64) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_8u(%struct.ident_t* nocapture nofree readonly, i32, i32, i32* nocapture nofree, i64, i64, i64, i64) +; OPTIMISTIC-NEXT: declare void @__kmpc_dist_dispatch_init_8u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32* nocapture nofree, i64, i64, i64, i64) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_4(%struct.ident_t* nocapture nofree readonly, i32, i32, i32, i32, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_4(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_4u(%struct.ident_t* nocapture nofree readonly, i32, i32, i32, i32, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_4u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_8(%struct.ident_t* nocapture nofree readonly, i32, i32, i64, i64, i64, i64) +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_8(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i64, i64, i64, i64) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_8u(%struct.ident_t* nocapture nofree readonly, i32, i32, i64, i64, i64, i64) +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_init_8u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i64, i64, i64, i64) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_4(%struct.ident_t* nocapture nofree readonly, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_dispatch_next_4(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_4u(%struct.ident_t* nocapture nofree readonly, i32, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_dispatch_next_4u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree, i32* nocapture nofree) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_8(%struct.ident_t* nocapture nofree readonly, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_dispatch_next_8(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare i32 @__kmpc_dispatch_next_8u(%struct.ident_t* nocapture nofree readonly, i32, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_dispatch_next_8u(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree, i64* nocapture nofree) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_4u(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_dispatch_fini_8u(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t* nocapture nofree readonly, i32, i8*) +; OPTIMISTIC-NEXT: declare void @__kmpc_omp_task_begin_if0(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare void @__kmpc_omp_task_complete_if0(%struct.ident_t* nocapture nofree readonly, i32, i8*) +; OPTIMISTIC-NEXT: declare void @__kmpc_omp_task_complete_if0(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare i32 @__kmpc_omp_task_with_deps(%struct.ident_t* nocapture nofree readonly, i32, i8*, i32, i8* nocapture nofree readonly, i32, i8* nocapture nofree readonly) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_omp_task_with_deps(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i8*, i32 zeroext, i8* nocapture nofree readonly, i32 zeroext, i8* nocapture nofree readonly) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t* nocapture nofree readonly, i32, i32, i8* nocapture nofree readonly, i32, i8*) +; OPTIMISTIC-NEXT: declare void @__kmpc_omp_wait_deps(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i8* nocapture nofree readonly, i32 zeroext, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare i32 @__kmpc_cancellationpoint(%struct.ident_t* nocapture nofree readonly, i32, i32) +; OPTIMISTIC-NEXT: declare zeroext i32 @__kmpc_cancellationpoint(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) -; OPTIMISTIC-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t* nocapture nofree readonly, i32, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_push_num_teams(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t* nocapture nofree readonly, i32, void (i32*, i32*, ...)* nocapture nofree readonly, ...) +; OPTIMISTIC-NEXT: declare void @__kmpc_fork_teams(%struct.ident_t* nocapture nofree readonly, i32 zeroext, void (i32*, i32*, ...)* nocapture nofree readonly, ...) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare void @__kmpc_taskloop(%struct.ident_t* nocapture nofree readonly, i32, i8*, i32, i64* nocapture nofree, i64* nocapture nofree, i64, i32, i32, i64, i8*) +; OPTIMISTIC-NEXT: declare void @__kmpc_taskloop(%struct.ident_t* nocapture nofree readonly, i32 signext, i8*, i32 signext, i64* nocapture nofree, i64* nocapture nofree, i64, i32 signext, i32 signext, i64, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_omp_target_task_alloc(%struct.ident_t* nocapture nofree readonly, i32, i32, i64, i64, i32 (i32, i8*)* nocapture nofree readonly, i64) +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_omp_target_task_alloc(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i64, i64, i32 (i32, i8*)* nocapture nofree readonly, i64) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_taskred_modifier_init(%struct.ident_t* nocapture nofree readonly, i32, i32, i32, i8*) +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_taskred_modifier_init(%struct.ident_t* nocapture nofree readonly, i32 signext, i32 signext, i32 signext, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare i8* @__kmpc_taskred_init(i32, i32, i8*) +; OPTIMISTIC-NEXT: declare i8* @__kmpc_taskred_init(i32 signext, i32 signext, i8*) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_task_reduction_modifier_fini(%struct.ident_t* nocapture nofree readonly, i32, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_task_reduction_modifier_fini(%struct.ident_t* nocapture nofree readonly, i32 signext, i32 signext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t* nocapture nofree readonly, i32, i64, i8* nocapture nofree readonly, void (i8*, i8*)*, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_copyprivate(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i64, i8* nocapture nofree readonly, void (i8*, i8*)*, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_threadprivate_cached(%struct.ident_t* nocapture nofree readonly, i32, i8*, i64, i8***) +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_threadprivate_cached(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i8*, i64, i8***) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn ; OPTIMISTIC-NEXT: declare void @__kmpc_threadprivate_register(%struct.ident_t* nocapture nofree readonly, i8*, i8* (i8*)* nocapture nofree readonly, i8* (i8*, i8*)* nocapture nofree readonly, void (i8*)* nocapture nofree readonly) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t* nocapture nofree readonly, i32, i32, i8*) +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_init(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i32 zeroext, i8*) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t* nocapture nofree readonly, i32, i64* nocapture nofree readonly) +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_wait(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i64* nocapture nofree readonly) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t* nocapture nofree readonly, i32, i64* nocapture nofree readonly) +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_post(%struct.ident_t* nocapture nofree readonly, i32 zeroext, i64* nocapture nofree readonly) ; OPTIMISTIC: ; Function Attrs: convergent nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_doacross_fini(%struct.ident_t* nocapture nofree readonly, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_alloc(i32, i64, i8*) +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_alloc(i32 signext, i64, i8*) ; OPTIMISTIC: ; Function Attrs: nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare void @__kmpc_free(i32, i8*, i8*) +; OPTIMISTIC-NEXT: declare void @__kmpc_free(i32 signext, i8*, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_init_allocator(i32, i8*, i32, i8*) +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_init_allocator(i32 signext, i8*, i32 signext, i8*) ; OPTIMISTIC: ; Function Attrs: nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare void @__kmpc_destroy_allocator(i32, i8*) +; OPTIMISTIC-NEXT: declare void @__kmpc_destroy_allocator(i32 signext, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn memory(inaccessiblemem: write) ; OPTIMISTIC-NEXT: declare void @__kmpc_push_target_tripcount_mapper(%struct.ident_t*, i64, i64) @@ -1681,37 +1681,37 @@ ; OPTIMISTIC-NEXT: declare void @__kmpc_syncwarp(i64) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare i32 @__tgt_target_mapper(%struct.ident_t*, i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; OPTIMISTIC-NEXT: declare zeroext i32 @__tgt_target_mapper(%struct.ident_t*, i64, i8*, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare i32 @__tgt_target_nowait_mapper(%struct.ident_t*, i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i8**, i32, i8*, i32, i8*) +; OPTIMISTIC-NEXT: declare zeroext i32 @__tgt_target_nowait_mapper(%struct.ident_t*, i64, i8*, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**, i32 zeroext, i8*, i32 zeroext, i8*) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare i32 @__tgt_target_teams_mapper(%struct.ident_t*, i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i8**, i32, i32) +; OPTIMISTIC-NEXT: declare zeroext i32 @__tgt_target_teams_mapper(%struct.ident_t*, i64, i8*, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**, i32 zeroext, i32 zeroext) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare i32 @__tgt_target_teams_nowait_mapper(%struct.ident_t*, i64, i8*, i32, i8**, i8**, i64*, i64*, i8**, i8**, i32, i32, i32, i8*, i32, i8*) +; OPTIMISTIC-NEXT: declare zeroext i32 @__tgt_target_teams_nowait_mapper(%struct.ident_t*, i64, i8*, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**, i32 zeroext, i32 zeroext, i32 zeroext, i8*, i32 zeroext, i8*) ; OPTIMISTIC: ; Function Attrs: nounwind ; OPTIMISTIC-NEXT: declare void @__tgt_register_requires(i64) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare void @__tgt_target_data_begin_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_begin_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare void @__tgt_target_data_begin_nowait_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_begin_nowait_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end_nowait_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_end_nowait_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; OPTIMISTIC: ; Function Attrs: nounwind -; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update_nowait_mapper(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**) +; OPTIMISTIC-NEXT: declare void @__tgt_target_data_update_nowait_mapper(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**) ; OPTIMISTIC: ; Function Attrs: nounwind ; OPTIMISTIC-NEXT: declare i64 @__tgt_mapper_num_components(i8*) @@ -1720,22 +1720,22 @@ ; OPTIMISTIC-NEXT: declare void @__tgt_push_mapper_component(i8*, i8*, i8*, i64, i64, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_allow_completion_event(%struct.ident_t* nocapture nofree readonly, i32, i8*) +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_allow_completion_event(%struct.ident_t* nocapture nofree readonly, i32 signext, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_reduction_get_th_data(i32, i8*, i8*) +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_reduction_get_th_data(i32 zeroext, i8*, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_reduction_init(i32, i32, i8*) +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_reduction_init(i32 zeroext, i32 zeroext, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn -; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_reduction_modifier_init(i8*, i32, i32, i32, i8*) +; OPTIMISTIC-NEXT: declare noalias i8* @__kmpc_task_reduction_modifier_init(i8*, i32 zeroext, i32 zeroext, i32 zeroext, i8*) ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn ; OPTIMISTIC-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*) ; OPTIMISTIC: ; Function Attrs: cold convergent noinline nounwind -; OPTIMISTIC-NEXT: declare void @__kmpc_barrier_simple_spmd(%struct.ident_t* nocapture nofree readonly, i32) +; OPTIMISTIC-NEXT: declare void @__kmpc_barrier_simple_spmd(%struct.ident_t* nocapture nofree readonly, i32 zeroext) !llvm.module.flags = !{!0} Index: llvm/test/Transforms/OpenMP/hide_mem_transfer_latency.ll =================================================================== --- llvm/test/Transforms/OpenMP/hide_mem_transfer_latency.ll +++ llvm/test/Transforms/OpenMP/hide_mem_transfer_latency.ll @@ -520,7 +520,7 @@ declare dso_local i32 @rand(...) -; CHECK: declare void @__tgt_target_data_begin_mapper_issue(%struct.ident_t*, i64, i32, i8**, i8**, i64*, i64*, i8**, i8**, %struct.__tgt_async_info*) +; CHECK: declare void @__tgt_target_data_begin_mapper_issue(%struct.ident_t*, i64, i32 zeroext, i8**, i8**, i64*, i64*, i8**, i8**, %struct.__tgt_async_info*) ; CHECK: declare void @__tgt_target_data_begin_mapper_wait(i64, %struct.__tgt_async_info*) !llvm.module.flags = !{!0} Index: llvm/test/Transforms/OpenMP/parallel_level_fold.ll =================================================================== --- llvm/test/Transforms/OpenMP/parallel_level_fold.ll +++ llvm/test/Transforms/OpenMP/parallel_level_fold.ll @@ -108,7 +108,7 @@ define internal void @__kmpc_parallel_51(%struct.ident_t*, i32, i32, i32, i32, i8*, i8*, i8**, i64) { ; CHECK-LABEL: define {{[^@]+}}@__kmpc_parallel_51 -; CHECK-SAME: (%struct.ident_t* [[TMP0:%.*]], i32 [[TMP1:%.*]], i32 [[TMP2:%.*]], i32 [[TMP3:%.*]], i32 [[TMP4:%.*]], i8* [[TMP5:%.*]], i8* [[TMP6:%.*]], i8** [[TMP7:%.*]], i64 [[TMP8:%.*]]) #[[ATTR0:[0-9]+]] { +; CHECK-SAME: (%struct.ident_t* [[TMP0:%.*]], i32 zeroext [[TMP1:%.*]], i32 zeroext [[TMP2:%.*]], i32 zeroext [[TMP3:%.*]], i32 zeroext [[TMP4:%.*]], i8* [[TMP5:%.*]], i8* [[TMP6:%.*]], i8** [[TMP7:%.*]], i64 [[TMP8:%.*]]) #[[ATTR0:[0-9]+]] { ; CHECK-NEXT: call void @parallel_helper() ; CHECK-NEXT: ret void ;