[all-commits] [llvm/llvm-project] 89305c: [z/OS] add tail padding to TypeLoc if needed (#122...

Sean Perry via All-commits all-commits at lists.llvm.org
Fri Jan 17 08:15:12 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 89305c371552adba2bd10394d2c645c9792840b2
      https://github.com/llvm/llvm-project/commit/89305c371552adba2bd10394d2c645c9792840b2
  Author: Sean Perry <perry at ca.ibm.com>
  Date:   2025-01-17 (Fri, 17 Jan 2025)

  Changed paths:
    M clang/include/clang/AST/TypeLoc.h

  Log Message:
  -----------
  [z/OS] add tail padding to TypeLoc if needed (#122761)

The code in getLocalDataSize() returns the sum of the size of the
LocalData plus the size of the extra data. The start of the extra data
is padded so it starts on a multiple of it's alignment. We also need to
be adding tail padding so the final size is a multiple of the alignment
of the LocalData. On most systems the alignment of the extra data is the
same or greater than the alignment of the LocalData so you don't need
the tail padding. However, on z/OS, the alignment of the extra data is
less than the alignment of the LocalData and thus you do need the tail
padding to make the final size a multiple of the LocalData alignment.

The extra data is the WrittenBuiltinSpecs struct. This struct is just a
struct of bitfields. On most systems the alignment of the struct is
determined by the type of the bitfields (eg. unsigned int -> align of
4). On z/OS, all bitfields are 1 byte aligned. Thus on z/OS
WrittenBuiltinSpecs is only size 2 with alignment of 1 (verses 4 & 4).



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list