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
diff --git a/libitm/beginend.cc b/libitm/beginend.cc
index a266975..d8ef651 100644
--- a/libitm/beginend.cc
+++ b/libitm/beginend.cc
@@ -404,8 +404,8 @@
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 @@
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 @@
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