aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/common.opt4
-rw-r--r--gcc/doc/invoke.texi12
-rw-r--r--gcc/optabs.c3
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e7851b4..53a7f75 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
diff --git a/gcc/common.opt b/gcc/common.opt
index af029922..cc57976 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -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
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index a7efaa7..5550c71 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -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
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 080061a..7ef513a 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -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,