From d8219307493056ea48203be157f0cfb468698f2d Mon Sep 17 00:00:00 2001 From: rth Date: Tue, 1 May 2012 15:48:10 +0000 Subject: [PATCH] Add -fno-sync-libcalls. * common.opt (fsync-libcalls): New. * doc/invoke.texi: Document it. * optabs.c (init_sync_libfuncs): Honor it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187017 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/common.opt | 4 ++++ gcc/doc/invoke.texi | 12 +++++++++++- gcc/optabs.c | 3 +++ 4 files changed, 24 insertions(+), 1 deletion(-) 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 + + * common.opt (fsync-libcalls): New. + * doc/invoke.texi: Document it. + * optabs.c (init_sync_libfuncs): Honor it. + 2012-05-01 Kenneth Zadeck Richard Sandiford diff --git a/gcc/common.opt b/gcc/common.opt index af02992..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, -- 2.7.4