@@ -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
@@ -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
@@ -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,