| // { dg-do "compile" } |
| // { dg-options "-fgnu-tm" } |
| |
| class Obj |
| { |
| int dummy; |
| }; |
| |
| __attribute__((transaction_safe)) |
| Obj* allocate() |
| { |
| return new Obj; |
| } |
| |
| __attribute__((transaction_safe)) |
| void deallocate(Obj * o) |
| { |
| delete o; |
| } |
| |
| __attribute__((transaction_safe)) |
| Obj* allocatearray() |
| { |
| return new Obj[2]; |
| } |
| |
| __attribute__((transaction_safe)) |
| void deallocatearray(Obj *o[]) |
| { |
| delete [] o; |
| } |
| |
| /* The delete/new operators are handled by the libitm runtime. */ |
| /* { dg-final { scan-assembler "_ZGTtnw\[mj\]" } } */ |
| /* { dg-final { scan-assembler "_ZGTtna\[mj\]" } } */ |
| /* { dg-final { scan-assembler "_ZGTtdlPv" } } */ |
| /* { dg-final { scan-assembler "_ZGTtdaPv" } } */ |