svn commit: r198893 - in vendor/clang/dist: . clang.xcodeproj docs docs/tools include/clang-c include/clang/AST include/clang/Analysis include/clang/Analysis/PathSensitive include/clang/Analysis/Pa...

Roman Divacky rdivacky at FreeBSD.org
Wed Nov 4 15:04:33 UTC 2009


Author: rdivacky
Date: Wed Nov  4 15:04:32 2009
New Revision: 198893
URL: http://svn.freebsd.org/changeset/base/198893

Log:
  Update clang to r86025.

Added:
  vendor/clang/dist/include/clang/AST/TemplateBase.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/BugType.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/Checkers/
  vendor/clang/dist/include/clang/Analysis/PathSensitive/Checkers/AttrNonNullChecker.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/Checkers/BadCallChecker.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/Checkers/DereferenceChecker.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/Checkers/DivZeroChecker.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/Checkers/UndefinedArgChecker.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/Checkers/UndefinedAssignmentChecker.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/Checkers/VLASizeChecker.h
  vendor/clang/dist/include/clang/Frontend/DiagnosticOptions.h
  vendor/clang/dist/lib/AST/TemplateBase.cpp
  vendor/clang/dist/lib/Analysis/AttrNonNullChecker.cpp
  vendor/clang/dist/lib/Analysis/BadCallChecker.cpp
  vendor/clang/dist/lib/Analysis/DereferenceChecker.cpp
  vendor/clang/dist/lib/Analysis/DivZeroChecker.cpp
  vendor/clang/dist/lib/Analysis/NSAutoreleasePoolChecker.cpp
  vendor/clang/dist/lib/Analysis/NSErrorChecker.cpp
  vendor/clang/dist/lib/Analysis/UndefinedArgChecker.cpp
  vendor/clang/dist/lib/Analysis/UndefinedAssignmentChecker.cpp
  vendor/clang/dist/lib/Analysis/VLASizeChecker.cpp
  vendor/clang/dist/lib/CodeGen/CGException.cpp
  vendor/clang/dist/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p5.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p10.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p12.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p5.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p6.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p7.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p8.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p9-linkage.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p9.cpp
  vendor/clang/dist/test/CodeCompletion/macros.c
  vendor/clang/dist/test/CodeGen/object-size.c
  vendor/clang/dist/test/CodeGenCXX/array-construction.cpp
  vendor/clang/dist/test/CodeGenCXX/ptr-to-member-function.cpp
  vendor/clang/dist/test/FixIt/fixit-pmem.cpp
  vendor/clang/dist/test/Parser/cxx-parse-member-pointer-op.cpp
  vendor/clang/dist/test/Preprocessor/has_include.c
  vendor/clang/dist/test/Preprocessor/init.c
  vendor/clang/dist/test/Preprocessor/macro_undef.c
  vendor/clang/dist/test/Preprocessor/stdint.c
  vendor/clang/dist/test/Sema/parentheses.c
  vendor/clang/dist/test/SemaCXX/ptrtomember-badcall.cpp
  vendor/clang/dist/test/SemaCXX/value-initialization.cpp
  vendor/clang/dist/test/SemaObjC/conditional-expr-6.m
  vendor/clang/dist/test/SemaObjC/property-category-4.m
  vendor/clang/dist/test/SemaTemplate/instantiate-non-type-template-parameter.cpp
  vendor/clang/dist/test/SemaTemplate/operator-function-id-template.cpp
  vendor/clang/dist/test/SemaTemplate/template-id-expr.cpp
  vendor/clang/dist/test/SemaTemplate/template-id-printing.cpp
Deleted:
  vendor/clang/dist/lib/Analysis/CheckNSError.cpp
Modified:
  vendor/clang/dist/CMakeLists.txt
  vendor/clang/dist/clang.xcodeproj/project.pbxproj
  vendor/clang/dist/docs/LanguageExtensions.html
  vendor/clang/dist/docs/tools/clang.pod
  vendor/clang/dist/include/clang-c/Index.h
  vendor/clang/dist/include/clang/AST/ASTContext.h
  vendor/clang/dist/include/clang/AST/CanonicalType.h
  vendor/clang/dist/include/clang/AST/Decl.h
  vendor/clang/dist/include/clang/AST/DeclGroup.h
  vendor/clang/dist/include/clang/AST/DeclNodes.def
  vendor/clang/dist/include/clang/AST/DeclObjC.h
  vendor/clang/dist/include/clang/AST/DeclTemplate.h
  vendor/clang/dist/include/clang/AST/Expr.h
  vendor/clang/dist/include/clang/AST/ExprCXX.h
  vendor/clang/dist/include/clang/AST/RecordLayout.h
  vendor/clang/dist/include/clang/AST/Redeclarable.h
  vendor/clang/dist/include/clang/AST/StmtIterator.h
  vendor/clang/dist/include/clang/AST/StmtNodes.def
  vendor/clang/dist/include/clang/AST/TemplateName.h
  vendor/clang/dist/include/clang/AST/Type.h
  vendor/clang/dist/include/clang/AST/TypeLoc.h
  vendor/clang/dist/include/clang/Analysis/CallGraph.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/AnalysisContext.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/BugReporter.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/Checker.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/GRExprEngine.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/GRState.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/GRTransferFuncs.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/Store.h
  vendor/clang/dist/include/clang/Analysis/PathSensitive/SymbolManager.h
  vendor/clang/dist/include/clang/Analysis/ProgramPoint.h
  vendor/clang/dist/include/clang/Analysis/Visitors/CFGRecStmtDeclVisitor.h
  vendor/clang/dist/include/clang/Basic/Builtins.def
  vendor/clang/dist/include/clang/Basic/DiagnosticCommonKinds.td
  vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td
  vendor/clang/dist/include/clang/Basic/DiagnosticFrontendKinds.td
  vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td
  vendor/clang/dist/include/clang/Basic/DiagnosticParseKinds.td
  vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td
  vendor/clang/dist/include/clang/Basic/OnDiskHashTable.h
  vendor/clang/dist/include/clang/Basic/OperatorKinds.h
  vendor/clang/dist/include/clang/Basic/PartialDiagnostic.h
  vendor/clang/dist/include/clang/Basic/SourceManager.h
  vendor/clang/dist/include/clang/Basic/TargetInfo.h
  vendor/clang/dist/include/clang/Driver/Options.def
  vendor/clang/dist/include/clang/Frontend/ASTUnit.h
  vendor/clang/dist/include/clang/Frontend/CompileOptions.h
  vendor/clang/dist/include/clang/Frontend/DeclXML.def
  vendor/clang/dist/include/clang/Frontend/InitHeaderSearch.h
  vendor/clang/dist/include/clang/Frontend/InitPreprocessor.h
  vendor/clang/dist/include/clang/Frontend/PCHBitCodes.h
  vendor/clang/dist/include/clang/Frontend/PCHReader.h
  vendor/clang/dist/include/clang/Frontend/PCHWriter.h
  vendor/clang/dist/include/clang/Frontend/TextDiagnosticPrinter.h
  vendor/clang/dist/include/clang/Index/Utils.h
  vendor/clang/dist/include/clang/Lex/LiteralSupport.h
  vendor/clang/dist/include/clang/Lex/Preprocessor.h
  vendor/clang/dist/include/clang/Lex/Token.h
  vendor/clang/dist/include/clang/Parse/Action.h
  vendor/clang/dist/include/clang/Parse/DeclSpec.h
  vendor/clang/dist/include/clang/Parse/Parser.h
  vendor/clang/dist/include/clang/Sema/CodeCompleteConsumer.h
  vendor/clang/dist/lib/AST/ASTContext.cpp
  vendor/clang/dist/lib/AST/CMakeLists.txt
  vendor/clang/dist/lib/AST/Decl.cpp
  vendor/clang/dist/lib/AST/DeclBase.cpp
  vendor/clang/dist/lib/AST/DeclCXX.cpp
  vendor/clang/dist/lib/AST/DeclObjC.cpp
  vendor/clang/dist/lib/AST/DeclPrinter.cpp
  vendor/clang/dist/lib/AST/DeclTemplate.cpp
  vendor/clang/dist/lib/AST/Expr.cpp
  vendor/clang/dist/lib/AST/ExprCXX.cpp
  vendor/clang/dist/lib/AST/ExprConstant.cpp
  vendor/clang/dist/lib/AST/RecordLayoutBuilder.cpp
  vendor/clang/dist/lib/AST/RecordLayoutBuilder.h
  vendor/clang/dist/lib/AST/StmtPrinter.cpp
  vendor/clang/dist/lib/AST/StmtProfile.cpp
  vendor/clang/dist/lib/AST/TemplateName.cpp
  vendor/clang/dist/lib/AST/Type.cpp
  vendor/clang/dist/lib/Analysis/BasicObjCFoundationChecks.cpp
  vendor/clang/dist/lib/Analysis/BasicObjCFoundationChecks.h
  vendor/clang/dist/lib/Analysis/BasicStore.cpp
  vendor/clang/dist/lib/Analysis/CFRefCount.cpp
  vendor/clang/dist/lib/Analysis/CMakeLists.txt
  vendor/clang/dist/lib/Analysis/CallGraph.cpp
  vendor/clang/dist/lib/Analysis/CheckObjCUnusedIVars.cpp
  vendor/clang/dist/lib/Analysis/GRExprEngine.cpp
  vendor/clang/dist/lib/Analysis/GRExprEngineInternalChecks.cpp
  vendor/clang/dist/lib/Analysis/RegionStore.cpp
  vendor/clang/dist/lib/Basic/CMakeLists.txt
  vendor/clang/dist/lib/Basic/IdentifierTable.cpp
  vendor/clang/dist/lib/Basic/TargetInfo.cpp
  vendor/clang/dist/lib/Basic/Targets.cpp
  vendor/clang/dist/lib/CodeGen/CGBuiltin.cpp
  vendor/clang/dist/lib/CodeGen/CGCXX.cpp
  vendor/clang/dist/lib/CodeGen/CGCall.cpp
  vendor/clang/dist/lib/CodeGen/CGDecl.cpp
  vendor/clang/dist/lib/CodeGen/CGExpr.cpp
  vendor/clang/dist/lib/CodeGen/CGExprAgg.cpp
  vendor/clang/dist/lib/CodeGen/CGExprConstant.cpp
  vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp
  vendor/clang/dist/lib/CodeGen/CGObjC.cpp
  vendor/clang/dist/lib/CodeGen/CGRecordLayoutBuilder.h
  vendor/clang/dist/lib/CodeGen/CGRtti.cpp
  vendor/clang/dist/lib/CodeGen/CGStmt.cpp
  vendor/clang/dist/lib/CodeGen/CGValue.h
  vendor/clang/dist/lib/CodeGen/CGVtable.cpp
  vendor/clang/dist/lib/CodeGen/CMakeLists.txt
  vendor/clang/dist/lib/CodeGen/CodeGenFunction.cpp
  vendor/clang/dist/lib/CodeGen/CodeGenFunction.h
  vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp
  vendor/clang/dist/lib/CodeGen/CodeGenTypes.cpp
  vendor/clang/dist/lib/CodeGen/Mangle.cpp
  vendor/clang/dist/lib/CodeGen/Mangle.h
  vendor/clang/dist/lib/Driver/Tools.cpp
  vendor/clang/dist/lib/Driver/Types.cpp
  vendor/clang/dist/lib/Frontend/ASTConsumers.cpp
  vendor/clang/dist/lib/Frontend/AnalysisConsumer.cpp
  vendor/clang/dist/lib/Frontend/InitHeaderSearch.cpp
  vendor/clang/dist/lib/Frontend/InitPreprocessor.cpp
  vendor/clang/dist/lib/Frontend/PCHReader.cpp
  vendor/clang/dist/lib/Frontend/PCHReaderDecl.cpp
  vendor/clang/dist/lib/Frontend/PCHReaderStmt.cpp
  vendor/clang/dist/lib/Frontend/PCHWriter.cpp
  vendor/clang/dist/lib/Frontend/PCHWriterDecl.cpp
  vendor/clang/dist/lib/Frontend/PCHWriterStmt.cpp
  vendor/clang/dist/lib/Frontend/PrintPreprocessedOutput.cpp
  vendor/clang/dist/lib/Frontend/RewriteObjC.cpp
  vendor/clang/dist/lib/Frontend/TextDiagnosticPrinter.cpp
  vendor/clang/dist/lib/Headers/CMakeLists.txt
  vendor/clang/dist/lib/Headers/stdint.h
  vendor/clang/dist/lib/Index/ResolveLocation.cpp
  vendor/clang/dist/lib/Lex/HeaderMap.cpp
  vendor/clang/dist/lib/Lex/PPDirectives.cpp
  vendor/clang/dist/lib/Lex/PPExpressions.cpp
  vendor/clang/dist/lib/Lex/PPMacroExpansion.cpp
  vendor/clang/dist/lib/Parse/AttributeList.cpp
  vendor/clang/dist/lib/Parse/DeclSpec.cpp
  vendor/clang/dist/lib/Parse/MinimalAction.cpp
  vendor/clang/dist/lib/Parse/ParseDecl.cpp
  vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp
  vendor/clang/dist/lib/Parse/ParseExpr.cpp
  vendor/clang/dist/lib/Parse/ParseExprCXX.cpp
  vendor/clang/dist/lib/Parse/ParseObjc.cpp
  vendor/clang/dist/lib/Parse/ParseStmt.cpp
  vendor/clang/dist/lib/Parse/ParseTemplate.cpp
  vendor/clang/dist/lib/Parse/Parser.cpp
  vendor/clang/dist/lib/Sema/CodeCompleteConsumer.cpp
  vendor/clang/dist/lib/Sema/Sema.cpp
  vendor/clang/dist/lib/Sema/Sema.h
  vendor/clang/dist/lib/Sema/SemaCXXCast.cpp
  vendor/clang/dist/lib/Sema/SemaChecking.cpp
  vendor/clang/dist/lib/Sema/SemaCodeComplete.cpp
  vendor/clang/dist/lib/Sema/SemaDecl.cpp
  vendor/clang/dist/lib/Sema/SemaDeclAttr.cpp
  vendor/clang/dist/lib/Sema/SemaDeclCXX.cpp
  vendor/clang/dist/lib/Sema/SemaDeclObjC.cpp
  vendor/clang/dist/lib/Sema/SemaExpr.cpp
  vendor/clang/dist/lib/Sema/SemaExprCXX.cpp
  vendor/clang/dist/lib/Sema/SemaLookup.cpp
  vendor/clang/dist/lib/Sema/SemaOverload.cpp
  vendor/clang/dist/lib/Sema/SemaStmt.cpp
  vendor/clang/dist/lib/Sema/SemaTemplate.cpp
  vendor/clang/dist/lib/Sema/SemaTemplateDeduction.cpp
  vendor/clang/dist/lib/Sema/SemaTemplateInstantiate.cpp
  vendor/clang/dist/lib/Sema/SemaTemplateInstantiateDecl.cpp
  vendor/clang/dist/lib/Sema/SemaType.cpp
  vendor/clang/dist/lib/Sema/TreeTransform.h
  vendor/clang/dist/test/Analysis/misc-ps-eager-assume.m
  vendor/clang/dist/test/Analysis/misc-ps-region-store.m
  vendor/clang/dist/test/Analysis/misc-ps.m
  vendor/clang/dist/test/Analysis/outofbound.c
  vendor/clang/dist/test/Analysis/retain-release-gc-only.m
  vendor/clang/dist/test/Analysis/retain-release.m
  vendor/clang/dist/test/Analysis/uninit-vals-ps-region.c
  vendor/clang/dist/test/Analysis/unused-ivars.m
  vendor/clang/dist/test/CMakeLists.txt
  vendor/clang/dist/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp
  vendor/clang/dist/test/CXX/basic/basic.lookup/basic.lookup.unqual/p15.cpp
  vendor/clang/dist/test/CXX/class/class.union/p1.cpp
  vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p3.cpp
  vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p4.cpp
  vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p6.cpp
  vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p10.cpp
  vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p4.cpp
  vendor/clang/dist/test/CXX/temp/temp.decls/temp.class.spec/p6.cpp
  vendor/clang/dist/test/CXX/temp/temp.decls/temp.friend/p5.cpp
  vendor/clang/dist/test/CXX/temp/temp.param/p14.cpp
  vendor/clang/dist/test/CXX/temp/temp.res/temp.dep.res/temp.point/p1.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.expl.spec/p3.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p3.cpp
  vendor/clang/dist/test/CodeGen/2008-07-21-mixed-var-fn-decl.c
  vendor/clang/dist/test/CodeGen/2008-07-29-override-alias-decl.c
  vendor/clang/dist/test/CodeGen/asm-inout.c
  vendor/clang/dist/test/CodeGen/blocks-2.c
  vendor/clang/dist/test/CodeGen/builtin-unwind-init.c
  vendor/clang/dist/test/CodeGen/cast-to-union.c
  vendor/clang/dist/test/CodeGen/function-attributes.c
  vendor/clang/dist/test/CodeGen/indirect-goto.c
  vendor/clang/dist/test/CodeGen/mangle.c
  vendor/clang/dist/test/CodeGen/union-init2.c
  vendor/clang/dist/test/CodeGen/volatile.c
  vendor/clang/dist/test/CodeGenCXX/ptr-to-datamember.cpp
  vendor/clang/dist/test/CodeGenCXX/temporaries.cpp
  vendor/clang/dist/test/CodeGenCXX/virt.cpp
  vendor/clang/dist/test/CodeGenObjC/PR4894-recursive-debug-crash.m
  vendor/clang/dist/test/CodeGenObjC/encode-test-2.m
  vendor/clang/dist/test/CodeGenObjC/synthesize_ivar.m
  vendor/clang/dist/test/Coverage/objc-language-features.inc
  vendor/clang/dist/test/Coverage/targets.c
  vendor/clang/dist/test/Driver/analyze.c
  vendor/clang/dist/test/Driver/ccc-add-args.c
  vendor/clang/dist/test/Driver/hello.c
  vendor/clang/dist/test/Driver/phases.c
  vendor/clang/dist/test/Driver/qa_override.c
  vendor/clang/dist/test/Driver/std.c
  vendor/clang/dist/test/Frontend/darwin-version.c
  vendor/clang/dist/test/Frontend/dependency-gen.c
  vendor/clang/dist/test/Lexer/block_cmt_end.c
  vendor/clang/dist/test/Makefile
  vendor/clang/dist/test/Misc/message-length.c
  vendor/clang/dist/test/PCH/pr4489.c
  vendor/clang/dist/test/Parser/cxx-template-decl.cpp
  vendor/clang/dist/test/Preprocessor/assembler-with-cpp.c
  vendor/clang/dist/test/Preprocessor/c99-6_10_3_3_p4.c
  vendor/clang/dist/test/Preprocessor/c99-6_10_3_4_p5.c
  vendor/clang/dist/test/Preprocessor/c99-6_10_3_4_p6.c
  vendor/clang/dist/test/Preprocessor/c99-6_10_3_4_p7.c
  vendor/clang/dist/test/Preprocessor/c99-6_10_3_4_p9.c
  vendor/clang/dist/test/Preprocessor/comment_save.c
  vendor/clang/dist/test/Preprocessor/comment_save_macro.c
  vendor/clang/dist/test/Preprocessor/line-directive.c
  vendor/clang/dist/test/Preprocessor/macro_disable3.c
  vendor/clang/dist/test/Preprocessor/macro_paste_mscomment.c
  vendor/clang/dist/test/Preprocessor/macro_rescan_varargs.c
  vendor/clang/dist/test/Preprocessor/macro_rparen_scan2.c
  vendor/clang/dist/test/Preprocessor/output_paste_avoid.c
  vendor/clang/dist/test/Preprocessor/stringize_misc.c
  vendor/clang/dist/test/Sema/attr-deprecated.c
  vendor/clang/dist/test/Sema/callingconv.c
  vendor/clang/dist/test/Sema/constant-builtins-2.c
  vendor/clang/dist/test/Sema/decl-invalid.c
  vendor/clang/dist/test/Sema/format-strings.c
  vendor/clang/dist/test/Sema/init.c
  vendor/clang/dist/test/Sema/offsetof.c
  vendor/clang/dist/test/Sema/return-noreturn.c
  vendor/clang/dist/test/Sema/return.c
  vendor/clang/dist/test/Sema/statements.c
  vendor/clang/dist/test/Sema/stdcall-fastcall.c
  vendor/clang/dist/test/Sema/vector-init.c
  vendor/clang/dist/test/SemaCXX/constructor.cpp
  vendor/clang/dist/test/SemaCXX/implicit-int.cpp
  vendor/clang/dist/test/SemaCXX/invalid-member-expr.cpp
  vendor/clang/dist/test/SemaCXX/invalid-template-specifier.cpp
  vendor/clang/dist/test/SemaCXX/nested-name-spec.cpp
  vendor/clang/dist/test/SemaCXX/new-delete.cpp
  vendor/clang/dist/test/SemaCXX/overloaded-operator.cpp
  vendor/clang/dist/test/SemaCXX/typedef-redecl.cpp
  vendor/clang/dist/test/SemaObjC/continuation-class-err.m
  vendor/clang/dist/test/SemaObjC/id-isa-ref.m
  vendor/clang/dist/test/SemaObjC/return.m
  vendor/clang/dist/test/SemaObjCXX/overload.mm
  vendor/clang/dist/test/SemaObjCXX/references.mm
  vendor/clang/dist/test/SemaTemplate/class-template-spec.cpp
  vendor/clang/dist/test/SemaTemplate/constructor-template.cpp
  vendor/clang/dist/test/SemaTemplate/copy-ctor-assign.cpp
  vendor/clang/dist/test/SemaTemplate/default-expr-arguments.cpp
  vendor/clang/dist/test/SemaTemplate/ext-vector-type.cpp
  vendor/clang/dist/test/SemaTemplate/friend-template.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-cast.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-declref-ice.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-declref.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-function-1.mm
  vendor/clang/dist/test/SemaTemplate/instantiate-method.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-subscript.cpp
  vendor/clang/dist/test/SemaTemplate/member-template-access-expr.cpp
  vendor/clang/dist/test/SemaTemplate/nested-name-spec-template.cpp
  vendor/clang/dist/test/SemaTemplate/nested-template.cpp
  vendor/clang/dist/test/lit.site.cfg.in
  vendor/clang/dist/tools/CIndex/CIndex.cpp
  vendor/clang/dist/tools/CIndex/CIndex.exports
  vendor/clang/dist/tools/CIndex/CMakeLists.txt
  vendor/clang/dist/tools/CMakeLists.txt
  vendor/clang/dist/tools/c-index-test/c-index-test.c
  vendor/clang/dist/tools/clang-cc/clang-cc.cpp
  vendor/clang/dist/tools/wpa/clang-wpa.cpp
  vendor/clang/dist/www/UniversalDriver.html
  vendor/clang/dist/www/analyzer/latest_checker.html.incl
  vendor/clang/dist/www/cxx_status.html

Modified: vendor/clang/dist/CMakeLists.txt
==============================================================================
--- vendor/clang/dist/CMakeLists.txt	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/CMakeLists.txt	Wed Nov  4 15:04:32 2009	(r198893)
@@ -65,7 +65,7 @@ macro(add_clang_library name)
     set_target_properties(${name} PROPERTIES COMPILE_FLAGS ${cflag})
   endif(MSVC)
   install(TARGETS ${name}
-    LIBRARY DESTINATION lib
+    LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
     ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
 endmacro(add_clang_library)
 
@@ -83,8 +83,12 @@ include_directories(
   ${CMAKE_CURRENT_BINARY_DIR}/include
   )
 
-install(DIRECTORY include
-  DESTINATION .
+install(DIRECTORY include/
+  DESTINATION include
+  FILES_MATCHING
+  PATTERN "*.def"
+  PATTERN "*.h"
+  PATTERN "*.td"
   PATTERN ".svn" EXCLUDE
   )
 

Modified: vendor/clang/dist/clang.xcodeproj/project.pbxproj
==============================================================================
--- vendor/clang/dist/clang.xcodeproj/project.pbxproj	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/clang.xcodeproj/project.pbxproj	Wed Nov  4 15:04:32 2009	(r198893)
@@ -49,6 +49,7 @@
 		1ADF47AF0F782C3200E48A8A /* SemaTemplateInstantiateDecl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ADF47AE0F782C3200E48A8A /* SemaTemplateInstantiateDecl.cpp */; };
 		1AE4EE3E103B89ED00888A23 /* StmtProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE4EE3D103B89ED00888A23 /* StmtProfile.cpp */; };
 		1AE4EE40103B8A0A00888A23 /* TargetABIInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE4EE3F103B8A0A00888A23 /* TargetABIInfo.cpp */; };
+		1AF1B50F109A4FB800AFAFAC /* CGException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AF1B50E109A4FB800AFAFAC /* CGException.cpp */; };
 		1AFEF4070F8A6B2300476F2B /* clang-cc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AFEF4050F8A6B2300476F2B /* clang-cc.cpp */; };
 		1AFF8AE31012BFC900D248DA /* CGRecordLayoutBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AFF8AE11012BFC900D248DA /* CGRecordLayoutBuilder.cpp */; };
 		3507E4C20E27FE2D00FB7B57 /* CheckObjCInstMethSignature.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3507E4C10E27FE2D00FB7B57 /* CheckObjCInstMethSignature.cpp */; };
@@ -399,6 +400,7 @@
 		1AE4EE3B103B89CA00888A23 /* TreeTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.h; name = TreeTransform.h; path = lib/Sema/TreeTransform.h; sourceTree = "<group>"; tabWidth = 2; };
 		1AE4EE3D103B89ED00888A23 /* StmtProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = StmtProfile.cpp; path = lib/AST/StmtProfile.cpp; sourceTree = "<group>"; tabWidth = 2; };
 		1AE4EE3F103B8A0A00888A23 /* TargetABIInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = TargetABIInfo.cpp; path = lib/CodeGen/TargetABIInfo.cpp; sourceTree = "<group>"; tabWidth = 2; };
+		1AF1B50E109A4FB800AFAFAC /* CGException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = CGException.cpp; path = lib/CodeGen/CGException.cpp; sourceTree = "<group>"; tabWidth = 2; };
 		1AFEF4050F8A6B2300476F2B /* clang-cc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = "clang-cc.cpp"; path = "tools/clang-cc/clang-cc.cpp"; sourceTree = "<group>"; tabWidth = 2; };
 		1AFF8AE11012BFC900D248DA /* CGRecordLayoutBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = CGRecordLayoutBuilder.cpp; path = lib/CodeGen/CGRecordLayoutBuilder.cpp; sourceTree = "<group>"; tabWidth = 2; };
 		1AFF8AE21012BFC900D248DA /* CGRecordLayoutBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.h; name = CGRecordLayoutBuilder.h; path = lib/CodeGen/CGRecordLayoutBuilder.h; sourceTree = "<group>"; tabWidth = 2; };
@@ -515,6 +517,13 @@
 		9012911C1048068D0083456D /* ASTUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ASTUnit.cpp; path = lib/Frontend/ASTUnit.cpp; sourceTree = "<group>"; };
 		9012911F104812F90083456D /* CIndex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CIndex.cpp; path = tools/CIndex/CIndex.cpp; sourceTree = "<group>"; };
 		90129120104812F90083456D /* CIndex.exports */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CIndex.exports; path = tools/CIndex/CIndex.exports; sourceTree = "<group>"; };
+		904753791096376F00CBDDDD /* CXXInheritance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CXXInheritance.h; path = clang/AST/CXXInheritance.h; sourceTree = "<group>"; };
+		9047537A1096376F00CBDDDD /* Redeclarable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Redeclarable.h; path = clang/AST/Redeclarable.h; sourceTree = "<group>"; };
+		9047537B1096376F00CBDDDD /* TypeLoc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TypeLoc.h; path = clang/AST/TypeLoc.h; sourceTree = "<group>"; };
+		9047537C1096376F00CBDDDD /* TypeLocBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TypeLocBuilder.h; path = clang/AST/TypeLocBuilder.h; sourceTree = "<group>"; };
+		9047537D1096376F00CBDDDD /* TypeLocNodes.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = TypeLocNodes.def; path = clang/AST/TypeLocNodes.def; sourceTree = "<group>"; };
+		9047537E1096376F00CBDDDD /* TypeLocVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TypeLocVisitor.h; path = clang/AST/TypeLocVisitor.h; sourceTree = "<group>"; };
+		9047537F1096376F00CBDDDD /* TypeVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TypeVisitor.h; path = clang/AST/TypeVisitor.h; sourceTree = "<group>"; };
 		9063F2210F9E8BDF002F7251 /* ExternalSemaSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExternalSemaSource.h; path = clang/Sema/ExternalSemaSource.h; sourceTree = "<group>"; };
 		9063F2220F9E8BDF002F7251 /* SemaConsumer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SemaConsumer.h; path = clang/Sema/SemaConsumer.h; sourceTree = "<group>"; };
 		9063F2280F9E911F002F7251 /* OnDiskHashTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OnDiskHashTable.h; sourceTree = "<group>"; };
@@ -1257,6 +1266,7 @@
 				35A3E7000DD3874400757F74 /* CGDebugInfo.cpp */,
 				35A3E7010DD3874400757F74 /* CGDebugInfo.h */,
 				DE4264FB0C113592005A861D /* CGDecl.cpp */,
+				1AF1B50E109A4FB800AFAFAC /* CGException.cpp */,
 				DE4772FB0C10EAEC002239E8 /* CGExpr.cpp */,
 				DEF2EFF20C6CDD74000C4259 /* CGExprAgg.cpp */,
 				DE224FF70C7AA98800D370A5 /* CGExprComplex.cpp */,
@@ -1298,6 +1308,13 @@
 		DEC8D98B0A9433BC00353FCA /* AST */ = {
 			isa = PBXGroup;
 			children = (
+				904753791096376F00CBDDDD /* CXXInheritance.h */,
+				9047537A1096376F00CBDDDD /* Redeclarable.h */,
+				9047537B1096376F00CBDDDD /* TypeLoc.h */,
+				9047537C1096376F00CBDDDD /* TypeLocBuilder.h */,
+				9047537D1096376F00CBDDDD /* TypeLocNodes.def */,
+				9047537E1096376F00CBDDDD /* TypeLocVisitor.h */,
+				9047537F1096376F00CBDDDD /* TypeVisitor.h */,
 				DECB78540FA58F5500F5FBC7 /* AccessSpecifier.h */,
 				DE613EF30E0E148D00B05B79 /* APValue.h */,
 				DEC8D9A30A94346E00353FCA /* AST.h */,
@@ -1901,6 +1918,7 @@
 				1A535ED9107BC45E000C3AE7 /* CXXInheritance.cpp in Sources */,
 				1A6C01F7108128710072DEE4 /* CGRtti.cpp in Sources */,
 				1A81AA19108144F40094E50B /* CGVtable.cpp in Sources */,
+				1AF1B50F109A4FB800AFAFAC /* CGException.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: vendor/clang/dist/docs/LanguageExtensions.html
==============================================================================
--- vendor/clang/dist/docs/LanguageExtensions.html	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/docs/LanguageExtensions.html	Wed Nov  4 15:04:32 2009	(r198893)
@@ -20,6 +20,7 @@ td {
 <ul>
 <li><a href="#intro">Introduction</a></li>
 <li><a href="#feature_check">Feature Checking Macros</a></li>
+<li><a href="#has_include">Include File Checking Macros</a></li>
 <li><a href="#builtinmacros">Builtin Macros</a></li>
 <li><a href="#vectors">Vectors and Extended Vectors</a></li>
 <li><a href="#blocks">Blocks</a></li>
@@ -112,6 +113,69 @@ can be used like this:</p>
 
 <p>The feature tag is described along with the language feature below.</p>
 
+<!-- ======================================================================= -->
+<h2 id="has_include">Include File Checking Macros</h2>
+<!-- ======================================================================= -->
+
+<p>Not all developments systems have the same include files.
+The <a href="#__has_include">__has_include</a> and
+<a href="#__has_include_next">__has_include_next</a> macros allow you to
+check for the existence of an include file before doing
+a possibly failing #include directive.</p>
+
+<!-- ======================================================================= -->
+<h3 id="__has_include">__has_include</h3>
+<!-- ======================================================================= -->
+
+<p>This function-like macro takes a single file name string argument that
+is the name of an include file.  It evaluates to 1 if the file can
+be found using the include paths, or 0 otherwise:</p>
+
+<blockquote>
+<pre>
+// Note the two possible file name string formats.
+#if __has_include("myinclude.h") && __has_include(&lt;stdint.h&gt;)
+# include "myinclude.h"
+#endif
+
+// To avoid problem with non-clang compilers not having this macro.
+#if defined(__has_include) && __has_include("myinclude.h")
+# include "myinclude.h"
+#endif
+</pre>
+</blockquote>
+
+<p>To test for this feature, use #if defined(__has_include).</p>
+
+<!-- ======================================================================= -->
+<h3 id="__has_include_next">__has_include_next</h3>
+<!-- ======================================================================= -->
+
+<p>This function-like macro takes a single file name string argument that
+is the name of an include file.  It is like __has_include except that it
+looks for the second instance of the given file found in the include
+paths.  It evaluates to 1 if the second instance of the file can
+be found using the include paths, or 0 otherwise:</p>
+
+<blockquote>
+<pre>
+// Note the two possible file name string formats.
+#if __has_include_next("myinclude.h") && __has_include_next(&lt;stdint.h&gt;)
+# include_next "myinclude.h"
+#endif
+
+// To avoid problem with non-clang compilers not having this macro.
+#if defined(__has_include_next) && __has_include_next("myinclude.h")
+# include_next "myinclude.h"
+#endif
+</pre>
+</blockquote>
+
+<p>Note that __has_include_next, like the GNU extension
+#include_next directive, is intended for use in headers only,
+and will issue a warning if used in the top-level compilation
+file.  A warning will also be issued if an absolute path
+is used in the file argument.</p>
 
 <!-- ======================================================================= -->
 <h2 id="builtinmacros">Builtin Macros</h2>

Modified: vendor/clang/dist/docs/tools/clang.pod
==============================================================================
--- vendor/clang/dist/docs/tools/clang.pod	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/docs/tools/clang.pod	Wed Nov  4 15:04:32 2009	(r198893)
@@ -424,6 +424,10 @@ Add the specified directory to the searc
 
 Do not search the standard system directories for include files.
 
+=item B<-nobuiltininc>
+
+Do not search clang's builtin directory for include files.
+
 =cut
 
 ## TODO, but do we really want people using this stuff?

Modified: vendor/clang/dist/include/clang-c/Index.h
==============================================================================
--- vendor/clang/dist/include/clang-c/Index.h	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/include/clang-c/Index.h	Wed Nov  4 15:04:32 2009	(r198893)
@@ -16,10 +16,23 @@
 #ifndef CLANG_C_INDEX_H
 #define CLANG_C_INDEX_H
 
+#include <sys/stat.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+/* MSVC DLL import/export. */
+#ifdef _MSC_VER
+  #ifdef _CINDEX_LIB_
+    #define CINDEX_LINKAGE __declspec(dllexport)
+  #else
+    #define CINDEX_LINKAGE __declspec(dllimport)
+  #endif
+#else
+  #define CINDEX_LINKAGE
+#endif
+
 /*
    Clang indeX abstractions. The backing store for the following API's will be 
    clangs AST file (currently based on PCH). AST files are created as follows:
@@ -33,6 +46,7 @@ typedef void *CXIndex;            /* An 
 
 typedef void *CXTranslationUnit;  /* A translation unit instance. */
 
+typedef void *CXFile;    /* A source file */
 typedef void *CXDecl;    /* A specific declaration within a translation unit. */
 typedef void *CXStmt;    /* A specific statement within a function/method */
 
@@ -138,22 +152,22 @@ typedef void *CXEntity;
  * -include-pch) allows 'excludeDeclsFromPCH' to remove redundant callbacks
  * (which gives the indexer the same performance benefit as the compiler).
  */
-CXIndex clang_createIndex(int excludeDeclarationsFromPCH,
+CINDEX_LINKAGE CXIndex clang_createIndex(int excludeDeclarationsFromPCH,
                           int displayDiagnostics);
-void clang_disposeIndex(CXIndex);
+CINDEX_LINKAGE void clang_disposeIndex(CXIndex);
 
-const char *clang_getTranslationUnitSpelling(CXTranslationUnit CTUnit);
+CINDEX_LINKAGE const char *clang_getTranslationUnitSpelling(CXTranslationUnit CTUnit);
 
 /* 
  * \brief Create a translation unit from an AST file (-emit-ast).
  */
-CXTranslationUnit clang_createTranslationUnit(
+CINDEX_LINKAGE CXTranslationUnit clang_createTranslationUnit(
   CXIndex, const char *ast_filename
 );
 /**
  * \brief Destroy the specified CXTranslationUnit object.
  */ 
-void clang_disposeTranslationUnit(CXTranslationUnit);
+CINDEX_LINKAGE void clang_disposeTranslationUnit(CXTranslationUnit);
 
 /**
  * \brief Return the CXTranslationUnit for a given source file and the provided
@@ -170,7 +184,7 @@ void clang_disposeTranslationUnit(CXTran
  *   '-o <output file>'  (both '-o' and '<output file>' are ignored)
  *
  */
-CXTranslationUnit clang_createTranslationUnitFromSourceFile(
+CINDEX_LINKAGE CXTranslationUnit clang_createTranslationUnitFromSourceFile(
   CXIndex CIdx, 
   const char *source_filename /* specify NULL if the source file is in clang_command_line_args */,
   int num_clang_command_line_args, 
@@ -197,7 +211,7 @@ CXTranslationUnit clang_createTranslatio
 typedef void *CXClientData;
 typedef void (*CXTranslationUnitIterator)(CXTranslationUnit, CXCursor, 
                                           CXClientData);
-void clang_loadTranslationUnit(CXTranslationUnit, CXTranslationUnitIterator,
+CINDEX_LINKAGE void clang_loadTranslationUnit(CXTranslationUnit, CXTranslationUnitIterator,
                                CXClientData);
 
 /*
@@ -227,23 +241,30 @@ void clang_loadTranslationUnit(CXTransla
 */
 typedef void (*CXDeclIterator)(CXDecl, CXCursor, CXClientData);
 
-void clang_loadDeclaration(CXDecl, CXDeclIterator, CXClientData);
+CINDEX_LINKAGE void clang_loadDeclaration(CXDecl, CXDeclIterator, CXClientData);
+
+/*
+ * CXFile Operations.
+ */
+CINDEX_LINKAGE const char *clang_getFileName(CXFile SFile);
+CINDEX_LINKAGE time_t clang_getFileTime(CXFile SFile);
 
 /*
  * CXEntity Operations.
  */
-const char *clang_getDeclarationName(CXEntity);
-const char *clang_getURI(CXEntity);
-CXEntity clang_getEntity(const char *URI);
+CINDEX_LINKAGE const char *clang_getDeclarationName(CXEntity);
+CINDEX_LINKAGE const char *clang_getURI(CXEntity);
+CINDEX_LINKAGE CXEntity clang_getEntity(const char *URI);
 /*
  * CXDecl Operations.
  */
-CXCursor clang_getCursorFromDecl(CXDecl);
-CXEntity clang_getEntityFromDecl(CXDecl);
-const char *clang_getDeclSpelling(CXDecl);
-unsigned clang_getDeclLine(CXDecl);
-unsigned clang_getDeclColumn(CXDecl);
-const char *clang_getDeclSource(CXDecl);
+CINDEX_LINKAGE CXCursor clang_getCursorFromDecl(CXDecl);
+CINDEX_LINKAGE CXEntity clang_getEntityFromDecl(CXDecl);
+CINDEX_LINKAGE const char *clang_getDeclSpelling(CXDecl);
+CINDEX_LINKAGE unsigned clang_getDeclLine(CXDecl);
+CINDEX_LINKAGE unsigned clang_getDeclColumn(CXDecl);
+CINDEX_LINKAGE const char *clang_getDeclSource(CXDecl); /* deprecate */
+CINDEX_LINKAGE CXFile clang_getDeclSourceFile(CXDecl);
 
 /*
  * CXCursor Operations.
@@ -252,38 +273,24 @@ const char *clang_getDeclSource(CXDecl);
    Usage: clang_getCursor() will translate a source/line/column position
    into an AST cursor (to derive semantic information from the source code).
  */
-CXCursor clang_getCursor(CXTranslationUnit, const char *source_name, 
+CINDEX_LINKAGE CXCursor clang_getCursor(CXTranslationUnit, const char *source_name, 
                          unsigned line, unsigned column);
 
-/**
-   Usage: clang_getCursorWithHint() provides the same functionality as
-   clang_getCursor() except that it takes an option 'hint' argument.
-   The 'hint' is a temporary CXLookupHint object (whose lifetime is managed by 
-   the caller) that should be initialized with clang_initCXLookupHint().
-
-   FIXME: Add a better comment once getCursorWithHint() has more functionality.
- */                         
-typedef CXCursor CXLookupHint;
-CXCursor clang_getCursorWithHint(CXTranslationUnit, const char *source_name, 
-                                 unsigned line, unsigned column, 
-                                 CXLookupHint *hint);
-
-void clang_initCXLookupHint(CXLookupHint *hint);
-
-enum CXCursorKind clang_getCursorKind(CXCursor);
-unsigned clang_isDeclaration(enum CXCursorKind);
-unsigned clang_isReference(enum CXCursorKind);
-unsigned clang_isDefinition(enum CXCursorKind);
-unsigned clang_isInvalid(enum CXCursorKind);
-
-unsigned clang_getCursorLine(CXCursor);
-unsigned clang_getCursorColumn(CXCursor);
-const char *clang_getCursorSource(CXCursor);
-const char *clang_getCursorSpelling(CXCursor);
+CINDEX_LINKAGE enum CXCursorKind clang_getCursorKind(CXCursor);
+CINDEX_LINKAGE unsigned clang_isDeclaration(enum CXCursorKind);
+CINDEX_LINKAGE unsigned clang_isReference(enum CXCursorKind);
+CINDEX_LINKAGE unsigned clang_isDefinition(enum CXCursorKind);
+CINDEX_LINKAGE unsigned clang_isInvalid(enum CXCursorKind);
+
+CINDEX_LINKAGE unsigned clang_getCursorLine(CXCursor);
+CINDEX_LINKAGE unsigned clang_getCursorColumn(CXCursor);
+CINDEX_LINKAGE const char *clang_getCursorSpelling(CXCursor);
+CINDEX_LINKAGE const char *clang_getCursorSource(CXCursor); /* deprecate */
+CINDEX_LINKAGE CXFile clang_getCursorSourceFile(CXCursor);
 
 /* for debug/testing */
-const char *clang_getCursorKindSpelling(enum CXCursorKind Kind); 
-void clang_getDefinitionSpellingAndExtent(CXCursor, 
+CINDEX_LINKAGE const char *clang_getCursorKindSpelling(enum CXCursorKind Kind); 
+CINDEX_LINKAGE void clang_getDefinitionSpellingAndExtent(CXCursor, 
                                           const char **startBuf, 
                                           const char **endBuf,
                                           unsigned *startLine,
@@ -296,7 +303,7 @@ void clang_getDefinitionSpellingAndExten
  * declaration.
  * If CXCursorKind == Cursor_Declaration, then this will return the declaration.
  */
-CXDecl clang_getCursorDecl(CXCursor);
+CINDEX_LINKAGE CXDecl clang_getCursorDecl(CXCursor);
 
 #ifdef __cplusplus
 }

Modified: vendor/clang/dist/include/clang/AST/ASTContext.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/ASTContext.h	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/include/clang/AST/ASTContext.h	Wed Nov  4 15:04:32 2009	(r198893)
@@ -16,6 +16,7 @@
 
 #include "clang/Basic/IdentifierTable.h"
 #include "clang/Basic/LangOptions.h"
+#include "clang/Basic/OperatorKinds.h"
 #include "clang/AST/Attr.h"
 #include "clang/AST/Decl.h"
 #include "clang/AST/NestedNameSpecifier.h"
@@ -301,22 +302,22 @@ public:
   const char *getCommentForDecl(const Decl *D);
 
   // Builtin Types.
-  QualType VoidTy;
-  QualType BoolTy;
-  QualType CharTy;
-  QualType WCharTy;  // [C++ 3.9.1p5], integer type in C99.
-  QualType Char16Ty; // [C++0x 3.9.1p5], integer type in C99.
-  QualType Char32Ty; // [C++0x 3.9.1p5], integer type in C99.
-  QualType SignedCharTy, ShortTy, IntTy, LongTy, LongLongTy, Int128Ty;
-  QualType UnsignedCharTy, UnsignedShortTy, UnsignedIntTy, UnsignedLongTy;
-  QualType UnsignedLongLongTy, UnsignedInt128Ty;
-  QualType FloatTy, DoubleTy, LongDoubleTy;
-  QualType FloatComplexTy, DoubleComplexTy, LongDoubleComplexTy;
-  QualType VoidPtrTy, NullPtrTy;
-  QualType OverloadTy;
-  QualType DependentTy;
-  QualType UndeducedAutoTy;
-  QualType ObjCBuiltinIdTy, ObjCBuiltinClassTy;
+  CanQualType VoidTy;
+  CanQualType BoolTy;
+  CanQualType CharTy;
+  CanQualType WCharTy;  // [C++ 3.9.1p5], integer type in C99.
+  CanQualType Char16Ty; // [C++0x 3.9.1p5], integer type in C99.
+  CanQualType Char32Ty; // [C++0x 3.9.1p5], integer type in C99.
+  CanQualType SignedCharTy, ShortTy, IntTy, LongTy, LongLongTy, Int128Ty;
+  CanQualType UnsignedCharTy, UnsignedShortTy, UnsignedIntTy, UnsignedLongTy;
+  CanQualType UnsignedLongLongTy, UnsignedInt128Ty;
+  CanQualType FloatTy, DoubleTy, LongDoubleTy;
+  CanQualType FloatComplexTy, DoubleComplexTy, LongDoubleComplexTy;
+  CanQualType VoidPtrTy, NullPtrTy;
+  CanQualType OverloadTy;
+  CanQualType DependentTy;
+  CanQualType UndeducedAutoTy;
+  CanQualType ObjCBuiltinIdTy, ObjCBuiltinClassTy;
 
   ASTContext(const LangOptions& LOpts, SourceManager &SM, TargetInfo &t,
              IdentifierTable &idents, SelectorTable &sels,
@@ -387,10 +388,16 @@ public:
   /// getComplexType - Return the uniqued reference to the type for a complex
   /// number with the specified element type.
   QualType getComplexType(QualType T);
+  CanQualType getComplexType(CanQualType T) {
+    return CanQualType::CreateUnsafe(getComplexType((QualType) T));
+  }
 
   /// getPointerType - Return the uniqued reference to the type for a pointer to
   /// the specified type.
   QualType getPointerType(QualType T);
+  CanQualType getPointerType(CanQualType T) {
+    return CanQualType::CreateUnsafe(getPointerType((QualType) T));
+  }
 
   /// getBlockPointerType - Return the uniqued reference to the type for a block
   /// of the specified type.
@@ -525,6 +532,11 @@ public:
                                          unsigned NumArgs,
                                          QualType Canon = QualType());
 
+  QualType getTemplateSpecializationType(TemplateName T,
+                                         const TemplateArgumentLoc *Args,
+                                         unsigned NumArgs,
+                                         QualType Canon = QualType());
+
   QualType getQualifiedNameType(NestedNameSpecifier *NNS,
                                 QualType NamedType);
   QualType getTypenameType(NestedNameSpecifier *NNS,
@@ -728,6 +740,8 @@ public:
 
   TemplateName getDependentTemplateName(NestedNameSpecifier *NNS,
                                         const IdentifierInfo *Name);
+  TemplateName getDependentTemplateName(NestedNameSpecifier *NNS,
+                                        OverloadedOperatorKind Operator);
 
   enum GetBuiltinTypeError {
     GE_None,              //< No error
@@ -739,7 +753,7 @@ public:
   QualType GetBuiltinType(unsigned ID, GetBuiltinTypeError &Error);
 
 private:
-  QualType getFromTargetType(unsigned Type) const;
+  CanQualType getFromTargetType(unsigned Type) const;
 
   //===--------------------------------------------------------------------===//
   //                         Type Predicates.
@@ -826,6 +840,8 @@ public:
                                llvm::SmallVectorImpl<ObjCIvarDecl*> &Ivars);
   unsigned CountSynthesizedIvars(const ObjCInterfaceDecl *OI);
   unsigned CountProtocolSynthesizedIvars(const ObjCProtocolDecl *PD);
+  void CollectInheritedProtocols(const Decl *CDecl,
+                          llvm::SmallVectorImpl<ObjCProtocolDecl*> &Protocols);
 
   //===--------------------------------------------------------------------===//
   //                            Type Operators
@@ -1013,7 +1029,9 @@ public:
   bool canAssignObjCInterfaces(const ObjCInterfaceType *LHS,
                                const ObjCInterfaceType *RHS);
   bool areComparableObjCPointerTypes(QualType LHS, QualType RHS);
-
+  QualType areCommonBaseCompatible(const ObjCObjectPointerType *LHSOPT,
+                                   const ObjCObjectPointerType *RHSOPT);
+  
   // Functions for calculating composite types
   QualType mergeTypes(QualType, QualType);
   QualType mergeFunctionTypes(QualType, QualType);
@@ -1085,12 +1103,18 @@ public:
   /// should be calculated based on the type.
   DeclaratorInfo *CreateDeclaratorInfo(QualType T, unsigned Size = 0);
 
+  /// \brief Allocate a DeclaratorInfo where all locations have been
+  /// initialized to a given location, which defaults to the empty
+  /// location.
+  DeclaratorInfo *
+  getTrivialDeclaratorInfo(QualType T, SourceLocation Loc = SourceLocation());
+
 private:
   ASTContext(const ASTContext&); // DO NOT IMPLEMENT
   void operator=(const ASTContext&); // DO NOT IMPLEMENT
 
   void InitBuiltinTypes();
-  void InitBuiltinType(QualType &R, BuiltinType::Kind K);
+  void InitBuiltinType(CanQualType &R, BuiltinType::Kind K);
 
   // Return the ObjC type encoding for a given type.
   void getObjCEncodingForTypeImpl(QualType t, std::string &S,
@@ -1103,6 +1127,18 @@ private:
   const ASTRecordLayout &getObjCLayout(const ObjCInterfaceDecl *D,
                                        const ObjCImplementationDecl *Impl);
 };
+  
+/// @brief Utility function for constructing a nullary selector.
+static inline Selector GetNullarySelector(const char* name, ASTContext& Ctx) {
+  IdentifierInfo* II = &Ctx.Idents.get(name);
+  return Ctx.Selectors.getSelector(0, &II);
+}
+
+/// @brief Utility function for constructing an unary selector.
+static inline Selector GetUnarySelector(const char* name, ASTContext& Ctx) {
+  IdentifierInfo* II = &Ctx.Idents.get(name);
+  return Ctx.Selectors.getSelector(1, &II);
+}
 
 }  // end namespace clang
 

Modified: vendor/clang/dist/include/clang/AST/CanonicalType.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/CanonicalType.h	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/include/clang/AST/CanonicalType.h	Wed Nov  4 15:04:32 2009	(r198893)
@@ -64,15 +64,6 @@ public:
   CanQual(const CanQual<U>& Other,
           typename llvm::enable_if<llvm::is_base_of<T, U>, int>::type = 0);
 
-  /// \brief Implicit conversion to the underlying pointer.
-  ///
-  /// Also provides the ability to use canonical types in a boolean context,
-  /// e.g.,
-  /// @code
-  ///   if (CanQual<PointerType> Ptr = T->getAs<PointerType>()) { ... }
-  /// @endcode
-  operator const T*() const { return getTypePtr(); }
-
   /// \brief Retrieve the underlying type pointer, which refers to a
   /// canonical type.
   T *getTypePtr() const { return cast_or_null<T>(Stored.getTypePtr()); }
@@ -80,6 +71,10 @@ public:
   /// \brief Implicit conversion to a qualified type.
   operator QualType() const { return Stored; }
 
+  bool isNull() const {
+    return Stored.isNull();
+  }
+
   /// \brief Retrieve a canonical type pointer with a different static type,
   /// upcasting or downcasting as needed.
   ///
@@ -125,8 +120,10 @@ public:
   /// \brief Retrieve the unqualified form of this type.
   CanQual<T> getUnqualifiedType() const;
 
-  CanQual<T> getQualifiedType(unsigned TQs) const {
-    return CanQual<T>::CreateUnsafe(QualType(getTypePtr(), TQs));
+  /// \brief Retrieves a version of this type with const applied.
+  /// Note that this does not always yield a canonical type.
+  QualType withConst() const {
+    return Stored.withConst();
   }
 
   /// \brief Determines whether this canonical type is more qualified than

Modified: vendor/clang/dist/include/clang/AST/Decl.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/Decl.h	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/include/clang/AST/Decl.h	Wed Nov  4 15:04:32 2009	(r198893)
@@ -605,6 +605,9 @@ public:
   /// \brief Determine whether this is or was instantiated from an out-of-line 
   /// definition of a static data member.
   bool isOutOfLine() const;
+
+  /// \brief If this is a static data member, find its out-of-line definition.
+  VarDecl *getOutOfLineDefinition();
   
   /// \brief If this variable is an instantiated static data member of a
   /// class template specialization, returns the templated static data member
@@ -768,7 +771,11 @@ public:
     Init = (UnparsedDefaultArgument *)0;
   }
 
-  QualType getOriginalType() const;
+  QualType getOriginalType() const {
+    if (getDeclaratorInfo())
+      return getDeclaratorInfo()->getType();
+    return getType();
+  }
 
   /// setOwningFunction - Sets the function declaration that owns this
   /// ParmVarDecl. Since ParmVarDecls are often created before the
@@ -778,41 +785,11 @@ public:
 
   // Implement isa/cast/dyncast/etc.
   static bool classof(const Decl *D) {
-    return (D->getKind() == ParmVar ||
-            D->getKind() == OriginalParmVar);
+    return (D->getKind() == ParmVar);
   }
   static bool classof(const ParmVarDecl *D) { return true; }
 };
 
-/// OriginalParmVarDecl - Represent a parameter to a function, when
-/// the type of the parameter has been promoted. This node represents the
-/// parameter to the function with its original type.
-///
-class OriginalParmVarDecl : public ParmVarDecl {
-  friend class ParmVarDecl;
-protected:
-  QualType OriginalType;
-private:
-  OriginalParmVarDecl(DeclContext *DC, SourceLocation L,
-                              IdentifierInfo *Id, QualType T,
-                              DeclaratorInfo *DInfo,
-                              QualType OT, StorageClass S,
-                              Expr *DefArg)
-  : ParmVarDecl(OriginalParmVar, DC, L, Id, T, DInfo, S, DefArg),
-    OriginalType(OT) {}
-public:
-  static OriginalParmVarDecl *Create(ASTContext &C, DeclContext *DC,
-                                     SourceLocation L,IdentifierInfo *Id,
-                                     QualType T, DeclaratorInfo *DInfo,
-                                     QualType OT, StorageClass S, Expr *DefArg);
-
-  void setOriginalType(QualType T) { OriginalType = T; }
-
-  // Implement isa/cast/dyncast/etc.
-  static bool classof(const Decl *D) { return D->getKind() == OriginalParmVar; }
-  static bool classof(const OriginalParmVarDecl *D) { return true; }
-};
-
 /// FunctionDecl - An instance of this class is created to represent a
 /// function declaration or definition.
 ///
@@ -1067,9 +1044,18 @@ public:
   StorageClass getStorageClass() const { return StorageClass(SClass); }
   void setStorageClass(StorageClass SC) { SClass = SC; }
 
-  bool isInline() const { return IsInline; }
-  void setInline(bool I) { IsInline = I; }
+  /// \brief Determine whether the "inline" keyword was specified for this
+  /// function.
+  bool isInlineSpecified() const { return IsInline; }
+                       
+  /// Set whether the "inline" keyword was specified for this function.
+  void setInlineSpecified(bool I) { IsInline = I; }
 
+  /// \brief Determine whether this function should be inlined, because it is
+  /// either marked "inline" or is a member function of a C++ class that
+  /// was defined in the class body.
+  bool isInlined() const;
+                       
   bool isInlineDefinitionExternallyVisible() const;
                        
   /// isOverloadedOperator - Whether this function declaration
@@ -1146,7 +1132,17 @@ public:
     return TemplateOrSpecialization.
              dyn_cast<FunctionTemplateSpecializationInfo*>();
   }
-                       
+
+  /// \brief Determines whether this function is a function template
+  /// specialization or a member of a class template specialization that can
+  /// be implicitly instantiated.
+  bool isImplicitlyInstantiable() const;
+              
+  /// \brief Retrieve the function declaration from which this function could
+  /// be instantiated, if it is an instantiation (rather than a non-template
+  /// or a specialization, for example).
+  FunctionDecl *getTemplateInstantiationPattern() const;
+
   /// \brief Retrieve the primary template that this function template
   /// specialization either specializes or was instantiated from.
   ///
@@ -1199,7 +1195,7 @@ public:
   /// instantiated from a template; otherwie, returns an invalid source 
   /// location.
   SourceLocation getPointOfInstantiation() const;
-
+                       
   /// \brief Determine whether this is or was instantiated from an out-of-line 
   /// definition of a member function.
   bool isOutOfLine() const;
@@ -1337,20 +1333,29 @@ public:
 
 class TypedefDecl : public TypeDecl {
   /// UnderlyingType - This is the type the typedef is set to.
-  QualType UnderlyingType;
+  DeclaratorInfo *DInfo;
+
   TypedefDecl(DeclContext *DC, SourceLocation L,
-              IdentifierInfo *Id, QualType T)
-    : TypeDecl(Typedef, DC, L, Id), UnderlyingType(T) {}
+              IdentifierInfo *Id, DeclaratorInfo *DInfo)
+    : TypeDecl(Typedef, DC, L, Id), DInfo(DInfo) {}
 
   virtual ~TypedefDecl() {}
 public:
 
   static TypedefDecl *Create(ASTContext &C, DeclContext *DC,
-                             SourceLocation L,IdentifierInfo *Id,
-                             QualType T);
+                             SourceLocation L, IdentifierInfo *Id,
+                             DeclaratorInfo *DInfo);
+
+  DeclaratorInfo *getTypeDeclaratorInfo() const {
+    return DInfo;
+  }
 
-  QualType getUnderlyingType() const { return UnderlyingType; }
-  void setUnderlyingType(QualType newType) { UnderlyingType = newType; }
+  QualType getUnderlyingType() const {
+    return DInfo->getType();
+  }
+  void setTypeDeclaratorInfo(DeclaratorInfo *newType) {
+    DInfo = newType;
+  }
 
   // Implement isa/cast/dyncast/etc.
   static bool classof(const Decl *D) { return D->getKind() == Typedef; }

Modified: vendor/clang/dist/include/clang/AST/DeclGroup.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclGroup.h	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/include/clang/AST/DeclGroup.h	Wed Nov  4 15:04:32 2009	(r198893)
@@ -14,7 +14,7 @@
 #ifndef LLVM_CLANG_AST_DECLGROUP_H
 #define LLVM_CLANG_AST_DECLGROUP_H
 
-#include "llvm/Support/DataTypes.h"
+#include "llvm/System/DataTypes.h"
 #include <cassert>
 
 namespace clang {

Modified: vendor/clang/dist/include/clang/AST/DeclNodes.def
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclNodes.def	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/include/clang/AST/DeclNodes.def	Wed Nov  4 15:04:32 2009	(r198893)
@@ -103,7 +103,6 @@ ABSTRACT_DECL(Named,  Decl)
       DECL(Var, DeclaratorDecl)
         DECL(ImplicitParam, VarDecl)
         DECL(ParmVar, VarDecl)
-          DECL(OriginalParmVar, ParmVarDecl)
         DECL(NonTypeTemplateParm, VarDecl)
   DECL(Template, NamedDecl)
     DECL(FunctionTemplate, TemplateDecl)

Modified: vendor/clang/dist/include/clang/AST/DeclObjC.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclObjC.h	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/include/clang/AST/DeclObjC.h	Wed Nov  4 15:04:32 2009	(r198893)
@@ -347,6 +347,8 @@ public:
   ObjCIvarDecl *getIvarDecl(IdentifierInfo *Id) const;
 
   ObjCPropertyDecl *FindPropertyDeclaration(IdentifierInfo *PropertyId) const;
+  ObjCPropertyDecl *FindPropertyVisibleInPrimaryClass(
+                                            IdentifierInfo *PropertyId) const;
 
   // Marks the end of the container.
   SourceLocation getAtEndLoc() const { return AtEndLoc; }
@@ -862,7 +864,7 @@ public:
 };
 
 class ObjCImplDecl : public ObjCContainerDecl {
-  /// Class interface for this category implementation
+  /// Class interface for this class/category implementation
   ObjCInterfaceDecl *ClassInterface;
 
 protected:
@@ -935,14 +937,20 @@ public:
                                       SourceLocation L, IdentifierInfo *Id,
                                       ObjCInterfaceDecl *classInterface);
 
-  /// getIdentifier - Get the identifier that names the class
+  /// getIdentifier - Get the identifier that names the category
   /// interface associated with this implementation.
+  /// FIXME: This is a bad API, we are overriding the NamedDecl::getIdentifier()
+  /// to mean something different. For example:
+  /// ((NamedDecl *)SomeCategoryImplDecl)->getIdentifier() 
+  /// returns the class interface name, whereas 
+  /// ((ObjCCategoryImplDecl *)SomeCategoryImplDecl)->getIdentifier() 
+  /// returns the category name.
   IdentifierInfo *getIdentifier() const {
     return Id;
   }
   void setIdentifier(IdentifierInfo *II) { Id = II; }
 
-  ObjCCategoryDecl *getCategoryClass() const;
+  ObjCCategoryDecl *getCategoryDecl() const;
 
   /// getName - Get the name of identifier for the class interface associated
   /// with this implementation as a StringRef.

Modified: vendor/clang/dist/include/clang/AST/DeclTemplate.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclTemplate.h	Wed Nov  4 14:58:56 2009	(r198892)
+++ vendor/clang/dist/include/clang/AST/DeclTemplate.h	Wed Nov  4 15:04:32 2009	(r198893)
@@ -15,8 +15,7 @@
 #define LLVM_CLANG_AST_DECLTEMPLATE_H
 
 #include "clang/AST/DeclCXX.h"
-#include "llvm/ADT/APSInt.h"
-#include "llvm/ADT/FoldingSet.h"
+#include "clang/AST/TemplateBase.h"
 #include "llvm/ADT/PointerUnion.h"
 #include <limits>
 
@@ -91,6 +90,13 @@ public:
   /// arguments or if there is a parameter pack.
   unsigned getMinRequiredArguments() const;
 
+  /// \brief Get the depth of this template parameter list in the set of
+  /// template parameter lists.
+  ///
+  /// The first template parameter list in a declaration will have depth 0,
+  /// the second template parameter list will have depth 1, etc.
+  unsigned getDepth() const;
+  
   SourceLocation getTemplateLoc() const { return TemplateLoc; }
   SourceLocation getLAngleLoc() const { return LAngleLoc; }
   SourceLocation getRAngleLoc() const { return RAngleLoc; }
@@ -100,251 +106,6 @@ public:
   }
 };
 
-/// \brief Represents a template argument within a class template
-/// specialization.
-class TemplateArgument {
-  union {
-    uintptr_t TypeOrValue;
-    struct {
-      char Value[sizeof(llvm::APSInt)];
-      void *Type;
-    } Integer;
-    struct {
-      TemplateArgument *Args;
-      unsigned NumArgs;
-      bool CopyArgs;
-    } Args;
-  };
-
-  /// \brief Location of the beginning of this template argument.
-  SourceLocation StartLoc;
-
-public:
-  /// \brief The type of template argument we're storing.
-  enum ArgKind {
-    Null = 0,
-    /// The template argument is a type. Its value is stored in the
-    /// TypeOrValue field.
-    Type = 1,
-    /// The template argument is a declaration
-    Declaration = 2,
-    /// The template argument is an integral value stored in an llvm::APSInt.
-    Integral = 3,
-    /// The template argument is a value- or type-dependent expression
-    /// stored in an Expr*.
-    Expression = 4,
-
-    /// The template argument is actually a parameter pack. Arguments are stored
-    /// in the Args struct.
-    Pack = 5
-  } Kind;
-
-  /// \brief Construct an empty, invalid template argument.
-  TemplateArgument() : TypeOrValue(0), StartLoc(), Kind(Null) { }
-
-  /// \brief Construct a template type argument.
-  TemplateArgument(SourceLocation Loc, QualType T) : Kind(Type) {
-    TypeOrValue = reinterpret_cast<uintptr_t>(T.getAsOpaquePtr());
-    StartLoc = Loc;
-  }
-
-  /// \brief Construct a template argument that refers to a
-  /// declaration, which is either an external declaration or a
-  /// template declaration.
-  TemplateArgument(SourceLocation Loc, Decl *D) : Kind(Declaration) {
-    // FIXME: Need to be sure we have the "canonical" declaration!
-    TypeOrValue = reinterpret_cast<uintptr_t>(D);
-    StartLoc = Loc;
-  }
-
-  /// \brief Construct an integral constant template argument.
-  TemplateArgument(SourceLocation Loc, const llvm::APSInt &Value,
-                   QualType Type)
-  : Kind(Integral) {
-    new (Integer.Value) llvm::APSInt(Value);
-    Integer.Type = Type.getAsOpaquePtr();
-    StartLoc = Loc;
-  }
-
-  /// \brief Construct a template argument that is an expression.
-  ///
-  /// This form of template argument only occurs in template argument
-  /// lists used for dependent types and for expression; it will not
-  /// occur in a non-dependent, canonical template argument list.
-  TemplateArgument(Expr *E);
-
-  /// \brief Copy constructor for a template argument.
-  TemplateArgument(const TemplateArgument &Other) : Kind(Other.Kind) {
-    if (Kind == Integral) {
-      new (Integer.Value) llvm::APSInt(*Other.getAsIntegral());
-      Integer.Type = Other.Integer.Type;
-    } else if (Kind == Pack) {
-      Args.NumArgs = Other.Args.NumArgs;
-      Args.Args = new TemplateArgument[Args.NumArgs];
-      for (unsigned I = 0; I != Args.NumArgs; ++I)
-        Args.Args[I] = Other.Args.Args[I];
-    }
-    else
-      TypeOrValue = Other.TypeOrValue;
-    StartLoc = Other.StartLoc;
-  }
-
-  TemplateArgument& operator=(const TemplateArgument& Other) {
-    // FIXME: Does not provide the strong guarantee for exception
-    // safety.
-    using llvm::APSInt;
-
-    // FIXME: Handle Packs
-    assert(Kind != Pack && "FIXME: Handle packs");
-    assert(Other.Kind != Pack && "FIXME: Handle packs");
-
-    if (Kind == Other.Kind && Kind == Integral) {
-      // Copy integral values.
-      *this->getAsIntegral() = *Other.getAsIntegral();
-      Integer.Type = Other.Integer.Type;
-    } else {
-      // Destroy the current integral value, if that's what we're holding.
-      if (Kind == Integral)
-        getAsIntegral()->~APSInt();
-
-      Kind = Other.Kind;
-
-      if (Other.Kind == Integral) {
-        new (Integer.Value) llvm::APSInt(*Other.getAsIntegral());
-        Integer.Type = Other.Integer.Type;
-      } else
-        TypeOrValue = Other.TypeOrValue;
-    }
-    StartLoc = Other.StartLoc;
-
-    return *this;
-  }
-
-  ~TemplateArgument() {
-    using llvm::APSInt;
-
-    if (Kind == Integral)
-      getAsIntegral()->~APSInt();
-    else if (Kind == Pack && Args.CopyArgs)
-      delete[] Args.Args;
-  }
-
-  /// \brief Return the kind of stored template argument.
-  ArgKind getKind() const { return Kind; }
-
-  /// \brief Determine whether this template argument has no value.
-  bool isNull() const { return Kind == Null; }
-
-  /// \brief Retrieve the template argument as a type.
-  QualType getAsType() const {
-    if (Kind != Type)
-      return QualType();
-
-    return QualType::getFromOpaquePtr(reinterpret_cast<void*>(TypeOrValue));
-  }
-
-  /// \brief Retrieve the template argument as a declaration.
-  Decl *getAsDecl() const {
-    if (Kind != Declaration)
-      return 0;
-    return reinterpret_cast<Decl *>(TypeOrValue);
-  }
-
-  /// \brief Retrieve the template argument as an integral value.
-  llvm::APSInt *getAsIntegral() {
-    if (Kind != Integral)
-      return 0;
-    return reinterpret_cast<llvm::APSInt*>(&Integer.Value[0]);
-  }
-
-  const llvm::APSInt *getAsIntegral() const {
-    return const_cast<TemplateArgument*>(this)->getAsIntegral();
-  }
-
-  /// \brief Retrieve the type of the integral value.
-  QualType getIntegralType() const {
-    if (Kind != Integral)
-      return QualType();
-
-    return QualType::getFromOpaquePtr(Integer.Type);
-  }
-
-  void setIntegralType(QualType T) {
-    assert(Kind == Integral &&
-           "Cannot set the integral type of a non-integral template argument");
-    Integer.Type = T.getAsOpaquePtr();
-  };
-
-  /// \brief Retrieve the template argument as an expression.
-  Expr *getAsExpr() const {
-    if (Kind != Expression)
-      return 0;
-
-    return reinterpret_cast<Expr *>(TypeOrValue);
-  }
-
-  /// \brief Iterator that traverses the elements of a template argument pack.
-  typedef const TemplateArgument * pack_iterator;
-
-  /// \brief Iterator referencing the first argument of a template argument
-  /// pack.
-  pack_iterator pack_begin() const {
-    assert(Kind == Pack);
-    return Args.Args;

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-all mailing list