llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: None (rashmika0220)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/167135.diff


3 Files Affected:

- (modified) clang/include/clang/CIR/Dialect/IR/CIROps.td (+2-1) 
- (modified) clang/lib/CIR/CodeGen/CIRGenModule.cpp (+17) 
- (modified) clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp (+5-5) 


``````````diff
diff --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td 
b/clang/include/clang/CIR/Dialect/IR/CIROps.td
index 6f9a69e697cc3..707b5ff88a356 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIROps.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td
@@ -2521,7 +2521,8 @@ def CIR_FuncOp : CIR_Op<"func", [
                        OptionalAttr<DictArrayAttr>:$res_attrs,
                        OptionalAttr<FlatSymbolRefAttr>:$aliasee,
                        CIR_OptionalPriorityAttr:$global_ctor_priority,
-                       CIR_OptionalPriorityAttr:$global_dtor_priority);
+                       CIR_OptionalPriorityAttr:$global_dtor_priority,
+                       OptionalAttr<CIR_InlineAttr>:$inlining);
 
   let regions = (region AnyRegion:$body);
 
diff --git a/clang/lib/CIR/CodeGen/CIRGenModule.cpp 
b/clang/lib/CIR/CodeGen/CIRGenModule.cpp
index 9f9b2db4771df..c4c260e9e5fe8 100644
--- a/clang/lib/CIR/CodeGen/CIRGenModule.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenModule.cpp
@@ -1928,6 +1928,23 @@ void CIRGenModule::setFunctionAttributes(GlobalDecl 
globalDecl,
                       "available body!");
     assert(!cir::MissingFeatures::attributeNoBuiltin());
   }
+
+  // Handle inline-related attributes (noinline, always_inline, inline hint)
+  // Check for explicit noinline attribute - this takes highest precedence
+  if (fd->hasAttr<NoInlineAttr>()) {
+    func.setInliningAttr(cir::InlineAttr::get(
+        builder.getContext(), cir::InlineKind::NoInline));
+  }
+  // Check for explicit always_inline attribute
+  else if (fd->hasAttr<AlwaysInlineAttr>()) {
+    func.setInliningAttr(cir::InlineAttr::get(
+        builder.getContext(), cir::InlineKind::AlwaysInline));
+  }
+  // Check for inline keyword (provides inline hint)
+  else if (fd->isInlined()) {
+    func.setInliningAttr(cir::InlineAttr::get(
+        builder.getContext(), cir::InlineKind::InlineHint));
+  }
 }
 
 void CIRGenModule::setCIRFunctionAttributesForDefinition(
diff --git a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp 
b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
index ba967a43ce59a..84af42258e1ed 100644
--- a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+++ b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
@@ -1800,7 +1800,7 @@ void CIRToLLVMFuncOpLowering::lowerFuncAttributes(
         attr.getName() == getLinkageAttrNameString() ||
         attr.getName() == func.getGlobalVisibilityAttrName() ||
         attr.getName() == func.getDsoLocalAttrName() ||
-        attr.getName() == func.getInlineKindAttrName() ||
+        attr.getName() == func.getInliningAttrName() ||
         (filterArgAndResAttrs &&
          (attr.getName() == func.getArgAttrsAttrName() ||
           attr.getName() == func.getResAttrsAttrName())))
@@ -1885,10 +1885,10 @@ mlir::LogicalResult 
CIRToLLVMFuncOpLowering::matchAndRewrite(
 
   assert(!cir::MissingFeatures::opFuncMultipleReturnVals());
 
-  if (auto inlineKind = op.getInlineKind()) {
-    fn.setNoInline(inlineKind == cir::InlineKind::NoInline);
-    fn.setInlineHint(inlineKind == cir::InlineKind::InlineHint);
-    fn.setAlwaysInline(inlineKind == cir::InlineKind::AlwaysInline);
+  if (auto inlining = op.getInlining()) {
+    fn.setNoInline(*inlining == cir::InlineKind::NoInline);
+    fn.setInlineHint(*inlining == cir::InlineKind::InlineHint);
+    fn.setAlwaysInline(*inlining == cir::InlineKind::AlwaysInline);
   }
 
   fn.setVisibility_Attr(mlir::LLVM::VisibilityAttr::get(

``````````

</details>


https://github.com/llvm/llvm-project/pull/167135
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to