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> 2012-05-01 Kenneth Zadeck <zadeck@naturalbridge.com>
Richard Sandiford <r.sandiford@uk.ibm.com> Richard Sandiford <r.sandiford@uk.ibm.com>

View file

@ -1878,6 +1878,10 @@ fstrict-overflow
Common Report Var(flag_strict_overflow) Common Report Var(flag_strict_overflow)
Treat signed overflow as undefined 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 fsyntax-only
Common Report Var(flag_syntax_only) Common Report Var(flag_syntax_only)
Check for syntax errors, then stop Check for syntax errors, then stop

View file

@ -990,7 +990,7 @@ See S/390 and zSeries Options.
-fno-stack-limit -fsplit-stack @gol -fno-stack-limit -fsplit-stack @gol
-fleading-underscore -ftls-model=@var{model} @gol -fleading-underscore -ftls-model=@var{model} @gol
-ftrapv -fwrapv -fbounds-check @gol -ftrapv -fwrapv -fbounds-check @gol
-fvisibility -fstrict-volatile-bitfields} -fvisibility -fstrict-volatile-bitfields -fsync-libcalls}
@end table @end table
@menu @menu
@ -19824,6 +19824,16 @@ that it is unaware of.
The default value of this option is determined by the application binary The default value of this option is determined by the application binary
interface for the target processor. 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 @end table
@c man end @c man end

View file

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