[ObjC] Fix offsets following `[[no_unique_address]]` for `@encode()` (#71321)
commit609fe2cb4b2037b546686d5f50c2f330dbca4111
authorDaniel Bertalan <dani@danielbertalan.dev>
Mon, 6 Nov 2023 19:36:47 +0000 (6 20:36 +0100)
committerGitHub <noreply@github.com>
Mon, 6 Nov 2023 19:36:47 +0000 (6 20:36 +0100)
tree316642ec44eaa059d3be47216ced17f769140734
parent1ad920f05efdbb80e449f6ec00e79a3677acc922
[ObjC] Fix offsets following `[[no_unique_address]]` for `@encode()` (#71321)

Commit 46ca880fca made `@encode` skip fields that are made zero-sized by
`[[no_unique_address]]`. When iterating the fields, the index which is
passed to `getFieldOffset` failed to be incremented for those due to the
use of an early `continue`, so subsequent fields reported an incorrect
offset. This caused an assertion to be triggered in
`getObjCEncodingForStructureImpl`.

Fixes #71250
clang/lib/AST/ASTContext.cpp
clang/test/CodeGenObjCXX/encode.mm