aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2009-11-12PthreadLockChecker doesn't need PreVisitCallExpr() yet. All the current ↵Ted Kremenek
logic should be done in PostVisitCallExpr() git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86959 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Add most of the boilerplate logic for a simple pthread_mutux_lock() -> ↵Ted Kremenek
pthread_mutex_unlock() checker. We need to add a visitor method to Checker for handling dead symbols in order to detect locks that are not unlocked. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86958 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Remove obsolete 'struct NullDerefTag'.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86957 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Use the --with-c-include-dirs configure option.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86956 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Enhance Checker class (and GRExprEngine) to support PostVisitation for ↵Ted Kremenek
CallExprs. No clients (yet). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86949 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Remove GRExprEngine::EvalCall(). It had a single callsite in GRExprEngine, ↵Ted Kremenek
and was easily inlined. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86948 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Random const correctness, and incidentally use computeDeclContext when buildingJohn McCall
a using declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86942 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Switch PTHManager to using diagnostics for most errors.Daniel Dunbar
Also, always give errors on a token-cache PTH failure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86939 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Make StoreManager::getSizeInElements() always return DefinedOrUnknownSVal.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86932 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Note to self: don't leave debugging statements in the code for four hours.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86931 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Do not use StringRef while using DebugInfo interface.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86915 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Improve recovery in a wonky case where one tries to specialize aDouglas Gregor
template template parameter. When building a template-id type, check whether the template-name itself is dependent (even if the template arguments are not!) and handle it as a template-id type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86913 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Add <foo> = [<bar> nextObject] to the -Widiomatic-parentheses category,John McCall
and give that category an explicit test. Generalize the internal diagnostic name. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86905 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Remove an overly-eager assertion when replacing tokens with anDouglas Gregor
annotation token, because some of the tokens we're annotating might not be in the set of cached tokens (we could have consumed them unconditionally). Also, move the tentative parsing from ParseTemplateTemplateArgument into the one caller that needs it, improving recovery. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86904 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Tweak PCH -include handling to make sure it matches the name as would be presentDaniel Dunbar
in the predefines buffer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86903 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Template argument deduction for template template parameters. ThisDouglas Gregor
permits, among other things, ripping apart and reconstructing templates via partial specialization: template<typename T> struct DeepRemoveConst { typedef T type; }; template<typename T> struct DeepRemoveConst<const T> { typedef typename DeepRemoveConst<T>::type type; }; template<template<typename> class TT, typename T> struct DeepRemoveConst<TT<T> > { typedef TT<typename DeepRemoveConst<T>::type> type; }; Also, fix a longstanding thinko in the code handling partial ordering of class template partial specializations. We were performing the second deduction without clearing out the results of the first deduction. It's amazing we got through so much code with such a horrendous error :( git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86893 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Fix PR 5422: handle lvalue results when evaluating 'based' ptrtoints as part ofJohn McCall
the -Wconversion check. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86891 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11writable atomic property's setter/getter must be in 'lock' step ofFariborz Jahanian
either both synthesized or bith user defined. Implements radar 6557233. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86887 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Improve diagnostics when a default template argument does not matchDouglas Gregor
with its corresponding template parameter. This can happen when we performed some substitution into the default template argument and what we had doesn't match any more, e.g., template<int> struct A; template<typename T, template<T> class X = A> class B; B<long> b; Previously, we'd emit a pretty but disembodied diagnostic showing how the default argument didn't match the template parameter. The diagnostic was good, but nothing tied it to the *use* of the default argument in "B<long>". This commit fixes that. Also, tweak the counting of active template instantiations to avoid counting non-instantiation records, such as those we create for (surprise!) checking default arguments, instantiating default arguments, and performing substitutions as part of template argument deduction. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86884 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Always initialize the header search object as part of InitializePreprocessor;Daniel Dunbar
not doing this has little to no utility. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86883 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Allow Preprocessor to take ownership of the HeaderSearch object. I think it ↵Daniel Dunbar
should probably always own the header search object, but I'm not sure... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86882 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Sink AttachDependencyFileGen into CreatePreprocessor.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86881 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Add DependencyOutputOptions to wrap -M... options, and propogate toDaniel Dunbar
CompilerInvocation and clang-cc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86880 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Fix ctor vtable name. WIP.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86879 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Push ctor vtable construction down further. WIP.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86878 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Remove some stale ErrorNodes variables in GRExprEngine and the old buffer ↵Ted Kremenek
overflow logic in GRExprEngineInternalChecks.cpp. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86877 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11After drinking caffeine, add the two files missing from the previous submit.Chandler Carruth
Sorry about that. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86869 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Move handling of template parameter packs out of theDouglas Gregor
template-type-parameter specific template argument checking code and up to the template argument checking loop. In theory, this should make variadic templates work better; in practice, they don't well enough for us to care anyway (YET!), so this is mostly a re-organization to simplify CheckTemplateArgument. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86868 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Refactoring of template-argument checking code to reduce nesting,Douglas Gregor
increase sanity. No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86866 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Before checking a template template argument against its correspondingDouglas Gregor
template template parameter, substitute any prior template arguments into the template template parameter. This, for example, allows us to properly check the template template argument for a class such as: template<typename T, template<T Value> class X> struct Foo; The actual implementation of this feature was trivial; most of the change is dedicated to giving decent diagnostics when this substitution goes horribly wrong. We now get a note like: note: while substituting prior template arguments into template template parameter 'X' [with T = float] As part of this change, enabled some very pedantic checking when comparing template template parameter lists, which shook out a bug in our overly-eager checking of default arguments of template template parameters. We now perform only minimal checking of such default arguments when they are initially parsed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86864 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Move the ManagerRegistry to the Analysis library to resolve the layering ↵Chandler Carruth
violation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86863 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Do not eagerly set stop point for arguments. This misleads the debugger in ↵Devang Patel
identifying beginning of function body. Instead, create new location to attach with llvm.dbg.declare. This location is only used to find the context of the variable by the code generator, and it is not used to emit line number info. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86862 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Value initialize non-class array members in ctor'sFariborz Jahanian
initializer list. Fixes PR5463. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86849 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Instantiation of template template parameters for nested templates, e.g.,Douglas Gregor
template<typename T> struct X { template<template<T Value> class Y> struct Inner; }; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86844 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Fix speculative parsing of dependent template names inDouglas Gregor
nested-name-specifiers so that they don't gobble the template name (or operator-function-id) unless there is also a template-argument-list. For example, given T::template apply we would previously consume both "template" and "apply" as part of parsing the nested-name-specifier, then error when we see that there is no "<" starting a template argument list. Now, we parse such constructs tentatively, and back off if the "<" is not present. This allows us to parse dependent template names as one would use them for, e.g., template template parameters: template<typename T, template<class> class X = T::template apply> struct MetaSomething; Also, test default arguments for template template parameters. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86841 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Add undefined array subscript checker.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86837 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Remove the old out-of-bound checking code.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86836 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Reimplement out-of-bound array access checker with the new checker interface.Zhongxing Xu
Now only one test case is XFAIL'ed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86834 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11ReturnPointerRangeChecker: use StripCasts() instead of checking for zero indexZhongxing Xu
explicitly. Fix 80-col violations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86833 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Add PreprocessorOutputOptions to CompilerInvocation, and move initialization toDaniel Dunbar
clang-cc/Options.cpp git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86828 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Add PreprocessorOutputOptions, for things like -dM, -C, -CC which control -EDaniel Dunbar
mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86827 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Simplifiy target feature handling by coalescing all the logic intoDaniel Dunbar
InitializeCompileOptions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86826 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Allow TextDiagnosticPrinter to have optional ownership of its output stream.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86823 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Update CMake.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86822 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11CastToStructChecker: use 'isStructureType()' instead of 'isRecordType()' to ↵Ted Kremenek
determine if a pointer is casted to a struct pointer. This fixes an observed false positive when a value is casted to a union. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86813 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Fix display of "ANALYZE" statements in AnalysisConsumer by correctly ↵Ted Kremenek
resetting the flag indicating that the current Decl* has not yet been displayed. Also move this out of AnalysisManager, since AnalysisManager should not handle text output to the user. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86812 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Remove public headers for UndefinedArgChecker, AttrNonNullChecker, and ↵Ted Kremenek
BadCallChecker, making their implementations completely private. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86809 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Redo how PCH handles its implicit include. Instead of treating this specially inDaniel Dunbar
the front-end (as far as the preprocessor goes), follow the usual logic of inserting the (original include path) name into the predefines buffer. This pushes the responsibility for handling this to PCH instead of the front-end. In PCH this requires being a little more clever when we diff the predefines buffers. Neither of these solutions are particularly great, I think what we eventually should do is something like gcc where we insert a special marker to indicate the PCH file, but then run the preprocessor as usual. This would be clearer and would allow us to drop the overly clever predefines handling. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86806 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11More StringRef simplification to PCHValidator::ReadPredefinesBuffer.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86805 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Rewrite splitLines using StringRef; this is much simpler, and also now avoidsDaniel Dunbar
tons of std::string trashing. I plan to move this and other fun string munging utilities to a StringRefExtras.h at some point if no one beats me to it. On a synthetic benchmark on x86_64, llvm-gcc actually generates code thats 10% faster using the StringRef version. gcc miscompiles the synthetic benchmark, which I'm crossing my fingers and hoping won't happen here. clang compiles the sythetic benchmark correctly (wootness), but the StringRef version is slower. Silly clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86799 91177308-0d34-0410-b5e6-96231b3b80d8