Go to file
Jason Merrill 40aac94801 re PR c++/13684 (local static object variable constructed once but ctors and dtors called multiple times on same memory when called in multiple threads)
PR c++/13684
        * cp/decl.c (expand_static_init): Use thread-safety API.
        (register_dtor_fn): Return the call, don't expand it.
        * cp/tree.c (add_stmt_to_compound): New fn.
        (stabilize_call): Use it.
        * gimplify.c (gimplify_cleanup_point_expr): Handle CLEANUP_EH_ONLY.
        (gimple_push_cleanup): Add eh_only parm.
        (gimplify_target_expr): Pass it.
        * c.opt (-fno-threadsafe-statics): New option.
        * c-opts.c (c_common_handle_option): Handle it.
        * c-common.h (flag_threadsafe_statics): Declare it.
        * c-common.c (flag_threadsafe_statics): Record it.
        * doc/invoke.texi: Document it.
        * tsystem.h (_GNU_SOURCE): Define.
        * gthr-posix.h (__gthread_recursive_mutex_t): New typedef.
        (__GTHREAD_RECURSIVE_MUTEX_INIT): New macro.
        (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION): New macro.
        (__gthread_recursive_mutex_init_function): New fn.
        (__gthread_recursive_mutex_lock): New fn.
        (__gthread_recursive_mutex_trylock): New fn.
        (__gthread_recursive_mutex_unlock): New fn.
        * gthr-solaris.h, gthr-single.h, gthr-dce.h: Likewise.
        * gthr-win32.h, gthr-vxworks.h: Likewise.
        * gthr.h: Document.

        * libsupc++/guard.cc (static_mutex): Internal class implementing a
        recursive mutex which controls initialization of local statics.
        (__gnu_cxx::recursive_init): New exception class.
        (__cxa_guard_acquire): Deal with locking and recursion detection.
        (acquire_1, __cxa_guard_abort, __cxa_guard_release): Likewise.

From-SVN: r86687
2004-08-27 22:33:54 -04:00
boehm-gc backgraph.c, gc_priv.h (GC_traverse_back_graph, [...]): split GC_traverse_back_graph. 2004-08-28 00:41:41 +00:00
config
contrib texi2pod.pl: keep references of the form @ref{...}, print them bold. 2004-08-26 21:26:22 +00:00
fastjar
gcc re PR c++/13684 (local static object variable constructed once but ctors and dtors called multiple times on same memory when called in multiple threads) 2004-08-27 22:33:54 -04:00
include
INSTALL
intl
libada
libbanshee
libcpp Makefile.in: Add back top_builddir. 2004-08-25 12:57:05 +00:00
libffi closure_fn0.c: Xfail mips64* instead of mips*. 2004-08-25 05:06:55 +00:00
libgfortran Comment typo. 2004-08-27 14:37:13 +00:00
libiberty
libjava configure.ac: Handle --enable-gc-debug. 2004-08-28 00:45:56 +00:00
libmudflap
libobjc
libstdc++-v3 re PR c++/13684 (local static object variable constructed once but ctors and dtors called multiple times on same memory when called in multiple threads) 2004-08-27 22:33:54 -04:00
maintainer-scripts
zlib
.cvsignore
ABOUT-NLS
ChangeLog configure.in: Give a better error message if GMP/MPFR are missing and a language needing them... 2004-08-26 23:57:46 +00:00
ChangeLog.tree-ssa
compile
config-ml.in
config.guess
config.if
config.rpath
config.sub
configure configure.in: Give a better error message if GMP/MPFR are missing and a language needing them... 2004-08-26 23:57:46 +00:00
configure.in configure.in: Give a better error message if GMP/MPFR are missing and a language needing them... 2004-08-26 23:57:46 +00:00
COPYING
COPYING.LIB
depcomp
install-sh
libtool.m4
ltcf-c.sh
ltcf-cxx.sh
ltcf-gcj.sh
ltconfig
ltmain.sh
MAINTAINERS
Makefile.def
Makefile.in
Makefile.tpl
missing
mkdep
mkinstalldirs
move-if-change
README
README.SCO
symlink-tree
ylwrap

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the file COPYING
for copying permission.  The manuals, and some of the runtime
libraries, are under different terms; see the individual source files
for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs.html for how to report bugs usefully.