aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2008-02-27Fixed bug in the core transfer function logic for CallExprs where we wouldTed Kremenek
sometimes skip evaluating all the arguments when some arguments would not create new ExplodedNodes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47650 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27Fixed CFG construction bug that occurred when a condition for a loop spannedTed Kremenek
multiple basic blocks (which can happen when they contain '&&', '||', '?'). The bug was that the loop backedge when to the last block in the loop condition, not the first. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47649 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26fix an interaction between -isystem . and isysroot.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47646 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Fix bug when processing '?' operator: invalidate the old "Uninitialized" ↵Ted Kremenek
value of the block-level expression for ?. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47645 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Added boilerplate for plug-in transfer function support for CallExprs.Ted Kremenek
GRSimpleVals performs the following action: invalidate all values passed-by-reference. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47638 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Don't emit divide-by-zero errors when we divide by an unknown (notTed Kremenek
uninitialized) value. At this point we're just too imprecise. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47636 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Changed VarDecl::hasGlobalStorage() to be the negation of hasLocalStorage().Ted Kremenek
Before it was the negation of hasAutoStorage(), which is incorrect. "Register" storage for Decls do not indicate global variables. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47630 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Implement codegen for the following static var init.Lauro Ramos Venancio
void g() { static char a[10]; static char *b = a; } Now we can compile wget! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47627 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Removed static analysis-specific diagnostics from DiagnosticKinds.def.Ted Kremenek
Use custom diagnostics for static analysis checkers. Added warnings for dereferencing uninitialized values and divide-by-zeroes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47626 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Removed hack with toggling the signedness flag of the APSInt storedTed Kremenek
in an EnumConstantDecl. This was made possible because of a recent fix in the parser: http://llvm.org/viewvc/llvm-project?rev=47581&view=rev git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47624 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Small fixes to shore up overhauling of transfer function logic for '&&' and '||.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47620 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Fix a bug in ConvertAsmString function. Lauro Ramos Venancio
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47618 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26optimization: no longer create ExplodedNodes for IntegerLiteral andTed Kremenek
CharacterLiteral expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47617 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Major cleanup of the transfer function logic for '&&', '||', and '?'. WeTed Kremenek
now store in the state essentially which branch we took. This removes a bunch of bogus assumptions (and likely bugs), reduces the complexity of the implementation, and facilitates more optimizations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47613 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Convert x86 target specific inline asm constraints to LLVM.Lauro Ramos Venancio
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47609 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Fixed inverted condition.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47590 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Do include ParenExpr in the CFG; only include their subexpression.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47588 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Added lazy "symbolication" of parameter variables and global variables.Ted Kremenek
Added recording of divide-by-zero and divide-by-uninitialized nodes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47586 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26add parsing, ast building and pretty printing support for C++ throw expressions.Chris Lattner
Patch by Mike Stump! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47582 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Fix PR2092 by making sure the sign of the enum value follows the Chris Lattner
sign of its type in the early exit case. No testcase, because this doesn't manifest as a failure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47581 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26fix const correctness.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47580 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Fixed bug in CFG construction when a CompoundStmt ended with a NullStmt.Ted Kremenek
This caused the whole body to get dropped from the CFG. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47579 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Added FIXME.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47578 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25Minor bug fix in LiveVariables: don't "kill" decls referenced by a DeclStmtTed Kremenek
that aren't VarDecls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47572 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25Fix a little typo... per cfe-dev, this was apparently causing test Eli Friedman
failures on OS X in some cases. (Thank you valgrind.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47568 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25clarify comment, this is undefined behavior in any case, even if it onlyChris Lattner
bits VC++ right now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47565 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25doxygenify some comments.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47564 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25Better handling of calls to functions via function pointers.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47562 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25convert tabs to spaces, patch by Mike Stump!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47560 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25Revert an incorrect part of my previuos patch.Lauro Ramos Venancio
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47553 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25Fix PR2086.Lauro Ramos Venancio
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47551 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25Fixed bug in RemoveDeadBindings when performing the mark-and-sweep over theTed Kremenek
symbolic store: VarDecl's inserted into the sweep may not always bind to anything; handle this special case just like bindings to uninitialized values. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47550 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25Expanded transfer function support for divide-by-zero checking to includeTed Kremenek
"remainder-by-zero" checking (operator '%'). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47549 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25Added hack to transfer function logic to handle the case where a DeclRefExprTed Kremenek
wrapping an EnumConstantDecl evaluates to an integer type that has a different signedness than the APSInt stored in the EnumConstantDecl. Will file a Bugzilla report. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47548 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25Added transfer function support for checking for divide-by-zero errors.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47547 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25enable digraphs for C94, thanks to Neil for pointing this out.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47543 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-24Fix PR2090, a typo in digraph processing.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47540 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-24Update comment.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47539 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-24Move the initialization of SEL/objc_selector from Sema::Sema() to ↵Steve Naroff
Sema::ActOnTranslationUnitScope() and make sure the type/struct get inserted into the translation unit scope. Bug submitted by David Chisnall (thanks!). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47538 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-24Two more Windows-related fixes:Ted Kremenek
- More enum signeness bitfield fixes (MSVC treats enums as signed). - Fixed in Lex/HeaderSearch.cpp an unsafe copy between two HeaderSearch::PerFileInfo entries in a common vector. The copy involved two calls to getFileInfo() within the assignment; these calls could have side-effects that enlarged the internal vector, and with MSVC this would invalidate one of the values in the assignment. Patch by Argiris Kirtzidis! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47536 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-24In FileManager: use full paths to unique files and directories on Windows,Ted Kremenek
since inodes are bogus abstraction on that platform. Patch by Argiris Kirtzidis! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47535 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23Minor code cleanup.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47530 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23Change encoding of TokenKind in IdentifierTable to be of type "unsigned"Ted Kremenek
instead of TokenKind because of signedness issues with MSVC and enums. Patch from Argiris Kirtzidis. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47515 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-23Patch from Argiris Kirtzidis:Ted Kremenek
The patch fixes some debug assertions that the msvcrt throws: 1) - if (isprint(value) && value < 256) { + if (value < 256 && isprint(value)) { isprint() does an assertion check of its own for value < 256; check value before calling it to prevent it. 2) - Stmt->Names.push_back(std::string(&data[0], data.size())); + if (data.size() == 0) + Stmt->Names.push_back(std::string()); + else + Stmt->Names.push_back(std::string(&data[0], data.size())); If data.size() == 0 then data[0] throws "out of range" assertion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47512 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22Fixed horrid bug in LiveVariables analysis where we were only merging atTed Kremenek
confluence points the liveness information for variables (Decls) and NOT block-level expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47506 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22Modified clang driver option -dump-live-variables to (optionally) use theTed Kremenek
--analyze-function option to analyze specific functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47498 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22clang driver options --dump-cfg and --view-cfg now (optionally) use theTed Kremenek
--analyze-function option to dump/view the CFGs of specific functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47497 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22When running the GRSimpleVals analysis, skip functions that do notTed Kremenek
appear in a file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47491 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22Punt on unifying symbolic lvalues. This won't be needed for many checkers.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47489 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22Added "assumption" logic for lval::FuncVal and lval::GotoLabel, and simplifiedTed Kremenek
assumption logic for lval::DeclVal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47466 91177308-0d34-0410-b5e6-96231b3b80d8