================ @@ -1166,6 +1199,31 @@ void CIRToLLVMFuncOpLowering::lowerFuncAttributes( } } +mlir::LogicalResult CIRToLLVMFuncOpLowering::matchAndRewriteAlias( + cir::FuncOp op, mlir::FlatSymbolRefAttr aliasee, mlir::Type ty, + OpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const { + SmallVector<mlir::NamedAttribute, 4> attributes; + lowerFuncAttributes(op, /*filterArgAndResAttrs=*/false, attributes); + + mlir::Location loc = op.getLoc(); + auto aliasOp = rewriter.replaceOpWithNewOp<mlir::LLVM::AliasOp>( + op, ty, convertLinkage(op.getLinkage()), op.getName(), op.getDsoLocal(), + /*threadLocal=*/false, attributes); + + // Create the alias body + mlir::OpBuilder builder(op.getContext()); + mlir::Block *block = builder.createBlock(&aliasOp.getInitializerRegion()); + builder.setInsertionPointToStart(block); + // The type of AddressOfOp is always a pointer. + assert(!cir::MissingFeatures::addressSpace()); + mlir::Type ptrTy = mlir::LLVM::LLVMPointerType::get(ty.getContext()); + auto addrOp = + builder.create<mlir::LLVM::AddressOfOp>(loc, ptrTy, aliasee.getValue()); + builder.create<mlir::LLVM::ReturnOp>(loc, addrOp); ---------------- xlauko wrote:
```suggestion auto addrOp = mlir::LLVM::AddressOfOp::create(builder, loc, ptrTy, aliasee.getValue()); mlir::LLVM::ReturnOp::(builder, loc, addrOp); ``` https://github.com/llvm/llvm-project/pull/150520 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits