From a1e2583920c753978f9512f7a18673f2975682eb Mon Sep 17 00:00:00 2001 From: Matthew Wahab Date: Wed, 15 Apr 2015 08:35:53 +0000 Subject: [PATCH] extend.texi (__sync Builtins): Simplify some text. * doc/extend.texi (__sync Builtins): Simplify some text. Update details about the implementation. Make clear preference for __atomic builtins. Reduce possibility of future change. From-SVN: r222120 --- gcc/ChangeLog | 6 ++++++ gcc/doc/extend.texi | 21 ++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7757d385574..27ddea52396 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-04-14 Matthew Wahab + + * doc/extend.texi (__sync Builtins): Simplify some text. Update + details about the implementation. Make clear preference for + __atomic builtins. Reduce possibility of future change. + 2015-04-15 Nick Clifton * config/rx/rx.opt (mallow-string-insns): New option. diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index d4c41c61237..7470e409166 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -8213,15 +8213,19 @@ identifier, or a sequence of member accesses and array references. The following built-in functions are intended to be compatible with those described in the @cite{Intel Itanium Processor-specific Application Binary Interface}, -section 7.4. As such, they depart from the normal GCC practice of using -the @samp{__builtin_} prefix, and further that they are overloaded such that -they work on multiple types. +section 7.4. As such, they depart from normal GCC practice by not using +the @samp{__builtin_} prefix and also by being overloaded so that they +work on multiple types. The definition given in the Intel documentation allows only for the use of -the types @code{int}, @code{long}, @code{long long} as well as their unsigned +the types @code{int}, @code{long}, @code{long long} or their unsigned counterparts. GCC allows any integral scalar or pointer type that is 1, 2, 4 or 8 bytes in length. +These functions are implemented in terms of the @samp{__atomic} +builtins (@pxref{__atomic Builtins}). They should not be used for new +code which should use the @samp{__atomic} builtins instead. + Not all operations are supported by all target processors. If a particular operation cannot be implemented on the target processor, a warning is generated and a call to an external function is generated. The external @@ -8243,11 +8247,10 @@ after the operation. All of the routines are described in the Intel documentation to take ``an optional list of variables protected by the memory barrier''. It's not clear what is meant by that; it could mean that @emph{only} the -following variables are protected, or it could mean that these variables -should in addition be protected. At present GCC ignores this list and -protects all variables that are globally accessible. If in the future -we make some use of this list, an empty list will continue to mean all -globally accessible variables. +listed variables are protected, or it could mean a list of additional +variables to be protected. The list is ignored by GCC which treats it as +empty. GCC interprets an empty list as meaning that all globally +accessible variables should be protected. @table @code @item @var{type} __sync_fetch_and_add (@var{type} *ptr, @var{type} value, ...) -- 2.30.2