================ @@ -6174,6 +6174,19 @@ void CodeGenModule::EmitGlobalFunctionDefinition(GlobalDecl GD, CodeGenFunction(*this).GenerateCode(GD, Fn, FI); setNonAliasAttributes(GD, Fn); + + bool ShouldAddOptNone = !CodeGenOpts.DisableO0ImplyOptNone && + (CodeGenOpts.OptimizationLevel == 0) && + !D->hasAttr<MinSizeAttr>(); + + if (D->hasAttr<OpenCLKernelAttr>()) + if (GD.getKernelReferenceKind() == KernelReferenceKind::Stub && + !D->hasAttr<NoInlineAttr>() && + !Fn->hasFnAttribute(llvm::Attribute::NoInline) && + !D->hasAttr<OptimizeNoneAttr>() && + !Fn->hasFnAttribute(llvm::Attribute::OptimizeNone) && !ShouldAddOptNone) + Fn->addFnAttr(llvm::Attribute::AlwaysInline); ---------------- lalaniket8 wrote:
So far only one test https://github.com/llvm/llvm-project/blob/main/clang/test/CodeGenOpenCL/opencl-kernel-call.cl#L69 adds noinline to kernel function. This test was added as part of the orignal PR that introduced OpenCL kernel to kernel call feature. https://github.com/llvm/llvm-project/pull/137769 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits