issue with TXN and nonTXN symbols

issue with TXN and nonTXN symbols

Looks like the symbols generated by the compiler for transactional and non-transactional versions of a tm_callable function (foo._$TXN, foo._$nonTXN) are not global. Because whenever I try to use such functions where the declarations are not visible, I am getting undefined reference errors. For instance, I have a static library which annotates some functions as tm_callable. And when I try to use that static library in some other code, I see these problems.

Is there any way to force the compiler to generate global symbols for both transactional and non-transactional versions of an annotated function?


2 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

1. If original function marked as tm_callable has external visibility (not marked as static) auxilary symbols (foo._$TXN, foo._$nonTXN) will have the same external visibility. If it is not so please report platform (32/64bit and OS) and we'll try to reproduce this issue. It is importnat to remember that library shall be built with -Qtm_enabled knob otherwise any TM-specific constructs will not have any effect and this, depending on platform, may be either error or just warning.

2. It is very important that declaration of function (foo()) with tm_callable markis visible at any its use (throught header file or pre-declaration). However, violation of this rule should not lead to undefined reference diagnostics. It will result in tx_warnings and, effectively, execution offoo() irrevocably (serially).

Serge Preis

Leave a Comment

Please sign in to add a comment. Not a member? Join today