================
@@ -18,6 +21,87 @@ mlir::MLIRContext &CIRGenTypes::getMLIRContext() const {
return *builder.getContext();
}
+/// Return true if the specified type in a function parameter or result
position
+/// can be converted to a CIR type at this point. This boils down to being
+/// whether it is complete, as well as whether we've temporarily deferred
+/// expanding the type because we're in a recursive context.
+bool CIRGenTypes::isFuncParamTypeConvertible(clang::QualType type) {
+ // Some ABIs cannot have their member pointers represented in LLVM IR unless
+ // certain circumstances have been reached.
+ assert(!type->getAs<MemberPointerType>() && "NYI");
+
+ // If this isn't a tagged type, we can convert it!
----------------
erichkeane wrote:
IMO, the assert here makes a lot of sense, in that it shows off the assumption
that we're intentionally not handling these types. The point is that we're NOT
doing the work to figure out if those types are problematic if used in return
/parameter in a function type (for good reason, since it'll fail earlier). SO
we should assert for that, so that when `CIRGenTypes::convertType` stops
emitting the NYI, that this will be quickly noticed, rather than returning a
value we wouldn't be sure of.
https://github.com/llvm/llvm-project/pull/120484
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits