Here is the patch and pach description from D1887 <http://llvm-reviews.chandlerc.com/D1887>:

The approach establishes the following rules of invalidation/escape for the source and destination buffers passed to memcpy(): - source buffer is const-invalidated without const-pointer-escape the address of the top-level region. - destination buffer is regularly invalidated without pointer-escape the address of the top-level region.

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 D1486 <http://llvm-reviews.chandlerc.com/D1486> for detailes).
Here are rules from Jordan:
> 1. Const-invalidate 'src', with pointer escape.
- invalidate metadata of indirect regions
- invalidate contents of indirect regions
- (unwanted) const-pointer-escape the address of the top-level region

> 2. Const-invalidate 'dst', with pointer escape.
- invalidate the metadata of indirect regions (that "in anticipation" thing that goes with our loss of knowledge)
- invalidate the contents of indirect regions (ditto)
- (unwanted) const-pointer-escape the address of the top-level region

> 3. Regular-invalidate 'dst' without pointer escape.
- (harmlessly repeated) invalidate the contents of indirect regions
- invalidate the contents of the top-level region


--
Anton

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to