This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
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