Alexis Hunt
ed05325dbe
Convert DeclNodes to use TableGen.
...
The macros required for DeclNodes use have changed to match the use of
StmtNodes. The FooFirst enumerator constants have been named firstFoo
to match usage elsewhere.
llvm-svn: 105165
2010-05-30 07:21:58 +00:00
Ted Kremenek
304a9537e1
Fix crash in CFG construction for 'break' statements appearing in statement expressions
...
within the increment code of a for loop.
llvm-svn: 104375
2010-05-21 20:30:15 +00:00
Ted Kremenek
ecc31c93c2
Don't add a null successor to a CFGBlock when the contents of an @synchronized statement is empty.
...
Fixes <rdar://problem/7979430>.
llvm-svn: 103717
2010-05-13 16:38:08 +00:00
Douglas Gregor
ecc60b99f9
Unbreak CMake build.
...
llvm-svn: 103077
2010-05-05 05:41:05 +00:00
Ted Kremenek
bc1416dcad
Add null check in CFGBuilder::VisitStmt() to make CFG construction
...
more resilient to bad code.
llvm-svn: 102793
2010-04-30 22:25:53 +00:00
Ted Kremenek
989da5eeff
Fix CFG crasher involving statement expressions reported in PR 6938.
...
llvm-svn: 102576
2010-04-29 01:10:26 +00:00
Zhongxing Xu
b5e94ac97d
Use direct assignment instead of user defined conversion.
...
llvm-svn: 101236
2010-04-14 05:50:04 +00:00
Zhongxing Xu
7e61217d86
CFGBuilder: always add C++ member call expr as block-level expr.
...
llvm-svn: 101127
2010-04-13 09:38:01 +00:00
Ted Kremenek
5868ec6e3d
Fix CFG bug where bases of member expressions were not always evaluated in a lvalue context. Fixes <rdar://problem/7813989>.
...
llvm-svn: 100966
2010-04-11 17:02:10 +00:00
Ted Kremenek
66de60376c
Fix bug in AddStmtChoice:asLValue() where 'AsLValueNotAlwaysAdd' would not be treated as indicating an lvalue.
...
llvm-svn: 100965
2010-04-11 17:02:04 +00:00
Ted Kremenek
d2ba1f9ff0
Sort visitor methods. No functionality change.
...
llvm-svn: 100964
2010-04-11 17:01:59 +00:00
Rafael Espindola
c50c27cca8
the big refactoring bits of PR3782.
...
This introduces FunctionType::ExtInfo to hold the calling convention and the
noreturn attribute. The next patch will extend it to include the regparm
attribute and fix the bug.
llvm-svn: 99920
2010-03-30 20:24:48 +00:00
Rafael Espindola
8756268ee5
Be a bit more consistent in using operator->
...
This patch moves some methods from QualType to Type and changes the users to
use -> instead of .
llvm-svn: 99805
2010-03-29 03:39:46 +00:00
Ted Kremenek
186508c7d6
Fix '+=' accumulation error when parsing numeric amounts in a format string.
...
llvm-svn: 99479
2010-03-25 03:59:09 +00:00
Ted Kremenek
0b40532b5e
Only perform CFG-based warnings on 'static inline' functions that
...
are called (transitively) by regular functions/blocks within a
translation untion.
llvm-svn: 99233
2010-03-23 00:13:23 +00:00
Jeffrey Yasskin
f6442f80cb
Allow users to set CPPFLAGS and CXXFLAGS on the make command line.
...
Tested: make CPPFLAGS=-m64 CXXFLAGS=-m64 -j8 && (cd tools/clang;make test)
llvm-svn: 98399
2010-03-12 22:55:16 +00:00
Ted Kremenek
575398e29b
When computing in AnalysisContext the variables referenced
...
by a block, also look at the contained blocks.
llvm-svn: 98111
2010-03-10 00:18:11 +00:00
Benjamin Kramer
a3b13411fa
Simplify code a bit and remove unneeded semicolons.
...
llvm-svn: 97654
2010-03-03 16:28:47 +00:00
Ted Kremenek
0f0883b918
Fix an algorithmic bug in LiveVariables pointed out by Zhongxing.
...
If an initializer in a DeclStmt references the declared variable, that
extends the liveness of that variable.
llvm-svn: 97624
2010-03-03 01:17:41 +00:00
Ted Kremenek
5d2bb1b9b3
[CFG]
...
After discussion with Zhongxing, don't force the initializer of DeclStmts to be
block-level expressions.
This led to some interesting fallout:
[UninitializedValues]
Always visit the initializer of DeclStmts (do not assume they are block-level expressions).
[BasicStore]
With initializers of DeclStmts no longer block-level expressions, this causes self-referencing initializers (e.g. 'int x = x') to no longer cause the initialized variable to be live before the DeclStmt. While this is correct, it caused BasicStore::RemoveDeadBindings() to prune off the values of these variables from the initial store (where they are set to uninitialized). The fix is to back-port some (and only some) of the lazy-binding logic from RegionStore to
BasicStore. Now the default values of local variables are determined lazily as opposed
to explicitly initialized.
llvm-svn: 97591
2010-03-02 21:43:54 +00:00
Zhongxing Xu
d497e126cb
Register all parameters even if they didn't occur in the function body.
...
We may query their liveness because they are added to store when passing
argument values.
llvm-svn: 97562
2010-03-02 10:08:30 +00:00
Ted Kremenek
80263e5905
Allow a '0' precision in format strings (as the man page says it is okay).
...
Fixes <rdar://problem/7700339>.
llvm-svn: 97482
2010-03-01 19:22:33 +00:00
Ted Kremenek
d166819c26
For printf format string checking, add support for positional format strings.
...
Along the way, coelesce some of the diagnostics.
llvm-svn: 97297
2010-02-27 01:41:03 +00:00
Ted Kremenek
4a49d9818b
For printf format string checking, move the tracking of the data argument index out of
...
Sema and into analyze_printf::ParseFormatString(). Also use a bitvector to determine
what arguments have been covered (instead of just checking to see if the last argument consumed is the max argument). This is prep. for support positional arguments (an IEEE extension).
llvm-svn: 97248
2010-02-26 19:18:41 +00:00
Zhongxing Xu
a396e617b5
Always add CallExpr as block-level expression. Inline-based interprocedural
...
analysis needs this.
llvm-svn: 97014
2010-02-24 02:19:28 +00:00
Ted Kremenek
74a4ce7f1e
Add support for '%C' and '%S' printf conversion specifiers.
...
llvm-svn: 97005
2010-02-24 00:05:54 +00:00
Ted Kremenek
552eeaa93e
Move the rest of the unreachable code analysis from libSema
...
to libAnalysis (with only the error reporting in libSema).
llvm-svn: 96893
2010-02-23 05:59:20 +00:00
Ted Kremenek
7296de9ae3
Start moving some of the logic for the unreachable code analysis out of libSema
...
and into libAnalysis.
llvm-svn: 96872
2010-02-23 02:39:16 +00:00
Daniel Dunbar
260918ce5c
Revert "Simplify code: Succ is guaranteed to be not NULL.", which turns out to
...
not be guaranteed.
llvm-svn: 96782
2010-02-22 05:58:59 +00:00
Zhongxing Xu
d39620c451
Simplify code: Succ is guaranteed to be not NULL.
...
llvm-svn: 96772
2010-02-22 02:59:27 +00:00
Zhongxing Xu
86bab2cddd
Add a utility method.
...
llvm-svn: 96471
2010-02-17 08:45:06 +00:00
Ted Kremenek
c8b188d541
Refactor the logic for printf argument type-checking into analyze_printf::ArgTypeResult.
...
Implement printf argument type checking for '%s'.
Fixes <rdar://problem/3065808>.
llvm-svn: 96310
2010-02-16 01:46:59 +00:00
Ted Kremenek
2a0cd59f8e
Convert tabs to spaces.
...
llvm-svn: 95621
2010-02-09 00:04:09 +00:00
Ted Kremenek
5abd69d946
Teach RegionStore::InvalidateRegions() to also invalidate static variables referenced by blocks.
...
llvm-svn: 95459
2010-02-06 00:30:00 +00:00
Ted Kremenek
1de1707bfc
Move ParseFormatString() and FormatStringHandler back into the analyze_printf namespace.
...
llvm-svn: 95324
2010-02-04 20:46:58 +00:00
Ted Kremenek
016b605266
Add format string type checking support for 'long double'.
...
llvm-svn: 95026
2010-02-01 23:23:50 +00:00
Daniel Dunbar
19b70bd46c
Recognize 'q' as a format length modifier (from BSD).
...
llvm-svn: 94894
2010-01-30 15:49:20 +00:00
Ted Kremenek
9ff02052dd
Add format string checking of 'double' arguments. Fixes <rdar://problem/6931734>.
...
llvm-svn: 94867
2010-01-30 01:02:18 +00:00
Ted Kremenek
ba775fe5c7
Fix spacing.
...
llvm-svn: 94852
2010-01-29 23:00:35 +00:00
Ted Kremenek
79db7b7b17
Per a suggestion from Cristian Draghici, add a method to FormatSpecifier that returns the expected type of the matching data argument. It isn't complete, but should handle several of the important cases.
...
llvm-svn: 94851
2010-01-29 22:59:32 +00:00
Ted Kremenek
23a71a1cdf
Enhancements to the alternate (WIP) format string checking:
...
- Add ConversionSpecifier::consumesDataArgument() as a helper method
to determine if a conversion specifier requires a matching argument.
- Add support for glibc-specific '%m' conversion
- Add an extra callback to HandleNull() for locations within the
format specifier that have a null character
llvm-svn: 94834
2010-01-29 20:29:53 +00:00
Ted Kremenek
c22f78ddfd
Alternate format string checking: issue warnings for incomplete format specifiers.
...
In addition, move ParseFormatString() and FormatStringHandler() from
the clang::analyze_printf to the clang namespace. Hopefully this will
resolve some link errors on Linux.
llvm-svn: 94794
2010-01-29 03:16:21 +00:00
Ted Kremenek
94af575e9c
Alternate format string checking: issue a warning for invalid conversion specifiers.
...
llvm-svn: 94792
2010-01-29 02:40:24 +00:00
Ted Kremenek
176f7d6ef0
Yet another attempt to make the Linux buildbots happy. Apparently there are differences on how nested namespaces are handled...
...
llvm-svn: 94790
2010-01-29 02:13:53 +00:00
Ted Kremenek
559d89a02a
Move definition of FormatStringHandler::~FormatStringHandler() within namespace directives. Hopefully this will make the Linux buildbots happy.
...
llvm-svn: 94784
2010-01-29 01:37:52 +00:00
Ted Kremenek
5739de77fa
Add precision/field width checking to AlternateCheckPrintfString().
...
llvm-svn: 94774
2010-01-29 01:06:55 +00:00
Ted Kremenek
b5c98ef61e
Fix off-by-one error in ParseFormatSpecifier() when reporting the location of a null character.
...
llvm-svn: 94762
2010-01-28 23:56:52 +00:00
Ted Kremenek
fee0e96c82
Add position of conversion specifier character to 'ConversionSpecifier'.
...
llvm-svn: 94739
2010-01-28 02:46:17 +00:00
Ted Kremenek
08ad1cceb3
Rename namespace clang::printf to clang::analyze_printf to avoid problems where the reference to 'printf' is ambiguous.
...
llvm-svn: 94733
2010-01-28 02:02:59 +00:00
Ted Kremenek
bcbdaea703
Allow HandleFormatSpecifier() to indicate that no more processing of the format string is desired.
...
llvm-svn: 94715
2010-01-28 01:00:59 +00:00