[cfe-commits] r73851 - in /cfe/trunk: lib/Analysis/RegionStore.cpp test/Analysis/fields.c
Zhongxing Xu
xuzhongxing at gmail.com
Sun Jun 21 06:24:27 PDT 2009
Author: zhongxingxu
Date: Sun Jun 21 08:24:24 2009
New Revision: 73851
URL: http://llvm.org/viewvc/llvm-project?rev=73851&view=rev
Log:
Return UnknownVal for pointer arithmetic on struct fields.
Modified:
cfe/trunk/lib/Analysis/RegionStore.cpp
cfe/trunk/test/Analysis/fields.c
Modified: cfe/trunk/lib/Analysis/RegionStore.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/RegionStore.cpp?rev=73851&r1=73850&r2=73851&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/RegionStore.cpp (original)
+++ cfe/trunk/lib/Analysis/RegionStore.cpp Sun Jun 21 08:24:24 2009
@@ -773,8 +773,13 @@
SVal ZeroIdx = ValMgr.makeZeroArrayIndex();
ER = MRMgr.getElementRegion(EleTy, ZeroIdx, AR, getContext());
}
- else
+ else if (isa<FieldRegion>(MR)) {
+ // Not track pointer arithmetic on struct fields.
+ return UnknownVal();
+ }
+ else {
ER = cast<ElementRegion>(MR);
+ }
SVal Idx = ER->getIndex();
Modified: cfe/trunk/test/Analysis/fields.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/fields.c?rev=73851&r1=73850&r2=73851&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/fields.c (original)
+++ cfe/trunk/test/Analysis/fields.c Sun Jun 21 08:24:24 2009
@@ -8,3 +8,12 @@
*(unsigned*)&y = foo();
y.x = 1;
}
+
+struct s {
+ int n;
+};
+
+void f() {
+ struct s a;
+ int *p = &(a.n) + 1;
+}
More information about the cfe-commits
mailing list