svn commit: r206084 - in vendor/clang/dist: . clang.xcodeproj examples/clang-interpreter include/clang/AST include/clang/Analysis include/clang/Analysis/FlowSensitive include/clang/Basic include/cl...

Roman Divacky rdivacky at FreeBSD.org
Fri Apr 2 08:55:12 UTC 2010


Author: rdivacky
Date: Fri Apr  2 08:55:10 2010
New Revision: 206084
URL: http://svn.freebsd.org/changeset/base/206084

Log:
  Update clang to r100181.

Added:
  vendor/clang/dist/include/clang/AST/DependentDiagnostic.h
  vendor/clang/dist/lib/Checker/AggExprVisitor.cpp
  vendor/clang/dist/lib/CodeGen/CGRecordLayout.h
  vendor/clang/dist/lib/Headers/wmmintrin.h
  vendor/clang/dist/test/CXX/basic/basic.stc/basic.stc.dynamic/p2-noexceptions.cpp
  vendor/clang/dist/test/CXX/class.access/class.access.base/p5.cpp
  vendor/clang/dist/test/CXX/class.derived/class.abstract/p4.cpp
  vendor/clang/dist/test/CXX/class.derived/class.abstract/p5.cpp
  vendor/clang/dist/test/CXX/class.derived/class.virtual/p2.cpp
  vendor/clang/dist/test/CXX/stmt.stmt/stmt.select/p3.cpp
  vendor/clang/dist/test/CXX/temp/temp.fct.spec/temp.deduct/p9.cpp
  vendor/clang/dist/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p17.cpp
  vendor/clang/dist/test/CodeGen/restrict.c
  vendor/clang/dist/test/CodeGenCXX/multi-dim-operator-new.cpp
  vendor/clang/dist/test/CodeGenCXX/rtti-fundamental.cpp
  vendor/clang/dist/test/CodeGenCXX/template-instantiation.cpp
  vendor/clang/dist/test/CodeGenCXX/thunks.cpp
  vendor/clang/dist/test/CodeGenObjC/complex-property.m
  vendor/clang/dist/test/CodeGenObjC/objc2-nonfragile-abi-impl.m
  vendor/clang/dist/test/Driver/nostdincxx.cpp
  vendor/clang/dist/test/Headers/c89.c
  vendor/clang/dist/test/Headers/x86-intrinsics-headers.c
  vendor/clang/dist/test/Index/print-usrs.c
  vendor/clang/dist/test/Parser/cxx-default-args.cpp
  vendor/clang/dist/test/Sema/attr-format.c
  vendor/clang/dist/test/Sema/attr-sentinel.c
  vendor/clang/dist/test/Sema/warn-gnu-designators.c
  vendor/clang/dist/test/SemaCXX/PR6618.cpp
  vendor/clang/dist/test/SemaCXX/new-delete-predefined-decl-2.cpp
  vendor/clang/dist/test/SemaObjC/ivar-in-class-extension-error.m
  vendor/clang/dist/test/SemaObjC/no-protocol-option-tests.m
  vendor/clang/dist/test/SemaObjC/property-in-class-extension.m
  vendor/clang/dist/test/SemaTemplate/instantiate-elab-type-specifier.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-function-params.cpp
  vendor/clang/dist/www/analyzer/downloads/
Deleted:
  vendor/clang/dist/lib/CodeGen/CGRecordLayoutBuilder.h
  vendor/clang/dist/test/Preprocessor/macro_disable2.c
  vendor/clang/dist/test/Preprocessor/macro_disable3.c
  vendor/clang/dist/test/Preprocessor/macro_disable4.c
  vendor/clang/dist/test/Sema/format-attr-pr4470.c
  vendor/clang/dist/test/Sema/format-attribute-printf0.c
  vendor/clang/dist/test/Sema/format-attribute.c
  vendor/clang/dist/test/Sema/function-pointer-sentinel-attribute.c
  vendor/clang/dist/test/Sema/function-sentinel-attr.c
  vendor/clang/dist/test/Sema/x86-intrinsics-headers.c
Modified:
  vendor/clang/dist/CMakeLists.txt
  vendor/clang/dist/clang.xcodeproj/project.pbxproj
  vendor/clang/dist/examples/clang-interpreter/main.cpp
  vendor/clang/dist/include/clang/AST/ASTContext.h
  vendor/clang/dist/include/clang/AST/CXXInheritance.h
  vendor/clang/dist/include/clang/AST/CanonicalType.h
  vendor/clang/dist/include/clang/AST/Decl.h
  vendor/clang/dist/include/clang/AST/DeclBase.h
  vendor/clang/dist/include/clang/AST/DeclCXX.h
  vendor/clang/dist/include/clang/AST/DeclContextInternals.h
  vendor/clang/dist/include/clang/AST/DeclFriend.h
  vendor/clang/dist/include/clang/AST/DeclTemplate.h
  vendor/clang/dist/include/clang/AST/DeclarationName.h
  vendor/clang/dist/include/clang/AST/Expr.h
  vendor/clang/dist/include/clang/AST/ExprCXX.h
  vendor/clang/dist/include/clang/AST/Type.h
  vendor/clang/dist/include/clang/AST/TypeLoc.h
  vendor/clang/dist/include/clang/AST/TypeNodes.def
  vendor/clang/dist/include/clang/Analysis/AnalysisContext.h
  vendor/clang/dist/include/clang/Analysis/FlowSensitive/DataflowSolver.h
  vendor/clang/dist/include/clang/Basic/Builtins.def
  vendor/clang/dist/include/clang/Basic/BuiltinsX86.def
  vendor/clang/dist/include/clang/Basic/CMakeLists.txt
  vendor/clang/dist/include/clang/Basic/Diagnostic.h
  vendor/clang/dist/include/clang/Basic/DiagnosticFrontendKinds.td
  vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td
  vendor/clang/dist/include/clang/Basic/DiagnosticParseKinds.td
  vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td
  vendor/clang/dist/include/clang/Basic/PartialDiagnostic.h
  vendor/clang/dist/include/clang/Basic/SourceLocation.h
  vendor/clang/dist/include/clang/Checker/BugReporter/BugReporter.h
  vendor/clang/dist/include/clang/Checker/BugReporter/BugType.h
  vendor/clang/dist/include/clang/Checker/BugReporter/PathDiagnostic.h
  vendor/clang/dist/include/clang/Checker/DomainSpecific/CocoaConventions.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/BasicValueFactory.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/Checker.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/Environment.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/ExplodedGraph.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/GRBlockCounter.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/GRCoreEngine.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/GRExprEngine.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/GRSimpleAPICheck.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/GRState.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/GRSubEngine.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/GRTransferFuncs.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/MemRegion.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/Store.h
  vendor/clang/dist/include/clang/Checker/PathSensitive/SymbolManager.h
  vendor/clang/dist/include/clang/CodeGen/CodeGenOptions.h
  vendor/clang/dist/include/clang/Driver/CC1Options.td
  vendor/clang/dist/include/clang/Driver/CMakeLists.txt
  vendor/clang/dist/include/clang/Driver/Driver.h
  vendor/clang/dist/include/clang/Driver/Options.td
  vendor/clang/dist/include/clang/Frontend/HeaderSearchOptions.h
  vendor/clang/dist/include/clang/Frontend/TextDiagnosticPrinter.h
  vendor/clang/dist/include/clang/Frontend/TypeXML.def
  vendor/clang/dist/include/clang/Lex/PPCallbacks.h
  vendor/clang/dist/include/clang/Lex/Preprocessor.h
  vendor/clang/dist/include/clang/Lex/PreprocessorLexer.h
  vendor/clang/dist/include/clang/Parse/Action.h
  vendor/clang/dist/lib/AST/ASTContext.cpp
  vendor/clang/dist/lib/AST/ASTImporter.cpp
  vendor/clang/dist/lib/AST/CMakeLists.txt
  vendor/clang/dist/lib/AST/CXXInheritance.cpp
  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/Expr.cpp
  vendor/clang/dist/lib/AST/Type.cpp
  vendor/clang/dist/lib/AST/TypePrinter.cpp
  vendor/clang/dist/lib/Analysis/AnalysisContext.cpp
  vendor/clang/dist/lib/Analysis/CFG.cpp
  vendor/clang/dist/lib/Analysis/PrintfFormatString.cpp
  vendor/clang/dist/lib/Basic/Diagnostic.cpp
  vendor/clang/dist/lib/Basic/SourceManager.cpp
  vendor/clang/dist/lib/Basic/Targets.cpp
  vendor/clang/dist/lib/Checker/AdjustedReturnValueChecker.cpp
  vendor/clang/dist/lib/Checker/ArrayBoundChecker.cpp
  vendor/clang/dist/lib/Checker/AttrNonNullChecker.cpp
  vendor/clang/dist/lib/Checker/BasicObjCFoundationChecks.cpp
  vendor/clang/dist/lib/Checker/BugReporter.cpp
  vendor/clang/dist/lib/Checker/BugReporterVisitors.cpp
  vendor/clang/dist/lib/Checker/CFRefCount.cpp
  vendor/clang/dist/lib/Checker/CMakeLists.txt
  vendor/clang/dist/lib/Checker/CallAndMessageChecker.cpp
  vendor/clang/dist/lib/Checker/CastToStructChecker.cpp
  vendor/clang/dist/lib/Checker/CheckSecuritySyntaxOnly.cpp
  vendor/clang/dist/lib/Checker/DereferenceChecker.cpp
  vendor/clang/dist/lib/Checker/DivZeroChecker.cpp
  vendor/clang/dist/lib/Checker/Environment.cpp
  vendor/clang/dist/lib/Checker/FixedAddressChecker.cpp
  vendor/clang/dist/lib/Checker/GRBlockCounter.cpp
  vendor/clang/dist/lib/Checker/GRCoreEngine.cpp
  vendor/clang/dist/lib/Checker/GRExprEngine.cpp
  vendor/clang/dist/lib/Checker/GRState.cpp
  vendor/clang/dist/lib/Checker/MacOSXAPIChecker.cpp
  vendor/clang/dist/lib/Checker/MallocChecker.cpp
  vendor/clang/dist/lib/Checker/MemRegion.cpp
  vendor/clang/dist/lib/Checker/NSErrorChecker.cpp
  vendor/clang/dist/lib/Checker/NoReturnFunctionChecker.cpp
  vendor/clang/dist/lib/Checker/PathDiagnostic.cpp
  vendor/clang/dist/lib/Checker/PointerArithChecker.cpp
  vendor/clang/dist/lib/Checker/PointerSubChecker.cpp
  vendor/clang/dist/lib/Checker/RegionStore.cpp
  vendor/clang/dist/lib/Checker/ReturnPointerRangeChecker.cpp
  vendor/clang/dist/lib/Checker/ReturnStackAddressChecker.cpp
  vendor/clang/dist/lib/Checker/ReturnUndefChecker.cpp
  vendor/clang/dist/lib/Checker/SymbolManager.cpp
  vendor/clang/dist/lib/Checker/UndefBranchChecker.cpp
  vendor/clang/dist/lib/Checker/UndefCapturedBlockVarChecker.cpp
  vendor/clang/dist/lib/Checker/UndefResultChecker.cpp
  vendor/clang/dist/lib/Checker/UndefinedArraySubscriptChecker.cpp
  vendor/clang/dist/lib/Checker/UndefinedAssignmentChecker.cpp
  vendor/clang/dist/lib/Checker/UnixAPIChecker.cpp
  vendor/clang/dist/lib/Checker/VLASizeChecker.cpp
  vendor/clang/dist/lib/CodeGen/CGBlocks.cpp
  vendor/clang/dist/lib/CodeGen/CGBlocks.h
  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/CGCall.h
  vendor/clang/dist/lib/CodeGen/CGClass.cpp
  vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp
  vendor/clang/dist/lib/CodeGen/CGDebugInfo.h
  vendor/clang/dist/lib/CodeGen/CGExpr.cpp
  vendor/clang/dist/lib/CodeGen/CGExprAgg.cpp
  vendor/clang/dist/lib/CodeGen/CGExprCXX.cpp
  vendor/clang/dist/lib/CodeGen/CGExprComplex.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/CGObjCGNU.cpp
  vendor/clang/dist/lib/CodeGen/CGObjCMac.cpp
  vendor/clang/dist/lib/CodeGen/CGObjCRuntime.h
  vendor/clang/dist/lib/CodeGen/CGRTTI.cpp
  vendor/clang/dist/lib/CodeGen/CGRecordLayoutBuilder.cpp
  vendor/clang/dist/lib/CodeGen/CGStmt.cpp
  vendor/clang/dist/lib/CodeGen/CGTemporaries.cpp
  vendor/clang/dist/lib/CodeGen/CGVTT.cpp
  vendor/clang/dist/lib/CodeGen/CGVtable.cpp
  vendor/clang/dist/lib/CodeGen/CGVtable.h
  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/CodeGenModule.h
  vendor/clang/dist/lib/CodeGen/CodeGenTypes.cpp
  vendor/clang/dist/lib/CodeGen/CodeGenTypes.h
  vendor/clang/dist/lib/CodeGen/Mangle.cpp
  vendor/clang/dist/lib/CodeGen/Mangle.h
  vendor/clang/dist/lib/Driver/CMakeLists.txt
  vendor/clang/dist/lib/Driver/Driver.cpp
  vendor/clang/dist/lib/Driver/HostInfo.cpp
  vendor/clang/dist/lib/Driver/Tools.cpp
  vendor/clang/dist/lib/Frontend/ASTUnit.cpp
  vendor/clang/dist/lib/Frontend/CompilerInstance.cpp
  vendor/clang/dist/lib/Frontend/CompilerInvocation.cpp
  vendor/clang/dist/lib/Frontend/DependencyFile.cpp
  vendor/clang/dist/lib/Frontend/FixItRewriter.cpp
  vendor/clang/dist/lib/Frontend/FrontendAction.cpp
  vendor/clang/dist/lib/Frontend/HTMLDiagnostics.cpp
  vendor/clang/dist/lib/Frontend/InitHeaderSearch.cpp
  vendor/clang/dist/lib/Frontend/PCHReader.cpp
  vendor/clang/dist/lib/Frontend/PCHWriter.cpp
  vendor/clang/dist/lib/Frontend/RewriteObjC.cpp
  vendor/clang/dist/lib/Frontend/TextDiagnosticPrinter.cpp
  vendor/clang/dist/lib/Headers/emmintrin.h
  vendor/clang/dist/lib/Headers/mm_malloc.h
  vendor/clang/dist/lib/Headers/mmintrin.h
  vendor/clang/dist/lib/Headers/pmmintrin.h
  vendor/clang/dist/lib/Headers/smmintrin.h
  vendor/clang/dist/lib/Headers/tmmintrin.h
  vendor/clang/dist/lib/Headers/xmmintrin.h
  vendor/clang/dist/lib/Lex/Lexer.cpp
  vendor/clang/dist/lib/Lex/PPDirectives.cpp
  vendor/clang/dist/lib/Lex/PPLexerChange.cpp
  vendor/clang/dist/lib/Lex/PPMacroExpansion.cpp
  vendor/clang/dist/lib/Lex/Preprocessor.cpp
  vendor/clang/dist/lib/Lex/TokenConcatenation.cpp
  vendor/clang/dist/lib/Parse/AttributeList.cpp
  vendor/clang/dist/lib/Parse/DeclSpec.cpp
  vendor/clang/dist/lib/Parse/ParseCXXInlineMethods.cpp
  vendor/clang/dist/lib/Parse/ParseDecl.cpp
  vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp
  vendor/clang/dist/lib/Parse/ParseExprCXX.cpp
  vendor/clang/dist/lib/Parse/ParseInit.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/AnalysisBasedWarnings.cpp
  vendor/clang/dist/lib/Sema/AnalysisBasedWarnings.h
  vendor/clang/dist/lib/Sema/Lookup.h
  vendor/clang/dist/lib/Sema/Sema.cpp
  vendor/clang/dist/lib/Sema/Sema.h
  vendor/clang/dist/lib/Sema/SemaAccess.cpp
  vendor/clang/dist/lib/Sema/SemaCXXCast.cpp
  vendor/clang/dist/lib/Sema/SemaCXXScopeSpec.cpp
  vendor/clang/dist/lib/Sema/SemaChecking.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/SemaExceptionSpec.cpp
  vendor/clang/dist/lib/Sema/SemaExpr.cpp
  vendor/clang/dist/lib/Sema/SemaExprCXX.cpp
  vendor/clang/dist/lib/Sema/SemaExprObjC.cpp
  vendor/clang/dist/lib/Sema/SemaInit.cpp
  vendor/clang/dist/lib/Sema/SemaInit.h
  vendor/clang/dist/lib/Sema/SemaLookup.cpp
  vendor/clang/dist/lib/Sema/SemaObjCProperty.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/SemaTemplate.h
  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/PR3991.m
  vendor/clang/dist/test/Analysis/inline.c
  vendor/clang/dist/test/Analysis/misc-ps-region-store.m
  vendor/clang/dist/test/Analysis/no-outofbounds.c
  vendor/clang/dist/test/Analysis/null-deref-ps.c
  vendor/clang/dist/test/Analysis/outofbound.c
  vendor/clang/dist/test/Analysis/plist-output.m
  vendor/clang/dist/test/Analysis/pr4209.m
  vendor/clang/dist/test/Analysis/retain-release-region-store.m
  vendor/clang/dist/test/Analysis/retain-release.m
  vendor/clang/dist/test/Analysis/uninit-vals-ps-region.m
  vendor/clang/dist/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp
  vendor/clang/dist/test/CXX/basic/basic.stc/basic.stc.dynamic/p2.cpp
  vendor/clang/dist/test/CXX/class.access/class.friend/p1.cpp
  vendor/clang/dist/test/CXX/class.access/p4.cpp
  vendor/clang/dist/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p1.cpp
  vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp
  vendor/clang/dist/test/CXX/temp/temp.arg/temp.arg.nontype/p1.cpp
  vendor/clang/dist/test/CXX/temp/temp.arg/temp.arg.nontype/p5.cpp
  vendor/clang/dist/test/CXX/temp/temp.decls/temp.friend/p1.cpp
  vendor/clang/dist/test/CXX/temp/temp.res/temp.local/p1.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.expl.spec/p20.cpp
  vendor/clang/dist/test/CodeGen/atomic.c
  vendor/clang/dist/test/CodeGen/mangle.c
  vendor/clang/dist/test/CodeGen/palignr.c
  vendor/clang/dist/test/CodeGen/regparm.c
  vendor/clang/dist/test/CodeGenCXX/constructor-init.cpp
  vendor/clang/dist/test/CodeGenCXX/copy-constructor-synthesis.cpp
  vendor/clang/dist/test/CodeGenCXX/member-expressions.cpp
  vendor/clang/dist/test/CodeGenCXX/references.cpp
  vendor/clang/dist/test/CodeGenCXX/rtti-linkage.cpp
  vendor/clang/dist/test/CodeGenCXX/temporaries.cpp
  vendor/clang/dist/test/CodeGenCXX/virt.cpp
  vendor/clang/dist/test/CodeGenCXX/virtual-bases.cpp
  vendor/clang/dist/test/CodeGenCXX/vtable-layout-abi-examples.cpp
  vendor/clang/dist/test/CodeGenCXX/vtable-layout.cpp
  vendor/clang/dist/test/CodeGenCXX/vtable-linkage.cpp
  vendor/clang/dist/test/FixIt/fixit.cpp
  vendor/clang/dist/test/Index/Inputs/remap-complete-to.c
  vendor/clang/dist/test/Index/cindex-on-invalid.m
  vendor/clang/dist/test/Index/recover-bad-code-rdar_7487294.c
  vendor/clang/dist/test/Index/remap-complete.c
  vendor/clang/dist/test/PCH/changed-files.c
  vendor/clang/dist/test/Parser/objc-messaging-neg-1.m
  vendor/clang/dist/test/Parser/statements.c
  vendor/clang/dist/test/Preprocessor/dependencies-and-pp.c
  vendor/clang/dist/test/Preprocessor/macro_disable.c
  vendor/clang/dist/test/Preprocessor/output_paste_avoid.c
  vendor/clang/dist/test/Sema/attr-unused.c
  vendor/clang/dist/test/Sema/format-strings.c
  vendor/clang/dist/test/Sema/init.c
  vendor/clang/dist/test/Sema/nested-redef.c
  vendor/clang/dist/test/Sema/return.c
  vendor/clang/dist/test/Sema/struct-packed-align.c
  vendor/clang/dist/test/Sema/warn-shadow.c
  vendor/clang/dist/test/SemaCXX/class-base-member-init.cpp
  vendor/clang/dist/test/SemaCXX/class-layout.cpp
  vendor/clang/dist/test/SemaCXX/conditional-expr.cpp
  vendor/clang/dist/test/SemaCXX/destructor.cpp
  vendor/clang/dist/test/SemaCXX/exception-spec.cpp
  vendor/clang/dist/test/SemaCXX/invalid-member-expr.cpp
  vendor/clang/dist/test/SemaCXX/namespace-alias.cpp
  vendor/clang/dist/test/SemaCXX/namespace.cpp
  vendor/clang/dist/test/SemaCXX/nested-name-spec.cpp
  vendor/clang/dist/test/SemaCXX/qual-id-test.cpp
  vendor/clang/dist/test/SemaCXX/static-cast.cpp
  vendor/clang/dist/test/SemaCXX/warn-reorder-ctor-initialization.cpp
  vendor/clang/dist/test/SemaObjC/block-type-safety.m
  vendor/clang/dist/test/SemaObjC/category-1.m
  vendor/clang/dist/test/SemaObjC/compare-qualified-id.m
  vendor/clang/dist/test/SemaObjC/comptypes-7.m
  vendor/clang/dist/test/SemaObjC/conditional-expr.m
  vendor/clang/dist/test/SemaObjC/gcc-cast-ext.m
  vendor/clang/dist/test/SemaObjC/ivar-in-implementations.m
  vendor/clang/dist/test/SemaObjC/ivar-sem-check-1.m
  vendor/clang/dist/test/SemaObjC/method-arg-decay.m
  vendor/clang/dist/test/SemaObjC/method-undef-category-warn-1.m
  vendor/clang/dist/test/SemaObjC/method-undef-extension-warn-1.m
  vendor/clang/dist/test/SemaObjC/method-undefined-warn-1.m
  vendor/clang/dist/test/SemaObjC/method-warn-unused-attribute.m
  vendor/clang/dist/test/SemaObjC/nsobject-attribute.m
  vendor/clang/dist/test/SemaObjC/property-expression-error.m
  vendor/clang/dist/test/SemaObjC/property-ivar-mismatch.m
  vendor/clang/dist/test/SemaObjC/property.m
  vendor/clang/dist/test/SemaObjC/undef-protocol-methods-1.m
  vendor/clang/dist/test/SemaTemplate/dependent-base-classes.cpp
  vendor/clang/dist/test/SemaTemplate/friend-template.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-declref.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-expr-4.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-init.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-member-class.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-member-initializers.cpp
  vendor/clang/dist/test/SemaTemplate/instantiation-default-2.cpp
  vendor/clang/dist/test/SemaTemplate/temp_arg_nontype.cpp
  vendor/clang/dist/tools/CIndex/CIndex.cpp
  vendor/clang/dist/tools/CIndex/CIndexDiagnostic.cpp
  vendor/clang/dist/tools/CIndex/CIndexUSRs.cpp
  vendor/clang/dist/tools/CIndex/CMakeLists.txt
  vendor/clang/dist/tools/c-index-test/c-index-test.c
  vendor/clang/dist/tools/driver/Makefile
  vendor/clang/dist/tools/driver/cc1_main.cpp
  vendor/clang/dist/tools/driver/driver.cpp
  vendor/clang/dist/tools/scan-build/scan-build
  vendor/clang/dist/utils/VtableTest/Makefile
  vendor/clang/dist/utils/VtableTest/check-ztt
  vendor/clang/dist/www/analyzer/latest_checker.html.incl
  vendor/clang/dist/www/get_started.html

Modified: vendor/clang/dist/CMakeLists.txt
==============================================================================
--- vendor/clang/dist/CMakeLists.txt	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/CMakeLists.txt	Fri Apr  2 08:55:10 2010	(r206084)
@@ -92,6 +92,12 @@ install(DIRECTORY include/
   PATTERN ".svn" EXCLUDE
   )
 
+install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/
+  DESTINATION include
+  FILES_MATCHING
+  PATTERN "*.inc"
+  )
+
 add_definitions( -D_GNU_SOURCE )
 
 option(CLANG_BUILD_EXAMPLES "Build CLANG example programs." OFF)

Modified: vendor/clang/dist/clang.xcodeproj/project.pbxproj
==============================================================================
--- vendor/clang/dist/clang.xcodeproj/project.pbxproj	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/clang.xcodeproj/project.pbxproj	Fri Apr  2 08:55:10 2010	(r206084)
@@ -12,7 +12,6 @@
 		1A2193CE0F45EEB700C0713D /* Mangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2193CC0F45EEB700C0713D /* Mangle.cpp */; };
 		1A2A54B50FD1DD1C00F4CE45 /* AnalysisConsumer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2A54A40FD1DD1C00F4CE45 /* AnalysisConsumer.cpp */; };
 		1A2A54B60FD1DD1C00F4CE45 /* ASTConsumers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2A54A50FD1DD1C00F4CE45 /* ASTConsumers.cpp */; };
-		1A2A54B70FD1DD1C00F4CE45 /* Backend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2A54A60FD1DD1C00F4CE45 /* Backend.cpp */; };
 		1A2A54B80FD1DD1C00F4CE45 /* CacheTokens.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2A54A70FD1DD1C00F4CE45 /* CacheTokens.cpp */; };
 		1A2A54B90FD1DD1C00F4CE45 /* DependencyFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2A54A80FD1DD1C00F4CE45 /* DependencyFile.cpp */; };
 		1A2A54BA0FD1DD1C00F4CE45 /* DiagChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2A54A90FD1DD1C00F4CE45 /* DiagChecker.cpp */; };
@@ -70,6 +69,8 @@
 		1ADF47AF0F782C3200E48A8A /* SemaTemplateInstantiateDecl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ADF47AE0F782C3200E48A8A /* SemaTemplateInstantiateDecl.cpp */; };
 		1AE4EE3E103B89ED00888A23 /* StmtProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE4EE3D103B89ED00888A23 /* StmtProfile.cpp */; };
 		1AF1B50F109A4FB800AFAFAC /* CGException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AF1B50E109A4FB800AFAFAC /* CGException.cpp */; };
+		1AFDD8721161085D00AE030A /* ASTMerge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AFDD8701161085D00AE030A /* ASTMerge.cpp */; };
+		1AFDD8731161085D00AE030A /* CodeGenAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AFDD8711161085D00AE030A /* CodeGenAction.cpp */; };
 		1AFF8AE31012BFC900D248DA /* CGRecordLayoutBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AFF8AE11012BFC900D248DA /* CGRecordLayoutBuilder.cpp */; };
 		3507E4C20E27FE2D00FB7B57 /* CheckObjCInstMethSignature.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3507E4C10E27FE2D00FB7B57 /* CheckObjCInstMethSignature.cpp */; };
 		352246E70F5C6BE000D0D279 /* HTMLDiagnostics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 352246E10F5C6BE000D0D279 /* HTMLDiagnostics.cpp */; };
@@ -149,6 +150,11 @@
 		90FD6D85103C3D49005F5B73 /* SelectorMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90FD6D7A103C3D49005F5B73 /* SelectorMap.cpp */; };
 		90FD6DB6103D977E005F5B73 /* index-test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90FD6DB5103D977E005F5B73 /* index-test.cpp */; };
 		BDF87CF70FD746F300BBF872 /* SemaTemplateDeduction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BDF87CF60FD746F300BBF872 /* SemaTemplateDeduction.cpp */; };
+		BF89C3E211595818001C2D68 /* AnalysisBasedWarnings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BF89C3E111595818001C2D68 /* AnalysisBasedWarnings.cpp */; };
+		BF89C3E91159594A001C2D68 /* SemaObjCProperty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BF89C3E81159594A001C2D68 /* SemaObjCProperty.cpp */; };
+		BF89C3F911595A01001C2D68 /* SemaType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BF89C3F811595A01001C2D68 /* SemaType.cpp */; };
+		BF89C3FB11595A37001C2D68 /* SemaCodeComplete.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BF89C3FA11595A37001C2D68 /* SemaCodeComplete.cpp */; };
+		BF89C3FD11595A5D001C2D68 /* SemaExceptionSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BF89C3FC11595A5D001C2D68 /* SemaExceptionSpec.cpp */; };
 		DE01DA490B12ADA300AC22CE /* PPCallbacks.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DE01DA480B12ADA300AC22CE /* PPCallbacks.h */; };
 		DE06756C0C051CFE00EBBFD8 /* ParseExprCXX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE06756B0C051CFE00EBBFD8 /* ParseExprCXX.cpp */; };
 		DE06B73E0A8307640050E87E /* LangOptions.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DE06B73D0A8307640050E87E /* LangOptions.h */; };
@@ -365,7 +371,6 @@
 		1A2193CD0F45EEB700C0713D /* Mangle.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.h; name = Mangle.h; path = lib/CodeGen/Mangle.h; sourceTree = "<group>"; tabWidth = 2; };
 		1A2A54A40FD1DD1C00F4CE45 /* AnalysisConsumer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnalysisConsumer.cpp; path = lib/Frontend/AnalysisConsumer.cpp; sourceTree = "<group>"; };
 		1A2A54A50FD1DD1C00F4CE45 /* ASTConsumers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = ASTConsumers.cpp; path = lib/Frontend/ASTConsumers.cpp; sourceTree = "<group>"; tabWidth = 2; };
-		1A2A54A60FD1DD1C00F4CE45 /* Backend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Backend.cpp; path = lib/Frontend/Backend.cpp; sourceTree = "<group>"; };
 		1A2A54A70FD1DD1C00F4CE45 /* CacheTokens.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CacheTokens.cpp; path = lib/Frontend/CacheTokens.cpp; sourceTree = "<group>"; };
 		1A2A54A80FD1DD1C00F4CE45 /* DependencyFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DependencyFile.cpp; path = lib/Frontend/DependencyFile.cpp; sourceTree = "<group>"; };
 		1A2A54A90FD1DD1C00F4CE45 /* DiagChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiagChecker.cpp; path = lib/Frontend/DiagChecker.cpp; sourceTree = "<group>"; };
@@ -446,8 +451,9 @@
 		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; };
 		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; };
+		1AFDD8701161085D00AE030A /* ASTMerge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ASTMerge.cpp; path = lib/Frontend/ASTMerge.cpp; sourceTree = "<group>"; };
+		1AFDD8711161085D00AE030A /* CodeGenAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CodeGenAction.cpp; path = lib/Frontend/CodeGenAction.cpp; sourceTree = "<group>"; };
 		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; };
 		3507E4C10E27FE2D00FB7B57 /* CheckObjCInstMethSignature.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CheckObjCInstMethSignature.cpp; path = lib/Analysis/CheckObjCInstMethSignature.cpp; sourceTree = "<group>"; };
 		352246E10F5C6BE000D0D279 /* HTMLDiagnostics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLDiagnostics.cpp; path = lib/Frontend/HTMLDiagnostics.cpp; sourceTree = "<group>"; };
 		352246E20F5C6BE000D0D279 /* InitHeaderSearch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitHeaderSearch.cpp; path = lib/Frontend/InitHeaderSearch.cpp; sourceTree = "<group>"; };
@@ -618,6 +624,15 @@
 		90FD6D91103C3D80005F5B73 /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = clang/Frontend/Utils.h; sourceTree = "<group>"; };
 		90FD6DB5103D977E005F5B73 /* index-test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "index-test.cpp"; path = "tools/index-test/index-test.cpp"; sourceTree = "<group>"; };
 		BDF87CF60FD746F300BBF872 /* SemaTemplateDeduction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = SemaTemplateDeduction.cpp; path = lib/Sema/SemaTemplateDeduction.cpp; sourceTree = "<group>"; tabWidth = 2; };
+		BF89C3E0115957FF001C2D68 /* AnalysisBasedWarnings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnalysisBasedWarnings.h; path = lib/Sema/AnalysisBasedWarnings.h; sourceTree = "<group>"; };
+		BF89C3E111595818001C2D68 /* AnalysisBasedWarnings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnalysisBasedWarnings.cpp; path = lib/Sema/AnalysisBasedWarnings.cpp; sourceTree = "<group>"; };
+		BF89C3E311595835001C2D68 /* Lookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Lookup.h; path = lib/Sema/Lookup.h; sourceTree = "<group>"; };
+		BF89C3E411595855001C2D68 /* SemaInit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SemaInit.h; path = lib/Sema/SemaInit.h; sourceTree = "<group>"; };
+		BF89C3E5115958A1001C2D68 /* TargetAttributesSema.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TargetAttributesSema.h; path = lib/Sema/TargetAttributesSema.h; sourceTree = "<group>"; };
+		BF89C3E81159594A001C2D68 /* SemaObjCProperty.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SemaObjCProperty.cpp; path = lib/Sema/SemaObjCProperty.cpp; sourceTree = "<group>"; };
+		BF89C3F811595A01001C2D68 /* SemaType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SemaType.cpp; path = lib/Sema/SemaType.cpp; sourceTree = "<group>"; };
+		BF89C3FA11595A37001C2D68 /* SemaCodeComplete.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SemaCodeComplete.cpp; path = lib/Sema/SemaCodeComplete.cpp; sourceTree = "<group>"; };
+		BF89C3FC11595A5D001C2D68 /* SemaExceptionSpec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SemaExceptionSpec.cpp; path = lib/Sema/SemaExceptionSpec.cpp; sourceTree = "<group>"; };
 		DE01DA480B12ADA300AC22CE /* PPCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PPCallbacks.h; sourceTree = "<group>"; };
 		DE06756B0C051CFE00EBBFD8 /* ParseExprCXX.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = ParseExprCXX.cpp; path = lib/Parse/ParseExprCXX.cpp; sourceTree = "<group>"; tabWidth = 2; };
 		DE06B73D0A8307640050E87E /* LangOptions.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 2; lastKnownFileType = sourcecode.c.h; path = LangOptions.h; sourceTree = "<group>"; tabWidth = 2; };
@@ -948,10 +963,11 @@
 		352246E00F5C6BC000D0D279 /* Frontend */ = {
 			isa = PBXGroup;
 			children = (
+				1AFDD8701161085D00AE030A /* ASTMerge.cpp */,
 				9012911C1048068D0083456D /* ASTUnit.cpp */,
 				1A2A54A40FD1DD1C00F4CE45 /* AnalysisConsumer.cpp */,
 				1A2A54A50FD1DD1C00F4CE45 /* ASTConsumers.cpp */,
-				1A2A54A60FD1DD1C00F4CE45 /* Backend.cpp */,
+				1AFDD8711161085D00AE030A /* CodeGenAction.cpp */,
 				1A2A54A70FD1DD1C00F4CE45 /* CacheTokens.cpp */,
 				1ACB57DB1105820D0047B991 /* CompilerInstance.cpp */,
 				1ACB57DC1105820D0047B991 /* CompilerInvocation.cpp */,
@@ -1257,29 +1273,36 @@
 		DE67E7070C020EAB00F66BC5 /* Sema */ = {
 			isa = PBXGroup;
 			children = (
+				BF89C3E111595818001C2D68 /* AnalysisBasedWarnings.cpp */,
+				BF89C3E0115957FF001C2D68 /* AnalysisBasedWarnings.h */,
 				35585DBD0EAFBC4500D0A97A /* CXXFieldCollector.h */,
 				1A6B6CD110693FC900BB4A8F /* CodeCompleteConsumer.cpp */,
 				3527124F0DAFE54700C76352 /* IdentifierResolver.h */,
 				352712500DAFE54700C76352 /* IdentifierResolver.cpp */,
 				DECB6D640F9AE26600F5FBC7 /* JumpDiagnostics.cpp */,
+				BF89C3E311595835001C2D68 /* Lookup.h */,
 				DE67E7190C020F4F00F66BC5 /* ParseAST.cpp */,
 				DE67E7140C020EDF00F66BC5 /* Sema.h */,
 				DE67E7160C020EE400F66BC5 /* Sema.cpp */,
 				1A701B630F7C8FE400FEC4D1 /* SemaAccess.cpp */,
 				DEB07AC70F4A427E00F5A2BE /* SemaAttr.cpp */,
 				DEF2F00F0C6CFED5000C4259 /* SemaChecking.cpp */,
+				BF89C3FA11595A37001C2D68 /* SemaCodeComplete.cpp */,
 				35E194670ECB82FB00F21733 /* SemaCXXScopeSpec.cpp */,
 				DE67E7120C020ED900F66BC5 /* SemaDecl.cpp */,
 				DE22BCF10E14197E0094DC60 /* SemaDeclAttr.cpp */,
 				35EF676F0DAD1D2C00B19414 /* SemaDeclCXX.cpp */,
 				DE704B250D0FBEBE009C7762 /* SemaDeclObjC.cpp */,
+				BF89C3FC11595A5D001C2D68 /* SemaExceptionSpec.cpp */,
 				DE67E7100C020ED400F66BC5 /* SemaExpr.cpp */,
 				DE47999B0D2EBE1A00706D2D /* SemaExprObjC.cpp */,
 				DE67E70E0C020ECF00F66BC5 /* SemaExprCXX.cpp */,
+				BF89C3E411595855001C2D68 /* SemaInit.h */,
 				3599299A0DE2425300A8A33E /* SemaInit.cpp */,
 				357EA27C0F2526F300439B60 /* SemaLookup.cpp */,
 				1A6B6CD210693FC900BB4A8F /* SemaCodeComplete.cpp */,
 				35E194680ECB82FB00F21733 /* SemaCXXCast.cpp */,
+				BF89C3E81159594A001C2D68 /* SemaObjCProperty.cpp */,
 				35585DBE0EAFBC4500D0A97A /* SemaOverload.cpp */,
 				35585DBF0EAFBC4500D0A97A /* SemaOverload.h */,
 				DE67E70C0C020ECA00F66BC5 /* SemaStmt.cpp */,
@@ -1288,7 +1311,9 @@
 				BDF87CF60FD746F300BBF872 /* SemaTemplateDeduction.cpp */,
 				35544B8B0F5C803200D92AA9 /* SemaTemplateInstantiate.cpp */,
 				1ADF47AE0F782C3200E48A8A /* SemaTemplateInstantiateDecl.cpp */,
+				BF89C3F811595A01001C2D68 /* SemaType.cpp */,
 				1AE4EE3B103B89CA00888A23 /* TreeTransform.h */,
+				BF89C3E5115958A1001C2D68 /* TargetAttributesSema.h */,
 			);
 			name = Sema;
 			sourceTree = "<group>";
@@ -1334,7 +1359,6 @@
 				DE38CD4F0D794D0100A273B6 /* CGObjCGNU.cpp */,
 				3552E7580E520DD7003A8CA5 /* CGObjCMac.cpp */,
 				1AFF8AE11012BFC900D248DA /* CGRecordLayoutBuilder.cpp */,
-				1AFF8AE21012BFC900D248DA /* CGRecordLayoutBuilder.h */,
 				1A6C01F6108128710072DEE4 /* CGRTTI.cpp */,
 				DE4772F90C10EAE5002239E8 /* CGStmt.cpp */,
 				1A6FE7080FD6F85800E00CA9 /* CGTemporaries.cpp */,
@@ -1930,7 +1954,6 @@
 				DECB78170FA5882F00F5FBC7 /* PCHWriterStmt.cpp in Sources */,
 				1A2A54B50FD1DD1C00F4CE45 /* AnalysisConsumer.cpp in Sources */,
 				1A2A54B60FD1DD1C00F4CE45 /* ASTConsumers.cpp in Sources */,
-				1A2A54B70FD1DD1C00F4CE45 /* Backend.cpp in Sources */,
 				1A2A54B80FD1DD1C00F4CE45 /* CacheTokens.cpp in Sources */,
 				1A2A54B90FD1DD1C00F4CE45 /* DependencyFile.cpp in Sources */,
 				1A2A54BA0FD1DD1C00F4CE45 /* DiagChecker.cpp in Sources */,
@@ -1997,6 +2020,13 @@
 				1A621C4511111D61009E6834 /* CIndexUSRs.cpp in Sources */,
 				1A621C4611111D61009E6834 /* CXCursor.cpp in Sources */,
 				1A96785211486FDC00F24372 /* RecordLayout.cpp in Sources */,
+				BF89C3E211595818001C2D68 /* AnalysisBasedWarnings.cpp in Sources */,
+				BF89C3E91159594A001C2D68 /* SemaObjCProperty.cpp in Sources */,
+				BF89C3F911595A01001C2D68 /* SemaType.cpp in Sources */,
+				BF89C3FB11595A37001C2D68 /* SemaCodeComplete.cpp in Sources */,
+				BF89C3FD11595A5D001C2D68 /* SemaExceptionSpec.cpp in Sources */,
+				1AFDD8721161085D00AE030A /* ASTMerge.cpp in Sources */,
+				1AFDD8731161085D00AE030A /* CodeGenAction.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: vendor/clang/dist/examples/clang-interpreter/main.cpp
==============================================================================
--- vendor/clang/dist/examples/clang-interpreter/main.cpp	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/examples/clang-interpreter/main.cpp	Fri Apr  2 08:55:10 2010	(r206084)
@@ -71,7 +71,8 @@ int main(int argc, const char **argv, ch
   Diagnostic Diags(&DiagClient);
   Driver TheDriver(Path.getBasename(), Path.getDirname(),
                    llvm::sys::getHostTriple(),
-                   "a.out", /*IsProduction=*/false, Diags);
+                   "a.out", /*IsProduction=*/false, /*CXXIsProduction=*/false,
+                   Diags);
   TheDriver.setTitle("clang interpreter");
 
   // FIXME: This is a hack to try to force the driver to do something we can

Modified: vendor/clang/dist/include/clang/AST/ASTContext.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/ASTContext.h	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/include/clang/AST/ASTContext.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -17,6 +17,7 @@
 #include "clang/Basic/IdentifierTable.h"
 #include "clang/Basic/LangOptions.h"
 #include "clang/Basic/OperatorKinds.h"
+#include "clang/Basic/PartialDiagnostic.h"
 #include "clang/AST/Attr.h"
 #include "clang/AST/Decl.h"
 #include "clang/AST/NestedNameSpecifier.h"
@@ -57,6 +58,7 @@ namespace clang {
   class ObjCIvarRefExpr;
   class ObjCPropertyDecl;
   class RecordDecl;
+  class StoredDeclsMap;
   class TagDecl;
   class TemplateTypeParmDecl;
   class TranslationUnitDecl;
@@ -115,7 +117,7 @@ class ASTContext {
   llvm::FoldingSet<SubstTemplateTypeParmType> SubstTemplateTypeParmTypes;
   llvm::FoldingSet<TemplateSpecializationType> TemplateSpecializationTypes;
   llvm::FoldingSet<QualifiedNameType> QualifiedNameTypes;
-  llvm::FoldingSet<TypenameType> TypenameTypes;
+  llvm::FoldingSet<DependentNameType> DependentNameTypes;
   llvm::FoldingSet<ObjCInterfaceType> ObjCInterfaceTypes;
   llvm::FoldingSet<ObjCObjectPointerType> ObjCObjectPointerTypes;
   llvm::FoldingSet<ElaboratedType> ElaboratedTypes;
@@ -264,6 +266,9 @@ class ASTContext {
   llvm::MallocAllocator MallocAlloc;
   llvm::BumpPtrAllocator BumpAlloc;
 
+  /// \brief Allocator for partial diagnostics.
+  PartialDiagnostic::StorageAllocator DiagAllocator;
+  
 public:
   const TargetInfo &Target;
   IdentifierTable &Idents;
@@ -289,6 +294,11 @@ public:
     if (FreeMemory)
       MallocAlloc.Deallocate(Ptr);
   }
+  
+  PartialDiagnostic::StorageAllocator &getDiagAllocator() {
+    return DiagAllocator;
+  }
+
   const LangOptions& getLangOptions() const { return LangOpts; }
 
   FullSourceLoc getFullLoc(SourceLocation Loc) const {
@@ -437,6 +447,11 @@ public:
   /// allowable type.
   QualType getCallConvType(QualType T, CallingConv CallConv);
 
+  /// getRegParmType - Sets the specified regparm attribute to
+  /// the given type, which must be a FunctionType or a pointer to an
+  /// allowable type.
+  QualType getRegParmType(QualType T, unsigned RegParm);
+
   /// getComplexType - Return the uniqued reference to the type for a complex
   /// number with the specified element type.
   QualType getComplexType(QualType T);
@@ -554,8 +569,12 @@ public:
 
   /// getFunctionNoProtoType - Return a K&R style C function type like 'int()'.
   ///
-  QualType getFunctionNoProtoType(QualType ResultTy, bool NoReturn = false,
-                                  CallingConv CallConv = CC_Default);
+  QualType getFunctionNoProtoType(QualType ResultTy,
+                                  const FunctionType::ExtInfo &Info);
+
+  QualType getFunctionNoProtoType(QualType ResultTy) {
+    return getFunctionNoProtoType(ResultTy, FunctionType::ExtInfo());
+  }
 
   /// getFunctionType - Return a normal function type with a typed argument
   /// list.  isVariadic indicates whether the argument list includes '...'.
@@ -564,8 +583,7 @@ public:
                            unsigned TypeQuals, bool hasExceptionSpec,
                            bool hasAnyExceptionSpec,
                            unsigned NumExs, const QualType *ExArray,
-                           bool NoReturn,
-                           CallingConv CallConv);
+                           const FunctionType::ExtInfo &Info);
 
   /// getTypeDeclType - Return the unique reference to the type for
   /// the specified type declaration.
@@ -612,12 +630,14 @@ public:
 
   QualType getQualifiedNameType(NestedNameSpecifier *NNS,
                                 QualType NamedType);
-  QualType getTypenameType(NestedNameSpecifier *NNS,
-                           const IdentifierInfo *Name,
-                           QualType Canon = QualType());
-  QualType getTypenameType(NestedNameSpecifier *NNS,
-                           const TemplateSpecializationType *TemplateId,
-                           QualType Canon = QualType());
+  QualType getDependentNameType(ElaboratedTypeKeyword Keyword,
+                                NestedNameSpecifier *NNS,
+                                const IdentifierInfo *Name,
+                                QualType Canon = QualType());
+  QualType getDependentNameType(ElaboratedTypeKeyword Keyword,
+                                NestedNameSpecifier *NNS,
+                                const TemplateSpecializationType *TemplateId,
+                                QualType Canon = QualType());
   QualType getElaboratedType(QualType UnderlyingType,
                              ElaboratedType::TagKind Tag);
 
@@ -937,8 +957,7 @@ public:
                                llvm::SmallVectorImpl<ObjCIvarDecl*> &Ivars);
   void CollectNonClassIvars(const ObjCInterfaceDecl *OI,
                                llvm::SmallVectorImpl<ObjCIvarDecl*> &Ivars);
-  unsigned CountSynthesizedIvars(const ObjCInterfaceDecl *OI);
-  unsigned CountProtocolSynthesizedIvars(const ObjCProtocolDecl *PD);
+  unsigned CountNonClassIvars(const ObjCInterfaceDecl *OI);
   void CollectInheritedProtocols(const Decl *CDecl,
                           llvm::SmallPtrSet<ObjCProtocolDecl*, 8> &Protocols);
 
@@ -1273,9 +1292,8 @@ private:
   // FIXME: This currently contains the set of StoredDeclMaps used
   // by DeclContext objects.  This probably should not be in ASTContext,
   // but we include it here so that ASTContext can quickly deallocate them.
-  std::vector<void*> SDMs; 
+  llvm::PointerIntPair<StoredDeclsMap*,1> LastSDM;
   friend class DeclContext;
-  void *CreateStoredDeclsMap();
   void ReleaseDeclContextMaps();
 };
   

Modified: vendor/clang/dist/include/clang/AST/CXXInheritance.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/CXXInheritance.h	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/include/clang/AST/CXXInheritance.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -19,6 +19,7 @@
 #include "clang/AST/DeclCXX.h"
 #include "clang/AST/Type.h"
 #include "clang/AST/TypeOrdering.h"
+#include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/SmallVector.h"
 #include <list>
 #include <map>
@@ -227,6 +228,137 @@ public:
   /// object.
   void swap(CXXBasePaths &Other);
 };
+
+/// \brief Uniquely identifies a virtual method within a class
+/// hierarchy by the method itself and a class subobject number.
+struct UniqueVirtualMethod {
+  UniqueVirtualMethod() : Method(0), Subobject(0), InVirtualSubobject(0) { }
+
+  UniqueVirtualMethod(CXXMethodDecl *Method, unsigned Subobject,
+                      const CXXRecordDecl *InVirtualSubobject)
+    : Method(Method), Subobject(Subobject), 
+      InVirtualSubobject(InVirtualSubobject) { }
+
+  /// \brief The overriding virtual method.
+  CXXMethodDecl *Method;
+
+  /// \brief The subobject in which the overriding virtual method
+  /// resides.
+  unsigned Subobject;
+
+  /// \brief The virtual base class subobject of which this overridden
+  /// virtual method is a part. Note that this records the closest
+  /// derived virtual base class subobject.
+  const CXXRecordDecl *InVirtualSubobject;
+
+  friend bool operator==(const UniqueVirtualMethod &X,
+                         const UniqueVirtualMethod &Y) {
+    return X.Method == Y.Method && X.Subobject == Y.Subobject &&
+      X.InVirtualSubobject == Y.InVirtualSubobject;
+  }
+
+  friend bool operator!=(const UniqueVirtualMethod &X,
+                         const UniqueVirtualMethod &Y) {
+    return !(X == Y);
+  }
+};
+
+/// \brief The set of methods that override a given virtual method in
+/// each subobject where it occurs.
+///
+/// The first part of the pair is the subobject in which the
+/// overridden virtual function occurs, while the second part of the
+/// pair is the virtual method that overrides it (including the
+/// subobject in which that virtual function occurs).
+class OverridingMethods {
+  llvm::DenseMap<unsigned, llvm::SmallVector<UniqueVirtualMethod, 4> > 
+    Overrides;
+
+public:
+  // Iterate over the set of subobjects that have overriding methods.
+  typedef llvm::DenseMap<unsigned, llvm::SmallVector<UniqueVirtualMethod, 4> >
+            ::iterator iterator;
+  typedef llvm::DenseMap<unsigned, llvm::SmallVector<UniqueVirtualMethod, 4> >
+            ::const_iterator const_iterator;
+  iterator begin() { return Overrides.begin(); }
+  const_iterator begin() const { return Overrides.begin(); }
+  iterator end() { return Overrides.end(); }
+  const_iterator end() const { return Overrides.end(); }
+  unsigned size() const { return Overrides.size(); }
+
+  // Iterate over the set of overriding virtual methods in a given
+  // subobject.
+  typedef llvm::SmallVector<UniqueVirtualMethod, 4>::iterator 
+    overriding_iterator;
+  typedef llvm::SmallVector<UniqueVirtualMethod, 4>::const_iterator
+    overriding_const_iterator;
+
+  // Add a new overriding method for a particular subobject.
+  void add(unsigned OverriddenSubobject, UniqueVirtualMethod Overriding);
+
+  // Add all of the overriding methods from "other" into overrides for
+  // this method. Used when merging the overrides from multiple base
+  // class subobjects.
+  void add(const OverridingMethods &Other);
+
+  // Replace all overriding virtual methods in all subobjects with the
+  // given virtual method.
+  void replaceAll(UniqueVirtualMethod Overriding);
+};
+
+/// \brief A mapping from each virtual member function to its set of
+/// final overriders.
+///
+/// Within a class hierarchy for a given derived class, each virtual
+/// member function in that hierarchy has one or more "final
+/// overriders" (C++ [class.virtual]p2). A final overrider for a
+/// virtual function "f" is the virtual function that will actually be
+/// invoked when dispatching a call to "f" through the
+/// vtable. Well-formed classes have a single final overrider for each
+/// virtual function; in abstract classes, the final overrider for at
+/// least one virtual function is a pure virtual function. Due to
+/// multiple, virtual inheritance, it is possible for a class to have
+/// more than one final overrider. Athough this is an error (per C++
+/// [class.virtual]p2), it is not considered an error here: the final
+/// overrider map can represent multiple final overriders for a
+/// method, and it is up to the client to determine whether they are
+/// problem. For example, the following class \c D has two final
+/// overriders for the virtual function \c A::f(), one in \c C and one
+/// in \c D:
+///
+/// \code
+///   struct A { virtual void f(); };
+///   struct B : virtual A { virtual void f(); };
+///   struct C : virtual A { virtual void f(); };
+///   struct D : B, C { };
+/// \endcode
+///
+/// This data structure contaings a mapping from every virtual
+/// function *that does not override an existing virtual function* and
+/// in every subobject where that virtual function occurs to the set
+/// of virtual functions that override it. Thus, the same virtual
+/// function \c A::f can actually occur in multiple subobjects of type
+/// \c A due to multiple inheritance, and may be overriden by
+/// different virtual functions in each, as in the following example:
+///
+/// \code
+///   struct A { virtual void f(); };
+///   struct B : A { virtual void f(); };
+///   struct C : A { virtual void f(); };
+///   struct D : B, C { };
+/// \endcode
+///
+/// Unlike in the previous example, where the virtual functions \c
+/// B::f and \c C::f both overrode \c A::f in the same subobject of
+/// type \c A, in this example the two virtual functions both override
+/// \c A::f but in *different* subobjects of type A. This is
+/// represented by numbering the subobjects in which the overridden
+/// and the overriding virtual member functions are located. Subobject
+/// 0 represents the virtua base class subobject of that type, while
+/// subobject numbers greater than 0 refer to non-virtual base class
+/// subobjects of that type.
+class CXXFinalOverriderMap 
+  : public llvm::DenseMap<const CXXMethodDecl *, OverridingMethods> { };
   
 } // end namespace clang
 

Modified: vendor/clang/dist/include/clang/AST/CanonicalType.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/CanonicalType.h	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/include/clang/AST/CanonicalType.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -165,6 +165,8 @@ public:
   // (dynamic) type.
   static CanQual<T> CreateUnsafe(QualType Other);
 
+  void dump() const { Stored.dump(); }
+
   void Profile(llvm::FoldingSetNodeID &ID) const {
     ID.AddPointer(getAsOpaquePtr());
   }
@@ -562,24 +564,21 @@ struct CanProxyAdaptor<ExtVectorType> : 
 template<>
 struct CanProxyAdaptor<FunctionType> : public CanProxyBase<FunctionType> {
   LLVM_CLANG_CANPROXY_TYPE_ACCESSOR(getResultType)
-  LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, getNoReturnAttr)
-  LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(CallingConv, getCallConv)
+  LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(FunctionType::ExtInfo, getExtInfo)
 };
 
 template<>
 struct CanProxyAdaptor<FunctionNoProtoType>
   : public CanProxyBase<FunctionNoProtoType> {
   LLVM_CLANG_CANPROXY_TYPE_ACCESSOR(getResultType)
-  LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, getNoReturnAttr)
-  LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(CallingConv, getCallConv)
+  LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(FunctionType::ExtInfo, getExtInfo)
 };
 
 template<>
 struct CanProxyAdaptor<FunctionProtoType>
   : public CanProxyBase<FunctionProtoType> {
   LLVM_CLANG_CANPROXY_TYPE_ACCESSOR(getResultType)
-  LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, getNoReturnAttr)
-  LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(CallingConv, getCallConv)
+  LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(FunctionType::ExtInfo, getExtInfo)
   LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(unsigned, getNumArgs)
   CanQualType getArgType(unsigned i) const {
     return CanQualType::CreateUnsafe(this->getTypePtr()->getArgType(i));

Modified: vendor/clang/dist/include/clang/AST/Decl.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/Decl.h	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/include/clang/AST/Decl.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -224,18 +224,26 @@ class NamespaceDecl : public NamedDecl, 
   // NextNamespace points to the next extended declaration.
   // OrigNamespace points to the original namespace declaration.
   // OrigNamespace of the first namespace decl points to itself.
-  NamespaceDecl *OrigNamespace, *NextNamespace;
+  NamespaceDecl *NextNamespace;
 
-  // The (most recently entered) anonymous namespace inside this
-  // namespace.
-  NamespaceDecl *AnonymousNamespace;
+  /// \brief A pointer to either the original namespace definition for
+  /// this namespace (if the boolean value is false) or the anonymous
+  /// namespace that lives just inside this namespace (if the boolean
+  /// value is true).
+  ///
+  /// We can combine these two notions because the anonymous namespace
+  /// must only be stored in one of the namespace declarations (so all
+  /// of the namespace declarations can find it). We therefore choose
+  /// the original namespace declaration, since all of the namespace
+  /// declarations have a link directly to it; the original namespace
+  /// declaration itself only needs to know that it is the original
+  /// namespace declaration (which the boolean indicates).
+  llvm::PointerIntPair<NamespaceDecl *, 1, bool> OrigOrAnonNamespace;
 
   NamespaceDecl(DeclContext *DC, SourceLocation L, IdentifierInfo *Id)
-    : NamedDecl(Namespace, DC, L, Id), DeclContext(Namespace) {
-    OrigNamespace = this;
-    NextNamespace = 0;
-    AnonymousNamespace = 0;
-  }
+    : NamedDecl(Namespace, DC, L, Id), DeclContext(Namespace),
+      NextNamespace(0), OrigOrAnonNamespace(0, true) { }
+
 public:
   static NamespaceDecl *Create(ASTContext &C, DeclContext *DC,
                                SourceLocation L, IdentifierInfo *Id);
@@ -258,22 +266,33 @@ public:
   void setNextNamespace(NamespaceDecl *ND) { NextNamespace = ND; }
 
   NamespaceDecl *getOriginalNamespace() const {
-    return OrigNamespace;
+    if (OrigOrAnonNamespace.getInt())
+      return const_cast<NamespaceDecl *>(this);
+
+    return OrigOrAnonNamespace.getPointer();
+  }
+
+  void setOriginalNamespace(NamespaceDecl *ND) { 
+    if (ND != this) {
+      OrigOrAnonNamespace.setPointer(ND);
+      OrigOrAnonNamespace.setInt(false);
+    }
   }
-  void setOriginalNamespace(NamespaceDecl *ND) { OrigNamespace = ND; }
 
   NamespaceDecl *getAnonymousNamespace() const {
-    return AnonymousNamespace;
+    return getOriginalNamespace()->OrigOrAnonNamespace.getPointer();
   }
 
   void setAnonymousNamespace(NamespaceDecl *D) {
     assert(!D || D->isAnonymousNamespace());
     assert(!D || D->getParent() == this);
-    AnonymousNamespace = D;
+    getOriginalNamespace()->OrigOrAnonNamespace.setPointer(D);
   }
 
-  virtual NamespaceDecl *getCanonicalDecl() { return OrigNamespace; }
-  const NamespaceDecl *getCanonicalDecl() const { return OrigNamespace; }
+  virtual NamespaceDecl *getCanonicalDecl() { return getOriginalNamespace(); }
+  const NamespaceDecl *getCanonicalDecl() const { 
+    return getOriginalNamespace(); 
+  }
 
   virtual SourceRange getSourceRange() const {
     return SourceRange(getLocation(), RBracLoc);
@@ -1819,12 +1838,12 @@ class RecordDecl : public TagDecl {
   /// If so, this cannot be contained in arrays or other structs as a member.
   bool HasFlexibleArrayMember : 1;
 
-  /// AnonymousStructOrUnion - Whether this is the type of an
-  /// anonymous struct or union.
+  /// AnonymousStructOrUnion - Whether this is the type of an anonymous struct
+  /// or union.
   bool AnonymousStructOrUnion : 1;
 
-  /// HasObjectMember - This is true if this struct has at least one
-  /// member containing an object
+  /// HasObjectMember - This is true if this struct has at least one member
+  /// containing an object.
   bool HasObjectMember : 1;
 
 protected:

Modified: vendor/clang/dist/include/clang/AST/DeclBase.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclBase.h	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/include/clang/AST/DeclBase.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -41,6 +41,8 @@ class LinkageSpecDecl;
 class BlockDecl;
 class DeclarationName;
 class CompoundStmt;
+class StoredDeclsMap;
+class DependentDiagnostic;
 }
 
 namespace llvm {
@@ -450,15 +452,23 @@ public:
   /// same entity may not (and probably don't) share this property.
   void setObjectOfFriendDecl(bool PreviouslyDeclared) {
     unsigned OldNS = IdentifierNamespace;
-    assert((OldNS == IDNS_Tag || OldNS == IDNS_Ordinary ||
-            OldNS == (IDNS_Tag | IDNS_Ordinary))
-           && "unsupported namespace for undeclared friend");
-    if (!PreviouslyDeclared) IdentifierNamespace = 0;
+    assert((OldNS & (IDNS_Tag | IDNS_Ordinary |
+                     IDNS_TagFriend | IDNS_OrdinaryFriend)) &&
+           "namespace includes neither ordinary nor tag");
+    assert(!(OldNS & ~(IDNS_Tag | IDNS_Ordinary |
+                       IDNS_TagFriend | IDNS_OrdinaryFriend)) &&
+           "namespace includes other than ordinary or tag");
 
-    if (OldNS == IDNS_Tag)
+    IdentifierNamespace = 0;
+    if (OldNS & (IDNS_Tag | IDNS_TagFriend)) {
       IdentifierNamespace |= IDNS_TagFriend;
-    else
+      if (PreviouslyDeclared) IdentifierNamespace |= IDNS_Tag;
+    }
+
+    if (OldNS & (IDNS_Ordinary | IDNS_OrdinaryFriend)) {
       IdentifierNamespace |= IDNS_OrdinaryFriend;
+      if (PreviouslyDeclared) IdentifierNamespace |= IDNS_Ordinary;
+    }
   }
 
   enum FriendObjectKind {
@@ -545,9 +555,9 @@ class DeclContext {
   mutable bool ExternalVisibleStorage : 1;
 
   /// \brief Pointer to the data structure used to lookup declarations
-  /// within this context, which is a DenseMap<DeclarationName,
-  /// StoredDeclsList>.
-  mutable void* LookupPtr;
+  /// within this context (or a DependentStoredDeclsMap if this is a
+  /// dependent context).
+  mutable StoredDeclsMap *LookupPtr;
 
   /// FirstDecl - The first declaration stored within this declaration
   /// context.
@@ -674,6 +684,9 @@ public:
   /// "primary" DeclContext structure, which will contain the
   /// information needed to perform name lookup into this context.
   DeclContext *getPrimaryContext();
+  const DeclContext *getPrimaryContext() const {
+    return const_cast<DeclContext*>(this)->getPrimaryContext();
+  }
 
   /// getLookupContext - Retrieve the innermost non-transparent
   /// context of this context, which corresponds to the innermost
@@ -976,10 +989,15 @@ public:
     return getUsingDirectives().second;
   }
 
+  // These are all defined in DependentDiagnostic.h.
+  class ddiag_iterator;
+  inline ddiag_iterator ddiag_begin() const;
+  inline ddiag_iterator ddiag_end() const;
+
   // Low-level accessors
 
   /// \brief Retrieve the internal representation of the lookup structure.
-  void* getLookupPtr() const { return LookupPtr; }
+  StoredDeclsMap* getLookupPtr() const { return LookupPtr; }
 
   /// \brief Whether this DeclContext has external storage containing
   /// additional declarations that are lexically in this context.
@@ -1013,6 +1031,9 @@ private:
   void LoadLexicalDeclsFromExternalStorage() const;
   void LoadVisibleDeclsFromExternalStorage() const;
 
+  friend class DependentDiagnostic;
+  StoredDeclsMap *CreateStoredDeclsMap(ASTContext &C) const;
+
   void buildLookup(DeclContext *DCtx);
   void makeDeclVisibleInContextImpl(NamedDecl *D);
 };

Modified: vendor/clang/dist/include/clang/AST/DeclCXX.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclCXX.h	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/include/clang/AST/DeclCXX.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -33,6 +33,7 @@ class CXXDestructorDecl;
 class CXXMethodDecl;
 class CXXRecordDecl;
 class CXXMemberLookupCriteria;
+class CXXFinalOverriderMap;
 class FriendDecl;
   
 /// \brief Represents any kind of function declaration, whether it is a
@@ -328,6 +329,10 @@ class CXXRecordDecl : public RecordDecl 
   /// instantiated or specialized.
   llvm::PointerUnion<ClassTemplateDecl*, MemberSpecializationInfo*>
     TemplateOrInstantiation;
+
+#ifndef NDEBUG
+  void CheckConversionFunction(NamedDecl *D);
+#endif
   
 protected:
   CXXRecordDecl(Kind K, TagKind TK, DeclContext *DC,
@@ -549,17 +554,26 @@ public:
     return getConversionFunctions()->replace(Old, New);
   }
 
+  /// Removes a conversion function from this class.  The conversion
+  /// function must currently be a member of this class.  Furthermore,
+  /// this class must currently be in the process of being defined.
+  void removeConversion(const NamedDecl *Old);
+
   /// getVisibleConversionFunctions - get all conversion functions visible
   /// in current class; including conversion function templates.
   const UnresolvedSetImpl *getVisibleConversionFunctions();
 
-  /// addConversionFunction - Add a new conversion function to the
-  /// list of conversion functions.
-  void addConversionFunction(CXXConversionDecl *ConvDecl);
-
-  /// \brief Add a new conversion function template to the list of conversion
-  /// functions.
-  void addConversionFunction(FunctionTemplateDecl *ConvDecl);
+  /// addConversionFunction - Registers a conversion function which
+  /// this class declares directly.
+  void addConversionFunction(NamedDecl *Decl) {
+#ifndef NDEBUG
+    CheckConversionFunction(Decl);
+#endif
+
+    // We intentionally don't use the decl's access here because it
+    // hasn't been set yet.  That's really just a misdesign in Sema.
+    data().Conversions.addDecl(Decl);
+  }
 
   /// isAggregate - Whether this class is an aggregate (C++
   /// [dcl.init.aggr]), which is a class with no user-declared
@@ -879,7 +893,12 @@ public:
   static bool FindNestedNameSpecifierMember(const CXXBaseSpecifier *Specifier,
                                             CXXBasePath &Path,
                                             void *UserData);
-  
+
+  /// \brief Retrieve the final overriders for each virtual member
+  /// function in the class hierarchy where this class is the
+  /// most-derived class in the class hierarchy.
+  void getFinalOverriders(CXXFinalOverriderMap &FinaOverriders) const;
+
   /// viewInheritance - Renders and displays an inheritance diagram
   /// for this C++ class and all of its base classes (transitively) using
   /// GraphViz.
@@ -935,7 +954,7 @@ public:
     
     return (CD->begin_overridden_methods() != CD->end_overridden_methods());
   }
-  
+
   /// \brief Determine whether this is a usual deallocation function
   /// (C++ [basic.stc.dynamic.deallocation]p2), which is an overloaded
   /// delete or delete[] operator with a particular signature.

Modified: vendor/clang/dist/include/clang/AST/DeclContextInternals.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclContextInternals.h	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/include/clang/AST/DeclContextInternals.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -24,6 +24,8 @@
 
 namespace clang {
 
+class DependentDiagnostic;
+
 /// StoredDeclsList - This is an array of decls optimized a common case of only
 /// containing one entry.
 struct StoredDeclsList {
@@ -258,8 +260,28 @@ public:
   }
 };
 
-typedef llvm::DenseMap<DeclarationName, StoredDeclsList> StoredDeclsMap;
+class StoredDeclsMap
+  : public llvm::DenseMap<DeclarationName, StoredDeclsList> {
+
+public:
+  static void DestroyAll(StoredDeclsMap *Map, bool Dependent);
+
+private:
+  friend class ASTContext; // walks the chain deleting these
+  friend class DeclContext;
+  llvm::PointerIntPair<StoredDeclsMap*, 1> Previous;
+};
 
+class DependentStoredDeclsMap : public StoredDeclsMap {
+public:
+  DependentStoredDeclsMap() : FirstDiagnostic(0) {}
+
+private:
+  friend class DependentDiagnostic;
+  friend class DeclContext; // iterates over diagnostics
+
+  DependentDiagnostic *FirstDiagnostic;
+};
 
 } // end namespace clang
 

Modified: vendor/clang/dist/include/clang/AST/DeclFriend.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclFriend.h	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/include/clang/AST/DeclFriend.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -36,7 +36,7 @@ namespace clang {
 /// The semantic context of a friend decl is its declaring class.
 class FriendDecl : public Decl {
 public:
-  typedef llvm::PointerUnion<NamedDecl*,Type*> FriendUnion;
+  typedef llvm::PointerUnion<NamedDecl*,TypeSourceInfo*> FriendUnion;
 
 private:
   // The declaration that's a friend of this class.
@@ -73,8 +73,8 @@ public:
   /// possibly dependent) type, return the type;  otherwise
   /// return null.  This is used only for C++0x's unelaborated
   /// friend type declarations.
-  Type *getFriendType() const {
-    return Friend.dyn_cast<Type*>();
+  TypeSourceInfo *getFriendType() const {
+    return Friend.dyn_cast<TypeSourceInfo*>();
   }
 
   /// If this friend declaration doesn't name an unelaborated

Modified: vendor/clang/dist/include/clang/AST/DeclTemplate.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclTemplate.h	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/include/clang/AST/DeclTemplate.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -1238,7 +1238,7 @@ public:
 ///   template <typename U> friend class Foo<T>::Nested; // friend template
 class FriendTemplateDecl : public Decl {
 public:
-  typedef llvm::PointerUnion<NamedDecl*,Type*> FriendUnion;
+  typedef llvm::PointerUnion<NamedDecl*,TypeSourceInfo*> FriendUnion;
 
 private:
   // The number of template parameters;  always non-zero.
@@ -1277,8 +1277,8 @@ public:
   /// If this friend declaration names a templated type (or
   /// a dependent member type of a templated type), return that
   /// type;  otherwise return null.
-  Type *getFriendType() const {
-    return Friend.dyn_cast<Type*>();
+  TypeSourceInfo *getFriendType() const {
+    return Friend.dyn_cast<TypeSourceInfo*>();
   }
 
   /// If this friend declaration names a templated function (or

Modified: vendor/clang/dist/include/clang/AST/DeclarationName.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclarationName.h	Fri Apr  2 08:54:30 2010	(r206083)
+++ vendor/clang/dist/include/clang/AST/DeclarationName.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -378,7 +378,7 @@ inline const PartialDiagnostic &operator
                   Diagnostic::ak_declarationname);
   return PD;
 }
-  
+
 }  // end namespace clang
 
 namespace llvm {

Added: vendor/clang/dist/include/clang/AST/DependentDiagnostic.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/clang/dist/include/clang/AST/DependentDiagnostic.h	Fri Apr  2 08:55:10 2010	(r206084)
@@ -0,0 +1,183 @@
+//===-- DependentDiagnostic.h - Dependently-generated diagnostics -*- C++ -*-=//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//  This file defines interfaces for diagnostics which may or may
+//  fire based on how a template is instantiated.
+//
+//  At the moment, the only consumer of this interface is access
+//  control.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_AST_DEPENDENT_DIAGNOSTIC_H
+#define LLVM_CLANG_AST_DEPENDENT_DIAGNOSTIC_H
+
+#include "clang/Basic/PartialDiagnostic.h"
+#include "clang/Basic/SourceLocation.h"
+#include "clang/AST/DeclBase.h"
+#include "clang/AST/DeclContextInternals.h"
+
+namespace clang {
+
+class ASTContext;
+class CXXRecordDecl;
+class NamedDecl;
+
+/// A dependently-generated diagnostic.
+class DependentDiagnostic {
+public:
+  enum AccessNonce { Access = 0 };
+
+  static DependentDiagnostic *Create(ASTContext &Context,
+                                     DeclContext *Parent,
+                                     AccessNonce _,
+                                     SourceLocation Loc,
+                                     bool IsMemberAccess,
+                                     AccessSpecifier AS,
+                                     NamedDecl *TargetDecl,
+                                     CXXRecordDecl *NamingClass,
+                                     const PartialDiagnostic &PDiag) {
+    DependentDiagnostic *DD = Create(Context, Parent, PDiag);
+    DD->AccessData.Loc = Loc.getRawEncoding();
+    DD->AccessData.IsMember = IsMemberAccess;
+    DD->AccessData.Access = AS;
+    DD->AccessData.TargetDecl = TargetDecl;
+    DD->AccessData.NamingClass = NamingClass;
+    return DD;
+  }
+
+  unsigned getKind() const {
+    return Access;
+  }
+
+  bool isAccessToMember() const {
+    assert(getKind() == Access);
+    return AccessData.IsMember;
+  }
+
+  AccessSpecifier getAccess() const {
+    assert(getKind() == Access);
+    return AccessSpecifier(AccessData.Access);
+  }
+
+  SourceLocation getAccessLoc() const {
+    assert(getKind() == Access);
+    return SourceLocation::getFromRawEncoding(AccessData.Loc);
+  }
+
+  NamedDecl *getAccessTarget() const {
+    assert(getKind() == Access);
+    return AccessData.TargetDecl;
+  }
+
+  NamedDecl *getAccessNamingClass() const {
+    assert(getKind() == Access);
+    return AccessData.NamingClass;
+  }
+
+  const PartialDiagnostic &getDiagnostic() const {
+    return Diag;
+  }
+
+private:
+  DependentDiagnostic(const PartialDiagnostic &PDiag,
+                      PartialDiagnostic::Storage *Storage) 
+    : Diag(PDiag, Storage) {}
+  
+  static DependentDiagnostic *Create(ASTContext &Context,
+                                     DeclContext *Parent,
+                                     const PartialDiagnostic &PDiag);
+
+  friend class DependentStoredDeclsMap;
+  friend class DeclContext::ddiag_iterator;
+  DependentDiagnostic *NextDiagnostic;
+
+  PartialDiagnostic Diag;
+
+  union {
+    struct {
+      unsigned Loc;
+      unsigned Access : 2;
+      unsigned IsMember : 1;
+      NamedDecl *TargetDecl;
+      CXXRecordDecl *NamingClass;
+    } AccessData;
+  };
+};
+
+/// 
+
+/// An iterator over the dependent diagnostics in a dependent context.
+class DeclContext::ddiag_iterator {
+public:
+  ddiag_iterator() : Ptr(0) {}
+  explicit ddiag_iterator(DependentDiagnostic *Ptr) : Ptr(Ptr) {}
+
+  typedef DependentDiagnostic *value_type;
+  typedef DependentDiagnostic *reference;
+  typedef DependentDiagnostic *pointer;
+  typedef int difference_type;
+  typedef std::forward_iterator_tag iterator_category;
+
+  reference operator*() const { return Ptr; }
+
+  ddiag_iterator &operator++() {
+    assert(Ptr && "attempt to increment past end of diag list");
+    Ptr = Ptr->NextDiagnostic;
+    return *this;
+  }
+
+  ddiag_iterator operator++(int) {
+    ddiag_iterator tmp = *this;
+    ++*this;
+    return tmp;

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


More information about the svn-src-vendor mailing list