<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="phabricator-transaction-content">
<div class="differential-comment-core">
<div class="phabricator-remarkup">
<p>Here is the patch and pach description from <a
href="http://llvm-reviews.chandlerc.com/D1887">D1887</a>:</p>
<p>The approach establishes the following rules of
invalidation/escape for the source and destination buffers
passed to memcpy():<br>
- source buffer is const-invalidated without
const-pointer-escape the address of the top-level region.<br>
- destination buffer is regularly invalidated without
pointer-escape the address of the top-level region.</p>
<p>This rules are derived from the rules suggested by Jordan
in the days prior to r191342 when it was unable to associate
processing behavior with the particular region/symbol (see <a
href="http://llvm-reviews.chandlerc.com/D1486"
class="phabricator-tag-view phabricator-tag-type-object"
data-sigil="hovercard" data-meta="0_0"><span
class="phabricator-tag-core
phabricator-tag-color-object">D1486</span></a> for
detailes). <br>
Here are rules from Jordan:<br>
> 1. Const-invalidate 'src', with pointer escape.<br>
- invalidate metadata of indirect regions<br>
- invalidate contents of indirect regions<br>
- (unwanted) const-pointer-escape the address of the
top-level region<br>
</p>
<p>> 2. Const-invalidate 'dst', with pointer escape.<br>
- invalidate the metadata of indirect regions (that "in
anticipation" thing that goes with our loss of knowledge)<br>
- invalidate the contents of indirect regions (ditto)<br>
- (unwanted) const-pointer-escape the address of the
top-level region<br>
</p>
<p>> 3. Regular-invalidate 'dst' without pointer escape.<br>
- (harmlessly repeated) invalidate the contents of indirect
regions<br>
- invalidate the contents of the top-level region</p>
</div>
</div>
</div>
<br>
<pre class="moz-signature" cols="72">--
Anton</pre>
</body>
</html>