aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis
AgeCommit message (Collapse)Author
2010-05-13Don't add a null successor to a CFGBlock when the contents of an ↵Ted Kremenek
@synchronized statement is empty. Fixes <rdar://problem/7979430>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103717 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Unbreak CMake build.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103077 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-30Add null check in CFGBuilder::VisitStmt() to make CFG constructionTed Kremenek
more resilient to bad code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102793 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-29Fix CFG crasher involving statement expressions reported in PR 6938.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102576 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-14Use direct assignment instead of user defined conversion.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101236 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-13CFGBuilder: always add C++ member call expr as block-level expr.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101127 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-11Fix CFG bug where bases of member expressions were not always evaluated in a ↵Ted Kremenek
lvalue context. Fixes <rdar://problem/7813989>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100966 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-11Fix bug in AddStmtChoice:asLValue() where 'AsLValueNotAlwaysAdd' would not ↵Ted Kremenek
be treated as indicating an lvalue. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100965 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-11Sort visitor methods. No functionality change.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100964 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30the big refactoring bits of PR3782.Rafael Espindola
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99920 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-29Be a bit more consistent in using operator->Rafael Espindola
This patch moves some methods from QualType to Type and changes the users to use -> instead of . git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99805 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25Fix '+=' accumulation error when parsing numeric amounts in a format string.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99479 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-23Only perform CFG-based warnings on 'static inline' functions thatTed Kremenek
are called (transitively) by regular functions/blocks within a translation untion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99233 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-12Allow users to set CPPFLAGS and CXXFLAGS on the make command line.Jeffrey Yasskin
Tested: make CPPFLAGS=-m64 CXXFLAGS=-m64 -j8 && (cd tools/clang;make test) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98399 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-10When computing in AnalysisContext the variables referencedTed Kremenek
by a block, also look at the contained blocks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98111 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-03Simplify code a bit and remove unneeded semicolons.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97654 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-03Fix an algorithmic bug in LiveVariables pointed out by Zhongxing.Ted Kremenek
If an initializer in a DeclStmt references the declared variable, that extends the liveness of that variable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97624 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-02[CFG]Ted Kremenek
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97591 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-02Register all parameters even if they didn't occur in the function body.Zhongxing Xu
We may query their liveness because they are added to store when passing argument values. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97562 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-01Allow a '0' precision in format strings (as the man page says it is okay).Ted Kremenek
Fixes <rdar://problem/7700339>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97482 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-27For printf format string checking, add support for positional format strings.Ted Kremenek
Along the way, coelesce some of the diagnostics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97297 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-26For printf format string checking, move the tracking of the data argument ↵Ted Kremenek
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). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97248 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-24Always add CallExpr as block-level expression. Inline-based interproceduralZhongxing Xu
analysis needs this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97014 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-24Add support for '%C' and '%S' printf conversion specifiers.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97005 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Move the rest of the unreachable code analysis from libSemaTed Kremenek
to libAnalysis (with only the error reporting in libSema). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96893 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Start moving some of the logic for the unreachable code analysis out of libSemaTed Kremenek
and into libAnalysis. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96872 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-22Revert "Simplify code: Succ is guaranteed to be not NULL.", which turns out toDaniel Dunbar
not be guaranteed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96782 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-22Simplify code: Succ is guaranteed to be not NULL.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96772 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-17Add a utility method.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96471 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-16Refactor the logic for printf argument type-checking into ↵Ted Kremenek
analyze_printf::ArgTypeResult. Implement printf argument type checking for '%s'. Fixes <rdar://problem/3065808>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96310 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-09Convert tabs to spaces.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95621 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-06Teach RegionStore::InvalidateRegions() to also invalidate static variables ↵Ted Kremenek
referenced by blocks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95459 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-04Move ParseFormatString() and FormatStringHandler back into the ↵Ted Kremenek
analyze_printf namespace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95324 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-01Add format string type checking support for 'long double'.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95026 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-30Recognize 'q' as a format length modifier (from BSD).Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94894 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-30Add format string checking of 'double' arguments. Fixes ↵Ted Kremenek
<rdar://problem/6931734>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94867 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-29Fix spacing.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94852 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-29Per a suggestion from Cristian Draghici, add a method to FormatSpecifier ↵Ted Kremenek
that returns the expected type of the matching data argument. It isn't complete, but should handle several of the important cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94851 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-29Enhancements to the alternate (WIP) format string checking:Ted Kremenek
- 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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94834 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-29Alternate format string checking: issue warnings for incomplete format ↵Ted Kremenek
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94794 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-29Alternate format string checking: issue a warning for invalid conversion ↵Ted Kremenek
specifiers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94792 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-29Yet another attempt to make the Linux buildbots happy. Apparently there are ↵Ted Kremenek
differences on how nested namespaces are handled... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94790 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-29Move definition of FormatStringHandler::~FormatStringHandler() within ↵Ted Kremenek
namespace directives. Hopefully this will make the Linux buildbots happy. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94784 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-29Add precision/field width checking to AlternateCheckPrintfString().Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94774 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-28Fix off-by-one error in ParseFormatSpecifier() when reporting the location ↵Ted Kremenek
of a null character. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94762 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-28Add position of conversion specifier character to 'ConversionSpecifier'.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94739 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-28Rename namespace clang::printf to clang::analyze_printf to avoid problems ↵Ted Kremenek
where the reference to 'printf' is ambiguous. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94733 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-28Allow HandleFormatSpecifier() to indicate that no more processing of the ↵Ted Kremenek
format string is desired. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94715 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-28Add '@' conversion specifier.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94713 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-28Remove invalid conversion specifiers from format string checking.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94707 91177308-0d34-0410-b5e6-96231b3b80d8