summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBlaine Garst <blaine@apple.com>2010-10-27 22:59:01 +0000
committerBlaine Garst <blaine@apple.com>2010-10-27 22:59:01 +0000
commit03b99365e3f32f9aee00d1f69f72a7e0c2e3a94c (patch)
treed1f5edc68c05ba80d853ab87ca59269c46e253f2
parent517b3b21ca6c5e4f0b7d0fb724cf5d41e3d0dd59 (diff)
downloadbcm5719-llvm-03b99365e3f32f9aee00d1f69f72a7e0c2e3a94c.tar.gz
bcm5719-llvm-03b99365e3f32f9aee00d1f69f72a7e0c2e3a94c.zip
small tweaks to reflect statements of what really ever shipped. ABI is, and has been, accurate for what we ship.
llvm-svn: 117504
-rw-r--r--clang/docs/Block-ABI-Apple.txt8
1 files changed, 5 insertions, 3 deletions
diff --git a/clang/docs/Block-ABI-Apple.txt b/clang/docs/Block-ABI-Apple.txt
index 94e75ac4577..9e2edc63d2d 100644
--- a/clang/docs/Block-ABI-Apple.txt
+++ b/clang/docs/Block-ABI-Apple.txt
@@ -67,19 +67,21 @@ enum {
BLOCK_HAS_COPY_DISPOSE = (1 << 25),
BLOCK_HAS_CTOR = (1 << 26), // helpers have C++ code
BLOCK_IS_GLOBAL = (1 << 28),
- BLOCK_HAS_STRET = (1 << 29),
+ BLOCK_HAS_STRET = (1 << 29), // IFF BLOCK_HAS_SIGNATURE
BLOCK_HAS_SIGNATURE = (1 << 30),
};
-In 10.6.ABI the (1<<29) was unconditionally set and ignored by the runtime - it was a transitional marker that did not get deleted after the transition. This bit is now paired with (1<<30), and represented as the pair (3<<30), for the following combinations of valid bit settings, and their meanings.
+In 10.6.ABI the (1<<29) was usually set and was always ignored by the runtime - it had been a transitional marker that did not get deleted after the transition. This bit is now paired with (1<<30), and represented as the pair (3<<30), for the following combinations of valid bit settings, and their meanings.
switch (flags & (3<<29)) {
- case (0<<29): <unused> , error
+ case (0<<29): 10.6.ABI, no signature field available
case (1<<29): 10.6.ABI, no signature field available
case (2<<29): ABI.2010.3.16, regular calling convention, presence of signature field
case (3<<29): ABI.2010.3.16, stret calling convention, presence of signature field,
}
+The signature field is not always populated.
+
The following discussions are presented as 10.6.ABI otherwise.
Block literals may occur within functions where the structure is created in stack local memory. They may also appear as initialization expressions for Block variables of global or static local variables.
OpenPOWER on IntegriCloud