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]

Re: [patch-rfc] N2179: Exception Propagation in C++


Paolo Carlini wrote:
Hi again,

Sebastian, please investigate, I'm reverting the patch. It
looks like the patch assumes the availability of the atomic
builtins also on i386 (the default x86 subtarget, unfortunately)

In fact, I should have noticed that you have naked __sync_sub_and_fetch and __sync_add_and_fetch in your code, sigh, my fault. This is not going to work. If you can live with a smaller referenceCount, an int, you can probably change the patch minimally to just use __exchange_and_add and __atomic_add (check many uses in the library proper: string, locale). If you *really* need a size_t for conformance the issue is going to be much more difficult, because of the i386 default, I remind you.


Paolo.

I can make it an int, but this may cause an ambiguity in the ABI description for 64-bit targets. Can I rely on the structure padding rules in the ABI to ensure cross-compiler compatibility, or do I need to pad this manually? And if I do, how do I best do this?


I had not assumed the availability of the built-in, but I had assumed the availability of replacement library functions, as the documentation led me to believe exist:

"If a particular operation cannot be implemented on the target processor, a warning will be generated and a call an external function will be generated."
http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html


Apparently these functions aren't actually implemented by GCC's library, which is confusing.

Sebastian


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