aboutsummaryrefslogtreecommitdiff
path: root/libitm
AgeCommit message (Collapse)AuthorFilesLines
2012-03-05libitm: Don't execute memtransfer/memset if size isn't larger than zero.Torvald Riegel2-2/+9
libitm/ * dispatch.h (CREATE_DISPATCH_METHODS_MEM): Don't execute memtransfer/memset if size isn't larger than zero. From-SVN: r184941
2012-03-05libitm: Update texinfo docs.Torvald Riegel2-3/+35
libitm/ * libitm.texi: Link to specification and add a usage example. From-SVN: r184940
2012-02-24libitm: Use ml_wt as default TM methods for >1 thread.Torvald Riegel2-1/+6
libitm/ * retry.cc (GTM::gtm_thread::number_of_threads_changed): Change default dispatch for more than 1 thread to ml_wt. From-SVN: r184547
2012-02-20libitm: Put gl_wt global lock on separate cache line.Torvald Riegel2-2/+6
libitm/ * method-gl.cc (gl_wt_dispatch::orec): Put on separate cacheline. From-SVN: r184403
2012-02-20libitm: Optimize synchronization in gl_wt rollback.Torvald Riegel2-12/+20
libitm/ * method-gl.cc (gl_wt_dispatch::rollback): Optimize memory orders. From-SVN: r184402
2012-02-20libitm: Remove obsolete handling of prior serial lock corner cases in gl_wt.Torvald Riegel2-28/+11
libitm/ * method-gl.cc (gl_wt_dispatch::trycommit): Remove handling of serial mode corner cases made obsolete by prior gtm_rwlock changes. (gl_wt_dispatch.rollback): Same. From-SVN: r184401
2012-02-20libitm: Optimize memory order requiremens in gl_wt pre_write.Torvald Riegel2-3/+18
libtim/ * method-gl.cc (gl_wt_dispatch::pre_write): Optimize memory orders. From-SVN: r184400
2012-02-20libitm: Add missing undo-logging of RfW src regions in gl_wt memtransfer.Torvald Riegel2-8/+16
libitm/ * method-gl.cc (gl_wt_dispatch::memtransfer_static): Add missing undo for RfW src. Optimize number of calls to gtm_thr. From-SVN: r184399
2012-02-20libitm: Fix race condition in dispatch choice at transaction begin.Torvald Riegel3-40/+96
libitm/ * beginend.cc (GTM::gtm_thread::begin_transaction): Move serial lock acquisition to ... * retry.cc (GTM::gtm_thread::decide_begin_dispatch): ... here. (default_dispatch): Make atomic. (GTM::gtm_thread::set_default_dispatch): Access atomically. (GTM::gtm_thread::decide_retry_strategy): Access atomically and use decide_begin_dispatch() if default_dispatch might have changed. (GTM::gtm_thread::number_of_threads_changed): Initialize default_dispatch here. From-SVN: r184392
2012-02-15re PR libitm/52220 (FAIL: libitm.c++/eh-1.C execution test due to Xcode 4 ↵Iain Sandoe3-2/+9
weakref linker bug) libitm/ 2012-02-15 Iain Sandoe <iains@gcc.gnu.org> Patrick Marlier <patrick.marlier@gmail.com> PR libitm/52220 * alloc_cpp.cc: No dummy definitions for darwin. * eh_cpp.cc: Likewise. libgcc/ 2012-02-15 Iain Sandoe <iains@gcc.gnu.org> Patrick Marlier <patrick.marlier@gmail.com> PR libitm/52220 * config/darwin-crt-tm.c: Generate dummy functions. Co-Authored-By: Patrick Marlier <patrick.marlier@gmail.com> From-SVN: r184293
2012-02-14* config/x86/target.h (GTM_longjmp): Correct the .cfi corrections.Richard Henderson2-5/+9
From-SVN: r184227
2012-02-14target.h (GTM_longjmp): Correct .cfi directives.Uros Bizjak2-3/+9
* config/x86/target.h (GTM_longjmp): Correct .cfi directives. From-SVN: r184220
2012-02-14libitm: Add multi-lock, write-through TM method.Torvald Riegel6-6/+639
libitm/ * libitm_i.h (GTM::gtm_rwlog_entry): New. (GTM::gtm_thread): Add read and write logs. (GTM::dispatch_ml_wt): Declare. * retry.cc (parse_default_method): Support ml_wt. * method-ml.cc: New file. * Makefile.am: Add method-ml.cc. * Makefile.in: Regenerate. From-SVN: r184212
2012-02-14libitm: Improve method reinit and choice.Torvald Riegel3-13/+32
libitm/ * dispatch.h (GTM::abi_dispatch::supports): New. (GTM::method_group::reinit): New. * retry.cc (GTM::gtm_thread::decide_retry_strategy): Use reinit(). (GTM::gtm_thread::number_of_threads_changed): Check that the method supports the current situation. From-SVN: r184211
2012-02-14libitm: Add xcalloc.Torvald Riegel3-0/+19
libitm/ * util.cc (GTM::xcalloc): New. * common.h (GTM::xcalloc): Declare. From-SVN: r184210
2012-02-14target.h (cpu_relax): Read from CC register.Eric Botcazou3-9/+14
* config/sparc/target.h (cpu_relax): Read from CC register. * config/sparc/sjlj.S (GTM_longjmp): Restore %fp atomically. From-SVN: r184202
2012-02-14target.h (GTM_longjmp): Jump indirect from memory address.Uros Bizjak2-6/+8
* config/x86/target.h (GTM_longjmp): Jump indirect from memory address. From-SVN: r184198
2012-02-13configure.tgt (target_cpu): Handle sparc and sparc64 & sparcv9.Eric Botcazou6-1/+282
* configure.tgt (target_cpu): Handle sparc and sparc64 & sparcv9. * config/sparc/cacheline.h: New file. * config/sparc/target.h: Likewise. * config/sparc/sjlj.S: Likewise. * config/linux/sparc/futex_bits.h: Likewise. From-SVN: r184177
2012-02-13gcc.c (LINK_COMMAND_SPEC): Deal with -fgnu-tm.Eric Botcazou4-3/+8
gcc/ * gcc.c (LINK_COMMAND_SPEC): Deal with -fgnu-tm. (GTM_SELF_SPECS): Define if not already defined. (driver_self_specs): Add GTM_SELF_SPECS. * config/darwin.h (LINK_COMMAND_SPEC_A): Deal with -fgnu-tm. (GTM_SELF_SPECS): Define. * config/i386/cygwin.h (GTM_SELF_SPECS): Likewise. * config/i386/mingw32.h (GTM_SELF_SPECS): Likewise. libitm/ * configure.ac (link_itm): Fix comment. * configure: Regenerate. * testsuite/lib/libitm.exp: Do not pass -litm for the link. From-SVN: r184174
2012-01-31Fixed PR reference.Rainer Orth1-1/+1
From-SVN: r183755
2012-01-31Link C++ tests with -shared-libgcc (PR libitm/51822)Rainer Orth2-3/+14
PR libstdc++/51296 * testsuite/libitm.c++/c++.exp (lang_link_flags): Add -shared-libgcc. Correct libgomp references. From-SVN: r183754
2012-01-24libitm: Fix wake-up of readers in futex-based serial lock.Torvald Riegel2-3/+11
libitm/ * config/linux/rwlock.cc (GTM::gtm_rwlock::write_unlock): Fix reader wake-up. From-SVN: r183488
2012-01-24target.h (gtm_jmpbuf): Move rip to the end of structure.Uros Bizjak3-19/+26
* config/x86/target.h (gtm_jmpbuf) [__x86_64__]: Move rip to the end of structure. * config/x86/sjlj.S (_ITM_beginTransaction) [__x86_64__]: Update offset values. Do not copy return address. Decrement stack by 56 bytes only. (GTM_longjump) [__x86_64__]: Update offset values. From-SVN: r183467
2012-01-23re PR libitm/51830 (FAIL: libitm.c/mem(cpy|set)-1.c execution test)Uros Bizjak2-0/+7
PR libitm/51830 * builtin-types.def (BT_FN_UINT_UINT_VAR): New. * gtm-builtins.def (BUILT_IN_TM_START): Declare as BT_FN_UINT_UINT_VAR. libitm/ChangeLog: PR libitm/51830 * config/x86/sjlj.S (_ITM_beginTransaction) [!__x86_64__]: Load the first function argument to %eax. From-SVN: r183435
2012-01-23Remove _ITM_getThreadnumRainer Orth3-4/+6
* libitm.h (_ITM_getThreadnum): Remove. * libitm.map (_ITM_getThreadnum): Remove from LIBITM_1.0. From-SVN: r183431
2012-01-23Clear hardware capabilities on libitm.so with Sun ldRainer Orth8-9/+177
* clearcap.map: New file. * acinclude.m4 (LIBITM_CHECK_LINKER_HWCAP): New test. * configure.ac: Call it. Clear HWCAP_LDFLAGS if defaulting to -mavx. * Makefile.am (AM_LDFLAGS): Add $(HWCAP_LDFLAGS) * configure: Regenerate. * Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. From-SVN: r183430
2012-01-17Skip static_ctor.C test (PR libitm/51173)Rainer Orth2-1/+7
PR libitm/51173 * testsuite/libitm.c++/static_ctor.C: Skip test, note PR, remove include, exclude options. From-SVN: r183253
2012-01-13libitm: Truncate undo log after rolling back.Torvald Riegel3-0/+8
libitm/ * local.cc (GTM::gtm_undolog::rollback): Truncate undo log after rolling back. * containers.h (GTM::vector::set_size): New. From-SVN: r183173
2012-01-13libitm: Filter out undo writes that overlap with the libitm stack.Torvald Riegel7-6/+84
PR libitm/51855 * config/generic/tls.h (GTM::mask_stack_top): New. (GTM::mask_stack_bottom): Declare. * config/generic/tls.c (GTM::mask_stack_bottom): New. * local.cc (gtm_undolog::rollback): Filter out any updates that overlap the libitm stack. Add current transaction as parameter. * libitm_i.h (GTM::gtm_undolog::rollback): Adapt. * beginend.cc (GTM::gtm_thread::rollback): Adapt. * testsuite/libitm.c/stackundo.c: New test. From-SVN: r183172
2012-01-09libitm_i.h (_Unwind_DeleteException): Declare weak.Richard Henderson3-1/+12
* libitm_i.h (_Unwind_DeleteException): Declare weak. * eh_cpp.cc (_Unwind_DeleteException): Define for !HAVE_ELF_STYLE_WEAKREF. From-SVN: r183049
2012-01-08libitm: Optimize undo log.Torvald Riegel7-88/+83
libitm/ * local.cc (GTM_LB): Use GTM::gtm_undolog. (GTM::gtm_thread::drop_references_undolog): Remove. (GTM::gtm_thread::commit_undolog, GTM::gtm_thread::rollback_undolog): Move to ... * libitm_i.h (GTM::gtm_undolog): ...here. New. (GTM::gtm_undolog_entry): Remove. (GTM::gtm_thread): Adapt. * beginend.cc (GTM::gtm_thread::rollback): Adapt. (GTM::gtm_thread::trycommit): Adapt. * method-serial.cc (serial_dispatch::log): Adapt. * method-gl.cc (gl_wt_dispatch::pre_write): Adapt. (gl_wt_dispatch::store): Fix likely/unlikely. * containers.h (GTM::vector::resize): Add additional_capacity parameter and handle it. (GTM::vector::resize_noinline): New/adapt. (GTM::vector::push): New. From-SVN: r182992
2012-01-05libitm: PowerPC support.Richard Henderson7-4/+590
* configure.tgt: Support powerpc-linux and powerpc-darwin. * config/linux/powerpc/futex_bits.h: New file. * config/powerpc/cacheline.h: New file. * config/powerpc/sjlj.S: New file. * config/powerpc/target.h: New file. * config/generic/asmcfi.h (cfi_offset): New. (cfi_restore, cfi_undefined): New. From-SVN: r182930
2012-01-05Add Patrick Marlier to ChangeLog entry.Aldy Hernandez1-0/+1
From-SVN: r182912
2012-01-05re PR libitm/51171 (XFAIL: libitm.c/reentrant.c execution test)Aldy Hernandez2-2/+8
PR other/51171 * testsuite/libitm.c/reentrant.c: Remove xfail. (thread): Pass x to pure(). From-SVN: r182911
2011-12-24libitm: Don't enforce privatization safety if already in serial mode.Torvald Riegel2-1/+11
libitm/ * beginend.cc (GTM::gtm_thread::trycommit): Don't enforce privatization safety if already in serial mode. From-SVN: r182676
2011-12-24libitm: Fix privatization safety during upgrades to serial mode.Torvald Riegel8-23/+65
libitm/ * beginend.cc (GTM::gtm_thread::restart): Add and handle finish_serial_upgrade parameter. * libitm.h (GTM::gtm_thread::restart): Adapt declaration. * config/linux/rwlock.cc (GTM::gtm_rwlock::write_lock_generic): Don't unset reader flag. (GTM::gtm_rwlock::write_upgrade_finish): New. * config/posix/rwlock.cc: Same. * config/linux/rwlock.h (GTM::gtm_rwlock::write_upgrade_finish): Declare. * config/posix/rwlock.h: Same. * method-serial.cc (GTM::gtm_thread::serialirr_mode): Unset reader flag after commit or after rollback when restarting. From-SVN: r182675
2011-12-24libitm: Fixed conversion to C++11 atomics.Torvald Riegel13-90/+222
libitm/ * beginend.cc (GTM::gtm_thread::begin_transaction): Add comment. (GTM::gtm_thread::try_commit): Changed memory order. * config/linux/alpha/futex_bits.h (sys_futex0): Take atomic int as parameter. * config/linux/x86/futex_bits.h (sys_futex0): Same. * config/linux/sh/futex_bits.h (sys_futex0): Same. * config/linux/futex_bits.h (sys_futex0): Same. * config/linux/futex.cc (futex_wait, futex_wake): Same. * config/linux/futex.h (futex_wait, futex_wake): Same. * config/linux/rwlock.h (gtm_rwlock::writers, gtm_rwlock::writer_readers, gtm_rwlock::readers): Change to atomic ints. * config/linux/rwlock.cc (gtm_rwlock::read_lock, gtm_rwlock::write_lock_generic, gtm_rwlock::read_unlock, gtm_rwlock::write_unlock): Fix memory orders and fences. * config/posix/rwlock.cc (gtm_rwlock::read_lock, gtm_rwlock::write_lock_generic, gtm_rwlock::read_unlock, gtm_rwlock::write_unlock): Same. * config/linux/rwlock.h (gtm_rwlock::summary): Change to atomic int. * method-gl.cc (gl_mg::init, gl_wt_dispatch::memtransfer_static, gl_wt_dispatch::memset_static, gl_wt_dispatch::begin_or_restart): Add comments. (gl_wt_dispatch::pre_write, gl_wt_dispatch::validate, gl_wt_dispatch::load, gl_wt_dispatch::store, gl_wt_dispatch::try_commit, gl_wt_dispatch::rollback): Fix memory orders and fences. Add comments. From-SVN: r182674
2011-12-21Makefile.am (AM_CXXFLAGS): Put $(XCFLAGS) first.Jakub Jelinek3-4/+9
* Makefile.am (AM_CXXFLAGS): Put $(XCFLAGS) first. * Makefile.in: Regenerated. From-SVN: r182593
2011-12-17configure.tgt: Add sh* case.Kaz Kojima5-0/+232
* configure.tgt: Add sh* case. * config/sh/target.h: New file. * config/sh/sjlj.S: New file. * config/linux/sh/futex_bits.h: New file. From-SVN: r182429
2011-12-14arm-linux: Add libitm support.Richard Henderson14-17/+422
* config/arm/hwcap.h, config/arm/hwcap.cc: New files. * config/arm/sjlj.S, config/arm/target.h: New files. * config/generic/asmcfi.h (cfi_adjust_cfa_offset): New. (cfi_rel_offset): New. * config/linux/futex_bits.h: New file. * config/linux/futex.cc: Include futex_bits.h here... * config/linux/futex.h: ... not here. * Makefile.am (libitm_la_SOURCES) <ARCH_ARM>: Add hwcap.cc. * configure.ac (ARCH_AM): New conditional. * Makefile.in, configure: Rebuild. * configure.tgt: Handle ARM. From-SVN: r182355
2011-12-13rwlock.cc (gtm_rwlock::write_lock_generic): Fix signed/unsigned comparison ↵Richard Henderson2-1/+4
werror. * config/posix/rwlock.cc (gtm_rwlock::write_lock_generic): Fix signed/unsigned comparison werror. From-SVN: r182302
2011-12-13libitm: Conversion to c++11 atomics.Richard Henderson10-102/+1996
* local_atomic: New file. * libitm_i.h: Include it. (gtm_thread::shared_state): Use atomic template. * beginend.cc (GTM::gtm_clock): Use atomic template. (global_tid): Use atomic template if 64-bit atomics available. (gtm_thread::gtm_thread): Update shared_state access. (gtm_thread::trycommit): Likewise. (choose_code_path): Update global_tid access. * method-gl.cc (gl_mg::orec): Use atomic template. Update all users. * stmlock.h (GTM::gtm_clock): Use atomic template. (gtm_get_clock, gtm_inc_clock): Update accesses. * config/linux/rwlock.cc (gtm_rwlock::read_lock): Remove redundant __sync_synchronize after atomic shared_state access. * config/posix/rwlock.cc (gtm_rwlock::read_lock): Likewise. (gtm_rwlock::write_lock_generic): Likewise. (gtm_rwlock::read_unlock): Likewise. * config/alpha/target.h (atomic_read_barrier): Remove. (atomic_write_barrier): Remove. * config/x86/target.h (atomic_read_barrier): Remove. (atomic_write_barrier): Remove. From-SVN: r182294
2011-11-30Swap the action and jmpbuf arguments to GTM_longjmpRichard Henderson5-39/+46
On several ABIs, the first register parameter is the same as the return value register. Moving the action parameter first avoids the need for register shuffling on these targets. * libitm_i.h (GTM_longjmp): Swap first and second arguments. * beginend.c (_ITM_abortTransaction): Update to match. (GTM::gtm_thread::restart): Likewise. * config/alpha/sjlj.S (GTM_longjmp): Likewise. * config/x86/sjlj.S (GTM_longjmp): Likewise. From-SVN: r181863
2011-11-23Makefile.am (libitm_la_LDFLAGS): Remove "-no-undefined".Iain Sandoe3-5/+7
libitm: * Makefile.am (libitm_la_LDFLAGS): Remove "-no-undefined". * Makefile.in: Regenerate. From-SVN: r181654
2011-11-22weakref.m4: New file.Iain Sandoe9-14/+87
config: * weakref.m4: New file. libitm: * configure.ac: Use GCC_CHECK_ELF_STYLE_WEAKREF. * alloc_cpp.cc: Generate dummy functions if we don't HAVE_ELF_STYLE_WEAKREF. * eh_cpp.cc: Likewise. * configure: Regenerate. * aclocal.m4: Likewise. * config.h.in: Likewise. * Makefile.in: Likewise. * testsuite/Makefile.in: Likewise. From-SVN: r181618
2011-11-22sjlj.S (CONCAT1, [...]): Respond to __USER_LABEL_PREFIX__ for targets that ↵Iain Sandoe3-19/+57
use it. libitm: * config/x86/sjlj.S (CONCAT1, CONCAT2, SYM): Respond to __USER_LABEL_PREFIX__ for targets that use it. TYPE, SIZE, HIDDEN): New macros to assist on non-elf targets. (_ITM_beginTransaction): Use SYM, TYPE, SIZE macros to assist in portability to non-elf targets. (GTM_longjmp): LIkewise. * libitm_i.h (begin_transaction): Apply __USER_LABEL_PREFIX__ where required. From-SVN: r181612
2011-11-22memcpy-1.c: Allow for MAP_ANON spelling.Iain Sandoe3-0/+17
libitm: * testsuite/libitm.c/memcpy-1.c: Allow for MAP_ANON spelling. * testsuite/libitm.c/memset-1.c: Likewise. From-SVN: r181611
2011-11-21Additional fixes for FreeBSD-10 build:Andreas Tobler2-6/+10
/: * libtool.m4: Additional FreeBSD 10 fixes. boehm-gc/: * configure: Regenerate. gcc/: * configure: Regenerate. libffi/: * configure: Regenerate. libgfortran/: * configure: Regenerate. libgomp/: * configure: Regenerate. libitm/: * configure: Regenerate. libjava/: * configure.ac: Fix some more FreeBSD 10 issues.. * configure: Regenerate. libjava/libltdl/: * acinclude.m4: Additional FreeBSD 10 fixes. * configure: Regenerate. libmudflap/: * configure: Regenerate. libobjc/: * configure: Regenerate. libquadmath/: * configure: Regenerate. libssp/: * configure: Regenerate. libstdc++-v3/: * configure: Regenerate. lto-plugin/: * configure: Regenerate. zlib/: * configure: Regenerate. From-SVN: r181593
2011-11-21Support sun symbol versioning in libitmRainer Orth5-29/+176
libitm: * acinclude.m4 (LIBITM_CHECK_LINKER_FEATURES): Handle gold. (LIBITM_ENABLE_SYMVERS): Handle sun style. * Makefile.am: Handle sun style versioning. (libitm_la_LINK): Add $(libitm_la_LDFLAGS). * configure: Regenerate. * Makefile.in: Regenerate. contrib: * make_sunver.pl: Convert '?' in glob patterns to '.'. From-SVN: r181588
2011-11-18Support libitm on Solaris 8 and 9/x86 with Sun asRainer Orth3-1/+21
* config/generic/asmcfi.h: Fix comment. * config/x86/sjlj.S (_ITM_beginTransaction): Provide ELF PIC code sequence without .hidden support, error for non-ELF targets. (GTM_longjmp) [__ELF__]: Only use .hidden if HAVE_ATTRIBUTE_VISIBILITY. From-SVN: r181481