================
@@ -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

Reply via email to