Skip to content

Commit 65fc3a0

Browse files
committed
Use setInlineHint
1 parent 9e7fa77 commit 65fc3a0

File tree

2 files changed

+3
-48
lines changed

2 files changed

+3
-48
lines changed

clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1624,10 +1624,10 @@ mlir::LogicalResult CIRToLLVMFuncOpLowering::matchAndRewrite(
16241624

16251625
assert(!cir::MissingFeatures::opFuncMultipleReturnVals());
16261626

1627-
// Add inline_kind attribute with "cir." prefix so amendOperation handles it
16281627
if (auto inlineKind = op.getInlineKind()) {
1629-
fn->setAttr("cir.inline_kind",
1630-
cir::InlineAttr::get(getContext(), *inlineKind));
1628+
fn.setNoInline(inlineKind == cir::InlineKind::NoInline);
1629+
fn.setInlineHint(inlineKind == cir::InlineKind::InlineHint);
1630+
fn.setAlwaysInline(inlineKind == cir::InlineKind::AlwaysInline);
16311631
}
16321632

16331633
fn.setVisibility_Attr(mlir::LLVM::VisibilityAttr::get(

clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVMIR.cpp

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,6 @@ class CIRDialectLLVMIRTranslationInterface
3434
public:
3535
using LLVMTranslationDialectInterface::LLVMTranslationDialectInterface;
3636

37-
/// Any named attribute in the CIR dialect, i.e, with name started with
38-
/// "cir.", will be handled here.
39-
virtual mlir::LogicalResult amendOperation(
40-
mlir::Operation *op, llvm::ArrayRef<llvm::Instruction *> instructions,
41-
mlir::NamedAttribute attribute,
42-
mlir::LLVM::ModuleTranslation &moduleTranslation) const override {
43-
if (auto func = mlir::dyn_cast<mlir::LLVM::LLVMFuncOp>(op)) {
44-
amendFunction(func, instructions, attribute, moduleTranslation);
45-
}
46-
return mlir::success();
47-
}
48-
4937
/// Translates the given operation to LLVM IR using the provided IR builder
5038
/// and saving the state in `moduleTranslation`.
5139
mlir::LogicalResult convertOperation(
@@ -59,39 +47,6 @@ class CIRDialectLLVMIRTranslationInterface
5947

6048
return mlir::success();
6149
}
62-
63-
// Translate CIR's inline attribute to LLVM's function attributes.
64-
void amendFunction(mlir::LLVM::LLVMFuncOp func,
65-
llvm::ArrayRef<llvm::Instruction *> instructions,
66-
mlir::NamedAttribute attribute,
67-
mlir::LLVM::ModuleTranslation &moduleTranslation) const {
68-
llvm::Function *llvmFunc = moduleTranslation.lookupFunction(func.getName());
69-
70-
if (auto inlineAttr =
71-
mlir::dyn_cast<cir::InlineAttr>(attribute.getValue())) {
72-
const auto toLLVMAttr =
73-
[](const cir::InlineAttr &attr) -> llvm::Attribute::AttrKind {
74-
switch (attr.getValue()) {
75-
case cir::InlineKind::NoInline:
76-
return llvm::Attribute::NoInline;
77-
case cir::InlineKind::AlwaysInline:
78-
return llvm::Attribute::AlwaysInline;
79-
case cir::InlineKind::InlineHint:
80-
return llvm::Attribute::InlineHint;
81-
}
82-
llvm_unreachable("Unknown cir::InlineKind value in inlineAttr");
83-
};
84-
85-
llvmFunc->addFnAttr(toLLVMAttr(inlineAttr));
86-
func->removeAttr(attribute.getName());
87-
}
88-
89-
assert(!cir::MissingFeatures::opFuncOptNoneAttr());
90-
assert(!cir::MissingFeatures::opFuncNoUnwind());
91-
assert(!cir::MissingFeatures::opFuncColdHotAttr());
92-
assert(!cir::MissingFeatures::opFuncUnwindTablesAttr());
93-
assert(!cir::MissingFeatures::openCL());
94-
}
9550
};
9651

9752
void registerCIRDialectTranslation(mlir::DialectRegistry &registry) {

0 commit comments

Comments
 (0)