Commit 9ac1504b by Andrew MacLeod Committed by Andrew Macleod

re PR c/52190 (question about atomic intrinsics -- test and documentation vary -- please clarify)


2012-02-10  Andrew MacLeod  <amacleod@redhat.com>

	PR c/52190
	* doc/extend.texi : Update comments for __atomic_compare_exchange and
	__atomic_{is,always}_lock_free.

From-SVN: r184112
parent 877fb450
2012-02-10 Andrew MacLeod <amacleod@redhat.com>
PR c/52190
* doc/extend.texi : Update comments for __atomic_compare_exchange and
__atomic_{is,always}_lock_free.
2012-02-10 Uros Bizjak <ubizjak@gmail.com> 2012-02-10 Uros Bizjak <ubizjak@gmail.com>
PR target/52146 PR target/52146
......
...@@ -7146,7 +7146,10 @@ This built-in function implements an atomic compare and exchange operation. ...@@ -7146,7 +7146,10 @@ This built-in function implements an atomic compare and exchange operation.
This compares the contents of @code{*@var{ptr}} with the contents of This compares the contents of @code{*@var{ptr}} with the contents of
@code{*@var{expected}} and if equal, writes @var{desired} into @code{*@var{expected}} and if equal, writes @var{desired} into
@code{*@var{ptr}}. If they are not equal, the current contents of @code{*@var{ptr}}. If they are not equal, the current contents of
@code{*@var{ptr}} is written into @code{*@var{expected}}. @code{*@var{ptr}} is written into @code{*@var{expected}}. @var{weak} is true
for weak compare_exchange, and false for the strong variation. Many targets
only offer the strong variation and ignore the parameter. When in doubt, use
the strong variation.
True is returned if @code{*@var{desired}} is written into True is returned if @code{*@var{desired}} is written into
@code{*@var{ptr}} and the execution is considered to conform to the @code{*@var{ptr}} and the execution is considered to conform to the
...@@ -7242,27 +7245,32 @@ All memory orders are valid. ...@@ -7242,27 +7245,32 @@ All memory orders are valid.
@end deftypefn @end deftypefn
@deftypefn {Built-in Function} bool __atomic_always_lock_free (size_t size) @deftypefn {Built-in Function} bool __atomic_always_lock_free (size_t size, void *ptr)
This built-in function returns true if objects of size bytes will always This built-in function returns true if objects of @var{size} bytes will always
generate lock free atomic instructions for the target architecture. generate lock free atomic instructions for the target architecture.
Otherwise false is returned. @var{size} must resolve to a compile time constant and the result also resolves to compile time constant.
size must resolve to a compile time constant. @var{ptr} is an optional pointer to the object which may be used to determine
alignment. A value of 0 indicates typical alignment should be used. The
compiler may also ignore this parameter.
@smallexample @smallexample
if (_atomic_always_lock_free (sizeof (long long))) if (_atomic_always_lock_free (sizeof (long long), 0))
@end smallexample @end smallexample
@end deftypefn @end deftypefn
@deftypefn {Built-in Function} bool __atomic_is_lock_free (size_t size) @deftypefn {Built-in Function} bool __atomic_is_lock_free (size_t size, void *ptr)
This built-in function returns true if objects of size bytes will always This built-in function returns true if objects of @var{size} bytes will always
generate lock free atomic instructions for the target architecture. If generate lock free atomic instructions for the target architecture. If
it is not known to be lock free a call is made to a runtime routine named it is not known to be lock free a call is made to a runtime routine named
@code{__atomic_is_lock_free}. @code{__atomic_is_lock_free}.
@var{ptr} is an optional pointer to the object which may be used to determine
alignment. A value of 0 indicates typical alignment should be used. The
compiler may also ignore this parameter.
@end deftypefn @end deftypefn
@node Object Size Checking @node Object Size Checking
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment