llvm-project/clang/lib/AST
Douglas Gregor ad3f2fcf43 Improved semantic analysis and AST respresentation for function
templates.

For example, this now type-checks (but does not instantiate the body
of deref<int>):

  template<typename T> T& deref(T* t) { return *t; }

  void test(int *ip) {
    int &ir = deref(ip);
  }

Specific changes/additions:
  * Template argument deduction from a call to a function template.
  * Instantiation of a function template specializations (just the
  declarations) from the template arguments deduced from a call.
  * FunctionTemplateDecls are stored directly in declaration contexts
  and found via name lookup (all forms), rather than finding the
  FunctionDecl and then realizing it is a template. This is
  responsible for most of the churn, since some of the core
  declaration matching and lookup code assumes that all functions are
  FunctionDecls.

llvm-svn: 74213
2009-06-25 22:08:12 +00:00
..
APValue.cpp Remove some now-unneeded calls to llvm::errs().flush(). 2009-03-10 18:00:19 +00:00
ASTConsumer.cpp Push DeclGroup much farther throughout the compiler. Now the various 2009-03-29 16:50:03 +00:00
ASTContext.cpp Decltype needs to have a dependent type if the expr passed to it is type dependent. Fixes PR4444. 2009-06-25 15:00:34 +00:00
CFG.cpp Remove unneeded #includes. 2009-06-24 22:26:16 +00:00
CMakeLists.txt move the various builtins stuff from libast to libbasic. This 2009-06-14 01:05:48 +00:00
Decl.cpp Improved semantic analysis and AST respresentation for function 2009-06-25 22:08:12 +00:00
DeclBase.cpp Improved semantic analysis and AST respresentation for function 2009-06-25 22:08:12 +00:00
DeclCXX.cpp Improved semantic analysis and AST respresentation for function 2009-06-25 22:08:12 +00:00
DeclGroup.cpp Remove the serialization code that predates precompiled 2009-04-22 21:45:53 +00:00
DeclObjC.cpp Adds synthesize ivars to DeclContext. 2009-06-06 16:36:41 +00:00
DeclPrinter.cpp Keep track of whether a type parameter is actually a type parameter pack. 2009-06-12 22:23:22 +00:00
DeclTemplate.cpp Check in a new template argument list builder that should work better for variadic templates. 2009-06-23 01:26:57 +00:00
DeclarationName.cpp Make sure that we use the canonical type for the names of instantiated 2009-05-15 21:18:27 +00:00
Expr.cpp OpenCL 1.0 Support, patch 1/N: upper case swizzle operator and hex element index. 2009-06-25 21:06:09 +00:00
ExprCXX.cpp Handle temporaries in default arguments. 2009-06-16 03:37:31 +00:00
ExprConstant.cpp PR4351: Add constant evaluation for constructs like "foo == NULL", where 2009-06-14 02:17:33 +00:00
InheritViz.cpp [LLVM up] Update for raw_fd_ostream change. This fixes a FIXME that 2008-11-13 05:09:21 +00:00
Makefile Build system changes to use TableGen to generate the various 2009-03-16 23:06:59 +00:00
NestedNameSpecifier.cpp Create a new PrintingPolicy class, which we pass down through the AST 2009-05-29 20:38:28 +00:00
ParentMap.cpp Add ParentMap:getParentIgnoreParens(). 2009-05-11 19:49:27 +00:00
Stmt.cpp Simplify printing of the statistics for types. 2009-05-26 14:40:08 +00:00
StmtDumper.cpp Create a new PrintingPolicy class, which we pass down through the AST 2009-05-29 20:38:28 +00:00
StmtIterator.cpp When evaluating a VarDecl as a constant or determining whether it is 2009-05-26 18:54:04 +00:00
StmtPrinter.cpp PR4391: Tweak -ast-print output to generate valid output for edge cases 2009-06-14 22:39:26 +00:00
StmtViz.cpp Update for LLVM API changes. 2009-06-24 17:37:55 +00:00
TemplateName.cpp Create a new PrintingPolicy class, which we pass down through the AST 2009-05-29 20:38:28 +00:00
Type.cpp Extra asserts never hurt anybody, right? 2009-06-25 16:06:43 +00:00