* common.opt (fsync-libcalls): New.
* doc/invoke.texi: Document it.
* optabs.c (init_sync_libfuncs): Honor it.
From-SVN: r187017
+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>
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
-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
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
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,