]> granicus.if.org Git - clang/log
clang
17 years agoModified LiveVariables to perform all of its base initialization in the ctor,
Ted Kremenek [Tue, 29 Jan 2008 05:13:23 +0000 (05:13 +0000)]
Modified LiveVariables to perform all of its base initialization in the ctor,
and now we require a FunctionDecl* object so that we can also keep track of
all of the ParmDecls.

Modified clients of LiveVariables to conform to the new interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46490 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoTweak Sema::DefaultArgumentPromotion() to call UsualUnaryConversions(). This makes...
Steve Naroff [Tue, 29 Jan 2008 02:42:22 +0000 (02:42 +0000)]
Tweak Sema::DefaultArgumentPromotion() to call UsualUnaryConversions(). This makes sure function calls that don't have a prototype get the default function/array conversion.

Patch by Eli Friedman!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46489 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoHandle binary or in constant expressions.
Anders Carlsson [Tue, 29 Jan 2008 01:33:32 +0000 (01:33 +0000)]
Handle binary or in constant expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46482 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoCorrectly handle constants that refer to enums.
Anders Carlsson [Tue, 29 Jan 2008 01:28:48 +0000 (01:28 +0000)]
Correctly handle constants that refer to enums.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46481 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoCorrectly handle scalars in braces.
Anders Carlsson [Tue, 29 Jan 2008 01:15:48 +0000 (01:15 +0000)]
Correctly handle scalars in braces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46480 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded skeleton code for tracking the values of function parameters.
Ted Kremenek [Tue, 29 Jan 2008 00:43:03 +0000 (00:43 +0000)]
Added skeleton code for tracking the values of function parameters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46477 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoDriver now passes the top-level FunctionDecl* to GRConstants.
Ted Kremenek [Tue, 29 Jan 2008 00:33:40 +0000 (00:33 +0000)]
Driver now passes the top-level FunctionDecl* to GRConstants.

Refactoring: for GREngine and GRConstants, pushed references to CFG, ASTContext,
and the top-level FunctionDecl into ExplodedGraphImpl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46475 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFix bz1950. ASTContext::functionTypesAreCompatible() needs to operate on the unqualif...
Steve Naroff [Tue, 29 Jan 2008 00:15:50 +0000 (00:15 +0000)]
Fix bz1950. ASTContext::functionTypesAreCompatible() needs to operate on the unqualified parameter types (per C99 6.7.5.3p15).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46472 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded RValue class "UninitializedValue".
Ted Kremenek [Mon, 28 Jan 2008 22:51:57 +0000 (22:51 +0000)]
Added RValue class "UninitializedValue".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46471 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded transfer function logic for "%=" operator.
Ted Kremenek [Mon, 28 Jan 2008 22:28:54 +0000 (22:28 +0000)]
Added transfer function logic for "%=" operator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46470 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded transfer function hookups for "modulo" operator.
Ted Kremenek [Mon, 28 Jan 2008 22:26:15 +0000 (22:26 +0000)]
Added transfer function hookups for "modulo" operator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46468 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMinor tweaking with hierarchy of NonLValue objects: SymbolValue is
Ted Kremenek [Mon, 28 Jan 2008 22:25:21 +0000 (22:25 +0000)]
Minor tweaking with hierarchy of NonLValue objects: SymbolValue is
now SymbolicNonLValue.

Cleaned up some casts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46467 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoSome additional cleanups with method names.
Ted Kremenek [Mon, 28 Jan 2008 22:09:13 +0000 (22:09 +0000)]
Some additional cleanups with method names.

Renamed ExprValue to RValue, as all expression values are RValues, and this
keeps with the C terminology (renamed old "RValue" class to "NonLValue").

Introduced "ConcreteInt", a class that represents a concrete, integer
constant as an RValue.

Temporarily removed classes to represent set of possible constants and set of !=
constants. Will replace with a more general class representing a set of
constraints.

Added some foundational code to track "symbolic" values, which are used to
accrue constraints on an abstract value that is shared between multiple
variables.  e.g:

   x = y;      // at this point "x" and "y" share the same "value"
   if (x > 1)
     ...       // at this point, the value shared by "x" and "y" is "> 1".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46466 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoImplement "private extern" on function decls!
Steve Naroff [Mon, 28 Jan 2008 21:57:15 +0000 (21:57 +0000)]
Implement "private extern" on function decls!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46464 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdd -Wno-rewrite-macros to silence the following warning when using -rewrite-test:
Steve Naroff [Mon, 28 Jan 2008 21:34:52 +0000 (21:34 +0000)]
Add -Wno-rewrite-macros to silence the following warning when using -rewrite-test:

xx.m:10:3: warning: rewriting sub-expression within a macro (may not be correct)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46462 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFix a bug with struct initializers (in Sema::CheckInitializerListTypes()).
Steve Naroff [Mon, 28 Jan 2008 02:00:41 +0000 (02:00 +0000)]
Fix a bug with struct initializers (in Sema::CheckInitializerListTypes()).
Test case included from bz1948 (thanks Neil!).
Also fixed an 80 column violation...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46430 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMake -o work with -E, patch contributed by Shantonu Sen!
Chris Lattner [Sun, 27 Jan 2008 23:55:11 +0000 (23:55 +0000)]
Make -o work with -E, patch contributed by Shantonu Sen!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46426 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoTweaks to EmitLValue in CGExprConstant. Patch by Eli Friedman.
Anders Carlsson [Sat, 26 Jan 2008 04:30:23 +0000 (04:30 +0000)]
Tweaks to EmitLValue in CGExprConstant. Patch by Eli Friedman.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46389 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdd CodeGen for AddrOf in constant initializers. Original patch by Eli Friedman.
Anders Carlsson [Sat, 26 Jan 2008 02:08:50 +0000 (02:08 +0000)]
Add CodeGen for AddrOf in constant initializers. Original patch by Eli Friedman.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46388 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFactor out the constant generation into its own file.
Anders Carlsson [Sat, 26 Jan 2008 01:36:00 +0000 (01:36 +0000)]
Factor out the constant generation into its own file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46386 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded back logic in patch r46361 (http://llvm.org/viewvc/llvm-project?rev=46361&view...
Ted Kremenek [Sat, 26 Jan 2008 00:03:27 +0000 (00:03 +0000)]
Added back logic in patch r46361 (http://llvm.org/viewvc/llvm-project?rev=46361&view=rev) with the addition of
some previously missing NULL pointer checks.

Modified the UninitializedValues analysis to not expect that every Expr* at the
block-level is a block-level expression (we probably need to change the name of
such expressions to something truer to their meaning).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46380 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoImplemented transfer function for '/='.
Ted Kremenek [Fri, 25 Jan 2008 23:45:34 +0000 (23:45 +0000)]
Implemented transfer function for '/='.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46379 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFurther refactoring of transfer functions by having APSIntSetOp take
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

17 years agoReverting r46361 (http://llvm.org/viewvc/llvm-project?rev=46361&view=rev) until
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

17 years agoRenamed RValueDisjunctiveEqual to RValEqualityORSet.
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

17 years agoAdd more support for Apple's "private extern" extension...
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

17 years agoFixed 80 col. violation.
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

17 years agoRenamed RValueMayEqualSet to RValueDisjunctiveEqual.
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

17 years agoAdd support for dispatching an objc message to a variable
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

17 years agoFirst half of a fix for the "objc message send in initializer" bug. This only
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

17 years agoFactor a complex predicate out to a helper method.
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

17 years agofix isIntegerConstantExpr evaluation of unary !.
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

17 years agosplit the second half of ParseObjCMessageExpression into a new
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

17 years agoremove an implemented todo
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

17 years agoWhen adding assignment expressions to the set of block-level expressions, only
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

17 years agoDiagnose bad receiver type.
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

17 years agoImplement -print-prog-name. Patch by Nuno Lopes.
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

17 years agoSupport checking and codegen of constant vector globals
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

17 years agoReplace Sema::CheckVariableInitList, CheckConstantInitList, and CheckForCharArrayInit...
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

17 years agoFix a bug recovering from broken code with a goto that Eli reported.
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

17 years agoChange the location we return for the EOF token to actually be on the last
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

17 years agoDon't add an extra line to the end of the buffer, it doesn't really exist.
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

17 years agoSome minor restructuring around LValue and RValue types. The value "kind"
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

17 years agoExclude vectors from Type::isScalar() predicate.
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

17 years agoenum value name change.
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

17 years agoMore cleanups to pretty-printing of states in GraphViz output.
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

17 years agoAdded transfer function for DeclStmt.
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

17 years agoAdjusted storage of values for Stmt* so that we need only query if
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

17 years agoFixed a bug where the values of block-level expressions were being recorded in
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

17 years agoMinor tweaks in the transfer functions for pre- and post- ++/-- where
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

17 years agoAdded support for unary operator '-' for equality sets.
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

17 years agoAdded transfer functions for pre- and post- increment/decrement operators.
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

17 years agoAdded passing "ASTContext" to both GREngine and GRConstants.
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

17 years agoMinor tweak in GetValue to avoid an extra check for ParenExprs.
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

17 years agoImplemented value tracking support for '*' and '*='.
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

17 years agoImplemented value tracking support for '+=' and '-='.
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

17 years agoadd some assertions so that the rewriter dies violently with a useful
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

17 years agoRemoved extra GraphViz node attributes for GRConstants, as some of them were
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

17 years agosome prettying of the GraphViz visualization of GRConstants analysis results.
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

17 years agoFixed a nasty bug which took a while to come up with a test case,
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

17 years agoMajor "architectural" changes to the GRConstants analysis. We now reason about
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

17 years agoadd support for -Wundef.
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

17 years agoMissing ObjC stuff. Patch by Mike Stump.
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

17 years agoProblem with ObjC's type-encoding of nested structs causing infinit recursion.
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

17 years agoFix a typo.
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

17 years agoImplement bitfield write.
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

17 years agoImplement bitfield read.
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

17 years agoFix PR1936, a crash on malformed #if. Thanks to Neil for
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

17 years agoFix two bugs in bitfield codegen.
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

17 years agoFix grammar.
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

17 years agoclarify wording.
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

17 years ago- Add Sema::CheckStringLiteralInit, Sema::IsStringLiteralInit.
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

17 years agoSema::CheckInitializerTypes(). Start simpliying and cleaning up...
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

17 years agoAdd Ubuntu 7.10 include path.
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

17 years agoElimate bogus warning when va_start is correctly used in
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

17 years agoAdd a predicate/getter when checking for incomplete array types ("[]").
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

17 years agoSimplify the bitfield codegen.
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

17 years agoSynthesize methods with va-arg list correctly.
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

17 years agoFix the __SIZE_TYPE__ definition on x86_32. This fixes the alloca.c (wget 1.10.2...
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

17 years agoFixed comment.
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

17 years agoFix two bugs with an @throw that doesn't have a statement.
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

17 years agoPatch to replace #import with #include.
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

17 years agoAdd Basic/Targets.cpp to the Xcode project...
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

17 years agoSema::FinalizeDeclaratorGroup(): Tighten up the tentative definition rule when dealin...
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

17 years agoAssert that the type of the cast is equal to the _unqualified_ type of the subexpress...
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

17 years agoInsert #pragma once when rewriting a header file.
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

17 years agoFixed bug in 'GetBinding' when doing the lookup of stored values. We now
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

17 years agoFixed bug in 'LiveVariables' analysis where we incorrectly marked a variable
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

17 years agoSema::FinalizeDeclaratorGroup()...make sure we emit an diagnostic for tentative defin...
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

17 years agoChanged DataflowSolver to always associated recorded dataflow values with
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

17 years agoModified the notion of "Block-level expressions" in CFGs to include Stmt*. This
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

17 years agoDon't ICE on missing interface declaration when declaring one of its protocols.
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

17 years agoImprove diagnostic wording...
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

17 years agoAdded support to dataflow solver to (when requested) also record dataflow
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

17 years agoMatch change in EmitCallExpr
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

17 years agoFix for EmitCallExpr changed in OverloadExpr patch
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

17 years agoFixed typo introduced by r46133 that caused -Wfloat-equal to break.
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

17 years agoRemoved FindDeclRef, and used Expr::IgnoreParens instead (code refactoring).
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

17 years agoImplement basic overload support via a new builtin, __builtin_overload.
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

17 years agoRenamed getSynthesizedSelectorSize to getSynthesizedMethodSize. Compute method name
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