]>
granicus.if.org Git - clang/log
Ted Kremenek [Fri, 25 Jan 2008 23:43:12 +0000 (23:43 +0000)]
Further refactoring of transfer functions by having APSIntSetOp take
a template-template parameter.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46378
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 25 Jan 2008 23:22:27 +0000 (23:22 +0000)]
Reverting r46361 (http://llvm.org/viewvc/llvm-project?rev=46361&view=rev) until
I diagnose the source of the failures it causes in the test suite.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46376
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 25 Jan 2008 22:55:56 +0000 (22:55 +0000)]
Renamed RValueDisjunctiveEqual to RValEqualityORSet.
Renamed RValueConjunctiveUnequal to RValInequalityANDSet.
Refactored add/subtract/multiple (and now divide) operations for
RValEqualityORSet to be based on a single template function.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46374
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Fri, 25 Jan 2008 22:14:40 +0000 (22:14 +0000)]
Add more support for Apple's "private extern" extension...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46371
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 25 Jan 2008 22:07:26 +0000 (22:07 +0000)]
Fixed 80 col. violation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46370
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 25 Jan 2008 22:06:07 +0000 (22:06 +0000)]
Renamed RValueMayEqualSet to RValueDisjunctiveEqual.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46368
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jan 2008 19:43:26 +0000 (19:43 +0000)]
Add support for dispatching an objc message to a variable
in an initializer list.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46367
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jan 2008 19:37:24 +0000 (19:37 +0000)]
First half of a fix for the "objc message send in initializer" bug. This only
handles message sends with typenames to start with.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46366
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jan 2008 19:25:00 +0000 (19:25 +0000)]
Factor a complex predicate out to a helper method.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46365
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jan 2008 19:16:19 +0000 (19:16 +0000)]
fix isIntegerConstantExpr evaluation of unary !.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46364
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jan 2008 18:59:06 +0000 (18:59 +0000)]
split the second half of ParseObjCMessageExpression into a new
ParseObjCMessageExpressionBody method.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46363
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jan 2008 18:58:06 +0000 (18:58 +0000)]
remove an implemented todo
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46362
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 25 Jan 2008 18:28:28 +0000 (18:28 +0000)]
When adding assignment expressions to the set of block-level expressions, only
include the assignment expressions whose result (as in the value of the
expression) is used by other expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46361
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 25 Jan 2008 17:43:39 +0000 (17:43 +0000)]
Diagnose bad receiver type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46358
91177308 -0d34-0410-b5e6-
96231b3b80d8
Seo Sanghyeon [Fri, 25 Jan 2008 14:57:54 +0000 (14:57 +0000)]
Implement -print-prog-name. Patch by Nuno Lopes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46353
91177308 -0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 25 Jan 2008 05:34:48 +0000 (05:34 +0000)]
Support checking and codegen of constant vector globals
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46343
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Fri, 25 Jan 2008 00:51:06 +0000 (00:51 +0000)]
Replace Sema::CheckVariableInitList, CheckConstantInitList, and CheckForCharArrayInitializer with CheckInitializerListTypes. The new routine now supports struct/union initializers.
This is a modified version of a patch by Eli Friedman. This version passes all of the clang tests and supports vectors:-)
Note that Eli and I are still unsatisfied the implementation of CheckInitializerListTypes(). We'd like to find a more elegant implementation. Nevertheless, this is a complex part of the standard (and may be hard to simplify). Since the complexity is localized to this routine, we can iterate without too much disruption:-)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46339
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jan 2008 00:01:10 +0000 (00:01 +0000)]
Fix a bug recovering from broken code with a goto that Eli reported.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46336
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jan 2008 00:00:30 +0000 (00:00 +0000)]
Change the location we return for the EOF token to actually be on the last
line of the file, in the common case where a file ends with a newline.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46335
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 24 Jan 2008 23:25:53 +0000 (23:25 +0000)]
Don't add an extra line to the end of the buffer, it doesn't really exist.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46330
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 23:19:54 +0000 (23:19 +0000)]
Some minor restructuring around LValue and RValue types. The value "kind"
information is not separated into a "base" and "sub" type. Eventually the
value-tracking logic will know about LValues and RValues, but not about
specialized LValues and RValues; separating the "kind" information into bits
indicating whether an ExprValue is an LValue or an RValue from the bits that
specify the actual value type makes this separation easier.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46329
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Thu, 24 Jan 2008 22:55:05 +0000 (22:55 +0000)]
Exclude vectors from Type::isScalar() predicate.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46328
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 22:44:24 +0000 (22:44 +0000)]
enum value name change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46327
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 22:27:20 +0000 (22:27 +0000)]
More cleanups to pretty-printing of states in GraphViz output.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46326
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 20:55:43 +0000 (20:55 +0000)]
Added transfer function for DeclStmt.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46323
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 19:43:37 +0000 (19:43 +0000)]
Adjusted storage of values for Stmt* so that we need only query if
a Stmt* is a block-level expression when we INSERT a value into the map, and
not also when we QUERY a value.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46321
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 19:28:01 +0000 (19:28 +0000)]
Fixed a bug where the values of block-level expressions were being recorded in
the value map as if the expressions were non-block-level expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46319
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 19:00:57 +0000 (19:00 +0000)]
Minor tweaks in the transfer functions for pre- and post- ++/-- where
we falsely constructed an APInt to represent the constant '1' instead of
using an APSInt (which has a sign).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46317
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 08:20:02 +0000 (08:20 +0000)]
Added support for unary operator '-' for equality sets.
Added some workarounds for loss of signess information on some APSInt
operations. Considering the best route to integrate these into APSInt directly.
(FIXME's in GRConstants.cpp).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46310
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 02:28:56 +0000 (02:28 +0000)]
Added transfer functions for pre- and post- increment/decrement operators.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46300
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 02:02:54 +0000 (02:02 +0000)]
Added passing "ASTContext" to both GREngine and GRConstants.
Added initial support for integer casting operations to GRConstants.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46298
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 24 Jan 2008 00:50:08 +0000 (00:50 +0000)]
Minor tweak in GetValue to avoid an extra check for ParenExprs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46294
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 23 Jan 2008 23:42:27 +0000 (23:42 +0000)]
Implemented value tracking support for '*' and '*='.
Added "multiplication" support for equality sets.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46289
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 23 Jan 2008 23:38:00 +0000 (23:38 +0000)]
Implemented value tracking support for '+=' and '-='.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46288
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jan 2008 23:37:15 +0000 (23:37 +0000)]
add some assertions so that the rewriter dies violently with a useful
error instead of subtly with a mysterious one.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46287
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 23 Jan 2008 22:54:57 +0000 (22:54 +0000)]
Removed extra GraphViz node attributes for GRConstants, as some of them were
causing problems with Dot.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46285
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 23 Jan 2008 22:30:44 +0000 (22:30 +0000)]
some prettying of the GraphViz visualization of GRConstants analysis results.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46284
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 23 Jan 2008 20:34:40 +0000 (20:34 +0000)]
Fixed a nasty bug which took a while to come up with a test case,
diagnose, and took even longer to fix. It has to do with rewriting of a message
receiver which is an 'ivar' reference. Fix, however, is to remove a code which
was not doing the right thing and no longer needed.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46279
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 23 Jan 2008 19:59:44 +0000 (19:59 +0000)]
Major "architectural" changes to the GRConstants analysis. We now reason about
abstract "L-values" and "R-values" when doing value tracking, and expanding
constant tracking to encompass tracking disjunctive sets of possible constants.
Further, the tree-walking is more efficient, as we don't blindly recurse the
tree if we won't generate new states.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46278
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jan 2008 17:19:46 +0000 (17:19 +0000)]
add support for -Wundef.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46274
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 23 Jan 2008 01:34:33 +0000 (01:34 +0000)]
Missing ObjC stuff. Patch by Mike Stump.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46268
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Tue, 22 Jan 2008 22:44:46 +0000 (22:44 +0000)]
Problem with ObjC's type-encoding of nested structs causing infinit recursion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46260
91177308 -0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Tue, 22 Jan 2008 22:38:35 +0000 (22:38 +0000)]
Fix a typo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46259
91177308 -0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Tue, 22 Jan 2008 22:36:45 +0000 (22:36 +0000)]
Implement bitfield write.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46258
91177308 -0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Tue, 22 Jan 2008 20:17:04 +0000 (20:17 +0000)]
Implement bitfield read.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46257
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 22 Jan 2008 19:34:51 +0000 (19:34 +0000)]
Fix PR1936, a crash on malformed #if. Thanks to Neil for
noticing this!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46256
91177308 -0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Tue, 22 Jan 2008 19:15:30 +0000 (19:15 +0000)]
Fix two bugs in bitfield codegen.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46255
91177308 -0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Tue, 22 Jan 2008 18:46:25 +0000 (18:46 +0000)]
Fix grammar.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46253
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 22 Jan 2008 17:14:30 +0000 (17:14 +0000)]
clarify wording.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46252
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Tue, 22 Jan 2008 00:55:40 +0000 (00:55 +0000)]
- Add Sema::CheckStringLiteralInit, Sema::IsStringLiteralInit.
- Use previous hooks to simplify Sema::CheckInitializerTypes()...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46235
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 21 Jan 2008 23:53:58 +0000 (23:53 +0000)]
Sema::CheckInitializerTypes(). Start simpliying and cleaning up...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46234
91177308 -0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Mon, 21 Jan 2008 23:08:35 +0000 (23:08 +0000)]
Add Ubuntu 7.10 include path.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46233
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Mon, 21 Jan 2008 22:59:53 +0000 (22:59 +0000)]
Elimate bogus warning when va_start is correctly used in
a method.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46232
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 21 Jan 2008 22:59:18 +0000 (22:59 +0000)]
Add a predicate/getter when checking for incomplete array types ("[]").
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46231
91177308 -0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Mon, 21 Jan 2008 22:54:57 +0000 (22:54 +0000)]
Simplify the bitfield codegen.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46230
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Mon, 21 Jan 2008 20:14:23 +0000 (20:14 +0000)]
Synthesize methods with va-arg list correctly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46212
91177308 -0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Sun, 20 Jan 2008 04:02:16 +0000 (04:02 +0000)]
Fix the __SIZE_TYPE__ definition on x86_32. This fixes the alloca.c (wget 1.10.2) compilation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46196
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Sat, 19 Jan 2008 01:03:17 +0000 (01:03 +0000)]
Fixed comment.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46185
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Sat, 19 Jan 2008 00:42:38 +0000 (00:42 +0000)]
Fix two bugs with an @throw that doesn't have a statement.
- ObjCAtThrowStmt::getSourceRange() needs to check if it has a statement (and not go "boom":-)
- RewriteTest::RewriteObjCThrowStmt() needs to generate refer to the current exception.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46184
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Sat, 19 Jan 2008 00:30:35 +0000 (00:30 +0000)]
Patch to replace #import with #include.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46183
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Fri, 18 Jan 2008 23:34:17 +0000 (23:34 +0000)]
Add Basic/Targets.cpp to the Xcode project...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46182
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Fri, 18 Jan 2008 20:40:52 +0000 (20:40 +0000)]
Sema::FinalizeDeclaratorGroup(): Tighten up the tentative definition rule when dealing with arrays.
Bug submitted by Eli.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46179
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 18 Jan 2008 02:25:57 +0000 (02:25 +0000)]
Assert that the type of the cast is equal to the _unqualified_ type of the subexpression. Fixes a problem spotted by Nuno Lopes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46158
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 18 Jan 2008 01:15:54 +0000 (01:15 +0000)]
Insert #pragma once when rewriting a header file.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46155
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 18 Jan 2008 00:41:32 +0000 (00:41 +0000)]
Fixed bug in 'GetBinding' when doing the lookup of stored values. We now
use ImmutableMap::SlimFind(), which returns the correct value.
Added pruning of dead block-level expressions and Decls from our value map
using liveness information.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46154
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 18 Jan 2008 00:40:21 +0000 (00:40 +0000)]
Fixed bug in 'LiveVariables' analysis where we incorrectly marked a variable
dead at an assignment without taking into account if the variable was used in
the RHS of the assignment.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46153
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Fri, 18 Jan 2008 00:39:39 +0000 (00:39 +0000)]
Sema::FinalizeDeclaratorGroup()...make sure we emit an diagnostic for tentative definitions with incomplete types. Touch up all test cases that are effected.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46152
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 18 Jan 2008 00:38:55 +0000 (00:38 +0000)]
Changed DataflowSolver to always associated recorded dataflow values with
the position *before* a statement, regardless of whether we are doing a
forward or backwards analysis.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46151
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 17 Jan 2008 20:48:37 +0000 (20:48 +0000)]
Modified the notion of "Block-level expressions" in CFGs to include Stmt*. This
is because GNU-style Statement-expressions cause the last statement in the
statement-expression to act like an expression.
We now have two notions: block-level statements and block-level expressions.
The former are all Stmt* that appear in the list of statements in CFGBlocks. The
latter is the subset of the former; these block-level statements are used as
subexpressions somewhere in the AST. CFG::isBlockExpr() returns true for the
latter, not the former (previously isBlockExpr() always returned true for
non-Expr Stmt*).
Modified the LiveVariables analysis to also track liveness state for block-level
expressions (using the updated definition of block-level expressions).
Modified the dataflow solver so that when it records values for block-level
statements, it records the dataflow value *before* the transfer function for a
Stmt* is evaluated (not after). This is more in sync in what clients will want.
Modified CFGStmtVisitor to record the current block-level statement.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46143
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Thu, 17 Jan 2008 20:33:24 +0000 (20:33 +0000)]
Don't ICE on missing interface declaration when declaring one of its protocols.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46141
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Thu, 17 Jan 2008 19:24:05 +0000 (19:24 +0000)]
Improve diagnostic wording...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46138
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 17 Jan 2008 18:25:22 +0000 (18:25 +0000)]
Added support to dataflow solver to (when requested) also record dataflow
values for the block-level expressions.
Modified 'LiveVariables' to provide the option to clients to record
liveness information for block-level expressions (using the above feature).
Modified 'DeadStores' to conform to the new interface of 'LiveVariables'.
Modified 'GRConstants' to compute liveness information for block-level
expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46137
91177308 -0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 17 Jan 2008 18:06:09 +0000 (18:06 +0000)]
Match change in EmitCallExpr
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46136
91177308 -0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 17 Jan 2008 18:03:22 +0000 (18:03 +0000)]
Fix for EmitCallExpr changed in OverloadExpr patch
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46135
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 17 Jan 2008 17:55:13 +0000 (17:55 +0000)]
Fixed typo introduced by r46133 that caused -Wfloat-equal to break.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46134
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 17 Jan 2008 17:50:49 +0000 (17:50 +0000)]
Removed FindDeclRef, and used Expr::IgnoreParens instead (code refactoring).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46133
91177308 -0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 17 Jan 2008 17:46:27 +0000 (17:46 +0000)]
Implement basic overload support via a new builtin, __builtin_overload.
__builtin_overload takes 2 or more arguments:
0) a non-zero constant-expr for the number of arguments the overloaded
functions will take
1) the arguments to pass to the matching overloaded function
2) a list of functions to match.
The return type of __builtin_overload is inferred from the function whose args
match the types of the arguments passed to the builtin. For example:
float a;
float sinf(float);
int sini(int);
float b = __builtin_overload(1, a, sini, sinf);
Says that we are overloading functions that take one argument, and trying to
pass an argument of the same type as 'a'. sini() does not match since it takes
and argument of type int. sinf does match, so at codegen time this will turn
into float b = sinf(a);
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46132
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Thu, 17 Jan 2008 17:37:26 +0000 (17:37 +0000)]
Renamed getSynthesizedSelectorSize to getSynthesizedMethodSize. Compute method name
size in accordance with how rewriter synthesizes method name.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46131
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 17 Jan 2008 16:57:34 +0000 (16:57 +0000)]
Added method Expr::IgnoreParens(), which returns the first non-ParenExpr Expr*.
Refactored the use of this method into both the Sema module and Analysis module,
which were using their own static functions that did the same thing.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46129
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Thu, 17 Jan 2008 01:36:09 +0000 (01:36 +0000)]
Computed length of a __func__ identifier used in an objective-c method correctly,
when creating its type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46109
91177308 -0d34-0410-b5e6-
96231b3b80d8
Seo Sanghyeon [Thu, 17 Jan 2008 01:08:43 +0000 (01:08 +0000)]
Ignore --param
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46107
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 17 Jan 2008 00:52:48 +0000 (00:52 +0000)]
Added some experimental optimizations to remove dead values from the
state.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46106
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Thu, 17 Jan 2008 00:36:28 +0000 (00:36 +0000)]
Declarator::clear(): Null out variable after it's been deleted.
This avoids a double free (which is good:-)
Bug submitted by Eli.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46105
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Wed, 16 Jan 2008 23:56:32 +0000 (23:56 +0000)]
Simplify comment.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46103
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Wed, 16 Jan 2008 23:54:22 +0000 (23:54 +0000)]
Type::isArithmeticType(): disallow incomplete enum decls.
Bug submitted by Eli.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46102
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 23:35:31 +0000 (23:35 +0000)]
Changed sorting criteria for DSPtr to put sub-expressions first in the value
map. This will allow us to quickly prune them from maps without searching the
entire map.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46101
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 23:33:44 +0000 (23:33 +0000)]
Changed sorting criteria for DSPtr to sort Decl* before Expr*, and
to sort sub-expressions before Block-level expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46100
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 22:28:08 +0000 (22:28 +0000)]
IntegerLiterals are no longer evaluated to create separate nodes; their
values are determined when evaluating the parent expression.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46096
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 22:20:36 +0000 (22:20 +0000)]
Fixed bug where we performed addition instead of subtraction during
constant propagation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46095
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 22:13:19 +0000 (22:13 +0000)]
Fixed iterator bug in ExplodedNodeImpl::NodeGroup::end(); we would improperly
handle the case where the number of nodes was 0.
Fixed bug in GREngineImpl where we did not proceed to the next statement
when processing a PostStmt location.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46093
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 21:46:15 +0000 (21:46 +0000)]
Added initial graph visualization support for the GRConstants analysis.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46092
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 21:45:54 +0000 (21:45 +0000)]
Fixed invalid typedefs in the root and eop iterators for ExplodedGraph.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46091
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 19:47:19 +0000 (19:47 +0000)]
Added support from retrieving stored values to variables.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46087
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 19:42:59 +0000 (19:42 +0000)]
Added support for assignments in GRConstants.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46086
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 19:28:16 +0000 (19:28 +0000)]
Fixed bug where GRConstants::AddBindings() did not check for values
that were "not a constant."
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46085
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 19:27:42 +0000 (19:27 +0000)]
Fixed bug in cleanup of nodes in ExplodedNodeImpl where we should directly
call the dstor instead of using delete.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46084
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 16 Jan 2008 19:17:22 +0000 (19:17 +0000)]
Move promoteExprToType from being a static method in SemaExpr.cpp to being
a method named ImpCastExprToType in Sema.
Use this method to insert implicit casts for case statements from their
operand type to the condition type of the switch. This fixes a crash on
test/CodeGen/statements.c, reported by Eli Friedman.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46083
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 16 Jan 2008 19:16:00 +0000 (19:16 +0000)]
add accessors to switchstmt.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46082
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 19:11:06 +0000 (19:11 +0000)]
Fixed broken bitmasking in the ctor of ProgramPoint.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46081
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 16 Jan 2008 18:59:52 +0000 (18:59 +0000)]
Added missing call to the checker's Initialize() method in the alternate
ctor for GREngine.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46080
91177308 -0d34-0410-b5e6-
96231b3b80d8