rs_bindings_from_cc: IR: Check for zero-sizedness when computing field size.

PiperOrigin-RevId: 583332317
Change-Id: I4f9a0a2a79fa404f8a30cec99c074b4924a73e88
diff --git a/rs_bindings_from_cc/importers/cxx_record.cc b/rs_bindings_from_cc/importers/cxx_record.cc
index c3e0ad9..35e3561 100644
--- a/rs_bindings_from_cc/importers/cxx_record.cc
+++ b/rs_bindings_from_cc/importers/cxx_record.cc
@@ -422,15 +422,22 @@
       }
     }
 
+    uint64_t size;
+    if (field_decl->isZeroSize(ictx_.ctx_)) {
+      size = 0;
+    } else if (field_decl->isBitField()) {
+      size = field_decl->getBitWidthValue(ictx_.ctx_);
+    } else {
+      size = ictx_.ctx_.getTypeSize(field_decl->getType());
+    }
+
     fields.push_back(
         {.identifier = GetTranslatedFieldName(field_decl),
          .doc_comment = ictx_.GetComment(field_decl),
          .type = std::move(type),
          .access = TranslateAccessSpecifier(access),
          .offset = layout.getFieldOffset(field_decl->getFieldIndex()),
-         .size = field_decl->isBitField()
-                     ? field_decl->getBitWidthValue(ictx_.ctx_)
-                     : ictx_.ctx_.getTypeSize(field_decl->getType()),
+         .size = size,
          .is_no_unique_address =
              field_decl->hasAttr<clang::NoUniqueAddressAttr>(),
          .is_bitfield = field_decl->isBitField(),