This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3] atomic update


This updates the C++0x <cstdatomic> interface to the latest
draft (N2798), removes some now un-needed configure cruft, and
updates/adds to the testsuite. 

There are some outstanding issues:

1) atomic_flag is a standard layout type, not an aggregate. It has a
deleted copy constructor. Thus aggregate initialization (aka list init)
won't work without a single bool-value constructor. Added.

2) Ambiguity in conversion with the assignment operator for integral
types. This is fallout from removing the explicit from the single-value
constructor. Worked around by removing the volatile qualifier.

3) The compatibility interfaces are not declared with "C" linkage. 

4) The member functions for the atomic_integral types
specify certain required memory orders. For load/store in particular,
what happens when these requirements are not met? 

5) Support for ATOMIC_INTEGRAL_LOCK_FREE == 2 is provided via GCC
built-ins, with full barriers that may not respect the finer
grained memory orders C++0x supports.

Thanks to Jason for fixing c++/37906/38380/35782/37896/37860,
Richard for built-in sync feedback and advice, and Roland for
help testing on powerpc.

tested x86_64/linux: --disable-threads, ATOMIC_INTEGRAL_LOCK_FREE 0,1,2
tested darwin9.5.0
testing on powerpc4/linux in progress.

-benjamin

Attachment: 20081210-4.patch.bz2
Description: application/bzip


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]