================
@@ -1842,11 +1842,15 @@ Currently, only the following parameter attributes are 
defined:
 
     This attribute cannot be applied to return values.
 
-``dead_on_return``
+``dead_on_return`` or ``dead_on_return(<n>)``
     This attribute indicates that the memory pointed to by the argument is dead
     upon function return, both upon normal return and if the calls unwinds, 
meaning
     that the caller will not depend on its contents. Stores that would be 
observable
-    either on the return path or on the unwind path may be elided.
+    either on the return path or on the unwind path may be elided. A number of
+    bytes known to be dead may optionally be provided in parentheses. It is 
legal
+    for the number of bytes to be less than the size of the pointee type. If a 
number
+    of bytes is not specified, all memory reachable through the pointer is 
marked as
+    dead on return.
----------------
nikic wrote:

This "all reachable memory" wording isn't entirely correct when taken together 
with the next paragraph. Only written memory is dead. There are two 
possibilities for the interaction with the byte count. We can either say that 
if a byte count is specified, then that entire range is overwritten with poison 
on return. Or we can say that it just limits what's said in the next paragraph 
to writes within the byte count.

https://github.com/llvm/llvm-project/pull/171712
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to