diff options
author | Richard Henderson <rth@redhat.com> | 2011-11-30 14:29:33 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2011-11-30 14:29:33 -0800 |
commit | 062f93f255e4b793edb00849336bf6c4e8239b6e (patch) | |
tree | 9f60b09cc1447fb54c59835052aa947c7643e8ec /libitm/beginend.cc | |
parent | c08472eaf611a76fa2545b5a45f32d274ac0d25d (diff) | |
download | gcc-062f93f255e4b793edb00849336bf6c4e8239b6e.tar.gz |
Swap the action and jmpbuf arguments to GTM_longjmp
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
Diffstat (limited to 'libitm/beginend.cc')
-rw-r--r-- | libitm/beginend.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/libitm/beginend.cc b/libitm/beginend.cc index a26697567a3..d8ef651236d 100644 --- a/libitm/beginend.cc +++ b/libitm/beginend.cc @@ -404,8 +404,8 @@ _ITM_abortTransaction (_ITM_abortReason reason) tx->rollback (cp, true); // Jump to nested transaction (use the saved jump buffer). - GTM_longjmp (&longjmp_jb, a_abortTransaction | a_restoreLiveVariables, - longjmp_prop); + GTM_longjmp (a_abortTransaction | a_restoreLiveVariables, + &longjmp_jb, longjmp_prop); } else { @@ -421,8 +421,8 @@ _ITM_abortTransaction (_ITM_abortReason reason) gtm_thread::serial_lock.read_unlock (tx); tx->state = 0; - GTM_longjmp (&tx->jb, a_abortTransaction | a_restoreLiveVariables, - tx->prop); + GTM_longjmp (a_abortTransaction | a_restoreLiveVariables, + &tx->jb, tx->prop); } } @@ -512,8 +512,8 @@ GTM::gtm_thread::restart (gtm_restart_reason r) disp = abi_disp(); } - GTM_longjmp (&jb, - choose_code_path(prop, disp) | a_restoreLiveVariables, prop); + GTM_longjmp (choose_code_path(prop, disp) | a_restoreLiveVariables, + &jb, prop); } void ITM_REGPARM |