Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Jul 2011 15:40:56 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r224135 - in vendor/clang/dist: . INPUTS bindings/python/clang bindings/python/tests/cindex clang.xcodeproj docs examples/Tooling include/clang-c include/clang/ARCMigrate include/clang/...
Message-ID:  <201107171540.p6HFeuLs079350@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sun Jul 17 15:40:56 2011
New Revision: 224135
URL: http://svn.freebsd.org/changeset/base/224135

Log:
  Vendor import of clang trunk r135360:
  http://llvm.org/svn/llvm-project/cfe/trunk@135360

Added:
  vendor/clang/dist/INPUTS/cfg-big-switch.c
  vendor/clang/dist/INPUTS/cfg-long-chain1.c
  vendor/clang/dist/INPUTS/cfg-long-chain2.c
  vendor/clang/dist/INPUTS/cfg-long-chain3.c
  vendor/clang/dist/INPUTS/cfg-nested-switches.c
  vendor/clang/dist/docs/AutomaticReferenceCounting.html
  vendor/clang/dist/include/clang/ARCMigrate/
  vendor/clang/dist/include/clang/ARCMigrate/ARCMT.h
  vendor/clang/dist/include/clang/ARCMigrate/ARCMTActions.h
  vendor/clang/dist/include/clang/ARCMigrate/FileRemapper.h
  vendor/clang/dist/include/clang/AST/GlobalDecl.h
  vendor/clang/dist/include/clang/Basic/DelayedCleanupPool.h
  vendor/clang/dist/include/clang/Basic/DiagnosticCategories.h
  vendor/clang/dist/include/clang/Driver/ObjCRuntime.h
  vendor/clang/dist/include/clang/Sema/LocInfoType.h
  vendor/clang/dist/include/clang/Sema/TypoCorrection.h
  vendor/clang/dist/lib/ARCMigrate/
  vendor/clang/dist/lib/ARCMigrate/ARCMT.cpp
  vendor/clang/dist/lib/ARCMigrate/ARCMTActions.cpp
  vendor/clang/dist/lib/ARCMigrate/CMakeLists.txt
  vendor/clang/dist/lib/ARCMigrate/FileRemapper.cpp
  vendor/clang/dist/lib/ARCMigrate/Internals.h
  vendor/clang/dist/lib/ARCMigrate/Makefile
  vendor/clang/dist/lib/ARCMigrate/TransARCAssign.cpp
  vendor/clang/dist/lib/ARCMigrate/TransAutoreleasePool.cpp
  vendor/clang/dist/lib/ARCMigrate/TransBlockObjCVariable.cpp
  vendor/clang/dist/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp
  vendor/clang/dist/lib/ARCMigrate/TransProperties.cpp
  vendor/clang/dist/lib/ARCMigrate/TransRetainReleaseDealloc.cpp
  vendor/clang/dist/lib/ARCMigrate/TransUnbridgedCasts.cpp
  vendor/clang/dist/lib/ARCMigrate/TransUnusedInitDelegate.cpp
  vendor/clang/dist/lib/ARCMigrate/TransZeroOutPropsInDealloc.cpp
  vendor/clang/dist/lib/ARCMigrate/TransformActions.cpp
  vendor/clang/dist/lib/ARCMigrate/Transforms.cpp
  vendor/clang/dist/lib/ARCMigrate/Transforms.h
  vendor/clang/dist/lib/Sema/SemaExprMember.cpp
  vendor/clang/dist/test/ARCMT/
  vendor/clang/dist/test/ARCMT/Common.h
  vendor/clang/dist/test/ARCMT/Inputs/
  vendor/clang/dist/test/ARCMT/Inputs/test.h
  vendor/clang/dist/test/ARCMT/Inputs/test.h.result
  vendor/clang/dist/test/ARCMT/Inputs/test1.m.in
  vendor/clang/dist/test/ARCMT/Inputs/test1.m.in.result
  vendor/clang/dist/test/ARCMT/Inputs/test2.m.in
  vendor/clang/dist/test/ARCMT/Inputs/test2.m.in.result
  vendor/clang/dist/test/ARCMT/assign-prop-no-arc-runtime.m
  vendor/clang/dist/test/ARCMT/assign-prop-no-arc-runtime.m.result
  vendor/clang/dist/test/ARCMT/assign-prop-with-arc-runtime.m
  vendor/clang/dist/test/ARCMT/assign-prop-with-arc-runtime.m.result
  vendor/clang/dist/test/ARCMT/atautorelease-2.m
  vendor/clang/dist/test/ARCMT/atautorelease-2.m.result
  vendor/clang/dist/test/ARCMT/atautorelease-3.m
  vendor/clang/dist/test/ARCMT/atautorelease-3.m.result
  vendor/clang/dist/test/ARCMT/atautorelease-check.m
  vendor/clang/dist/test/ARCMT/atautorelease.m
  vendor/clang/dist/test/ARCMT/atautorelease.m.result
  vendor/clang/dist/test/ARCMT/autoreleases.m
  vendor/clang/dist/test/ARCMT/autoreleases.m.result
  vendor/clang/dist/test/ARCMT/checking.m
  vendor/clang/dist/test/ARCMT/cxx-checking.mm
  vendor/clang/dist/test/ARCMT/cxx-rewrite.mm
  vendor/clang/dist/test/ARCMT/cxx-rewrite.mm.result
  vendor/clang/dist/test/ARCMT/dealloc.m
  vendor/clang/dist/test/ARCMT/dealloc.m.result
  vendor/clang/dist/test/ARCMT/driver-migrate.m
  vendor/clang/dist/test/ARCMT/init.m
  vendor/clang/dist/test/ARCMT/init.m.result
  vendor/clang/dist/test/ARCMT/migrate.m
  vendor/clang/dist/test/ARCMT/nonobjc-to-objc-cast-2.m
  vendor/clang/dist/test/ARCMT/nonobjc-to-objc-cast.m
  vendor/clang/dist/test/ARCMT/nonobjc-to-objc-cast.m.result
  vendor/clang/dist/test/ARCMT/releases-driver.m
  vendor/clang/dist/test/ARCMT/releases-driver.m.result
  vendor/clang/dist/test/ARCMT/releases.m
  vendor/clang/dist/test/ARCMT/releases.m.result
  vendor/clang/dist/test/ARCMT/remove-dealloc-method.m
  vendor/clang/dist/test/ARCMT/remove-dealloc-method.m.result
  vendor/clang/dist/test/ARCMT/remove-dealloc-zerouts.m
  vendor/clang/dist/test/ARCMT/remove-dealloc-zerouts.m.result
  vendor/clang/dist/test/ARCMT/remove-statements.m
  vendor/clang/dist/test/ARCMT/remove-statements.m.result
  vendor/clang/dist/test/ARCMT/retains.m
  vendor/clang/dist/test/ARCMT/retains.m.result
  vendor/clang/dist/test/ARCMT/rewrite-block-var.m
  vendor/clang/dist/test/ARCMT/rewrite-block-var.m.result
  vendor/clang/dist/test/ARCMT/safe-arc-assign.m
  vendor/clang/dist/test/ARCMT/safe-arc-assign.m.result
  vendor/clang/dist/test/ARCMT/with-arc-mode-check.m
  vendor/clang/dist/test/ARCMT/with-arc-mode-migrate.m
  vendor/clang/dist/test/ARCMT/with-arc-mode-migrate.m.result
  vendor/clang/dist/test/ARCMT/with-arc-mode-modify.m
  vendor/clang/dist/test/ARCMT/with-arc-mode-modify.m.result
  vendor/clang/dist/test/Analysis/objc-arc.m
  vendor/clang/dist/test/Analysis/retain-release-path-notes-gc.m
  vendor/clang/dist/test/Analysis/retain-release-path-notes.m
  vendor/clang/dist/test/Analysis/string-fail.c
  vendor/clang/dist/test/CXX/class/p6-0x.cpp
  vendor/clang/dist/test/CXX/except/except.spec/canonical.cpp
  vendor/clang/dist/test/CXX/temp/p3.cpp
  vendor/clang/dist/test/CodeGen/arm-asm-variable.c
  vendor/clang/dist/test/CodeGen/attr-weak-import.c
  vendor/clang/dist/test/CodeGen/call.c
  vendor/clang/dist/test/CodeGen/complex-indirect.c
  vendor/clang/dist/test/CodeGen/darwin-thread-specifier.c
  vendor/clang/dist/test/CodeGen/debug-info-iv.c
  vendor/clang/dist/test/CodeGen/debug-info-member.c
  vendor/clang/dist/test/CodeGen/private-extern-redef.c
  vendor/clang/dist/test/CodeGen/x86_32-arguments-nommx.c
  vendor/clang/dist/test/CodeGenCXX/compound-literals.cpp
  vendor/clang/dist/test/CodeGenCXX/new-overflow.cpp
  vendor/clang/dist/test/CodeGenCXX/noinline-template.cpp
  vendor/clang/dist/test/CodeGenCXX/partial-destruction.cpp
  vendor/clang/dist/test/CodeGenCXX/vla.cpp
  vendor/clang/dist/test/CodeGenObjC/arc-arm.m
  vendor/clang/dist/test/CodeGenObjC/arc-block-ivar-layout.m
  vendor/clang/dist/test/CodeGenObjC/arc-bridged-cast.m
  vendor/clang/dist/test/CodeGenObjC/arc-compound-stmt.m
  vendor/clang/dist/test/CodeGenObjC/arc-foreach.m
  vendor/clang/dist/test/CodeGenObjC/arc-ivar-layout.m
  vendor/clang/dist/test/CodeGenObjC/arc-no-runtime.m
  vendor/clang/dist/test/CodeGenObjC/arc-related-result-type.m
  vendor/clang/dist/test/CodeGenObjC/arc-unbridged-cast.m
  vendor/clang/dist/test/CodeGenObjC/arc-unopt.m
  vendor/clang/dist/test/CodeGenObjC/arc-weak-property.m
  vendor/clang/dist/test/CodeGenObjC/arc.m
  vendor/clang/dist/test/CodeGenObjC/autorelease.m
  vendor/clang/dist/test/CodeGenObjC/gc.m
  vendor/clang/dist/test/CodeGenObjC/mrr-autorelease.m
  vendor/clang/dist/test/CodeGenObjC/nonlazy-msgSend.m
  vendor/clang/dist/test/CodeGenObjC/related-result-type.m
  vendor/clang/dist/test/CodeGenObjC/terminate.m
  vendor/clang/dist/test/CodeGenObjCXX/arc-globals.mm
  vendor/clang/dist/test/CodeGenObjCXX/arc-mangle.mm
  vendor/clang/dist/test/CodeGenObjCXX/arc-move.mm
  vendor/clang/dist/test/CodeGenObjCXX/arc-new-delete.mm
  vendor/clang/dist/test/CodeGenObjCXX/arc-pseudo-destructors.mm
  vendor/clang/dist/test/CodeGenObjCXX/arc-references.mm
  vendor/clang/dist/test/CodeGenObjCXX/arc-special-member-functions.mm
  vendor/clang/dist/test/CodeGenObjCXX/arc.mm
  vendor/clang/dist/test/CodeGenObjCXX/catch-id-type.mm
  vendor/clang/dist/test/CodeGenObjCXX/copy.mm
  vendor/clang/dist/test/CodeGenObjCXX/gc.mm
  vendor/clang/dist/test/CodeGenOpenCL/vector_literals_valid.cl
  vendor/clang/dist/test/Driver/arc-exceptions.m
  vendor/clang/dist/test/Driver/arc.c
  vendor/clang/dist/test/Driver/gnu-runtime.m
  vendor/clang/dist/test/Driver/ios-simulator-arcruntime.c
  vendor/clang/dist/test/Driver/mg.c
  vendor/clang/dist/test/Driver/no-objc-arr.m
  vendor/clang/dist/test/Driver/noexecstack.c
  vendor/clang/dist/test/FixIt/typo-crash.cpp
  vendor/clang/dist/test/Index/arc-annotate.m
  vendor/clang/dist/test/Index/arc-complete.m
  vendor/clang/dist/test/Index/werror.c
  vendor/clang/dist/test/Lexer/has_feature_objc_arc.m
  vendor/clang/dist/test/PCH/Inputs/arc.h
  vendor/clang/dist/test/PCH/Inputs/typo.hpp
  vendor/clang/dist/test/PCH/arc.m
  vendor/clang/dist/test/PCH/typo.cpp
  vendor/clang/dist/test/Parser/parenthesis-balance.cpp
  vendor/clang/dist/test/Preprocessor/pragma_diagnostic_output.c
  vendor/clang/dist/test/Preprocessor/warn-macro-unused.h
  vendor/clang/dist/test/Sema/inline-redef.c
  vendor/clang/dist/test/Sema/no-format-y2k-turnsoff-format.c
  vendor/clang/dist/test/Sema/nonnull.c
  vendor/clang/dist/test/Sema/paren-list-expr-type.cpp
  vendor/clang/dist/test/Sema/sign-conversion.c
  vendor/clang/dist/test/Sema/warn-sizeof-arrayarg.c
  vendor/clang/dist/test/SemaCXX/PR10243.cpp
  vendor/clang/dist/test/SemaCXX/PR7410.cpp
  vendor/clang/dist/test/SemaCXX/for-range-unused.cpp
  vendor/clang/dist/test/SemaCXX/function-overload-typo-crash.cpp
  vendor/clang/dist/test/SemaCXX/missing-namespace-qualifier-typo-corrections.cpp
  vendor/clang/dist/test/SemaCXX/null_in_arithmetic_ops.cpp
  vendor/clang/dist/test/SemaCXX/nullptr_in_arithmetic_ops.cpp
  vendor/clang/dist/test/SemaCXX/warn-memset-bad-sizeof.cpp
  vendor/clang/dist/test/SemaObjC/Inputs/
  vendor/clang/dist/test/SemaObjC/Inputs/arc-system-header.h
  vendor/clang/dist/test/SemaObjC/arc-bridged-cast.m
  vendor/clang/dist/test/SemaObjC/arc-decls.m
  vendor/clang/dist/test/SemaObjC/arc-jump-block.m
  vendor/clang/dist/test/SemaObjC/arc-no-runtime.m
  vendor/clang/dist/test/SemaObjC/arc-non-pod-memaccess.m
  vendor/clang/dist/test/SemaObjC/arc-peformselector.m
  vendor/clang/dist/test/SemaObjC/arc-property-decl-attrs.m
  vendor/clang/dist/test/SemaObjC/arc-property-lifetime.m
  vendor/clang/dist/test/SemaObjC/arc-property.m
  vendor/clang/dist/test/SemaObjC/arc-system-header.m
  vendor/clang/dist/test/SemaObjC/arc-type-conversion.m
  vendor/clang/dist/test/SemaObjC/arc-unavailable-for-weakref.m
  vendor/clang/dist/test/SemaObjC/arc-unbridged-cast.m
  vendor/clang/dist/test/SemaObjC/arc-unsafe-assigns.m
  vendor/clang/dist/test/SemaObjC/arc-unsafe_unretained.m
  vendor/clang/dist/test/SemaObjC/arc.m
  vendor/clang/dist/test/SemaObjC/autoreleasepool.m
  vendor/clang/dist/test/SemaObjC/debugger-support.m
  vendor/clang/dist/test/SemaObjC/no-warning-unavail-unimp.m
  vendor/clang/dist/test/SemaObjC/property-ns-returns-not-retained-attr.m
  vendor/clang/dist/test/SemaObjC/warn-retain-cycle.m
  vendor/clang/dist/test/SemaObjC/weak-property.m
  vendor/clang/dist/test/SemaObjCXX/Inputs/
  vendor/clang/dist/test/SemaObjCXX/Inputs/arc-system-header.h
  vendor/clang/dist/test/SemaObjCXX/arc-0x.mm
  vendor/clang/dist/test/SemaObjCXX/arc-bool-conversion.mm
  vendor/clang/dist/test/SemaObjCXX/arc-bridged-cast.mm
  vendor/clang/dist/test/SemaObjCXX/arc-libcxx.mm
  vendor/clang/dist/test/SemaObjCXX/arc-libstdcxx.mm
  vendor/clang/dist/test/SemaObjCXX/arc-memfunc.mm
  vendor/clang/dist/test/SemaObjCXX/arc-non-pod.mm
  vendor/clang/dist/test/SemaObjCXX/arc-object-init-destroy.mm
  vendor/clang/dist/test/SemaObjCXX/arc-overloading.mm
  vendor/clang/dist/test/SemaObjCXX/arc-system-header.mm
  vendor/clang/dist/test/SemaObjCXX/arc-templates.mm
  vendor/clang/dist/test/SemaObjCXX/arc-type-conversion.mm
  vendor/clang/dist/test/SemaObjCXX/arc-type-traits.mm
  vendor/clang/dist/test/SemaObjCXX/arc-unavailable-for-weakref.mm
  vendor/clang/dist/test/SemaObjCXX/null_objc_pointer.mm
  vendor/clang/dist/test/SemaObjCXX/property-type-mismatch.mm
  vendor/clang/dist/test/SemaOpenCL/vector_literals_invalid.cl
  vendor/clang/dist/test/SemaTemplate/member-inclass-init-value-dependent.cpp
  vendor/clang/dist/test/SemaTemplate/unresolved-construct.cpp
  vendor/clang/dist/tools/arcmt-test/
  vendor/clang/dist/tools/arcmt-test/CMakeLists.txt
  vendor/clang/dist/tools/arcmt-test/Makefile
  vendor/clang/dist/tools/arcmt-test/arcmt-test.cpp
  vendor/clang/dist/tools/c-arcmt-test/
  vendor/clang/dist/tools/c-arcmt-test/CMakeLists.txt
  vendor/clang/dist/tools/c-arcmt-test/Makefile
  vendor/clang/dist/tools/c-arcmt-test/c-arcmt-test.c
  vendor/clang/dist/tools/libclang/ARCMigrate.cpp
Deleted:
  vendor/clang/dist/docs/index.html
  vendor/clang/dist/examples/Tooling/
  vendor/clang/dist/include/clang/Tooling/
  vendor/clang/dist/lib/CodeGen/GlobalDecl.h
  vendor/clang/dist/lib/Frontend/BoostConAction.cpp
  vendor/clang/dist/lib/Tooling/
  vendor/clang/dist/test/CodeGen/call-knr-indirect.c
  vendor/clang/dist/test/CodeGenObjC/debug-info-foreach.m
  vendor/clang/dist/unittests/Tooling/
Modified:
  vendor/clang/dist/CMakeLists.txt
  vendor/clang/dist/LICENSE.TXT
  vendor/clang/dist/bindings/python/clang/cindex.py
  vendor/clang/dist/bindings/python/tests/cindex/test_cursor_kind.py
  vendor/clang/dist/bindings/python/tests/cindex/test_translation_unit.py
  vendor/clang/dist/clang.xcodeproj/project.pbxproj
  vendor/clang/dist/docs/Block-ABI-Apple.txt
  vendor/clang/dist/docs/BlockLanguageSpec.txt
  vendor/clang/dist/docs/DriverInternals.html
  vendor/clang/dist/docs/InternalsManual.html
  vendor/clang/dist/docs/LanguageExtensions.html
  vendor/clang/dist/docs/UsersManual.html
  vendor/clang/dist/include/clang-c/Index.h
  vendor/clang/dist/include/clang/AST/ASTContext.h
  vendor/clang/dist/include/clang/AST/ASTDiagnostic.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/DeclObjC.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/ExprObjC.h
  vendor/clang/dist/include/clang/AST/ExternalASTSource.h
  vendor/clang/dist/include/clang/AST/NestedNameSpecifier.h
  vendor/clang/dist/include/clang/AST/OperationKinds.h
  vendor/clang/dist/include/clang/AST/ParentMap.h
  vendor/clang/dist/include/clang/AST/PrettyPrinter.h
  vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h
  vendor/clang/dist/include/clang/AST/Stmt.h
  vendor/clang/dist/include/clang/AST/StmtObjC.h
  vendor/clang/dist/include/clang/AST/TemplateBase.h
  vendor/clang/dist/include/clang/AST/TemplateName.h
  vendor/clang/dist/include/clang/AST/Type.h
  vendor/clang/dist/include/clang/Analysis/Analyses/UninitializedValues.h
  vendor/clang/dist/include/clang/Analysis/AnalysisContext.h
  vendor/clang/dist/include/clang/Analysis/DomainSpecific/CocoaConventions.h
  vendor/clang/dist/include/clang/Basic/Attr.td
  vendor/clang/dist/include/clang/Basic/Builtins.def
  vendor/clang/dist/include/clang/Basic/Builtins.h
  vendor/clang/dist/include/clang/Basic/BuiltinsX86.def
  vendor/clang/dist/include/clang/Basic/Diagnostic.h
  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/DiagnosticGroups.td
  vendor/clang/dist/include/clang/Basic/DiagnosticIDs.h
  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/FileManager.h
  vendor/clang/dist/include/clang/Basic/IdentifierTable.h
  vendor/clang/dist/include/clang/Basic/LangOptions.h
  vendor/clang/dist/include/clang/Basic/SourceManager.h
  vendor/clang/dist/include/clang/Basic/SourceManagerInternals.h
  vendor/clang/dist/include/clang/Basic/Specifiers.h
  vendor/clang/dist/include/clang/Basic/StmtNodes.td
  vendor/clang/dist/include/clang/Basic/TargetInfo.h
  vendor/clang/dist/include/clang/Basic/TokenKinds.def
  vendor/clang/dist/include/clang/Basic/arm_neon.td
  vendor/clang/dist/include/clang/CodeGen/BackendUtil.h
  vendor/clang/dist/include/clang/Driver/CC1Options.td
  vendor/clang/dist/include/clang/Driver/Compilation.h
  vendor/clang/dist/include/clang/Driver/Driver.h
  vendor/clang/dist/include/clang/Driver/Option.h
  vendor/clang/dist/include/clang/Driver/Options.td
  vendor/clang/dist/include/clang/Driver/ToolChain.h
  vendor/clang/dist/include/clang/Frontend/ASTUnit.h
  vendor/clang/dist/include/clang/Frontend/CodeGenOptions.h
  vendor/clang/dist/include/clang/Frontend/DependencyOutputOptions.h
  vendor/clang/dist/include/clang/Frontend/DiagnosticOptions.h
  vendor/clang/dist/include/clang/Frontend/FrontendAction.h
  vendor/clang/dist/include/clang/Frontend/FrontendActions.h
  vendor/clang/dist/include/clang/Frontend/FrontendOptions.h
  vendor/clang/dist/include/clang/Frontend/HeaderSearchOptions.h
  vendor/clang/dist/include/clang/Frontend/PreprocessorOptions.h
  vendor/clang/dist/include/clang/Frontend/TextDiagnosticPrinter.h
  vendor/clang/dist/include/clang/Frontend/Utils.h
  vendor/clang/dist/include/clang/Lex/Lexer.h
  vendor/clang/dist/include/clang/Lex/LiteralSupport.h
  vendor/clang/dist/include/clang/Lex/MacroInfo.h
  vendor/clang/dist/include/clang/Lex/PPCallbacks.h
  vendor/clang/dist/include/clang/Lex/PreprocessingRecord.h
  vendor/clang/dist/include/clang/Lex/Preprocessor.h
  vendor/clang/dist/include/clang/Lex/Token.h
  vendor/clang/dist/include/clang/Lex/TokenLexer.h
  vendor/clang/dist/include/clang/Parse/Parser.h
  vendor/clang/dist/include/clang/Rewrite/FixItRewriter.h
  vendor/clang/dist/include/clang/Rewrite/Rewriter.h
  vendor/clang/dist/include/clang/Sema/AnalysisBasedWarnings.h
  vendor/clang/dist/include/clang/Sema/AttributeList.h
  vendor/clang/dist/include/clang/Sema/CodeCompleteConsumer.h
  vendor/clang/dist/include/clang/Sema/DeclSpec.h
  vendor/clang/dist/include/clang/Sema/DelayedDiagnostic.h
  vendor/clang/dist/include/clang/Sema/ExternalSemaSource.h
  vendor/clang/dist/include/clang/Sema/Initialization.h
  vendor/clang/dist/include/clang/Sema/Overload.h
  vendor/clang/dist/include/clang/Sema/Scope.h
  vendor/clang/dist/include/clang/Sema/Sema.h
  vendor/clang/dist/include/clang/Serialization/ASTBitCodes.h
  vendor/clang/dist/include/clang/Serialization/ASTReader.h
  vendor/clang/dist/include/clang/Serialization/ASTWriter.h
  vendor/clang/dist/include/clang/Serialization/ChainedIncludesSource.h
  vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/GRStateTrait.h
  vendor/clang/dist/lib/AST/ASTContext.cpp
  vendor/clang/dist/lib/AST/ASTDiagnostic.cpp
  vendor/clang/dist/lib/AST/ASTImporter.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/DeclObjC.cpp
  vendor/clang/dist/lib/AST/DeclPrinter.cpp
  vendor/clang/dist/lib/AST/DeclarationName.cpp
  vendor/clang/dist/lib/AST/Expr.cpp
  vendor/clang/dist/lib/AST/ExprCXX.cpp
  vendor/clang/dist/lib/AST/ExprClassification.cpp
  vendor/clang/dist/lib/AST/ExprConstant.cpp
  vendor/clang/dist/lib/AST/ExternalASTSource.cpp
  vendor/clang/dist/lib/AST/ItaniumMangle.cpp
  vendor/clang/dist/lib/AST/NestedNameSpecifier.cpp
  vendor/clang/dist/lib/AST/ParentMap.cpp
  vendor/clang/dist/lib/AST/RecordLayoutBuilder.cpp
  vendor/clang/dist/lib/AST/Stmt.cpp
  vendor/clang/dist/lib/AST/StmtPrinter.cpp
  vendor/clang/dist/lib/AST/StmtProfile.cpp
  vendor/clang/dist/lib/AST/TemplateBase.cpp
  vendor/clang/dist/lib/AST/TemplateName.cpp
  vendor/clang/dist/lib/AST/Type.cpp
  vendor/clang/dist/lib/AST/TypePrinter.cpp
  vendor/clang/dist/lib/Analysis/CFG.cpp
  vendor/clang/dist/lib/Analysis/CocoaConventions.cpp
  vendor/clang/dist/lib/Analysis/FormatString.cpp
  vendor/clang/dist/lib/Analysis/ReachableCode.cpp
  vendor/clang/dist/lib/Analysis/UninitializedValues.cpp
  vendor/clang/dist/lib/Basic/Builtins.cpp
  vendor/clang/dist/lib/Basic/Diagnostic.cpp
  vendor/clang/dist/lib/Basic/DiagnosticIDs.cpp
  vendor/clang/dist/lib/Basic/IdentifierTable.cpp
  vendor/clang/dist/lib/Basic/SourceManager.cpp
  vendor/clang/dist/lib/Basic/TargetInfo.cpp
  vendor/clang/dist/lib/Basic/Targets.cpp
  vendor/clang/dist/lib/CMakeLists.txt
  vendor/clang/dist/lib/CodeGen/ABIInfo.h
  vendor/clang/dist/lib/CodeGen/BackendUtil.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/CGCXXABI.cpp
  vendor/clang/dist/lib/CodeGen/CGCXXABI.h
  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/CGCleanup.cpp
  vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp
  vendor/clang/dist/lib/CodeGen/CGDebugInfo.h
  vendor/clang/dist/lib/CodeGen/CGDecl.cpp
  vendor/clang/dist/lib/CodeGen/CGDeclCXX.cpp
  vendor/clang/dist/lib/CodeGen/CGException.cpp
  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.cpp
  vendor/clang/dist/lib/CodeGen/CGObjCRuntime.h
  vendor/clang/dist/lib/CodeGen/CGRTTI.cpp
  vendor/clang/dist/lib/CodeGen/CGRecordLayout.h
  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/CGVTables.cpp
  vendor/clang/dist/lib/CodeGen/CGVTables.h
  vendor/clang/dist/lib/CodeGen/CGValue.h
  vendor/clang/dist/lib/CodeGen/CodeGenAction.cpp
  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/ItaniumCXXABI.cpp
  vendor/clang/dist/lib/CodeGen/TargetInfo.cpp
  vendor/clang/dist/lib/CodeGen/TargetInfo.h
  vendor/clang/dist/lib/Driver/Arg.cpp
  vendor/clang/dist/lib/Driver/ArgList.cpp
  vendor/clang/dist/lib/Driver/Driver.cpp
  vendor/clang/dist/lib/Driver/Option.cpp
  vendor/clang/dist/lib/Driver/ToolChain.cpp
  vendor/clang/dist/lib/Driver/ToolChains.cpp
  vendor/clang/dist/lib/Driver/ToolChains.h
  vendor/clang/dist/lib/Driver/Tools.cpp
  vendor/clang/dist/lib/Driver/Tools.h
  vendor/clang/dist/lib/Frontend/ASTUnit.cpp
  vendor/clang/dist/lib/Frontend/CMakeLists.txt
  vendor/clang/dist/lib/Frontend/CacheTokens.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/FrontendAction.cpp
  vendor/clang/dist/lib/Frontend/InitHeaderSearch.cpp
  vendor/clang/dist/lib/Frontend/InitPreprocessor.cpp
  vendor/clang/dist/lib/Frontend/PrintPreprocessedOutput.cpp
  vendor/clang/dist/lib/Frontend/TextDiagnosticPrinter.cpp
  vendor/clang/dist/lib/FrontendTool/CMakeLists.txt
  vendor/clang/dist/lib/FrontendTool/ExecuteCompilerInvocation.cpp
  vendor/clang/dist/lib/Headers/float.h
  vendor/clang/dist/lib/Headers/stdarg.h
  vendor/clang/dist/lib/Lex/HeaderSearch.cpp
  vendor/clang/dist/lib/Lex/Lexer.cpp
  vendor/clang/dist/lib/Lex/MacroArgs.cpp
  vendor/clang/dist/lib/Lex/MacroArgs.h
  vendor/clang/dist/lib/Lex/MacroInfo.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/Pragma.cpp
  vendor/clang/dist/lib/Lex/PreprocessingRecord.cpp
  vendor/clang/dist/lib/Lex/Preprocessor.cpp
  vendor/clang/dist/lib/Lex/TokenLexer.cpp
  vendor/clang/dist/lib/Makefile
  vendor/clang/dist/lib/Parse/ParseAST.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/ParseTentative.cpp
  vendor/clang/dist/lib/Parse/Parser.cpp
  vendor/clang/dist/lib/Rewrite/FixItRewriter.cpp
  vendor/clang/dist/lib/Rewrite/HTMLRewrite.cpp
  vendor/clang/dist/lib/Rewrite/RewriteObjC.cpp
  vendor/clang/dist/lib/Rewrite/Rewriter.cpp
  vendor/clang/dist/lib/Sema/AnalysisBasedWarnings.cpp
  vendor/clang/dist/lib/Sema/AttributeList.cpp
  vendor/clang/dist/lib/Sema/CMakeLists.txt
  vendor/clang/dist/lib/Sema/CodeCompleteConsumer.cpp
  vendor/clang/dist/lib/Sema/DeclSpec.cpp
  vendor/clang/dist/lib/Sema/DelayedDiagnostic.cpp
  vendor/clang/dist/lib/Sema/JumpDiagnostics.cpp
  vendor/clang/dist/lib/Sema/Sema.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/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/SemaExprObjC.cpp
  vendor/clang/dist/lib/Sema/SemaInit.cpp
  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/SemaTemplateDeduction.cpp
  vendor/clang/dist/lib/Sema/SemaTemplateInstantiate.cpp
  vendor/clang/dist/lib/Sema/SemaTemplateInstantiateDecl.cpp
  vendor/clang/dist/lib/Sema/SemaTemplateVariadic.cpp
  vendor/clang/dist/lib/Sema/SemaType.cpp
  vendor/clang/dist/lib/Sema/TreeTransform.h
  vendor/clang/dist/lib/Sema/TypeLocBuilder.h
  vendor/clang/dist/lib/Serialization/ASTReader.cpp
  vendor/clang/dist/lib/Serialization/ASTReaderDecl.cpp
  vendor/clang/dist/lib/Serialization/ASTReaderStmt.cpp
  vendor/clang/dist/lib/Serialization/ASTWriter.cpp
  vendor/clang/dist/lib/Serialization/ASTWriterDecl.cpp
  vendor/clang/dist/lib/Serialization/ASTWriterStmt.cpp
  vendor/clang/dist/lib/Serialization/ChainedIncludesSource.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/Checkers.td
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/IteratorsChecker.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/MacOSXAPIChecker.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/CFRefCount.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/Environment.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/ExprEngine.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/RegionStore.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
  vendor/clang/dist/runtime/compiler-rt/Makefile
  vendor/clang/dist/test/Analysis/bstring.c
  vendor/clang/dist/test/Analysis/misc-ps-eager-assume.m
  vendor/clang/dist/test/Analysis/nullptr.cpp
  vendor/clang/dist/test/Analysis/pr4209.m
  vendor/clang/dist/test/Analysis/retain-release-gc-only.m
  vendor/clang/dist/test/Analysis/retain-release.m
  vendor/clang/dist/test/Analysis/retain-release.mm
  vendor/clang/dist/test/Analysis/string.c
  vendor/clang/dist/test/Analysis/uninit-ps-rdar6145427.m
  vendor/clang/dist/test/Analysis/uninit-vals-ps-region.m
  vendor/clang/dist/test/Analysis/uninit-vals.m
  vendor/clang/dist/test/Analysis/variadic-method-types.m
  vendor/clang/dist/test/CMakeLists.txt
  vendor/clang/dist/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp
  vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p1.cpp
  vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p5.cpp
  vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p6.cpp
  vendor/clang/dist/test/CXX/except/except.spec/p14-ir.cpp
  vendor/clang/dist/test/CXX/special/class.copy/p33-0x.cpp
  vendor/clang/dist/test/CXX/stmt.stmt/stmt.dcl/p3-0x.cpp
  vendor/clang/dist/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp
  vendor/clang/dist/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3.cpp
  vendor/clang/dist/test/CXX/temp/temp.res/temp.local/p3.cpp
  vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p7.cpp
  vendor/clang/dist/test/CodeGen/annotate.c
  vendor/clang/dist/test/CodeGen/arm-arguments.c
  vendor/clang/dist/test/CodeGen/asm-errors.c
  vendor/clang/dist/test/CodeGen/asm-inout.c
  vendor/clang/dist/test/CodeGen/asm.c
  vendor/clang/dist/test/CodeGen/attributes.c
  vendor/clang/dist/test/CodeGen/bitfield-2.c
  vendor/clang/dist/test/CodeGen/blocksignature.c
  vendor/clang/dist/test/CodeGen/blockstret.c
  vendor/clang/dist/test/CodeGen/builtin-expect.c
  vendor/clang/dist/test/CodeGen/byval-memcpy-elim.c
  vendor/clang/dist/test/CodeGen/complex.c
  vendor/clang/dist/test/CodeGen/compound-literal.c
  vendor/clang/dist/test/CodeGen/const-init.c
  vendor/clang/dist/test/CodeGen/debug-info.c
  vendor/clang/dist/test/CodeGen/decl.c
  vendor/clang/dist/test/CodeGen/designated-initializers.c
  vendor/clang/dist/test/CodeGen/flexible-array-init.c
  vendor/clang/dist/test/CodeGen/functions.c
  vendor/clang/dist/test/CodeGen/global-init.c
  vendor/clang/dist/test/CodeGen/init.c
  vendor/clang/dist/test/CodeGen/libcalls.c
  vendor/clang/dist/test/CodeGen/mmx-inline-asm.c
  vendor/clang/dist/test/CodeGen/ms-anonymous-struct.c
  vendor/clang/dist/test/CodeGen/packed-union.c
  vendor/clang/dist/test/CodeGen/pragma-pack-3.c
  vendor/clang/dist/test/CodeGen/struct-init.c
  vendor/clang/dist/test/CodeGen/struct.c
  vendor/clang/dist/test/CodeGen/trapv.c
  vendor/clang/dist/test/CodeGen/union-init2.c
  vendor/clang/dist/test/CodeGen/vla.c
  vendor/clang/dist/test/CodeGen/volatile-1.c
  vendor/clang/dist/test/CodeGen/volatile-2.c
  vendor/clang/dist/test/CodeGen/x86_32-arguments-darwin.c
  vendor/clang/dist/test/CodeGen/x86_32-arguments-linux.c
  vendor/clang/dist/test/CodeGen/x86_64-arguments.c
  vendor/clang/dist/test/CodeGenCXX/anonymous-union-member-initializer.cpp
  vendor/clang/dist/test/CodeGenCXX/attr-used.cpp
  vendor/clang/dist/test/CodeGenCXX/block-byref-cxx-objc.cpp
  vendor/clang/dist/test/CodeGenCXX/blocks.cpp
  vendor/clang/dist/test/CodeGenCXX/class-layout.cpp
  vendor/clang/dist/test/CodeGenCXX/const-init.cpp
  vendor/clang/dist/test/CodeGenCXX/constructor-init.cpp
  vendor/clang/dist/test/CodeGenCXX/constructors.cpp
  vendor/clang/dist/test/CodeGenCXX/copy-constructor-elim-2.cpp
  vendor/clang/dist/test/CodeGenCXX/copy-constructor-synthesis-2.cpp
  vendor/clang/dist/test/CodeGenCXX/copy-initialization.cpp
  vendor/clang/dist/test/CodeGenCXX/cxx0x-defaulted-templates.cpp
  vendor/clang/dist/test/CodeGenCXX/cxx0x-delegating-ctors.cpp
  vendor/clang/dist/test/CodeGenCXX/default-constructor-default-argument.cpp
  vendor/clang/dist/test/CodeGenCXX/default-constructor-template-member.cpp
  vendor/clang/dist/test/CodeGenCXX/delete.cpp
  vendor/clang/dist/test/CodeGenCXX/destructors.cpp
  vendor/clang/dist/test/CodeGenCXX/eh.cpp
  vendor/clang/dist/test/CodeGenCXX/elide-call-reference.cpp
  vendor/clang/dist/test/CodeGenCXX/for-range.cpp
  vendor/clang/dist/test/CodeGenCXX/global-init.cpp
  vendor/clang/dist/test/CodeGenCXX/implicit-copy-constructor.cpp
  vendor/clang/dist/test/CodeGenCXX/init-incomplete-type.cpp
  vendor/clang/dist/test/CodeGenCXX/mangle-subst-std.cpp
  vendor/clang/dist/test/CodeGenCXX/mangle-template.cpp
  vendor/clang/dist/test/CodeGenCXX/mangle.cpp
  vendor/clang/dist/test/CodeGenCXX/member-function-pointers.cpp
  vendor/clang/dist/test/CodeGenCXX/member-init-assignment.cpp
  vendor/clang/dist/test/CodeGenCXX/member-init-ctor.cpp
  vendor/clang/dist/test/CodeGenCXX/new.cpp
  vendor/clang/dist/test/CodeGenCXX/nrvo.cpp
  vendor/clang/dist/test/CodeGenCXX/pointers-to-data-members.cpp
  vendor/clang/dist/test/CodeGenCXX/pr9965.cpp
  vendor/clang/dist/test/CodeGenCXX/references.cpp
  vendor/clang/dist/test/CodeGenCXX/static-init-3.cpp
  vendor/clang/dist/test/CodeGenCXX/static-init.cpp
  vendor/clang/dist/test/CodeGenCXX/stmtexpr.cpp
  vendor/clang/dist/test/CodeGenCXX/template-anonymous-types.cpp
  vendor/clang/dist/test/CodeGenCXX/temporaries.cpp
  vendor/clang/dist/test/CodeGenCXX/value-init.cpp
  vendor/clang/dist/test/CodeGenCXX/variadic-templates.cpp
  vendor/clang/dist/test/CodeGenCXX/virt-call-offsets.cpp
  vendor/clang/dist/test/CodeGenCXX/virtual-base-destructor-call.cpp
  vendor/clang/dist/test/CodeGenCXX/virtual-bases.cpp
  vendor/clang/dist/test/CodeGenCXX/virtual-functions-incomplete-types.cpp
  vendor/clang/dist/test/CodeGenCXX/virtual-pseudo-destructor-call.cpp
  vendor/clang/dist/test/CodeGenCXX/visibility-inlines-hidden.cpp
  vendor/clang/dist/test/CodeGenCXX/visibility.cpp
  vendor/clang/dist/test/CodeGenCXX/volatile-1.cpp
  vendor/clang/dist/test/CodeGenCXX/vtable-pointer-initialization.cpp
  vendor/clang/dist/test/CodeGenCXX/x86_32-arguments.cpp
  vendor/clang/dist/test/CodeGenCXX/x86_64-arguments.cpp
  vendor/clang/dist/test/CodeGenObjC/block-6.m
  vendor/clang/dist/test/CodeGenObjC/blocks.m
  vendor/clang/dist/test/CodeGenObjC/encode-test.m
  vendor/clang/dist/test/CodeGenObjC/exceptions-nonfragile.m
  vendor/clang/dist/test/CodeGenObjC/property-list-in-class.m
  vendor/clang/dist/test/CodeGenObjC/variadic-sends.m
  vendor/clang/dist/test/CodeGenObjCXX/encode.mm
  vendor/clang/dist/test/CodeGenObjCXX/property-object-conditional-exp.mm
  vendor/clang/dist/test/CodeGenObjCXX/property-objects.mm
  vendor/clang/dist/test/CodeGenOpenCL/2011-04-15-vec-init-from-vec.cl
  vendor/clang/dist/test/Driver/darwin-ld.c
  vendor/clang/dist/test/Driver/darwin-objc-options.m
  vendor/clang/dist/test/Driver/darwin-xarch.c
  vendor/clang/dist/test/Driver/rewrite-objc.m
  vendor/clang/dist/test/Driver/sysroot.c
  vendor/clang/dist/test/Driver/x86_features.c
  vendor/clang/dist/test/FixIt/fixit-objc.m
  vendor/clang/dist/test/FixIt/fixit.c
  vendor/clang/dist/test/FixIt/typo.cpp
  vendor/clang/dist/test/Frontend/dependency-gen.c
  vendor/clang/dist/test/Index/annotate-tokens-pp.c
  vendor/clang/dist/test/Index/annotate-tokens.cpp
  vendor/clang/dist/test/Index/annotate-tokens.m
  vendor/clang/dist/test/Index/c-index-api-loadTU-test.m
  vendor/clang/dist/test/Index/c-index-getCursor-pp.c
  vendor/clang/dist/test/Index/c-index-getCursor-test.m
  vendor/clang/dist/test/Index/code-completion.cpp
  vendor/clang/dist/test/Index/complete-exprs.m
  vendor/clang/dist/test/Index/complete-natural.m
  vendor/clang/dist/test/Index/complete-property-flags.m
  vendor/clang/dist/test/Index/get-cursor.cpp
  vendor/clang/dist/test/Index/nested-macro-instantiations.cpp
  vendor/clang/dist/test/Makefile
  vendor/clang/dist/test/Misc/caret-diags-macros.c
  vendor/clang/dist/test/Misc/diag-aka-types.cpp
  vendor/clang/dist/test/Misc/include-stack-for-note-flag.cpp
  vendor/clang/dist/test/Misc/macro-backtrace-limit.c
  vendor/clang/dist/test/PCH/variables.c
  vendor/clang/dist/test/PCH/variables.h
  vendor/clang/dist/test/Parser/MicrosoftExtensions.c
  vendor/clang/dist/test/Parser/recovery.c
  vendor/clang/dist/test/Parser/switch-recovery.cpp
  vendor/clang/dist/test/Preprocessor/include-directive2.c
  vendor/clang/dist/test/Preprocessor/init.c
  vendor/clang/dist/test/Preprocessor/macro_paste_bad.c
  vendor/clang/dist/test/Preprocessor/macro_paste_hashhash.c
  vendor/clang/dist/test/Preprocessor/macro_paste_simple.c
  vendor/clang/dist/test/Preprocessor/warn-macro-unused.c
  vendor/clang/dist/test/Sema/arm-neon-types.c
  vendor/clang/dist/test/Sema/asm.c
  vendor/clang/dist/test/Sema/attr-deprecated.c
  vendor/clang/dist/test/Sema/attr-naked.c
  vendor/clang/dist/test/Sema/attr-unavailable-message.c
  vendor/clang/dist/test/Sema/attr-weak.c
  vendor/clang/dist/test/Sema/bitfield.c
  vendor/clang/dist/test/Sema/compare.c
  vendor/clang/dist/test/Sema/const-eval.c
  vendor/clang/dist/test/Sema/conversion-64-32.c
  vendor/clang/dist/test/Sema/conversion.c
  vendor/clang/dist/test/Sema/ext_vector_casts.c
  vendor/clang/dist/test/Sema/extern-redecl.c
  vendor/clang/dist/test/Sema/format-strings.c
  vendor/clang/dist/test/Sema/i-c-e.c
  vendor/clang/dist/test/Sema/incomplete-decl.c
  vendor/clang/dist/test/Sema/inline.c
  vendor/clang/dist/test/Sema/parentheses.c
  vendor/clang/dist/test/Sema/parentheses.cpp
  vendor/clang/dist/test/Sema/pointer-addition.c
  vendor/clang/dist/test/Sema/pointer-subtract-compat.c
  vendor/clang/dist/test/Sema/shift.c
  vendor/clang/dist/test/Sema/struct-decl.c
  vendor/clang/dist/test/Sema/typecheck-binop.c
  vendor/clang/dist/test/Sema/typedef-variable-type.c
  vendor/clang/dist/test/Sema/uninit-variables.c
  vendor/clang/dist/test/Sema/varargs.c
  vendor/clang/dist/test/Sema/vla.c
  vendor/clang/dist/test/Sema/x86-builtin-palignr.c
  vendor/clang/dist/test/SemaCXX/PR9459.cpp
  vendor/clang/dist/test/SemaCXX/alignof-sizeof-reference.cpp
  vendor/clang/dist/test/SemaCXX/attr-unavailable.cpp
  vendor/clang/dist/test/SemaCXX/c99-variable-length-array.cpp
  vendor/clang/dist/test/SemaCXX/condition.cpp
  vendor/clang/dist/test/SemaCXX/conversion-function.cpp
  vendor/clang/dist/test/SemaCXX/copy-assignment.cpp
  vendor/clang/dist/test/SemaCXX/crashes.cpp
  vendor/clang/dist/test/SemaCXX/decltype.cpp
  vendor/clang/dist/test/SemaCXX/enum-scoped.cpp
  vendor/clang/dist/test/SemaCXX/expressions.cpp
  vendor/clang/dist/test/SemaCXX/generalized-initializers.cpp
  vendor/clang/dist/test/SemaCXX/i-c-e-cxx.cpp
  vendor/clang/dist/test/SemaCXX/member-init.cpp
  vendor/clang/dist/test/SemaCXX/member-pointer.cpp
  vendor/clang/dist/test/SemaCXX/nested-name-spec.cpp
  vendor/clang/dist/test/SemaCXX/new-delete.cpp
  vendor/clang/dist/test/SemaCXX/overloaded-name.cpp
  vendor/clang/dist/test/SemaCXX/return.cpp
  vendor/clang/dist/test/SemaCXX/vararg-non-pod.cpp
  vendor/clang/dist/test/SemaCXX/vector.cpp
  vendor/clang/dist/test/SemaCXX/virtuals.cpp
  vendor/clang/dist/test/SemaCXX/warn-bad-memaccess.cpp
  vendor/clang/dist/test/SemaCXX/warn-pure-virtual-call-from-ctor-dtor.cpp
  vendor/clang/dist/test/SemaCXX/warn-unused-variables.cpp
  vendor/clang/dist/test/SemaObjC/class-proto-1.m
  vendor/clang/dist/test/SemaObjC/class-unavail-warning.m
  vendor/clang/dist/test/SemaObjC/error-property-gc-attr.m
  vendor/clang/dist/test/SemaObjC/forward-class-1.m
  vendor/clang/dist/test/SemaObjC/ivar-ref-misuse.m
  vendor/clang/dist/test/SemaObjC/method-lookup-3.m
  vendor/clang/dist/test/SemaObjC/property-10.m
  vendor/clang/dist/test/SemaObjC/property-inherited.m
  vendor/clang/dist/test/SemaObjC/related-result-type-inference.m
  vendor/clang/dist/test/SemaObjC/selector-3.m
  vendor/clang/dist/test/SemaObjC/self-declared-in-block.m
  vendor/clang/dist/test/SemaObjC/sizeof-interface.m
  vendor/clang/dist/test/SemaObjC/special-dep-unavail-warning.m
  vendor/clang/dist/test/SemaObjC/synthesized-ivar.m
  vendor/clang/dist/test/SemaObjC/typedef-class.m
  vendor/clang/dist/test/SemaObjC/undef-superclass-1.m
  vendor/clang/dist/test/SemaObjCXX/exceptions-fragile.mm
  vendor/clang/dist/test/SemaObjCXX/gc-attributes.mm
  vendor/clang/dist/test/SemaObjCXX/nullptr.mm
  vendor/clang/dist/test/SemaObjCXX/related-result-type-inference.mm
  vendor/clang/dist/test/SemaTemplate/class-template-decl.cpp
  vendor/clang/dist/test/SemaTemplate/deduction.cpp
  vendor/clang/dist/test/SemaTemplate/default-arguments.cpp
  vendor/clang/dist/test/SemaTemplate/dependent-names-no-std.cpp
  vendor/clang/dist/test/SemaTemplate/dependent-names.cpp
  vendor/clang/dist/test/SemaTemplate/ext-vector-type.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-call.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-function-2.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-member-class.cpp
  vendor/clang/dist/test/SemaTemplate/instantiate-try-catch.cpp
  vendor/clang/dist/test/Unit/lit.cfg
  vendor/clang/dist/tools/CMakeLists.txt
  vendor/clang/dist/tools/Makefile
  vendor/clang/dist/tools/c-index-test/Makefile
  vendor/clang/dist/tools/c-index-test/c-index-test.c
  vendor/clang/dist/tools/driver/CMakeLists.txt
  vendor/clang/dist/tools/driver/Makefile
  vendor/clang/dist/tools/driver/cc1_main.cpp
  vendor/clang/dist/tools/driver/cc1as_main.cpp
  vendor/clang/dist/tools/driver/driver.cpp
  vendor/clang/dist/tools/libclang/CIndex.cpp
  vendor/clang/dist/tools/libclang/CIndexCodeCompletion.cpp
  vendor/clang/dist/tools/libclang/CMakeLists.txt
  vendor/clang/dist/tools/libclang/CXCursor.cpp
  vendor/clang/dist/tools/libclang/CXCursor.h
  vendor/clang/dist/tools/libclang/CXType.cpp
  vendor/clang/dist/tools/libclang/Makefile
  vendor/clang/dist/tools/libclang/libclang.darwin.exports
  vendor/clang/dist/tools/libclang/libclang.exports
  vendor/clang/dist/tools/scan-build/ccc-analyzer
  vendor/clang/dist/unittests/Basic/FileManagerTest.cpp
  vendor/clang/dist/unittests/Frontend/Makefile
  vendor/clang/dist/www/compatibility.html

Modified: vendor/clang/dist/CMakeLists.txt
==============================================================================
--- vendor/clang/dist/CMakeLists.txt	Sun Jul 17 15:38:20 2011	(r224134)
+++ vendor/clang/dist/CMakeLists.txt	Sun Jul 17 15:40:56 2011	(r224135)
@@ -20,7 +20,11 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR
   endif()
 
   if( NOT EXISTS "${CLANG_PATH_TO_LLVM_BUILD}/bin/tblgen${CMAKE_EXECUTABLE_SUFFIX}" )
-    message(FATAL_ERROR "Please set CLANG_PATH_TO_LLVM_BUILD to a directory containing a LLVM build.")
+    # Looking for bin/Debug/tblgen is a complete hack. How can we get
+    # around this?
+    if( NOT EXISTS "${CLANG_PATH_TO_LLVM_BUILD}/bin/Debug/tblgen${CMAKE_EXECUTABLE_SUFFIX}" )
+      message(FATAL_ERROR "Please set CLANG_PATH_TO_LLVM_BUILD to a directory containing a LLVM build.")
+    endif()
   endif()
 
   list(APPEND CMAKE_MODULE_PATH "${CLANG_PATH_TO_LLVM_BUILD}/share/llvm/cmake")
@@ -42,7 +46,12 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR
   include_directories("${PATH_TO_LLVM_BUILD}/include" "${LLVM_MAIN_INCLUDE_DIR}")
   link_directories("${PATH_TO_LLVM_BUILD}/lib")
 
-  set(LLVM_TABLEGEN_EXE "${PATH_TO_LLVM_BUILD}/bin/tblgen")
+  if( EXISTS "${CLANG_PATH_TO_LLVM_BUILD}/bin/tblgen${CMAKE_EXECUTABLE_SUFFIX}" )
+    set(LLVM_TABLEGEN_EXE "${PATH_TO_LLVM_BUILD}/bin/tblgen")
+  else()
+    # FIXME: This is an utter hack.
+    set(LLVM_TABLEGEN_EXE "${PATH_TO_LLVM_BUILD}/bin/Debug/tblgen")
+  endif()
 
   set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
   set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )

Added: vendor/clang/dist/INPUTS/cfg-big-switch.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/clang/dist/INPUTS/cfg-big-switch.c	Sun Jul 17 15:40:56 2011	(r224135)
@@ -0,0 +1,27 @@
+#define EXPAND_2_CASES(i, x, y)    CASE(i, x, y);             CASE(i + 1, x, y);
+#define EXPAND_4_CASES(i, x, y)    EXPAND_2_CASES(i, x, y)    EXPAND_2_CASES(i + 2, x, y)
+#define EXPAND_8_CASES(i, x, y)    EXPAND_4_CASES(i, x, y)    EXPAND_4_CASES(i + 4, x, y)
+#define EXPAND_16_CASES(i, x, y)   EXPAND_8_CASES(i, x, y)    EXPAND_8_CASES(i + 8, x, y)
+#define EXPAND_32_CASES(i, x, y)   EXPAND_16_CASES(i, x, y)   EXPAND_16_CASES(i + 16, x, y)
+#define EXPAND_64_CASES(i, x, y)   EXPAND_32_CASES(i, x, y)   EXPAND_32_CASES(i + 32, x, y)
+#define EXPAND_128_CASES(i, x, y)  EXPAND_64_CASES(i, x, y)   EXPAND_64_CASES(i + 64, x, y)
+#define EXPAND_256_CASES(i, x, y)  EXPAND_128_CASES(i, x, y)  EXPAND_128_CASES(i + 128, x, y)
+#define EXPAND_512_CASES(i, x, y)  EXPAND_256_CASES(i, x, y)  EXPAND_256_CASES(i + 256, x, y)
+#define EXPAND_1024_CASES(i, x, y) EXPAND_512_CASES(i, x, y)  EXPAND_512_CASES(i + 512, x, y)
+#define EXPAND_2048_CASES(i, x, y) EXPAND_1024_CASES(i, x, y) EXPAND_1024_CASES(i + 1024, x, y)
+#define EXPAND_4096_CASES(i, x, y) EXPAND_2048_CASES(i, x, y) EXPAND_2048_CASES(i + 2048, x, y)
+
+// This has a *monstrous* single fan-out in the CFG, across 8000 blocks inside
+// the while loop.
+unsigned cfg_big_switch(int x) {
+  unsigned y = 0;
+  while (x > 0) {
+    switch(x) {
+#define CASE(i, x, y) \
+      case i: { int case_var = 3*x + i; y += case_var - 1; break; }
+EXPAND_4096_CASES(0, x, y);
+    }
+    --x;
+  }
+  return y;
+}

Added: vendor/clang/dist/INPUTS/cfg-long-chain1.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/clang/dist/INPUTS/cfg-long-chain1.c	Sun Jul 17 15:40:56 2011	(r224135)
@@ -0,0 +1,20 @@
+#define EXPAND_2_BRANCHES(i, x, y)    BRANCH(i, x, y);              BRANCH(i + 1, x, y);
+#define EXPAND_4_BRANCHES(i, x, y)    EXPAND_2_BRANCHES(i, x, y)    EXPAND_2_BRANCHES(i + 2, x, y)
+#define EXPAND_8_BRANCHES(i, x, y)    EXPAND_4_BRANCHES(i, x, y)    EXPAND_4_BRANCHES(i + 4, x, y)
+#define EXPAND_16_BRANCHES(i, x, y)   EXPAND_8_BRANCHES(i, x, y)    EXPAND_8_BRANCHES(i + 8, x, y)
+#define EXPAND_32_BRANCHES(i, x, y)   EXPAND_16_BRANCHES(i, x, y)   EXPAND_16_BRANCHES(i + 16, x, y)
+#define EXPAND_64_BRANCHES(i, x, y)   EXPAND_32_BRANCHES(i, x, y)   EXPAND_32_BRANCHES(i + 32, x, y)
+#define EXPAND_128_BRANCHES(i, x, y)  EXPAND_64_BRANCHES(i, x, y)   EXPAND_64_BRANCHES(i + 64, x, y)
+#define EXPAND_256_BRANCHES(i, x, y)  EXPAND_128_BRANCHES(i, x, y)  EXPAND_128_BRANCHES(i + 128, x, y)
+#define EXPAND_512_BRANCHES(i, x, y)  EXPAND_256_BRANCHES(i, x, y)  EXPAND_256_BRANCHES(i + 256, x, y)
+#define EXPAND_1024_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i, x, y)  EXPAND_512_BRANCHES(i + 512, x, y)
+#define EXPAND_2048_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i + 1024, x, y)
+#define EXPAND_4096_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i + 2048, x, y)
+
+unsigned cfg_long_chain_single_exit(unsigned x) {
+  unsigned y = 0;
+#define BRANCH(i, x, y) if ((x % 13171) < i) { int var = x / 13171; y ^= var; }
+  EXPAND_4096_BRANCHES(1, x, y);
+#undef BRANCH
+  return y;
+}

Added: vendor/clang/dist/INPUTS/cfg-long-chain2.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/clang/dist/INPUTS/cfg-long-chain2.c	Sun Jul 17 15:40:56 2011	(r224135)
@@ -0,0 +1,20 @@
+#define EXPAND_2_BRANCHES(i, x, y)    BRANCH(i, x, y);              BRANCH(i + 1, x, y);
+#define EXPAND_4_BRANCHES(i, x, y)    EXPAND_2_BRANCHES(i, x, y)    EXPAND_2_BRANCHES(i + 2, x, y)
+#define EXPAND_8_BRANCHES(i, x, y)    EXPAND_4_BRANCHES(i, x, y)    EXPAND_4_BRANCHES(i + 4, x, y)
+#define EXPAND_16_BRANCHES(i, x, y)   EXPAND_8_BRANCHES(i, x, y)    EXPAND_8_BRANCHES(i + 8, x, y)
+#define EXPAND_32_BRANCHES(i, x, y)   EXPAND_16_BRANCHES(i, x, y)   EXPAND_16_BRANCHES(i + 16, x, y)
+#define EXPAND_64_BRANCHES(i, x, y)   EXPAND_32_BRANCHES(i, x, y)   EXPAND_32_BRANCHES(i + 32, x, y)
+#define EXPAND_128_BRANCHES(i, x, y)  EXPAND_64_BRANCHES(i, x, y)   EXPAND_64_BRANCHES(i + 64, x, y)
+#define EXPAND_256_BRANCHES(i, x, y)  EXPAND_128_BRANCHES(i, x, y)  EXPAND_128_BRANCHES(i + 128, x, y)
+#define EXPAND_512_BRANCHES(i, x, y)  EXPAND_256_BRANCHES(i, x, y)  EXPAND_256_BRANCHES(i + 256, x, y)
+#define EXPAND_1024_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i, x, y)  EXPAND_512_BRANCHES(i + 512, x, y)
+#define EXPAND_2048_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i + 1024, x, y)
+#define EXPAND_4096_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i + 2048, x, y)
+
+unsigned cfg_long_chain_multiple_exit(unsigned x) {
+  unsigned y = 0;
+#define BRANCH(i, x, y) if (((x % 13171) + ++y) < i) { int var = x / 13171 + y; return var; } 
+  EXPAND_4096_BRANCHES(1, x, y);
+#undef BRANCH
+  return 42;
+}

Added: vendor/clang/dist/INPUTS/cfg-long-chain3.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/clang/dist/INPUTS/cfg-long-chain3.c	Sun Jul 17 15:40:56 2011	(r224135)
@@ -0,0 +1,21 @@
+#define EXPAND_2_BRANCHES(i, x, y)    BRANCH(i, x, y);              BRANCH(i + 1, x, y);
+#define EXPAND_4_BRANCHES(i, x, y)    EXPAND_2_BRANCHES(i, x, y)    EXPAND_2_BRANCHES(i + 2, x, y)
+#define EXPAND_8_BRANCHES(i, x, y)    EXPAND_4_BRANCHES(i, x, y)    EXPAND_4_BRANCHES(i + 4, x, y)
+#define EXPAND_16_BRANCHES(i, x, y)   EXPAND_8_BRANCHES(i, x, y)    EXPAND_8_BRANCHES(i + 8, x, y)
+#define EXPAND_32_BRANCHES(i, x, y)   EXPAND_16_BRANCHES(i, x, y)   EXPAND_16_BRANCHES(i + 16, x, y)
+#define EXPAND_64_BRANCHES(i, x, y)   EXPAND_32_BRANCHES(i, x, y)   EXPAND_32_BRANCHES(i + 32, x, y)
+#define EXPAND_128_BRANCHES(i, x, y)  EXPAND_64_BRANCHES(i, x, y)   EXPAND_64_BRANCHES(i + 64, x, y)
+#define EXPAND_256_BRANCHES(i, x, y)  EXPAND_128_BRANCHES(i, x, y)  EXPAND_128_BRANCHES(i + 128, x, y)
+#define EXPAND_512_BRANCHES(i, x, y)  EXPAND_256_BRANCHES(i, x, y)  EXPAND_256_BRANCHES(i + 256, x, y)
+#define EXPAND_1024_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i, x, y)  EXPAND_512_BRANCHES(i + 512, x, y)
+#define EXPAND_2048_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i + 1024, x, y)
+#define EXPAND_4096_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i + 2048, x, y)
+
+unsigned cfg_long_chain_many_preds(unsigned x) {
+  unsigned y = 0;
+#define BRANCH(i, x, y) if ((x % 13171) < i) { int var = x / 13171; y ^= var; } else
+  EXPAND_4096_BRANCHES(1, x, y);
+#undef BRANCH
+  int var = x / 13171; y^= var;
+  return y;
+}

Added: vendor/clang/dist/INPUTS/cfg-nested-switches.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/clang/dist/INPUTS/cfg-nested-switches.c	Sun Jul 17 15:40:56 2011	(r224135)
@@ -0,0 +1,36 @@
+#define EXPAND_2_INNER_CASES(i, x, y)    INNER_CASE(i, x, y);             INNER_CASE(i + 1, x, y);
+#define EXPAND_4_INNER_CASES(i, x, y)    EXPAND_2_INNER_CASES(i, x, y)    EXPAND_2_INNER_CASES(i + 2, x, y)
+#define EXPAND_8_INNER_CASES(i, x, y)    EXPAND_4_INNER_CASES(i, x, y)    EXPAND_4_INNER_CASES(i + 4, x, y)
+#define EXPAND_16_INNER_CASES(i, x, y)   EXPAND_8_INNER_CASES(i, x, y)    EXPAND_8_INNER_CASES(i + 8, x, y)
+#define EXPAND_32_INNER_CASES(i, x, y)   EXPAND_16_INNER_CASES(i, x, y)   EXPAND_16_INNER_CASES(i + 16, x, y)
+#define EXPAND_64_INNER_CASES(i, x, y)   EXPAND_32_INNER_CASES(i, x, y)   EXPAND_32_INNER_CASES(i + 32, x, y)
+
+#define EXPAND_2_OUTER_CASES(i, x, y)    OUTER_CASE(i, x, y);             OUTER_CASE(i + 1, x, y);
+#define EXPAND_4_OUTER_CASES(i, x, y)    EXPAND_2_OUTER_CASES(i, x, y)    EXPAND_2_OUTER_CASES(i + 2, x, y)
+#define EXPAND_8_OUTER_CASES(i, x, y)    EXPAND_4_OUTER_CASES(i, x, y)    EXPAND_4_OUTER_CASES(i + 4, x, y)
+#define EXPAND_16_OUTER_CASES(i, x, y)   EXPAND_8_OUTER_CASES(i, x, y)    EXPAND_8_OUTER_CASES(i + 8, x, y)
+#define EXPAND_32_OUTER_CASES(i, x, y)   EXPAND_16_OUTER_CASES(i, x, y)   EXPAND_16_OUTER_CASES(i + 16, x, y)
+#define EXPAND_64_OUTER_CASES(i, x, y)   EXPAND_32_OUTER_CASES(i, x, y)   EXPAND_32_OUTER_CASES(i + 32, x, y)
+
+// Rather than a single monstrous fan-out, this fans out in smaller increments,
+// but to a similar size.
+unsigned cfg_nested_switch(int x) {
+  unsigned y = 0;
+  while (x > 0) {
+    switch (x) {
+#define INNER_CASE(i, x, y) \
+          case i: { int case_var = 3*x + i; y += case_var - 1; break; }
+#define OUTER_CASE(i, x, y) \
+      case i: { \
+        int case_var = y >> 8; \
+        switch (case_var) { \
+          EXPAND_64_INNER_CASES(0, x, y); \
+        } \
+        break; \
+      }
+EXPAND_64_OUTER_CASES(0, x, y);
+    }
+    --x;
+  }
+  return y;
+}

Modified: vendor/clang/dist/LICENSE.TXT
==============================================================================
--- vendor/clang/dist/LICENSE.TXT	Sun Jul 17 15:38:20 2011	(r224134)
+++ vendor/clang/dist/LICENSE.TXT	Sun Jul 17 15:40:56 2011	(r224135)
@@ -4,7 +4,7 @@ LLVM Release License
 University of Illinois/NCSA
 Open Source License
 
-Copyright (c) 2007-2010 University of Illinois at Urbana-Champaign.
+Copyright (c) 2007-2011 University of Illinois at Urbana-Champaign.
 All rights reserved.
 
 Developed by:

Modified: vendor/clang/dist/bindings/python/clang/cindex.py
==============================================================================
--- vendor/clang/dist/bindings/python/clang/cindex.py	Sun Jul 17 15:38:20 2011	(r224134)
+++ vendor/clang/dist/bindings/python/clang/cindex.py	Sun Jul 17 15:40:56 2011	(r224135)
@@ -321,6 +321,10 @@ class CursorKind(object):
         """Test if this is a statement kind."""
         return CursorKind_is_stmt(self)
 
+    def is_attribute(self):
+        """Test if this is an attribute kind."""
+        return CursorKind_is_attribute(self)
+
     def is_invalid(self):
         """Test if this is an invalid kind."""
         return CursorKind_is_inv(self)
@@ -978,8 +982,9 @@ class TranslationUnit(ClangObject):
         headers.
         """
         def visitor(fobj, lptr, depth, includes):
-            loc = lptr.contents
-            includes.append(FileInclusion(loc.file, File(fobj), loc, depth))
+            if depth > 0:
+                loc = lptr.contents
+                includes.append(FileInclusion(loc.file, File(fobj), loc, depth))
 
         # Automatically adapt CIndex/ctype pointers to python objects
         includes = []
@@ -1074,7 +1079,7 @@ class File(ClangObject):
     @property
     def name(self):
         """Return the complete file and path name of the file."""
-        return File_name(self)
+        return _CXString_getCString(File_name(self))
 
     @property
     def time(self):
@@ -1147,6 +1152,10 @@ CursorKind_is_stmt = lib.clang_isStateme
 CursorKind_is_stmt.argtypes = [CursorKind]
 CursorKind_is_stmt.restype = bool
 
+CursorKind_is_attribute = lib.clang_isAttribute
+CursorKind_is_attribute.argtypes = [CursorKind]
+CursorKind_is_attribute.restype = bool
+
 CursorKind_is_inv = lib.clang_isInvalid
 CursorKind_is_inv.argtypes = [CursorKind]
 CursorKind_is_inv.restype = bool
@@ -1183,6 +1192,11 @@ Cursor_spelling.argtypes = [Cursor]
 Cursor_spelling.restype = _CXString
 Cursor_spelling.errcheck = _CXString.from_result
 
+Cursor_displayname = lib.clang_getCursorDisplayName
+Cursor_displayname.argtypes = [Cursor]
+Cursor_displayname.restype = _CXString
+Cursor_displayname.errcheck = _CXString.from_result
+
 Cursor_loc = lib.clang_getCursorLocation
 Cursor_loc.argtypes = [Cursor]
 Cursor_loc.restype = SourceLocation
@@ -1253,7 +1267,7 @@ TranslationUnit_includes.argtypes = [Tra
 # File Functions
 File_name = lib.clang_getFileName
 File_name.argtypes = [File]
-File_name.restype = c_char_p
+File_name.restype = _CXString
 
 File_time = lib.clang_getFileTime
 File_time.argtypes = [File]

Modified: vendor/clang/dist/bindings/python/tests/cindex/test_cursor_kind.py
==============================================================================
--- vendor/clang/dist/bindings/python/tests/cindex/test_cursor_kind.py	Sun Jul 17 15:38:20 2011	(r224134)
+++ vendor/clang/dist/bindings/python/tests/cindex/test_cursor_kind.py	Sun Jul 17 15:40:56 2011	(r224135)
@@ -18,10 +18,14 @@ def test_kind_groups():
 
     for k in CursorKind.get_all_kinds():
         group = [n for n in ('is_declaration', 'is_reference', 'is_expression',
-                             'is_statement', 'is_invalid')
+                             'is_statement', 'is_invalid', 'is_attribute')
                  if getattr(k, n)()]
 
-        if k == CursorKind.TRANSLATION_UNIT:
+        if k in (   CursorKind.TRANSLATION_UNIT,
+                    CursorKind.MACRO_DEFINITION,
+                    CursorKind.MACRO_INSTANTIATION,
+                    CursorKind.INCLUSION_DIRECTIVE,
+                    CursorKind.PREPROCESSING_DIRECTIVE):
             assert len(group) == 0
         else:
             assert len(group) == 1

Modified: vendor/clang/dist/bindings/python/tests/cindex/test_translation_unit.py
==============================================================================
--- vendor/clang/dist/bindings/python/tests/cindex/test_translation_unit.py	Sun Jul 17 15:38:20 2011	(r224134)
+++ vendor/clang/dist/bindings/python/tests/cindex/test_translation_unit.py	Sun Jul 17 15:40:56 2011	(r224135)
@@ -58,24 +58,27 @@ def test_unsaved_files_2():
     spellings = [c.spelling for c in tu.cursor.get_children()]
     assert spellings[-1] == 'x'
 
+def normpaths_equal(path1, path2):
+    """ Compares two paths for equality after normalizing them with
+        os.path.normpath
+    """
+    return os.path.normpath(path1) == os.path.normpath(path2)
 
 def test_includes():
     def eq(expected, actual):
         if not actual.is_input_file:
-            return expected[0] == actual.source.name and \
-                   expected[1] == actual.include.name
+            return  normpaths_equal(expected[0], actual.source.name) and \
+                    normpaths_equal(expected[1], actual.include.name)
         else:
-            return expected[1] == actual.include.name
+            return normpaths_equal(expected[1], actual.include.name)
 
     src = os.path.join(kInputsDir, 'include.cpp')
     h1 = os.path.join(kInputsDir, "header1.h")
     h2 = os.path.join(kInputsDir, "header2.h")
     h3 = os.path.join(kInputsDir, "header3.h")
-    inc = [(None, src), (src, h1), (h1, h3), (src, h2), (h2, h3)]
+    inc = [(src, h1), (h1, h3), (src, h2), (h2, h3)]
 
     index = Index.create()
     tu = index.parse(src)
     for i in zip(inc, tu.get_includes()):
         assert eq(i[0], i[1])
-
-

Modified: vendor/clang/dist/clang.xcodeproj/project.pbxproj
==============================================================================
--- vendor/clang/dist/clang.xcodeproj/project.pbxproj	Sun Jul 17 15:38:20 2011	(r224134)
+++ vendor/clang/dist/clang.xcodeproj/project.pbxproj	Sun Jul 17 15:40:56 2011	(r224135)
@@ -373,6 +373,12 @@
 		90FD6D90103C3D80005F5B73 /* TypeXML.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = TypeXML.def; path = clang/Frontend/TypeXML.def; sourceTree = "<group>"; };
 		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>"; };
+		BB20603B131EDDBF003C3343 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
+		BB20603C131EDDBF003C3343 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
+		BB206041131EDDDA003C3343 /* ARRMT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRMT.h; sourceTree = "<group>"; };
+		BB206043131EDE03003C3343 /* arrmt-test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "arrmt-test.cpp"; sourceTree = "<group>"; };
+		BB206044131EDE03003C3343 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
+		BB206045131EDE03003C3343 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
 		BB5C372812A5057500259F53 /* DumpXML.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DumpXML.cpp; path = /Volumes/Data/llvm/tools/clang/lib/AST/DumpXML.cpp; sourceTree = "<absolute>"; };
 		BBA5AB141309C2FA000B38F1 /* AdjustedReturnValueChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AdjustedReturnValueChecker.cpp; sourceTree = "<group>"; };
 		BBA5AB151309C2FA000B38F1 /* AnalyzerStatsChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnalyzerStatsChecker.cpp; sourceTree = "<group>"; };
@@ -561,7 +567,6 @@
 		BF9FEE321225E898003A8B71 /* ItaniumCXXABI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ItaniumCXXABI.cpp; path = lib/CodeGen/ItaniumCXXABI.cpp; sourceTree = "<group>"; };
 		BF9FEE341225E8B1003A8B71 /* MicrosoftCXXABI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MicrosoftCXXABI.cpp; path = lib/CodeGen/MicrosoftCXXABI.cpp; sourceTree = "<group>"; };
 		BF9FEE361225E8CF003A8B71 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README.txt; path = lib/CodeGen/README.txt; sourceTree = "<group>"; };
-		BF9FEE371225E925003A8B71 /* BoostConAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BoostConAction.cpp; path = lib/Frontend/BoostConAction.cpp; sourceTree = "<group>"; };
 		BF9FEE451225EA24003A8B71 /* DelayedDiagnostic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DelayedDiagnostic.h; path = clang/Sema/DelayedDiagnostic.h; sourceTree = "<group>"; };
 		BF9FEE511226FE9F003A8B71 /* ParseAST.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ParseAST.cpp; path = lib/Parse/ParseAST.cpp; sourceTree = "<group>"; };
 		BF9FEE531226FEC1003A8B71 /* RAIIObjectsForParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAIIObjectsForParser.h; path = lib/Parse/RAIIObjectsForParser.h; sourceTree = "<group>"; };
@@ -777,6 +782,7 @@
 		08FB7795FE84155DC02AAC07 /* Libraries */ = {
 			isa = PBXGroup;
 			children = (
+				BB20603A131EDDBF003C3343 /* ARRMigrate */,
 				BBA5AB121309C2FA000B38F1 /* StaticAnalyzer */,
 				57EB5660121B034300ECA335 /* Serialization */,
 				BFE2F67911DA95590007EDC0 /* Rewrite */,
@@ -899,7 +905,6 @@
 		352246E00F5C6BC000D0D279 /* Frontend */ = {
 			isa = PBXGroup;
 			children = (
-				BF9FEE371225E925003A8B71 /* BoostConAction.cpp */,
 				1AFDD8701161085D00AE030A /* ASTMerge.cpp */,
 				9012911C1048068D0083456D /* ASTUnit.cpp */,
 				1A2A54A50FD1DD1C00F4CE45 /* ASTConsumers.cpp */,
@@ -1105,6 +1110,38 @@
 			name = "index-test";
 			sourceTree = "<group>";
 		};
+		BB20603A131EDDBF003C3343 /* ARRMigrate */ = {
+			isa = PBXGroup;
+			children = (
+				BB20603B131EDDBF003C3343 /* CMakeLists.txt */,
+				BB20603C131EDDBF003C3343 /* Makefile */,
+				BDDF60E91337BF40009F1764 /* Transforms.cpp */,
+			);
+			name = ARRMigrate;
+			path = lib/ARRMigrate;
+			sourceTree = "<group>";
+		};
+		BB206040131EDDDA003C3343 /* ARRMigrate */ = {
+			isa = PBXGroup;
+			children = (
+				BB206041131EDDDA003C3343 /* ARRMT.h */,
+			);
+			name = ARRMigrate;
+			path = clang/ARRMigrate;
+			sourceTree = "<group>";
+		};
+		BB206042131EDE03003C3343 /* arrmt-test */ = {
+			isa = PBXGroup;
+			children = (
+				BD8A47E7133D32660066FE40 /* ARRMT.cpp */,
+				BB206043131EDE03003C3343 /* arrmt-test.cpp */,
+				BB206044131EDE03003C3343 /* CMakeLists.txt */,
+				BB206045131EDE03003C3343 /* Makefile */,
+			);
+			name = "arrmt-test";
+			path = "tools/arrmt-test";
+			sourceTree = "<group>";
+		};
 		BBA5AB121309C2FA000B38F1 /* StaticAnalyzer */ = {
 			isa = PBXGroup;
 			children = (
@@ -1575,6 +1612,7 @@
 		DED7D72E0A524295003AD0FB /* include */ = {
 			isa = PBXGroup;
 			children = (
+				BB206040131EDDDA003C3343 /* ARRMigrate */,
 				DED7D7300A524295003AD0FB /* Basic */,
 				DED7D7390A524295003AD0FB /* Lex */,
 				DE1F21F20A7D84E800FBF588 /* Parse */,
@@ -1724,6 +1762,7 @@
 		DEDFE61F0F7B3AE10035BD10 /* Tools */ = {
 			isa = PBXGroup;
 			children = (
+				BB206042131EDE03003C3343 /* arrmt-test */,
 				90F9EFA8104ABDC400D09A15 /* c-index-test */,
 				9012911E104812DA0083456D /* CIndex */,
 				90FD6DB4103D9763005F5B73 /* index-test */,

Added: vendor/clang/dist/docs/AutomaticReferenceCounting.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/clang/dist/docs/AutomaticReferenceCounting.html	Sun Jul 17 15:40:56 2011	(r224135)
@@ -0,0 +1,1857 @@
+<html>
+<head>
+<title>Objective-C Automatic Reference Counting (ARC)</title>
+<link type="text/css" rel="stylesheet" href="../menu.css" />
+<link type="text/css" rel="stylesheet" href="../content.css" />
+<style type="text/css">
+/* Collapse the items in the ToC to the left. */
+div#toc ul {
+  padding-left: 0
+}
+
+/* Rationales appear in italic. */
+div.rationale {
+  font-style: italic
+}
+
+div.rationale em {
+  font-style: normal
+}
+
+div h1 { font-size: 2em; margin: .67em 0 }
+div div h1 { font-size: 1.5em; margin: .75em 0 }
+div div div h1 { font-size: 1.17em; margin: .83em 0 }
+div div div div h1 { margin: 1.12em 0 }
+
+span.term { font-style: italic; font-weight: bold  }
+</style>
+
+<script lang="javascript">
+/// A little script to recursively build a table of contents.
+function buildTOC(div, toc, ancestry) {
+  var children = div.childNodes;
+  var len = children.length;
+
+  var childNumber = 0;
+
+  var list = null;
+  for (var i = 0; i < len; ++i) {
+    var child = children[i];
+    if (child.nodeName != "DIV") continue;
+    if (child.getAttribute("class") == "rationale") continue;
+    if (child.id == "toc") continue;
+
+    // Okay, we're actually going to build a list node.
+    if (list === null) list = document.createElement("ul");
+
+    var childAncestry = ancestry + ++childNumber + ".";
+
+    var headerNode = child.childNodes[1];
+    var title = headerNode.innerHTML;
+    headerNode.insertBefore(document.createTextNode(childAncestry + " "),
+                            headerNode.firstChild);
+
+    var item = document.createElement("li");
+    item.appendChild(document.createTextNode(childAncestry + " "));
+
+    var anchor = document.createElement("a");
+    anchor.href = "#" + child.id;
+    anchor.innerHTML = title;
+    item.appendChild(anchor);
+
+    buildTOC(child, item, childAncestry);
+
+    list.appendChild(item);
+  }
+  if (list) toc.appendChild(list);
+}
+
+function onLoad() {
+  var toc = document.getElementById("toc");
+  var content = document.getElementById("content");
+  buildTOC(content, toc, "");
+}
+window.onload = onLoad;
+
+</script>
+</head>
+<body>
+
+<!--#include virtual="../menu.html.incl"-->
+
+<div id="content">
+<h1>Automatic Reference Counting</h1>
+
+<div id="toc">
+</div>
+
+<div id="meta">
+<h1>About this document</h1>
+
+<div id="meta.purpose">
+<h1>Purpose</h1>
+
+<p>The first and primary purpose of this document is to serve as a
+complete technical specification of Automatic Reference Counting.
+Given a core Objective-C compiler and runtime, it should be possible
+to write a compiler and runtime which implements these new
+semantics.</p>
+
+<p>The secondary purpose is to act as a rationale for why ARC was
+designed in this way.  This should remain tightly focused on the
+technical design and should not stray into marketing speculation.</p>
+
+</div> <!-- meta.purpose -->
+
+<div id="meta.background">
+<h1>Background</h1>
+
+<p>This document assumes a basic familiarity with C.</p>
+
+<p><span class="term">Blocks</span> are a C language extension for
+creating anonymous functions.  Users interact with and transfer block
+objects using <span class="term">block pointers</span>, which are
+represented like a normal pointer.  A block may capture values from
+local variables; when this occurs, memory must be dynamically
+allocated.  The initial allocation is done on the stack, but the
+runtime provides a <tt>Block_copy</tt> function which, given a block
+pointer, either copies the underlying block object to the heap,
+setting its reference count to 1 and returning the new block pointer,
+or (if the block object is already on the heap) increases its
+reference count by 1.  The paired function is <tt>Block_release</tt>,
+which decreases the reference count by 1 and destroys the object if
+the count reaches zero and is on the heap.</p>
+
+<p>Objective-C is a set of language extensions, significant enough to
+be considered a different language.  It is a strict superset of C.
+The extensions can also be imposed on C++, producing a language called
+Objective-C++.  The primary feature is a single-inheritance object
+system; we briefly describe the modern dialect.</p>
+
+<p>Objective-C defines a new type kind, collectively called
+the <span class="term">object pointer types</span>.  This kind has two
+notable builtin members, <tt>id</tt> and <tt>Class</tt>; <tt>id</tt>
+is the final supertype of all object pointers.  The validity of
+conversions between object pointer types is not checked at runtime.
+Users may define <span class="term">classes</span>; each class is a
+type, and the pointer to that type is an object pointer type.  A class
+may have a superclass; its pointer type is a subtype of its
+superclass's pointer type.  A class has a set
+of <span class="term">ivars</span>, fields which appear on all
+instances of that class.  For every class <i>T</i> there's an
+associated metaclass; it has no fields, its superclass is the
+metaclass of <i>T</i>'s superclass, and its metaclass is a global
+class.  Every class has a global object whose class is the
+class's metaclass; metaclasses have no associated type, so pointers to
+this object have type <tt>Class</tt>.</p>
+
+<p>A class declaration (<tt>@interface</tt>) declares a set
+of <span class="term">methods</span>.  A method has a return type, a
+list of argument types, and a <span class="term">selector</span>: a
+name like <tt>foo:bar:baz:</tt>, where the number of colons
+corresponds to the number of formal arguments.  A method may be an
+instance method, in which case it can be invoked on objects of the
+class, or a class method, in which case it can be invoked on objects
+of the metaclass.  A method may be invoked by providing an object
+(called the <span class="term">receiver</span>) and a list of formal
+arguments interspersed with the selector, like so:</p>
+
+<pre>[receiver foo: fooArg bar: barArg baz: bazArg]</pre>
+
+<p>This looks in the dynamic class of the receiver for a method with
+this name, then in that class's superclass, etc., until it finds
+something it can execute.  The receiver <q>expression</q> may also be
+the name of a class, in which case the actual receiver is the class
+object for that class, or (within method definitions) it may
+be <tt>super</tt>, in which case the lookup algorithm starts with the
+static superclass instead of the dynamic class.  The actual methods
+dynamically found in a class are not those declared in the
+<tt>@interface</tt>, but those defined in a separate
+<tt>@implementation</tt> declaration; however, when compiling a
+call, typechecking is done based on the methods declared in the
+<tt>@interface</tt>.</p>
+
+<p>Method declarations may also be grouped into
+<span class="term">protocols</span>, which are not inherently
+associated with any class, but which classes may claim to follow.
+Object pointer types may be qualified with additional protocols that
+the object is known to support.</p>
+
+<p><span class="term">Class extensions</span> are collections of ivars
+and methods, designed to allow a class's <tt>@interface</tt> to be
+split across multiple files; however, there is still a primary
+implementation file which must see the <tt>@interface</tt>s of all
+class extensions.
+<span class="term">Categories</span> allow methods (but not ivars) to
+be declared <i>post hoc</i> on an arbitrary class; the methods in the
+category's <tt>@implementation</tt> will be dynamically added to that
+class's method tables which the category is loaded at runtime,
+replacing those methods in case of a collision.</p>
+
+<p>In the standard environment, objects are allocated on the heap, and
+their lifetime is manually managed using a reference count.  This is
+done using two instance methods which all classes are expected to
+implement: <tt>retain</tt> increases the object's reference count by
+1, whereas <tt>release</tt> decreases it by 1 and calls the instance
+method <tt>dealloc</tt> if the count reaches 0.  To simplify certain
+operations, there is also an <span class="term">autorelease
+pool</span>, a thread-local list of objects to call <tt>release</tt>
+on later; an object can be added to this pool by
+calling <tt>autorelease</tt> on it.</p>
+
+<p>Block pointers may be converted to type <tt>id</tt>; block objects
+are laid out in a way that makes them compatible with Objective-C
+objects.  There is a builtin class that all block objects are
+considered to be objects of; this class implements <tt>retain</tt> by
+adjusting the reference count, not by calling <tt>Block_copy</tt>.</p>
+
+</div> <!-- meta.background -->
+
+</div> <!-- meta -->
+
+<div id="general">
+<h1>General</h1>
+
+<p>Automatic Reference Counting implements automatic memory management
+for Objective-C objects and blocks, freeing the programmer from the
+need explicitly insert retains and releases.  It does not provide a
+cycle collector; users must explicitly manage lifetime instead.</p>
+
+<p>ARC may be explicitly enabled with the compiler
+flag <tt>-fobjc-arc</tt>.  It may also be explicitly disabled with the
+compiler flag <tt>-fno-objc-arc</tt>.  The last of these two flags
+appearing on the compile line <q>wins</q>.</p>
+
+<p>If ARC is enabled, <tt>__has_feature(objc_arc)</tt> will expand to
+1 in the preprocessor.  For more information about <tt>__has_feature</tt>,
+see the <a href="LanguageExtensions.html#__has_feature_extension">language
+extensions</a> document.</p>
+
+</div>
+
+<div id="objects">
+<h1>Retainable object pointers</h1>
+
+<p>This section describes retainable object pointers, their basic
+operations, and the restrictions imposed on their use under ARC.  Note
+in particular that it covers the rules for pointer <em>values</em>
+(patterns of bits indicating the location of a pointed-to object), not
+pointer
+<em>objects</em> (locations in memory which store pointer values).
+The rules for objects are covered in the next section.</p>
+
+<p>A <span class="term">retainable object pointer</span>
+(or <q>retainable pointer</q>) is a value of
+a <span class="term">retainable object pointer type</span>
+(<q>retainable type</q>).  There are three kinds of retainable object
+pointer types:</p>
+<ul>
+<li>block pointers (formed by applying the caret (<tt>^</tt>)
+declarator sigil to a function type)</li>
+<li>Objective-C object pointers (<tt>id</tt>, <tt>Class</tt>, <tt>NSFoo*</tt>, etc.)</li>
+<li>typedefs marked with <tt>__attribute__((NSObject))</tt></li>
+</ul>
+
+<p>Other pointer types, such as <tt>int*</tt> and <tt>CFStringRef</tt>,
+are not subject to ARC's semantics and restrictions.</p>
+
+<div class="rationale">
+
+<p>Rationale: We are not at liberty to require
+all code to be recompiled with ARC; therefore, ARC must interoperate
+with Objective-C code which manages retains and releases manually.  In
+general, there are three requirements in order for a
+compiler-supported reference-count system to provide reliable
+interoperation:</p>
+
+<ul>
+<li>The type system must reliably identify which objects are to be
+managed.  An <tt>int*</tt> might be a pointer to a <tt>malloc</tt>'ed
+array, or it might be a interior pointer to such an array, or it might
+point to some field or local variable.  In contrast, values of the
+retainable object pointer types are never interior.</li>
+<li>The type system must reliably indicate how to
+manage objects of a type.  This usually means that the type must imply
+a procedure for incrementing and decrementing retain counts.
+Supporting single-ownership objects requires a lot more explicit
+mediation in the language.</li>
+<li>There must be reliable conventions for whether and
+when <q>ownership</q> is passed between caller and callee, for both
+arguments and return values.  Objective-C methods follow such a
+convention very reliably, at least for system libraries on Mac OS X,
+and functions always pass objects at +0.  The C-based APIs for Core
+Foundation objects, on the other hand, have much more varied transfer
+semantics.</li>
+</ul>
+</div> <!-- rationale -->
+
+<p>The use of <tt>__attribute__((NSObject))</tt> typedefs is not
+recommended.  If it's absolutely necessary to use this attribute, be
+very explicit about using the typedef, and do not assume that it will
+be preserved by language features like <tt>__typeof</tt> and C++
+template argument substitution.</p>
+
+<div class="rationale"><p>Rationale: any compiler operation which
+incidentally strips type <q>sugar</q> from a type will yield a type
+without the attribute, which may result in unexpected
+behavior.</p></div>
+
+<div id="objects.retains">
+<h1>Retain count semantics</h1>
+
+<p>A retainable object pointer is either a <span class="term">null
+pointer</span> or a pointer to a valid object.  Furthermore, if it has
+block pointer type and is not <tt>null</tt> then it must actually be a
+pointer to a block object, and if it has <tt>Class</tt> type (possibly
+protocol-qualified) then it must actually be a pointer to a class
+object.  Otherwise ARC does not enforce the Objective-C type system as
+long as the implementing methods follow the signature of the static
+type.  It is undefined behavior if ARC is exposed to an invalid
+pointer.</p>
+
+<p>For ARC's purposes, a valid object is one with <q>well-behaved</q>
+retaining operations.  Specifically, the object must be laid out such
+that the Objective-C message send machinery can successfully send it
+the following messages:</p>
+
+<ul>
+<li><tt>retain</tt>, taking no arguments and returning a pointer to
+the object.</li>
+<li><tt>release</tt>, taking no arguments and returning <tt>void</tt>.</li>
+<li><tt>autorelease</tt>, taking no arguments and returning a pointer
+to the object.</li>
+</ul>
+
+<p>The behavior of these methods is constrained in the following ways.
+The term <span class="term">high-level semantics</span> is an
+intentionally vague term; the intent is that programmers must
+implement these methods in a way such that the compiler, modifying
+code in ways it deems safe according to these constraints, will not
+violate their requirements.  For example, if the user puts logging
+statements in <tt>retain</tt>, they should not be surprised if those
+statements are executed more or less often depending on optimization
+settings.  These constraints are not exhaustive of the optimization
+opportunities: values held in local variables are subject to
+additional restrictions, described later in this document.</p>
+
+<p>It is undefined behavior if a computation history featuring a send
+of <tt>retain</tt> followed by a send of <tt>release</tt> to the same
+object, with no intervening <tt>release</tt> on that object, is not
+equivalent under the high-level semantics to a computation
+history in which these sends are removed.  Note that this implies that
+these methods may not raise exceptions.</p>
+
+<p>It is undefined behavior if a computation history features any use
+whatsoever of an object following the completion of a send
+of <tt>release</tt> that is not preceded by a send of <tt>retain</tt>
+to the same object.</p>
+
+<p>The behavior of <tt>autorelease</tt> must be equivalent to sending
+<tt>release</tt> when one of the autorelease pools currently in scope
+is popped.  It may not throw an exception.</p>
+
+<p>When the semantics call for performing one of these operations on a
+retainable object pointer, if that pointer is <tt>null</tt> then the
+effect is a no-op.</p>
+
+<p>All of the semantics described in this document are subject to
+additional <a href="#optimization">optimization rules</a> which permit
+the removal or optimization of operations based on local knowledge of
+data flow.  The semantics describe the high-level behaviors that the
+compiler implements, not an exact sequence of operations that a
+program will be compiled into.</p>
+
+</div> <!-- objects.retains -->
+
+<div id="objects.operands">
+<h1>Retainable object pointers as operands and arguments</h1>
+
+<p>In general, ARC does not perform retain or release operations when
+simply using a retainable object pointer as an operand within an
+expression.  This includes:</p>
+<ul>
+<li>loading a retainable pointer from an object with non-weak
+<a href="#ownership">ownership</a>,</li>
+<li>passing a retainable pointer as an argument to a function or
+method, and</li>
+<li>receiving a retainable pointer as the result of a function or
+method call.</li>
+</ul>
+
+<div class="rationale"><p>Rationale: while this might seem
+uncontroversial, it is actually unsafe when multiple expressions are
+evaluated in <q>parallel</q>, as with binary operators and calls,
+because (for example) one expression might load from an object while
+another writes to it.  However, C and C++ already call this undefined
+behavior because the evaluations are unsequenced, and ARC simply
+exploits that here to avoid needing to retain arguments across a large
+number of calls.</p></div>
+
+<p>The remainder of this section describes exceptions to these rules,
+how those exceptions are detected, and what those exceptions imply
+semantically.</p>
+
+<div id="objects.operands.consumed">
+<h1>Consumed parameters</h1>
+
+<p>A function or method parameter of retainable object pointer type
+may be marked as <span class="term">consumed</span>, signifying that
+the callee expects to take ownership of a +1 retain count.  This is
+done by adding the <tt>ns_consumed</tt> attribute to the parameter
+declaration, like so:</p>
+
+<pre>void foo(__attribute((ns_consumed)) id x);
+- (void) foo: (id) __attribute((ns_consumed)) x;</pre>
+
+<p>This attribute is part of the type of the function or method, not
+the type of the parameter.  It controls only how the argument is
+passed and received.</p>
+
+<p>When passing such an argument, ARC retains the argument prior to
+making the call.</p>
+
+<p>When receiving such an argument, ARC releases the argument at the
+end of the function, subject to the usual optimizations for local
+values.</p>
+
+<div class="rationale"><p>Rationale: this formalizes direct transfers
+of ownership from a caller to a callee.  The most common scenario here
+is passing the <tt>self</tt> parameter to <tt>init</tt>, but it is
+useful to generalize.  Typically, local optimization will remove any
+extra retains and releases: on the caller side the retain will be
+merged with a +1 source, and on the callee side the release will be
+rolled into the initialization of the parameter.</p></div>
+
+<p>The implicit <tt>self</tt> parameter of a method may be marked as
+consumed by adding <tt>__attribute__((ns_consumes_self))</tt> to the
+method declaration.  Methods in the <tt>init</tt>
+<a href="#family">family</a> are treated as if they were implicitly
+marked with this attribute.</p>
+
+<p>It is undefined behavior if an Objective-C message send to a method
+with <tt>ns_consumed</tt> parameters (other than self) is made with a
+null receiver.  It is undefined behavior if the method to which an
+Objective-C message send statically resolves to has a different set
+of <tt>ns_consumed</tt> parameters than the method it dynamically
+resolves to.  It is undefined behavior if a block or function call is
+made through a static type with a different set of <tt>ns_consumed</tt>
+parameters than the implementation of the called block or function.</p>
+
+<div class="rationale"><p>Rationale: consumed parameters with null
+receiver are a guaranteed leak.  Mismatches with consumed parameters
+will cause over-retains or over-releases, depending on the direction.
+The rule about function calls is really just an application of the
+existing C/C++ rule about calling functions through an incompatible
+function type, but it's useful to state it explicitly.</p></div>
+
+</div>
+
+<div id="objects.operands.retained_returns">
+<h1>Retained return values</h1>
+
+<p>A function or method which returns a retainable object pointer type
+may be marked as returning a retained value, signifying that the
+caller expects to take ownership of a +1 retain count.  This is done
+by adding the <tt>ns_returns_retained</tt> attribute to the function or
+method declaration, like so:</p>
+
+<pre>id foo(void) __attribute((ns_returns_retained));
+- (id) foo __attribute((ns_returns_retained));</pre>
+
+<p>This attribute is part of the type of the function or method.</p>
+
+<p>When returning from such a function or method, ARC retains the
+value at the point of evaluation of the return statement, before
+leaving all local scopes.</p>
+
+<p>When receiving a return result from such a function or method, ARC
+releases the value at the end of the full-expression it is contained
+within, subject to the usual optimizations for local values.</p>
+
+<div class="rationale"><p>Rationale: this formalizes direct transfers of
+ownership from a callee to a caller.  The most common scenario this
+models is the retained return from <tt>init</tt>, <tt>alloc</tt>,
+<tt>new</tt>, and <tt>copy</tt> methods, but there are other cases in
+the frameworks.  After optimization there are typically no extra
+retains and releases required.</p></div>
+
+<p>Methods in
+the <tt>alloc</tt>, <tt>copy</tt>, <tt>init</tt>, <tt>mutableCopy</tt>,
+and <tt>new</tt> <a href="#family">families</a> are implicitly marked
+<tt>__attribute__((ns_returns_retained))</tt>.  This may be suppressed
+by explicitly marking the
+method <tt>__attribute__((ns_returns_not_retained))</tt>.</p>
+</div>
+
+<p>It is undefined behavior if the method to which an Objective-C
+message send statically resolves has different retain semantics on its
+result from the method it dynamically resolves to.  It is undefined
+behavior if a block or function call is made through a static type
+with different retain semantics on its result from the implementation
+of the called block or function.</p>
+
+<div class="rationale"><p>Rationale: Mismatches with returned results
+will cause over-retains or over-releases, depending on the direction.
+Again, the rule about function calls is really just an application of
+the existing C/C++ rule about calling functions through an
+incompatible function type.</p></div>
+
+
+<div id="objects.operands.other-returns">
+<h1>Unretained return values</h1>
+
+<p>A method or function which returns a retainable object type but
+does not return a retained value must ensure that the object is
+still valid across the return boundary.</p>
+
+<p>When returning from such a function or method, ARC retains the
+value at the point of evaluation of the return statement, then leaves
+all local scopes, and then balances out the retain while ensuring that
+the value lives across the call boundary.  In the worst case, this may
+involve an <tt>autorelease</tt>, but callers must not assume that the
+value is actually in the autorelease pool.</p>
+
+<p>ARC performs no extra mandatory work on the caller side, although
+it may elect to do something to shorten the lifetime of the returned
+value.</p>
+
+<div class="rationale"><p>Rationale: it is common in non-ARC code to not
+return an autoreleased value; therefore the convention does not force
+either path.  It is convenient to not be required to do unnecessary
+retains and autoreleases; this permits optimizations such as eliding
+retain/autoreleases when it can be shown that the original pointer
+will still be valid at the point of return.</p></div>
+
+<p>A method or function may be marked
+with <tt>__attribute__((ns_returns_autoreleased))</tt> to indicate
+that it returns a pointer which is guaranteed to be valid at least as
+long as the innermost autorelease pool.  There are no additional
+semantics enforced in the definition of such a method; it merely
+enables optimizations in callers.</p>
+</div>
+
+<div id="objects.operands.casts">
+<h1>Bridged casts</h1>
+
+<p>A <span class="term">bridged cast</span> is a C-style cast
+annotated with one of three keywords:</p>
+
+<ul>
+<li><tt>(__bridge T) op</tt> casts the operand to the destination
+type <tt>T</tt>.  If <tt>T</tt> is a retainable object pointer type,
+then <tt>op</tt> must have a non-retainable pointer type.
+If <tt>T</tt> is a non-retainable pointer type, then <tt>op</tt> must
+have a retainable object pointer type.  Otherwise the cast is
+ill-formed.  There is no transfer of ownership, and ARC inserts
+no retain operations.</li>
+
+<li><tt>(__bridge_retained T) op</tt> casts the operand, which must
+have retainable object pointer type, to the destination type, which
+must be a non-retainable pointer type.  ARC retains the value, subject
+to the usual optimizations on local values, and the recipient is
+responsible for balancing that +1.</li>
+
+<li><tt>(__bridge_transfer T) op</tt> casts the operand, which must
+have non-retainable pointer type, to the destination type, which must
+be a retainable object pointer type.  ARC will release the value at
+the end of the enclosing full-expression, subject to the usual
+optimizations on local values.</li>
+</ul>
+
+<p>These casts are required in order to transfer objects in and out of
+ARC control; see the rationale in the section
+on <a href="#objects.restrictions.conversion">conversion of retainable
+object pointers</a>.</p>
+
+<p>Using a <tt>__bridge_retained</tt> or <tt>__bridge_transfer</tt>
+cast purely to convince ARC to emit an unbalanced retain or release,
+respectively, is poor form.</p>
+
+</div>
+
+</div>
+
+<div id="objects.restrictions">
+<h1>Restrictions</h1>
+
+<div id="objects.restrictions.conversion">
+<h1>Conversion of retainable object pointers</h1>
+
+<p>In general, a program which attempts to implicitly or explicitly
+convert a value of retainable object pointer type to any
+non-retainable type, or vice-versa, is ill-formed.  For example, an
+Objective-C object pointer shall not be converted to <tt>void*</tt>. 
+As an exception, cast to <tt>intptr_t</tt> is allowed becuase such 
+casts are not transferring ownership. The <a href="#objects.operands.casts">bridged
+casts</a> may be used to perform these conversions where
+necessary.</p>
+
+<div class="rationale"><p>Rationale: we cannot ensure the correct
+management of the lifetime of objects if they may be freely passed
+around as unmanaged types.  The bridged casts are provided so that the
+programmer may explicitly describe whether the cast transfers control
+into or out of ARC.</p></div>
+</div>
+
+<p>An unbridged cast to a retainable object pointer type of the return
+value of a Objective-C message send which yields a non-retainable
+pointer is treated as a <tt>__bridge_transfer</tt> cast
+if:</p>
+
+<ul>
+<li>the method has the <tt>cf_returns_retained</tt> attribute, or if
+not that,</li>

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201107171540.p6HFeuLs079350>