diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -499,6 +499,15 @@ (e.g. ``int : 0``) no longer prevents the structure from being considered a homogeneous floating-point or vector aggregate. The new behavior agrees with the AAPCS specification, and matches the similar bug fix in GCC 12.1. +- Targeting AArch64, LLVM now only preserves the z8-z23 registers across + a call if the registers z0-z7 are used to pass data into or out of a + subroutine. This new behavior now matches the AAPCS. Previously LLVM + preserved z8-z23 across a call if the callee had an SVE type anywhere + in its signature. This would cause an incorrect use of the + caller-preserved z8-z23 ABI for example if the 9th argument to a + function were an SVE type. The analogous issue and fix applies to + predicate register arguments (p0-p3 for passing between subroutines, + and p4-15 preserved). - All copy constructors can now be trivial if they are not user-provided, regardless of the type qualifiers of the argument of the defaulted constructor, fixing dr2171.