aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2010-09-10Add ObjCAtSynchronizedStmt to the CFG and add GRExprEngine support (PreVisit ↵Ted Kremenek
for checkers). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113572 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-10Update checker build.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113569 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-10Added AnalyzerStatsChecker, a path sensitive check that reports visitation ↵Tom Care
statistics about analysis. Running clang with the -analyzer-stats flag will emit warnings containing the information. We can then run a postanalysis script to take this data and give useful information about how much the analyzer missed in a project. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113568 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-10Add libclang support for label statements, gotos, and taking theDouglas Gregor
address of a label (GNU extension). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113564 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Add libclang visitation for C99 designated initializers.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113560 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Add libclang visitation for __builtin_offsetof's components (fieldsDouglas Gregor
and array references). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113556 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09property reference expression used on lhs of assignmentFariborz Jahanian
follows objective's semantics and is not overload'able with an assignment operator. Fixes a crash and a missing diagnostics. Radar 8379892. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113555 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Clean up obtuse wording of checker diagnostic of using an uninitialized ↵Ted Kremenek
value in a function call. Fixes: <rdar://problem/8409480> “warning: Pass-by-value argument in function call is undefined” message can be improved git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113554 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09When we parse a pragma, keep track of how that pragma was originallyDouglas Gregor
spelled (#pragma, _Pragma, __pragma). In -E mode, use that information to add appropriate newlines when translating _Pragma and __pragma into #pragma, like GCC does. Fixes <rdar://problem/8412013>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113553 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Driver/Darwin: Make the compilation object available in AddLinkArgs.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113549 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Teach libclang to walk the base and member initializers of aDouglas Gregor
constructor, in source order. Also introduces a new reference kind for class members, which is used here (for member initializers) and will also be used for designated initializers and offsetof. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113545 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Fix typo in diagnostic.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113542 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Driver: Mark function as nounwind when -mkernel or -fapple-kext is present.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113541 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Remove the 'rc' suffix. It indicates a "release candidate" during LLVM releaseBill Wendling
qualification. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113534 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Use FindReportInEquivalenceClass to identify all the nodes used for the ↵Ted Kremenek
trimmed graph (in BugReporter). This fixes a problem where a leak that happened to occur on both an exit() path and a non-exit() path was getting reported with the exit() path (which users don't care about). This fixes: <rdar://problem/8331641> leak reports should not show paths that end with exit() (but ones that don't end with exit()) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113524 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Frontend: Add -cxx-system-include option which can be used to specify anDaniel Dunbar
explicit list for the C++ system include directories at the -cc1 level, as an alternative to the horrible AddDefaultCPlusPlusIncludePaths(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113505 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Fix indentation.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113504 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Simplify template instantiation for C++ exception declarations,Douglas Gregor
eliminating an unnecessary use of TemporaryBase in the process. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113500 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Eliminate some unnecessary uses of TreeTransform::TemporaryBase. ThereDouglas Gregor
are still a few (legitimate, unfortunate) uses of this hack around, but at least now there are fewer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113498 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Eliminate the comma locations from all of the Sema routines that dealDouglas Gregor
with comma-separated lists. We never actually used the comma locations, nor did we store them in the AST, but we did manage to waste time during template instantiation to produce fake locations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113495 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Use temporary files for this test, to see if we can flush out an ↵Douglas Gregor
inexplicable error on Windows git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113493 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Add proper type-source information to UnaryTypeTraitExpr, includingDouglas Gregor
libclang visitation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113492 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Clean up CMake dependenciesDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113489 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Remove unused variable.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113482 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Fix C++ PCH issue.Argyrios Kyrtzidis
Another beating by boost in this test case: http://llvm.org/PR8117 A function specialization wasn't properly initialized if it wasn't canonical. I wish there was a nice little test case but this was boost. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113481 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09do not bind temporaries to non-const referencesGabor Greif
this fixes all analyser test failures in my gcc34-based environment how the cast result could bind to the non-const ref is somewhat mysterious and remains to be investigated; to avoid similar miscompilations (by gcc34 only?) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113480 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Rename GRState::getSVal() -> getRawSVal() and getSimplifiedSVal() -> getSVal().Ted Kremenek
The end result is now we eagarly constant-fold symbols in the analyzer that are perfectly constrained to be a constant value. This allows us to recover some path-sensitivity in some cases by lowering the required level of reasoning power needed to evaluate some expressions. The net win from this change is that the false positive in PR 8015 is fixed, and we also find more idempotent operations bugs. We do, however, regress with the BugReporterVisitors, which need to be modified to understand this constant folding (and look past it). This causes some diagnostic regressions in plist-output.m which will get addressed in a future patch. plist-output.m is now marked XFAIL, while plist-output-alternate.m now tests that the plist output is working, but with the suboptimal diagnostics. This second test file will eventually be removed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113477 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Fix indentation.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113476 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Check format strings when a called function has more than one FormatAttr ↵Ted Kremenek
(one for 'scanf' and one for 'printf'). Fixes <rdar://problem/8409437>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113472 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09It appears that technically a null format string is not warned under ↵Ted Kremenek
-Wformat-nonliteral, as the function processing the format string can decided whether or not to accept a null format string (e.g., asl_log). Fixes <rdar://problem/8269537>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113469 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Avoid redundant recursive calls in SemaCheckStringLiteral by just updating ↵Ted Kremenek
the expression and trying again. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113468 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Remove tabs I accidentally introduced.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113467 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Remove stray ';' and convert tabs to spaces.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113466 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Simplified reachability checking in IdempotentOperationChecker and added a ↵Tom Care
helper function for path display. - Created private class CFGReachabilityAnalysis, which provides cached reachability lookups in the CFG - Simplified PathWasCompletelyAnalyzed to use the new reachability class - Added getLastRelevantNodes function for future use with path displaying in BugReporter git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113465 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Relax __attribute_((nonnull)) checking to allow the attribute on functions ↵Ted Kremenek
with no pointer arguments. GCC doesn't warn in this case, and the attribute is trivially satisfied (and benign). Fixes <rdar://problem/8364828>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113464 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Include test case for <rdar://problem/5880430>.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113458 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Static analyzer fix: <rdar://problem/5880430> Switch on enum should not ↵Ted Kremenek
consider default case live if all enum values are covered git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113457 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Block ivar layout must assume that the 'isa'Fariborz Jahanian
field of the block descriptor is GC'able (scanned) as this what the runtime expects (one can send it messages). Radar 8394947. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113454 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Enhance -Wunreachable-code to not consider the 'default:' branch of a switch ↵Ted Kremenek
statement live if a switch on an enum value has explicit 'case:' statements for each enum value. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113451 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Enhance -Wreturn-type to not warn when control-flow is most likely limited ↵Ted Kremenek
by a switch statement explicitly covering all the cases for an enum value. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113450 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Add 'filtered_pred_iterator' and 'filtered_succ_iterator' to CFGBlock. This ↵Ted Kremenek
allows a client to selectively walk successors/predecessors based on commonly used filters. For starters, add a filter to ignore 'default:' cases for SwitchStmts when all enum values are covered by CaseStmts. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113449 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Initialize 'AllEnumCasesCovered' in SwitchStmt's constructor.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113448 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09When building SwitchStmts in Sema, record whether all the enum values of a ↵Ted Kremenek
switch(enum) where covered by individual case statements. Flow-based analyses may wish to consult this information, and recording this in the AST allows us to obviate reconstructing this information later when we build the CFG. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113447 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08Push the range associated with a nested-name-specifier further throughDouglas Gregor
TreeTransform, since we were getting an empty source range where we shouldn't. Sadly, the test case is Boost.Proto, and isn't worth reducing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113446 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08Fix warnings caused by new CXXUuidofExprClass enumerator.Francois Pichet
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113444 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08Add another missing CMake dependency.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113443 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08Fix a few minor issues with parsing and semantic analysis of C++Douglas Gregor
typeid expressions: - make sure we have a proper source location for the closing ')' - cache the declaration of std::type_info once we've found it git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113441 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08Add support for a few MS extensions supported by the Borland compilerDawn Perchik
(__uuidof, _fastcall, etc.). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113434 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08When providing a completion for a function/method parameter of blockDouglas Gregor
pointer type, actually provide a usable block literal expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113431 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08Test removed.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113428 91177308-0d34-0410-b5e6-96231b3b80d8