Hi Peter, On Sat, Jun 15, 2013 at 2:44 AM, Peter Bergner <berg...@vnet.ibm.com> wrote: > I'm currently implementing support for hardware transactional memory in > the rs6000 backend for POWER8. Things seem to be mostly working, but I > have run into a few issues I'm wondering whether other people are seeing.
It sounds great! Is it already publicly available? > Finially, when compiling (static or non-static) static-ctor.C, I'm seeing: > > /home/bergner/gcc/gcc-fsf-mainline-htm/libitm/testsuite/libitm.c++/static_ctor.C:12:18: > error: unsafe function call 'void __cxa_guard_release(long long int*)' > within 'transaction_safe' function > static int y = x; > ^ > /home/bergner/gcc/gcc-fsf-mainline-htm/libitm/testsuite/libitm.c++/static_ctor.C:12:18: > error: unsafe function call 'int __cxa_guard_acquire(long long int*)' within > 'transaction_safe' function > > Does x86 not get calls to __cxa_guard_acquire and __cxa_guard_release for > this access, so it doesn't see this error? To be honest, I'm not sure > what we're supposed to do with this error. Sorry I don't have answers to your previous questions (I may have in the future when I will get a CPU with HTM). About the last one, this fails for a long long time now (even on x86): http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51173 Indeed, static constructors are not transaction safe yet and we should have a workaround for this... -- Patrick