================
@@ -1527,9 +1527,18 @@ mlir::Value
CIRGenModule::emitMemberPointerConstant(const UnaryOperator *e) {
const auto *decl = cast<DeclRefExpr>(e->getSubExpr())->getDecl();
// A member function pointer.
- if (isa<CXXMethodDecl>(decl)) {
- errorNYI(e->getSourceRange(), "emitMemberPointerConstant: method pointer");
- return {};
+ if (const auto *methodDecl = dyn_cast<CXXMethodDecl>(decl)) {
+ auto ty = mlir::cast<cir::MethodType>(convertType(e->getType()));
+ if (methodDecl->isVirtual()) {
+ assert(!cir::MissingFeatures::virtualMethodAttr());
+ errorNYI(e->getSourceRange(),
+ "emitMemberPointerConstant: virtual method pointer");
+ return {};
+ }
+
+ auto methodFuncOp = getAddrOfFunction(methodDecl);
----------------
erichkeane wrote:
```suggestion
cir::FuncOp methodFuncOp = getAddrOfFunction(methodDecl);
```
https://github.com/llvm/llvm-project/pull/174640
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits