]> granicus.if.org Git - clang/commitdiff
update the doc.
authorZhongxing Xu <xuzhongxing@gmail.com>
Mon, 20 Apr 2009 10:09:10 +0000 (10:09 +0000)
committerZhongxing Xu <xuzhongxing@gmail.com>
Mon, 20 Apr 2009 10:09:10 +0000 (10:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69587 91177308-0d34-0410-b5e6-96231b3b80d8

docs/AnalyzerRegions.html

index 992db152256239a26519858cb91d2b8d6d2ca30d..35708d57c9701f189e622ff9956d602f38139823 100644 (file)
@@ -214,7 +214,15 @@ when:</p> <pre> int x; void *p = &amp;x; </pre>
 
 <p>The region of <tt>x</tt> has its root position at 'int*' node. the cast to
 void* moves that region up to the 'void*' node. I propose to not allow such
-casts, and assign the region of <tt>x</tt> for <tt>p</tt>.<p>
+casts, and assign the region of <tt>x</tt> for <tt>p</tt>.</p>
+
+<p>Another non-ideal case is that people might cast to a non-generic pointer
+from another non-generic pointer instead of first casting it back to the generic
+pointer. Direct handling of this case would result in multiple layers of
+TypedViewRegions. This enforces an incorrect semantic view to the region,
+because we can only have one typed view on a region at a time. To avoid this
+inconsistency, before casting the region, we strip the TypedViewRegion, then do
+the cast. In summary, we only allow one layer of TypedViewRegion.</p>
 
 <h3>Region Bindings</h3>