mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-27 13:54:19 +08: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:
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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user