================
@@ -553,6 +591,35 @@ RValue CIRGenFunction::emitLoadOfLValue(LValue lv,
SourceLocation loc) {
return RValue::get(nullptr);
}
+static cir::FuncOp emitFunctionDeclPointer(CIRGenModule &cgm, GlobalDecl gd) {
+ assert(!cir::MissingFeatures::weakRefReference());
+ return cgm.getAddrOfFunction(gd);
+}
+
+static LValue emitFunctionDeclLValue(CIRGenFunction &CGF, const Expr *E,
+ GlobalDecl GD) {
+ const FunctionDecl *FD = cast<FunctionDecl>(GD.getDecl());
+ auto funcOp = emitFunctionDeclPointer(CGF.cgm, GD);
+ auto loc = CGF.getLoc(E->getSourceRange());
+ CharUnits align = CGF.getContext().getDeclAlign(FD);
+
+ mlir::Type fnTy = funcOp.getFunctionType();
+ auto ptrTy = cir::PointerType::get(fnTy);
+ mlir::Value addr = CGF.getBuilder().create<cir::GetGlobalOp>(
+ loc, ptrTy, funcOp.getSymName());
+
+ if (funcOp.getFunctionType() != CGF.convertType(FD->getType())) {
+ fnTy = CGF.convertType(FD->getType());
+ ptrTy = cir::PointerType::get(fnTy);
+
+ addr = CGF.getBuilder().create<cir::CastOp>(addr.getLoc(), ptrTy,
----------------
mmha wrote:
```suggestion
addr = cir::CastOp::create(cgf.getBuilder(), addr.getLoc(), ptrTy,
```
https://github.com/llvm/llvm-project/pull/154060
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits