Zhongxing Xu
c53b444d36
remove RegionKills GDM. Now UnknownVal is bound to regions explicitly.
...
llvm-svn: 74168
2009-06-25 05:52:16 +00:00
Zhongxing Xu
2d16073b50
Move element region retrieving logic into a separate function.
...
llvm-svn: 74166
2009-06-25 05:29:39 +00:00
Zhongxing Xu
e67ea5c784
Move all logic for retrieving ElementRegion binding into a separate method.
...
Revert to setting default value approach for handling struct initialization.
llvm-svn: 74160
2009-06-25 04:50:44 +00:00
Ted Kremenek
799bb6e178
Remove uses of std::ostream from libAnalysis.
...
llvm-svn: 74136
2009-06-24 23:06:47 +00:00
Zhongxing Xu
33420090ae
use a concrete type instead of a trait type to make code more readable.
...
llvm-svn: 74047
2009-06-24 01:12:41 +00:00
Zhongxing Xu
9ef415edf2
RegionStore: revert to the default value approach for array initialization.
...
llvm-svn: 74043
2009-06-24 00:56:31 +00:00
Ted Kremenek
2d99f97c17
- Add MemRegion::getMemorySpace()
...
- Change implementation of MemRegion::hasStackStorage()/hasHeapStorage() to use
'getMemorySpace()'. This avoids a double traversal up the region hierarchy
and is simpler.
- Add MemRegion::hasHeapOrStackStorage() as a slightly more efficient
alternative to 'hasStackStorage() || hasHeapStorage()'.
llvm-svn: 73977
2009-06-23 18:17:08 +00:00
Ted Kremenek
404b132dc0
Move 'hasStackStorage()' and 'hasHeapStorage()' from MemRegionManager to MemRegion.
...
llvm-svn: 73973
2009-06-23 18:05:21 +00:00
Zhongxing Xu
7718ae4701
Move all factory methods from SVal to ValueManager. API cleanup!
...
llvm-svn: 73954
2009-06-23 09:02:15 +00:00
Zhongxing Xu
d09b5205ef
ValueManager::makeNonLoc -> ValueManager::makeIntVal
...
Clean up code with ValueManager.
llvm-svn: 73951
2009-06-23 06:13:19 +00:00
Zhongxing Xu
0442e962d9
If the init list is fewer than the struct fields, bind the rest fields to 0
...
explicitly. Make 0 value with the field type.
llvm-svn: 73949
2009-06-23 05:43:16 +00:00
Zhongxing Xu
b7cf95957d
Instead of setting the default value of the array region, bind the rest of the
...
array elements to 0 explicitly. Create 0 values with the element type.
llvm-svn: 73946
2009-06-23 05:23:38 +00:00
Zhongxing Xu
1a195b264f
Remove duplicated methods.
...
llvm-svn: 73940
2009-06-23 02:51:21 +00:00
Zhongxing Xu
74fa0bc3de
add a fixme.
...
llvm-svn: 73939
2009-06-23 02:08:56 +00:00
Zhongxing Xu
8077d7eb15
Allow CodeTextRegion to be cast to 'void *'.
...
llvm-svn: 73880
2009-06-22 08:36:10 +00:00
Zhongxing Xu
540c009fbe
Return UnknownVal for pointer arithmetic on struct fields.
...
llvm-svn: 73851
2009-06-21 13:24:24 +00:00
Zhongxing Xu
cc45762253
If the SymbolicRegion was cast to another type, use that type to create the
...
ElementRegion.
llvm-svn: 73754
2009-06-19 04:51:14 +00:00
Zhongxing Xu
cea6578078
When casting region, if we do not create an element region, record the cast-to
...
type.
When retrieving the region value, if we are going to create a symbol value, use
the cast-to type if possible.
llvm-svn: 73690
2009-06-18 06:29:10 +00:00
Steve Naroff
fb4330f255
First step toward fixing <rdar://problem/6613046> refactor clang objc type representation.
...
Add a type (ObjCObjectPointerType) and remove a type (ObjCQualifiedIdType).
This large/tedious patch is just a first step. Next step is to remove ObjCQualifiedInterfaceType. After that, I will remove the magic TypedefType for 'id' (installed by Sema). This work will enable various simplifications throughout clang (when dealing with ObjC types).
No functionality change.
llvm-svn: 73649
2009-06-17 22:40:22 +00:00
Ted Kremenek
609df30929
Start moving in the direction of removing GRStateRef. Now each
...
GRState object has a direct reference to its GRStateManager, making
the functionality of GRStateRef redunandant. This will lead to some
nice API cleanup and code shrinking across libAnalysis.
llvm-svn: 73644
2009-06-17 22:02:04 +00:00
Ted Kremenek
4533a55696
RegionStoreManager:
...
- Add "sections" to RegionStoreManager.cpp to delineate functionality.
- Add new function "CreateFieldsOnlyRegionStoreManager" that uses the new
RegionStoreFeatures class to use a reduced set of features from
RegionStoreManager (in this case, only field-sensitivity). This isn't
completely hooked up yet.
llvm-svn: 73572
2009-06-16 22:36:44 +00:00
Zhongxing Xu
838a0db0ba
Use canonical type for building ElementRegion. Otherwise ElementRegions cannot
...
be unique.
llvm-svn: 73482
2009-06-16 09:55:50 +00:00
Zhongxing Xu
70b27e6f8b
Stop tracking non-compound value for struct. It may be caused by imprecise cast
...
logic.
llvm-svn: 73279
2009-06-13 01:31:11 +00:00
Zhongxing Xu
2693c504c2
use getAsPointerType() method.
...
llvm-svn: 73218
2009-06-12 03:59:12 +00:00
Zhongxing Xu
519a47d4bd
Bind the mistakenly generated nonloc::SymbolVal to struct correctly. See the
...
comments for added test case for details.
llvm-svn: 73189
2009-06-11 09:11:27 +00:00
Zhongxing Xu
d85a991253
Use more robust getAsRecordType() method.
...
llvm-svn: 73186
2009-06-11 07:27:30 +00:00
Zhongxing Xu
1075cc0b02
Treat AllocaRegion as SymbolicRegion in RegionStore::Retrieve().
...
llvm-svn: 72166
2009-05-20 09:18:48 +00:00
Zhongxing Xu
a7907608fb
* API change: we need to pass GRState to GRExprEngine::EvalBinOp() because
...
RegionStore needs to know the type of alloca region.
* RegionStoreManager::EvalBinOp() now converts the alloca region to its first
element region, as what is done to symbolic region.
llvm-svn: 72164
2009-05-20 09:00:16 +00:00
Daniel Dunbar
29f36b4c9a
Silence a Release-Asserts warning.
...
llvm-svn: 72013
2009-05-18 16:48:48 +00:00
Zhongxing Xu
08a2ede018
Add logic for invalidating array region to CFRefCount.cpp. When invalidating
...
array region, set its default value to conjured symbol. When retrieving its
element, create new region value symbol for the element.
Also fix some 80 columns violations.
llvm-svn: 71548
2009-05-12 10:10:00 +00:00
Zhongxing Xu
c012656266
When retrieving an ElementRegion, if its super region is a StringRegion,
...
retrieve the string value.
llvm-svn: 71430
2009-05-11 14:23:36 +00:00
Zhongxing Xu
bf938d3160
Fix a bug that leads to infinite loop. Set the correct element type to
...
ElementRegion.
llvm-svn: 71428
2009-05-11 12:48:56 +00:00
Zhongxing Xu
c9c3dab491
When casting VarRegion, if the var type is aggregate type and the cast-to
...
pointee type is scalar type, create element region regardless with the sizes
of types.
llvm-svn: 71360
2009-05-09 15:34:29 +00:00
Zhongxing Xu
4131114d99
Remove the rest TypedViewRegion processing code. There should be no
...
TypedViewRegion usage in region store.
llvm-svn: 71359
2009-05-09 15:23:42 +00:00
Zhongxing Xu
d6daef9165
When evaluating pointer arithmetic, if the base location is a symbolic region,
...
convert it to the first element region.
Also do not assume the array region is typed.
llvm-svn: 71358
2009-05-09 15:18:12 +00:00
Zhongxing Xu
b18d7cab0c
Do not create a TypedViewRegion when the base struct region is a symbolic
...
region. In the future we may set the cast-to type as the same time. But for
now, we simply leave it as it is.
llvm-svn: 71357
2009-05-09 13:36:16 +00:00
Zhongxing Xu
7c3826484e
Do not layer a TypedViewRegion when casting symbolic or alloca regions.
...
Modify getLValueElement accordingly. Now we don't require base region
to be a typed region. Do not create TypedViewRegion when base region is
symbolic or alloca region. We can do so because each element region has
its type information.
llvm-svn: 71355
2009-05-09 13:20:07 +00:00
Zhongxing Xu
e3e94bbf19
Remove the case for casting to compatible type in
...
RegionStoreManager::CastRegion(). This case should be subsumed by others.
llvm-svn: 71353
2009-05-09 10:03:08 +00:00
Zhongxing Xu
91e2ab496f
Rename:
...
SymbolRegionRValue => SymbolRegionValue
SymExpr::RegionRValue => SymExpr::RegionValueKind
llvm-svn: 71322
2009-05-09 04:08:27 +00:00
Zhongxing Xu
34d04b3ca9
As discussed with Ted, rename TypedRegion::getObjectType() to
...
TypedRegion::getValueType().
llvm-svn: 71321
2009-05-09 03:57:34 +00:00
Zhongxing Xu
8038f7b30f
rename: MemRegion:
...
RValueType => ObjectType
LValueType => LocationType
No functionality change.
llvm-svn: 71304
2009-05-09 00:50:33 +00:00
Zhongxing Xu
ca143e73ea
Fix PR4182.
...
llvm-svn: 71288
2009-05-08 23:28:07 +00:00
Zhongxing Xu
d2e8fa14df
Region store: when casting VarRegions, if the cast-to pointee type is
...
incomplete, do not compute its size and return the original region.
llvm-svn: 71213
2009-05-08 07:28:25 +00:00
Zhongxing Xu
afc875c766
Replace the heuristic isSmallerThan with ASTContext::getTypeSize().
...
llvm-svn: 71206
2009-05-08 02:12:59 +00:00
Zhongxing Xu
c0c074655d
Replace getTypeWidth() with ASTContext::getTypeSize().
...
llvm-svn: 71205
2009-05-08 02:00:55 +00:00
Zhongxing Xu
1ba79dfeea
Revert r71079.
...
llvm-svn: 71202
2009-05-08 01:33:18 +00:00
Zhongxing Xu
ea8c48d5a1
Improve RegionStoreManager::getSizeInElements()
...
- add a static function getTypeWidth(), which computes the width of a type
with the help of TargetInfo.
- no-outofbounds.c now passes for region store.
llvm-svn: 71080
2009-05-06 11:51:48 +00:00
Zhongxing Xu
c98868136f
Add a GDM for recording the cast type of regions.
...
llvm-svn: 71076
2009-05-06 08:33:50 +00:00
Zhongxing Xu
1813e23a52
Implement a heuristic type size comparison method for now.
...
llvm-svn: 71074
2009-05-06 08:08:27 +00:00
Zhongxing Xu
b2d4a52e3f
remove commented code.
...
llvm-svn: 71060
2009-05-06 02:54:11 +00:00