diff options
author | Richard Henderson <rth@redhat.com> | 2012-05-01 08:48:10 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2012-05-01 08:48:10 -0700 |
commit | e8053cf5b5b8d982efd4d77d9922ac63fcf478d2 (patch) | |
tree | 478ddc795db150bbd57b56449d13d8abe4eda8de /gcc | |
parent | 0f2f338932c32fe0a16a9e640e0eaf694b4244c4 (diff) | |
download | gcc-e8053cf5b5b8d982efd4d77d9922ac63fcf478d2.zip gcc-e8053cf5b5b8d982efd4d77d9922ac63fcf478d2.tar.gz gcc-e8053cf5b5b8d982efd4d77d9922ac63fcf478d2.tar.bz2 |
Add -fno-sync-libcalls.
* common.opt (fsync-libcalls): New.
* doc/invoke.texi: Document it.
* optabs.c (init_sync_libfuncs): Honor it.
From-SVN: r187017
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/common.opt | 4 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 12 | ||||
-rw-r--r-- | gcc/optabs.c | 3 |
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, |