On 11 Mar 2015, at 11:23, Roland King wrote:


On 11 Mar 2015, at 18:13, Jonas Maebe <[email protected]> wrote:


On 06 Mar 2015, at 02:50, Jens Alfke wrote:

Shouldn’t C alignment rules dictate that the ‘value’ union and the surrounding ‘atomic_val_t’ type be 8-byte-aligned, since they contain a 64-bit integer?

Alignment rules are not dictated by the programming language, but by the ABI. The ARM ABI, and also Apple's variant, says that 64 bit integers are only guaranteed 4 byte alignment: https://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html


If that's true, and read it too, the the compiler shouldn't be emitting a double word load which requires 8-byte alignment on a platform which doesn't guarantee it.

The compiler will, under normal circumstances, never by itself emit an atomic 64 bit load. My guess is that Jens is passing the address of that field to a function that is hardcoded (possibly using inline assembly) to perform a 64 bit atomic load.


Jonas
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/xcode-users/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to