aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2009-11-23Explicitly track the condition variable within an "if" statement,Douglas Gregor
rather than burying it in a CXXConditionDeclExpr (that occassionally hides behind implicit conversions). Similar changes for switch, while, and do-while will follow, then the removal of CXXConditionDeclExpr. This commit is the canary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89717 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Add clang -cc1 parsing of diagnostic options.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89716 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23After performing a bounds check in ArrayBoundChecker, record the fact that a ↵Ted Kremenek
bounds check succeeded by transitioning the ExplodedGraph. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89712 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Clean up the Checker API a little more, resolving some hidden bugsTed Kremenek
along the way. Important changes: 1) To generate a sink node, use GenerateSink(); GenerateNode() is for generating regular transitions. This makes the API clearer and also allows us to use the 'bool' option to GenerateNode() for a different purpose. 2) GenerateNode() now automatically adds the generated node to the destination ExplodedNodeSet (autotransition) unless the client specifies otherwise with a bool flag. Several checkers did not call 'addTransition()' after calling 'GenerateNode()', causing the simulation path to be prematurely culled when a non-fail stop bug was encountered. 3) Add variants of GenerateNode()/GenerateSink() that take neither a Stmt* or a GRState*; most callers of GenerateNode() just pass in the same Stmt* as provided when the CheckerContext object is created; we can just use that the majority of the time. This cleanup also allows us to potentially coelesce the APIs for evaluating branches and end-of-paths (which currently directly use builders). 4) addTransition() no longer needs to be called except for a few cases. We now have a variant of addTransition() that takes a GRState*; this allows one to propagate the updated state without caring about generating a new node explicitly. This nicely cleaned up a bunch of cases that called autoTransition() with a bunch of conditional logic surround the call (that common logic has now been swallowed up by addTransition() itself). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89707 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Don't try to treat an enum constant as an lvalue.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89705 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Convert the && and || operands to bool using standard conversions. Fixes PR5593.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89704 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Fixe a crash in encoding of SEL type caused by recent changes.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89696 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Handle converting member pointers to bool.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89692 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Fix a recent regression probably caused by addition of altivec-styleFariborz Jahanian
type-casts in the parser. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89691 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Provide out-of-line definition for destructor of Checker.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89688 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Tweak UndefBranchChecker to register the most nested "undefined" expression ↵Ted Kremenek
with bugreporter::registerTrackNullOrUndefValue instead of the condition itself. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89682 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Make 'SEL' pointer to a builtin type and not anFariborz Jahanian
objective-c pointer type. This was a serious mishap and luckily, Ted's test caught that (and patch fixes the test case). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89680 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Cleanup title/description of "undefined branch" BugType and add some test ↵Ted Kremenek
cases for this check. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89679 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Handle base-to-derived casts. Will land test case shortly.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89678 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Put back hard-coded paths for win32 until I figure out what happened to ↵John Thompson
failed tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89677 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Intercept sizeof and alignof references before they get into ASTContext ↵Sebastian Redl
methods. This fixes a crash when writing sizeof(Incomplete&), and lets ASTContext's methods do the right thing for CodeGen, which fixes PR5590. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89668 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Reorder the header search a bit so that it matches gcc exactly:Rafael Espindola
*) the ../backward dir is the last in libstdc++ to be searched *) If compiling c++, the c++ headers are searched first git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89661 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Let using directives refer to namespace aliases. Fixes PR5479.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89657 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Require a class type to be complete before probing its conversionDouglas Gregor
functions for a switch condition's conversion to integral or enumeration type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89656 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Implement conversion from a switch condition with class type to anDouglas Gregor
integral or enumeration type (vi user-defined conversions). Fixes PR5518. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89655 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Canonical template arguments that are template template parameters byDouglas Gregor
their template parameter depth and position, so that we can match redeclarations appropriately. Fixes PR5527 and PR5528. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89654 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Improve type-checking of templates by distinguishing between membersDouglas Gregor
of the current instantiation and members of an unknown specialization when type-checking a qualified-if expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89653 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Do not mark declarations as used when performing overload resolution. Fixes ↵Douglas Gregor
PR5541 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89652 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Tolerate extraneous "template<>" headers better, downgrading theDouglas Gregor
complaint to a warning and providing a helpful node in the case where the "template<>" header is redundant because the corresponding template-id refers to an explicit specialization. C++0x might still change this behavior, and existing practice is all over the place on the number of "template<>" headers actually needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89651 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Fix CMake buildDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89650 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Centralize and complete the computation of value- and type-dependence for ↵Douglas Gregor
DeclRefExprs git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89649 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23UndefBranchChecker: more bug reporter helper information emit.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89643 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Initial refactor of UndefBranchChecker. We still use GRBranchNodeBuilderZhongxing Xu
in the checker directly. But I don't have a better approach for now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89640 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Encapsulate "an array of TemplateArgumentLocs and two angle bracket ↵John McCall
locations" into a new class. Use it pervasively throughout Sema. My fingers hurt. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89638 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Teach CodeGenFunction::EmitDecl to ignore Using and UsingShadow decls.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89633 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22x86_64, PR5582: Layout bases for C++ records.Daniel Dunbar
- Ideally we would have an single iteration interface for this, but this works for now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89632 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Recognize .hpp as a C++ header.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89630 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Add clang -cc1 parsing of analyzer options.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89629 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Fix LookupResult's sanity-check to handle shadow decls.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89624 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Change CheckDeadStores to use Expr::isNullPointerConstant, which will ↵Ted Kremenek
correctly determine whether an expression is a null pointer constant. Patch by Kovarththanan Rajaratnam! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89621 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Use EmitStoreOfScalar when copying the scalar to the space allocated by 'new'.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89613 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22When laying out bitfields, make sure that the data size is always aligned to ↵Anders Carlsson
a byte. This fixes PR5580. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89611 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Move bit-field layout out into a separate function. No functionality change.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89604 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Define SIG_ATOMIC_MIN and SIG_ATOMIC_MAX in terms of __SIG_ATOMIC_WIDTH__.Ken Dyck
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89598 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Define __SIG_ATOMIC_WIDTH__ for use in stdint.h.Ken Dyck
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89597 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Undefined compound assignment result is checked in ↵Zhongxing Xu
UndefinedAssignmentChecker. So this check is redundant. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89592 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Remove invalid comments. The result is undefined only when operands are ↵Zhongxing Xu
undefined. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89591 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Save and restore the HasGen flag in MallocChecker.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89590 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Don't include a dead header.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89587 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Remove UndefinedAssignmentChecker's header.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89585 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22If a C++ qualified id is followed by a postfix suffix, it is never the directJohn McCall
operand of an addressof operator, and so we should not treat it as an abstract member-pointer expression and therefore suppress the implicit member access. This is really a well-formedness constraint on expressions: a DeclRefExpr of a FieldDecl or a non-static CXXMethodDecl (or template thereof, or unresolved collection thereof) should not be allowed in an arbitrary location in the AST. Arguably it shouldn't be allowed anywhere and we should have a different expr node type for this. But unfortunately we don't have a good way of enforcing this kind of constraint right now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89578 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Reorganize the intermediate BuildDeclarationNameExpr routines again.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89575 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Consider a FunctionTemplate to be an overload all on its lonesome. TrackJohn McCall
this information through lookup rather than rederiving it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89570 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21Support emitting aggregate class initializers. Fixes PR5581.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89569 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21This patch implements objective-c's 'SEL' type as a built-inFariborz Jahanian
type and fixes a long-standing code gen. crash reported in at least two PRs and a radar. (radar 7405040 and pr5025). There are couple of remaining issues that I would like for Ted. and Doug to look at: Ted, please look at failure in Analysis/MissingDealloc.m. I have temporarily added an expected-warning to make the test pass. This tests has a declaration of 'SEL' type which may not co-exist with the new changes. Doug, please look at a FIXME in PCHWriter.cpp/PCHReader.cpp. I think the changes which I have ifdef'ed out are correct. They need be considered for in a few Indexer/PCH test cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89561 91177308-0d34-0410-b5e6-96231b3b80d8