[clang] [clang][CGRecordLayout] Remove dependency on isZeroSize (PR #96422)

Michael Buch via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 9 15:26:08 PDT 2024


================
@@ -185,6 +203,18 @@ CALL_AO(PackedMembers)
 // CHECK: call void @llvm.memcpy.p0.p0.i64({{.*}} align 1 {{.*}} align 1 {{.*}}i64 16, i1 {{.*}})
 // CHECK: ret ptr
 
+// WithEmptyField copy-assignment:
+// CHECK-LABEL: define linkonce_odr nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) ptr @_ZN14WithEmptyFieldaSERKS_
+// CHECK: call void @llvm.memcpy.p0.p0.i64({{.*}} align 4 {{.*}} align 4 {{.*}}i64 4, i1 {{.*}})
----------------
Michael137 wrote:

Uhm yea that would be an ABI break, and I'm not sure how I got to this IR, apologies for the confusion. What actually happens is that we get:
```
%struct.WithEmptyField = type { i32, [4 x i8], i32 }
```
which seems fine. The `memcpy` does change from `5` to 4`

https://github.com/llvm/llvm-project/pull/96422


More information about the cfe-commits mailing list