Zhongxing Xu
82003da8d3
Core analysis engine template cleanup step 2:
...
merge GRCoreEngineImpl and GRCoreEngine.
Introduce a new interface class GRSubEngine as the subengine of GRCoreEngine.
GRExprEngine subclasses GRSubEngine now.
llvm-svn: 78298
2009-08-06 10:00:15 +00:00
Zhongxing Xu
c5ce335f81
Fix comment.
...
llvm-svn: 78296
2009-08-06 09:22:08 +00:00
Douglas Gregor
71dc50915a
Implement transformation of template names within the generic tree
...
transform, then use the result for template instantiation. The generic
transformation fixes a few issues:
- It copes better with template template parameters and member
templates (when they're implemented).
- The logic used to replace template template parameters with their
arguments is now centralized in TransformDecl, so that it will apply
for other declaration-instantiation steps.
- The error-recovery strategy is normalized now, so that any error
results in a NULL TemplateName.
llvm-svn: 78292
2009-08-06 06:41:21 +00:00
Zhongxing Xu
c90a0c2e81
Core analysis engine template cleanup step 2:
...
merge ExplodedGraphImpl and ExplodedGraph.
llvm-svn: 78291
2009-08-06 06:28:40 +00:00
Ted Kremenek
f368fa6728
Update test case.
...
llvm-svn: 78290
2009-08-06 06:26:40 +00:00
Douglas Gregor
1135c35c7c
Implement transformation of nested-name-specifiers within the general
...
tree transformation. Template instantiation uses this general
transformation rather than implementing its own transformation.
llvm-svn: 78286
2009-08-06 05:28:30 +00:00
Ted Kremenek
54bd637f40
Fix typo reported in <rdar://problem/7121409>.
...
llvm-svn: 78285
2009-08-06 05:01:36 +00:00
Ted Kremenek
2c85f17922
Refactor RegionStoreManager::RemoveDeadBindings to also scan the bindings of LazyCompoundSVals.
...
llvm-svn: 78284
2009-08-06 04:50:20 +00:00
Douglas Gregor
3f4d51bb04
Predefine __cplusplus to the right value (199711L), except when in GNU mode.
...
llvm-svn: 78283
2009-08-06 04:09:28 +00:00
Ted Kremenek
e587ca6f25
Remove unimplemented methods 'AddRegionView' and 'RemoveRegionView'. They are no longer needed.
...
llvm-svn: 78280
2009-08-06 03:41:56 +00:00
Ted Kremenek
ed31f99efb
When profiling an ExplodedNode, don't re-profile the state: they have
...
already been uniqued.
llvm-svn: 78279
2009-08-06 03:39:20 +00:00
Douglas Gregor
d806156d54
Support nested-name-specifiers for C++ member access expressions, e.g.,
...
this->Base::foo
from James Porter!
llvm-svn: 78278
2009-08-06 03:17:00 +00:00
Ryan Flynn
aa5e5fd2f4
add support for FreeBSD's format(printf0,x,y) attribute; allows null format string.
...
llvm-svn: 78276
2009-08-06 03:00:50 +00:00
John McCall
07e91c04ba
First pass at friend semantics.
...
llvm-svn: 78274
2009-08-06 02:15:43 +00:00
Zhongxing Xu
51eeb36c8c
Completely remove the code using region cast.
...
llvm-svn: 78273
2009-08-06 02:14:29 +00:00
Daniel Dunbar
b46b5bbaa8
Add additional library paths for Linux distros on mixed 32/64-bit systems.
...
- Patch by Carl-Daniel Hailfinger.
llvm-svn: 78272
2009-08-06 01:47:11 +00:00
Daniel Dunbar
4728100e8d
Fix locating the 'lit.cfg' file when running on only a single file in the
...
current directory.
llvm-svn: 78271
2009-08-06 01:41:03 +00:00
Zhongxing Xu
20227f71d7
As GRState seems general enough, it is time to merge some template classes
...
and their impl base classes. This can greatly simply some code of the core
analysis engine. This patch merges ExplodedNodeImpl into ExplodedNode.
llvm-svn: 78270
2009-08-06 01:32:16 +00:00
Daniel Dunbar
f1ad6b7064
Fix clang breakage, CGF can be null in this context.
...
llvm-svn: 78269
2009-08-06 01:24:27 +00:00
Ted Kremenek
fa41714d8d
Implement lazy "copying" of structures and arrays in RegionStore. While
...
RegionStore already lazily abstracted the contents of arrays and structs, when
doing an assignment from one array/struct to another we did an explicit
element-wise copy, which resulted in a loss of laziness and huge performance
problem when analyzing many code bases.
Now RegionStoreManager handles such assignments using a new SVal could
'LazyCompoundSVal', which basically means the value of a given struct or array
(a MemRegion*) in a specific state (GRState). When we do a load from a field
whose encompassing struct binds to a LazyCompoundSVal, we essentially do a field
lookup in the original structure. This means we have essentially zero copying of
data for structs/arrays and everything stays lazy.
llvm-svn: 78268
2009-08-06 01:20:57 +00:00
Fariborz Jahanian
eb869768f9
Patch to optimize away copy constructor call when
...
appropriate.
llvm-svn: 78267
2009-08-06 01:02:49 +00:00
John McCall
9de556c8b6
AlisdairM pointed out that this will likely be relaxed in C++0x, so let's
...
make a note of it in the test case.
llvm-svn: 78266
2009-08-06 00:50:46 +00:00
Mike Stump
2509480813
Fixup object layout when we have a primary base (it goes first). Start preping for
...
virtual base layout.
llvm-svn: 78265
2009-08-06 00:38:46 +00:00
John McCall
13c5a27c9a
Add a test for invalid uses of non-static members from nested classes, just
...
because I was thinking about it.
llvm-svn: 78262
2009-08-05 23:56:26 +00:00
Owen Anderson
758428f4e3
Update for LLVM API change.
...
llvm-svn: 78259
2009-08-05 23:18:46 +00:00
Mike Stump
a19718af5a
Refactor some bits.
...
llvm-svn: 78254
2009-08-05 22:59:44 +00:00
Mike Stump
6d368129c5
Add another test for a recent checkin.
...
llvm-svn: 78253
2009-08-05 22:48:36 +00:00
Mike Stump
d8fe7b2792
Calculate the primary base class better and use that when laying down
...
the vtable. Still a work in progress.
llvm-svn: 78252
2009-08-05 22:37:18 +00:00
Fariborz Jahanian
01aabafee0
A blank line to separate the two blocks(per Mike comment).
...
llvm-svn: 78248
2009-08-05 21:52:02 +00:00
Benjamin Kramer
70231c99c4
Fix -fno-omit-frame-pointer bug Eli noticed.
...
llvm-svn: 78233
2009-08-05 19:47:38 +00:00
Fariborz Jahanian
daeb7d51d4
Modified test case to use FileCheck.
...
llvm-svn: 78231
2009-08-05 19:24:33 +00:00
Eli Friedman
44b83eea30
Get rid of "smart" quotes. Per report on cfe-dev.
...
llvm-svn: 78230
2009-08-05 19:21:58 +00:00
Ted Kremenek
844a729d97
Use feedback from RegionStoreSubRegionMap::add() to prune off adding a super
...
region to the worklist used to create the subregion map.
llvm-svn: 78228
2009-08-05 19:09:24 +00:00
Douglas Gregor
f9bd4ecea2
Fix canonical type construction for function types with the noreturn
...
attribute. Fixes PR4865.
llvm-svn: 78224
2009-08-05 19:03:35 +00:00
Fariborz Jahanian
d460cb4356
Handle destruction of temporaries used in default argument
...
construction of constructor calls.
llvm-svn: 78222
2009-08-05 18:17:32 +00:00
Fariborz Jahanian
aa890bf2f3
Patch to improve ir-gen for constructors with default argument
...
expressions and a test case.
llvm-svn: 78213
2009-08-05 17:03:54 +00:00
Benjamin Kramer
cf4371a689
Translate -mcmodel=X to -code-model X and pass it to clang-cc. Patch by Pawel Worach!
...
llvm-svn: 78190
2009-08-05 14:30:52 +00:00
Benjamin Kramer
72e211a47a
Add support for the -fno-omit-frame-pointer option. Patch by Roman Divacky!
...
llvm-svn: 78188
2009-08-05 12:11:11 +00:00
Douglas Gregor
99709de6ae
Fix a comment that trailed off
...
llvm-svn: 78167
2009-08-05 05:39:53 +00:00
Douglas Gregor
2211d345d2
Introduce the canonical type smart pointers, and use them in a few places to
...
tighten up the static type system.
llvm-svn: 78164
2009-08-05 05:36:45 +00:00
Ted Kremenek
68c1f010d2
Fix a bug in RegionStoreSubRegionManager::add() where multiple subregions wouldn't correctly get registered in the SubRegion map.
...
llvm-svn: 78162
2009-08-05 05:31:02 +00:00
Chris Lattner
c58e5699be
cgobjcgnu was making invalid common globals.
...
llvm-svn: 78161
2009-08-05 05:25:18 +00:00
Chris Lattner
f49573d1ee
weak globals that are const should get weak_odr linkage.
...
add a fixme about C++ const.
llvm-svn: 78159
2009-08-05 05:20:29 +00:00
Chris Lattner
c0693bc2ea
rdar://7119244 - globals with an explicit section specified don't get
...
common linkage.
llvm-svn: 78158
2009-08-05 04:56:58 +00:00
Zhongxing Xu
13ee441874
Add test case.
...
llvm-svn: 78150
2009-08-05 03:45:09 +00:00
Zhongxing Xu
fe97165587
If the UnaryOperator has non-location type, use its type to create the
...
constant value. If the UnaryOperator has location type, create the
constant with int type and pointer width.
This fixes the bug that all pointer increments 'p++' evaluated to Unknown.
llvm-svn: 78147
2009-08-05 02:51:59 +00:00
Mike Stump
1a90e38471
Remove an unused header.
...
llvm-svn: 78140
2009-08-05 01:22:47 +00:00
Fariborz Jahanian
800f37262c
Support for use of default argument in constructors.
...
work in progress.
llvm-svn: 78132
2009-08-05 00:26:10 +00:00
Douglas Gregor
e922c77ddd
Move the template instantiation logic for template arguments into the
...
general tree transformation. Also, implement template instantiation
for parameter packs.
In addition, introduce logic to enter the appropriate context for
subexpressions that are not potentially evaluated.
llvm-svn: 78114
2009-08-04 22:27:00 +00:00
Mike Stump
9beac787c1
vtable building for simple inheritance. Still in progress.
...
llvm-svn: 78110
2009-08-04 21:58:42 +00:00