> On Sep 26, 2021, at 11:45 PM, Matt Jacobson <mhjacob...@me.com> wrote: > > Fix protocol list layout for non-LP64. clang and objc4 both give the `count` > field as `long`, not `intptr_t`. Those are the same on LP64, but not > everywhere. For non-LP64, this fixes binary compatibility with clang-built > classes. > > This was more complicated than I anticipated, because the relevant frontend > code in fact had no AST type for `protocol_list_t`, instead emitting protocol > lists as `protocol_t[]`, with the zeroth element actually being the integer > count. That made it nontrivial to change the count to `long`. With this > change, there is now a true `protocol_list_t` type in the AST. > > Tested multiple ways. On x86_64/Darwin, I confirmed with a test program that > protocol conformances by classes, categories, and protocols works. On AVR, I > manually inspected the generated assembly to confirm that protocol lists gain > an extra two bytes of `count`, matching clang. > > Thank you for your time. > > <https://github.com/mhjacobson/gcc/commit/5ebc95dc726f0745ebdf003093f1b8d7720ce32f>
Friendly ping. Please let me know if there’s anything I can clarify. Original mail: <https://gcc.gnu.org/pipermail/gcc-patches/2021-September/580280.html> Thanks.