diff --git a/llvm/lib/Transforms/IPO/OpenMPOpt.cpp b/llvm/lib/Transforms/IPO/OpenMPOpt.cpp --- a/llvm/lib/Transforms/IPO/OpenMPOpt.cpp +++ b/llvm/lib/Transforms/IPO/OpenMPOpt.cpp @@ -415,6 +415,7 @@ RTLFunctions.insert(F); \ if (declMatchesRTFTypes(F, OMPBuilder._ReturnType, ArgsTypes)) { \ RuntimeFunctionIDMap[F] = _Enum; \ + F->removeFnAttr(Attribute::NoInline); \ auto &RFI = RFIs[_Enum]; \ RFI.Kind = _Enum; \ RFI.Name = _Name; \ diff --git a/llvm/test/Transforms/OpenMP/add_attributes.ll b/llvm/test/Transforms/OpenMP/add_attributes.ll --- a/llvm/test/Transforms/OpenMP/add_attributes.ll +++ b/llvm/test/Transforms/OpenMP/add_attributes.ll @@ -666,10 +666,10 @@ declare void @__kmpc_proxy_task_completed_ooo(i8*) -; Function Attrs: noinline +; Function Attrs: noinline cold declare void @__kmpc_barrier_simple_spmd(%struct.ident_t* nocapture nofree readonly, i32) #0 -attributes #0 = { noinline } +attributes #0 = { noinline cold } ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare dso_local void @omp_set_num_threads(i32) @@ -1208,7 +1208,7 @@ ; CHECK: ; Function Attrs: nounwind ; CHECK-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*) -; CHECK: ; Function Attrs: convergent noinline nounwind +; CHECK: ; Function Attrs: cold convergent nounwind ; CHECK-NEXT: declare void @__kmpc_barrier_simple_spmd(%struct.ident_t* nocapture nofree readonly, i32) ; OPTIMISTIC: ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn writeonly @@ -1736,7 +1736,7 @@ ; OPTIMISTIC: ; Function Attrs: nofree nosync nounwind willreturn ; OPTIMISTIC-NEXT: declare void @__kmpc_proxy_task_completed_ooo(i8*) -; OPTIMISTIC: ; Function Attrs: convergent noinline nounwind +; OPTIMISTIC: ; Function Attrs: cold convergent nounwind ; OPTIMISTIC-NEXT: declare void @__kmpc_barrier_simple_spmd(%struct.ident_t* nocapture nofree readonly, i32) !llvm.module.flags = !{!0}