================
@@ -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
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to