Add -fno-sync-libcalls.

* common.opt (fsync-libcalls): New.
        * doc/invoke.texi: Document it.
        * optabs.c (init_sync_libfuncs): Honor it.

From-SVN: r187017
This commit is contained in:
Richard Henderson 2012-05-01 08:48:10 -07:00 committed by Richard Henderson
parent 0f2f338932
commit e8053cf5b5
4 changed files with 24 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2012-05-01 Richard Henderson <rth@redhat.com>
* common.opt (fsync-libcalls): New.
* doc/invoke.texi: Document it.
* optabs.c (init_sync_libfuncs): Honor it.
2012-05-01 Kenneth Zadeck <zadeck@naturalbridge.com>
Richard Sandiford <r.sandiford@uk.ibm.com>

View file

@ -1878,6 +1878,10 @@ fstrict-overflow
Common Report Var(flag_strict_overflow)
Treat signed overflow as undefined
fsync-libcalls
Common Report Var(flag_sync_libcalls) Init(1)
Implement __atomic operations via libcalls to legacy __sync functions
fsyntax-only
Common Report Var(flag_syntax_only)
Check for syntax errors, then stop

View file

@ -990,7 +990,7 @@ See S/390 and zSeries Options.
-fno-stack-limit -fsplit-stack @gol
-fleading-underscore -ftls-model=@var{model} @gol
-ftrapv -fwrapv -fbounds-check @gol
-fvisibility -fstrict-volatile-bitfields}
-fvisibility -fstrict-volatile-bitfields -fsync-libcalls}
@end table
@menu
@ -19824,6 +19824,16 @@ that it is unaware of.
The default value of this option is determined by the application binary
interface for the target processor.
@item -fsync-libcalls
@opindex fsync-libcalls
This option controls whether any out-of-line instance of the @code{__sync}
family of functions may be used to implement the C++11 @code{__atomic}
family of functions.
The default value of this option is enabled, thus the only useful form
of the option is @option{-fno-sync-libcalls}. This option is used in
the implementation of the @file{libatomic} runtime library.
@end table
@c man end

View file

@ -6643,6 +6643,9 @@ init_sync_libfuncs_1 (optab tab, const char *base, int max)
void
init_sync_libfuncs (int max)
{
if (!flag_sync_libcalls)
return;
init_sync_libfuncs_1 (sync_compare_and_swap_optab,
"__sync_val_compare_and_swap", max);
init_sync_libfuncs_1 (sync_lock_test_and_set_optab,