[clang] [CIR] floating-point, pointer, and function types (PR #120484)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 19 06:10:29 PST 2024
================
@@ -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
More information about the cfe-commits
mailing list