mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
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:
committed by
Torvald Riegel
parent
9b22c1b69a
commit
4f8a3b87f9
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
17
libitm/testsuite/libitm.c/alloc-1.c
Normal file
17
libitm/testsuite/libitm.c/alloc-1.c
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user