| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 102576
|
|
|
|
| |
llvm-svn: 101236
|
|
|
|
| |
llvm-svn: 101127
|
|
|
|
|
|
| |
lvalue context. Fixes <rdar://problem/7813989>.
llvm-svn: 100966
|
|
|
|
|
|
| |
be treated as indicating an lvalue.
llvm-svn: 100965
|
|
|
|
| |
llvm-svn: 100964
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
This patch moves some methods from QualType to Type and changes the users to
use -> instead of .
llvm-svn: 99805
|
|
|
|
| |
llvm-svn: 99479
|
|
|
|
|
|
|
| |
are called (transitively) by regular functions/blocks within a
translation untion.
llvm-svn: 99233
|
|
|
|
|
| |
Tested: make CPPFLAGS=-m64 CXXFLAGS=-m64 -j8 && (cd tools/clang;make test)
llvm-svn: 98399
|
|
|
|
|
|
| |
by a block, also look at the contained blocks.
llvm-svn: 98111
|
|
|
|
| |
llvm-svn: 97654
|
|
|
|
|
|
|
| |
If an initializer in a DeclStmt references the declared variable, that
extends the liveness of that variable.
llvm-svn: 97624
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
We may query their liveness because they are added to store when passing
argument values.
llvm-svn: 97562
|
|
|
|
|
|
| |
Fixes <rdar://problem/7700339>.
llvm-svn: 97482
|
|
|
|
|
|
| |
Along the way, coelesce some of the diagnostics.
llvm-svn: 97297
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
analysis needs this.
llvm-svn: 97014
|
|
|
|
| |
llvm-svn: 97005
|
|
|
|
|
|
| |
to libAnalysis (with only the error reporting in libSema).
llvm-svn: 96893
|
|
|
|
|
|
| |
and into libAnalysis.
llvm-svn: 96872
|
|
|
|
|
|
| |
not be guaranteed.
llvm-svn: 96782
|
|
|
|
| |
llvm-svn: 96772
|
|
|
|
| |
llvm-svn: 96471
|
|
|
|
|
|
|
|
|
|
| |
analyze_printf::ArgTypeResult.
Implement printf argument type checking for '%s'.
Fixes <rdar://problem/3065808>.
llvm-svn: 96310
|
|
|
|
| |
llvm-svn: 95621
|
|
|
|
|
|
| |
referenced by blocks.
llvm-svn: 95459
|
|
|
|
|
|
| |
analyze_printf namespace.
llvm-svn: 95324
|
|
|
|
| |
llvm-svn: 95026
|
|
|
|
| |
llvm-svn: 94894
|
|
|
|
|
|
| |
<rdar://problem/6931734>.
llvm-svn: 94867
|
|
|
|
| |
llvm-svn: 94852
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
specifiers.
llvm-svn: 94792
|
|
|
|
|
|
| |
differences on how nested namespaces are handled...
llvm-svn: 94790
|
|
|
|
|
|
| |
namespace directives. Hopefully this will make the Linux buildbots happy.
llvm-svn: 94784
|
|
|
|
| |
llvm-svn: 94774
|
|
|
|
|
|
| |
of a null character.
llvm-svn: 94762
|
|
|
|
| |
llvm-svn: 94739
|
|
|
|
|
|
| |
where the reference to 'printf' is ambiguous.
llvm-svn: 94733
|
|
|
|
|
|
| |
format string is desired.
llvm-svn: 94715
|
|
|
|
| |
llvm-svn: 94713
|
|
|
|
| |
llvm-svn: 94707
|
|
|
|
|
|
| |
in SemaChecking).
llvm-svn: 94704
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
strings than what we currently have in Sema. This is both an
experiment and a WIP.
The idea is simple: parse the format string incrementally,
constructing a well-structure representation of each format specifier.
Each format specifier is then handed back one-by-one to a client via a
callback. Malformed format strings are also handled with callbacks.
The idea is to separate the parsing of the format string from the
emission of diagnostics. Currently what we have in Sema for handling
format strings is a mongrel of both that is hard to follow and
difficult to modify (I can apply this label since I'm the original
author of that code).
This is in libAnalysis as it is reasonable generic and can potentially
be used both by libSema and libChecker.
Comments welcome.
llvm-svn: 94702
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(1) libAnalysis is a generic analysis library that can be used by
Sema. It defines the CFG, basic dataflow analysis primitives, and
inexpensive flow-sensitive analyses (e.g. LiveVariables).
(2) libChecker contains the guts of the static analyzer, incuding the
path-sensitive analysis engine and domain-specific checks.
Now any clients that want to use the frontend to build their own tools
don't need to link in the entire static analyzer.
This change exposes various obvious cleanups that can be made to the
layout of files and headers in libChecker. More changes pending. :)
This change also exposed a layering violation between AnalysisContext
and MemRegion. BlockInvocationContext shouldn't explicitly know about
BlockDataRegions. For now I've removed the BlockDataRegion* from
BlockInvocationContext (removing context-sensitivity; although this
wasn't used yet). We need to have a better way to extend
BlockInvocationContext (and any LocationContext) to add
context-sensitivty.
llvm-svn: 94406
|