On 10/17/25 09:47, [email protected] wrote:
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 94b76b75565..231551d6a16 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -3930,6 +3930,24 @@ threads, such as the POSIX @code{swapcontext} function.
This attribute
adds a @code{BTI J} instruction when BTI is enabled e.g. via
@option{-mbranch-protection}.
+@cindex @code{preserve_none} function attribute, AArch64
+@item preserve_none
+Use this attribute to change the procedure call standard of the specified
+function to the preserve_none variant.
+
+The preserve-none abi variant modifies the AAPCS such that has no
Is it called the "preserve_none variant" (with an underscore) or the
"preserve-none variant" (with a hyphen)? We should at least be
consistent in our internal documentation even if external references
haven't settled on the spelling yet.
Is there any kind of external reference for this ABI variant that we
could link to here, BTW?
+callee-saved registers (including SIMD and floating point registers).
floating-point registers, hyphenated, please.
+That is, all registers, except for stack register,
+link register (r30) and frame pointer (r29), are shifted to be caller saved,
+and can be used as scratch registers by the callee.
+
+Additionally, registers r20-r28, r0-r7, r10-r14, and finally r9 are used for
In Texinfo markup you're supposed to use two dashes to indicate a range,
e.g. registers r20--r28.
+argument passing, in that order. The return value registers remain r0 and r1.
+
+All other details are the same as for the AAPCS ABI.
+
+This ABI has not been stabilized, and may be subject to change in future
+versions.
@end table
The above target attributes can be specified as follows: