]> granicus.if.org Git - clang/log
clang
14 years agoSpell empty StringRef correctly (0 is a null StringRef, which is not the same).
Daniel Dunbar [Thu, 12 Nov 2009 18:40:12 +0000 (18:40 +0000)]
Spell empty StringRef correctly (0 is a null StringRef, which is not the same).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87011 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRecognize (and check) pointer-to-member template arguments that are
Douglas Gregor [Thu, 12 Nov 2009 18:38:13 +0000 (18:38 +0000)]
Recognize (and check) pointer-to-member template arguments that are
non-type template parameters or constants of pointer-to-member
type. Once checked, be sure to retain those pointer-to-member
constants as expressions if they are dependent, or as declarations if
they are not dependent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87010 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago "Attach debug info with llvm instructions" mode was enabled a month ago. Now make...
Devang Patel [Thu, 12 Nov 2009 18:21:39 +0000 (18:21 +0000)]
 "Attach debug info with llvm instructions" mode was enabled a month ago. Now make it permanent and remove old way of inserting intrinsics to encode debug info for locations and types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87007 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse getNameAsCString() instead of getName().data()
Devang Patel [Thu, 12 Nov 2009 17:49:47 +0000 (17:49 +0000)]
Use getNameAsCString() instead of getName().data()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87001 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoWhen instantiating a reference to a non-type template parameter of pointer to
Douglas Gregor [Thu, 12 Nov 2009 17:40:13 +0000 (17:40 +0000)]
When instantiating a reference to a non-type template parameter of pointer to
member type (e.g., T Class::*Member), build a pointer-to-member
constant expression. Previously, we we just building a simple
declaration reference expression, which meant that the expression was
not treated as a pointer to member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87000 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMove CompileOptions -> CodeGenOptions, and sink it into the CodeGen library.
Chandler Carruth [Thu, 12 Nov 2009 17:24:48 +0000 (17:24 +0000)]
Move CompileOptions -> CodeGenOptions, and sink it into the CodeGen library.
This resolves the layering violation where CodeGen depended on Frontend.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86998 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSet CK_BaseToDerived in TryStaticDowncast.
Anders Carlsson [Thu, 12 Nov 2009 16:53:16 +0000 (16:53 +0000)]
Set CK_BaseToDerived in TryStaticDowncast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86996 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoGive CanQual<T> an implicit conversion to bool, so that it can be used
Douglas Gregor [Thu, 12 Nov 2009 16:49:45 +0000 (16:49 +0000)]
Give CanQual<T> an implicit conversion to bool, so that it can be used
in "if" statements like:

  if (CanQual<ReferenceType> RefType = T.getAs<ReferenceType>())

Thanks to Clang for pointing out this mistake :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86995 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a CK_BaseToDerived cast kind.
Anders Carlsson [Thu, 12 Nov 2009 16:43:42 +0000 (16:43 +0000)]
Add a CK_BaseToDerived cast kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86994 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoWhen comparing template parameter lists, distinguish between three cases:
Douglas Gregor [Thu, 12 Nov 2009 16:20:59 +0000 (16:20 +0000)]
When comparing template parameter lists, distinguish between three cases:
  - Comparing template parameter lists to determine if we have a redeclaration
  - Comparing template parameter lists to determine if we have equivalent
    template template parameters
  - Comparing template parameter lists to determine whether a template
    template argument is valid for a given template template parameter.

Previously, we did not distinguish between the last two cases, which
got us into trouble when we were looking for exact type matches
between the types of non-type template parameters that were dependent
types. Now we do, so we properly delay checking of template template
arguments until instantiation time.

Also, fix an accidental fall-through in a case statement that was
causing crashes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86992 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDisallow FIX-ITs when generating code.
Daniel Dunbar [Thu, 12 Nov 2009 15:42:53 +0000 (15:42 +0000)]
Disallow FIX-ITs when generating code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86990 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoImprove source-location information for implicitly-generated member call expressions
Douglas Gregor [Thu, 12 Nov 2009 15:31:47 +0000 (15:31 +0000)]
Improve source-location information for implicitly-generated member call expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86989 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Coalesce frontend options further.
Daniel Dunbar [Thu, 12 Nov 2009 15:23:20 +0000 (15:23 +0000)]
clang-cc: Coalesce frontend options further.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86988 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix MSVC build.
Benjamin Kramer [Thu, 12 Nov 2009 12:30:05 +0000 (12:30 +0000)]
Fix MSVC build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86983 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoupdate CMakefile
Zhongxing Xu [Thu, 12 Nov 2009 08:39:33 +0000 (08:39 +0000)]
update CMakefile

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86979 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd boilerplate logic for a malloc/free checker.
Zhongxing Xu [Thu, 12 Nov 2009 08:38:56 +0000 (08:38 +0000)]
Add boilerplate logic for a malloc/free checker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86978 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoGeneralize stdint.h for non-8-bit-multiple types, patch by
Chris Lattner [Thu, 12 Nov 2009 08:08:27 +0000 (08:08 +0000)]
Generalize stdint.h for non-8-bit-multiple types, patch by
Ken Dyck!

"This adds definitions for types of 8-bit multiples
from 8 to 64 to stdint.h and rationalizes the selection of types
for the exact-width definitions in InitPreprocessor.cpp."

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86977 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agodo not store wchar/char16/char32/intmax width/alignment info
Chris Lattner [Thu, 12 Nov 2009 08:04:33 +0000 (08:04 +0000)]
do not store wchar/char16/char32/intmax width/alignment info
into TargetInfo, just derive this based on the underlying type.
This prevents them from getting out of synch, patch by Ken Dyck!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86976 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMove warning options into DiagnosticOptions.
Daniel Dunbar [Thu, 12 Nov 2009 07:28:44 +0000 (07:28 +0000)]
Move warning options into DiagnosticOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86968 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAvoid comparing string literals.
Daniel Dunbar [Thu, 12 Nov 2009 07:28:29 +0000 (07:28 +0000)]
Avoid comparing string literals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86967 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMove dump-build-information option into DiagnosticOptions.
Daniel Dunbar [Thu, 12 Nov 2009 07:28:21 +0000 (07:28 +0000)]
Move dump-build-information option into DiagnosticOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86966 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Factor CreateDiagnosticEngine out of main.
Daniel Dunbar [Thu, 12 Nov 2009 06:48:31 +0000 (06:48 +0000)]
clang-cc: Factor CreateDiagnosticEngine out of main.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86963 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: -fixit is actually option, not an action, although its use with non
Daniel Dunbar [Thu, 12 Nov 2009 06:48:24 +0000 (06:48 +0000)]
clang-cc: -fixit is actually option, not an action, although its use with non
-fsyntax-only is probably untested.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86962 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSimplify.
Daniel Dunbar [Thu, 12 Nov 2009 06:48:17 +0000 (06:48 +0000)]
Simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86961 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPthreadLockChecker doesn't need PreVisitCallExpr() yet. All the current logic should...
Ted Kremenek [Thu, 12 Nov 2009 06:26:58 +0000 (06:26 +0000)]
PthreadLockChecker doesn't need PreVisitCallExpr() yet.  All the current logic should be done in PostVisitCallExpr()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86959 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd most of the boilerplate logic for a simple pthread_mutux_lock() -> pthread_mutex_...
Ted Kremenek [Thu, 12 Nov 2009 06:17:47 +0000 (06:17 +0000)]
Add most of the boilerplate logic for a simple pthread_mutux_lock() -> 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

14 years agoRemove obsolete 'struct NullDerefTag'.
Ted Kremenek [Thu, 12 Nov 2009 06:16:18 +0000 (06:16 +0000)]
Remove obsolete 'struct NullDerefTag'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86957 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse the --with-c-include-dirs configure option.
Rafael Espindola [Thu, 12 Nov 2009 05:48:41 +0000 (05:48 +0000)]
Use the --with-c-include-dirs configure option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86956 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoEnhance Checker class (and GRExprEngine) to support PostVisitation for CallExprs...
Ted Kremenek [Thu, 12 Nov 2009 04:35:08 +0000 (04:35 +0000)]
Enhance Checker class (and GRExprEngine) to support PostVisitation for CallExprs.  No clients (yet).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86949 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove GRExprEngine::EvalCall(). It had a single callsite in GRExprEngine, and was...
Ted Kremenek [Thu, 12 Nov 2009 04:16:35 +0000 (04:16 +0000)]
Remove GRExprEngine::EvalCall().  It had a single callsite in GRExprEngine, and was easily inlined.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86948 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRandom const correctness, and incidentally use computeDeclContext when building
John McCall [Thu, 12 Nov 2009 03:15:40 +0000 (03:15 +0000)]
Random const correctness, and incidentally use computeDeclContext when building
a using declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86942 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMove TokenCache option to PreprocessorOptions.
Daniel Dunbar [Thu, 12 Nov 2009 02:53:59 +0000 (02:53 +0000)]
Move TokenCache option to PreprocessorOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86940 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSwitch PTHManager to using diagnostics for most errors.
Daniel Dunbar [Thu, 12 Nov 2009 02:53:48 +0000 (02:53 +0000)]
Switch PTHManager to using diagnostics for most errors.

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

14 years agoSimplify.
Daniel Dunbar [Thu, 12 Nov 2009 02:53:34 +0000 (02:53 +0000)]
Simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86938 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Refactor ParseInputFollow to clearly split on the two primary cases,
Daniel Dunbar [Thu, 12 Nov 2009 02:53:27 +0000 (02:53 +0000)]
clang-cc: Refactor ParseInputFollow to clearly split on the two primary cases,
when we are running an AST consumer and when we are just running the
preprocessor or parser alone.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86937 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Factor ReadPCHFile out of ProcessInputFile.
Daniel Dunbar [Thu, 12 Nov 2009 02:53:20 +0000 (02:53 +0000)]
clang-cc: Factor ReadPCHFile out of ProcessInputFile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86936 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSimplify.
Daniel Dunbar [Thu, 12 Nov 2009 02:53:13 +0000 (02:53 +0000)]
Simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86935 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Unify InitializeSourceManager calls.
Daniel Dunbar [Thu, 12 Nov 2009 02:53:06 +0000 (02:53 +0000)]
clang-cc: Unify InitializeSourceManager calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86934 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake StoreManager::getSizeInElements() always return DefinedOrUnknownSVal.
Zhongxing Xu [Thu, 12 Nov 2009 02:48:32 +0000 (02:48 +0000)]
Make StoreManager::getSizeInElements() always return DefinedOrUnknownSVal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86932 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoNote to self: don't leave debugging statements in the code for four hours.
John McCall [Thu, 12 Nov 2009 02:10:34 +0000 (02:10 +0000)]
Note to self:  don't leave debugging statements in the code for four hours.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86931 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Move non-Consumer action handling to common location, to expose the massive...
Daniel Dunbar [Thu, 12 Nov 2009 01:36:27 +0000 (01:36 +0000)]
clang-cc: Move non-Consumer action handling to common location, to expose the massive amount of redundancy we have introduced through blind copy-and-paste.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86922 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix PCH/preprocess test to be more useful, and unbreak -E mode with implicit
Daniel Dunbar [Thu, 12 Nov 2009 01:36:20 +0000 (01:36 +0000)]
Fix PCH/preprocess test to be more useful, and unbreak -E mode with implicit
PCH, which I broke.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86921 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDo not use StringRef while using DebugInfo interface.
Devang Patel [Thu, 12 Nov 2009 00:51:46 +0000 (00:51 +0000)]
Do not use StringRef while using DebugInfo interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86915 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoImprove recovery in a wonky case where one tries to specialize a
Douglas Gregor [Thu, 12 Nov 2009 00:46:20 +0000 (00:46 +0000)]
Improve recovery in a wonky case where one tries to specialize a
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

14 years agoFix Makefile dependency bug with out-of-dir builds.
Daniel Dunbar [Thu, 12 Nov 2009 00:41:49 +0000 (00:41 +0000)]
Fix Makefile dependency bug with out-of-dir builds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86912 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix test portability.
Daniel Dunbar [Thu, 12 Nov 2009 00:41:41 +0000 (00:41 +0000)]
Fix test portability.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86911 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTweak AnalyzerOptions for consistency, and make sure default constructed object
Daniel Dunbar [Thu, 12 Nov 2009 00:24:35 +0000 (00:24 +0000)]
Tweak AnalyzerOptions for consistency, and make sure default constructed object
is sane.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86908 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTweak formatting.
Daniel Dunbar [Thu, 12 Nov 2009 00:24:28 +0000 (00:24 +0000)]
Tweak formatting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86907 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMove AnalyzerOptions into CompilerInvocation.
Daniel Dunbar [Thu, 12 Nov 2009 00:24:10 +0000 (00:24 +0000)]
Move AnalyzerOptions into CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86906 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd <foo> = [<bar> nextObject] to the -Widiomatic-parentheses category,
John McCall [Thu, 12 Nov 2009 00:06:05 +0000 (00:06 +0000)]
Add <foo> = [<bar> nextObject] to the -Widiomatic-parentheses category,
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

14 years agoRemove an overly-eager assertion when replacing tokens with an
Douglas Gregor [Thu, 12 Nov 2009 00:03:40 +0000 (00:03 +0000)]
Remove an overly-eager assertion when replacing tokens with an
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

14 years agoTweak PCH -include handling to make sure it matches the name as would be present
Daniel Dunbar [Wed, 11 Nov 2009 23:58:53 +0000 (23:58 +0000)]
Tweak PCH -include handling to make sure it matches the name as would be present
in the predefines buffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86903 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix clang executable path for Windows
John Thompson [Wed, 11 Nov 2009 23:11:14 +0000 (23:11 +0000)]
Fix clang executable path for Windows

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86896 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTemplate argument deduction for template template parameters. This
Douglas Gregor [Wed, 11 Nov 2009 23:06:43 +0000 (23:06 +0000)]
Template argument deduction for template template parameters. This
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

14 years agoFix PR 5422: handle lvalue results when evaluating 'based' ptrtoints as part of
John McCall [Wed, 11 Nov 2009 22:52:37 +0000 (22:52 +0000)]
Fix PR 5422:  handle lvalue results when evaluating 'based' ptrtoints as part of
the -Wconversion check.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86891 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake test more platform independent.
Fariborz Jahanian [Wed, 11 Nov 2009 22:49:09 +0000 (22:49 +0000)]
Make test more platform independent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86890 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake test more platform independent (per Sebastian's comment).
Fariborz Jahanian [Wed, 11 Nov 2009 22:45:41 +0000 (22:45 +0000)]
Make test more platform independent (per Sebastian's comment).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86888 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agowritable atomic property's setter/getter must be in 'lock' step of
Fariborz Jahanian [Wed, 11 Nov 2009 22:40:11 +0000 (22:40 +0000)]
writable atomic property's setter/getter must be in 'lock' step of
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

14 years agoImprove diagnostics when a default template argument does not match
Douglas Gregor [Wed, 11 Nov 2009 21:54:23 +0000 (21:54 +0000)]
Improve diagnostics when a default template argument does not match
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

14 years agoAlways initialize the header search object as part of InitializePreprocessor;
Daniel Dunbar [Wed, 11 Nov 2009 21:44:42 +0000 (21:44 +0000)]
Always initialize the header search object as part of InitializePreprocessor;
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

14 years agoAllow Preprocessor to take ownership of the HeaderSearch object. I think it should...
Daniel Dunbar [Wed, 11 Nov 2009 21:44:21 +0000 (21:44 +0000)]
Allow Preprocessor to take ownership of the HeaderSearch object. I think it 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

14 years agoSink AttachDependencyFileGen into CreatePreprocessor.
Daniel Dunbar [Wed, 11 Nov 2009 21:44:00 +0000 (21:44 +0000)]
Sink AttachDependencyFileGen into CreatePreprocessor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86881 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd DependencyOutputOptions to wrap -M... options, and propogate to
Daniel Dunbar [Wed, 11 Nov 2009 21:43:12 +0000 (21:43 +0000)]
Add DependencyOutputOptions to wrap -M... options, and propogate to
CompilerInvocation and clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86880 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix ctor vtable name. WIP.
Mike Stump [Wed, 11 Nov 2009 20:32:03 +0000 (20:32 +0000)]
Fix ctor vtable name.  WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86879 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPush ctor vtable construction down further. WIP.
Mike Stump [Wed, 11 Nov 2009 20:26:26 +0000 (20:26 +0000)]
Push ctor vtable construction down further.  WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86878 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove some stale ErrorNodes variables in GRExprEngine and the old buffer overflow...
Ted Kremenek [Wed, 11 Nov 2009 20:16:36 +0000 (20:16 +0000)]
Remove some stale ErrorNodes variables in GRExprEngine and the old buffer overflow logic in GRExprEngineInternalChecks.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86877 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAfter drinking caffeine, add the two files missing from the previous submit.
Chandler Carruth [Wed, 11 Nov 2009 19:43:37 +0000 (19:43 +0000)]
After drinking caffeine, add the two files missing from the previous submit.
Sorry about that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86869 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMove handling of template parameter packs out of the
Douglas Gregor [Wed, 11 Nov 2009 19:41:09 +0000 (19:41 +0000)]
Move handling of template parameter packs out of the
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

14 years agoRefactoring of template-argument checking code to reduce nesting,
Douglas Gregor [Wed, 11 Nov 2009 19:31:23 +0000 (19:31 +0000)]
Refactoring of template-argument checking code to reduce nesting,
increase sanity. No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86866 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoBefore checking a template template argument against its corresponding
Douglas Gregor [Wed, 11 Nov 2009 19:13:48 +0000 (19:13 +0000)]
Before checking a template template argument against its corresponding
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

14 years agoMove the ManagerRegistry to the Analysis library to resolve the layering violation.
Chandler Carruth [Wed, 11 Nov 2009 19:10:59 +0000 (19:10 +0000)]
Move the ManagerRegistry to the Analysis library to resolve the layering violation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86863 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDo not eagerly set stop point for arguments. This misleads the debugger in identifyin...
Devang Patel [Wed, 11 Nov 2009 19:10:19 +0000 (19:10 +0000)]
Do not eagerly set stop point for arguments. This misleads the debugger in 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

14 years agoValue initialize non-class array members in ctor's
Fariborz Jahanian [Wed, 11 Nov 2009 17:55:25 +0000 (17:55 +0000)]
Value initialize non-class array members in ctor's
initializer list. Fixes PR5463.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86849 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSplit buffer overflow test case into two test cases, removing out logic that was...
Ted Kremenek [Wed, 11 Nov 2009 17:17:06 +0000 (17:17 +0000)]
Split buffer overflow test case into two test cases, removing out logic that was commented out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86845 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoInstantiation of template template parameters for nested templates, e.g.,
Douglas Gregor [Wed, 11 Nov 2009 16:58:32 +0000 (16:58 +0000)]
Instantiation of template template parameters for nested templates, e.g.,

  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

14 years agoFix speculative parsing of dependent template names in
Douglas Gregor [Wed, 11 Nov 2009 16:39:34 +0000 (16:39 +0000)]
Fix speculative parsing of dependent template names in
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

14 years agoAdd undefined array subscript checker.
Zhongxing Xu [Wed, 11 Nov 2009 13:42:54 +0000 (13:42 +0000)]
Add undefined array subscript checker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86837 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove the old out-of-bound checking code.
Zhongxing Xu [Wed, 11 Nov 2009 12:52:39 +0000 (12:52 +0000)]
Remove the old out-of-bound checking code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86836 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoReimplement out-of-bound array access checker with the new checker interface.
Zhongxing Xu [Wed, 11 Nov 2009 12:33:27 +0000 (12:33 +0000)]
Reimplement out-of-bound array access checker with the new checker interface.
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

14 years agoReturnPointerRangeChecker: use StripCasts() instead of checking for zero index
Zhongxing Xu [Wed, 11 Nov 2009 11:55:54 +0000 (11:55 +0000)]
ReturnPointerRangeChecker: use StripCasts() instead of checking for zero index
explicitly.

Fix 80-col violations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86833 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSimplify.
Daniel Dunbar [Wed, 11 Nov 2009 10:22:48 +0000 (10:22 +0000)]
Simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86830 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix unsafe use of StringRef I introduced.
Daniel Dunbar [Wed, 11 Nov 2009 10:10:25 +0000 (10:10 +0000)]
Fix unsafe use of StringRef I introduced.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86829 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd PreprocessorOutputOptions to CompilerInvocation, and move initialization to
Daniel Dunbar [Wed, 11 Nov 2009 10:07:44 +0000 (10:07 +0000)]
Add PreprocessorOutputOptions to CompilerInvocation, and move initialization to
clang-cc/Options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86828 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd PreprocessorOutputOptions, for things like -dM, -C, -CC which control -E
Daniel Dunbar [Wed, 11 Nov 2009 10:07:22 +0000 (10:07 +0000)]
Add PreprocessorOutputOptions, for things like -dM, -C, -CC which control -E
mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86827 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSimplifiy target feature handling by coalescing all the logic into
Daniel Dunbar [Wed, 11 Nov 2009 09:38:56 +0000 (09:38 +0000)]
Simplifiy target feature handling by coalescing all the logic into
InitializeCompileOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86826 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMinor formatting tweaks.
Daniel Dunbar [Wed, 11 Nov 2009 09:38:42 +0000 (09:38 +0000)]
Minor formatting tweaks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86825 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Refactor some -fixit-at handling.
Daniel Dunbar [Wed, 11 Nov 2009 09:38:35 +0000 (09:38 +0000)]
clang-cc: Refactor some -fixit-at handling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86824 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAllow TextDiagnosticPrinter to have optional ownership of its output stream.
Daniel Dunbar [Wed, 11 Nov 2009 09:38:24 +0000 (09:38 +0000)]
Allow TextDiagnosticPrinter to have optional ownership of its output stream.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86823 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUpdate CMake.
Daniel Dunbar [Wed, 11 Nov 2009 08:14:02 +0000 (08:14 +0000)]
Update CMake.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86822 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Move InitializeAnalyzerOptions into Options.cpp
Daniel Dunbar [Wed, 11 Nov 2009 08:13:55 +0000 (08:13 +0000)]
clang-cc: Move InitializeAnalyzerOptions into Options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86821 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Start coalescing "frontend" options.
Daniel Dunbar [Wed, 11 Nov 2009 08:13:47 +0000 (08:13 +0000)]
clang-cc: Start coalescing "frontend" options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86820 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Move InitializeDiagnosticOptions to Options.cpp
Daniel Dunbar [Wed, 11 Nov 2009 08:13:40 +0000 (08:13 +0000)]
clang-cc: Move InitializeDiagnosticOptions to Options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86819 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Move HeaderSearchOptions to Options.cpp
Daniel Dunbar [Wed, 11 Nov 2009 08:13:32 +0000 (08:13 +0000)]
clang-cc: Move HeaderSearchOptions to Options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86818 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTurn LoggingDiagnosticClient into a more general ChainedDiagnosticClient and
Daniel Dunbar [Wed, 11 Nov 2009 08:13:24 +0000 (08:13 +0000)]
Turn LoggingDiagnosticClient into a more general ChainedDiagnosticClient and
move to libFrontend.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86817 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoclang-cc: Move InitializeLangOptions to Options.cpp.
Daniel Dunbar [Wed, 11 Nov 2009 07:26:12 +0000 (07:26 +0000)]
clang-cc: Move InitializeLangOptions to Options.cpp.

Also, inline InitializeLanguageStandard into InitializeLangOptions; this code
needs to be refactored but the current division doesn't make any sense.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86816 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoInline some trivial functions.
Daniel Dunbar [Wed, 11 Nov 2009 07:26:02 +0000 (07:26 +0000)]
Inline some trivial functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86815 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoCastToStructChecker: use 'isStructureType()' instead of 'isRecordType()' to determine...
Ted Kremenek [Wed, 11 Nov 2009 06:43:42 +0000 (06:43 +0000)]
CastToStructChecker: use 'isStructureType()' instead of 'isRecordType()' to 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

14 years agoFix display of "ANALYZE" statements in AnalysisConsumer by correctly resetting the...
Ted Kremenek [Wed, 11 Nov 2009 06:28:42 +0000 (06:28 +0000)]
Fix display of "ANALYZE" statements in AnalysisConsumer by correctly 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

14 years agoclang-cc: Move InitializePreprocessorOptions to Options.cpp
Daniel Dunbar [Wed, 11 Nov 2009 06:10:03 +0000 (06:10 +0000)]
clang-cc: Move InitializePreprocessorOptions to Options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86811 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove public headers for UndefinedArgChecker, AttrNonNullChecker, and BadCallChecker...
Ted Kremenek [Wed, 11 Nov 2009 05:50:44 +0000 (05:50 +0000)]
Remove public headers for UndefinedArgChecker, AttrNonNullChecker, and BadCallChecker, making their implementations completely private.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86809 91177308-0d34-0410-b5e6-96231b3b80d8