[all-commits] [llvm/llvm-project] 02e8fd: [ARM, AArch64] Fix ABI bugs with over-sized bitfiel...

Oliver Stannard via All-commits all-commits at lists.llvm.org
Thu Feb 20 09:07:39 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 02e8fd7a30903d65c85b3cfb56e8039b71c31972
      https://github.com/llvm/llvm-project/commit/02e8fd7a30903d65c85b3cfb56e8039b71c31972
  Author: Oliver Stannard <oliver.stannard at arm.com>
  Date:   2025-02-20 (Thu, 20 Feb 2025)

  Changed paths:
    M clang/include/clang/Basic/TargetInfo.h
    M clang/lib/AST/RecordLayoutBuilder.cpp
    M clang/lib/Basic/TargetInfo.cpp
    M clang/lib/Basic/Targets/AArch64.cpp
    M clang/test/CodeGen/aapcs-align.cpp
    M clang/test/CodeGen/aapcs64-align.cpp
    M clang/test/CodeGenCXX/debug-info-structured-binding-bitfield.cpp

  Log Message:
  -----------
  [ARM,AArch64] Fix ABI bugs with over-sized bitfields (#126774)

This fixes two bugs in the ABI for over-sized bitfields for ARM and
AArch64:

The container type picked for an over-sized bitfield already contributes
to the alignment of the structure, but it should also contribute to the
"unadjusted alignment" which is used by the ARM and AArch64 PCS.

AAPCS64 defines the bitfield layout algorithm for over-sized bitfields
as picking a container which is the fundamental integer data type with
the largest size less than or equal to the bit-field width. Since
AAPCS64 has a 128-bit integer fundamental data type, we need to consider
Int128 as a container type for AArch64.



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