summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhongxing Xu <xuzhongxing@gmail.com>2009-04-01 03:23:38 +0000
committerZhongxing Xu <xuzhongxing@gmail.com>2009-04-01 03:23:38 +0000
commitc473a4450795f295ef5c4d46d38e8c50e6e56ac0 (patch)
tree28a5a507a838c84300d2cb238b432efadd8487a6
parentae8bca038db7019a16e2f0c7bdff01ab9cb4c511 (diff)
downloadbcm5719-llvm-c473a4450795f295ef5c4d46d38e8c50e6e56ac0.tar.gz
bcm5719-llvm-c473a4450795f295ef5c4d46d38e8c50e6e56ac0.zip
Update docs.
llvm-svn: 68183
-rw-r--r--clang/docs/AnalyzerRegions.txt24
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/docs/AnalyzerRegions.txt b/clang/docs/AnalyzerRegions.txt
index d2177ec1607..af36c3be84c 100644
--- a/clang/docs/AnalyzerRegions.txt
+++ b/clang/docs/AnalyzerRegions.txt
@@ -70,6 +70,30 @@ MEMORY REGIONS and REGION TAXONOMY
NOTE: We plan not to use loc::SymbolVal in RegionStore and remove it
gradually.
+ Symbolic regions get their rvalue types through the following ways:
+ * through the parameter or global variable that points to it, e.g.:
+
+ void f(struct s* p) {
+ ...
+ }
+
+ The symbolic region pointed to by 'p' has type 'struct s'.
+
+ * through explicit or implicit casts, e.g.:
+ void f(void* p) {
+ struct s* q = (struct s*) p;
+ ...
+ }
+
+ We attach the type information to the symbolic region lazily. For the first
+ case above, we create the TypedViewRegion only when the pointer is actually
+ used to access the pointee memory object, that is when the element or field
+ region is created. For the cast case, the TypedViewRegion is created when
+ visiting the CastExpr.
+
+ The reason for doing lazy typing is that symbolic regions are sometimes only
+ used to do location comparison.
+
Pointer Casts
Pointer casts allow people to impose different 'views' onto a chunk of memory.
OpenPOWER on IntegriCloud