[clang] [clang][SPARC] Treat empty structs as if it's a one-bit type in the CC (PR #90338)
Sergei Barannikov via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 29 14:26:34 PDT 2024
================
@@ -21,6 +21,12 @@ char f_int_4(char x) { return x; }
// CHECK-LABEL: define{{.*}} fp128 @f_ld(fp128 noundef %x)
long double f_ld(long double x) { return x; }
+// Empty struct is lowered as a placeholder word parameter.
+struct empty {};
+
+// CHECK-LABEL: define{{.*}} i64 @f_empty(i64 %x.coerce)
+struct empty f_empty(struct empty x) { return x; }
+
----------------
s-barannikov wrote:
There are corner cases like a struct with an empty base class or a struct with flexible array member (or a sturct containing such struct / array of structs...). These needs to be tested, too. See `isEmptyRecord` if it can help.
There are also functions with variadic arguments, they also need to be tested.
https://github.com/llvm/llvm-project/pull/90338
More information about the cfe-commits
mailing list