[clang] [CIR] Add support for function linkage and visibility (PR #145600)
Sirui Mu via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 25 02:54:58 PDT 2025
================
@@ -1534,6 +1567,27 @@ void CIRGenModule::setGVPropertiesAux(mlir::Operation *op,
assert(!cir::MissingFeatures::opGlobalPartition());
}
+void CIRGenModule::setFunctionAttributes(GlobalDecl globalDecl,
+ cir::FuncOp func,
+ bool isIncompleteFunction,
+ bool isThunk) {
+ // NOTE(cir): Original CodeGen checks if this is an intrinsic. In CIR we
+ // represent them in dedicated ops. The correct attributes are ensured during
+ // translation to LLVM. Thus, we don't need to check for them here.
+
+ assert(!cir::MissingFeatures::setFunctionAttributes());
+ assert(!cir::MissingFeatures::setTargetAttributes());
+
+ // TODO(cir): This needs a lot of work to better match CodeGen. That
+ // ultimately ends up in setGlobalVisibility, which already has the linkage of
+ // the LLVM GV (corresponding to our FuncOp) computed, so it doesn't have to
+ // recompute it here. This is a minimal fix for now.
+ if (!isLocalLinkage(getFunctionLinkage(globalDecl))) {
+ const auto *decl = globalDecl.getDecl();
----------------
Lancern wrote:
Use explicit type here
https://github.com/llvm/llvm-project/pull/145600
More information about the cfe-commits
mailing list