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

Reply via email to