Itanium POD & packed ABI break

Rough summary: Clang 16 will include a couple of fixes for GCC Itanium ABI:

  1. defaulted special members won’t cause a type to become non-POD-for-the-purposes-of-Itanium-ABI
  2. non-POD members of packed structs will not themselves be packed (their alignment will be respected)
    (3) there’s a new warning (rGec273d3e3a8c) that you can use to identify places where packed structs have non-pod members

A couple of recent commits upstream (& some legacy of a commit made back in Q1) have gone into Clang recently - specifically rG7846d590033e as well as rG037f85668126 and rG277123376ce0

The older one went in in January, but owing to the fallout was not shipped in Clang 14 or 15 - now that the recent POD fix (which reduces the incidence of the older change) is in, both/all will ship in Clang 16.

1 Like