[all-commits] [llvm/llvm-project] 46ca88: clang: Don't assert on no_unique_address fields in...

Nico Weber via All-commits all-commits at lists.llvm.org
Fri Nov 13 08:39:35 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 46ca880fcae24693d381ca05c16c704675545433
      https://github.com/llvm/llvm-project/commit/46ca880fcae24693d381ca05c16c704675545433
  Author: Nico Weber <thakis at chromium.org>
  Date:   2020-11-13 (Fri, 13 Nov 2020)

  Changed paths:
    M clang/lib/AST/ASTContext.cpp
    M clang/test/CodeGenObjCXX/encode.mm

  Log Message:
  -----------
  clang: Don't assert on no_unique_address fields in @encode()

Just skip (non-bitfield) zero-sized fields, like we do with empty bases.

The class->struct conversion in the test is because -std=c++20 else deletes some default methods
due to non-accessible base dtors otherwise.

As a side-effect of writing the test, I discovered that D76801 did an ABI breaking change of sorts
for Objective-C's @encode. But it's been in for a while, so I'm not sure if we want to row back on
that or now.

Fixes PR48048.

Differential Revision: https://reviews.llvm.org/D90622




More information about the All-commits mailing list