[clang] [mlir] [CIR] Implement 'noreturn' attribute for functions/calls. (PR #177978)
Andy Kaylor via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 27 10:52:05 PST 2026
================
@@ -2036,6 +2041,7 @@ void CIRToLLVMFuncOpLowering::lowerFuncAttributes(
attr.getName() == func.getDsoLocalAttrName() ||
attr.getName() == func.getInlineKindAttrName() ||
attr.getName() == func.getSideEffectAttrName() ||
+ attr.getName() == CIRDialect::getNoReturnAttrName() ||
----------------
andykaylor wrote:
This is what I was talking about earlier. DsoLocal, InlineKind, and SideEffect are all explicit attributes in FuncOp, but NoReturn isn't, so there is no `func.getNoReturnAttrName()`. We had previously talked about doing it this way going forward because there are potentially so many of these, but the fact that the LLVM dialect is doing it differently is concerning.
I'm not sure which representation ends up being more efficient. We don't want to pay for a lot of attributes that we usually don't use, but we also don't want slow lookup for things that we have to check often.
The previous discussion that was vaguely rattling around in my memory had to do with the way the incubator uses "extra_attrs" as a sort of catch-all for this kind of thing. Here is that discussion: https://github.com/llvm/llvm-project/pull/145178#discussion_r2162604619
https://github.com/llvm/llvm-project/pull/177978
More information about the cfe-commits
mailing list