https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69115

            Bug ID: 69115
           Summary: transactional memory attributes are missing docs and
                    inconsistent with spec
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libitm
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sandra at gcc dot gnu.org
  Target Milestone: ---

I found this issue while checking for undocumented attributes in connection
with PR 1078.

These attributes defined in c-family/c-common.c have no documentation in
extend.texi:

transaction_callable
transaction_may_cancel_outer
transaction_pure
transaction_safe
transaction_safe_dynamic
transaction_unsafe
transaction_wrap

I was thinking it would be OK to just list them in the manual and point at the
specification found here for details:

https://sites.google.com/site/tmforcplusplus/

but....

transaction_pure, transaction_safe_dynamic, and transaction_wrap are not
documented in the spec.

In trying to sort out which of these are function attributes and which are type
attributes, I also found:

The spec says transaction_safe, transaction_unsafe, and transaction_callable
can be used on classes, but the implementation only checks for transaction_safe
and transaction_callable.

The spec says transaction_callable can only apply to a function
definition/declaration and can't be associated with a pointer-to-function, but
it doesn't look like the implementation imposes that restriction.

I think it would be helpful if someone familiar with the code could clarify if
these differences are intentional and useful, and draft the missing
documentation.

Reply via email to