libitm: Fix recent changes to allocations log.

libitm/
	* libitm_i.h (gtm_alloc_action): Remove union.
	* testsuite/libitm.c/alloc-1.c: New.

From-SVN: r230727
This commit is contained in:
Torvald Riegel 2015-11-22 20:56:20 +00:00 committed by Torvald Riegel
parent 9b22c1b69a
commit 4f8a3b87f9
3 changed files with 26 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2015-11-22 Torvald Riegel <triegel@redhat.com>
* libitm_i.h (gtm_alloc_action): Remove union.
* testsuite/libitm.c/alloc-1.c: New.
2015-11-19 Torvald Riegel <triegel@redhat.com>
* testsuite/libitm.c++/eh-5.C: New.

View File

@ -106,12 +106,10 @@ namespace GTM HIDDEN {
// the template used inside gtm_thread can instantiate.
struct gtm_alloc_action
{
// Iff free_fn_sz is nonzero, it must be used instead of free_fn.
union
{
void (*free_fn)(void *);
void (*free_fn_sz)(void *, size_t);
};
// Iff free_fn_sz is nonzero, it must be used instead of free_fn, and vice
// versa.
void (*free_fn)(void *);
void (*free_fn_sz)(void *, size_t);
size_t sz;
// If true, this is an allocation; we discard the log entry on outermost
// commit, and deallocate on abort. If false, this is a deallocation and

View File

@ -0,0 +1,17 @@
// Test that rolling back allocations works.
#include <stdlib.h>
void __attribute((transaction_pure,noinline)) dont_optimize(void* p)
{
*(volatile char *) p;
}
int main()
{
__transaction_atomic {
void *p = malloc (23);
dont_optimize (p);
__transaction_cancel;
}
return 0;
}