================
@@ -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!
----------------
bcardosolopes wrote:

I don't remember the details on why it was necessary at the time to deviate - 
so I just made this be equivalent to traditional codegen and everything passes: 
https://github.com/llvm/clangir/commit/04d7dcfb2582753f3eccbf01ec900d60297cbf4b

That said, I don't think we need to introduce any asserts here, can't get 
better than OG for the sake of completeness. Not supported types will crash 
given the other mechanisms David mentioned, but the recursive logic is sound 
with pre-existing work.

Unless Erich has any other concerns, this LGTM to land.

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